分散データベースの同期制御
■ 分散データベース。 複数のサーバに分散して置かれたデータベースを それぞれのサイトやサーバから、 あたかも単一のデータベースの如く取り扱えるようにしたもの。 データベース容量が拡大する、WAN通信費用が軽減される、 障害発生時の可用性が高まる、などの利点がある。 ■ 分散データベースの同期制御 分散データベースシステムでは、 複数のシステムに対し複数のトランザクションがアクセスするので、 同期制御に工夫が必要である。 具体的には、2相ロック方式や2相コミットメント方式を用いる ■ 2相ロック。2 Phase Lock。 分散データベース環境において、 複数のシステム間で整合を保ちながら更新するための制御方式。 第1フェーズと第2フェーズからなる。 (1) 第1フェーズ。 ロック操作。 最初に当該トランザクションにかかる、 分散システム上のすべてのリソースをロックする。 全てロックが完了してから、処理を実行する。 (2) 第2フェーズ。 アンロック操作。 不要になったリソースから順次アンロックする。 トランザクション中に一度でもアンロック操作を行なったら、 それ以降、ロックは行なわない。 ■ 2相コミットメント。 分散データベース環境において、 複数のシステム間で整合を保ちながら更新するための制御方式。 第1フェーズと第2フェーズからなる。 (1) 第1フェーズ マスター(コミット指示を最初に受けたコンピュータ)は、 更新対象となるデータを保有する全てのシステムに対し コミットの可否を問い合わせる。 各システムは、コミットの準備ができればコミットOKを応答する。 なおこの時点では、各システムは、処理を完了(コミット)することも、 元の状態に戻す(ロールバック)することもできるセキュアな状態にある。 (2) 第2フェーズ マスターが、第1フェーズの結果を見て、 処理をコミットするかロールバックするかを決定する。 各システムからの応答がすべてOKであれば、 当然各システムに対しコミット実行を指示するが、 1つでもNO(または無応答)がある場合、ロールバックを指示する。 各システムは、実行を完了した後、マスターに応答する ただし、指示を出す直前にマスターに障害が発生すると、 マスターが回復するまで、各システムは コミットもロールバックも行えない状態になる。 また、指示後にあるシステムに障害があった場合には、 システム間でデータの不整合が発生することとなる。 以上。 2004/03/10 pm