ホーム > 情報処理安全確保支援士試験 > 2015年 春期
情報処理安全確保支援士試験 2015年 春期 午前2 問21
分散トランザクション処理で利用される2相コミットプロトコルでは,コミット処理を開始する調停者(coordinator)と,調停者からの指示を受信してから必要なアクションを開始する参加者(participant)がいる。この2相コミットプロトコルに関する記述のうち,適切なものはどれか。
ア:参加者は,フェーズ1で調停者にコミット了承の応答を返してしまえば,フェーズ2のコミット要求を受信していなくても、ローカルにコミット処理が進められる。
イ:調停者に障害が発生するタイミングによっては,その回復処理が終わらない限り,参加者全員がコミットもロールバックも行えない事態が起こる。(正解)
ウ:一つの分散トランザクションに複数の調停者及び参加者が存在し得る。例えば,5個のシステム(プログラム)が関与している場合、調停者の数が2,参加者の数が3となり得る。
エ:フェーズ1で応答のない参加者が存在しても、調停者は強制的にそのトランザクションをコミットすることができる。
解説
分散トランザクションの2相コミットプロトコル【午前2 解説】
要点まとめ
- 結論:2相コミットプロトコルでは調停者の障害が回復しない限り、参加者はコミットもロールバックもできない状態になることがある。
- 根拠:調停者が全体の意思決定を管理し、参加者は調停者の指示を待つため、調停者の障害は処理の停止を招く。
- 差がつくポイント:調停者と参加者の役割の違い、フェーズごとの動作、障害時の挙動を正確に理解することが重要。
正解の理由
選択肢イは、調停者の障害が発生した場合にその回復処理が完了しない限り、参加者はコミットもロールバックもできず、処理が停止する可能性があることを正しく述べています。2相コミットプロトコルは調停者が全体の合意を取りまとめるため、調停者の障害はトランザクションの進行を止める重大な問題となります。
よくある誤解
参加者がフェーズ1でコミット了承を返したらすぐにローカルでコミットできると誤解しがちですが、実際は調停者の最終指示を待つ必要があります。
解法ステップ
- 2相コミットプロトコルの役割を理解する(調停者と参加者)。
- フェーズ1(準備フェーズ)で参加者がコミット可能かどうかを調停者に報告する。
- フェーズ2(コミットフェーズ)で調停者が全参加者にコミットまたはロールバックの指示を出す。
- 調停者の障害時に参加者が処理を進められないことを確認する。
- 選択肢の記述と照らし合わせて正誤を判断する。
選択肢別の誤答解説
- ア: フェーズ1でコミット了承を返しても、フェーズ2の指示なしに参加者がローカルでコミットを進めることはできません。
- イ: 調停者の障害が回復しない限り、参加者は処理を進められないことを正しく述べています。
- ウ: 2相コミットプロトコルでは1つのトランザクションに対して調停者は基本的に1つであり、複数の調停者が存在することはありません。
- エ: フェーズ1で応答のない参加者がいても、調停者は強制的にコミットできず、全員の合意が必要です。
補足コラム
2相コミットプロトコルは分散トランザクションの整合性を保つための基本的な手法ですが、調停者の単一障害点(SPOF)が問題となります。これを解決するために3相コミットプロトコルやPaxosなどの分散合意アルゴリズムが研究されています。
FAQ
Q: 2相コミットプロトコルで調停者が障害を起こした場合、参加者はどうなる?
A: 調停者の回復が完了するまで、参加者はコミットもロールバックもできず、待機状態になります。
A: 調停者の回復が完了するまで、参加者はコミットもロールバックもできず、待機状態になります。
Q: 参加者はフェーズ1でコミット了承を返したらすぐに処理を進めてよい?
A: いいえ。調停者の最終指示(フェーズ2)を受けてからコミットまたはロールバックを行います。
A: いいえ。調停者の最終指示(フェーズ2)を受けてからコミットまたはロールバックを行います。
関連キーワード: 分散トランザクション, 2相コミット, 調停者, 参加者, 障害対応, トランザクション整合性