谈谈你对HBase数据模型的认识?

大家好,我是大D。

今天继续给大家分享一篇关于 HBase 数据模型的文章,希望大家能快速对 HBase 的数据结构有一个全面的认识。

前面我们有讲过 HBase 是一个面向列式存储的分布式数据库,它的数据模型与 BigTable 十分相似。在 HBase 表中,一条数据拥有一个全局唯一的键(RowKey)和任意数量的列(Column),一列或多列组成一个列族(Column Family),同一个列族中列的数据在物理上都存储在同一个 HFile 中,这样基于列存储的数据结构有利于数据缓存和查询。

同时,HBase 会将表按主键划分为多个 Region 存储在不同 Region Server 上,以完成数据的分布式存储和读取。(可参照下图理解,图片源于网络)
图片

1.Column Family

Column Family 即列族,HBase 基于列族划分数据的物理存储,一个列族可以包含多列。

一般同一类的列会放在一个列族中,每个列族都有一组存储属性:

是否应该缓存在内存中;
数据如何被压缩或行键如何编码等。
HBase 在创建表的时候就必须指定列族。HBase 的列族不是越多越好,官方推荐一个表的列族数量最好小于或者等于3,过多的列族不利于 HBase 数据的管理和索引。

2.RowKey

RowKey 的概念与关系型数据库中的主键相似,HBase 使用 RowKey 来唯一标识某行的数据。

访问 HBase 数据的方式有三种:

基于 RowKey的单行查询;
基于RowKey的范围查询;
全表扫描查询。

3.Region

HBase 按照行的方向将表中的数据基于 RowKey 的不同范围划分到不同 Region 上,每个Region都负责一定范围的数据存储和访问。

图片

每个表一开始只有一个 Region,随着数据不断插入表,Region 不断增大,当增大到一个阀值的时候,Region 就会等分成两个新的 Region。当table中的行不断增多,就会有越来越多的 Region。

另外,Region 是 Hbase 中分布式存储和负载均衡的最小单元,不同的 Region 可以分布在不同的 Region Server上。但一个 Region 是不会拆分到多个 Server 上的。(拓展:谈一下你对 HBase 的认识?)

这样即使有一个包括上百亿条数据的表,由于数据被划分到不同的 Region上,每个 Region 都可以独立地进行写入和查询,HBase 写入或者查询的时候可以基于多 Region 分布式并发操作,因此访问速度也不会有太大的降低。

4.TimeStamp

TimeStamp 是实现 HBase 多版本的关键。在HBase 中,使用不同 TimeStamp 来标识相同RowKey对应的不同版本的数据。相同 RowKey的数据按照 TimeStamp 倒序排列。默认查询的是最新的版本,当然用户也可以指定 TimeStamp 的值来读取指定版本的数据。

另外,非常欢迎大家加我VX:Abox_0226,备注「进群」,有关大数据技术的问题在群里一起探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值