ホーム > データベーススペシャリスト試験 > 2021年
データベーススペシャリスト試験 2021年 午前2 問12
分散データベースのトランザクションが複数のサブトランザクションに分割され複数のサイトで実行されるときトランザクションのコミット制御に関する記述のうち適切なものはどれか。
ア:2相コミットではサブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
イ:2相コミットを用いてもサブトランザクションが実行されるサイトに主サイトの指示が届かずサブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。(正解)
ウ:2相コミットを用いるとサブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
エ:集中型データベースのコミット制御である1相コミットで分散データベースを構成する個々のサイトが独自にコミットを行ってもサイト間のデータベースの一貫性は保証できる。
解説
分散データベースのトランザクションコミット制御【午前2 解説】
要点まとめ
- 結論:分散トランザクションのコミット制御では、主サイトからの指示が届かない場合、サブトランザクションはコミットかロールバックか判断できないことがある。
- 根拠:2相コミットプロトコルは全サイトの合意を得てからコミットを決定するが、通信障害などで指示が届かないケースが存在するため。
- 差がつくポイント:2相コミットの仕組みとその限界、特に通信障害時の状態不確定問題を理解しているかが重要。
正解の理由
選択肢イは、2相コミットにおける「不確定状態」の存在を正しく説明しています。2相コミットは、準備フェーズで全サイトがコミット可能かを確認し、コミットフェーズで主サイトが最終決定を伝えます。しかし、決定指示がサブサイトに届かない場合、サブサイトはコミットすべきかロールバックすべきか判断できず、状態が不確定になります。これが2相コミットの最大の課題であり、選択肢イはこの点を的確に述べています。
よくある誤解
2相コミットは完全に安全で必ず全サイトが同じ結果になると誤解されがちですが、通信障害時にはサブサイトが決定を待つ不確定状態が発生します。
解法ステップ
- 分散トランザクションのコミット制御方式を理解する。
- 2相コミットの「準備フェーズ」と「コミットフェーズ」の流れを確認する。
- 各選択肢が2相コミットの特徴や問題点を正しく説明しているか検証する。
- 通信障害時のサブトランザクションの状態を考慮し、最も適切な説明を選ぶ。
選択肢別の誤答解説
- ア: 2相コミットでは全サイトが同じ決定(コミットかロールバック)を行うため、サブトランザクションごとに異なる指示を出すことはありません。
- イ: 正解。通信障害などで主サイトの最終指示が届かず、サブトランザクションが判断できない不確定状態が存在します。
- ウ: 2相コミットは全サイトの合意がなければコミットされないため、サブトランザクションがロールバックされてもトランザクション全体がコミットされることはありません。
- エ: 1相コミットは分散環境での一貫性を保証できず、サイト間で独自にコミットすると整合性が崩れるため不適切です。
補足コラム
2相コミットの問題点を解決するために、3相コミットやPaxos、Raftなどの分散合意アルゴリズムが提案されています。これらは不確定状態を減らし、より高い可用性と一貫性を実現します。
FAQ
Q: 2相コミットでサブトランザクションが不確定状態になるとはどういう意味ですか?
A: 主サイトの最終決定が届かず、サブサイトがコミットかロールバックか判断できない状態を指します。
A: 主サイトの最終決定が届かず、サブサイトがコミットかロールバックか判断できない状態を指します。
Q: 1相コミットはなぜ分散データベースで使えないのですか?
A: 1相コミットは各サイトが独立してコミットするため、サイト間の整合性や一貫性が保証できません。
A: 1相コミットは各サイトが独立してコミットするため、サイト間の整合性や一貫性が保証できません。
関連キーワード: 分散トランザクション, 2相コミット, コミット制御, 不確定状態, 分散データベース