什么是TiDB
TiDB 是一个开源的分布式关系型数据库,由 PingCAP 公司主导开发。它的设计目标是提供水平可扩展的高性能分布式事务数据库,同时保持与 MySQL 协议的兼容性和事务的 ACID(原子性、一致性、隔离性和持久性)特性。
TiDB 的主要特点包括:
- 水平扩展:TiDB 支持无缝的水平扩展,能够通过增加新节点来应对增长的数据量和事务负载。
- 分布式事务:TiDB 提供完全的分布式事务支持,采用了基于 Google Percolator 模型的事务算法,可以提供跨节点的一致性。
- 兼容 MySQL:TiDB 在 SQL 层面兼容 MySQL,大部分 MySQL 的应用无需修改代码即可迁移到 TiDB。
- 实时分析:TiDB 通过 TiSpark 组件提供 HTAP(Hybrid Transactional/Analytical Processing)能力,即可以同时处理在线事务处理(OLTP)和在线分析处理(OLAP)。
- 高可用性:TiDB 的数据自动复制到多个副本,通过多副本来保证数据的高可用性和容灾能力。
- 云原生:TiDB 支持在云平台上运行,如 AWS、Google Cloud Platform 和 Kubernetes 等。
TiDB结构
TiDB 主要由以下几个核心组件构成:
- TiDB Server:负责接收 SQL 客户端的请求,执行 SQL 解析和优化,最终生成分布式执行计划,并将这些请求转发到 TiKV 或 TiFlash。TiDB Server 是无状态的,可以水平扩展。
- PD(Placement Driver)Server:负责存储集群的元信息,存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。
- TiKV Server:负责存储数据,是分布式事务的关键组件。TiKV 是一个分布式 Key-Value 存储,数据自动分散在多个节点上。存储数据的基本单位是
Region
,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 的 API 在 KV 键值对层面提供对分布式事务的原生支持,默认提供了 SI (Snapshot Isolation) 的隔离级别,这也是 TiDB 在 SQL 层面支持分布式事务的核心。 - TiFlash:是 TiDB 生态系统中的列存引擎,用于加速分析查询,实现真正的 HTAP 能力。
TiDB 适用于需要高可用性、强一致性和高并发支持的场景,如金融行业、电商平台、大数据分析等。它结合了传统 RDBMS 和 NoSQL 数据库的优点,尤其适合那些需要大规模数据存储和计算的云原生应用。