HDF5文件是否适合git版本控制?


13

我不熟悉HDF5中使用的文件格式,但是我想知道HDF5文件是否适合git的版本控制(例如Mercurial或Subversion)?我想我的意思是:HDF5文件是否适合基于行的差异处理,或者git是否必须将HDF5视为一个大二进制文件并为每个修订版本存储整个副本?


1
HDF5专为二进制数据而设计。它们不是真的适合行差异。话虽这么说,如果您只写给他们的是ASCII字符串,您可能会大为摆脱。你的目的是什么?
Bill Barth

我只是想知道它们是否适合版本控制。如果每次进行相对较小的更改时,修订跟踪都必须存储整个数据集的整个新副本,将带来不便。
Thomas Arildsen

1
您打算将哪种数据放入HDF5文件中?HDF5文件通常用于大型二进制输入和来自仿真代码的输出。前者通常不经常更改,并且不清楚后者是否属于版本控制。你的目标是什么?
Bill Barth 2013年

我正在考虑诸如由于质量控制而从您的数据集中丢弃数据条目或将其他数据添加到现有数据集中的情况。
Thomas Arildsen

2
HDF5可能差别不大,但是您必须问自己,哪个对您更重要:回购的大小或HDF5为您提供的功能。也许更好的问题是“存储提供版本历史和出处功能的原始数据的最佳方法是什么?”
Bill Barth 2013年

Answers:


9

如果您提供一些其他技术细节,例如您要放在版本控制下的数据类型,如何存储不同版本的数据,可能更改的组件,那么将会得到更好的答案。以及没有哪些组件,以及您是否真的要拥有树状的历史(分支,合并)。

HDF5文件不适用于git下基于差异的版本控制。

git在后台使用基于哈希的数据库,因此可以存储HDF5数据文件的哈希,而无需实际存储文件本身。git-fatgit-annexgit-media这三个项目为您大大简化了此过程。如果您有想要完全版本化的大块,完全独立的数据块,我建议使用此方法。

如果您可以将数据存储分为非易失性和易失性区域,则将大大提高与版本控制数据库的交互效率。如果您不需要git提供的DVCS功能,则可能还需要考虑将数据库显式地用于数据。


如果您要执行版本控制数据库,也可以通过版本控制模式,将数据库转储到文本文件以及版本控制结果(例如,使用git)来对数据库进行版本控制。有关详细信息,请参见stackoverflow.com/questions/846659/…
Geoff Oxberry

还有git-annex
Memming,2013年

3

我想我的意思是:HDF5文件是否适合基于行的差异处理,或者git是否必须将HDF5视为一个大二进制文件并为每个修订版本存储整个副本?

这个问题的字面答案是git无法有效地处理HDF5文件。

有关具有某些二进制文件的项目的版本控制的更有用的答案,请参见以下stackoverflow问题:https : //stackoverflow.com/questions/540535/managing-large-binary-files-with-git


3

正如其他人所说,如果您描述了总体目标,而不是确切的技术要点,那么提出有用的建议会比较容易。根据您的目标,这里还有另外一条建议可能对您有所帮助。

ActivePapers项目(http://www.activepapers.org/)在HDF5之上提供了一个代码和数据管理系统。ActivePaper是一个HDF5文件,其中包含数据集和在其上起作用的代码,元数据跟踪哪个代码段计算了哪个数据集以及使用了哪些输入数据。结合对源代码的版本控制和/或对整个HDF5文件的版本控制(使用其他答复中提到的git-annex等工具),ActivePapers可用于对计算进行版本控制,而不是用于隔离的文件或数据集。

免责声明:我是ActivePapers的作者。


1
我目前不在处理特定问题,但是我在想一些数据集,您可能会不时向其中添加新数据。每次添加时,您可能必须存储整个数据集的整个副本,这可能会很大,而原则上,只需要存储包含添加的数据的“ diff”即可。
Thomas Arildsen 2014年

1
我不知道有任何工具可以对二进制数据,HDF5或其他格式执行差异/合并样式操作。使用ActivePapers进行此操作的一个有趣的想法是通过在文件中包含“补丁脚本”以及原始数据来应用更改。然后,您可以按照一系列应用的补丁跟踪数据的演变。ActivePapers框架的一个优点是,您可以在引用原始文档的单独文件中进行修补。这意味着您可以单独发布数据,然后再发布修改(针对您自己和他人的数据)。
khinsen 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.