Hbase表设计策略

作者:微信小助手

发布时间:2020-03-24T10:08:57


本文字数:4849

预计阅读时间:20分钟


导读


Hbase是一个高可靠性,高性能、列存储、可伸缩、多版本的Nosql的分布式数据存储系统,而Hbase的表设计是发挥出Hbase优异性能的关键所在。一个好的Hbase的表设计在满足业务需求下遵循哪些规则呢?如何设计出既满足业务需求性能又好的的Hbase表呢?今天我们就来谈谈Hbase的表设计策略。


Hbase非常适用于数据量大、写入>读取、写入并发量高的业务场景之下。在介绍表设计策略之前,先来介绍一下有关Hbase表设计需要知道的相关基本概念。



HBase数据模型


Table

对应于关系型数据库中的一张张表,HBase以“表”为单位组织数据,表由多行组成;


Colum

行由一个RowKey和多个列族组成,一个行有一个RowKey,用来唯一标识;


行键RowKey

Rowkey类似RDBMS的主键,唯一标识该行,是定位该行的索引;


列族Row Family

每一行由若干列族组成,每个列族下可包含多个列,列族是列共性的一些体现。注意:物理上,同一列族的数据存储在一起的;


列限定符Row Qualifier

列由列族和列限定符唯一指定;


单元格Cell

单元格由RowKey、列族、列限定符唯一定位,单元格之中存放一个值(Value)和一个版本号;


时间戳TimStamp

单元格内不同版本的值按时间倒序排列,最新的数据排在最前面;


Region

HBase自动把表水平(按Row)划分成多个区 (Region),每个Region会保存一个表里面某段连续的数据。



列描述


常用的列描述有:

BLOOMFILTER

表示是否开启Bloomfilter,以及Bloomfilter的细粒度;


COMPRESSION

表示是否开启压缩,以及使用压缩的方式;


VERSIONS

表示允许存储的数据最大版本数;


TTL

表示允许数据存活的最大时间;


MINVERSION

表示数据保存的最少版本数。



列描述角度的设计策略


BLOOMFILTER

BloomFilter的原理这里不过多描述。是否采用BloomFilter需要根据实际业务考虑。由于BloomFilter的原理,BloomFilter可以快速确认某个RowkeyRowkey +