Spanner is a scalable, globally-distributed, temporal database that shards data across many Paxos instances. It features automatic failover, resharding and migration. Although not explicitly stated, it seems to be a replacement for Bigtable (chang:tocs:2012) and Megastore. One of the early clients was to support F1: an ads database.
Spanner consists of something close to a temporal relational database, layered on top of a temporal key-value store, made robust against failure using Paxos and relying on “TrueTime” to keep global datacenters synchronized and allow global serialization of all transactions.
“TrueTime” is a time service that provides time intervals that are guaranteed to be globally valid. This is implemented using a combination of GPS and atomic clocks. The atomic clocks are referred to as “Armageddon masters” and serve mostly as a backup in case GPS fails.
The paper puts a lot of emphasis on the importance of TrueTime
As a community, we should no longer depend on loosely synchronized clocks and weak time APIs in designing distributed algorithms.
Papers related to Spanner: Google’s globally distributed database
- Why Google stores billions of lines of code in a single repository [potvin:cacm:2016]