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 总会回来改的