列族数据库HBase的四维模型

2020年11月2日14:43:42列族数据库HBase的四维模型已关闭评论

列族数据库HBase的四维模型

实际上,HBase是一个列族数据库,而不是真正的列式数据库。

因为允许存放非结构化数据,所以HBase的数据类型只有简单的字符串类型,如果需要细分类型,需要用户自己处理。

HBase存储的数据模型是一个四维模型,如图3-9所示。

从图中可以看出,与关系型数据库中表的二维模型相比,HBase中的四维数据模型新增了列族和版本两个维度,从而形成了行键、列族、列和版本四维维度。由此可见,如果需要对数据库中的数据单元进行精确定位,就要使用四维坐标。

通过行键可以获取一个指定的行,它由一个或多个列族构成;每个列族有一个或多个列;每列有一个或多个版本。为了获取指定数据,就需要知道它的行键、列族、列限定符和版本。进行查询时,如果仅提供行键,会返回满足条件的整行数据;如果仅提供行键、列族和列限定符,会返回某行某列的最新单元值;如果再进一步增加时间戳,就会返回某行某列单元值的某个版本。

列族数据库HBase的四维模型

图3-9 HBase存储的四维数据模型

下面对HBase的四维模型中每个元素进行说明。

(1)行键(Row Key):最大长度为64KB的任意字符串。与关系型数据库一样,行键是行的唯一标志。

(2)列族(Column Family):这是理解列族数据库的关键概念。将数据行中的字段按照某种要求分成数个小组,每个小组包含若干个字段,每个小组就是列族。列族需要预先定义,并且不能随意修改。每行具有相同的列族,但不要求每个列族都存储数据。

(3)列限定符(Qualifier):每个列族包含多个字段,限定符用于区分不同的字段。列限定符不需要预先定义,因此每行可以有不同数量的列限定符,也可以认为列限定符就是字段。

(4)单元(Cell):存储数据的最小单元。单元中存储的是未经解释的字符串,需要通过行键、列族、列限定符、时间戳进行定位。

(5)版本(Version):这是HBase与其他数据库的不同之处。版本是一个64位整型数,可以由系统自动生成,也可以由用户自定义。引入版本后,存储在单元中的值不再只有一个,可以通过不同的时间戳(Timestamp)在同一单元中存入多个版本。

如果将行键和列限定符看作关系型数据库的行和列,那么HBase就多了列族和版本。

为了及时清理失效数据,HBase的数据版本可以按版本数或按版本保存时间进行回收。

在设计列族时,列族数量不能太多,一般是数十个。同一列族的数据最好属于同一数据类型。HBase允许按列族设置数据访问权限,也可以要求将列族数据存储在内存中以提高响应性能。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。