HBase 数据模型概括:
Table(表格) 一个HBase表格由多行组成。
Row(行) HBase中的行里面包含一个key和一个或者多个包含值的列。行按照行的key字母顺序存储在表格中。因为这个原因,行的key的设计就显得非常重要。数据的存储目标是相近的数据存储到一起。行由行健(rowkey)唯一标识。行健没有数据类型,总是视为字节数组byte[].
Column(列) HBase中的列包含用:分隔开的列族和列的限定符。如column=cf1:age表示一列,其中cf1为列族,age为列限定符
Column Family(列族) 多个列组成一个组,叫做列族,一个列族的所有列具有相同的前缀。每一个列族拥有一系列的存储属性,例如值是否缓存在内存中,数据是否要压缩或者他的行key是否要加密等等。表中的每一行拥有相同的列族,尽管一个给定的行可能没有存储任何数据在一个给定的列族中。
Column Qualifier(列的限定符)列的限定符是列族中数据的索引。例如给定了一个列族content,那么限定符可能是content:html,也可以是content:pdf。列族在创建表时是确定的了,但是列的限定符是动态地并且行与行之间的差别也可能是非常大的。
Cell(单元) 单元是由行键、列族、列限定符、代表值版本的时间戳这四维属性确定,存储在单元里的数据称为单元值value,值没有数据类型,总是视为字节数组byte[]。
Timestamp(时间戳) 单元值有时间版本,时间版本用时间戳标识,是一个long。默认情况下,时间戳表示的是当数据写入时RegionSever的时间点,但你也可以在写入数据时指定一个不同的时间戳。
HBASE中的表是按column family来存储的