大量 (~ 100 GB から数 TB) の科学データを保存するための優れたデータベース ソリューションを探しています。より大量のデータを処理できることが理想的です。
要件
私のデータファイルは「画像」で、最大 400 万のエントリ配列 (1000x1000x3 ints + 1000x1000 float) と、画像ごとに最大 50 ~ 100 エントリの関連メタデータです。メタデータは階層的に格納されます。画像は、1 つまたは複数の「フォルダー」(または「プロジェクト」) に編成され、そのフォルダー自体に他のフォルダーを含めることができます。すべてに所有者などがいます。
主にそのメタデータに基づいて、1 つまたは複数のフォルダー内の 100 ~ 10,000 の画像を検索する必要があります。次に、画像からスライスを取得する必要があるかもしれません。データの一部しか必要ない場合は、すべてのデータをロードしたくありません。画像は圧縮形式で保存する必要があります。
編集:均一なデータがないことを強調することが重要です。たとえば、画像は、通常 10^5 から 10^6 のエントリを持つ不明な次元の float または int であり、画像ごとのメタデータの数は異なる場合があります。もちろん、複数の画像にわたるメタデータの検索は、同一のキーを持つものに限定されます。
現在のアプローチ
私の現在の、そしてそれほど優れていない解決策は、データベースを混在させることです。まず、SQL データベース (現在は Django + MySQL) を使用して「フォルダー」、所有者を処理し、各画像のレコードを持っていますが、そのデータはありません。メタデータのレコードも作成する場合があります。次に、PyTables を使用して画像とメタデータを hdf5 形式で保存し、データベースのように扱います。これにより、スライシングと圧縮の問題が解決され、メタデータを階層的に格納できるようになりますが、PyTables はスケーラブルではないようで、商用データベースよりもはるかに開発が進んでいません。(これはマルチユーザー環境用に作成されたものではありません: 私は独自のロックを作成しています! これは悪い兆候です。)
ヘルプ!
私は筋金入りのプログラマーではないので、標準的なデータベース ソリューションを強くお勧めします。私の「最適化」には、間違いなくメンテナンスとプログラミングのコストが含まれます。お気に入りのデータベース ソリューションまたはアーキテクチャを推奨できる人はいますか? リレーショナル vs 階層 vs その他に関するアイデアはありますか?
オプションは、SciDB (一般的ではありませんが、良いかもしれません)、SQL (これらのアプリケーションには悪いと聞きました。おそらく PostgreSQL?)、および HBase (実際、私はそれについて何も知りません) です。科学、特に天文学のコミュニティには良い解決策があるに違いないと思いますが、大規模なプロジェクトを構築して維持するには真面目なチームが必要なようです。
より多くの情報を提供できることを嬉しく思います。