Hbase(六)版本操作

HBase本身作为数据库,提供了完整的增删改查的功能。HBase基于HDFS来进行存储,HDFS的特点是允许一次写入多次读取,不允许修改而允许追加写入,但HBase提供了”改“功能,HBase如何实现”改“功能的?-HBase实际上并没有去修改写入的数据,而是在文件末尾去追加数据,HBase会对写入的每条数据自动添加一个时间戳,当用户获取数据的时候,HBase自动返回最新的数据,那么从用户角度来看,就是发生了数据的修改。

在HBase中,数据的每一个时间戳称之为一个版本

如果要锁定唯一的一条数据,那么需要通过行键+列族+列+时间戳这四个维度来锁定,这种结构称为一个cell(单元格)

HBase中的表在创建的时候,如果不指定,那么只对外提供一个版本的数据

如果建好表之后再修改可以获取的版本,那么已经添加的数据不起作用

即使表允许对外获取多个版本的数据,在获取的时候如果不指定,依然只获取一个版本的数据

举例,修改数据 

put 'userinfo','u1','basic:age',31                             
put 'userinfo','u1','basic:age',32                                                       
put 'userinfo','u1','basic:age',333                    
put 'userinfo','u1','basic:age',33
put 'userinfo','u1','basic:age',34
put 'userinfo','u1','basic:age',35
put 'userinfo','u1','basic:age',36

 84eae4b11329477a80cb829ee6a18971.png

当我执行

get 'userinfo','u1',{COLUMN => 'basic:age', VERSIONS => 3}

发现只有一个版本,因为要制定版本数需要在建表时指定

create 'userinfo2', {NAME => 'basic', VERSIONS => 3}, {NAME => 'info', VERSIONS => 4}

 指定每一个列族允许对外获取的版本数量

使用desc查看表

desc 'userinfo2'

或者

describe 'userinfo2'

描述表

 表信息如下9ae952be666b4cddad7bf34a2f533c58.png

 插入数据如下

805a39f868eb4cabbc076f7d6dfc123f.png

 得到指定版本的数据

 get 'userinfo2', 'u1', {COLUMN => 'basic:age', VERSIONS => 3}

可以看到获得了三个版本的数据

13a303034ddb4d9996d089fe1926b948.png

  get 'userinfo2', 'u1', {COLUMN => 'basic:age', VERSIONS => 4},仍然不起作用

 get 'userinfo2', 'u1', {COLUMN => 'info:height', VERSIONS => 4},获得info族 height 4个版本的数据

55de0edfa3eb47ac9ef07dc9efb23e7c.png

获取指定列的指定数量版本的数据
 

put 'userinfo2','u2','basic:age',70
put 'userinfo2','u2','basic:age',71
put 'userinfo2','u2','basic:age',72
put 'userinfo2','u2','basic:age',73
put 'userinfo2','u2','basic:age',74
put 'userinfo2','u2','basic:age',75

scan 'userinfo2', {COLUMNS => 'basic:age', VERSIONS => 3}

6987cce2f0a14b4cbe6f87ecb879a863.png 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值