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 |