首页 理论教育 HBase数据模型概述

HBase数据模型概述

时间:2023-06-26 理论教育 版权反馈
【摘要】:表6-1HBase数据模型示意数据模型的基本概念。HBase中的数据被存储在表中,具有行和列,是一个多维的映射结构。修改列族会影响到HBase的物理存储结构,可以动态增删列族中的列限定符及其对应的值。HBase中的列族是一些列的集合。表6-2HBase的概念视图从表6-2可以看出,com.cnn.www网站的概念视图中仅有一行数据,行的唯一标识为“com.cnn.www”,对这行数据的每一次逻辑修改都有一个时间戳关联对应。表6-3HBase的物理视图

HBase数据模型概述

(1)数据模型概述。

HBase是一个稀疏、多维度、有序的映射表。这张表中每个单元是通过由行键、列族、列限定符和时间戳组成的索引来标识的。每个单元的值是一个未经解释的二进制数组byte[],没有数据类型。当用户在表中存储数据时,每一行都有一个唯一的行键和任意多的列。表的每一行由一个或多个列族组成,一个列族中可以包含任意多个列。在同一个表模式下,每行所包含的列族是相同的,也就是说,列族的个数与名称都是相同的,但是每一行中的每个列族中列的个数可以不同,如表6-1所示。

表6-1 HBase数据模型示意

(2)数据模型的基本概念。

HBase中的数据被存储在表中,具有行和列,是一个多维的映射结构。

1)表(Table)。

表包括行和列,列划分为多个列族。

2)行(Row)。

每一行代表一个数据对象。由列族中的列组成。行键(Row Key)是行的唯一标识,行是按照行键顺序进行存储的。

访问表中的行只有3种方式:通过单个行键获取单行数据;通过一个行键的区间来访问给定区间的多行数据;全表扫描。

3)列族(Column Family)。

HBase表中所有的列都组织在列族中。修改列族会影响到HBase的物理存储结构,可以动态增删列族中的列限定符及其对应的值。

HBase中的列族是一些列的集合。一个列族的所有列成员都有着相同的前缀,例如,courses:history和courses:math都是列族courses的成员。“:”是列族的分隔符,用来区分前缀和列名。列族必须在表建立的时候声明,列随时可以新建。每个列族存储在HDFS上的一个单独文件中,空值不会被保存。

4)列限定符(Column Qualifier)。

列族中的数据通过列限定符来进行映射。列限定符不需要事先定义,也不需要在不同行之间保持一致。列限定符没有特定的数据类型,以二进制字节来存储。

5)列(Column)。(www.xing528.com)

列由列族(Column Family)和列限定符(Column Qualifier)联合标识,由“:”进行间隔,如family:qualifier。

6)单元(Cell)。

一个单元由行键、列族和列限定符一起标识,存储在单元里的数据称为单元数据,没有特定的数据类型,以二进制字节来存储。

7)时间戳(Timestamp)。

时间戳用来标识每个单元数据的版本。读取单元数据时,如果没有指定时间戳,则默认返回最新的数据;写入单元数据时,如果没有设置时间戳,则时间戳默认为当前的时间。

(3)概念视图(逻辑视图)。

在HBase的概念视图中,一张表可以视为一个稀疏、多维的映射关系,通过“行键+列族:列限足符+时间戳”的格式就可以定位特定单元的数据。因为HBase的表是稀疏的,因此某些列可以是空白的。

HBase的概念视图是一个存储网页信息的表的片段。行键是一个反向URL,例如:www.cnn.com反向成com.cnn.www。反向URL的优点是可以让来自同一个网站的数据内容都保存在相邻的位置,从而可以提高用户读取该网站的数据的速度。contents列族存储了网页的内容;anchor列族存储了引用这个网页的链接;mime列族存储了该网页的媒体类型。HBase的概念视图如表6-2所示。

表6-2 HBase的概念视图

从表6-2可以看出,com.cnn.www网站的概念视图中仅有一行数据,行的唯一标识为“com.cnn.www”,对这行数据的每一次逻辑修改都有一个时间戳关联对应。表中共有四列:contents:html、anchor:cnnsi.com、anchor:my.look.ca和mime:type,每一列以前缀的方式给出其所属的列族。网页的内容一共有3个版本,对应的时间戳分别为t3、t5和t6。网页被两个页面引用,分别是my.look.ca和cnnsi.com,被引用的时间分别是t8和t9。网页的媒体类型从t6开始为“text/html”。

要定位单元中的数据可以采用“三维坐标”来进行,也就是[行键,列族:列限定符,时间戳]。例如,在图6-8中,[“com.cnn.www”,anchor:cnnsi.com,t9]对应的单元格中的数据为“CNN”;[“com.cnn.www”,anchor:my.look.ca,t8]对应的单元中的数据为“CNN.com”;[“com.cnn.www”,mime:type,t6]对应的单元的数据为“text/html”。

(4)物理视图。

在物理存储层,HBase的采用基于列的存储方式存储表。如表6-3所示,HBase将表6-2的概念视图按照contents、anchor和mime 3个列族分别存放。每个列族的数据、行键和时间戳存储在一起。物理视图不存储概念视图中的空值。

表6-3 HBase的物理视图

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

我要反馈