HBase的表存储结构

HBase 表存储结构

1,HBase 表逻辑视图

  • 表的形式存储数据,表由行和列组成。列划分为若干个列簇 (Column Family)。
    在这里插入图片描述

2,HBase 表结构组成

  • 1,行键(RowKey)

    • 作用:用来检索记录的主键
    • 访问 HBase 表中的行,有三种方式:

      通过单个 RowKey 访问
      通过 RowKey 的 range(正则)
      全表扫描

    • 可以是任意字符串。在 HBase 内部, RowKey 保存为字节数组(byte[])。

      最大长度是 64KB,实际应用中一般为10-100bytes

    • 存储时,表中数据按照 RowKey 排序(字典顺序)

      设计key时,利用排序存储这个特性,将经常一起读取的行放到一起。

  • 2,列簇(Column Family)

    • 列簇包含列,列簇是表的 schema 的一部分(而列不是),必须在使用表之前定义
    • 列名都以列簇作为前缀。

    例如:courses:history,courses:math 都属于 courses 这个列簇

    • 尽量不要设置过多列簇

    因为列簇越多,在取一行数据时所要参与 IO、搜寻的文件就越多

  • 3,时间戳(TimeStamp)

    • 可以通过 row 和 columns 确定一个存储单元(Cell),每个 Cell 都保存着同一份数据的多个版本。

    • 类型:64 位整型

      HBase(在数据写入时自动)赋值,此时间戳是精确到毫秒的当前系统时间,可以避免数据版本冲突,具有唯一性。
      客户显式赋值

    • 顺序:每个 Cell中,不同版本的数据按照时间戳降序排序,即最新的数据排在最前面。

    • 数据版本回收方式(避免数据存在过多版本造成管理(包括存储和索引)负担)

      1,保存数据的最后 n 个版本
      2,保存最近一段时间内的版本(设置数据的生命周期 TTL)
      可以针对每个列簇进行设置

  • 4,单元(Cell)

    • 由{RowKey, column( = +
    • Cell 中的数据是没有类型的,全部是字节码形式存储。
  • 5,版本(Version)默认为1

    • 有很多单元(Cell)的行和列是相同的,使用版本来区分不同的单元
    • 类型:用一个长整型表示
    • 顺序:按照时间戳降序排列,因此当读取这个文件的时候,最先找到的是最近的版本

3,HBase 表的特点

  • (1)大
  • (2)面向列: 面向列(簇)的存储和权限控制,列(簇)独立检索。
  • (3)稀疏:对于为空(null)的列,并不占用存储空间。
  • (4)无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
  • (5)数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
  • (6)数据类型单一:HBase 中的数据都是字符串,没有类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值