首先我们来看下HBase表特点
特点1:每行数据都必须指定一个行键,而且行键是唯一的,HBase本质上是一种Key Value结构存储系统。
特点2:HBase的列族数量在建表时固定,但是列可以后续增加。
特点3:HBase表可以设计的很稀疏,如果某个Cell没有数据,不会浪费磁盘空间。
特点4:HBase表按行键做排序,按字典序排序。
Rowkey设计
Rowkey是不可分割的字节数,按字典排序由低到高存储在表中,在设计HBase表时,Rowkey设计是最重要的事情,应该基于预期的访问模式来为Rowkey建模,Rowkey决定了访问HBase表时可以得到的性能,原因有两个:
1)Region基于Rowkey为一个区间的行提供服务,并且负责区间的每一行;
2)HFile在硬盘上存储有序的行。
这两个因素是相互关联的,当Region将内存中数据刷写为HFile时,这些行已经排过序,也会有序地写到硬盘上。Rowkey的有序特性和底层存储格式可以保证HBase表在设计Rowkey之后的良好性能。关系型数据库可以在多列上建立索引,但是HBase只能在Rowkey上建立索引,而设计Rowkey有各种技巧,而且可以针对不同访问模式进行优化,接下来我们就研究一下。
1.将Rowkey以字典顺序从大到小排序
原生HBase