我们的目标是将HDF5用于我们的数据格式。选择HDF5是因为它是一种类似分层文件系统的跨平台数据格式,它支持大量数据。
该文件将包含数组和一些参数。问题是如何存储参数(不是由大量数据组成),还要考虑文件版本问题以及构建库的工作。 HDF5内的参数可以存储为(A)人类可读的属性/值对或(B)HDF5复合数据类型形式的二进制数据。
作为一个例子,让我们将具有三个顶点的多边形视为参数。在情况A下,我们可以得到一个名为Polygon
的变量,其中包含一系列顶点的字符串表示,例如:例如(1, 2); (3, 4); (4, 1)
。在案例B下,我们可以使用由[2 x 3]矩阵组成的名为Polygon
的变量。
我们有一些想法,但是从那些已经使用类似东西的人那里获得投入会很棒。更准确地说,您能否列出A和B的优点/缺点,并说明哪种情况更可取?
答案 0 :(得分:3)
作为一个必须完成你正在谈论的事情的人来说,rr基本上是正确的,但我会稍微改变一下。
文本文件更易于人类使用。如果要提取数据的子集并对其进行操作,可以在许多计算机上使用许多程序执行此操作。如果您正在使用二进制数据,则需要一个允许您这样做的程序。根据您对使用数据的人员的看法,这可能会对数据的可访问性和维护成本产生巨大影响。您将能够在Excel中进行sed,grep甚至编辑数据。
二进制数据(对于大型数据集)的输入和输出将比文本快得多。
所以最后它取决于你的用例。查看处理纯文本的无数工具中的数据是否有意义?用大数据hdf5观众来看它是否有意义?在时间和空间方面,写明文是否会给你带来麻烦?
一般来说,当我遇到这个问题时,我基本上总是做同样的事情:我用纯文本存储数据,直到我意识到速度问题比使用二进制文件更令人恼火,然后我切换。如果您事先并不知道是否超过该阈值,请使用纯文本,并将您的界面写入持久层,以便以后轻松切换。这是一些额外的工作,由于简单的文本更易于调试,您可能会回来。
答案 1 :(得分:2)
如果您希望经常手动编辑文件(如XML或JSON),那么请使用人类可读的格式。
否则使用二进制文件 - 为它创建解析器要容易得多,并且运行速度比任何语法解析器都快。
另请注意,以后如何阻止您在二进制和人类可读形式之间创建转换器。
版本控制文件可能听起来不错,但你真的要检查文件的差异吗?#34;包含大型数组"?