这可能是一个非常愚蠢的问题,至少是一个非常简单的问题。如果不值得详细回复,请指出正确的方向。
我的理解是HDF5可以存储分层数据。我使用文件系统来存储我的数据---根目录,子目录,数据文件(txt)和元数据文本文件。目录名称通常也是描述性的。因此,使用目录作为组和数据文件作为数据集将这些数据捆绑到hdf5文件(或文件)中似乎很自然。
我的问题是,这样做有什么好处吗?我希望能够通过使用组和/或属性(如数据库中的SELECT)来选择和组合数据集。还有,有这样的工具吗?
答案 0 :(得分:1)
当然,这是可能的。
例如,我们有一个用于可视化科学数据的Web应用程序,它依赖于具有30.000个组的单个250GB HDF5文件,并且每个组包含多个数据集。组和数据集具有属性。 web-app仅访问此单个HDF5文件以检索所有信息。
使用HDF5文件的优点是,它非常便携,可以用于许多不同的语言(C ++,Java,python等)。它对于存储二进制数据也非常有效,如果将压缩和分块结合起来,您甚至可以通过使用当今的多核CPU来提高性能。
然而,HDF5与RDBMS完全不同。你不能在数据库中真正使用SELECT
。您必须通过组/数据集进行迭代(可能是递归)。有一些库(Pandas,PyTables)构建在HDF5之上,并提供更高的抽象。缺点是你可能会失去一些便携性。
另一种方法是使用混合方法: 您可以将元信息存储在RDBMS中,将二进制数据存储在一个或多个HDF5文件中。这可能会让你最好的两个世界。
这里还列出了有用的库:
的Python:
C ++:
爪哇:
朱莉娅:
Matlab:
R:
的GUI: