博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HBase行键设计
阅读量:7082 次
发布时间:2019-06-28

本文共 906 字,大约阅读时间需要 3 分钟。

3分钟了解HBase行键设计

HBase行键需要满足如下原则:

唯一原则:行键对应关系型数据库的唯一键,系统设计之初必须考虑有足够的唯一行键去支持业务的数据量。

长度原则:长度适中,一般从几十到一百字节,建议使用定长,方便从行键提取所需数据,而无须查询出数据内容以节省网络开销。

散列原则:避免递增,否则读写负载都会集中在某个热点分区,降低性能,甚至引起分区服务器过载而宕机。

HBase行键设计技巧

由于HBase不支持二级索引,所以HBase行键作为唯一的也是最有效的索引,需要尽可能多的糅合各种查询条件以提高查询效率,常见的设计技巧有:

反转补齐:对于用来存储实体数据的表,通常将实体ID(如用户ID)反转补齐位数后作为行键的开始,这样首先满足了对该实体数据查询的需求,同时由于反转了实体ID,所以最近产生的实体以及其数据不会落到同一个Region,避免了热点区间的产生。

使用GeoHash:GeoHash算法可以用来将多维数据映射为一维字符串,尤其是基于空间的经纬度数据,空间上靠近的经纬度点映射后的一维字符串在字典顺序上也靠近(当然会有特殊的临界问题)。

OpenTSDB: OpenTSDB是基于HBase的一个存储时序数据的数据库应用,通常用来存储一些系统的监控数据或者系统日志,OpenTSDB的行键设计类似对HBase的行键做了一个二次索引,格式为:

UID___matric___+TimeBase+UID___tag1key___+UID___tag1value___+UID___tag2key___+UID___tag2value___+UID___tagNkey___+UID___tagNvalue___

其行键设计会将所有的监控指标或者需要查询的业务标签均映射到一个等长的UID,然后将监控指标的UID作为行键的开始,这样设计有几个好处:

  1. 因为通常查询监控数据的时候都会选定一个监控指标(如CPU、内存等),这样相同监控指标的数据会相邻存储,提供查询效率。
  2. 将监控指标映射为等长的UID可以减少行键的长度与重复度,减少存储空间,同时可以方便的从行键根据偏移量反向推演出监控指标。

转载地址:http://lvvml.baihongyu.com/

你可能感兴趣的文章
(赛码"BestCoder"杯中国大学生程序设计冠军赛)GCD
查看>>
软工第二周随笔
查看>>
QT+VS开发环境的安装和可能出现的build错误(转)
查看>>
ARC中strong 和weak知识总结
查看>>
宏定义 注意
查看>>
680. Valid Palindrome II
查看>>
Uva 537 - Artificial Intelligence?
查看>>
在O(1)时间删除链表结点
查看>>
Android上实现MVP模式的途径
查看>>
CALL transaction 的用法-传内表
查看>>
System program tools
查看>>
mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
查看>>
CSS 渐变动画
查看>>
设计模式六大原则
查看>>
Robot Framework - 4 - 创建和扩展测试库的示例
查看>>
打印小票,使用的是BarcodeLib
查看>>
牛客练习赛37题解
查看>>
mysql数据库设置外键,更新与删除选项
查看>>
Charles移动端抓包工具使用
查看>>
Centos6添加源
查看>>