在 HBase 中,数据存储在由行列构成的二维表中。这是与一个关系数据库(RDBMS)重叠的术语,但这不是一个有用的类比。相反,将 HBase 表视为多维映射会很有帮助。

HBase 数据模型术语

HBase 表由多行组成。

HBase 中的一行由一个行键和一个或多个具有与之关联的值的列组成。在行存储时,顺序按照字母进行排序。因此,行键的设计非常重要。其目标是以相关行彼此靠近的方式存储数据。常见的行键模式是网站域名。如果您的行键是域名,则应该反向存储它们(org.apache.www,org.apache.mail,org.apache.jira)。这样,所有 Apache 域名都在表中彼此靠近,而不是基于子域名的第一个字母展开。

HBase 中的列由列族和列限定符组成,它们由:(冒号)字符分隔。

列族

出于性能原因,列族通常在物理上拥有一簇列及其值。每个列族都有一组存储属性,例如是否应将其值缓存在内存中,如何压缩其数据或对其行键进行编码等。表中的每一行都具有相同的列族,但给定的行可能不会在给定的列族中存储任何内容。

列限定符

列限定符将添加到列族中,以提供给定数据段的索引。给定列族content,列限定符可能是content:html,另一个可能是content:pdf。虽然列族在创建表时是固定的,但列限定符是可变的,并且行之间可能有很大差异。

单元格

单元格是行,列族和列限定符的组合,它包含一个值和一个时间戳,时间戳表示值的版本。

时间戳

时间戳与每个值一起写入,它是该值给定版本的标识符。默认情况下,时间戳表示写入数据时 RegionServer 上的时间,但是当您将数据放入单元格时,可以指定不同的时间戳值。