Spanner: Google’s Globally Distributed Database

  • Authors:
  • James C. Corbett;Jeffrey Dean;Michael Epstein;Andrew Fikes;Christopher Frost;J. J. 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;Dale Woodford

  • Affiliations:
  • Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.;Google, Inc.

  • Venue:
  • ACM Transactions on Computer Systems (TOCS)
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

Spanner is Google’s scalable, multiversion, globally distributed, and synchronously replicated database. It is the first system to distribute data at global scale and support externally-consistent distributed transactions. This article describes how Spanner is structured, its feature set, the rationale underlying various design decisions, and a novel time API that exposes clock uncertainty. This API and its implementation are critical to supporting external consistency and a variety of powerful features: nonblocking reads in the past, lock-free snapshot transactions, and atomic schema changes, across all of Spanner.