Hbase rowkey 设计

  1. rowkey保证唯一
    rowkey类似于数据库中的主键,可以是一个字段或者多个字段拼接而成
    rowkey相同的记录被看作是同一条记录的不同版本,查询会返回最新版本。

  2. HBase查询方式分为两种:

  • 完整rowkey查询
  • 根据rowkey范围查找

select * from table where '123' < rowkey <'123456'
rowkey左侧的值需要已知。

如何实现复杂查询:

1.在建一张表作为索引表,实现双写
2使用filter,在服务端过滤掉不需要的数据
3 使用二级索引
4 如何实现倒序(新的数据排在前面,如:order by orderTime desc):
使用反向scan:scan.setReverse(true)
数据倒序:
[hostname][log-event][timestamp] -> [hostname][log-event][Long.MAX_Value -
timestamp]

3.散列

md5:
[userId][orderid] -> [md5(userId).subStr(0,4)][userId][orderid]
反转:
[userid][orderid] -> [reverse(userid)][orderid]
取模:
[timestamp][hostname][log-event] -> [bucket][timestamp][hostname][log-event]
long bucket = timestamp % num
增加随机数:
[userId][orderid] -> [userId][orderid][random(100)]

4.短rowkey

1.long或int代替String
2 使用编码代替名称

你可能感兴趣的:(Hbase rowkey 设计)