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事务性能。
➡️

继续阅读