Spanner (データベース)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/12/06 09:43 UTC 版)

Spanner(スパナ)は、Googleで開発され、利用されている分散データベースである[1]。2012年に設計が論文として公開された[1]。2017年からはGoogle Cloud Platform上で提供が始まり、一般ユーザでも利用できるようになった[2]。
概要
関係データベース管理システム(RDBMS)の構造と非関係データベース(NoSQL)のスケーラビリティを兼ね備えるとされる[3]。
Googleは、Spanner以前にもスケーラブルな分散型データベースであるBigTable(NoSQLデータベース)を社内で利用していた。BigTableは多くのプロジェクトで活用されてきた一方で、従来のスキーマ型のRDBMSのようにデータの一貫性が欲しいという不満も受けていた[1]。この問題を解決するために、Spannerが開発された。
何百ものデータセンターに渡る100万台規模のサーバに分散、スケールするように設計されている[1]。
また、SQL文を利用してデータの更新や集計などが可能である[4]。
後述の通り、タイムスタンプを利用してデータの一貫性を保証する特徴がある。これにより、データベースへの処理が行われている最中であっても、一貫したデータの読み書きが行えるだけでなく、一貫したバックアップ、MapReduce処理が可能であるとされる[1]。
技術詳細
上記の通り、Spanner ではデータの一貫性を担保する必要があった。これを実現するために、BigTableとは異なり、Spanner ではタイムスタンプが必ずデータに付与される[1]。このデータ構造はtabletと呼ばれ以下のようなマッピングを持つ:
(key:string, timestamp:int64) -> string
これらデータはGoogle File Systemの後継であるColossus上に全て保存される。
上記のようにタイムスタンプを用いることで、全てのトランザクション処理のコミットがどの順番で行われたかを管理でき、これによって、一貫性を保証できる(詳細はMultiVersion Concurrency Controlを参照)。
ここで重要となるのは、タイムスタンプを一貫した時刻基準を用いて押し、処理した順番を誤って前後させないことである。しかしながら、Spannerのようにデータが複数のサーバに分散される場合は実現が難しい。全てのサーバを常に、かつ厳密に同時刻に保つことは困難なためである。
これを解決するために、Spannerでは、TrueTime APIを利用して、現在の絶対時刻をある幅TTinterval: [earliest, latest]
を持たせて取得する[1]。これは、現在の絶対時刻
イベント・取り組み |
| ||||||
---|---|---|---|---|---|---|---|
人物 |
| ||||||
部門 |
|
オペレーティングシステム |
|
---|---|
ライブラリ・ フレームワーク | |
ツール |
|
探索アルゴリズム | |
ファイルフォーマット | |
その他 |
|
娯楽 | |
---|---|
伝達・交流 | |
検索 | |
組織・管理 | |
ビジネス・金融 | |
その他 |