hbaseRowkey设计

1.RowKey的设计需要充分考虑到业务的读写特点

  1. 当客户端需要频繁写一张表,随机的RowKey会获得更好的性能
  2. 当客户端需要频繁的读一张表,有序的rowkey则会获得更好的性能

2. Rowkey特性

  1. 唯一性:Rowkey必须能够唯一的识别一行数据
  2. 散列性:避免访问热点,降低查询效率
  3. 尽可能短:在不影响业务的前提下,建议越短越好

2.1 唯一性

必须设计上保证其唯一性,rowkey是按照字典顺序排序存储的,可充分利用这个特点,将经常一起读的数据存储到一起。

2.2 散列性

rowkey的第一个字段必须要做哈希处理,字段之间用ascii码的03分隔符分隔
如 rowkey=md5(第一个字段)+X03+第二个字段+X003+第三个字段

2.3 长度尽可能短

rowkey是一个二进制码流,最大长度64kb,实际应用中一般为10-100bytes
原因:
若一个rowkey长度100b,1000W行数据仅仅rowkey就要占用:
100*1000W=10亿个字节(将近1G)

3.RowKey设计案例

明细主表rowkey设计
rowkey:系统账号+交易日期+时间戳+账户交易序号+客户账号+账号序号+交易日志号
索引表rowkey设计
rowkey:系统账号+交易日期+时间戳(排序)+账户交易序号+客户账号+账号序号+交易日志号

你可能感兴趣的:(hbase)