我使用 H5TB API 将(非等距)时间序列存储为 hdf5 文件中的表。格式如下:
time channel1 channel2
0.0 x x
1.0 x x
2.0 x x
还插入了这样的“详细数据”:
time channel1 channel2
0.0 x x
1.0 x x
1.2 x x
1.4 x x
1.6 x x
1.8 x x
2.0 x x
现在我想以另一种数据格式存储数据,因此我喜欢像这样“查询”hdf5 文件:
select ch1 where time > 1.6 && time < 3.0
我想了几种方法来执行此查询:
- 有一个名为 B 树索引的内置功能。是否可以使用它来索引数据?
- 我需要对时间 channel 进行二分搜索,然后读取 channel 值
- 我自己创建一个索引(并在有详细信息插入时更新它)。这里使用的最佳算法是什么?
索引的主要动机是获得快速的查询响应。
您在这里有什么建议?
最佳答案
我最终自己找到了另一个(明显的)解决方案。最简单的方法是打开 hdf5 文件仅读取时间 channel 并在读取数据通道之前创建内存映射。这个过程甚至可以通过使用稀疏超板读取时间 channel 来优化。
当特定时间的索引已知时,就可以读取数据。
关于c++ - 如何对hdf5时间序列进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5374447/