《HBase企业应用开发实战》—— 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的数据模型,并不代表实际的数据存储也是这种形式。

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

3.1.2 物理模型

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

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所对应的值。

时间: 2024-09-20 04:09:49

《HBase企业应用开发实战》—— 3.1 两类数据模型的相关文章

《HBase企业应用开发实战》—— 3.4 数据模型的特殊属性

3.5 CAP原理与最终一致性 CAP原理是数据库软件的理论基础,它指出对于一个数据库系统来说,不可能同时满足以下三点:一致性(Consistency):所有节点在同一时间具有相同的数据.可用性(Availability):保证每个请求不管成功或者失败都有响应.分区容忍性(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作.分布式数据库系统也只能满足三项中的两项.而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的,因此只能在一

《HBase企业应用开发实战》—— 3.3 数据模型的操作

3.3 数据模型的操作 HBase对数据模型的4个主要操作包括Get.Put.Scan和Delete.通过HTable实例进行操作,用户可以完成向HBase存储和检索数据,以及删除无效数据之类的操作.所有修改数据的操作都保证行级别的原子性,多个客户端或线程对同一行的读写操作都不会影响该行数据的原子性,要么读到最新的数据,要么等待系统允许写入该行的修改.创建HTable实例是有代价的.每个实例都需要扫描.META.表,以检查该表是否存在,是否可用.此外还有一些其他操作,这些检查和操作导致实例调用非

《HBase企业应用开发实战》—— 3.6 本章小结

前 言 为什么要写这本书 大数据是继云计算.物联网之后IT行业又一次颠覆性的技术革命.大数据在互联网.军事.金融.通信和物理学等领域已经有不少落地案例,而Hadoop技术的快速发展也引起业界广泛关注.可以说,现在Hadoop是大数据处理的关键技术,也是迄今为止,最成熟.应用最广泛的技术. HBase原型是Google的BigTable论文,从基因上讲,HBase已经是Hadoop生态系统不可或缺的一部分.HBase是完全开源的,同时存在多个版本,并且版本升级非常快,其学习成本比较高,学习周期比较

《HBase企业应用开发实战》—— 1.2 HBase是什么

1.2 HBase是什么 HBase(Hadoop Database)是一个高可靠.高性能.面向列.可伸缩的分布式数据库,利用HBase技术可在廉价PC上搭建起大规模结构化存储集群.HBase参考Google的BigTable建模,使用类似GFS的HDFS作为底层文件存储系统,在其上可以运行MapReduce批量处理数据,使用ZooKeeper作为协同服务组件. HBase的整个项目使用Java语言实现,它是Apache基金会的Hadoop项目的一部分,既是模仿Google BigTable的开

《HBase企业应用开发实战》—— 第1章 认识HBase

第1章 认识HBase 本章将介绍大数据背景和HBase的基本概念,从大数据引申到NoSQL,并阐述HBase出现的契机.随后,将介绍HBase的概念.发展历史.发行版本和基本特性.其中,HBase的核心功能模块将作为一个小节单独重点介绍,最后通过介绍HBase的使用场景和经典案例,让读者朋友能够清晰地了解HBase可以做什么.作为NoSQL家庭的一员,HBase的出现弥补了Hadoop只能离线批处理的不足,同时能够存储小文件,提供海量数据的随机检索,并保证一定的性能.而这些特性也完善了整个Ha

《HBase企业应用开发实战》—— 1.5 HBase的使用场景和经典案例

1.5 HBase的使用场景和经典案例 了解软件产品的最好方法是如何使用,解决什么问题以及如何适用于大型应用架构.接下来的内容将详细介绍一些业界成功使用HBase的场景.但是,不要认为HBase只能解决下面的这些使用场景,因为它是一个正在发展和完善的技术框架,根据使用场景进行的创新正驱动着系统的发展.下面是对HBase适用场景的一些抽象概括,从需求角度进行抽象,涵盖存储量级.性能.扩展.数据格式和关联关系等方面.存储大量的数据(PB级数据)且能保证良好的随机访问性能.需要很高的写吞吐量,瞬间写入

《HBase企业应用开发实战》—— 2.1 先决条件

2.1 先决条件 在开始安装HBase之前需要做一些准备工作,这涉及操作系统设置.分布式模式Hadoop的部署及HBase自身的配置,因此要确保在运行HBase之前这些条件已经具备.以下将介绍HBase依赖的一些重要的中间件.系统服务或配置. 1.?运行时环境JDK 和Hadoop一样,HBase需要JDK1.6或者更高版本,推荐采用Oracle公司的版本,对于JDK1.6不要使用u18及以前的版本,因为这些版本Java的垃圾收集器会遇到"jvm crash"的问题(可以通过Goolg

《HBase企业应用开发实战》—— 2.2 HBase运行模式

2.2 HBase运行模式 HBase有两种运行模式:单机模式和分布式模式.在默认情况下HBase运行在单机模式下,如果要运行分布式模式的HBase,需要编辑安装目录下conf文件夹中相关的配置文件. 不管运行在什么模式下,都需要编辑安装包的conf目录下的hbase-env.sh文件来告知HBase Java的安装路径.在这个文件中还可以设置HBase的运行环境,诸如Heap Size和其他有关JVM的选项,还有日志文件保存目录.进程优先级等.最重要的是设置JAVA_HOME指向Java安装的

《HBase企业应用开发实战》—— 1.4 HBase的核心功能模块

1.4 HBase的核心功能模块 Hadoop框架包含两个核心组件:HDFS和MapReduce,其中HDFS是文件存储系统,负责数据存储:MapReduce是计算框架,负责数据计算.它们之间分工明确.低度耦合.相关关联.对于HBase数据库的核心组件,即核心功能模块共有4个,它们分别是:客户端Client.协调服务模块ZooKeeper.主节点HMaster和Region节点RegionServer,这些组件的描述和相互之间的关联关系如图1-3所示. 1.4.1 客户端Client 客户端Cl