一直以来对rowkey的设计都比较迷茫,《hbase权威指南》倒是给出了个还算靠谱的例子。

下面这个例子有点儿像帖子表结构,它的rowkey设计是这样的,可以简单的理解为,什么人在什么时间发了什么信息,信息包括什么附件,它是用户为主线的一个设计。

<userId>-<date>-<messageId>-<attachmentId>

如果我们想查某个用户发的信息,我们可以设置scan的start rowkey 为该userId,end rowkey为userId+1即可。

当我们要查某个用户某天发了什么信息,我们可以使用<userId>-<date>来搜索该用户所有的帖子。

当我们要查某个具体的帖子的内容,rowkey过滤<userId>-<date>-<messageId>即可。

所以rowkey的设计是要看具体的应用的。

上面这个例子没有考虑热点的问题,实际上每个用户的帖子被访问的热度是不一样的,有些帖子被大量访问,有的无人问津。

那怎么办呢?有的书上写,在前面加0-n的随机数,random % 机器数 。但是这样子的话,以后你想取某个用户的userId的时候只能开多线程去访问了,因为你不能逆推出来它的rowkey。在和支付宝的工程狮聊了一下,他们是这样处理的取md5(userId)的前4位+reverse(userId)这个样子来处理userId,这样子的话,能解决热点的问题,也可以逆推出来rowkey。

最新文章

  1. a标签产生间隙,&lt;a&gt; 包裹 &lt;img&gt; 产生 4px 间隙
  2. 订阅Linux内核的邮件列表
  3. PISCES P4-vSwitch 安装以及一次失败的测试
  4. background-image中url找不到路径,背景图像无法显示
  5. javascript权威指南笔记--javascript语言核心(四)
  6. php获取图片宽高等属性
  7. 【Permutations】cpp
  8. 50道经典的JAVA编程题(汇总)
  9. HTML5峰会小记
  10. Javascript系列之js简介
  11. 洛谷 P1656 炸铁路
  12. P65
  13. 使用jsCompress压缩混淆js代码的一些常见的问题和技巧
  14. Spring——Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)
  15. 712. Minimum ASCII Delete Sum for Two Strings
  16. python3 图片文字识别
  17. 《DSP using MATLAB》Problem 7.1
  18. python(29)----时间模块
  19. .NetCore下使用Prometheus实现系统监控和警报 (一)介绍【译】
  20. win10更新后无法远程,报 credssp加密oracle修正

热门文章

  1. HBase中多Filter查询示例
  2. spring cloud 路由Zuul的高可用
  3. UVa 10697 - Firemen barracks
  4. [AWS vs Azure] 云计算里AWS和Azure的探究(2.1)
  5. docker使用示例
  6. 【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
  7. 使用flume将kafka数据sink到HBase【转】
  8. python 视频处理,提取视频相关帧,读取Excel
  9. C#学习笔记(14)——C# 使用IComparer自定义List类的排序方案
  10. 为什么说Thunderbird是最好的桌面RSS阅读器