にそうこみっとめんと
2相コミットメント
2PC = Two-Phase Commit
分散データベースでデータの一貫性を保つための手法です。準備フェーズで全ノードの合意を確認し、確定フェーズで一斉に更新を反映します。
詳しい説明
2相コミットメントとは、分散データベース環境において、複数のデータベースノード間でデータの一貫性を保つためのトランザクション制御プロトコルです。全てのノードで更新が成功するか、あるいは全く更新しないかのどちらか一方の状態にすることで、部分的な更新による矛盾を防ぎます。
仕組みは名前の通り2つのフェーズに分かれます。まず準備フェーズで、コーディネーターが全ノードに更新可能か問い合わせ、全員からOKの返事があれば、次の確定フェーズで一斉に更新を確定させます。もし1つでもNGがあれば、全員で処理を取り消すロールバックを行います。
試験では、一貫性を保つための技術として登場します。すべてのノードで合意が取れないと完了できないという制約があるため、通信障害などで一部のノードが応答しないと、システム全体が待機状態になる(ブロックされる)リスクがあるという点が繰り返し問われます。可用性と整合性のトレードオフの文脈でも重要です。
試験で問われること
ITパスポート試験
- 分散データベースでの整合性確保の手法であることを押さえる。
- 全て成功か全て失敗のどちらかになる性質を理解する。
基本情報技術者試験
- 準備フェーズと確定フェーズの手順を理解する。
- ブロックが発生するリスクを理解する。
- 整合性と可用性のバランスの論点として押さえる。