# Spanner
[[Google]] が開発・運営するグローバル分散 SQL データベース。[[TrueTime]] API を活用して **外部一貫性(厳密直列化可能性)** を実現する世界初のシステム。現在は Google Cloud の マネージドサービス **Cloud Spanner** として提供されている。
## 主要特性
- **TrueTime**: GPS と原子時計で時刻不確実性区間を返す API。commit wait でタイムスタンプ順序を保証
- **外部一貫性**: 全トランザクション間の実時間順序とタイムスタンプ順序が一致
- **Paxos on 2PC**: Paxos グループ上に 2PC を組み合わせた RW トランザクション
- **専用ハードウェア要件**: TrueTime は GPS/原子時計を必要とし、汎用クラウド環境では利用不可
## CockroachDB との比較
CockroachDB([[@2020__SIGMOD__CockroachDB - The Resilient Geo-Distributed SQL Database]])は Spanner の代替として以下の違いを持つ:
| 観点 | Spanner | CockroachDB |
|---|---|---|
| 一貫性保証 | 厳密直列化可能性(外部一貫性) | 単一キー線形化可能性のみ |
| クロック機構 | TrueTime(専用HW) | HLC(NTP / Amazon Time Sync) |
| コミット方式 | commit wait(最大オフセット待機) | Read Refresh(楽観的・リトライ可能性あり) |
| ハードウェア要件 | 専用(GPS/原子時計) | 汎用クラウドサーバー |
| YCSB スループット | 多くのワークロードで CRDB より低い | 多くのワークロードで高い |
| レイテンシ | commit wait により高い | 低い(特に低コンテンション時) |
YCSB ベンチマークでは CRDB が多数のワークロードで Spanner を上回るスループットと低レイテンシを示した(YCSB A を除く)。(Source: [[@2020__SIGMOD__CockroachDB - The Resilient Geo-Distributed SQL Database]] §6.3)
## 関連
- 論文: [[@2013__TOCS__Spanner - Google's Globally Distributed Database]]
- 比較: [[@2020__SIGMOD__CockroachDB - The Resilient Geo-Distributed SQL Database]]
- 概念: [[外部一貫性]] / [[TrueTime]] / [[分散トランザクション]]
- 所属: [[Google]]
## 出典
- [[@2013__TOCS__Spanner - Google's Globally Distributed Database]](OSDI 2012 / TOCS 2013)
- [[@2020__SIGMOD__CockroachDB - The Resilient Geo-Distributed SQL Database]](SIGMOD 2020 §6.3 / §8)