转自:http://blog.itpub.net/28912557/viewspace-1119865/

什么情况下使用Hbase?
1,成熟的数据分析主题,查询模式已经确定并且不易轻易改变。(主要还是查询模式要确定,否则,还是选用关系型数据库吧)
2,传统关系型数据库已经无法承受负荷,告诉插入,大量读取。
3,适合海量的,但同时也是简单的操作(例如key-value)

例子1:显示我的浏览历史,关系型数据库的困难:
1,简单的事情只要上了量就会变成无比复杂的事情
2,order by耗费很多性能
3,大量发生,担忧无法分布式处理
4,顾客需要实时看到自己的足迹,因此不能使用缓存技术

Hbase迎接挑战
1,天生就是面向时间戳查询
2,基于行健的查询异常快速,特别是最近的数据被放在memstore里,完全没有IO开销
3,分布式化解负荷

模式设计
行健:userid
列族和列:book:bookid
为了充分利用分布式,可以利用reverse key,hash等技巧改造行健

例子2:推荐系统
两个表,一个是u-t,另一个是t-u
u-t表结构:行健为userid,列族和列为thread:threadid
t-u表结构:行健为threadid,列族和列为user:userid
查询:现在t-u表从threadid->userid,再从u-t表中根据userid->threadid,最后在业务逻辑中实现去重、统计等功能。

辅助索引
例子:学生表(学号,身份证号,姓名,性别,系,年龄),有时在学号上查询,有时在身份证上查询
主表:行健为学号,列族为学生,下面的列式身份证号,姓名,性别,系,年龄
辅助(索引)表:行健为身份证号,列族和列为学号

复合行健设计
查询场景1:根据userid查询所有邮件
查询场景2:根据userid+messageid查询具体一封邮件
不同于辅助索引的“或”关系,这里是“且”的关系,解决方法就是设计复合索引:将userid+message作为复合索引
由于Hbase的行健按字典排序,且支持行健的范围查询,所以当需要查询userid的所有邮件时,只需查询行健范围为12345到123456的集合即可。
复合行健设计的优点:
1,行健比较随机,region有利于分散在各个节点,充分利用节点性能
2,便于多条件伸缩查询

Hbase建模的更多相关文章

  1. Hbase建模选择

    日期 2017年3月17日 HBase建模记录 OLTP 应用场景: OLAP 应用场景: 语音分析系统的应用场景 基于HBase的建模考虑 1.话单为主来考虑hbase的rowkey的生成规则: 1 ...

  2. HBase案例:HBase 在人工智能场景的使用

    近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用.人工智能的主要场景又包括图像能力.语音能力.自然语言处理能力和用户画像能力等等.这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储 ...

  3. HBase 在人工智能场景的使用

    近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用.人工智能的主要场景又包括图像能力.语音能力.自然语言处理能力和用户画像能力等等.这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储 ...

  4. 大数据架构师NoSQL建模技术

    从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...

  5. Hadoop第13周练习—HBase作业

    1    :举例子说明HBase相对简单 1.1 1.2     回答 2    :设计HBase存储站内短信 2.1 2.2     回答 书面作业1:举例子说明HBase相对简单 请举出一例子,使 ...

  6. HBase数据模型剖析

    出处:http://wuyudong.com/1987.html HBase 进行数据建模的方式和你熟悉的关系型数据库有些不同.关系型数据库围绕表.列和数据类型——数据的形态使用严格的规则.遵守这些严 ...

  7. HBase(六): HBase体系结构剖析(上)

    HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它仅能通过主键( ...

  8. NoSQL 数据建模技术(转)

    本文转载自:http://coolshell.cn/articles/7270.html ================================================ 全文译自墙外 ...

  9. 【HBase学习】Apache HBase项目简介

    原创声明:转载请注明作者和原始链接 http://www.cnblogs.com/zhangningbo/p/4068957.html       英文原版:http://hbase.apache.o ...

随机推荐

  1. C#继承IDisposable释放资源

    public class CDisposable : IDisposable { //析构函数,编译后变成 protected void Finalize(),GC会在回收对象前会调用调用该方法 ~C ...

  2. C++拷贝函数的小结,关于变量的作用域等---ShinePans

    #include <iostream> using namespace std; class circle { private: double r0; public: circle(dou ...

  3. PixelLink

    简介 论文题目:PixelLink: Detecting Scene Text via Instance Segmentation 论文地址:https://arxiv.org/abs/1801.01 ...

  4. caffe make 编译

    其实嘛,出现这个的原因在于,已经编译过啦,没有任何改动,那还烦劳编译啥呢. 那Linux又是如何知道已经编译过了呢? 那就要看makefile的规则啦.makefile的规则是所想产生的文件需要依赖很 ...

  5. PHP Client for Mysql Binlog

    PHP解析MySQL Binlog,依赖于mysql-replication-listener库 详见:https://github.com/bullsoft/php-binlog Install M ...

  6. javascript常用字符串函数和本地存储

    concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a.conca ...

  7. 创建Hive/hbase相关联的表异常

    hive> CREATE TABLE hperson(id string, name string,email string) STORED BY 'org.apache.hadoop.hive ...

  8. Ambari-stack介绍

    Ambari-stack总体介绍 Ambari-stack 表示hadoop某个发行版本号.比如HDP-1.0.0,在用ambari创建一个集群时,首先要通过调用restfulAPI设置stack版本 ...

  9. 基于Spring 4.0 的 Web Socket 聊天室/游戏服务端简单架构

    在现在很多业务场景(比如聊天室),又或者是手机端的一些online游戏,都需要做到实时通信,那怎么来进行双向通信呢,总不见得用曾经很破旧的ajax每隔10秒或者每隔20秒来请求吧,我的天呐(),这尼玛 ...

  10. linux进程 kipmi0

    top 发现负载很低,没有连接的时候,一个进程经常跳到最前面,用户是root, 命令是 kipmi0 ,  后来查询了一下,很可能 是外部设备要使用到的 IPMI , 智能型平台管理接口(Intell ...