はじめに
データベース(DB)を扱う方にとって、トランザクションは当たり前の存在です。そんな当たり前のものがどういった理論と技術で実現されているか、そしてそれらが今も進化していることをご存知でしょうか。
トランザクションをもっと深く知りたい方に向けて、参考となる資料をご紹介します。
資料は日本語で書かれたものを中心に紹介しています。また、Level設定は私の主観によるものです。
Level 0
トランザクションを深く学ぶための準備フェーズです。
まずは自分の得意なRDBのマニュアルもしくは本から、以下に関する章を読んでみてください。
現在のプロダクトにどのような技術が用いられているかを知ったうえで学ぶことで、その背景にはどんな理論があるのか、また研究レベルでどんな進化を遂げているのかを実感して学ぶことができます。そして、将来のDBの姿が見えてくるはずです。
Level 1
トランザクション理論への第一歩です。
この先へ進むにあたり注意していただきたいのが、ひとまず自分の知っている Serializable を忘れてください。一般的なRDBで設定可能なトランザクション分離レベルである SERIALIZABLE にとらわれると、実際の振る舞いと学術的な説明の差異に混乱するかもしれません。まずは資料の説明を素直に受け入れ、先に進むことで気づきがあると思います。
一人トランザクション技術 Advent Calendar 2016
一人トランザクション技術 Advent Calendar 2016 - Qiita
kumagiさん(@kumagi)による、とても分かりやすい記事集です。基礎的なとこから比較的最近の研究成果まで、一通り学ぶことができます。
kumagiさんの資料全般に言えることですが、難しいことをわかりやすく、時に図示して解説してくれます。
Level 2
トランザクションに関する用語と最近の研究成果のサマリを学びます。
トランザクションをSerializableにする4つの方法
kumagiさんの資料です。
「2015年12月18日に行われたビッグデータ基盤勉強会で発表する際に使った資料」とのこと。
Serializable で無いときに起こる Anomaly を取り上げ、それをどのように解決するかを解説しています。
この資料の「Serializableとは?」というスライドの内容に違和感を覚えるかも知れませんが、一旦受け止めて先に進んでみることをお勧めします。
キーワード:Serializable, Anomaly, 2PL, Silo
トランザクションの設計と進化
kumagiさんの資料です。
「2016年7月27日 Database Lounge Tokyoで話した内容」とのこと。
従来のリカバリ技法の前提にはメモリ容量 << ディスク容量がありました。ですが、時代は変わり、メモリ容量が大きくなったことで In-Memory DB が登場し、そのリカバリ技法も変わったことを解説しています。
並行実行制御の最適化手法
中園さん(@nikezono)の資料です。
並行実行制御の性能向上手法についての概要を解説しています。
キーワード:2PL, Early Lock Release, Group Commit, Speculative Read
Level 3
ここからは覚悟が必要になります。学ぶ覚悟、そしてWeikum本(TX本)を買う覚悟です。
Serializable とは何なのか、ということを突き詰めていくことになります。
Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery
通称:TX本、Weikum本
この本は技術書の中でも値段の高い部類です。Kindle版ですら1万円を超えます。
ですが、この先のレベルを学ぶのであれば、購入することをお勧めします。この先に出てくる資料では度々Weikum本の用語や記法が使われます。また、それらはググってもほとんど出てきません。用語がわからず延々とググって時間を無駄にするより(私のことです…)、購入して手元に置きながら学ぶことをお勧めします。
ハードカバー版とKindle版がありますが、ハードカバー版のほうが使い勝手がよさそうです(私はKindle版を購入していました)。Kindle版は検索が楽なのですが、頭から読み進める際は行きつ戻りつしながら読むことになるので、ハードカバー版のほうが読み進めやすそうです。
Concurrency Control and Recovery in Database Systems
Concurrency Control and Recovery in Database Systems
- 作者:Bernstein, Philip A.,Hadzilacos, Vassos,Goodman, Nathan
- 発売日: 1987/02/01
- メディア: ハードカバー
通称:CC本
トランザクション理論を議論する際はTX本をベースとすることが多いのですが、神林さんのブログ(急がば回れ、選ぶなら近道)ではCC本を参照することもあります。
ハードカバー版をAmazonで購入可能ですが、著者の一人である Phil Bernstein のプロフィールページ(Microsoftサイト内)からPDF版を入手することが可能です。
Phil Bernstein at Microsoft Research
トランザクションの並行実行制御 rev.2
サイボウズ・ラボの星野さん(@starpoz)によるトランザクションの解説スライドです。
Deadlockを回避する手法についてスライドを割いて解説しています。
キーワード:Serializability, 2PL, Deadlock
中園さんの Scrapbox
Transactional Information Systems - nikezono
Weikum本を読み進めるための心強いガイドです。kumagiさんと同じく、難しいことをとてもわかりやすくかみ砕いて説明しています。
上記リンクから辿れるページ以外にも参考になる用語解説などがありますので、ぜひ参照してみてください。
Riccardo Rosati 教授の授業資料
Data Management for Data Science - Sapienza Universita' di Roma
Data Management for Data Science の授業資料が公開されています。英語です。
このうち、"DBMS transaction management and recovery management"というリンク(記事公開時点)の資料がトランザクションを知るうえで参考になります。Weikum本が入手できない場合は代わりに読むことをお勧めします。ただし、(記事公開時点の資料においては)FSR, VSR の説明が無いなど物足りない点があり、Weikum本の代替にはなりません。
[xSIG 2018]InvisibleWriteRule: Extended write protocol for 1VCC
中園さんらによる InvisibleWriteRule の xSIG2018 発表資料です。表紙は日本語ですが、中身は英語です。
InvisibleWrite は読まれることのない書き込み処理をスキップすることで性能を向上させる手法です。
キーワード:OCC, Serializable, Bloom Filter
Level 4
最近の研究成果を学びます。これらの研究成果が商用プロダクトに適用されるまでに何年かかるか(そもそも商用に適用されるのか)わかりませんが、先を見通したい方はぜひチャンレンジしてください。そして、私に教えてください…。
このレベルはほぼ神林さん(@okachimachiorz1)の独壇場です。
急がば回れ、選ぶなら近道
神林さんのブログです。トランザクションの論文を解説した記事を何本も掲載しています。
Weikum本と論文を片手に読まないとチンプンカンプンな、ついてこれる奴だけついてこいのスタイルです。でも、それが面白いです。
ブログはトランザクション以外の記事もあり、特にまとまってはいません。以前に私がトランザクション関連記事をまとめていますので、リンク集代わりにお使いください(最近の分はまだ反映できていません)。
急がば回れ、選ぶなら近道 TX記事 読解メモ - ぱと隊長日誌
A Critique of ANSI SQL Isolation Levels 再読
神林さんの発表資料です。
Isolation Levels とは何なのか。それはどう定義すべきものなのか。ということを提案した論文(A Critique of ANSI SQL Isolation Levels)について解説しています。
キーワード:Isolation Levels, 2PL, SI
次世代DB / 分散OLTP(MVCC系)を可能な限り全力で解説
db tech showcase Tokyo 2017 での神林さんの発表資料です。
Cicada の解説がメインとなります。
以前に聴講メモをまとめましたので、併せて参照ください。
DBTS2017「次世代DB / 分散OLTP(MVCC系)を可能な限り全力で解説」聴講メモ - ぱと隊長日誌
キーワード:OCC, MVCC, Serialization, Cicada, WBL
更新情報
2019/01/05
"Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery" の通称について追記しました。
"Concurrency Control and Recovery in Database Systems" の紹介を追記しました。