基本概念
table:表,一个表有多行数据
row:行,一行包含唯一标识rowkey(类似主键)、多个列以及对应的值组成
column:列,列是由列簇和列共同构成的,由:进行分割如info:name,一个列簇下可以有多个列,是可以动态扩展的
timestamp:时间戳,在HBase下一条数据可以有多个版本,timestamp就作为版本号,版本越大就表示数据越新
cell:单元格,由rowkey、column、timestamp、type和value组成,可以唯一标识表中的一行数据
逻辑视图
- 如下图是HBase的一张逻辑视图,表中主要存储网页信息,示例表中主要包含两行数据com.cnn.www和com.example.www,每行数据有三个列簇anchor\contents\people,其中anchor列簇中有两列cnnsi.com以及my.look.ca
物理视图
- 在物理层面实际是按照列来存储的
多维稀疏排序Map
HBase本质是一个Map结构的数据库,是由一系列KV对组成的,但是HBase的K就比较特殊了
多维:HBase的key是一个复合键,由rowkey+column family+qualifier+type+timestamp组成,拿上面的逻辑视图举例,CNN值对应的KV如下
{"com.cnn.www","anchor","cnnsi.com","put","t9"} -> "CNN"
稀疏:从逻辑视图的rowkey为com.example.www就可以看出,该rowkey只有一个列有数据,其他的列都可以为空
排序:HBase的KV在同一个文件中都是排序的,按照KV中的K进行排序,先比较rowkey,rowkey小的排在前面;如果rowkey相同,那么在比较column,即column family:column,小的排在前面,如果column相同,在比较时间戳timestame,时间戳大的排在前面
