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逻辑结构

hbase是存在 hbase的定义_nosql


列族:相当于文件夹,图中name\ctiy\phone表示同一类信息。类似于mysql中宽表的切分

RowKey:行键,

Region:一张表的横向切片,把一张表进行数据切分。类似于mysql中高表的切分。

store: 存储

2、HBase 物理存储

hbase是存在 hbase的定义_java_02


HBase的存储:

hbase是存在 hbase的定义_数据库_03


表中的每一列的值都需要存储,如上图,切列中多了TimeStamp时间戳,Type数据操作类型,如Put,插入。

上图中,倒数第一、第二条数据发现除了时间戳和value不同,其他都相同,表示更新操作,HBase更新数据是向表中Put一条新的数据,且时间戳大于上一次时间戳,
删除操作通更新,只是Type类型不同,如果Delete的类型的时间戳大于之前的,则不返回数据 。

hbase是存在 hbase的定义_nosql_04


查询数据默认返回最大版本的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基本架构

hbase是存在 hbase的定义_hbase是存在_05