Python Linux下软实时数据采集的最佳存储候选设备是什么?

Python Linux下软实时数据采集的最佳存储候选设备是什么?,python,linux,storage,hdf5,data-acquisition,Python,Linux,Storage,Hdf5,Data Acquisition,我正在建立一个数据采集系统。采集的数据通常由15个信号组成,每个信号以(比如)500 Hz的频率采样。也就是说,每秒大约15 x 500 x 4字节(有符号浮点)将到达并必须保持 以前的版本是在.NET(C#)上构建的,使用DB4O db进行数据存储。这是相当有效率和表现良好 新版本将基于Linux,使用Python(或者Erlang)和。。。对什么是合适的存储候选者 我在考虑MongoDB,将每个样本(或者实际上是一堆样本)存储为BSON对象。每个样本(块)将有一个样本计数器作为键(索引)字段

我正在建立一个数据采集系统。采集的数据通常由15个信号组成,每个信号以(比如)500 Hz的频率采样。也就是说,每秒大约15 x 500 x 4字节(有符号浮点)将到达并必须保持

以前的版本是在.NET(C#)上构建的,使用DB4O db进行数据存储。这是相当有效率和表现良好

新版本将基于Linux,使用Python(或者Erlang)和。。。对什么是合适的存储候选者

我在考虑MongoDB,将每个样本(或者实际上是一堆样本)存储为BSON对象。每个样本(块)将有一个样本计数器作为键(索引)字段,以及一个信号源标识

问题是我必须能够很快地检索样本。当被请求时,必须使用采样计数器范围和请求的信号源,在不到一秒钟的时间内检索多达30秒的数据。当前的(C#/DB4O)版本管理这个OK,在不到100毫秒的时间内检索数据

我知道Python在性能方面可能不是理想的,但我们稍后将看到这一点

系统(“服务器”)将连接多个采集客户端,因此架构必须具有良好的可扩展性

编辑:进一步研究后,我可能会使用HDF5获取样本数据,而使用Coach或Mongo获取更多类似文档的信息。我会通知你的


编辑:最终解决方案基于HDF5和CouchDB。它运行得很好,用Python实现,在Raspberry Pi上运行。

在您的例子中,您只需创建15个文件,然后将每个示例按顺序保存到相应的文件中。这将确保请求的样本连续存储在磁盘上,从而减少读取时的磁盘搜索次数。

使用您描述的键,您应该能够在必要时通过分片进行缩放。120kB/30秒并没有那么多,所以我认为您不需要过早地进行切分


如果您将其与仅使用文件进行比较,您将获得更复杂的查询和内置复制,以实现高可用性、DS或脱机处理(Map Reduce等)。

您可以考虑使用。。。它专为流式数据设计,允许时间索引搜索,并且(据我所知)在Python中得到了很好的支持

您选择PostgreSQL的任何特定原因?Postgres是可扩展的,专为速度而设计。此外,你的数据似乎是足够固定的,所以MangGDB在这方面并没有给你太多的优势,而且它也失去了PG。如果你想使用Python,请考虑SQLAlchemy。谢谢!那真的很有帮助!现在就去看看。它似乎完全符合我的要求。我选择HDF5。非常感谢。