01 / 読書ガイド
読書ガイド
引用
Gray, J., & Reuter, A. (1992). Transaction Processing: Concepts and Techniques. Morgan Kaufmann.
章の要約
本書は19章からなり、八つの部に分かれる。トランザクション処理の基礎、フォールトトレランスの基礎、トランザクション指向コンピューティング、同時実行制御、リカバリ、サンプルのリソースマネージャとしてのトランザクショナルファイルシステム、システム概観、そして付録(参考文献、データ構造とインタフェース、用語集)である。冒頭にはBruce Lindsayによる序文と前書きがある。第1〜15章は各章の終わりに演習と解答を置き、多くは歴史的注記も付く。
第1部:トランザクション処理の基礎(第1〜2章)
第1章「はじめに」は歴史的な展望を示し、トランザクション処理システムとは何かを、エンドユーザ、管理者・オペレータ、アプリケーション設計者、リソースマネージャの各視点から問い、中核サービスと、アプリケーション開発、リポジトリ、TPモニタ、データ通信、データベース、運用、教育とテストにわたる機能一覧を挙げる。第2章「コンピュータ科学の基本用語」は後の章で使う語彙を整える。ハードウェア(メモリ、プロセッサ、通信、アーキテクチャ)、アドレス空間、プロセス、スレッド、メッセージとセッション、クライアントとサーバ、命名、認証と認可、ファイルとSQL、ソフトウェアの性能、さらにLU6.2、OSI-TPとX/Open DTPなどのトランザクション処理標準である。
第2部:フォールトトレランスの基礎(第3章)
第3章「フォールトトレランス」は、定義(フォールト、障害、可用性、信頼性)、停止事象の実証研究、典型的なモジュール故障率、Nプレックスやフェイルファストモジュールなどのハードウェアによる方法、そしてソフトウェアがなぜ主な問題なのかを扱う。続いてトランザクションとソフトウェアのフォールトトレランス、高可用ストレージのためのプロセス・メッセージ・ストレージモデル、プロセスとメッセージ、一般原則、そして「システムの錯覚」と題した戒めの話を述べる。
第3部:トランザクション指向コンピューティング(第4〜6章)
第4章「トランザクションモデル」は、アトミックアクションとフラットトランザクションから出発し、制御の領域、モデルを記述する記法、セーブポイント付きトランザクション、連鎖トランザクション、ネストしたトランザクション、分散トランザクションとマルチレベルトランザクション、オープンネストと長期トランザクション(サガを含む)、そして「エキゾチックなもの」へ進む。第5章はトランザクション処理モニタの概観で、その役割、構造、トランザクショナルなリモートプロシージャコール、プログラミングスタイルの例を扱う。第6章「トランザクション処理モニタ」は内部に踏み込み、リソースマネージャインタフェース、モニタのデータ構造、トランザクショナルRPCの経路に沿った案内、要求・応答キュー、負荷分散、認証、再起動処理を述べる。
第4部:同時実行制御(第7〜8章)
第7章「分離の概念」は長い章で、分離の依存関係モデル、分離の定理、分離度とSQL、ファントムと述語ロック、粒度ロックとキー範囲ロック、ロックのヒューリスティクス、ネストしたトランザクションのロック、スケジューリングとデッドロック、さらにエスクローロックや楽観的ロックなどの「エキゾチックなもの」を扱う。第8章「ロックの実装」は、アトミックな機械命令、セマフォ、ロックマネージャ(名前、キュー、データ構造、内部ロジック、エスカレーション、再起動)、デッドロック検出、並列トランザクションのロックへ進む。
第5部:リカバリ(第9〜12章)
第9章「ログマネージャ」は、ログテーブル、順序番号、公開インタフェース、グループコミットや慎重な書き込みなどの実装の詳細、再起動ロジック、ログのアーカイブを論じる。第10章「トランザクションマネージャの概念」は、アプリケーションとリソースマネージャのインタフェース、DO-UNDO-REDOプロトコル、値ログ、論理ログ、物理論理ログ、ログ先行書き込みの規則、補償レコード、2相コミットを扱う。第11章「トランザクションマネージャの構造」は、通常処理、チェックポイント、システム再起動、リソースマネージャの障害とアーカイブリカバリを順に見ていく。第12章「トランザクションマネージャの高度な話題」は、異種のコミットコーディネータ、ノンブロッキングコミット、コミットの移譲、2相コミットの最適化、遠隔地でのディザスタリカバリを扱う。
第6部:トランザクショナルファイルシステム:サンプルのリソースマネージャ(第13〜15章)
第13章「ファイルとバッファの管理」は、永続ストレージの基盤としてのファイルシステム、媒体とファイルの管理、バッファ管理を扱う。第14章「タプル指向ファイルシステム」は、タプルのページへの割り当て、タプルの物理表現、ファイル編成(エントリ順、キー順、ハッシュ、クラスタ、分割ファイル)を扱う。第15章「アクセスパス」は、ハッシュとB木を、同期とリカバリも含めて扱い、B木操作のサンプル実装、拡張可能ハッシュ、グリッドファイル、穴あきブリックB木も述べる。
第7部:システム概観(第16章)
第16章「TPシステムの概観」は、IMS、CICSとLU6.2、Guardian 90、DECdta、OSI-TPおよびCCRを含むX/Open DTP、その他のシステム(UTM、ADABAS TPF、Encina、Tuxedo)を述べる。
第8部:付録(第17〜19章)
参考文献、データ構造とインタフェース、用語集、そして索引。
主要概念
第1・2部:基礎とフォールトトレランス
- トランザクション処理システム:トランザクションを軸に構築されたシステム。ユーザ、管理者、アプリケーション設計者、リソースマネージャそれぞれに見え方が異なる。
- 可用性と信頼性:フォールトトレラントな設計の土台となる定義と故障率のモデル。
- フェイルファストモジュールとNプレックス:障害を検出またはマスクするハードウェア構成。
第3部:トランザクション指向コンピューティング
- フラット、連鎖、ネスト、マルチレベルのトランザクション:セーブポイント、範囲、コミットに関して課す規則で定義される各トランザクションモデル。
- サガと補償:補償トランザクションで長時間にわたる処理を扱う方法。
- TPモニタとトランザクショナルRPC:リソースマネージャをトランザクションに結び付け、構造化しスケジュールするミドルウェア。
第4・5部:同時実行制御とリカバリ
- 分離と分離度:依存関係に基づく分離の定義と、実際に使われる弱い水準。
- 粒度ロックとキー範囲ロック:ファントムを防ぐため、複数の粒度とキーの範囲でロックすること。
- ログ先行書き込みと物理論理ログ:REDOとUNDOを成り立たせるログの規則。
- 2相コミット:分散した計算をアトミックにするプロトコル。
第6〜8部
- アクセスパスとしてのB木とハッシュ:タプルを探すための構造と、そのロックおよびリカバリ。
- システム概観:IMS、CICS、Guardian 90、DECdta、X/Open DTPの比較。
批判的分析
長所
- トランザクションを統一的な枠組みとする。 出版社の紹介は、著者がトランザクションを統一的な概念の枠組みとして用いていると述べており、構成もそれを裏づける。フォールトトレランス、トランザクションモデル、同時実行制御、リカバリが一つの議論の四つの部分になっている。
- 実装レベルの深さ。 第8、9、11章はロックマネージャ、ログマネージャ、トランザクションマネージャの内部を調べ、出版社はアルゴリズムを示すコンパイル可能なCコードの断片があると述べている。
- 教育のための仕掛け。 第1〜15章は各章の終わりに演習と解答があり、多くは歴史的注記も付く(目次に記載)。長い議論を独習しやすくしている。
- 完結したサンプルのリソースマネージャ。 第6部ではトランザクショナルファイルシステムとB木のアクセスパスを構築し、前の章の考え方が具体的なストレージ層とどう出会うかを示す。
短所
- 古くなったシステム概観。 第16章が扱うのはIMS、CICS、Guardian 90、DECdtaなど1990年代初めの製品と標準で、それ以降のシステムはない。
- 分量と専門性。 本文16章に加え、ロックマネージャとログマネージャの詳細な扱いがあり、本書は一つの主題の専門書である。授業では一部の章が指定されることになる。
- 前提とされる基礎。 第2章が用語を整えるが、後の部はデータベースの授業とオペレーティングシステムの基礎知識を前提としている。
コースにおける位置づけ
このコースの他の書籍は、データベースシステム全体を扱う。Silberschatz、Korth、Sudarshanの Database System Concepts とElmasriとNavatheの Fundamentals of Database Systems は広い範囲を扱う教科書で、トランザクション、同時実行、リカバリをその中の章として含む。RamakrishnanとGehrkeの Database Management Systems も一般的な教科書である。CoronelとMorris、およびHernandezの本は、設計と利用についてのやさしい読み物である。それらの教科書の一章がかえって疑問を増やしたときに読むのが、GrayとReuterである。
したがって本書は第二段階の本で、まず一般的な教科書のトランザクションの章を読み、その後に本書の第4・5部でロック、ログ、リカバリ、2相コミットの詳細を学ぶ。
本書の使い方
本書は、データベースや分散システムを専攻する大学院生と、ストレージエンジン、データベース内部、トランザクションモニタを構築・調整するエンジニアに向いている。読者はデータベースの授業を履修済みで、オペレーティングシステムと並行処理の基礎を知っていることが望ましい。
実践的な進め方は次のとおり。
- 中核: 第1章と第4章の最初の節(トランザクションの語彙)、第7章(分離)、第9〜11章(ログ、トランザクションマネージャ、再起動、2相コミット)。
- 実装者向け: 第8章(ロックの実装)、第12章(コミットの高度な話題)、第13〜15章(ファイル、バッファ、B木の管理)。
- 任意: 第3章(フォールトトレランス)、第5〜6章(TPモニタ)、第16章(現在の製品の案内ではなく歴史的な概観として)。
各章末の演習を解いて解答と照合し、Cのコード断片は改変して実行してみる手本として扱うとよい。
