hbase核心数据结构hash

一、传统关系型数据库 为了更好的理解HBase表的思路,先回顾一下关系数据库中表的处理方式 例如有一个用户表user_info ,有字段:id、name、tel,表名 和字段 需要在建表时指定 create table user_info ( id 类型, name 类型, tel 类型 ) 然后插入两条数据 insert

一、传统关系型数据库

为了更好的理解HBase表的思路,先回顾一下关系数据库中表的处理方式

例如有一个用户表user_info,有字段:id、name、tel,表名字段需要在建表时指定

create table user_info (
    id 类型,
    name 类型,
    tel 类型
)

然后插入两条数据

insert into user_info values(...)

表结构

ID        NAME            TEL                
1小明123
2小王                456

后来字段不够用了,新用户需要记录地址,就要新增一个字段

id            

name         

tel                 

addr                           

1

小明

123

 

2

小王

456

 

以后再增加需求时,就继续新增字段,或者添加一个扩展表

上面的内容主要说明的是:

  • 建表的方式,需提前指定表名和字段
  • 插入记录的方式,指定表名和各字段的值
  • 数据表是二维结构,行和列
  • 添加字段不灵活

二、HBase的表结构

       建表时要指定的是:表名、列族

建表语句

create 'user_info', 'base_info', 'ext_info'

意思是新建一个表,名称是user_info,包含两个列族base_infoext_info

这时的表结构:

row key            

base_info                

ext_info                                                

...

...

...

row key 是行键,每一行的ID,这个字段是自动创建的,建表时不需要指定

插入一条用户数据:name为‘a’,tel为‘123’

插入语句

put 'user_info', 'row1', 'base_info:name', 'a'
put 'user_info', 'row1', 'base_info:tel', '123'

意思是向user_info表中行健row1base_info列族中添加一项数据 name:a,接着又添加一项数据tel:123

nametel就是具体字段,属于base_info这个列族                                                                                                                                                    

 这时的表结构:

row key

base_info

ext_info

row1                                 

name:a, tel:123                           

                                                

再插入一条数据:name为‘b’,addr为‘beijing’

put 'user_info', 'row2', 'base_info:name', 'b'
put 'user_info', 'row2', 'ext_info:addr', 'bj'

这时的表结构:

row key

base_info

ext_info

row1                                

name:a, tel:123                                 

                                                

row2

name:b

addr:bj

三、总结一下 

         通过上面的例子,大家应该对HBASE的数据存储结构有了一个简单认识,下面,我们通过一些图来回顾及补充一下:

1、数据模型相关概念

       1620

  • 表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。
  • 行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。
  • 列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元。
  • 列限定符:列族里的数据通过列限定符(或列)来定位。
  • 单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]。
  • 时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。

    2、数据坐标

    1620

    HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格

知秋君
上一篇 2024-08-23 20:12
下一篇 2024-08-23 19:48

相关推荐