← 返回首页
HBase逻辑存储模型之名词解释
发表时间:2023-10-25 04:42:17
HBase逻辑存储模型之名词解释

HBase逻辑存储模型之名词解释。

1.HBase逻辑存储模型之名词解释

详细解释:

2.逻辑存储模型

这个图的意思表示在HBase中有一张表,表里面有2个列族,c1和c2,目前这个表里面有1条数据,这条数据的RowKey就是:隔壁老王。其中列族c1里面只有1列,是age,列族c2里面有2列,car和house针对列族c1中的age列的值而言,有4个历史版本:T1,T2,T3,T5。

想要定位某一列的值,流程是这样的:HBase Table --> RowKey --> ColumnFamily --> Column --> TimeStamp

想要达到图中这个数据效果,需要对表执行以下这些步骤:

  1. 向HBase表中添加数据,指定RowKey 为隔壁老王,指定列族c1中的age列,值为27,此时这一列的值会对应的产生一个时间戳 T1,表示数据的产生时间
  2. 向HBase表中添加数据,指定RowKey 为隔壁老王,指定列族c1中的age列,值为28,此时这一列的值会对应的产生一个时间戳 T2
  3. 向HBase表中添加数据,指定RowKey 为隔壁老王,指定列族c1中的age列,值为29,此时这一列的值会对应的产生一个时间戳 T3
  4. 向HBase表中添加数据,指定RowKey 为隔壁老王,指定列族c2中的car列,值为有车,此时这一列的值会对应的产生一个时间戳 T4
  5. 向HBase表中添加数据,指定RowKey 为隔壁老王,指定列族c1中的age列,值为30,此时这一列的值会对应的产生一个时间戳 T5
  6. 向HBase表中添加数据,指定RowKey 为隔壁老王,指定列族c2中的house列,值为有房,此时这一列的值会对应的产生一个时间戳 T6
  7. 向HBase表中添加数据,指定RowKey 为隔壁老王,指定列族c2中的car列,值为没车(老王把车卖了),此时这一列的值会对应的产生一个时间戳 T7

经过这7步之后,数据就可以达到和图中一样的效果了。

HBase是 三维(三个维度) 有序存储的,是指Rowkey,Column key(Column Family和Column)和 TimeStamp 这三个维度是依照ASCII码表排序的。

先按Rowkey升序排序。Rowkey相同则按Column key升序排序。Rowkey、Column key相同则按Timestamp降序排序。如下图所示:

这个图里面表示对HBase的表t1进行全表扫描,在扫描的时候会返回同一个列的最多2个历史版本数据(VERSIONS=>2)。 图中执行scan 't1',{VERSION=>2}(全表扫描) 命令之后,最终返回了3条数据,Rowkey是:stu001,stu002,stu003。 针对第1条数据stu001,它里面一共有3列:age,name、math。列族有2个:info和level。age和name属于info列族,math属于level列族。 这里的info:age显示了两次是因为age字段存储了2个历史版本的数据。 最终从这个图里面是可以看出来HBase的三维有序存储特性的。 首先按照Rowkey(stu001,stu002,stu003)升序排序,相同Rowkey(stu001)内按照Column key(info:age,info:name,level:math)升序排序,针对相同的Column key(info:age),则按照数据对应的Timestamp(1800690940131,1800690940039)降序排序。