Ini adalah pertanyaan yang sulit dan saya tidak yakin apakah saya dapat memberikan jawaban yang pasti tetapi saya memiliki pengalaman dengan HDF5/pyTables dan beberapa database NoSQL.
Berikut adalah beberapa pemikiran.
- HDF5 sendiri tidak memiliki gagasan tentang indeks. Ini hanya format penyimpanan hierarkis yang cocok untuk data numerik multidimensi. Dimungkinkan untuk memperluas di atas HDF5 untuk mengimplementasikan indeks (yaitu PyTables, HDF5 FastQuery ) untuk datanya.
- HDF5 (kecuali Anda menggunakan versi MPI) tidak mendukung akses tulis bersamaan (akses baca dimungkinkan).
- HDF5 mendukung filter kompresi yang dapat - tidak seperti kepercayaan populer - membuat akses data sebenarnya lebih cepat (namun Anda harus memikirkan ukuran potongan yang tepat yang bergantung pada cara Anda mengakses data).
- HDF5 bukan basis data. MongoDB memiliki properti ACID, HDF5 tidak (mungkin penting).
- Ada sebuah paket (SciHadoop ) yang menggabungkan Hadoop dan HDF5.
- HDF5 membuatnya relatif mudah untuk melakukan komputasi inti (yaitu jika data terlalu besar untuk dimasukkan ke dalam memori).
- PyTables mendukung beberapa komputasi cepat "dalam kernel" langsung di HDF5 menggunakan numexpr
Saya pikir data Anda umumnya cocok untuk disimpan dalam HDF5. Anda juga dapat melakukan analisis statistik baik di R
atau melalui Numpy/Scipy
.
Tapi Anda juga bisa memikirkan pendekatan hibrida. Simpan data massal mentah di HDF5 dan gunakan MongoDB untuk meta-data atau untuk menyimpan nilai tertentu yang sering digunakan.