hdf5适合实时测量

时间:2012-07-13 11:16:04

标签: logging real-time hdf5

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

更确切地说: 我正在开展一个项目,我们想要连续(采样率从30到400Hz不等)混合相当数量(几个小时)的不同性质(遥测,信号,视频)。

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

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

所以,我正在考虑使用hdf5作为磁盘上数据存储的后端(以及内部表示的numpy / pytable)的可能性。你认为可以定期更新hdf5文件吗?

1 个答案:

答案 0 :(得分:2)

HDF5数据包表适用于实时测量 - 但是最好使用固定大小的数据包到常规的旧posix文件并稍后进行转换。这是因为HDF5目前不是很强大,并且不提供使用低级文件IO代码的各种保证 - 所述低级代码实际上非常容易使用。在某些时候,虽然当你使用的数据足够复杂时,HDF5应该进入但是要注意相对于低级文件IO,它是重量级的,并且由于其全局互斥使用而不能具有合理的确定性/性能的多线程。此外,如果系统崩溃,例如,生成的HDF5文件是垃圾/不可恢复的 - 这将在一天内修复,但需要资金以便HDF小组加速并在未来十年内完成。

我自己的政策是尽可能使用数据包日志文件。然后在记录这些文件以供长期使用+压缩+其他工具/程序使用后立即将结果转换为HDF5。所说的记录器经常用来转储HDF5文件来解释写入时的二进制结构,所以我可以稍后读取该文件以了解数据包日志文件中的结构,并在加载数据包后将其交给真正的HDF文件在记忆中。

完成所有这些并完成后,请查看the packet table api from boeing。它还在hd c ++库中有一个黑羊c ++绑定,它附带了hdf5,虽然我不得不为我的用途修补它。