Hbase建模
转自: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建模的更多相关文章
- Hbase建模选择
日期 2017年3月17日 HBase建模记录 OLTP 应用场景: OLAP 应用场景: 语音分析系统的应用场景 基于HBase的建模考虑 1.话单为主来考虑hbase的rowkey的生成规则: 1 ...
- HBase案例:HBase 在人工智能场景的使用
近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用.人工智能的主要场景又包括图像能力.语音能力.自然语言处理能力和用户画像能力等等.这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储 ...
- HBase 在人工智能场景的使用
近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用.人工智能的主要场景又包括图像能力.语音能力.自然语言处理能力和用户画像能力等等.这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储 ...
- 大数据架构师NoSQL建模技术
从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...
- Hadoop第13周练习—HBase作业
1 :举例子说明HBase相对简单 1.1 1.2 回答 2 :设计HBase存储站内短信 2.1 2.2 回答 书面作业1:举例子说明HBase相对简单 请举出一例子,使 ...
- HBase数据模型剖析
出处:http://wuyudong.com/1987.html HBase 进行数据建模的方式和你熟悉的关系型数据库有些不同.关系型数据库围绕表.列和数据类型——数据的形态使用严格的规则.遵守这些严 ...
- HBase(六): HBase体系结构剖析(上)
HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它仅能通过主键( ...
- NoSQL 数据建模技术(转)
本文转载自:http://coolshell.cn/articles/7270.html ================================================ 全文译自墙外 ...
- 【HBase学习】Apache HBase项目简介
原创声明:转载请注明作者和原始链接 http://www.cnblogs.com/zhangningbo/p/4068957.html 英文原版:http://hbase.apache.o ...
随机推荐
- Putty设置删除
1. 开始→运行→cmd(进入字符界面) 2.切换目录到putty安装目录 3.执行以下清理命令 4.会跳出如下提示信息 点击[是(Y)]
- C++:借助tinyxml2读取XML文件
// XMLT01.cpp : 定义控制台应用程序的入口点.//#include "stdafx.h"#include <iostream>#include " ...
- AME_IExpense费用报表通过AME审批简单例子(案例)
2014-05-30 Created By BaoXinjian
- django1.8输出一些非HTML内容
在reportlab库中可以生成pdf文件 在https://www.reportlab.com/pypi/packages/ 下载需要的版本然后,在命令行里通过pip安装.pip instal ...
- mysql数据库以加索引方式提高性能
数据库查询速率慢的情况下可以给对应的表加上对应的索引,能够有效的提高查询效率,mysql数据库添加索引的SQL入下: ALTER TABLE `table_name` ADD INDEX index_ ...
- 配置新服务器 的一些 依赖库 php mysql nginx
利用CentOS Linux系统自带的yum命令安装.升级所需的程序库 LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel ...
- Qt解析xml
发现用 Qt 解析 xml 文件非常方便,下面是一个简单的解析 xml 文件的例子: #include <QtCore/QCoreApplication> #include <QDo ...
- Memcached安装使用和源代码调试
memcached官网:http://memcached.org/ 一.安装 下载 # wget http://www.memcached.org/files/memcached-1.4.25.tar ...
- php批量删除数据库下指定前缀的表
如何用php批量删除数据库下所有前缀为prefix_的表. 例子,统一删除前缀为“prefix_”的表. <?php //设置数据库连接信息.数据库服务器地址,数据库用户名,数据密码 mysql ...
- C#用正则表达式一键Unicode转UTF8(解决LitJson中文问题)
txt = Regex.Unescape(txt);