我正在建立一个数据采集系统。采集的数据通常包含15个信号,每个信号的采样频率为500 Hz。也就是说,大约每秒15 x 500 x 4字节(带符号浮点数)将到达并必须保留。

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

新版本将基于Linux,使用Python(或也许是Erlang),并且……是的!什么是合适的存储候选人?

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

要注意的是,我必须能够非常快速地检索样本。当请求时,必须使用采样计数器范围和请求的信号源,在不到一秒钟的时间内检索多达30秒的数据。当前(C#/DB4O)版本管理此OK,在不到100 ms的时间内检索数据。

我知道Python可能不是理想的性能,但是稍后我们将对此进行介绍。

系统(“服务器”)将连接多个采集客户端,因此体系结构必须很好地扩展。

编辑:经过进一步的研究,我可能会使用HDF5来获取示例数据,或者使用Couch或Mongo来获取更多类似文档的信息。我会及时向大家发布。

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

最佳答案

您可以看看HDF5的使用...它是为流数据而设计的,允许按时间索引搜索,并且(据我所知)在Python中得到了很好的支持。

09-30 23:37
查看更多