理论教育 HBase 数据模型及优化

HBase 数据模型及优化

时间:2023-06-14 理论教育 版权反馈
【摘要】:HBase 以表的形式存储数据。列划分为若干个列族,其逻辑模型如表5-1 下:表5-1HBase 逻辑模型续表逻辑数据模型中空白内容在物理上是不存储的,因此若一个请求为时间t1 的info:address,返回结果为空。表5-1 对应的物理模型如表5-2 所示:表5-2HBase 物理模型1. Row Key表中每条记录的主键,HBase 表中每行记录都由一个行关键字来标识。HBase 的访问控制、磁盘和内存的使用统计等都是在列族层面进行的。

HBase 数据模型及优化

HBase 以表的形式存储数据。表由行和列族组成。列划分为若干个列族(row family),其逻辑模型如表5-1 下:

表5-1 HBase 逻辑模型

续表

逻辑数据模型中空白内容在物理上是不存储的,因此若一个请求为时间t1 的info:address,返回结果为空。如果不指明时间,将会返回最新数据,如在t3 时间后请求anchor:name,返回结果为James。表5-1 对应的物理模型如表5-2 所示:

表5-2 HBase 物理模型

1. Row Key(行关键字)

表中每条记录的主键,HBase 表中每行记录都由一个行关键字来标识。Row Key可以是任意字符串,只能有一个字段组成而不能由多个字段组合。HBase 对所有行按照Row Key 升续排序,在设计Row Key 时将经常一起读取的行放到一起。(www.daowen.com)

2. Column Family(列族)

列族包含一个或者多个相关列,列族是表的schema 的一部分,必须在使用表之前定义。

HBase 表中的每个列都归属于某个列族,列都以列族作为前缀,如anchor:name,anchor:tel 都属于anchor 这个列族。

每个列族中可以存放很多列,而每行每列族中的列数量可以不同,每行都可以动态的增加和减少列。列是不需要静态定义的,HBase 对列数没有限制,可以达到上百万个,但是列簇的个数有限制,通常有几十个。

在具体实现上,一张表的不同列族是分开独立存放的。HBase 的访问控制、磁盘和内存的使用统计等都是在列族层面进行的。

3. Timestamp(时间戳)

时间戳可以由HBase 在数据写入时自动赋值(精确到毫秒的当前集群系统时间),也可以由客户显式赋值。访问历史版本数据可以通过时间戳来获得。

4. Cell(单元格

HBase 中通过行关键字、列(列族名和列名)和时间戳的三元组确定一个存储单元(cell)。

每个Cell 都保存着同一份数据的多个版本(默认是三个),并按照时间倒序排序,即最新的数据排在最前面。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈