2021年大数据HBase(三):HBase数据模型!!!【建议收藏】

2021-10-11 15:36:56 浏览数 (1)

HBase数据模型

在HBASE中,数据存储在具有行和列的表中。这是看起来关系数据库(RDBMS)一样,但将HBASE表看成是多个维 度的Map结构更容易理解

术语:

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