文档章节

三张图帮助理解HBase数据模型

lmqian
 lmqian
发布于 2017/09/03 00:20
字数 1113
阅读 180
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

主要参考资料

Introduction to HBase Schema Design

HBase数据模型解析和基本的表设计分析

背景说明

受关系型数据库影响颇深,因此笔者在初识HBase的时候对于其数据模型认识比较模糊,大多数文章描述比较抽象,比较难以区分跟关系型数据库的差异,偶然发现一篇文章终于通过三张图直观地讲清了HBase数据模型,如获至宝。

文章中说:最简单最单纯的描述HBase数据模型的说法就是它是一个有行和列构成的数据表的形式。这看起来跟关系型数据库很相似,实际上,他们的相似也就仅限于此了。因此在了解HBase数据模型过程中,不妨先完全忘掉关系型数据库的模型。

术语解释
  • 表(Table)HBase用表来组织数据,也就是说数据是放在表里面的。
  • 行(Row)表通过行来存储数据,一行代表一个数据对象。每一行用row-key进行唯一标识,同时也使用row-key排序。
  • 列族(Column Family)每一行的数据可以被分成不同的组,这个组就称之为“列族”。一张表中每一行都有相同的列族,但是针对某一行,它在某些列族可以没有数据。
  • 列/列标识(Column Qualifier)行里面的每一项数据,可以按字段来理解。一个或多个列组成一个列族。一张表可以有一个或多个列族,一个列族包含多个列。不同的行可以有不同的列。
  • 单元(Cell)就是一项数据,某一行某列族某列就是一个单元,其数据就是单元数据。
  • 时间戳(Timestamp)单元数据有版本记录,默认使用时间戳来标记不同的版本。强调一下:版本记录是针对单元数据的,不是行。
第一张图

这是一张记录任务信息的表,每一行代表一个人的信息,有两个列族Personal和Office,其中Personal列族包含两个列Name和ResidencePhone,Office列族包含Phone和Address两个列。如"Jhon","415-212-5544","4455 Bird Ave"即为单元数据。

此图展示HBase的模型不够直观:不能清楚地展示单元数据的版本记录;没有展示出不同行可以有不同的列的重要特性。

image

第二张图

用多维Map展示HBase数据模型是一个更容易理解的方式,如下图:

  • 每一行的row-key映射为一组列族
  • 每一个列族映射为一组列标识
  • 每一个列标识映射为单元一组时间戳
  • 每一个时间戳映射为单元值

image

上图展示了第一张图中的第一行,下面构造另一行数据(如下),这也是一行合法的数据,注意跟上图的异同点:

  1. 都有两个列族。
  2. 两行数据的Personal列族包含的列标识不同
  3. 下面这行数据Office列族没有Address列。
{
    "00007":
    {
        "Personal":
        {
            "Name":
            {
                "Timestamp1":"Mary"
            }
            "Age":
            {
                "Timestamp1":"18"
                "Timestamp2":"20"
            }
        }
        "Office":
        {
            "Phone":
            {
                "Timestamp1":"028-12345678"
            }
        }
    }
}
第三张图

Key-Value结构也是理解HBase数据模型的一种方式,特别是从检索的角度来理解,如下图。

  • 以row-key为Key,得到Value为该行所有数据,包含所有列族所有列标识的数据。
  • 以row-key和列族为Key,得到Value为该行该列族下所有列标识的数据。
  • 以row-key,列族和列族下的列标识为Key,得到Value为对应行对应列族对应列标识的所有版本数据(实际上默认只返回最新版本)

image

对比关系型是数据库

理解完HBase数据模型,再来看它跟关系型数据库结构的在逻辑上的差异。

  1. 关系型数据库表结构是固定的;而HBase的表结构比较灵活,不同的行,可以有不同的列标识,使得它更容易扩展。
  2. 关系型数据库在更新数据时,是在原来的行上面修改数据;HBase数据库更新是实际上是在对应的单元插入数据,新增版本标识(时间戳)。
  3. 实际上HBase只提供字符串一种数据类型,而一般的关系型数据库有丰富的数据类型。

© 著作权归作者所有

lmqian
粉丝 1
博文 4
码字总数 2681
作品 0
成都
程序员
私信 提问
加载中

评论(0)

HBase原理深入解析(一)----HBase架构总览

前言:掌握Hbase的重要性不言而喻,掌握Hbase的设计原理更是重中之重。本文是对HBase原理进行讲解系列文章的开篇,本文尽量详细的从整体上介绍HBase的架构,并对每个部分的名词进行初步解释,...

小北觅
2018/08/26
0
0
阿里云HBase推出全新X-Pack服务 定义HBase云服务新标准

2018年12月13日,第八届中国云计算标准和应用大会在京召开,会上阿里云HBase宣布推出全新X-Pack服务,支持SQL、时序、时空、图、全文检索能力、复杂分析,从处理到分析全栈式数据库,客户开箱...

桐碧2018
2018/12/17
0
0
NOSQL之旅---HBase

最近因为项目原因,研究了Cassandra,Hbase等几个NoSQL数据库,最终决定采用HBase。在这里,我就向大家分享一下自己对HBase的理解。 在 说HBase之前,我想再唠叨几句。做互联网应用的哥们儿应...

烟花人
2013/03/28
571
4
选择阿里云数据库HBase版十大理由

根据Gartner的预计,全球非关系型数据库(NoSQL)在2020~2022预计保持在30%左右高速增长,远高于数据库整体市场。 阿里云数据库HBase版也是踏着技术发展的节奏,伴随着NoSQL和大数据技术的兴...

阿里云云栖社区
2019/04/24
0
0
HBase概念介绍及典型案例分析

本文来自于2018年10月20日由中国 HBase 技术社区在武汉举办的中国 HBase Meetup 第六次线下交流会。分享者为过往记忆。 目录 一、简单介绍一下 HBase 是什么 二、 HBase 是如何读写数据的 三...

kangna_卧龙先生
04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【视频】工业互联网在线交流现状、发展、怎么建和规划

PPT介绍目录: 工业互联网的现状 平台介绍 技术路线 人力资源 现实问题 成本中心 工业互联网的发展 两大推动引擎 用户需求的改变 片面与极端 由点到面,点面结合 突破点 现实路径 落脚点 工业...

osc_3ubrwgtm
48分钟前
51
0
单臂-Etrunk-三层交换-路由-DHCP中继-NAT-HTTP服务 实验题

单臂-Etrunk-三层交换-路由-DHCP中继-NAT-HTTP服务 实验题 实验环境 需求描述 pc1、pc2、pc3、pc4可以ping通 虚拟机可以打开网页 了解dhcp中继 了解网络地址转换技术NAT 了解access口跟trunk...

osc_h7zc4umy
49分钟前
24
0
医院防勒索病毒灾备解决方案

医院成勒索病毒重灾区 上述某妇幼保健院并非是个例。近年来,针对医院等医疗系统的网络安全风险一直处于活跃状态且呈现持续上升的态势。医院的业务系统及医学记录、病患资料、预约信息等大量...

osc_gh0ost1g
51分钟前
18
0
2招带你快速获取响应头与发送头

今天带大家用两招快速获取响应头以及发送头。 1、获取请求头 想要获取请求头,就需要会用抓包工具,目前比较普遍的就是fiddler。大家可以在百度搜索下载。首先我们打开fiddler 你会发现左侧这...

osc_3g4j2ghj
52分钟前
20
0
Python Django 数据库基础

对数据库的操作可以直接使用SQL语句,也可以使用图形界面工具。这些一般是DBA(数据库管理人员)做的。开发人员是使用代码链接数据库,对数据库进行操作。 下面进行Python Django框架ORM创建...

osc_itgved4p
54分钟前
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部