文档章节

Hbase 表设计

simpler
 simpler
发布于 2014/05/10 14:13
字数 680
阅读 283
收藏 1

 

HBase与RDBMS的区别在于:HBase的Cell(每条数据记录中的数据项)是具有版本描述的(versioned),行是有序的,列(qualifier)在所属列簇(Column families)存在的情况下,由客户端自由添加。以下的几个因素是Hbase Schema设计需要考虑的问题:

1、 Hbase中没有joins的概念

大表的结构可以使得不需要joins,而解决这一问题。

2、Row keys 设计

主键,在Region里按字母顺序来排序(byte数组存储)。124 >12345

写入要分散(不能使用递增的写入),如订单表: order_id做reverse逆排序后做rowkey,以便分布式存储,避免数据只保存在个别节点上。

201101

逆排序后

101102

201102

逆排序后

201102

多条件查询时,设为组合row key,左匹配

注:读取数据只能按row key(及其range)或scan全表扫描,确保查询高效

3、列族CF设计

尽量少,建议CF数量在1-2个。

设计Hbase schema的时候,要尽量只有一个column family。

flush和compaction触发的基本单位都是Region级别。当一个CF有大量的数据的时候会触发整个region里面的其他CF的memstore(其实这些memstore可能仅有少量的数据,还不需要flush的)也发生flush动作;

另外compaction触发的条件是当store file的个数(不是总的store file的大小)达到一定数量的时候会发生,而flush产生的大量store file通常会导致compaction,flush/compaction会发生很多IO相关的负载,这对Hbase的整体性能有很大影响,所以选择合适的column family个数很重要。

案例1、学生表和课程表,多对多

关系数据库中设计:

HBase中:

Student 表

Row Key

CF

CF

 

info

course

Student_id(reverse逆排序)

Info:name

Info:age

Info:sex

Course:c1

Course:c2

Course表

Row Key

CF

CF

 

info

Student

Course_id(reverse逆排序)

Info:title

Info:introduction

Info:teacher_id

Student:t1=student_id

Student:t2

案例2、person 和 身份证card表

关系数据库:

Person表

Pserson_id

Name

sex

Card

Card表

ID

City_id

HBase中:

Person表

Row Key

CF

 

info

Person_id

Info:name

Info:sex

Info:age

Info:card

……

案例2、订单order 和 订单明细表order_item,一对多

关系数据库中:

Order表

Order_Id

Order_mount

User_id

City_id

….

Order_item 表

Item_Id

Order_Id

Product_id

Unit_price

Order_num

…..

HBase 中:

方案一:

Order表

Row key

CF

 

info

Order_Id

Info: Order_mount

Info:user_id

Info:city_id

…..

Order_item 表

Row key

CF

 

info

Order_id-item_id

Info: Order_mount

Info:user_id

Info:city_id

Info:order_id

…..

方案二:

Order表

Row key

CF

CF

 

info

item

Order_Id

Info: Order_mount

Info:user_id

Info:city_id

Info:create_time

…..

Item:i1<item_id>

Item:i2

…..

Order_item 表

Row key

CF

 

info

item_id

Info: Order_mount

Info:user_id

Info:city_id

Info:order_id

…..

多条件查询时,需要增加一个index表

Row key为查询条件组合

Row key

CF

 

info

[create_time]_[order_id]_[city_id]

Info:order_id

© 著作权归作者所有

simpler
粉丝 25
博文 44
码字总数 40338
作品 0
成都
程序员
私信 提问
hbase 数据库简介安装与常用命令的使用

一:hbase 简介与架构功能 二:hbase 安装与配置 三:hbase 常见shell 命令操作 一:hbase 简介与架构功能 1.1 为什么要使用hbase 数据库 1.2 hbase 简介: 1.3 HBase与Hadoop的对比 1.4 HB...

flyfish225
2018/04/12
0
0
HBase基本知识介绍及典型案例分析

本文来自于2018年10月20日由中国 HBase 技术社区在武汉举办的中国 HBase Meetup 第六次线下交流会。 HBase基本知识介绍及典型案例分析 PPT 下载:http://hbase.group/slides/162 本次分享的内...

hbase小能手
2018/11/19
0
0
Hbase原理以及基本运行方式和优化

HBase是一个构建在HDFS上的分布式列存储系统; HBase是基于Google BigTable模型开发的,典型的key/value系统; HBase是Apache Hadoop生态系统中的重要一员,主要用于海量非结构化数据存储; ...

脸大的都是胖纸
2015/07/06
1K
0
(转载)Hbase -- Hbase数据统计应用中使用心得

数据统计的需求 互联网上对于数据的统计,一个重要的应用就是对网站站点数据的统计,例如CNZZ站长统计、百度统计、Google Analytics、量子恒道统计等等。 网站站点统计工具无外乎有以下一些功...

遵从本心
2013/08/16
280
0
一文读懂分布式数据库Hbase

一、 1、什么是Hbase。 是一个高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。 适合于存储非结构化数据,基于列的而不是基于行的模式 如图:Hadoop生态中HBase与其他部分的...

hblt-j
2018/07/26
43
0

没有更多内容

加载失败,请刷新页面

加载更多

Archiva 不小心删掉了管理员权限怎么办

Archiva 的界面和 UI 比较容易出问题。 在添加用户和为用户进行权限修改的时候,不小心连 admin 这个用户的权限都删掉了。 这个时候应该如何恢复 admin 这个用户的权限? 这个时候你可以尝试...

honeymoose
41分钟前
5
0
Java8新特性之空指针异常的克星Optional类

Java8新特性系列我们已经介绍了Stream、Lambda表达式、DateTime日期时间处理,最后以“NullPointerException” 的克星Optional类的讲解来收尾。 背景 作为开发人员每天与NullPointerExceptio...

程序新视界
53分钟前
4
0
OSChina 周四乱弹 —— 福布斯终身秃头奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享如是我闻的单曲《地藏经上卷》: 如是我闻#今日歌曲推荐# 《地藏经上卷》- 如是我闻 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
56分钟前
218
8
Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
6
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部