TiDB 是一款来自中国的开源解决方案,它给出了一种兼容 MySQL 的 HTAP 数据库,支持强一致性,并且分布式可扩展。TiDB 实现为分层架构,其中 TiDB 服务器作为无状态计算层出于顶层。底层存储层实现为支持事务的键值数据库,称为 TiKV。TiKV 的设计受到了 Google Spanner 的启发。
TiDB 层实现监听 SQL 查询、解析查询并创建执行计划。查询进而将按需切分为各个子查询,并发送给相应的 TiKV 存储。鉴于 TiDB 层是无状态的,因此该层易于实现扩展。
TiKV 层实现了底层存储层,它是一种使用 RocksDB 作为物理存储的键值数据库。TikV 按区域组织数据,各个区域将被存储和复制。为基于复制模式实现持久性和高可用性,TiKV 使用 Raft 共识算法提供强一致性。TiKV 的分布本质提供了对分布式查询的支持。
这一计算层与存储层的分离解耦架构,使得 TiDB 可同时提供对 OLTP 和 OLAP 强大支持。鉴于 TiDB 同时支持处理 OLTP 和基本 OLAP 负载, TiSpark 作为一种在 TiKV 上直接运行 Spark SQL 的 OLAP 解决方案,可轻易实现基于 TiDB/TiKV 架构的运行。TiDB 本身就具有代价优化器和分布式执行器,可处理 80% 的即席 OLAP 查询。
TiSpark 针对复杂 OLAP 查询做了一些优化。和 TiDB 层类似,TiSpark 也是一种无状态计算层,并与 TiKV 层交互。TiSpark 在设计上就是通过与 Spark SQL 的交互去处理复杂 OLAP 查询。
因此,同时部署 TiDB 和 TiSpark 可消除 ETL 的代价,给出一种同时支持分析和事务需求的统一解决方案。
要了解 TiDB 及其架构的更多信息,可查看我们近期对 Kevin Xu 关于 TiDB 的访谈。要进一步了解支持 TiKV/TiDB 的数据物理存储 RockDB,可查看我们对 Dhruba Borthakur 和 Igor Canadi 关于 RocksDB 的访谈。要深入了解 TiKV,可查看我们对中国开源项目的报道。