当前位置:  开发笔记 > 编程语言 > 正文

评估HDF5:HDF5为数据建模提供了哪些限制/特性?

如何解决《评估HDF5:HDF5为数据建模提供了哪些限制/特性?》经验,为你挑选了2个好方法。

我们正在评估我们将用于存储我们在分析C/C++代码期间收集的数据的技术.在C++的情况下,数据量可能相对较大,每TU约20Mb.

阅读以下SO 答案后,我认为HDF5可能是我们使用的合适技术.我想知道这里的人是否可以帮我回答一些我提出的初步问题:

    性能.数据的一般用法是一次写入并读"几次",类似于编译器生成的'.o'文件的生命周期.HDF5如何与使用像SQLite DB这样的东西进行比较?这甚至是一个合理的比较吗?

    随着时间的推移,我们将添加我们正在存储的信息,但不一定要重新分发一组全新的"读者"以支持新格式.在阅读用户指南后,我了解到HDF5与XML或DB类似,因为信息与标签/列相关联,因此构建用于读取旧结构的工具只会忽略它不关心的字段?我对此的理解是否正确?

    我们希望写出的一大部分信息将是树类型的结构:范围层次结构,类型层次结构等.理想情况下,我们会将范围建模为具有父项,子项等.是否可以将一个HDF5对象设为"点"到另一个?如果没有,是否有使用HDF5解决此问题的标准技术?或者,根据数据库的要求,我们是否需要一个唯一的密钥,在搜索数据时,将一个对象"链接"到另一个对象并进行适当的查找?

非常感谢!



1> Jason S..:

HDF5如何与使用像SQLite DB这样的东西进行比较?这甚至是一个合理的比较吗?

类似但不是真的.它们都是结构化文件.SQLite具有使用SQL支持数据库查询的功能.HDF5具有支持大型科学数据集的功能.

它们都意味着高性能.

随着时间的推移,我们将添加我们正在存储的信息,但不一定要重新分发一组全新的"读者"以支持新格式.

如果以结构化形式存储数据,则这些结构的数据类型也存储在HDF5文件中.关于它是如何工作的我有点生疏(例如,如果它包含先天的向后兼容性),但我知道如果你正确地设计你的"阅读器"它应该能够处理将来改变的类型.

是否有可能让一个HDF5对象"指向"另一个?

绝对!你会想要使用属性.每个对象都有一个或多个字符串,用于描述到达该对象的路径.HDF5 组类似于文件夹/目录,除了文件夹/目录是分层的=唯一路径描述每个位置(在文件系统中至少没有硬链接),而组形成可以包括循环的有向图.我不确定您是否可以直接将对象的"指针"存储为属性,但您始终可以将绝对/相对路径存储为字符串属性.(或者作为字符串的任何其他地方;如果你愿意的话,你可以拥有丰富的查找表.)



2> Jon Ericson..:

我们在项目中生成HDF5数据,但我并不直接处理它.我可以抓住前两个问题:

    我们使用一次写入,多次读取模型,格式似乎很好地处理.我知道一个用于写入Oracle数据库和HDF5的项目.最终他们删除了Oracle输出,因为性能受到影响,没有人使用它.显然,SQLite不是Oracle,但HDF5格式更适合这项任务.基于该数据点,可以更好地调整RDBMS以进行多次插入和更新.

    当我们添加新数据类型时,客户使用的阅读器非常强大.预计会有一些变化,但我们不必担心在添加更多数据字段时会破坏它们.我们的DBA最近编写了一个Python程序来读取HDF5数据并填充KMZ文件以便在Google Earth中进行可视化.由于这是他用来学习Python的项目,我认为构建读者并不难.

关于第三个问题,我会向Jason S的优秀知识屈服.

我会说HDF5是一个完全合理的选择,特别是如果你已经对它感兴趣或计划为科学界生产一些东西.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有