数据模型

最近更新时间:2025-12-24 12:03:43

我的收藏

HBase 模型

HBase 数据模型

HBase 的数据模型是一个多维映射,可以表示为:
(row_key, column family, column, version) → value
row_key:行的唯一标识,按字典序排序。
column family:列的集合,是物理存储的基本单位。每个列族包含数量不限的列,支持动态添加。同一个列可以包含多个数据版本,版本号通常由时间戳表示。
column:列族中的具体字段,由列族名和列限定符(Qualifier)组成。
version:数据的版本号,通常由时间戳表示。
value:实际存储的数据。
cell:数据存储的最小单元,由 (row_key, column family, column, version) 唯一标识。

HBase存储结构

Namespace:表的逻辑容器,用于组织和管理表。表属于某个 Namespace。
Table(表): HBase 中数据存储的基本单位。表按行键(Row Key)范围划分为多个 Region,每个 Region 负责存储一部分数据。
Region(区域):每个 Region 包含多个 Store,每个 Store 对应一个列族(Column Family)。
Store(存储单元):Store 是 Region 中存储数据的基本单位,与列族一一对应。每个 Store 维护独立的 LSM 结构,包括 MemStore 和 StoreFile。列族的数量通常有限,建议不超过 3-5 个。
MemStore:MemStore 是内存中的写入缓存,提供高效的写入性能。
StoreFile:StoreFile 是磁盘上的存储文件,基于 HFile 格式,支持高效的读取和压缩。
Block:Block 是 StoreFile 中的基本存储单元,支持高效的随机读取。
HBase 的存储结构可以表示为以下层次关系:
Table
├── Region (按行键范围划分)
│ ├── Store (每个列族对应一个 Store)
│ │ ├── MemStore (内存中的写入缓存)
│ │ └── StoreFile (磁盘上的存储文件)
│ │ └── Block (文件中的数据块)
│ └── ...
└── ...

TDSQL Boundless 数据模型

角色映射

HBase Master 类似 TDSQL Boundless 的 MC(管理节点)。
HBase Region Server 类似 TDSQL Boundless 的 TDStore 节点。

表映射规则

一对多映射一个 HBase Table 对应 TDSQL Boundless 的多张表。
列族映射每个 Column Family 对应一张 TDSQL Boundless 表,表名格式为 HBase表名_列族名
列映射:HBase 每列的一个具体版本对应 TDSQL Boundless 表中的一行数据。
主键设计:TDSQL Boundless 表的主键为 HBase Row Key + Column Qualifier + Version

映射示例

假设 HBase 表 ht1 包含两个列族 cf1 cf2,则 TDSQL Boundless 内部会创建两张表:ht1_cf1 ht1_cf2
HBase 数据示例
row key
column family
column
version
value
row1
cf1
a
100
v1
row1
cf1
b
100
v2
row1
cf1
b
110
v3
row1
cf2
c
120
v4
row2
cf1
d
120
v5
row2
cf2
d
130
v6
TDSQL Boundless 表数据
create table ht1_cf1 (
K varbinary(1024),
Q varbinary(256),
T bigint,
V MediumBlob NOT NULL,
primary key(K, Q, T)) HBase;
create table ht1_cf2 (
K varbinary(1024),
Q varbinary(256),
T bigint,
V MediumBlob NOT NULL,
primary key(K, Q, T)) HBase;
表 ht1_cf1
Primary Key (K + Q + T)
Value (V)
row1 + a + 100
v1
row1 + b + 100
v2
row1 + b + 110
v3
row2 + d + 120
v5
表 ht1_cf2
Primary Key (K + Q + T)
Value (V)
row1 + c + 120
v4
row2 + d + 130
v6