分布式数据库也有人称之为new SQL数据库,主要有两派:一个是以Google Spanner为代表,一个是以AWS Auraro为代表。
1、Spanner 的 Share nothing 架构
Spanner 是 shared nothing 的架构,内部维护了自动分片、分布式事务、弹性扩展能力,数据存储还是需要 sharding模式,plan 计算也需要涉及多台机器,也就涉及了分布式计算和分布式事务。
同类型的开源产品,有TiDB、CockroachDB、OceanBase等;这三个产品可以说目前话题量不相上下,TiDB属于国产PingCAP公司的、CockroachDB比TiDB早出来一年、OceanBase阿里团队的,2017年双11交出4200万/秒的处理能力。
2、Auraro 共享存储型架构
Auraro 是共享存储型架构,主要思想是计算和存储分离架构,使用共享存储技术,这样就提高了容灾和总容量的扩展。但是在协议层,只要是不涉及到存储的部分,本质还是单机实例的 MySQL,不涉及分布式存储和分布式计算,这样就和 MySQL 兼容性非常高。
同类型的产品,有国内阿里的PolarDB,只作为云产品提供服务,不开源。
3、比较
我觉得并没有谁比谁高级和落后,Share nothing 的架构在单集群更大规模下的使用场景我觉得会更好,而 Aurora 的架构更适合云环境(多租户 + 更好的兼容性)。
我一直认为大规模分布式系统本身是特别脆弱的,架构的先进与否并不重要,甚至某些情况下性能(延迟)都是可以放弃的。普适性、高质量的实现、完备且极端的测试在我看来更加重要。
4、以应用场景来区分
a、物联网方向:时序数据库产品,满足IoT数据的收集、存储和统计。时序数据库产品也是现在对内存数据库产品冲击最大的。例如:InfluxDB、Kudu、kdb、OpenTSDB;
b、交易关系方向:替代传统交易关系型数据库产品Oracle/DB2等满足不了海量吞吐、海量并发、海量交易、海量存储的在线交易业务场景。例如:蚂蚁金服Oceanbase、腾讯TDSQL、热璞HotDB、中兴GoldenDB、开源MyCAT、开源Cobar。
c、分析关系方向:解决结构化数据存储和数据分析的业务场景,例如:Greenplum、Vertical、Gbase8a等。不过这块收到KV分析型产品巨大的冲击;
d、KV分析方向:Hadoop、Spark是当下的基石,国内国外较多公司都是在其基础上再做二次研发,尤其是实现兼容SQL标准语法,已迎合业务场景和研发人员。
e、KV文档方向:解决在线文档类型的非结构化数据存储和数据处理,例如:MongoDB、巨衫SequoiaDB,不过也都在拼命地在兼容SQL标准语法。
f、HTAP:交易分析混合型分布式数据库产品,从技术原理的角度而言这是没有理论创新支撑的方向,只是我们技术人员内心美好的愿望,例如:国内TiDB、国外Spanner/F1(无人知晓到底长啥样,体验如何)。
每种路线都会有自己的特定算法、特定架构和产品特征,很难有一款产品能全部兼容且性能很棒。