Hbase是三维有序存储的,通过rowkey、column key(column family和qualifier)、timestamp这三个维度可以对数据进行快速定位。
1、通过get方式,指定rowkey获取唯一一条记录。
2、通过scan方式,setStartRow和setEndRow参数进行范围匹配。
3、全表扫描。
rowkey特性
1. 字符串类型
HBase中rowkey存储是byte[],但是Java中建议设为String确保通用性,其他类型(如Long)数据类型的长度将限制rowkey 的长度
2. 有明确意义
3. 有序
4. 定长
有序的基础是定长,如果长度不一致,排序会发生变化。如20170101>2017040
rowkey设计原则
1. 唯一原则
2. 长度原则
rowkey是一个二进制码流,可以是任意字符串,最大长度64kb,以byte[]形式保存,一般保存成定长。
建议越短越好,不要超过16个字节,原因如下:
(1)数据的的持久化HFile中是按照KeyValue存储,如果rowkey过长会影响HFile的存储效率;
(2)MemStore将将缓存部分数据到内存,如果rowkey过长,内存的有效利用率就会降低,系统不能缓存更多的的数据,检索效率就会降低。
(3)目前系统一