hbase表设计

1 hbase表设计思路
以横向扩展为设计方向的表结构(列族中有很多列),能保持多列的原子性,因为行级有事务控制
以纵向扩展为设计方向的表结构(把常用查询字段拼入rowkey),能快速查询数据,但损失原子性。实际使用中可以对rowkey用MD5加密,还可以统一长度,提高存取性能(怎么提高)
可以利用列名存储数据,64位操作系统内存一次存取8个字节,rowkey最好8个字节的整数倍,尽量不超过16个字节
列名尽量简洁长度一致,rowkey过长会极大影响HFile存储效率 内存占用过大,缓存效率降低和客户端查询返回网络流量
列族名尽量短,最好一个字符
-------------------------------------------------------------------------------------------------------------------------------
rowkey数据应该尽量随机,如:rowkey设计为时间_号码,会导致同一时间往同一个region写数据,造成写热点。
解决方案:
1 加盐,就是加随机前缀,前缀的量应该和region个数一致,如有12个节点24个region,那前缀应该是随机的01-24的值
2 hash值
3 反转,如手机号,号码头因为号段相同问题可能造成热点,把手机号码反转作为rowkey可以解决此问题
4 时间戳反转
如用户操作记录表,rowkey设计为[phone_no][long_max_value-timestamp]查询的时候直接用startrow=[phone_no+0000000000000] endrow=[phone_no+timestamp]
就会把这个号码所有操作记录按照从最早到最近返回
---------------------------------------------------------------------------------------------------------------------------------------
hbase对数据在内存排序后顺序存储并集中在很少region(每个region存储顺序的rowkey段),所以使用startRow endRow查询时效率很高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值