London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第十三章の振り返り収録です。"Distributed Transactions" の内容について振り返りました。
まずは分散トランザクションの根本的な問題について紹介しました。海外旅行の複数都市手配(航空券、ホテル、レンタカー)をアナロジーとして、「オール・オア・ナッシング」の Atomicity がなぜ重要なのか、そして分散環境でそれを実現することの困難さについて説明しました。
続いて、2PC(Two-Phase Commit)について詳しく解説しました。Coordinatorが中心となって動作する二段階のアルゴリズムを、「Up-or-out な会社のチームリーダー」のアナロジーで説明し、そのシンプルさと普遍性、そして「Blocking」特性という課題について触れました。
次に、3PC(Three-Phase Commit)を紹介しました。2PCの改良版として「Prepare to Commit」フェーズを追加し、より慎重な合意形成を行う仕組みを、「スイスのような完全民主主義国家の議長」というアナロジーで説明しました。理論的な改善と実際の使用頻度のギャップについても言及しました。
決定論的アプローチとして、Calvin、Spanner についても簡単に説明しました。Calvinの「グローバルな実行順序の事前決定」による効率化、Spannerの「シャードごとの2PC最適化」とTrueTimeによるExternal Consistency について話しました。
その他 Bookclub で盛り上がった実践的な議論や、次回の Chapter 14 の予定について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。