代码拉取完成,页面将自动刷新
title: HBase 数据模型
date: 2023-03-16 15:58:10
categories:
- 数据库
- 列式数据库
- HBase
tags:
- 数据库
- 列式数据库
- 大数据
- HBase
permalink: /pages/c8cfeb/
HBase 是一个面向 列
的数据库管理系统,这里更为确切的而说,HBase 是一个面向 列族
的数据库管理系统。表 schema 仅定义列族,表具有多个列族,每个列族可以包含任意数量的列,列由多个单元格(cell)组成,单元格可以存储多个版本的数据,多个版本数据以时间戳进行区分。
Table
:Table 由 Row 和 Column 组成。Row
:Row 是列族(Column Family)的集合。Row Key
:Row Key
是用来检索记录的主键。
Row Key
是未解释的字节数组,所以理论上,任何数据都可以通过序列化表示成字符串或二进制,从而存为 HBase 的键值。Row Key
的字典序进行排序。这里需要注意以下两点:
Row Key
进行访问;Row Key
的 range 进行访问,即访问指定范围内的行;Column Family
:即列族。HBase 表中的每个列,都归属于某个列族。列族是表的 Schema 的一部分,所以列族需要在创建表时进行定义。
info:format
,info:geo
都属于 info
这个列族。Column Qualifier
:列限定符。可以理解为是具体的列名,例如 info:format
,info:geo
都属于 info
这个列族,它们的列限定符分别是 format
和 geo
。列族和列限定符之间始终以冒号分隔。需要注意的是列限定符不是表 Schema 的一部分,你可以在插入数据的过程中动态创建列。Column
:HBase 中的列由列族和列限定符组成,由 :
(冒号) 进行分隔,即一个完整的列名应该表述为 列族名 :列限定符
。Cell
:Cell
是行,列族和列限定符的组合,并包含值和时间戳。HBase 中通过 row key
和 column
确定的为一个存储单元称为 Cell
,你可以等价理解为关系型数据库中由指定行和指定列确定的一个单元格,但不同的是 HBase 中的一个单元格是由多个版本的数据组成的,每个版本的数据用时间戳进行区分。
Cell
由行和列的坐标交叉决定,是有版本的。默认情况下,版本号是自动分配的,为 HBase 插入 Cell
时的时间戳。Cell
的内容是未解释的字节数组。Timestamp
:Cell
的版本通过时间戳来索引,时间戳的类型是 64 位整型,时间戳可以由 HBase 在数据写入时自动赋值,也可以由客户显式指定。每个 Cell
中,不同版本的数据按照时间戳倒序排列,即最新的数据排在最前面。HBase 自动将表水平划分成区域(Region)。每个 Region 由表中 Row 的子集构成。每个 Region 由它所属的表的起始范围来表示(包含的第一行和最后一行)。初始时,一个表只有一个 Region,随着 Region 膨胀,当超过一定阈值时,会在某行的边界上分裂成两个大小基本相同的新 Region。在第一次划分之前,所有加载的数据都放在原始 Region 所在的那台服务器上。随着表变大,Region 个数也会逐渐增加。Region 是在 HBase 集群上分布数据的最小单位。
下图为 HBase 中一张表的:
图片引用自 : HBase 是列式存储数据库吗 https://www.iteblog.com/archives/2498.html
Hbase 的表具有以下特点:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。