《HBase企业应用开发实战》—— 3.1 两类数据模型

简介:

本节书摘来自华章出版社《HBase企业应用开发实战》一 书中的第3章,第3.1节,作者:马延辉 孟鑫 李立松 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 两类数据模型

本节将从逻辑模型和物理模型两方面来了解HBase的数据模型,表是HBase表达数据的逻辑组织方式,而基于列的存储则是数据在底层的组织方式。本节将首先学习关于逻辑模型的一些重要概念及基本操作以及HBase实际存储数据的一些特点,为后面的学习打好基础。

3.1.1 逻辑模型

HBase是一个类似GoogleBigTable的开源分布式数据库,大部分特性和BigTable相同,可以理解为是一个稀疏的、长期存储的、多维度的和排序的映射表,表中的每一行可以有不同的列。与关系型数据库不同,关系型数据库要求表在被创建时明确定义列以及列的数据类型,而HBase的同一个表的记录可以有不一样的列。
HBase中最基本的单位是列,一列或者多列构成了行,行有行键(Rowkey),每一行的行键都是唯一的,相同行键的插入操作被认为是对同一行的操作,也就是说如果做了两次写入操作,而行键是同一个,那么后面的操作可以认为是对该行的某些列的更新操作。
HBase中的一个表有若干行,每行有很多列,列中的值有多个版本,每个版本的值称为一个单元格,每个单元存储的是不同时刻该列的值。图3-1是Google的BigTable论文中的Webtable表的逻辑模型,由于HBase被认为是BigTable的开源实现,所以该图对HBase完全适用,表名为Webtable,包含两个列族:contents和anchor。在该实例中,列族anchor有两个列(anchor:cssnsi.com和anchor:my.look.ca),列族contents仅有一个列contents:html。
其中,列名是由列族前缀和修饰符(Qualifier)连接而成,分隔符是英文冒号。例如,列anchor:my.look.ca是列族anchor前缀和修饰符my.look.ca组成。所以在提到HBase的列的时候应该用“列族前缀+修饰符”的方式才准确。
如图3-1所示,在表Webtable的逻辑模型中,所有的列族和列都紧凑在一起,其中并没有附带物理存储方式的概念。该逻辑视图是为了使读者更好地、更直观地理解HBase的数据模型,并不代表实际的数据存储也是这种形式。
screenshot

如果熟悉Java语言里的Map数据结构,可以把HBase理解为这种结构的无限嵌套版本。

3.1.2 物理模型

虽然在逻辑模型中,表可以被看成一个稀疏的行的集合。但在物理上,表是按列分开存储的。HBase的列是按列族分组的,HFile是面向列的,存放行的不同列的物理文件,一个列族的数据存放在多个HFile中,最重要的是一个列族的数据会被同一个Region管理,物理上存放在一起。Region是管理HFile的一种机制,这个将会在后面讨论。这种物理上存储的不同可以从下面的物理视图中直观看出,如表3-1和表3-2所示。表3-1中展示了列族anchor的集中存储。表3-2中展示了列族contents的集中存储。
screenshot

HBase的表被设计成可以不禁用表而随时加入新的列,因此可以将新列直接加入一个列族而无须声明。
在上面的逻辑模型中,空白Cell在物理上是不存储的,因此,若一个请求为要获取t8时间的contents:html,它的结果就是空。相类似,若请求为获取t9时间的anchor:my.look.ca,结果也是空。但是,如果不指明时间,将会返回最新时间的行,每个最新的都会返回。例如,假设请求获取行键为"com.cnn.www"的各列的值,如果没有指明时间戳,返回的结果是t6下的contents:html、t9下的anchor:cnnsi.com和t8下的anchor:my.look.ca所对应的值。

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
84 0
|
3月前
|
存储 NoSQL Java
HBase的数据模型是什么样的?
HBase的数据模型是什么样的?
30 0
|
9月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Cell
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。它是一个分布式数据库的NoSQL数据库,主要用于存储和处理海量数据。HBase的核心特性包括高可用性、高性能和高伸缩性。在阿里云开发者社区中,我们将介绍HBase的基本概念和架构,以及它的基本数据模型Cell。
547 0
|
9月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Row
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
210 0
|
5月前
|
存储 NoSQL 分布式数据库
94 hbase数据模型
94 hbase数据模型
25 0
|
9月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的TimeStamp
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
358 0
|
9月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Table
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
|
9月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Column
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
230 0
|
9月前
|
存储 分布式数据库 Hbase
分布式数据库HBase的基本概念和架构之基本数据模型的NameSpace
在分布式数据库 HBase 中,数据的存储和管理是基于列的分布式存储。
55 0
|
存储 缓存 NoSQL
HBase 数据模型
HBase 数据模型
134 0