我正在开发一个涉及多个物理和模拟器的蒙特卡罗模拟软件包。我需要进行在线分析,跟踪派生数据对原始数据的依赖性,并执行诸如“给我温度> 400 和 (x0,y0) 附近位置的波形”之类的查询。所以内存中的数据模型相当复杂。
该应用程序是用 Python 编写的,每个模拟结果都被建模为一个 Python 对象。它每小时产生约 100 个结果(对象)。大多数对象都有大量数据(几 MB 的二进制数字数组),以及一些轻型数据(温度、位置等)。总数据生成速率为每小时几 GB。
我需要一些数据持久性解决方案和易于使用的查询 API。我已经决定将大量数据(数字数组)存储在 HDF5 存储中。我正在考虑使用 MongoDB 作为对象持久性(仅限轻数据),以及在 HDF5 中索引重数据。MongoDB 的对象持久性很简单,查询接口看起来足够强大。
我知道 sqlalchemy+sqlite 选项。但是,SqlAlchemy 似乎并不自然地支持将大量数据流式传输到 HDF5,并且固定模式很麻烦。
我知道这篇文章( 搜索 HDF5 数据集),但“索引表”本身需要一些内存索引以进行快速查询。
我想知道在我加入之前是否有任何替代解决方案?还是我在计划中忽略了任何问题?
TIA。