2012-07-13 16 views
6

Tôi muốn biết liệu hdf5 có phù hợp để ghi dữ liệu theo thời gian thực hay không?Có phải hdf5 phù hợp với các phép đo thời gian thực

Chính xác hơn: Tôi làm việc trên một dự án mà chúng tôi muốn liên tục (tỷ lệ lấy mẫu từ 30 đến 400Hz) trộn một lượng dữ liệu công bằng (vài giờ) với các tính chất khác nhau (từ xa, tín hiệu, video).

Dữ liệu phải được ghi trong thời gian thực (hoặc với một sự chậm trễ nhỏ) để giữ cho chúng tôi không bị mất chúng khi có thể xảy ra sự cố.

Nguyên mẫu đầu tiên của chúng tôi dựa trên sqlite3, tuy nhiên chúng tôi cảm thấy rằng một số hạn chế có thể tăng từ việc sử dụng lâu dài: tốc độ, một cơ sở dữ liệu == một tệp và khó khăn khi truy cập cơ sở dữ liệu từ một số chủ đề. cùng một lúc).

Vì vậy, tôi đang xem xét khả năng sử dụng hdf5 làm nền cuối để lưu trữ dữ liệu trên đĩa (và có thể xếp gọn/pytable cho biểu diễn bên trong). Bạn có nghĩ rằng có thể cập nhật tập tin hdf5 một cách thường xuyên từ các ràng buộc python như vậy?

Trả lời

1

Bảng gói HDF5 Phù hợp với các phép đo thời gian thực - tuy nhiên bạn nên sử dụng gói dữ liệu kích thước cố định cho tệp posix cũ và chuyển đổi sau. Điều này là bởi vì HDF5 không phải là rất mạnh mẽ vào lúc này và không cung cấp các đảm bảo khác nhau bằng cách sử dụng mã mức thấp IO mã có - cho biết mã cấp thấp thực sự là khá dễ dàng để làm việc với. Tại một số điểm, mặc dù dữ liệu mà bạn đang làm việc đủ phức tạp, nhưng HDF5 nên đi vào nhưng nhận thức liên quan đến tệp IO ở mức thấp, nó nặng và không thể đa luồng với tính xác định/hiệu suất hợp lý do việc sử dụng mutex toàn cầu của nó. Ngoài ra, nếu hệ thống bị treo ví dụ, tệp HDF5 kết quả là rác/không thể khôi phục - điều này sẽ được khắc phục một ngày nhưng yêu cầu tài trợ cho nhóm HDF tiến hành và hoàn thành trong thập kỷ tới.

Chính sách của riêng tôi là sử dụng tệp nhật ký gói bất cứ khi nào có thể. Sau đó ngay lập tức chuyển đổi kết quả thành HDF5 sau khi các tệp này được ghi lại để sử dụng lâu dài + nén + sử dụng bởi các công cụ/chương trình khác. Tôi thường tạo một file HDF5 để giải thích cấu trúc nhị phân tại thời điểm viết vì vậy tôi có thể đọc tập tin đó sau để hiểu những cấu trúc nào trong các tệp nhật ký gói và đưa nó ra một tệp HDF thực sau khi tải các gói trong bộ nhớ.

Với tất cả những gì đã nói và thực hiện, hãy xem the packet table api from boeing. Nó cũng có một black C++ ràng buộc trong thư viện hl C++ đi kèm với hdf5, mặc dù tôi đã phải vá nó để sử dụng của tôi.