James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, JJ Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson Hsieh, Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Christopher Taylor, Ruth Wang, and Dale Woodford
Currently, distributed systems do not support externally-consistent distributed transactions which leads to blocking in reading and difficulties of scaling at the global scale. In this paper, the authors proposed and built the first system, Spanner, that can distribute data at global scale, and support externally-consistent distributed transactions. Spanner supports multiple features including non-blocking reads, lock-free read-only transactions, and atomic schema changes. Spanner is Google’s new global data store with a semi-relational data model and standard query language. It uses Paxos and 2PC for operations and uses bounded real time for external consistent transactions.
- The authors present Spanner, which is the first system to distribute data at global scale and support externally-consistent distributed transactions.
- The authors spend lots of time in designing and implementing important database features on top of Google's distributed-systems infrastructure.
- Global clock time as version number. This is the core design that enables external consistency since it no longer requires the communication between data centers in order to calculate the latest version number.
- Truetime. Global clock time is hard to achieve without uncertainty. Truetime assigns a bound to the uncertainty so that the system can wait for a few miliseconds until the system runs over such uncertainty.
- It can hardly resolve the problem of hotspot read and write latency.
- It only supports simple SQL which limits the usage in real world.