基本概念

  1. table:表,一个表有多行数据

  2. row:行,一行包含唯一标识rowkey(类似主键)、多个列以及对应的值组成

  3. column:列,列是由列簇和列共同构成的,由:进行分割如info:name,一个列簇下可以有多个列,是可以动态扩展的

  4. timestamp:时间戳,在HBase下一条数据可以有多个版本,timestamp就作为版本号,版本越大就表示数据越新

  5. cell:单元格,由rowkey、column、timestamp、type和value组成,可以唯一标识表中的一行数据

image.png

逻辑视图

  1. 如下图是HBase的一张逻辑视图,表中主要存储网页信息,示例表中主要包含两行数据com.cnn.www和com.example.www,每行数据有三个列簇anchor\contents\people,其中anchor列簇中有两列cnnsi.com以及my.look.ca

image.png

物理视图

  1. 在物理层面实际是按照列来存储的

image.png

多维稀疏排序Map

  1. HBase本质是一个Map结构的数据库,是由一系列KV对组成的,但是HBase的K就比较特殊了

  2. 多维:HBase的key是一个复合键,由rowkey+column family+qualifier+type+timestamp组成,拿上面的逻辑视图举例,CNN值对应的KV如下

    1. {"com.cnn.www","anchor","cnnsi.com","put","t9"} -> "CNN"
  3. 稀疏:从逻辑视图的rowkey为com.example.www就可以看出,该rowkey只有一个列有数据,其他的列都可以为空

  4. 排序:HBase的KV在同一个文件中都是排序的,按照KV中的K进行排序,先比较rowkey,rowkey小的排在前面;如果rowkey相同,那么在比较column,即column family:column,小的排在前面,如果column相同,在比较时间戳timestame,时间戳大的排在前面