《Python和HDF 5大数据应用》——第2章 开始使用 2.1 HDF基本原理

本节书摘来自异步社区《Python和HDF 5大数据应用》一书中的第2章,第2.1节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第2章 开始使用

2.1 HDF基本原理

在迫不及待跳进Python代码样例之前,我们有必要花几分钟时间着重关注一下HDF5自身是如何组织的。图2-1展示了HDF5的各种逻辑层。蓝色表示该层处于HDF5标准库内部;绿色则代表使用HDF5的客户软件。


screenshot

大多数客户代码,包括Python模块h5py和PyTables都使用C API(HDF5自己就是用C写成的)。在简介里我们已经知道HDF5的数据模型包含三大公开抽象:数据集(第3章)、组(第5章)和特征(第6章)。C API(以及其上的Python代码)操作这些对象。

HDF5使用各种内部数据结构来表示组、数据集和特征。比如,组使用一种被称为“B树”的数据结构来索引其成员,这使得我们能非常迅速地在一个组内获取成员以及创建新成员,哪怕这个组内存储了上百万个对象(61页,组如何存储)。在考虑性能问题的时候,你通常只需要关心这些数据结构。比如,在使用分块存储(第4章)时,理解数据在磁盘上实际被如何组织非常重要。

下面两层则跟你的数据如何进入磁盘有关。HDF5对象都生存在一个1维逻辑地址空间,就好像一个普通文件。然而这个地址空间和磁盘上的字节之间还有一个额外的HDF5驱动层,负责磁盘的写入机制,同时亦能在处理过程中做一些令人惊叹的事情。

比如说,HDF5的core驱动能够让你的文件完全保存在内存中,读写速度超快。family驱动让你能够将一个文件分成固定大小的多个文件块。mpio驱动则利用消息传递接口(MPI)库使得多个并发的进程访问同一个文件。所有这些驱动对于在上层操作组、数据集和特征的代码来说都是透明的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值