hbase的rowkey设计


概述

HBase是一个K/V存储型NoSQL数据库,与一般k/v数据库不同的是,Hbase的valuerowkeycolumn family:qualifierTimeStamp这个三个维度快速定位。

HBase中rowkey可以唯一标识一行记录,在HBase查询的时候,有两种方式:

  • 通过get方式,指定rowkey获取唯一一条记录
  • 通过scan方式,设置startRow和stopRow参数进行范围匹配
  • 全表扫描,即直接扫描整张表中所有行记录

rowkey长度原则

rowkey是一个二进制码流,可以是任意字符串,最大长度64kb,实际应用中一般为10-100bytes,以byte[]形式保存,一般设计成定长。

建议越短越好,不要超过16个字节

rowkey散列原则

  • 尽量不要将rowkey设计成连续的值,如时间戳;
  • 为rowkey增加随机散列字段,使数据均衡分布在每个RegionServer;
  • 如果没有散列字段,所有的数据都会集中在一个RegionServer上,这样在数据检索的时候负载会集中在个别的RegionServer上,造成热点问题,会降低查询效率。

什么是热点?
热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作)。大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用.

rowkey唯一原则

必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的.

设计方法

  • Salting: 指将随机数据添加到行键的开头。
  • Hashing: 哈希会使同一行永远用一个前缀加盐。
  • 反转: 以手机号为rowkey,可以将手机号反转后的字符串作为rowkey
  • 时间戳反转: Long.Max_Value - timestamp
  • 尽量保持 ColumnFamily 名称尽可能小,最好是一个字符
  • 虽然详细的属性名称更易于阅读,但更喜欢使用较短的属性名称来存储在HBase中。

参考链接


文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
Xpath元素定位 Xpath元素定位
Xpath简介XPath是XML Path的简称,它是一种用来确定XML(可扩展标记语言)文档中某部分位置的语言。Xpath也是一种表达式语言,它基于XML的树状结构,可以用来在整个树中来寻找指定的节点,因此它的返回值可能是节点,节点集合,
2020-04-21
下一篇 
hbase数据版本 hbase数据版本
Hbase版本数量Hbase版本数量分为最大版本数量和最小版本数量: HBase最大版本数量:HBase 通过 HColumnDescriptor 为每个列族配置要存储的最大行数版本。最大版本的默认值为1。最大版本的数量可能需要根据应用程
2020-04-14
  目录