Hbase笔记——RowKey设计
一)、什么情况下使用Hbase
1)传统数据库无法承载高速插入、大量读取。
2)Hbase适合海量,但同时也是简单的操作。
3)成熟的数据分析主题,查询模式确立不轻易改变。
二)、现实场景
1、电商浏览历史

问题:
传统数据库
数据量很大,事情会变得复杂。
Order by 消耗很多性能。
大量发生又无法分布式处理,顾客需要事实看到自己足迹,传统数据库无法使用缓存。
Hbase
面向时间查询。
基于行健查询速度快,新产生数据存于内存中的memstore,完全没有IO开销。
分布式化解负荷。
思路:
RoeKey:userid
列族和列:book:bookid
/如果用userid作为RowKey进行存储,会发生因Rowkey范围制动进行分配存储节点时会发生因范围过小而之分配到一个或几个节点上发挥不出分布式系统的性能,
****为了充分利用分布式可以进行reverse key,Hash技巧进行行健设计。
reverse key 将userid进行导置如 userid为 11,12,13,14,15,16,17,18,19,20,11,12。
进行reverse key后会变成 21,11,02,91,81,71,61,51,41,31,21,11.这样会随机画的分配到多个节点上。
Hash
将userid进行hash生成hash值进行userid映射。
2、浏览XXXX贴子的人还浏览了XXX贴
Hbase实现
两张表,u-t,t-u
U-t结构:RowKey为userid,列族和列thread:threadid
T-u结构:RowKey为userid,列族和列user:userid
查询:t-u threadid->userid 再从u-t userid->threadid, 获得笛卡尔积(会存在大量无用数据)在程序中去重和统计。
2、多条件查询
例子:Student(sno,cardid,sname,sex,age)有时以sno进行查询,有事以cardid进行查询。
问题:传统型数据库中,一张中可以有多个字段为查询条件,但Hbase中只可以对Rowkey进行条件查询,
解决方案:主表 RowKey:sno。列族为学生 列为 cardid,name,sex,age.
辅助表:RowKey:cardid 列族和列为 sno。
复合行键设计
例子;
Userid (用户id)、 Messageid(邮件id)、<email-message>(邮件内容)
有时需要查询某人的所有邮件(Rowkey为userid即可),有事又需要查询某人具体的邮件(userid和 Messageid为查询条件,如果邮件又1000+利用辅助表进行查询不是十分适合)利用复合行键 RowKey:userid-Messageid 对userid查询时,对RowKey进行分词,
好处:便于分布式,便于多条件伸缩查询。
Hbase笔记——RowKey设计的更多相关文章
- 大数据性能调优之HBase的RowKey设计
1 概述 HBase是一个分布式的.面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式. 既然HBase是采用KeyValue ...
- HBase之六:HBase的RowKey设计
数据模型 我们可以将一个表想象成一个大的映射关系,通过行健.行健+时间戳或行键+列(列族:列修饰符),就可以定位特定数据,Hbase是稀疏存储数据的,因此某些列可以是空白的, Row Key Time ...
- Hadoop生态圈-Hbase的rowKey设计原则
Hadoop生态圈-Hbase的rowKey设计原则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Hbase的rowkey设计
HBase的rowKey设计技巧 1.设计宗旨与目标 主要目的就是针对特定的业务模型,按照rowKey进行预分区设计,使之后面加入的数据能够尽可能的分散于不同的rowKey中.比如复合RowKey. ...
- HBase的RowKey设计原则
HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定 ...
- HBase的Rowkey设计(mark)
在HBase中细节上的设计,最最最重要的就是我该选取什么做Rowkey,Rowkey的选择,最直接的影响就是对你之后分析数据的影响了. Rowkey是不可分割的字节数,按照字典排序由低到高存储在表中. ...
- HBase的rowkey设计(含实例)
转自:http://www.aboutyun.com/thread-7119-1-1.html 对于任何系统的数据设计,我们都想提高性能,达到资源最大化利用,那么对于hbase我们产生如下问题: 1. ...
- hbase 利用rowkey设计进行多条件查询
摘要 本文主要内容是通过合理Hbase 行键(rowkey)设计实现快速的多条件查询,所采用的方法将所有要用于查询中的列经过一些处理后存储在rowkey中,查询时通过rowkey进行查询,提高rowk ...
- Hbase中rowkey设计原则
1.热点问题 在某一时间段,有大量的数据同时对一个region进行操作 2.原因 对rowkey的设计不合理 对rowkey的划分不合理 3.解决方式 rowkey是hbase的读写唯一标识 最大长度 ...
随机推荐
- checkbox 全选、全不选、反选 插件
jquery.checkbox.js: ;(function($,window,document,undefined){ $.fn.check=function(mode){ mode= mode | ...
- UVa 1402 Runtime Error 伸展树
Runtime Error 到现在连样例也跑不出来!!! 调试了一晚上快要死了…… 知道错在哪里但是不会改,代码先扔在这里吧.看来不能太依赖模板啊orz…… #include <cstdio&g ...
- java匿名对象
java学习面向对象之匿名内部类 之前我们提到“匿名”这个字眼的时候,是在学习new对象的时候,创建匿名对象的时候用到的,之所以说是匿名,是因为直接创建对象,而没有把这个对象赋值给某个值,才称之为匿名 ...
- TCP/IP 与OSI结构图
OSI参考模型各层的作用 物理层:在物理媒体上传输原始的数据比特流. 数据链路层:将数据分成一个个数据帧,以数据帧为单位传输.有应有答,遇错重发. 网络层:将数据分成一定长度的分组,将分组穿过通信子网 ...
- ASP.NET 数据绑定常用代码及其性能分析
用DataBinder.eval 绑定不必关心数据来源(Dataread或dataset).不必关心数据的类型eval会把这个数据对象转换为一个字符串.在底层绑定做了很多工作,使用了反射性能.正因为使 ...
- [LeetCode#267] Palindrome Permutation II
Problem: Given a string s, return all the palindromic permutations (without duplicates) of it. Retur ...
- Android开发时提示Your project contains error(s),please fix them be
有次在使用eclipse写好Android的代码,代码没有报错.然后 想在AVD中运行测试时,总是会弹出错误框,提示信息为: “Your project contains error(s),pl ...
- UVA 11374 Airport Express(最短路)
最短路. 把题目抽象一下:已知一张图,边上的权值表示长度.现在又有一些边,只能从其中选一条加入原图,使起点->终点的距离最小. 当加上一条边a->b,如果这条边更新了最短路,那么起点st- ...
- web页面性能测试
做Web开发,难免要对自己开发的页面进行性能检测,自己写工具检测,工作量太大.网上有几款比较成熟的检测工具,以下就介绍一下,与大家分享. 互联网现有工具 基于网页分析工具: 1. 阿里测 ...
- Java与WCF交互(一):Java客户端调用WCF服务
最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参 ...