DBデータベーススペシャリスト試験 午前Ⅱ
令和3年度秋期 データベーススペシャリスト 午前Ⅱ 問12
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- ア2相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
- イ2相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
- ウ2相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
- エ集中型データベースのコミット制御である1相コミットで,分散データベースを構成する個々のサイトが独自にコミットを行っても,サイト間のデータベースの一貫性は保証できる。
解き方のヒントを見る
トランザクション境界の見極め
トランザクションの境界と整合性を考えるときは、処理のまとまり、途中状態の扱い、失敗時に守るべき条件を順に整理し、設問の条件と照合して判断しましょう。用語の役割を混同しないことも重要です。
この問題で問われていること
一つの処理単位として扱う範囲に注目し、開始から完了または異常終了までに、どの状態を外部へ反映させてよいか、整合性の条件と結び付けて確認します。全体の境界を意識して考えましょう。
視点
処理をひとまとまりとして捉え、状態の変化、他の処理との関係、途中で問題が起きた場合に検討すべき観点を分けて整理します。
確認ポイント
- 処理の開始点と終了点が、設問の記述上どこに置かれているかを確認する
- 途中の状態と最終的に確認したい整合性の条件を区別して整理する
- 複数の処理や利用者が関わる場合、境界が判断にどう影響するかを確認する
正解と解説を見る
正解
イ
解説
2相コミットは、分散したサブトランザクションを全体としてコミットまたはロールバックするための制御方式です。ただし、各サイトが最終決定を受け取れない状況では、処理の確定状態を判断できないことがある。
理由
2相コミットでは、各サイトの準備完了を確認した後、全体としてコミットするかロールバックするかを決定する。サブトランザクションごとに異なる結果を選ぶ方式ではないため、全体の原子性を保つ。
比較
一方、最終決定が各サイトに届かないと、サイト側はコミットすべきかロールバックすべきかを判断できない場合がある。この点が、2相コミットの障害時に生じる不確定状態です。
選択肢ア
これは不正解だよ。2相コミットでは、全サイトの準備が整った後、主サイトがトランザクション全体についてコミットまたはロールバックを決定する。サブトランザクションごとに異なる指示を出すと、全体の原子性が失われるため、この記述は不適切である。
選択肢イ(正解)
これは正解だよ。2相コミットでは、主サイトが全体のコミットまたはロールバックを決定する。しかし、主サイトの最終指示が通信障害などでサイトに届かないと、サイト側は自分のサブトランザクションを確定すべきか取り消すべきか判断できない場合がある。
選択肢ウ
これは不正解だよ。2相コミットは、サブトランザクションの一つでもロールバックが必要になった場合、全体をコミットせず、トランザクション全体をロールバックする考え方である。一部がロールバックされても全体をコミットするという記述は、原子性と一致しない。
選択肢エ
これは不正解だよ。1相コミットで各サイトが独自にコミットすると、サイトごとに確定状態が異なる可能性がある。その場合、分散データベース全体で同じ結果にならず、サイト間の一貫性を保証できない。全体を協調して確定する制御が必要である。
学習のポイント
2相コミットの目的と、最終決定が各サイトへ伝わらない場合の状態を理解する。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 データベーススペシャリスト試験 午前Ⅱ 問12(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針