HBase-rowkey设计优化


性能上考虑

一条数据的唯一标识就是 rowkey,而这行数据最终存储到哪一个分区里面,取决于分区(HBase-预分区),如果从性能上考虑 rowkey 优化,应该考虑的是让数据均匀的分布在所有的 region 中,防止数据的倾斜

设计方案:

  1. 使用随机数, hash
  2. 字符串反转 10001, 10002 反转成为 10001, 20001
  3. 拼接字符串 XX0001 -> 1000XX0001

业务上考虑

列族数目

一个列族和一个 Store 对于,如果经常需要跨列族查询,对应就是需要从多个 Store 中取数据,这样对性能开销挺大,建议创建表的时候不要太多列族,一般 2-3 个为主基本信息放到一个列族,扩展信息放到一个列族,如果还有另外的不常用的附件信息放到第三个列族。

行键设置

根据查询要求设置 key:

  • 手机号-日期:
    • 18229955555-20190919
    • 18229955555-20190920
  • 日期-姓名缩写-类别: 姓名缩写长度需要保持一致 (填充和截断)
    • 20150230-lisi-category
    • 20150230-zs__-category

文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录