Hbase的数据模型
row 行
column 列
row keys 行键
column keys 列键
column families 列族
Hbase的数据模型和Bigtable的数据模型是一致的,非常适用于数据密集型的系统.
简单的说,Hbase可以简化描述为一个Map<byte[], Map<byte[], Map<byte[], Map<Long, byte[]>>>>.
一个Map建立行键和它们的列族的映射关系;第二个Map建立列族和列键的映射关系;第三个Map建立列键和时间戳的映射关系;
最后一个Map将时间戳对应到一个值上.键通常情况下为string,时间戳是个long,值为字节数组.列键通常包含它的族名例如:family:key.
一个列族可以包含无限多的列键值.所以想获得一个值,使用者需要使用get命令指定3个键来获取:
row key+column key+timestamp -> value
行
Hbase的行键是一个字节数组,但是这个数组必须有一个字符串名称,这个名词是按照字典顺序建立的,相当于索引。例如:1到100这100个数是
按照如下次序存放:1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,...,9,91,92,93,94,95,96,97,98,99
现实例子:
为了能够更好地说明Hbase的数据模型,下面介绍一个简单的blog的数据结构设计.
假设一个blog具有如下特性:
1:blog实体,包括标题,副标题,日期,作者,类别(也就是标签),内容和评论.对于登录的用户,可以创建和更新.
2:用户,包含用户名,密码和昵称,可以登录和登出.
3:评论,包括标题,作者,内容.评论可以由匿名用户产生,这个时候,通过验证码来区分用户.
实体关系图(ERD)如下:
BLOGENTRY USER
PK:id_blogentry ----------> PK:id_user
FK1: name
title login
under_title password
id_user
date COMMENT
text <----------PK:id_comment
type FK1:id_blogentry
date
author
title
text
对应的Hbase架构:
Table
|
Row Key
|
Family
|
Attributs
|
blogtable
|
TTYYYYMMDDHHmmss
|
info:
|
Always contains the column keys author,title,under_title. Should be IN-MEMORY and have a 1 version
|
|
|
text:
|
No column key. 3 versions
|
|
|
comment_title:
|
Column keys are written like YYYMMDDHHmmss. Should be IN-MEMORY and have a 1 version
|
|
|
comment_author:
|
Same keys. 1 version
|
|
|
comment_text:
|
Same keys. 1 version
|
usertable
|
login_name
|
info:
|
Always contains the column keys password and name. 1 version
|
参考wiki:
http://wiki.apache.org/hadoop/Hbase/DataModel
分享到:
相关推荐
分布式存储系统:HBase:HBase数据模型与表设计.docx
列簇是HBase数据模型中的一个重要的概念,它可以看作是一组列的集合。每个列簇都有自己的物理存储配置,比如是否压缩、是否缓存到内存等。表中的每一行都包含相同的列簇集合,即使某些列簇对于某行没有列,相应的列...
HBase数据模型采用列式存储,每个列族下可以有无限多的列。在存储时,每个列族的列数据不会混合存储,而是以列族为单位顺序存储。这种设计对于读写大量稀疏数据特别有效,因为它只读取相关的列族数据。 4. 物理存储...
3. HBase数据模型 4. 常用shell操作 5. shell管理操作 6. Hbase Java编程 7. HBase高可用 8. HBase架构 第二章 陌陌海量存储案例 1. 案例介绍 2. 打招呼消息数据集介绍 3. 准备工作 4. 陌陌消息HBase表结构设计 5. ...
《HBase数据可视化系统构建详解》 在大数据领域,HBase作为一款分布式列式数据库,因其高并发、低延迟和大规模存储的特点,被广泛应用在实时数据处理和分析中。然而,对于非技术人员来说,直接操作HBase命令行进行...
本文来自于csdn,主要为对HBase简介,HBase数据模型及物理模型,HBase架构及工作原理。HBase是一个构建在HDFS之上的,分布式的、面向列的开源数据库HBase是GoogleBigTable的开源实现,它主要用于存储海量数据个人...
【HBase数据模型】 HBase的数据模型包括表、行和列。数据以表格的形式逻辑存储,每行都有一个可排序的主键(Row Key)和任意多的列。列由列族(Column Family)组织,列族内可以动态增加列。数据是非常稀疏的,因为...
HBase数据模型主要包括三部分: 1. Row Key:行键,Table的主键,Table中的记录按照Row Key排序 2. Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的version number 3. Column Family:列簇,Table...
3. **HBase数据模型** - **Key-Value存储**: 每个单元格都是键值对形式,键由行键和列族名+列限定符组成,值附带时间戳。 - **多版本**: 每个单元格可以存储多个版本的数据,通过时间戳区分。 4. **HBase与Hadoop...
1.2 HBase数据模型 HBase的数据模型逻辑上与关系型数据库类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map。 1.2.1 HBase逻辑结构 HBase的...
通过这份手册,用户可以更深入地了解 HBase 的工作原理,掌握在生产环境中如何高效地管理和操作 HBase 集群,以及如何针对不同的业务需求设计合适的 HBase 数据模型和架构。文档中提供的配置示例和最佳实践将对用户...
##### HBase数据模型 HBase的数据模型基于列族,具有以下特点: - **非结构化或半结构化数据**:支持稀疏二维数据存储,对于空字段不进行存储。 - **灵活的Schema**:无需预先定义所有列,可以随时动态增减列。 - **...
2. **HBase数据模型** - **列族和列**:列族是预定义的,存储相关的列集合。列在使用时动态创建,列族内的列可无限扩展。 - ** Region 分区**:HBase通过Region进行数据分区,Region会根据行键自动划分,随着数据...
#### 四、HBase数据模型 HBase的数据模型基于键值对,每个单元格通过一个四元组唯一标识: - 行键(Row Key):用于唯一标识一条记录。 - 列族(Column Family):数据被组织成列族,每个列族可以包含多个列。 - 列...
主要包括HBase数据模型介绍,虚拟机及HBase服务的启动停止步骤,以及HBase表的创建、查询、插入、删除等操作的具体语法和实例展示。此外,还提供了HBase Python 编程的基本方法和批量数据导入的操作步骤,结合思考题...
#### HBase数据模型 HBase采用了独特的数据模型设计,主要包括以下几个方面: 1. **Table & Column Family**:HBase中的表由一系列行键(Row Key)、列簇(Column Family)和版本号(Timestamp)组成。列簇是表的...