Tôi cần trợ giúp để đưa ra quyết định. Tôi có nhu cầu chuyển một số dữ liệu trong ứng dụng của mình và phải lựa chọn giữa 3 công nghệ này. Tôi đã đọc về tất cả các công nghệ một chút (hướng dẫn, tài liệu) nhưng vẫn không thể quyết định ...Bộ đệm giao thức của Google, HDF5, So sánh NumPy (truyền dữ liệu)
Chúng so sánh như thế nào?
tôi cần sự hỗ trợ của siêu dữ liệu (khả năng tiếp nhận hồ sơ và đọc nó mà không có bất kỳ thông tin/file bổ sung), nhanh chóng đọc/viết các hoạt động, khả năng lưu trữ dữ liệu động sẽ là một cộng (như đối tượng Python)
Things Tôi đã biết:
- NumPy là khá nhanh nhưng không thể lưu trữ dữ liệu động (như đối tượng Python). (Điều gì về siêu dữ liệu?)
- HDF5 là rất nhanh, hỗ trợ các thuộc tính tùy chỉnh, rất dễ sử dụng, nhưng không thể lưu trữ các đối tượng Python. Ngoài ra HDF5 cũng lưu trữ dữ liệu NumPy một cách tự nhiên, vì vậy, IMHO, NumPy không có lợi thế hơn HDF5
- Google Protocol Buffers hỗ trợ tự mô tả, khá nhanh (nhưng hỗ trợ Python kém ở thời điểm hiện tại, chậm và lỗi). CÓ THỂ lưu trữ dữ liệu động. Minuses - tự mô tả không hoạt động từ Python và tin nhắn> = 1 MB đang tuần tự hóa/deserializing không phải là rất nhanh (đọc "chậm").
PS: dữ liệu tôi cần phải chuyển là "kết quả của công việc" của NumPy/scipy (mảng, mảng của cấu trúc phức tạp, vv)
UPD: Truy cập chéo ngôn ngữ yêu cầu (C/C++/Python)
Nếu bạn đang cân nhắc sử dụng HDF5, hãy sử dụng PyTables. http://www.pytables.org/moin Về cơ bản, nó cho phép bạn xây dựng các lớp để dễ dàng và nhanh chóng lưu trữ, tạo lại và truy vấn siêu dữ liệu và mảng cố định tới HDF5. Vì nó chỉ lưu trữ mọi thứ vào HDF5, bạn sẽ có thể dễ dàng truy cập mọi thứ trong C/C++ thông qua các thư viện thông thường. –
Vâng, tôi biết về PyTables, thy rất dễ sử dụng và đa ngôn ngữ, nhưng chúng không cho phép tôi lưu trữ các đối tượng python ... –