HBase学习
第一章:HBase定义
文章目录
- 一、HBase定义
- 二、HBase数据模型
- 1、HBase逻辑结构
- 2、HBase 物理存储
- 3、数据模型
- 1)、Name Space
- 2)、Region
- 3)、Row
- 4)、Column
- 5)、Time Stamp
- 6)、Cell
- 三、HBase基本架构
一、HBase定义
HBase是一种分布式、可扩展、支持海量数据存储的NoSql数据库
二、HBase数据模型
逻辑上,HBase的数据模型和关系型数据库类似,数据存储在一张表中,有行有列,但HBase的底层物流存储结构(k-v)来看,更像是一个多维度Map。
1、HBase逻辑结构
列族:相当于文件夹,图中name\ctiy\phone表示同一类信息。类似于mysql中宽表的切分
RowKey:行键,
Region:一张表的横向切片,把一张表进行数据切分。类似于mysql中高表的切分。
store: 存储
2、HBase 物理存储
HBase的存储:
表中的每一列的值都需要存储,如上图,切列中多了TimeStamp时间戳,Type数据操作类型,如Put,插入。
上图中,倒数第一、第二条数据发现除了时间戳和value不同,其他都相同,表示更新操作,HBase更新数据是向表中Put一条新的数据,且时间戳大于上一次时间戳,
删除操作通更新,只是Type类型不同,如果Delete的类型的时间戳大于之前的,则不返回数据 。
查询数据默认返回最大版本的TimeStamp
3、数据模型
1)、Name Space
命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。Hbase有两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default是用户默认的命名空间。
2)、Region
类似关系型数据库中表的概念。不同的是吗,HBase定义表的时候只需要声明列族即可,不需要声明具体的列。也就是说,往HBase写入数据的时候,字段可以使动态、按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。
3)、Row
HBase中每行数据都有一个RowKey和多个Column组成,数据按照RowKey的字典顺序存储的,并且查询数据时候只能根据Rowkey进行检索,所以RowKey的设计十分重要。
4)、Column
HBase中的每个列都是由Column Family(列族)和Column Qualifier(列限定符)进行限定,例如:info:name, info:age。建表时,只需要指明列族,而列限定符无需预先定义。
5)、Time Stamp
用于标识数据不同的版本,每条数据写入时,如不指定时间戳,系统会自动为其加上该字段,并写入HBase时间。
6)、Cell
由{rowkey,Column Family;Column Qualifier,Time Stamp}唯一确定的单元,cell中的数据是没有类型的,全是字节码形式存储。
三、HBase基本架构