Spanner是Google最近公开的新一代分布式数据库,它既具有NoSQL系统的可扩展性,也具有关系数据库的功能。例如,它支持类似SQL的查询语言、支持表连接、支持事务包括分布式事务。Spanner可以将一份数据复制到全球范围的多个数据中心,并保证数据的一致性。一套Spanner集群可以扩展到上百个数据中心、百万台服务器和上T条数据库记录的规模。目前,Google广告业务的后台F1已从MySQL分库分表 方案迁移到了Spanner上。
Spanner使用Paxos协议在多个副本间同步redo日志,从而保证数据在多个副本上是一致的。Google的工程师钟情于Paxos协议,Chubby、Megastore和Spanner等一系列产品都是在Paxos协议的基础上实现一致性的。
Spanner的设计反映了Google多年来在分布式存储系统领域上经验的积累和沉淀,它采用了Megastore的数据模型,Chubby的数据复制和一致性算法,而在数据的可扩展性上使用了BigTable中的技术。新颖之处在于,它使用高精度和可观测误差的本地时钟来判断分布式系统中事件的先后顺序。Spanner代表了分布式数据库领域的新趋势——NewSQL。