本文档介绍 TDSQL Boundless 的存储引擎 TDStore 架构,以及核心的三级元数据模型和 KV 编码机制。
前置阅读:架构简介 - 了解 TDSQL Boundless 的整体架构与三大核心组件 TDStore 存储引擎架构
TDStore 是 TDSQL Boundless 的核心存储引擎,它在 RocksDB 基础上构建了数据分片模块和分布式事务模块,下层增加了 Raft 共识协议模块,实现了高扩展、高可用、分布式事务、数据均衡调度、多副本强一致的分布式 KV 存储引擎。
整体架构
TDStore 存储引擎包含以下核心组件:
|
RocksDB | 底层 KV 存储 | LSM-Tree 结构、高压缩比 |
Multi-Raft | 多副本容灾 | 数据强一致、高可用 |
分片模块 | 数据分片管理 | 灵活调度、亲和性支持 |
事务模块 | 分布式事务 | 2PC 下沉、协商式提交 |
分层说明
维护分布式事务在各数据分片上的参与者上下文以及事务状态等信息
把每个数据分片以 Raft Group 方式在不同 TDStore 节点上创建多副本
低成本海量存储
TDStore 存储层基于 LSM-Tree + SSTable 结构存放和管理数据:
三级元数据模型
说明:
核心概念:TDSQL Boundless 通过三级元数据模型实现数据的精细化管理与智能调度。
面对分布式架构三大挑战:感知缺失、调度受限、规则固化,TDSQL Boundless 通过三级元数据模型破局:
DataObject(数据对象)
定义:表、索引、分区、自增值等逻辑层面的概念抽象。
层级结构:
L0级:Database(数据库)
L1级:Table(表),隶属于某个 Database
L2级:Index/Partition(索引或分区),隶属于某个 Table
作用:
示例:对象 ID 10010 可明确表示:数据库(id:1) 中分区表(id:1001) 的一级分区(id:1003) 下的一个二级索引。
Replication Group(复制组)
定义:基于 Raft 协议的物理存储单元,一主 N 备,保证数据一致性。
角色类型:
|
Leader | 主副本,处理所有读写请求 |
Follower | 从副本,同步数据并可参与选举 |
Learner | 学习者,仅同步数据不参与选举 |
Witness | 见证者,参与选举但不存储数据 |
特点:
Region(数据分片)
定义:一段连续范围的 Key Range,是数据物理存储的最小单元。
容量标准:
最大256MB
或最多10万行数据
规则:
每个 Region 承载某个 DataObject 的一部分实际数据
单个分片最多包含一个数据对象的数据
KV 编码与数据空间
编码规则
在 TDSQL Boundless 中,所有数据都编码为 Key-Value 形式。编码后的 Key 具有 mem-comparable(内存可比较)特性。
编码特性:
数据分片和复制组
在逻辑数据空间中,每个 Key 对应一个离散的点,但物理上每个 Key-Value 都需要存储空间。当数据量增大时,单个节点无法承载所有数据,因此数据被分割成多个分片(Region)。
重要特性:
同一张表的不同索引可能分布在不同的、不连续的 Region 中
通过复制组可以将关联 Region 调度到相同节点