HBase学习之[数据模型(Data Model)]
HBase采用行列表来存储数据。这是在关系型数据库中的说法,这种描述并不确切,但这可以帮助理解HBase表的多维映射。
Table
一个HBase的表由行多行构成。
Row
行由row key及一个或多个列及列值构成。行按行键(row key)是字母序存储。所以row key的设计是非常重要的。我们的设计目的是将关联的行相邻存储。常见的行键模式是一个网站域名。如果你将域名做为row key,你应该会将他们倒序存储(如:org.apahce.mail,org.apahce.jira)。这样的话,所有的apache的站点将相邻存储,而不是像基于正序那样第一个单词发散存储。
Column
HBase中的列包含Column Family和Column定义,它们之前用“:”分割。
Column Family
处于性能考虑,一般我们将一组列和它们的物理值集合在一起,我们称这个集合体为Column Family。HBase是按Column Family分组的,HBase的Column Family前缀必须由可打印的字符组成。每个Column Family都是单独的存储配置,比如说他们的值是否需要缓存 比如说他们的值是否需要缓存到内存中,数据是否需要压缩,row key是否需要编码等等。表中的每一行都有相同的Column Family,尽管有可能有些行的Column Family是空的。
Column Qualifier
Column Family之上的列定义是为一个给定的数据提供索引。对于一个指定的Column Family:content,它的可能的列定义是content:html,content:pdf等等。尽管Column Family是在建表的时候就已经创建,但列定义是可变的,每一行的列定义可能都有很大的不同。
Cell
Cell是row,column family,列定义,值和值标记变笨的timestamp的组合。
Timestamp
Timestamp是每个值写入时记录的一个时间值,用来标记每一个值的版本。默认情况下timestamp标记的是写入数据时当前Region Server的时间,但你也可以在执行put数据到cell时指定不同的时间timestamp值。

浙公网安备 33010602011771号