私は、複数の物理学とシミュレーターを含むモンテカルロシミュレーションソフトウェアパッケージを開発しています。オンライン分析を行い、派生データの生データへの依存性を追跡し、「温度> 400および(x0、y0)付近の位置の波形を教えてください」などのクエリを実行する必要があります。したがって、メモリ内のデータモデルはかなり複雑です。
アプリケーションはPythonで記述されており、各シミュレーション結果はPythonオブジェクトとしてモデル化されています。1時間ごとに、最大100の結果(オブジェクト)が生成されます。ほとんどのオブジェクトには、重いデータ(数MBの2進数配列)といくつかの軽いデータ(温度、位置など)があります。合計データ生成レートは1時間あたり数GBです。
データ永続性ソリューションと使いやすいクエリAPIが必要です。重いデータ(数値配列)をHDF5ストレージに保存することをすでに決定しました。オブジェクトの永続性(軽いデータのみ)と、HDF5の重いデータのインデックス作成にMongoDBを使用することを検討しています。MongoDBでのオブジェクトの永続性は単純で、クエリインターフェイスは十分に強力に見えます。
私はsqlalchemy+sqliteオプションを知っています。ただし、大量のデータをHDF5にストリーミングすることは、SqlAlchemyで自然にサポートされているようには見えず、固定スキーマは面倒です。
私はこの投稿( HDF5データセットの検索)を知っていますが、「インデックステーブル」自体は高速クエリのためにいくつかのメモリ内インデックスを必要とします。
私が飛び込む前に私が見なければならない代替の解決策があるかどうか疑問に思いますか?それとも、計画で見落としていた問題はありますか?
TIA。