现在的位置: 首页 > 综合 > 正文

HBase数据模型、概念视图和物理视图

2018年05月20日 ⁄ 综合 ⁄ 共 1201字 ⁄ 字号 评论关闭

1:数据模型

   HBase是一个类似Bigtable的分布式数据库,它是一个稀疏的长期存储的(存储在硬盘上)、多维度的、排序的映射表,这张表的索引

是行关键字、列关键字和时间戳,HBase中的数据都是字符串,没有类型。

   用户在表格中存储数据,每一行都有一个可排序的主键和任意多的列。由于是稀疏存储,同一张里面的每一行数据都可以有截然不同的列。

  列名字的格式是"<family>:<qualifier>",都是由字符串组成的,每一张表有一个列族集合,这个集合是固定不变的,只能通过改变表结构来改变。

 但是qulifier值相对于每一行来说都是可以改变的。

   HBase把同一个列族里面的数据存储在同一个目录下,并且HBase的写操作是锁行的,每一行都是一个原子元素,都可以加锁。

   HBase所有数据库的更新都有一个时间戳标记,每个更新都是一个新的版本,HBase会保留一定数量的版本,这个值是可以设定的,客户端可以

选择获取距离某个时间点最近的版本单元的值,或者一次获取所有版本单元的值。

2:概念模型

   我们可以将一个表想象成一个大的映射关系,通过行健、行健+时间戳或行键+列(列族:列修饰符),就可以定位特定数据,HBase是稀疏存储

数据的,因此某些列可以是空白的,

   

Row Key

Time Stamp

Column Family:c1

Column Family:c2

r1

t7

c1:1

value1-1/1

 

 

t6

c1:2

value1-1/2

 

 

t5

c1:3

value1-1/3

 

 

t4

 

 

c2:1

value1-2/1

t3

 

 

c2:2

value1-2/2

t2

t2

c1:1

value2-1/1

 

 

t1

 

 

c2:1

value2-1/1

从上表可以看出,test表有r1和r2两行数据,并且c1和c2两个列族,在r1中,列族c1有三条数据,列族c2有两条数据;在r2中,列族c1有一条数据,

列族c2有一条数据,每一条数据对应的时间戳都用数字来表示,编号越大表示数据越旧,反而表示数据越新。

3:物理视图

    虽然从概念视图来看每个表格是由很多行组成的,但是在物理存储上面,它是按照列来保存的。

   

Row Key

Time Stamp

Column Family:c1

r1

t7

c1:1

value1-1/1

t6

c1:2

value1-1/2

t5

c1:3

value1-1/3

             表:HBase数据的物理视图(1)

 

Row Key

Time Stamp

Column Family:c2

r1

t4

c2:1

value1-2/1

t3

c2:2

value1-2/2

          表:HBase数据的物理视图(2

需要注意的是,在概念视图上面有些列是空白的,这样的列实际上并不会被存储,当请求这些空白的单元格时,会返回null值。如果在查询的时候不

提供时间戳,那么会返回距离现在最近的那一个版本的数据,因为在存储的时候,数据会按照时间戳来排序。

【上篇】
【下篇】

抱歉!评论已关闭.