平成30年度 春期 データベーススペシャリスト試験 午前II 問13
【問題13】
分散データベースのトランザクションは複数のサブトランザクションに分割され,複数のサイトで実行される。このとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。
2相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
2相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
集中型データベースのコミット制御である1相コミットで,分散データベースを構成する個々のサイトが独自にコミットを行っても,サイト間のデータベースの一貫性は保証できる。
【解説】
分散データベースにおけるトランザクションのコミット制御では、特に2相コミット(Two-Phase Commit Protocol: 2PC)が使用されます。このプロトコルは以下の2つのフェーズに分かれます:
1. 準備フェーズ(Prepare Phase)
各サブトランザクションがコミット可能かを判定し、主サイトに「コミット可能」または「ロールバックすべき」という応答を送ります。
2. コミットフェーズ(Commit Phase)
主サイトが全サイトからの応答を基に、全サブトランザクションをコミットまたはロールバックするよう指示します。
ア: 2相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
誤り。2相コミットでは、サブトランザクションごとに異なる指示を出すことはなく、全てのサブトランザクションを一貫してコミットまたはロールバックします。
イ: 2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
正しい。2相コミットでは、主サイトからの指示が何らかの理由でサイトに届かない場合、サブトランザクションの状態が不確定になる可能性があります。このような問題は「ブロッキング問題」と呼ばれます。
ウ: 2相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
誤り。2相コミットでは、サブトランザクションがロールバックされた場合、トランザクション全体もロールバックされます。
エ: 集中型データベースのコミット制御である1相コミットで,分散データベースを構成する個々のサイトが独自にコミットを行っても,サイト間のデータベースの一貫性は保証できる。
誤り。1相コミットでは、分散データベースの一貫性を保証することはできません。2相コミットを使用する必要があります。
【答え】
イ: 2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
出典:平成30年度 春期 データベーススペシャリスト試験 午前II 問13