TiDB:基于Raf的类似CRDB分布式数据库
💡
原文中文,约3300字,阅读约需8分钟。
📝
内容提要
TiDB是PingCap开发的开源混合事务和分析处理(HTAP)数据库,使用Go编写的TiDB服务器是查询/事务处理组件,无状态且不存储数据。底层键值存储TiKV使用Rust编写,使用RocksDB作为存储引擎。TiDB还添加了一个名为TiFlash的列式存储。TiDB兼容MySQL,具有水平扩展、强一致性和高可用性。它提供了快照隔离和读提交的事务语义。通过Raft学习器添加了列式存储,以提供OLAP功能。
🎯
关键要点
- TiDB是PingCap开发的开源混合事务和分析处理(HTAP)数据库。
- TiDB服务器使用Go编写,是无状态的查询/事务处理组件,不存储数据。
- 底层键值存储TiKV使用Rust编写,采用RocksDB作为存储引擎。
- TiDB添加了名为TiFlash的列式存储,提供OLAP功能。
- TiDB兼容MySQL,具备水平扩展、强一致性和高可用性。
- TiDB提供快照隔离和读提交的事务语义。
- CockroachDB(CRDB)是开源的,采用商业源代码许可证,三年后转为Apache 2.0许可证。
- CRDB使用多版本并发控制和混合逻辑时钟进行版本控制。
- CRDB的事务使用可序列化的隔离级别,确保跨多个范围的事务原子性。
- CRDB采用分布式死锁检测算法来处理写-写冲突。
- CRDB的提交协议与Spanner相似,但不依赖专门硬件进行时钟同步。
- TiDB与CRDB的主要区别在于TiDB兼容MySQL,缺少存储过程支持。
- TiDB提供无麻烦的自动分区/缩放功能,CRDB则不具备。
- TiDB为ACID事务提供快照隔离和可重复读语义,避免读锁定。
- TiDB通过Raft学习器添加列式存储,提升OLAP性能,同时不影响OLTP事务性能。
➡️