DBデータベーススペシャリスト試験 午前Ⅱ

平成29年度春期 データベーススペシャリスト 午前Ⅱ 問14

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

データベース更新における2相コミットに関する記述のうち,適切なものはどれか。

選択肢

  1. ア
    2相コミットは,トランザクションの処理途中のデータを他のトランザクションから参照できなくする制御方式のことである。
  2. イ
    2相コミットを行うためには,同時に更新しようとする分散データベースの全てが更新可能かどうかを判断するためのやり取りが必要である。
  3. ウ
    2相コミットを採用している場合,ロールバックは発生しない。
  4. エ
    2相コミットを使えば,通信異常が発生しても,トランザクションをコミットさせることができる。
解き方のヒントを見る

トランザクション境界の見極め

処理のまとまりをどこで区切るかに注目し、途中状態が他の処理から見える可能性や、複数の更新が一体として扱われる必要性を整理して、各選択肢の前提を比べます。用語の定義と設問の状況を分けて確認しましょう。

この問題で問われていること

一つの処理単位として扱う範囲に焦点を絞り、開始から完了までに関係する更新の組合せ、途中で失敗した場合の扱い、他の処理との関係を読み取って比較します。細かな実装方式や計算は後回しにします。

視点

処理の境界を考えるときは、関連する操作を一つのまとまりとして捉える必要があるか、途中経過を周囲から分けて扱えるかを整理します。

確認ポイント

  • 一連の操作として扱う範囲を確認する
  • 途中状態が関係するかを整理する
  • 失敗時に影響する範囲を比較する
正解と解説を見る

正解

イ

解説

2相コミットは、複数のデータベースにまたがるトランザクションを整合的に確定するための手順です。全参加先が更新可能かを確認するやり取りを行い、障害時にはロールバックが起こり得る。

理由

2相コミットでは、分散データベースの各参加先が更新可能かどうかを確認する段階と、その結果に基づいて確定する段階を分ける。この確認のため、参加先とのやり取りが必要になる。したがって、適切なのはイです。

比較

アは、処理途中のデータを他のトランザクションから参照できなくする分離制御の説明であり、2相コミットそのものの定義ではありません。ウは誤りで、障害や処理失敗などによりロールバックは起こり得る。エも、通信異常があっても必ずコミットできるとは限らない。

選択肢ア

これは不正解だよ。処理途中のデータを他のトランザクションから参照できなくすることは、トランザクションの分離性やロックなどに関係する制御である。2相コミットは、分散データベース全体で更新を確定するための合意手順を指すため、この説明は目的と定義が異なる。

選択肢イ(正解)

これは正解だよ。2相コミットでは、同じトランザクションで更新する分散データベースの各参加先について、更新を確定できる状態かどうかを確認するやり取りが必要である。その確認結果に基づいて、全体の更新を確定するかどうかを決める。

選択肢ウ

これは不正解だよ。2相コミットを採用していても、参加先の障害や処理失敗などによって更新を確定できない場合がある。そのような場合には、トランザクションの結果を取り消すロールバックが発生し得るため、ロールバックは発生しないという説明は誤りである。

選択肢エ

これは不正解だよ。2相コミットは、分散データベース間で更新可能かどうかを確認してから確定する仕組みである。通信異常が発生すると必要な確認や指示が完了しないことがあり、トランザクションを必ずコミットさせられるわけではない。

学習のポイント

2相コミットの目的と、障害時に確定できない場合の扱いを理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成29年度春期 データベーススペシャリスト試験 午前Ⅱ 問14(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針