Google Cloud Spannerの情報目当てで下記のイベントに言ってきたのでメモ。
イベントページ
ついに出た!Google虎の子のNewSQL RDB「Spanner」 by Google
ACID特性
信頼性のあるトランザクションシステムの持つべき性質にACID特性があります。
スライド5ページ目でVertical Consistencyと書かれているのは同一Zone内でのACID特性。Horizontal Consistencyと書かれているのはZoneをまたぐACID特性の事のようです。
ACID特性のうち独立性(isolation)には、その独立性のレベル応じて「トランザクション分離レベル」というものがあります。
SQL Serverには、上記の記事に存在しないトランザクション分離レベルで「SNAPSHOT」分離レベルというものがあるのですが
SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
SQL Serverのデータベースを「SNAPSHOT」分離レベルにすると行情報にTransaction Timestampが追加されます。
Spannerが分離レベルを一定以上に保つためにTrueTime API(原子時計とGPSを用いた超誤差が少ない時計)を必要とするのは、この行情報に含まれるTimestampが全てのノードで正確であれば分散環境でも「SNAPSHOT」分離レベルを達成できる的な発想のようです。
Spannerが読み取り専用トランザクションでロックを必要としないのは、行が更新中であってもトランザクションで指定したTimestamp(デフォルトは現在日時)以前の行を読めば良いからですね。ちなみに登壇者へ質問したところ1時間前までの行バージョンが保持されていて読み取りできるとのことです。
レプリケーション
レプリケーションに関する話はまた次回ということで、分散合意形成アルゴリズムにPaxosを使っているということぐらいしか触れられていませんでした。
有名な分散合意形成アルゴリズム
Paxosの解説
TODO
Spannerについては公式のドキュメントと論文があるのでそのうち読んでみようと思います。そこで何か発見があればまた何か書くかもしれません。
公式ドキュメント
論文「Spanner: Google’s Globally-Distributed Database」
https://static.googleusercontent.com/media/research.google.com/ja//archive/spanner-osdi2012.pdf