在Hbase中,数据存储在具有行和列的表中。虽然看起来和关系数据库(RDBMS)一样,但将Hbase看成是多个维度的Map结构更容易理解。
术语 表(table)Hbase中数据都是以表形式来组织的,Hbase中的表由多个行组成
行键(row key)- Hbase中的行有一个rowkey(行键)和一个或多个列组成,列的值与rowkey、列相关联
- 行在存储是按行键的字典序排序
- 行键的设计非常重要,尽量让相关的行存储在一起
Hbase中的所有列族(column family)和列限定符(列名)(column qualifier)组成。
表示如下:
列族名:列限定符 例如:C1:USER_ID C1:SEX列族(column family)
- 处于性能原因,列族将其与一组列组织在一起
- 每个列族都有一组存储属性:例如是否应该缓存在内存中,数据如何被压缩等
- 表中的每一行都有相同的列族,但在列族中不存储任何内容
- 所有的列族的数据全部都存储在一块(文件系统HDFS)
- Hbase官方建议所有的列族保持一样的列,并且将同一类的列放在一个列族中
- 列族中包含一个个的列限定符,这样可以为存储的数据提供索引
- 列族在创建表的时候是固定的,但列限定符是不做限制的
- 不同的列可能会存在不同的列标识符
单元格是行、列族和列限定符的组合,包含一个值和一个时间戳,数据以二进制存储
版本号(version num)每条数据都可以有多个版本号,默认值为系统时间戳,类型为Long
时间戳(timestamp)每个数据都会有时间戳的概念。
- 在向Hbase插入更新数据的时候,Hbase默认会将当前操作的时间记录下来,当然也可以人为指定时间
- 不同版本的数据按照时间倒序排序,即最新的数据排在最前面



