応用情報技術者 2009年 春期 午前2 問33
問題文
分散データベースにおいて図のようなコマンドシーケンスがあった。調停者がシーケンスで発行したコマンドはどれか。ここで、コマンドシーケンスの記述にUMLのシーケンス図の記法を用いる。

選択肢
ア:COMMITの実行要求
イ:ROLLBACKの実行要求(正解)
ウ:判定レコードの書出し要求
エ:ログ書出しの実行要求
分散データベースにおける調停者のコマンドシーケンス【午前2 解説】
要点まとめ
- 結論:調停者が発行するコマンドは「ROLLBACKの実行要求」である。
- 根拠:システム2が「否」と応答し、調停者は全体のトランザクションを中止する指示を出すため。
- 差がつくポイント:調停者の役割と二相コミットプロトコルの流れを正確に理解し、否定応答時の処理を見極めること。
正解の理由
調停者は分散トランザクションの整合性を保つため、各システムにコミット可否を問い合わせます。図ではシステム2が「否」と返答しており、全体のコミットは不可能です。したがって調停者は、トランザクションを中止するために「ROLLBACKの実行要求」を各システムに送ります。これにより、部分的な更新の不整合を防ぎます。
よくある誤解
コミット要求を送るのは成功時のみであり、否定応答があった場合はロールバックを指示する点を誤解しやすいです。判定レコードやログ書出しは内部処理であり、調停者の直接コマンドではありません。
解法ステップ
- 図のシーケンスを順に追い、調停者の役割を確認する。
- システムからの「否」応答を見つける。
- 否定応答があった場合の調停者の対応を理解する。
- 二相コミットプロトコルの流れに基づき、調停者が送るコマンドを特定する。
- 選択肢の意味を整理し、最も適切なものを選ぶ。
選択肢別の誤答解説
- ア: COMMITの実行要求
→ システムの一部が否定しているため、コミットは行わない。 - イ: ROLLBACKの実行要求
→ 正解。否定応答があったため、調停者はロールバックを指示する。 - ウ: 判定レコードの書出し要求
→ 判定レコードは調停者内部の処理であり、外部コマンドではない。 - エ: ログ書出しの実行要求
→ ログ書出しはトランザクション管理の内部処理であり、調停者が直接発行するコマンドではない。
補足コラム
分散トランザクションの整合性を保つために用いられる二相コミットプロトコルは、調停者が各参加システムにコミット可否を問い合わせ、全員が「可」と答えた場合にのみコミットを実行します。否定応答があれば全体をロールバックし、一貫性を維持します。
FAQ
Q: なぜ調停者はロールバックを指示するのですか?
A: 参加システムの一つでもコミット不可の場合、整合性を保つため全体を中止しなければならないからです。
A: 参加システムの一つでもコミット不可の場合、整合性を保つため全体を中止しなければならないからです。
Q: 判定レコードとは何ですか?
A: トランザクションの状態を記録する内部ログで、調停者が外部に送るコマンドではありません。
A: トランザクションの状態を記録する内部ログで、調停者が外部に送るコマンドではありません。
関連キーワード: 分散トランザクション、二相コミット、調停者、ロールバック、コミット可否問い合わせ

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

