451 Unavailable For Legal Reasons

とあるゲームエンジニアのブログです

謎の新RDB「Google Cloud Spanner」について聞いてきた

Google Cloud Spannerの情報目当てで下記のイベントに言ってきたのでメモ。

イベントページ

connpass.com

ついに出た!Google虎の子のNewSQL RDB「Spanner」 by Google

ACID特性

信頼性のあるトランザクションシステムの持つべき性質にACID特性があります。

ACID (コンピュータ科学) - Wikipedia

スライド5ページ目でVertical Consistencyと書かれているのは同一Zone内でのACID特性。Horizontal Consistencyと書かれているのはZoneをまたぐACID特性の事のようです。

ACID特性のうち独立性(isolation)には、その独立性のレベル応じて「トランザクション分離レベル」というものがあります。

gyouza-daisuki.hatenablog.com

SQL Serverには、上記の記事に存在しないトランザクション分離レベルで「SNAPSHOT」分離レベルというものがあるのですが

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

SQL Serverのデータベースを「SNAPSHOT」分離レベルにすると行情報にTransaction Timestampが追加されます。

Spannerが分離レベルを一定以上に保つためにTrueTime API(原子時計とGPSを用いた超誤差が少ない時計)を必要とするのは、この行情報に含まれるTimestampが全てのノードで正確であれば分散環境でも「SNAPSHOT」分離レベルを達成できる的な発想のようです。

blog.engineer-memo.com

Spannerが読み取り専用トランザクションでロックを必要としないのは、行が更新中であってもトランザクションで指定したTimestamp(デフォルトは現在日時)以前の行を読めば良いからですね。ちなみに登壇者へ質問したところ1時間前までの行バージョンが保持されていて読み取りできるとのことです。

レプリケーション

レプリケーションに関する話はまた次回ということで、分散合意形成アルゴリズムにPaxosを使っているということぐらいしか触れられていませんでした。

有名な分散合意形成アルゴリズム

2相コミット - Wikipedia

3相コミット - Wikipedia

Paxosアルゴリズム - Wikipedia

Paxosの解説

d.hatena.ne.jp

TODO

Spannerについては公式のドキュメントと論文があるのでそのうち読んでみようと思います。そこで何か発見があればまた何か書くかもしれません。

公式ドキュメント

cloud.google.com

論文「Spanner: Google’s Globally-Distributed Database」

https://static.googleusercontent.com/media/research.google.com/ja//archive/spanner-osdi2012.pdf