数据模型

在HBase中,数据存储在表中,表中有行和列。这个与关系型数据庫(RDBMSs)的术语有些类似,但这并不是一个对我们有帮助的类比。相反,把一个HBase的表当成一个多維的Map对我们更有益处。

HBase数据模型术语

Table(表)

一个HBase表包含多个行

Row(行)

在HBase里,row是由row key和一个或多个列及其值组成。数据在被存储的时候,是按row key的字母排序存储的。因此,row key的设计是非常重要的。这样存储数据的目的就是为了让相关的行存储在相邻的位置。一个常见的row key模式是一个网站的域名。如果你的row key是域名,你应该倒着存储他们(org.apache.www,org.apache.mail,org.apache.jira)。这种方式,使得所有的Apache域名在表中是相邻存储的,而不是基于子域名的首字母展开。

Column(列)

HBase的一列由列簇和列修饰符组成,他们通常由冒号(:)分隔。

Column Family(列簇)

通常为了性能原因的考虑,列簇会把列和相应的值物理上联合在一起。每个列簇是一个存储属性的集合,例如它的值是否应该缓存在内存中,它的数据是如何压缩或它的row key是如何编码,以及其他。表中的每个行都有相同的列簇,但是一行也可能没有存储一个列簇里的任何数据。

Column Qualifier

列修饰符被加到一个列簇,以提供对一个数据片段的索引。规定一个列簇为content,一个列修饰符可能是content:html,另外一个可能是content:pdf。尽管列簇是在创建表的时候固定了,但列修饰符是可变的,在行之间可能存在很大的不同。

Cell

一个Cell是行,列簇和列修饰符的组合,并且包含一个值和时间戳,时间戳代表着值的版本。

Timestamp(时间戳)

一个时间戳是連同值一起被写入的,是值版本的唯一标识,默认情况下,时间戳表示数据写入时RegionServer的时间,但是当你在写数据到Cell的时候,你可以指定一个不同的时间戳。

results matching ""

    No results matching ""