我正在建立一个数据采集系统。采集的数据通常包含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中得到了很好的支持。