HDF5是否适用于实时测量?

9

我想知道hdf5是否适用于实时数据记录?

更具体地说,我正在开展一个项目,在这个项目中,我们想要连续(采样率从30到400Hz不等)混合各种性质(遥测、信号、视频)的大量数据(数小时)。

数据必须实时写入(或稍有延迟),以免在潜在的崩溃中丢失它们。

我们的第一个原型基于sqlite3,但是我们觉得长期使用可能会出现一些限制:速度慢、一个数据库==一个文件,并且从多个线程访问数据库时存在困难(同时读写时会出现锁定异常)。

因此,我考虑使用hdf5作为磁盘数据存储的后端(并使用numpy / pytable进行内部表示)。您认为可以使用这种Python绑定定期更新hdf5文件吗?

1个回答

5
HDF5数据包表适用于实时测量 - 但最好使用固定大小的数据包到常规旧posix文件中,然后再进行转换。这是因为HDF5目前不太稳定,并且没有提供使用低级文件IO代码所具有的各种保证 - 实际上,该低级代码非常易于使用。然而,在处理的数据变得足够复杂时,HDF5应该会派上用场,但要注意相对于低级文件IO,它是重量级的,并且由于其全局互斥使用,无法合理地确定/性能多线程化。此外,如果系统崩溃,生成的HDF5文件将是垃圾/无法恢复的 - 这将在未来得以解决,但需要HDF组的资金支持,以加快进度并在下一个十年内完成。

我的策略是尽可能使用数据包日志文件。然后,在记录这些文件进行长期使用、压缩和其他工具/程序使用之后,立即将结果转换为HDF5。这些记录器通常被我制作成倾倒一个HDF5文件,解释了写入时的二进制结构,以便我稍后可以简单地读取该文件以了解数据包日志文件中的结构体,并在将数据包加载到内存后将其移交给真正的HDF文件。

说了这么多,还是看看boeing的数据包表API吧。它还有一个黑羊c++绑定在随HDF5一起提供的hl c++库中,尽管我必须为我的用途对其进行修补。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接