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