分散データベースでは、一つのトランザクションを複数のサイトに対して実行する場合があります。この場合、トランザクションが複数のサイトにまたがりつつも、あるサイトではコミットされ、あるサイトではロールバックされる(=原子性【→20】が失われる)事がないように、特殊なコミットメント制御が必要になります。
<1>1相コミットメント制御
下図のように1回のコミット要求でトランザクションが確定する方法を1相コミットメント制御と呼びます。
この制御方式では、主サイトからのコミット要求後(下記シーケンスの×と示した二カ所のいずれか)に障害が発生した場合、結果としてコミットしたサイトとロールバックしたサイトの両方が存在してしまい、原子性が崩れるという問題点があります。
<2>2相コミットメント制御(2相コミット)
1相コミットメント制御に対して、下図のようにコミット準備要求のシーケンスを追加したのが2相コミットメント制御です。コミット準備要求により、全ての従サイトがコミットもロールバックも可能なセキュアな状態になったことを確認した後、主サイトの指示によりコミットを行います。
尚、従サイトはコミット準備の応答をした後、セキュアな状態のまま待ち続けるため、主サイトがこの応答を受けた直後(下図×で示したタイミング)に、主サイトで障害が起きると、主サイトが復旧するまで、従サイトが待ち状態になるという問題点があります。
本分野については、午前問題で「2相コミットの処理として正しい内容を答える」もしくは「2相コミットの処理の中で、障害が起きるとまずいタイミングについて」のいずれかの問題がほぼ確実に出題されます。これらの問いに答えられるよう、再度シーケンス図を確認してください。
分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行される。このとき、トランザクションのコミット制御に関する記述のうち、適切なものはどれか。
ア 2相コミットでは、サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても、主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示をする場合がある。
イ 2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
ウ 2相コミットを用いると、サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
エ 集中型データベースのコミット制御である1相コミットで、個々のサイトが独自に分散型データベースのコミットを行っても、サイト間のデータベースの一貫性は保持できる。
(H27春DB午前II問12)
解答 演習29-4 イ
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
本試験過去問題による類題演習 | |
---|---|
□H26 午前II問12 | 2相コミットプロトコルの正常処理の流れ |
□H15 午前問37 | 2相コミットメントプロトコルの正常処理の流れ |
□H18 午前問38 | 2相コミットのコマンドシーケンス |
□H16 午前問37 | 2相コミットにおいて障害時にブロック状態になるタイミング |
□H25 午前II問13 | 2相コミットにてコミットすべきかロールバックすべきかを判断できなくなるような障害 |
□H14 午前問37 | データベース更新ににおける2相コミットに関する記述 |
分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行される。このとき、トランザクションのコミット制御に関する記述のうち、適切なものはどれか。
(H24春DB午前II問12)
ア 2相コミットでは、すべてのサブトランザクションからコミット了承応答が届いても、必ずしもすべてのサブトランザクションをコミットするとは限らない。
イ 2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
ウ 2相コミットを用いると、サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
エ 集中型データベースのコミット制御である1相コミットで、個々のサイトが独自に分散データベースのコミットを行っても、サイト間のデータベースの一貫性は保証できる。
解答 Point check イ
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
Copyright © ITmedia, Inc. All Rights Reserved.