Hbase rowkey的设计 与 优化

本文详细探讨了在HBase中设计rowkey时需要考虑的六个关键因素,并提出了三点优化建议,包括解决多表操作的Join问题、利用复合rowkey进行数据排序以及散列rowkey的设计以优化性能。

1.在Hbase中,设计rowkey需要考虑到以下的因素:

1.表应该有多少个列族

2.列族里面存放着什么数据

3.每个列族应该有多少列

4.列名是什么

5.单元应该存放什么数据

6.每个单元最多有多少个时间版本


设计的时候还要注意3点

1:Join

Hbase是没有Join的,但是在实际上的业务需要中,是要使用到多表操作的。

使用大表的话,就是把所有的管理数据都导入一个表里面就可以解决了


2:Rowkey

使用复合rowkey的时候,用在查看用户的电影记录的时候,选择userid+playTime 作为复合rowkey, 原先rowkey存储是按从小到大排序,进行倒置之后,就可以查询用户的观看电影的记录从新到旧的排序了

(用二进制比用String更节省空间,但是二进制不方便排错与查看,使用String能更好的数据均匀,所有最好使用String作为rowkey)

Rowkey是按照由低到高排序存储在Hbase里面的。

Rowkey决定查询Hbase的性能,而且rowkey相当于KeyValue的Key值


3.Rowkey的优化

1.Rowkey是按照从大到小的排序的

2.Rowkey尽量使用散列的Rowkey设计

保持rowkey散列,就可以保证rowkey的所有数据都不是在一个region上,从而避免rowkey读写都在的负载都在一个region上面

        △散列rowkey,把rowkey进行散列(Hash)存储

△userid 进MD5 加密,取前6位作为rowkey的前缀


3.rowkey的长度尽量短

△时间尽量使用Long来表示

        △尽量使用编码压缩


//TODO 总会回来改的






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值