Hbase 学习(七) rowkey设计
2024-10-14 19:42:28
一直以来对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。
最新文章
- a标签产生间隙,<;a>; 包裹 <;img>; 产生 4px 间隙
- 订阅Linux内核的邮件列表
- PISCES P4-vSwitch 安装以及一次失败的测试
- background-image中url找不到路径,背景图像无法显示
- javascript权威指南笔记--javascript语言核心(四)
- php获取图片宽高等属性
- 【Permutations】cpp
- 50道经典的JAVA编程题(汇总)
- HTML5峰会小记
- Javascript系列之js简介
- 洛谷 P1656 炸铁路
- P65
- 使用jsCompress压缩混淆js代码的一些常见的问题和技巧
- Spring——Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)
- 712. Minimum ASCII Delete Sum for Two Strings
- python3 图片文字识别
- 《DSP using MATLAB》Problem 7.1
- python(29)----时间模块
- .NetCore下使用Prometheus实现系统监控和警报 (一)介绍【译】
- win10更新后无法远程,报 credssp加密oracle修正
热门文章
- HBase中多Filter查询示例
- spring cloud 路由Zuul的高可用
- UVa 10697 - Firemen barracks
- [AWS vs Azure] 云计算里AWS和Azure的探究(2.1)
- docker使用示例
- 【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
- 使用flume将kafka数据sink到HBase【转】
- python 视频处理,提取视频相关帧,读取Excel
- C#学习笔记(14)——C# 使用IComparer自定义List类的排序方案
- 为什么说Thunderbird是最好的桌面RSS阅读器