HBase表的数据结构

3 篇文章 0 订阅
2 篇文章 0 订阅

一.Table

传统数据库一个表的结构如下

姓名年龄性别成绩
wuyifan18man100
john20man98

转换成HBase数据库的表结构就如下所示

infoscore
Row_keyinfo:name ,info:age ,info:sexscore:name, score:score

//创建表和列族//

create 'school','info','score'

//==创建列族中的列和数据//

put 'school','001','info:name','wuyifan'
put 'school','001','info:age','18'
put 'school','001','info:sex','man'
put 'school','001','score:name','wuyifan'
put 'school','001','score:score','100'
put 'school','002','info:name','john'
put 'school','002','info:age','20'
put 'school','002','info:sex','man'
put 'school','002','score:name','john'
put 'school','002','score:score','98'

在这里插入图片描述

二.Column Family

列族:HBASE表中的每个列,都归属于某个列族。列族是表的schema的一部 分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如 courses:history,courses:math都属于courses 这个列族。

三.RowKey

  • 单个RowKey
  • RowKey的正则
  • 全表扫描

RowKey行键 (RowKey)可以是任意字符串(最大长度是64KB,实际应用中长度一般为 10-100bytes),在HBASE内部,RowKey保存为字节数组。存储时,数据按照RowKey的字典序(byte order)排序存储。设计RowKey时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)

四.Cell

由 rowkey, column Family:columu, version 他们三个参数确定唯一一个Cell
cell中的数据是没有类型的,全部是字节码形式存贮。
table 1:
在这里插入图片描述table 2:
在这里插入图片描述
table 2 可以看出 如果时间戳在原来的时间戳之前,则数据修改不成功,反之成功,得出结论:HBase中的cell 是按版本来存储的,每个cell都有各种版本的数据,所以当update一个cell中的数据的时候,其实是网cell的末尾追加一个版本的数据,而update之前的数据依然是存在的,这和insert一个新的数据没有任何的区别,每个family都可以设置每个cell要保留的版本数量,默认是3,由VERSIONS决定。 当使用get或者scan命令查看数据时候,如果没有指定版本数则默认是只取到每个cell最新的版本的数据,如果指定了VERSIONS则显示其指定的版本数量的数据。

五.Time Stamp

HBASE 中通过rowkey和columns确定的为一个存贮单元称为cell。每个 cell都保存 着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由HBASE(在数据写入时自动 )赋值,此时时间戳是精确到毫秒 的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版 本冲突,就必须自己生成具有唯一性的时间戳。每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE提供 了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段 时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值