Spanner (データベース)
上記の通り、Spanner ではデータの一貫性を担保する必要があった。これを実現するために、BigTableとは異なり、Spanner ではタイムスタンプが必ずデータに付与される。このデータ構造はtabletと呼ばれ以下のようなマッピングを持つ:
(key:string, timestamp:int64) -> string
これらデータはGoogle File Systemの後継であるColossus上に全て保存される。
上記のようにタイムスタンプを用いることで、全てのトランザクション処理のコミットがどの順番で行われたかを管理でき、これによって、一貫性を保証できる(詳細はMultiVersion Concurrency Controlを参照)。
ここで重要となるのは、タイムスタンプを一貫した時刻基準を用いて押し、処理した順番を誤って前後させないことである。しかしながら、Spannerのようにデータが複数のサーバに分散される場合は実現が難しい。全てのサーバを常に、かつ厳密に同時刻に保つことは困難なためである。