Tôi hiện đang sử dụng JSON (nén qua gzip) trong dự án Java của mình, trong đó tôi cần lưu trữ một số lượng lớn đối tượng (hàng trăm hàng triệu) trên đĩa. Tôi có một đối tượng JSON trên mỗi dòng và không cho phép các dấu ngắt dòng trong đối tượng JSON. Bằng cách này, tôi có thể truyền dữ liệu ra khỏi đĩa theo từng dòng mà không phải đọc toàn bộ tệp cùng một lúc.Tìm kiếm định dạng tuần tự nhanh, gọn, dễ đọc, đa ngôn ngữ, được nhập mạnh
Nó chỉ ra rằng phân tích cú pháp mã JSON (sử dụng http://www.json.org/java/) là một chi phí lớn hơn là kéo dữ liệu thô ra khỏi đĩa, hoặc giải nén nó (mà tôi làm trên bay). Lý tưởng nhất mà tôi muốn là định dạng tuần tự được đánh máy mạnh, nơi tôi có thể chỉ định "trường đối tượng này là danh sách chuỗi" (ví dụ) và vì hệ thống biết điều gì sẽ xảy ra, nó có thể deserialize nó Mau. Tôi cũng có thể chỉ định định dạng chỉ bằng cách cho người khác "loại" của nó.
Nó cũng cần phải là nền tảng chéo. Tôi sử dụng Java, nhưng làm việc với những người sử dụng PHP, Python và các ngôn ngữ khác.
Vì vậy, để tóm tắt, nó phải là:
- mạnh gõ
- streamable (tức là đọc một chút tập tin bằng chút mà không cần phải tải tất cả vào RAM cùng một lúc.)
- Cheo nền (bao gồm cả Java và PHP)
- nhanh
- miễn phí (như trong bài phát biểu)
Bất kỳ con trỏ nào?
Nếu kéo dữ liệu thô ra khỏi đĩa nhanh hơn, tại sao không làm điều đó? Tại sao lộn xộn với JSON nếu nó chậm hơn? –
Được rồi, vì vậy việc phân tích cú pháp json chậm hơn việc giải nén hoặc đọc dữ liệu khỏi đĩa. Vậy cái gì? Có quá chậm cho những gì bạn cần làm không? Hay bạn đang tối ưu hóa chỉ vì lợi ích của nó? – Breton
Breton: nó quá chậm so với những gì tôi cần làm, nó không phải là một tối ưu hóa sớm. – sanity