.hdf
.h4
.hdf4
.he2
.h5
.hdf5
.he5
层级数据格式(Hierarchical Data Format:HDF)是设计用来存储和组织大量数据的一组文件格式(HDF4,HDF5)。它最初开发于美国国家超级计算应用中心,现在由非营利社团HDF Group支持,其任务是确保HDF5技术的持续开发和存储在HDF中数据的持续可访问性。
伴随着这个目标,HDF库和相关工具可在自由的类BSD许可证下获得用于一般使用。HDF被很多商业和非商业软件平台所支持,包括Java、MATLAB、Scilab、Octave、Mathematica、IDL、Python、R、Fortran和Julia。可免费获得的HDF发行中包括了库,命令行实用程序,测试套件源代码,Java接口,和基于Java的HDF查看器(HDFView)[1]。
当前版本是HDF5,在设计和API上与主要的遗留版本HDF4有显著区别。
在1987年由美国国家超级计算应用中心(NCSA)的图形基础任务攻坚组(GFTF),着手建立一种架构无关的软件库和文件格式,致力于满足NCSA在当时使用的多种不同计算平台之间,移送科学数据的需要。额外的目标还包括:有效的存储和访问大对象的能力,在一个容器内存储不同类型的众多对象的能力,增长格式来容纳新类型的对象和对象元数据的能力,用C和Fortran二者的程序访问存储数据的能力。最初称为AEHOO(全包容层级面向对象格式),新软件和文件格式,最终叫做层级数据格式(HDF)。HDF的设计组合了来自很多不同格式的想法,包括TIFF、CGM、FITS和Macintosh PICT(英语:PICT)格式。这个计划在1990年和1992年,收到了美国国家科学基金会(NSF)的至关重要的拨款。大约1990年代早期美国国家航空航天局(NASA),研究了用在地球观测系统(英语:Earth Observing System)(EOS)计划中的15种不同文件格式。[2]在两年评述过程之后,HDF被选择为EOS数据和信息系统的标准格式[3]。
1996年美国能源部的劳伦斯利弗摩尔、洛斯阿拉莫斯和桑迪亚国家实验室与NCSA,抽调人员成立了数据建模和格式(DMF)小组,研究满足高级模拟和计算规划(ASC)需要的并行I/O能力的文件格式。在NASA的额外支持下,三实验室与NCSA,联合开发了第一版的HDF5并于1998年发行。[2]在2007年NASA地球观测系统(英语:Earth Observing System)推荐使用HDF-EOS5[4]。
HDF4是这个格式的较老版本,它支持可增殖的不同数据模型,包括了多维阵列、光栅图像和表格。每种都定义了特定的聚集数据类型,并提供一个API用来读取、写入、组织数据和元数据。HDF开发者和用户可以增加新数据模型。
HDF是自描述的,允许应用程序解释文件的结构和内容而不需要外部信息。一个HDF文件可以持有混合的有关联的对象,它们可以作为一个群组或作为个别对象来访问。用户可以建立自己的叫做“vgroups”的群组结构。
HDF4格式有很多限制[5][6]。它缺乏清晰的对象模型,这导致持难于持续支持和改进。支持多种不同的接口风格(图像、表格、阵列)导致了复杂的API。对元数据的支持依赖于使用的是哪个接口;SD(科学数据集)对象支持任意命名属性,而其他类型只支持预定义的元数据。可能最重要的问题,是使用32-bit位有符号整数寻址,限制了HDF4文件大小极大为2GB,这在很多现代科学应用中是不可接受的。它仍被HDF Group活跃支持着,可见于其支持页面[7]。
HDF5格式被设计解决HDF4库的某些限制,并致力于满足现代系统和应用的当前和预期要求。
HDF5简化了文件结构,只包含两种主要的对象类型:
这真正产生了层级的、类似文件系统的数据格式。事实上,在HDF5文件中的资源可以使用类似POSIX语法的“/路径/至/资源”来访问。元数据以用户定义形式存储,命名特性附加到群组和数据集之上。表示图形和表格的更复杂存储API,可以接着使用数据集、群组和特性来建造起来。
除了这些在文件格式上的进步,HDF5包括了改进的类型系统,和表示在数据集区域上选择的数据空间对象。API是面向对象的,有关于数据集、群组、特性、类型、数据空间和属性列表。
最新版的NetCDF版本4基于了HDF5。
由于它使用了B树来索引表格对象,HDF5有效工作于时间序列数据,比如股价序列,网络监控数据,和3D气象数据。大批量的数据直接进入阵列(表格对象),它可以比SQL数据库的行存储更快访问,而非阵列的数据可获得B树访问。HDF5数据存储机制比SQL星模式(英语:Star schema)更简单和快速。
对HDF5的批评来源于它的单体设计和冗长规定。
Lokasi Pengunjung: 18.119.130.166