HBase数据的物理存储

本文探讨了HBase如何在HDFS上存储数据,重点介绍了HBase的Key-Value结构、MemStore与StoreFile的有序性,以及如何通过行操作、B+树、Bloom Filter和索引来优化数据存取效率。通过对HBase存储机制的理解,有助于提升数据库产品的设计能力。
摘要由CSDN通过智能技术生成

HBase的数据存储方式对于实现自己的数据库产品有借鉴和指导意义,因此总结一下,以作备忘。

HBase在文件系统中存储数据,而为了使系统具备良好的扩展性和可用性,一般使用HDFS作为该文件系统。

HBase的基本存储单元是Key-Value对,其中Key由行键(Row Key)、列族名称、列修饰符、版本号构成。整个HBase存储系统可以认为是维护了一个大型的Key-Value对集合。理所当然地,我们认为HBase中的基本操作是针对Key-Value对的PUT、GET、DELETE操作。HBase确实支持这些基本操作。但是,在实际的应用中,使用这些基本操作通常不是频繁用例,而更多的用例是以行(Row)为单位进行的PUT、GET、DELETE、SCAN操作。为此,HBase自动完成将一行拆分成多个Key-Value对或将属于同一行的各个Key-Value对封装成一行的工作。

HBase维护的各个Key-Value对的集合总是按Key有序的,这种集合包括磁盘上的StoreFile和内存中的MemStore。MemStore存在于内存,且其中的Key-Value对是动态插入。通过实施按序插入可以保证MemStore总是有序。StoreFile虽然存在于磁盘,但是它们是只读的,在某次需要将MemStore写到磁盘时被创建,以最优B+树(由于数据是现成的,因此可以做到最优)的数据组织方式存储了写到磁盘的MemStore,因此也总是有序的。

对HBase状态的更新总是通过向MemStore中添加新的Key-Value对进行,当然在MemStore满或其他Flush事件出现时,需要将MemStore写到磁盘上的StoreFile中。若是PUT一个Key-Value对,可以将该Key-Value对直接插入MemStore;若是DELET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值