大数据存储_hdf5 简介

hdf5 简介

概述
HDF5 (Hierarchical Data Format) 是由美国伊利诺伊大学厄巴纳-香槟分校,是一种跨平台传输的文件格式,存储图像和数据
hdf5的优势
- 通用数据模型,可以通过无限多种数据类型表示非常复杂、异构的数据对象和各种各样的元数据
- 高速原始数据采集
- 可移植和可扩展,文件大小没有限制
- 自描述的,不需要外部信息应用程序来解释文件的结构和内容
- 拥有用于管理、操作、查看和分析数据的开源工具和应用程序软件的生态系统
- 在各种计算平台(从笔记本电脑到大规模并行系统)和编程语言(包括C、c++、Fortran 90和Java)上运行的软件库
hdf5结构
hdf5结构分为两个部分,一个是group,一个是dataset。不同的group存放不同的数据,dataset分为原始数据和元数据
groups
每一个hdf5文件有一个根目录,根目录的子级单位有多个group

如上图所示,根目录下有两个group,viz group中有许多图和表,其中,表和simout group是共享的。simout group中有一个三维的矩阵和2个2维的矩阵。
hdf5的文件格式,极其类似unix操作系统
datasets
HDF5数据集包含数据和描述文件也就是metadata

在上面的图片中,数据存储为大小为4 x 5 x 6的三维数据集,数据类型为整数。属性为时间和压力,同时数据被分块和压缩
Datatypes
Datatypes描述数据集中单个数据元素的数据类型,如下图的32位整数

Dataspaces
Dataspaces描述数据集数据元素的布局。下图为3*5的2维(rank)数组

Properties
Properties适用于描述hdf5文件的特征,通过修改这些性能,可以提高存储效率 比如默认情况下,数据是连续分布的,为了更好的效能,可以将数据分割成块并压缩

Attributes
与hdf5文件关联的文件,包含两个部分,名字和值,通俗点讲就是一个描述文件
语言支持
- C语言
- python的h5py模块(备用)
- R语言基于R6对象的hdf5r包(主要)
结束语
hdf5是一个非常专业的数据存储格式,同时支持的数据类型广泛,有更高级的使用,但是考虑到时间和需求,我应该不会在这方面深入过多,后续应该会更新r语言的hdf5文件处理,python备用。
love&peace