设为首页 加入收藏

TOP

HBase表结构设计----模式构建
2019-04-08 01:44:28 】 浏览:58
Tags:HBase 结构设计 ---- 模式 构建
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013080251/article/details/61925081

要知道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来存储一个数据更节约空间。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇HBase适合做BI分析的数据源吗? 下一篇分布式数据库HBase(一)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目