難しい質問です。明確な答えが得られるかどうかはわかりませんが、HDF5/pyTablesといくつかのNoSQLデータベースの両方の経験があります。
ここにいくつかの考えがあります。
- HDF5自体にはインデックスの概念がありません。これは、多次元数値データに適した階層ストレージ形式にすぎません。 HDF5の上に拡張して、インデックスを実装することができます(つまり、PyTables、 HDF5 FastQuery )データ用。
- HDF5(MPIバージョンを使用している場合を除く)は、同時書き込みアクセスをサポートしていません(読み取りアクセスが可能です)。
- HDF5は、一般的な信念とは異なり、データアクセスを実際に高速化できる圧縮フィルターをサポートしています(ただし、データへのアクセス方法に応じて適切なチャンクサイズを検討する必要があります)。
- HDF5はデータベースではありません。 MongoDBにはACIDプロパティがありますが、HDF5にはありません(重要な場合があります)。
- パッケージがあります( SciHadoop )HadoopとHDF5を組み合わせたものです。
- HDF5を使用すると、コア計算を比較的簡単に実行できます(つまり、データが大きすぎてメモリに収まらない場合)。
- PyTablesは、 numexpr を使用して、HDF5で直接高速の「カーネル内」計算をサポートします。
あなたのデータは一般的にHDF5に保存するのに適していると思います。 R
のいずれかで統計分析を行うこともできます またはNumpy/Scipy
経由 。
しかし、ハイブリッドアプローチについて考えることもできます。生のバルクデータをHDF5に保存し、メタデータまたは頻繁に使用される特定の値のキャッシュにMongoDBを使用します。