はじめに
機会があり Spanner について調べたので、その覚え書き。
Spanner とは
端的に Spanner を説明するなら、こんな感じ。
- 分散データベースである
- リレーショナルデータベースっぽい
- ACID準拠のデータベースである
- おおよそ、SQLデータベースって感じ
- CAP定義でいうと、CP(CAは、99.999%の可用性を前提)
既存RDBMS を Spanner へ移行するなら
Spanner 向けにシステム構築しないと扱うのは難しそうな感じ。
→ 既存のRDBMSを、気楽に載せ替えるっていうのは難しそう。
Spanner のトランザクション管理
Oracle Database でいう SCN は、TrueTime(※複数リージョン間での時刻同期を実現できる)を使っている。
トランザクション動作は、@kumagi さんの Spanner が分かりやすかった。Commit Wait を使ってデータ一貫性を保証している。
感想
システムを「イチから作れるよ」というなら Spanner も選択肢に入るかな?
ただ現行のDB向けの仕組み(Frameworkとか)を用意しているものは、このあたりから作り直しになるため、やはり「現行(RDBMS)ものから Spanner へ」というのはハードルが高そう。
但し、「コレからシステム作る」、「新しい概念で作ってみたい」ということであれば採用を検討しても良さそう
とはいえ「分散型DBの良さをあやかったRDB」には聞こえるのでキラキラしそうな Database(※) にみえちゃう
(※)乱暴ですけど、CAP定義でいうなら分散型データベースなのに、全要件(一貫性、可用性、分断耐性)を満たす Database ってこと。
世界中のどこからでもデータを管理できちゃうってことだよなあ。これはキラキラしちゃう Spanner は、そこを目指すデータベースなのかも知れないなあ