HBase-行键设计

1.用户可以指定行键检索一行数据,可有效减少查询时间。

2.设定列族可减少查询的存储文件。

3.存储文件(store file)中每个单元格都保存了时间戳,
  所以用户如果查询近一两个小时修改过的单元格,
  HBase会跳过例如只包含4小时前数据的存储文件。

4.列限定符(column qualifier)查询,查询时指定特定的咧或定义过滤器包含或排除某个列。
  由于系统需检查每个传到过滤器的KeyValue,所以性能只有小幅提升。

5.值筛选,最广泛,用户只能使用过滤器在服务器端筛选值。
  系统需检查每个单元格,也只能小幅提升性能。

在这里插入图片描述

6.HBase高表与宽表
  高表指多行少列,宽表指少行多列;
  高表性能更好;因为按照行键查询更快,并且HBase只能按行分片。
  
7.但问题:若数据一行很长,一个HFile存不下
  解决:分开存成多行。

宽表:行键=userId
在这里插入图片描述
高表:行键=userId+messageId
在这里插入图片描述

正题:

8.实际使用中,时间序列的数据很多,例如传感器、日志、股票交易系统的数
  据的行键都是按时间的,这样HBase存储的时候就会有大量数据涌入一个
  Region,而已个Region只能由一个RegionServer管理,读写过分集中与一台服
  务器上,不利于负载均衡。
9.解决:对罕见进行自定义处理,将数据分散到不同的Region上去。

10.方式:

1.加盐(salting)
先用时间戳的hash值余RegionServer的数量
得到一个前缀加到行键前。
在这里插入图片描述

2.随机化行键
将行键利用MD5散列函数随机化,将数据分散到不同region上。
缺点:不能行键按时间顺序扫描。
适用场景:每次只需读一行的数据。
在这里插入图片描述

3.字段交换/提升权重
利用组合行键的方式
调整行键中多个字段的前后顺序;
或提取列键中的值放到行键的前端。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值