【发布时间】:2014-04-03 06:17:56
【问题描述】:
我正在处理将元数据添加到文件夹的open source project。提供的 (Python) API 允许您浏览和访问元数据,就像它只是另一个文件夹一样。因为它只是另一个文件夹。
\folder\.meta\folder\somedata.json
阅读本书Python and HDF5 中有关 HDF5 的内容,我一直在寻找与使用文件夹中的文件相比使用它的好处,但我遇到的大部分内容都谈到了分层文件格式在其简单性方面的好处通过其 API 添加数据:
>>> import h5py
>>> f = h5py.File("weather.hdf5")
>>> f["/15/temperature"] = 21
或者它能够根据请求仅读取其中的某些部分(例如随机访问),以及并行执行单个 HDF5 文件(例如用于多处理)
你可以挂载 HDF5 文件,https://github.com/zjttoefs/hdfuse5
它甚至拥有一个强大而简单的基础概念,即 Groups 和 Datasets,来自 wiki 的内容如下:
- 数据集,它们是同构类型的多维数组
- 组,它们是容器结构,可以容纳数据集和 其他组
将 Dataset 替换为 File 并将 Group 替换为 Folder,整个功能集在我看来就像什么文件夹中的文件已经完全可以做到了。
对于我遇到的每一项好处,没有一个是 HDF5 独有的。
所以我的问题是,如果我要给你一个 HDF5 文件和一个包含文件的文件夹,两者都具有相同的内容,那么 HDF5 更适合哪种情况?
编辑:
已经收到一些关于 HDF5 可移植性的回复。
这听起来很不错,但我仍然没有得到一个例子,一个场景,HDF5 会胜过一个包含文件的文件夹。当一个文件夹在任何计算机、任何文件系统、网络上都可以读取、支持“并行 I/O”、在没有 HDF5 解释器的情况下可供人类读取时,为什么有人会考虑使用 HDF5。
我想说的是,包含文件的文件夹比任何 HDF5 都更便携。
编辑 2:
Thucydides411 只是举了一个可移植性很重要的场景示例。 https://stackoverflow.com/a/28512028/478949
我认为我从这个线程中的答案中得出的结论是,当您需要文件和文件夹的组织结构时,HDF5 非常适合,就像在上面的示例场景中一样,有很多(数百万)小(~ 1字节)数据结构;像单个数字或字符串。它通过提供有利于小而多而不是少数和大的“子文件系统”来弥补文件系统的不足。
在计算机图形学中,我们用它来存储几何模型和关于单个顶点的任意数据,这似乎与它在科学界的使用非常吻合。
【问题讨论】:
标签: python persistence metadata hdf5