Skip to content
Google Spanner: The Globally Consistent Database That Should Not Exist 3 min

Google Spanner: The Globally Consistent Database That Should Not Exist

ScaleDojo
ScaleDojo
•
May 11, 2026
•
3 min read
•641 words
Google Spanner: The Globally Consistent Database That Should Not Exist

The Database That Broke the CAP Theorem

In 2012, Google published a paper describing Spanner - a globally distributed database that provides strong consistency across continents while maintaining 99.999% availability. The CAP theorem says this should be impossible. Spanner achieves it by solving the hardest problem in distributed computing: agreeing on what time it is. Today, Spanner powers Google Ads ($224B/year revenue), Gmail, and YouTube. Its open-source descendant CockroachDB brings the same ideas to everyone.

TrueTime: GPS and Atomic Clocks

The Clock Uncertainty Problem:

  Traditional distributed database:
  Server A clock: 10:00:00.000
  Server B clock: 10:00:00.007  (7ms ahead)

  Transaction T1 commits on Server A at 10:00:00.003
  Transaction T2 commits on Server B at 10:00:00.005
  T2 depends on T1's result.

  But Server B's clock is 7ms fast.
  Real time: T2 actually committed at 09:59:59.998
  BEFORE T1 at 10:00:00.003!
  Timestamp ordering is WRONG. Data corruption.

Google's Solution - TrueTime API:
  Every Spanner server has GPS receivers + atomic clocks.
  TrueTime.now() returns an INTERVAL, not a point:
  {earliest: 10:00:00.003, latest: 10:00:00.009}
  Uncertainty window: ~6ms (typically <10ms)

  Commit protocol:
  1. Assign commit timestamp T = TrueTime.now().latest
  2. WAIT until TrueTime.now().earliest > T
     (wait out the uncertainty window)
  3. Only THEN reveal the committed data

  Result: if T1 commits before T2 starts,
  T1's timestamp is guaranteed < T2's timestamp.
  Total ordering across the planet. Strong consistency.

Spanner Architecture

Spanner's Layered Design:

  [Client]  (any Google service)
     |
  [Spanner Frontend]  (parse SQL, route to correct shard)
     |
  [Paxos Group]  (each shard is a Paxos group)
  - Leader replica (handles writes)
  - Follower replicas (vote on consensus)
  - Witness replicas (vote but don't store data)
     |
  [Colossus]  (Google's distributed file system)

  Write path:
  1. Client sends write to Paxos leader
  2. Leader proposes write to followers
  3. Majority vote = committed (Paxos consensus)
  4. Leader assigns TrueTime timestamp
  5. Wait out uncertainty window
  6. Reveal committed data

  Read path:
  - Leader reads: linearizable (always fresh)
  - Follower reads: stale by replication lag
  - Snapshot reads: pick a timestamp, read consistent data
                    as of that moment (no locks needed)

CockroachDB and the NewSQL Movement

CockroachDB adapts Spanner's design for organizations that do not have GPS antennas on their servers. Instead of TrueTime, CockroachDB uses hybrid logical clocks (HLC) that combine physical timestamps with logical counters. HLC cannot bound uncertainty as tightly as TrueTime (CockroachDB's default offset is 250ms vs Spanner's 7ms), so tight cross-node transaction ordering requires an extra round-trip for confirmation. Other NewSQL databases like YugabyteDB and TiDB take similar approaches - offering distributed SQL with horizontal scaling, but each makes slightly different trade-offs between consistency tightness and write latency.

When to Use Spanner-Style Databases

Spanner-style databases solve a specific problem: global data with strong consistency requirements. If your application needs users in Tokyo to see the same account balance as users in London - at the same moment, with no replication lag - you need linearizable reads across regions. Financial systems, inventory management for global e-commerce, and multi-region SaaS platforms are the canonical use cases. For applications where eventual consistency is acceptable (social feeds, analytics, content), Spanner is overkill - the 100-200ms cross-region write latency is a cost you should not pay without a strong reason.

Interview Tip

When asked about globally consistent databases, explain the core insight: Spanner does not eliminate clock uncertainty - it bounds it using GPS + atomic clocks (TrueTime), then waits out the uncertainty window before revealing committed data. This guarantees correct transaction ordering across continents. The cost is latency: cross-region writes take 100-200ms due to Paxos consensus + TrueTime wait. CockroachDB uses hybrid logical clocks (HLC) as an approximation without GPS hardware.

Key Takeaway

Spanner achieves global strong consistency by using TrueTime (GPS + atomic clocks) to bound clock uncertainty, then waiting out that uncertainty before revealing committed data. This guarantees correct transaction ordering across continents at the cost of ~100-200ms write latency. CockroachDB and YugabyteDB bring similar ideas to commodity hardware using hybrid logical clocks.

Enjoyed this article?

Share it with your network to help others level up their system design skills.

Discussion0

Join the Discussion

Sign in to leave comments, reply to others, or like insights.

Sign In to ScaleDojo

No comments yet. Be the first to start the thread!

Enjoyed this? Get more like it.

New levels, features, and one concept worth knowing - straight to your inbox.

No spam, ever. Unsubscribe in one click.

Enjoyed this content?

Your support keeps us creating free resources

We put a lot of hours into researching and writing these guides. If it helped you, consider buying us a coffee. Every bit goes toward keeping ScaleDojo's content free and growing.

$

One-time payment via Stripe. ScaleDojo account required.