SQL+分布式 KV 的典型案例是哪些呢?

A :SQL + 分布式 KV 典型案例就是 Percolator 以及号称的模仿者;紧耦合指的是 SQL + KV 紧耦合,本质上这两个东西都属于计算层,做 SQL 和事务处理的。松耦合就是设计上把 SQL 和分布式 KV 分开。

Google Spanner 是紧耦合的。Spanner 是分布式数据库,F1 是 Google 广告团队做的一个构建在 Spanner 之上的 AP 类系统,不太考虑极致并发性能。Foundation DB 早期开源,不过后来很多信息都不公开了。

每个系统有不同的设计目标,很难去评价系统设计的优劣。以 Spanner 和 OceanBase 为例,Spanner 的设计目标首先是分布式和可扩展性,因为 Google 内部不会要求 Spanner 和 Oracle 对比单机性能,而 OceanBase 需要同时考虑单机性能,因为双十一和中国的数据库客户都会要求极致性能。设计目标决定了系统架构设计,我的看法是分布式系统发展的初期阶段只看分布式,后面看 SQL 功能,等到这些问题都解决之后就必须看性能了,技术是不断迭代进步的。无论是 2012 年的 Spanner 还是 2017 年的 Spanner,都没有考虑极致性能,Spanner单机性能和 Oracle 差距应该是比较大的,可以测试一下 Google 云上的 Spanner。我认为2013 的 F1 其实是一种临时态,TP 在 Spanner 内部做更合理,spanner后来确实也是这么做的。我觉得合理的分布式数据库架构是先通过 shared nothing 分片,每个分片上支持本地存储或者远程分布式文件系统,每个分片对标你说的 Aurora 或者 Oracle SAN 架构。