Đây là một câu hỏi khó và tôi không chắc mình có thể đưa ra câu trả lời chính xác hay không nhưng tôi có kinh nghiệm với cả HDF5 / pyTables và một số cơ sở dữ liệu NoSQL.
Dưới đây là một số suy nghĩ.
- HDF5 mỗi lần không có khái niệm về chỉ mục. Nó chỉ là một định dạng lưu trữ phân cấp rất phù hợp cho dữ liệu số nhiều chiều. Có thể mở rộng phía trên HDF5 để triển khai chỉ mục (tức là PyTables, HDF5 FastQuery ) cho dữ liệu.
- HDF5 (trừ khi bạn đang sử dụng phiên bản MPI) không hỗ trợ truy cập ghi đồng thời (có thể truy cập đọc).
- HDF5 hỗ trợ các bộ lọc nén có thể - không giống như niềm tin phổ biến - giúp truy cập dữ liệu thực sự nhanh hơn (tuy nhiên bạn phải suy nghĩ về kích thước phân đoạn thích hợp, tùy thuộc vào cách bạn truy cập dữ liệu).
- HDF5 không phải là cơ sở dữ liệu. MongoDB có thuộc tính ACID, HDF5 thì không (có thể quan trọng).
- Có một gói ( SciHadoop ) kết hợp Hadoop và HDF5.
- HDF5 giúp việc tính toán cốt lõi tương đối dễ dàng (tức là nếu dữ liệu quá lớn để vừa với bộ nhớ).
- PyTables hỗ trợ một số tính toán nhanh "trong nhân" trực tiếp trong HDF5 bằng cách sử dụng numxpr
Tôi nghĩ dữ liệu của bạn nói chung là phù hợp để lưu trữ trong HDF5. Bạn cũng có thể thực hiện phân tích thống kê trong R
hoặc qua Numpy/Scipy
.
Nhưng bạn cũng có thể nghĩ về một loài aproach hybdrid. Lưu trữ dữ liệu hàng loạt thô trong HDF5 và sử dụng MongoDB cho siêu dữ liệu hoặc để lưu vào bộ nhớ đệm các giá trị cụ thể thường được sử dụng.