HBase表结构设计----模式构建

本文探讨了HBase的表结构设计,强调了HBase与传统关系型数据库的区别,如列式存储、非结构化数据支持及无JOIN操作。在设计HBase模式时,需要考虑列族数量、数据存储、列名、时间版本和Rowkey结构等因素。Rowkey尤为重要,因为它决定了数据的存储和检索效率。对于无JOIN操作的情况,可以利用大表结构和精心设计的Rowkey来模拟JOIN效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要知道HB阿瑟的表如何创建,首先需要了解Hbase的模式结构,包括表、Rowkey、列族、Timestamp(时间版本)。其实模式是一个三维有序结构,前面三个维度确定一行数据。
HBase的模式不同于关系型数据库(RDBMS),HBase与RDBMS的区别在于:HBase的单元格(cell)所在的行是有序的,其列(Qualifier)在所属列族(Column Family)存在的情况下,可以通过客户端自由添加,如下所示:(HBase表设计模式与RDBMS对比)

hbase与传统关系数据库区别:

hbase适合于非结构化数据存储的数据库。介于Map Entry 和 DB row之间的一种数据存储方式。

  1. 数据类型: HBase只有简单的字符串类型,它只保存字符串所有的类型都是交给用户自己处理。关系型数据库可以选择类型

  2. 数据操作: HBase操作只有很简单的插入、查询等操作,表与表之间是分离的,没有join

  3. 存储模式: HBase基于列存储,每个列族由几个文件保存,不同列族的文件是分离的。传统的关系数据库是基于表格结构和行模式保存的

  4. 数据维护: HBase更新操作时,旧的版本仍然保留,实际上时插入了新数据。传统关系数据库是替换修改

  5. 可伸缩性: HBase能够容易的增加或者减少硬件数量

通过HBase的模式与传统数据库系统对比,我们可以更清晰地了解HBase的结构:其实HBase和关系型数据库是不同的两种系统,它们拥有不同的设计特性。
在HBase模式设计过程中需要考虑不少因素,这些因素的列表如下:

  • 这个表应该有多少列族
  • 列族使用什么数据
  • 每个列族应该有多少列
  • 列名是什么,尽管列名不必在建表的时候定义,但是读写数据是需要知道的。
  • 单元应该存放什么数据。
  • 每个单元存储多少个时间版本。
  • 行健(Rowkey)结构是什么,应该包含什么信息。

HBase模式的设计更需要注意两个关键点:
(1)Join
HBase中没有JOin的概念,所以不支持Join操作,而在不少业务需求中,需要使用Join操作。而大表结构可以解决这一问题,只需要一条行记录上加上一个特定的行关键字,就可以实现把所有关于Join的数据合并在一起。
(2)Rowkey
Rowkey非常重要,在设计时需要慎重考虑。以存储用户观影记录数据为例,复合的Rowkey由用户ID作为前缀(方便把某用户的观影记录聚合在一起),倒置的时间串作为Rowkey的后缀可以使观影记录数据从新到旧排列。如果Rowkey是整型的,用二进制的方式应该比用String来存储一个数据更节约空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值