NewSQL
Spanner 和 F1 一起开创了 NewSQL 风格,它是这一流派当之无愧的开山鼻祖。
Spanserver 的核心工作有三部分:
- 基于 Paxos 协议的数据复制
- 基于 Tablet 的分片管理
- 基于 2PC 的事务一致性管理
在 Spanner 之后出现的 NewSQL 产品是 CockroachDB。最大的差别来自架构的整体风格。CockroachDB 采用了标准的 P2P 架构,只有 P2P 架构能够做到绝对的无中心,这意味着只要损坏的节点不超过总数一半,那么集群就仍然可以正常工作。
TiDB 也是对标 Spanner 的 NewSQL 数据库,因为开源的运行方式和良好的社区运营,它在工程师群体中拥有很高的人气。不同于 CockroachDB 的 P2P 架构,TiDB 采用了分层架构,由 TiDB、TiKV 和 PD 三类角色节点构成,TiKV 作为底层分布式键值存储,TiDB 作为 SQL 引擎,PD 承担元数据管理和全局时钟的职责。
YugabyteDB 是较晚推出的 NewSQL 数据库,在架构上和 CockroachDB 有很多相似之处,比如支持全球化部署,采用混合逻辑时钟(HLC),基于 Percolator 的事务模型,兼容 PostgreSQL 协议。为数不多的差异是,YugabyteDB 选择直接复用 PostgreSQL 的部分代码,所以它的语法兼容性更好。
OceanBase 大体上也是 P2P 架构,但会多出一个 Proxy 层。
PGXC
TBase 是最标准的 PGXC,采用 PostgreSQL 作为数据节点。
TDSQL 是腾讯公司内部最早的分布式数据库,它的数据节点选择了 MySQL。主推版本并没有实现全局时钟,这意味着它在数据一致性上是存在缺失的。
GoldenDB 几乎是国内银行业应用规模最大的分布式数据库,和 TDSQL 同样在数据节点上选择了 MySQL,但全局时钟节点的增加使它称为一个标准的 PGXC 架构。
VoltDB 的主要特点是完全基于内存的分布式数据库,使用存储过程封装业务逻辑,采用单线程方式简化了事务模型。
巨杉数据库(SquoiadDB),应用场景主要是归档数据和影像数据存储,而后从 3.0 版本开始逐步过渡到完整的 OLTP 分布式数据库。。它的架构其实跟 MySQL 架构非常相似,也分为 SQL 引擎和存储引擎上下两层。巨杉在上层直接复用了 MySQL 的 SQL 引擎,下层则使用自己的分布式存储引擎替换了 InnoDB。
此文章为6月Day28学习笔记,内容来源于极客时间《分布式数据库30讲》