我们正在评估用于存储在对C/C++代码进行分析期间收集的数据的技术。对于C++而言,数据量可以相对较大,每个TU大约为20MB。
阅读了以下SO的答案之后,我认为HDF5可能是我们使用的合适技术。我想知道这里的人是否可以帮助我回答一些初始问题:
性能。通常用于数据的写入一次和“多次”读取,类似于编译器生成的“.o”文件的生命周期。 HDF5与使用SQLite DB之类的东西相比如何?是否做这样的比较是合理的?
随着时间的推移,我们将添加要存储的信息,但不一定希望重新分发完全新的“读者”来支持新格式。阅读了用户指南后,我了解到HDF5类似于XML或DB,即信息与标签/列相关联,因此构建用于读取旧结构的工具将仅忽略其不关心的字段?我的理解是否正确?
我们希望写出的信息的一大块将是树状结构:范围层次结构,类型层次结构等。理想情况下,我们应该将作用域建模为具有父项、子项等。是否可能让一个HDF5对象“指向”另一个对象?如果不行,是否有一种标准技术可以使用HDF5解决此问题?或者,就像在数据库中所需的那样,我们需要一个唯一的键,将一个对象与另一个对象“链接”,并在搜索数据时进行适当的查找?
非常感谢!