(57)【特許請求の範囲】
【請求項１】
データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバを複数備えるデータベースシステムにおいて、
第１のデータベースサーバは、
上記第１のデータベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に上記第１のデータベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替えるコミットメント制御部と、
上記第２のデータベースサーバが障害から復旧した後に、上記第１のデータベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記第２のデータベースサーバに送信するバックアップ生成部と、
上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記第１のデータベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記第２のデータベースサーバに送信してデータ整合を要求するデータ整合要求部とを有し、
上記第２のデータベースサーバは、
障害から復旧する際に、上記第１のデータベースサーバから受信したバックアップデータを、上記第２のデータベースサーバの上記データベース部に展開させるバックアップ展開部と、
上記第１のデータベースサーバから差分データが供給されると、その差分データに基づいて上記第２のデータベースサーバの上記データベース部のデータ更新を行うデータ整合実行部と、
上記第２のデータベースサーバは、上記第２のデータベースサーバの上記データベース部にバックアップデータが展開された後、上記第２のデータベースサーバの上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記第１のデータベースサーバに送信するバックアップ先最新更新データ探索部とを有し、
上記第１のデータベースサーバの上記データ整合要求部は、上記第１のデータベースサーバの上記データベース部から、上記第２のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記第２のデータベースサーバに送信する
ことを特徴とするデータベースシステム。
【請求項２】
上記第１のデータベースサーバは、上記第２のデータベースサーバの上記データベース部にバックアップデータが展開された後、上記第１のデータベースサーバの上記データベース部で最新に更新された最新更新データを探索して、当該最新更新データのデータ更新時刻を取得するバックアップ元最新更新データ探索部をさらに備え、
上記データ整合要求部は、上記バックアップ元最新更新データ探索部で取得したデータ更新時刻と、上記第２のデータベースサーバから取得したデータ更新時刻とが一致する場合、上記第２のデータベースサーバにデータ整合を要求する処理を行わない
ことを特徴とする請求項１に記載のデータベースシステム。
【請求項３】
データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバにおいて、
当該データベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に当該データベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替えるコミットメント制御部と、
上記他のデータベースサーバが障害から復旧した後に、当該データベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記他のデータベースサーバに送信するバックアップ生成部と、
上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に当該データベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記他のデータベースサーバに送信してデータ整合を要求するデータ整合要求部とを有し、
上記データ整合要求部は、上記データベース部から、上記他のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記他のデータベースサーバに送信する
ことを特徴とするデータベースサーバ。
【請求項４】
データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバにおいて、
障害から復旧する際に、他のデータベースサーバからバックアップデータを受信すると、受信したバックアップデータを当該データベースサーバの上記データベース部に展開させるバックアップ展開部と、
上記他のデータベースサーバから、上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記他のデータベースサーバの上記データベース部で更新された差分データが供給されると、その差分データに基づいて当該データベースサーバの上記データベース部のデータ更新を行うデータ整合実行部と、
上記データベース部にバックアップデータが展開された後、上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記他のデータベースサーバに送信するバックアップ先最新更新データ探索部と
を有することを特徴とするデータベースサーバ。
【請求項５】
データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバに搭載されたコンピュータを、
当該データベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に当該データベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替えるコミットメント制御部と、
上記他のデータベースサーバが障害から復旧した後に、当該データベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記他のデータベースサーバに送信するバックアップ生成部と、
上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に当該データベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記他のデータベースサーバに送信してデータ整合を要求するデータ整合要求部として機能させ、
上記データ整合要求部は、上記データベース部から、上記他のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記他のデータベースサーバに送信する
ことを特徴とするデータベースサーバプログラム。
【請求項６】
データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバに搭載されたコンピュータを、
障害から復旧する際に、他のデータベースサーバからバックアップデータを受信すると、受信したバックアップデータを当該データベースサーバの上記データベース部に展開させるバックアップ展開部と、
上記他のデータベースサーバから、上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記他のデータベースサーバの上記データベース部で更新された差分データが供給されると、その差分データに基づいて当該データベースサーバの上記データベース部のデータ更新を行うデータ整合実行部と、
上記データベース部にバックアップデータが展開された後、上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記他のデータベースサーバに送信するバックアップ先最新更新データ探索部と
して機能させることを特徴とするデータベースサーバプログラム。
【請求項７】
データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバを複数備えるデータベースシステムの制御方法において、
第１のデータベースサーバは、コミットメント制御部、バックアップ生成部、及びデータ整合要求部を有し、
第２のデータベースサーバは、バックアップ展開部、データ整合実行部、及びバックアップ先最新更新データ探索部を有し、
上記コミットメント制御部は、上記第１のデータベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に上記第１のデータベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替え、
上記バックアップ生成部は、上記第２のデータベースサーバが障害から復旧した後に、上記第１のデータベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記第２のデータベースサーバに送信し、
上記データ整合要求部は、上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記第１のデータベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記第２のデータベースサーバに送信してデータ整合を要求し、
上記バックアップ展開部は、障害から復旧する際に、上記第１のデータベースサーバから受信したバックアップデータを、上記第２のデータベースサーバの上記データベース部に展開させ、
上記データ整合実行部は、上記第１のデータベースサーバから差分データが供給されると、その差分データに基づいて上記第２のデータベースサーバの上記データベース部のデータ更新を行い、
上記バックアップ先最新更新データ探索部は、上記第２のデータベースサーバの上記データベース部にバックアップデータが展開された後、上記第２のデータベースサーバの上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記第１のデータベースサーバに送信し、
上記データ整合要求部は、上記第１のデータベースサーバの上記データベース部から、上記第２のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記第２のデータベースサーバに送信する
ことを特徴とするデータベースシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステム、データベースサーバ、データベースサーバプログラム、及びデータベースシステムの制御方法に関し、例えば、データベースサーバが冗長化されたデータベースシステムに適用し得る。
【背景技術】
【０００２】
従来のデータベース分散トランザクション環境下でのデータ更新においては、分散されたデータベース間のデータの整合性を保つため、データ更新の際に、データベースサーバで二相コミットメントのプロトコルに従ったデータ更新が行われる場合がある。
【０００３】
従来の分散トランザクション環境のデータベースシステムとしては、例えば、特許文献１に記載されたシステムがある。特許文献１に記載されたデータベースシステムでは、１つのデータベースサーバで障害等が発生して二相コミットメントの許可を発行できなくなった場合でも、他方の正常に動作しているデータベースサーバが一時的に一相コミットメントでの動作（すなわち、単独でのコミットメントの実行）を行う。そして、一時的に一相コミットメントで動作している第１のデータベースサーバでは、一相コミットメントで動作している間に更新したデータを管理し、停止していた第２のデータベースサーバの復旧後に第２のデータベースサーバとのデータ整合（復旧したデータベースサーバに一相コミットメントで動作している間に更新されたデータを供給）を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１２２９３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されたデータベースシステムでは、第２のデータベースサーバが停止している間に第１のデータベースサーバに大量のデータ更新が発生した場合、第２のデータベースサーバの復旧後に第１のデータベースと同期させる処理が長時間化する場合がある。特に第１のデータベースと第２のデータベースのロケーションが異なる場合には、ロケーション間の通信回線がボトルネックとなって、データ同期の処理時間が長期化するおそれがある。この場合、従来のデータベースシステムでデータ復旧時間を短縮するには、通信回線を高速化する等の対応が必要となるが、通信回線の高速化にはランニングコストが高くなる等の問題がある。従来のデータベースシステムにおいて、停止した第２のデータベースサーバが復旧する際のデータ整合（データ同期）の処理が長時間化すると、データ同期が完了するまでの間に第１のデータベースサーバの障害が発生する恐れや、データ整合の処理の間データベースシステムのスループットが低下する等の問題が発生する。
【０００６】
そのため、複数のデータベースサーバで同時にデータ更新を行うデータベースシステム（例えば、二相コミットメントプロトコルや三相コミットメントプロトコルに対応したデータベースシステム）において、停止したデータベースサーバの復旧時のデータ整合を効率的に行うことができるデータベースシステム、データベースサーバ、データベースサーバプログラム、及びデータベースシステムの制御方法が望まれている。
【課題を解決するための手段】
【０００７】
第１の本発明は、データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバを複数備えるデータベースシステムにおいて、（１）第１のデータベースサーバは、（１−１）上記第１のデータベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に上記第１のデータベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替えるコミットメント制御部と、（１−２）上記第２のデータベースサーバが障害から復旧した後に、上記第１のデータベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記第２のデータベースサーバに送信するバックアップ生成部と、（１−３）上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記第１のデータベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記第２のデータベースサーバに送信して当該データベースサーバとのデータ整合を要求するデータ整合要求部とを有し、（２）上記第２のデータベースサーバは、（２−１）障害から復旧する際に、上記第１のデータベースサーバから受信したバックアップデータを、上記第２のデータベースサーバの上記データベース部に展開させるバックアップ展開部と、（２−２）上記第１のデータベースサーバから差分データが供給されると、その差分データに基づいて上記第２のデータベースサーバの上記データベース部のデータ更新を行うデータ整合実行部と、（２−３）上記第２のデータベースサーバは、上記第２のデータベースサーバの上記データベース部にバックアップデータが展開された後、上記第２のデータベースサーバの上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記第１のデータベースサーバに送信するバックアップ先最新更新データ探索部とを有し、（３）上記第１のデータベースサーバの上記データ整合要求部は、上記第１のデータベースサーバの上記データベース部から、上記第２のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記第２のデータベースサーバに送信することを特徴とする。
【０００８】
第２の本発明は、データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバにおいて、（１）当該データベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に当該データベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替えるコミットメント制御部と、（２）上記他のデータベースサーバが障害から復旧した後に、当該データベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記他のデータベースサーバに送信するバックアップ生成部と、（３）上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に当該データベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記他のデータベースサーバに送信してデータ整合を要求するデータ整合要求部とを有し、（４）上記データ整合要求部は、上記データベース部から、上記他のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記他のデータベースサーバに送信することを特徴とする。
【０００９】
第３の本発明は、データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバにおいて、（１）障害から復旧する際に、他のデータベースサーバからバックアップデータを受信すると、受信したバックアップデータを当該データベースサーバの上記データベース部に展開させるバックアップ展開部と、（２）上記他のデータベースサーバから、上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記他のデータベースサーバの上記データベース部で更新された差分データが供給されると、その差分データに基づいて当該データベースサーバの上記データベース部のデータ更新を行うデータ整合実行部と、（３）上記データベース部にバックアップデータが展開された後、上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記他のデータベースサーバに送信するバックアップ先最新更新データ探索部とを有することを特徴とする。
【００１０】
第４の本発明のデータベースサーバプログラムは、データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバに搭載されたコンピュータを、（１）当該データベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に当該データベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替えるコミットメント制御部と、（２）上記他のデータベースサーバが障害から復旧した後に、当該データベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記他のデータベースサーバに送信するバックアップ生成部と、（３）上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に当該データベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記他のデータベースサーバに送信してデータ整合を要求するデータ整合要求部として機能させ、（４）上記データ整合要求部は、上記データベース部から、上記他のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記他のデータベースサーバに送信することを特徴とする。
【００１１】
第５の本発明のデータベースサーバプログラムは、データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバに搭載されたコンピュータを、（１）障害から復旧する際に、他のデータベースサーバからバックアップデータを受信すると、受信したバックアップデータを当該データベースサーバの上記データベース部に展開させるバックアップ展開部と、（２）上記他のデータベースサーバから、上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記他のデータベースサーバの上記データベース部で更新された差分データが供給されると、その差分データに基づいて当該データベースサーバの上記データベース部のデータ更新を行うデータ整合実行部と、（３）上記データベース部にバックアップデータが展開された後、上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記他のデータベースサーバに送信するバックアップ先最新更新データ探索部として機能させることを特徴とする。
【００１２】
第６の本発明は、データを保持するデータベース部と、他のデータベースサーバと同時に上記データベース部のデータ更新を行う第１のコミットメントプロトコル及び単独で上記データベース部のデータ更新を行う第２のコミットメントプロトコルに対応するデータベース処理部とを有するデータベースサーバを複数備えるデータベースシステムの制御方法において、（１）第１のデータベースサーバは、コミットメント制御部、バックアップ生成部、及びデータ整合要求部を有し、（２）第２のデータベースサーバは、バックアップ展開部、及びデータ整合実行部を有し、（３）上記コミットメント制御部は、上記第１のデータベースサーバの上記データベース処理部を、上記第１のコミットメントプロトコル又は上記第２のコミットメントプロトコルのいずれかのコミットメントプロトコルで動作する状態に制御するものであって、第２のデータベースサーバの障害発生時に上記第１のデータベースサーバの上記データベース処理部を第１のコミットメントプロトコルで動作する状態から第２のコミットメントプロトコルで動作する状態に切り替え、（４）上記バックアップ生成部は、上記第２のデータベースサーバが障害から復旧した後に、上記第１のデータベースサーバの上記データベース部のデータに基づくバックアップデータを生成して、上記第２のデータベースサーバに送信し、（５）上記データ整合要求部は、上記バックアップデータを構成するデータのうち最新に更新されたデータの更新時刻後に上記第１のデータベースサーバの上記データベース部で更新された差分データを抽出し、抽出した差分データを上記第２のデータベースサーバに送信してデータ整合を要求し、（６）上記バックアップ展開部は、障害から復旧する際に、上記第１のデータベースサーバから受信したバックアップデータを、上記第２のデータベースサーバの上記データベース部に展開させ、（７）上記データ整合実行部は、上記第１のデータベースサーバから差分データが供給されると、その差分データに基づいて上記第２のデータベースサーバの上記データベース部のデータ更新を行い、（８）上記バックアップ先最新更新データ探索部は、上記第２のデータベースサーバの上記データベース部にバックアップデータが展開された後、上記第２のデータベースサーバの上記データベース部で最新に更新された最新更新データを探索し、当該最新更新データのデータ更新時刻を取得して上記第１のデータベースサーバに送信し、（９）上記データ整合要求部は、上記第１のデータベースサーバの上記データベース部から、上記第２のデータベースサーバから取得したデータ更新時刻以後に更新されたデータを差分データとして抽出して、上記第２のデータベースサーバに送信することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数のデータベースサーバで同時にデータ更新を行うデータベースシステムにおいて、停止したデータベースサーバの復旧時のデータ整合を効率的に行うことができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態に係るデータベースシステムの全体構成について示したブロック図である。
【図２】第１の実施形態に係るデータベースシステムの動作について示したシーケンス図（その１）である。
【図３】第１の実施形態に係るデータベースシステムの動作について示したシーケンス図（その２）である。
【図４】第１の実施形態に係るデータベースシステムにおける各データベースサーバのデータ構成の遷移について示した説明図である。
【図５】第２の実施形態に係るデータベースサーバの動作について示したフローチャートである。
【図６】第２の実施形態に係るデータベースシステムの動作について示したシーケンス図である。
【図７】第２の実施形態に係るデータベースシステムにおける各データベースサーバのデータ構成の遷移について示した説明図である。
【発明を実施するための形態】
【００１５】
（Ａ）第１の実施形態
以下、本発明によるデータベースシステム、データベースサーバ、データベースサーバプログラム、及びデータベースシステムの制御方法の第１の実施形態を、図面を参照しながら詳述する。
【００１６】
（Ａ−１）第１の実施形態の構成
図１は、この実施形態のデータベース(以下、「ＤＢ」とも呼ぶ)システム１の全体構成を示すブロック図である。
【００１７】
ＤＢシステム１は、ＤＢクライアント１０、及び２つのＤＢサーバ２０（２０−１、２０−２）を有している。また、ＤＢクライアント１０、ＤＢサーバ２０−１、２０−２は、それぞれネットワークＮに接続しているものとする。
【００１８】
ＤＢシステム１は、ＤＢクライアント１０から、ＤＢサーバ２０−１、２０−２にＤＢのデータ更新や参照などのトランザクションが与えられ、処理が行われる分散トランザクション環境のシステムである。
【００１９】
ＤＢクライアント１０は、ＤＢサーバ２０−１、２０−２にＤＢに係るトランザクションを与えるものである。図１においては、ＤＢクライアント１０は１つの構成となっているが、その数は限定されないものである。ＤＢクライアント１０は、例えば、ＰＣなどの情報処理装置（１台に限定されず、複数台を分散処理し得るようにしたものであっても良い。）上に、ＤＢクライアントプログラムをインストールすることにより構築するようにしてもよい。
【００２０】
ＤＢサーバ２０（２０−１、２０−２）は、ＤＢクライアント１０から与えられたトランザクションの処理を行うものである。ＤＢサーバ２０−１、２０−２は、ＰＣなどの情報処理装置（１台に限定されず、複数台を分散処理し得るようにしたものであっても良い。）上に、プログラム（実施形態のデータベースサーバプログラムやデータベースのミドルウェアを含む）をインストールすることにより構築されるものであるが、機能的には図１のように表すことができる。なお、以下では、ＤＢサーバ２０−１、２０−２は同じ構成であるものとして説明するが、一部が異なる構成としてもよい。なお、ＤＢシステム１を構成するＤＢサーバ２０の台数は３台以上としてもよい。
【００２１】
次に、各ＤＢサーバ２０の内部構成について説明する。
【００２２】
ＤＢサーバ２０は、ＲＤＢＭＳ２１、データ記憶部２２、及びデータベース制御部２３を有している。
【００２３】
ＲＤＢＭＳ２１は、ＤＢ管理システム（Ｄａｔａ  Ｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）の機能（データベース処理部の機能）を担っており、例えば、ＤＢクライアント１０からトランザクションを受け取り、データ記憶部２２のデータベースを制御するなどして受け取ったトランザクションの処理を行うものである。ＲＤＢＭＳ２１は、例えば、種々のデータベースシステム（ミドルウェア）を用いて構築することができる。
【００２４】
データ記憶部２２は、ＤＢサーバ２０において、データベースのデータを記憶する機能（データベース部の機能）などを担っており、例えば、ＲＤＢＭＳ２１の制御に基づいて記憶しているデータの更新を行う。なお、データ記憶部２２に記憶されるデータベースの各データには、最新の更新時刻（タイムスタンプ）が設定されているものとする。データ記憶部２２に記憶されるデータでは、最初の登録時点でその登録時の時刻が更新時刻として設定され、その後データ更新される度に更新時刻も更新されるものとする。
【００２５】
データベース制御部２３は、ＲＤＢＭＳ２１に対する制御、及び対向するＤＢサーバ２０（同一の冗長系を構成しているＤＢサーバ２０との連携処理等の制御機能を担っている。データベース制御部２３は、バックアップ管理部２３１、最新更新データ探索部２３２、フラグ更新時刻補正部２３３、フラグ制御部２３４、及びデータ整合処理部２３５を有している。
【００２６】
フラグ制御部２３４は、自装置のＤＢのデータ更新方式（二相コミットメント又は一相コミットメント）について制御（切替）するコミットメント制御部の機能を担っている。また、フラグ制御部２３４は、データ更新方式の制御に係るパラメータとしてコミットメントフラグＦ及びフラグ更新時刻Ｔを管理（記憶）している。
【００２７】
コミットメントフラグＦは、当該ＤＢサーバ２０において、ＤＢのデータ更新が二相コミットメントにより行われるか否か（他のＤＢサーバ２０と同時にデータ更新を行うか否か）を示すフラグである。この実施形態では、コミットメントフラグＦが「ＯＮ」に設定されている場合ＤＢのデータ更新が二相コミットメントにより行われることを示し、コミットメントフラグＦが「ＯＦＦ」に設定されていた場合には、一相コミットメントによりデータ更新が行われることを示しているものとする。
【００２８】
なお、コミットメントフラグＦの内容は、ＤＢクライアント１０のクライアントライブラリ１１により読込まれ、クライアントライブラリ１１では、ＤＢのデータ更新に関するトランザクションについて、コミットメントフラグＦの内容に応じて、ＤＢサーバ２０へ送信するトランザクションの内容を変化させるようにしてもよい。また、コミットメントフラグＦの内容は、クライアントライブラリ１１が、二相コミットメントを実施出来ない事を認識できれば良いので、「ＯＮ／ＯＦＦ」などのフラグによる表示ではなく、「二相コミットメントプロトコル／一相コミットメントプロトコル」などの表示であっても良く、その表示方式は限定されないものである。
【００２９】
クライアントライブラリ１１では、二相コミットメントプロトコルによりデータ更新ができなくなり、いずれかのＤＢサーバ２０のコミットメントフラグＦがＯＦＦに設定された場合には、全てのＤＢサーバ２０からコミットメントフラグＦの読込みを試行し、コミットメントフラグＦがＯＦＦに設定されたＤＢサーバにだけデータ更新のトランザクションを送信して一相コミットメントによりデータ更新を行うようにしても良い。例えば、ＤＢサーバ２０−１が保守作業などにより停止中に、ＤＢサーバ２０−２において、コミットメントフラグＦの内容が「ＯＦＦ」に設定されていた場合には、クライアントライブラリ１１は、コミットメントフラグＦの内容を読込むと、ＤＢサーバ２０−２にだけＤＢ更新のトランザクションを送信し、ＤＢサーバ２０−２ではそのトランザクションによりＤＢのデータ更新を行う。
【００３０】
クライアントライブラリ１１が、コミットメントフラグＦの内容を読込む契機としては、例えば、クライアントライブラリ１１が、ＤＢサーバ２０−１、２０−２にＤＢ接続（ＲＤＢＭＳ２１と接続）する際に読込むようにしても良いし、定期的又はトランザクションの発生ごとに読込むようにしても良いし、二相コミットできなかった場合に読込むようにしても良い。また、クライアントライブラリ１１が、それぞれのＤＢサーバ２０−１、２０−２に動作の正常性について問い合わせ（状態ポーリング）を行う際に読込んでも良い。
【００３１】
コミットメントフラグＦの内容については、例えば、保守運用作業者などのオペレータが手動で書き換えを行っても良いし、図１において図示は省略しているが、ＤＢサーバ２０−１、２０−２の内部又は外部に配置された監視装置により、ＤＢサーバの動作状況を監視し、ＤＢサーバの動作状況に応じて、フラグ制御部２３４が書き換えるようにしても良い。例えば、ＤＢサーバ２０−１が障害などにより停止した場合に、監視装置により検知し、監視装置がその旨をＤＢサーバ２０−２のフラグ制御部２３４に通知し、フラグ制御部２３４がコミットメントフラグＦの内容を「ＯＦＦ」に書き換えるようにしても良い。また、例えば、クライアントライブラリ１１が、ＤＢサーバ２０−１、２０−２の動作状況を監視し、その動作状態に応じて、フラグ制御部２３４に、コミットメントフラグＦの内容更新を要求するようにしても良い。
【００３２】
また、フラグ制御部２３４は、コミットメントフラグＦをＯＦＦからＯＮに更新する際に、その更新時刻をフラグ更新時刻Ｔに書込んで保持する。
【００３３】
以上のように、ＤＢシステム１では、一方のＤＢサーバ２０が障害やメンテナンス等により停止した場合には、他方のＤＢサーバ２０−１が一時的に一相コミットメントで動作する。そして、停止していたＤＢサーバ２０は、復帰する際に、動作を継続しているＤＢサーバ２０と、データベースのデータ（データ記憶部２２のデータ）の整合（同期）を行う。そして、データベースのデータ同期の後に、各ＤＢサーバ２０は二相コミットメントでの動作を再開する処理（コミットメントフラグＦをＯＮに変更する処理）を行う。
【００３４】
以下では、ＤＢシステム１における各ＤＢサーバ２０のデータ整合（データ同期）の処理概要について説明する。
【００３５】
バックアップ管理部２３１は、データ記憶部２２のデータのバックアップに係る処理を行う。バックアップ管理部２３１は、自装置が障害やメンテナンス等から復帰する際には、対向するＤＢサーバ２０（一時的に一相コミットメントで動作しているＤＢサーバ２０）からバックアップデータの供給を受けてデータ記憶部２２に展開し、データベースを復旧する処理を行う。また、バックアップ管理部２３１は、対向するＤＢサーバ２０が障害やメンテナンス等により停止していた状態から復帰する際に、自装置のデータ記憶部２２に記憶されているデータベースのデータをバックアップデータとして対向するＤＢサーバ２０に供給する処理を行う。
【００３６】
バックアップ管理部２３１がデータ記憶部２２からバックアップデータを保持して対向するＤＢサーバ２０に供給する具体的な方式（バックアップの方式）については限定されないものである。この実施形態では、バックアップ管理部２３１は、ＲＤＢＭＳ２１の機能を用いて、ある時点における自装置のデータベース（データ記憶部２２のデータ）のスナップショットのファイル（以下、「エクスポートファイル」とも呼ぶ）を取得し、そのエクスポートファイルをバックアップデータとして、対向するＤＢサーバ２０に供給するものとして説明する。
【００３７】
ここでは、バックアップ元のＤＢサーバ２０では、バックアップ管理部２３１が、バックアップデータ（エクスポートファイル）を生成してバックアップ先のＤＢサーバ２０に送信するバックアップ生成部として機能するものとする。このとき、バックアップ元のＤＢサーバ２０のバックアップ管理部２３１は、ＲＤＢＭＳ２１を用いて、バックアップデータの生成（ＲＤＢＭＳ２１のスナップショットの機能を利用したエクスポートファイルの生成）を行う。一方、バックアップ先のＤＢサーバ２０では、バックアップ管理部２３１が、バックアップ元のＤＢサーバ２０から供給されたバックアップデータ（エクスポートファイル）をデータ記憶部２２に展開するバックアップ展開部として機能するものとする。このとき、バックアップ先のＤＢサーバ２０のバックアップ管理部２３１は、ＲＤＢＭＳ２１を用いて、バックアップデータの展開（ＲＤＢＭＳ２１のインポート機能を利用したデータベースの展開処理）を行うものとする。
【００３８】
ただし、バックアップデータ（エクスポートファイル）のデータ量が大きくなると、バックアップデータ（エクスポートファイル）をバックアップ元のＤＢサーバ２０からバックアップ先のＤＢサーバ２０に送信する時間も長時間化することになる。この間、バックアップ元のＤＢサーバ２０では、ＤＢクライアント１０からの要求があれば、一相コミットメントでデータ更新が行われることになる。そのため、バックアップ先のＤＢサーバ２０では、データ記憶部２２へのバックアップデータの展開（エクスポートファイルのインポート）が終了した時点では、バックアップ元のＤＢサーバ２０のデータベースとの差分が発生することになる。
【００３９】
そこで、ＤＢシステム１では、バックアップ先のＤＢサーバ２０でバックアップデータの展開（エクスポートファイルのインポート）が終了した後、バックアップ元のＤＢサーバ２０からバックアップ先のＤＢサーバ２０に、差分のデータ（バックアップデータとの差分）が供給されるものとする。
【００４０】
このとき、バックアップ元のＤＢサーバ２０では、データ整合処理部２３５が、差分のデータ（バックアップデータとの差分）をデータ記憶部２２から抽出してバックアップ先のＤＢサーバ２０に送信してデータ整合を要求するデータ整合要求部として機能するものとする。このとき、データ整合処理部２３５は、ＲＤＢＭＳ２１を用いて、差分のデータ（バックアップデータとの差分）をデータ記憶部２２のデータベースから抽出する処理を行う。一方、バックアップ先のＤＢサーバ２０では、データ整合処理部２３５が、バックアップ元のＤＢサーバ２０から供給された差分のデータに基づいて、データ記憶部２２のデータベースに反映（データ更新）を行うデータ整合実行部として機能するものとする。
【００４１】
具体的には、バックアップ先のＤＢサーバ２０では、バックアップデータの展開（エクスポートファイルのインポート処理）が終了した後、最新更新データ探索部２３２により、データ記憶部２２で最新にデータ更新されたデータが探索される。すなわち、バックアップ先のＤＢサーバ２０の最新更新データ探索部２３２は、バックアップ元のＤＢサーバ２０から取得したバックアップデータ（エクスポートファイル）において、最新の更新データ（タイムスタンプが最新のデータ）を探索する処理を行う。そして、バックアップ先のＤＢサーバ２０（データベース制御部２３）で取得された最新の更新データの時刻が、バックアップ元のＤＢサーバ２０に供給されると、バックアップ元のＤＢサーバ２０では、フラグ更新時刻補正部２３３により、フラグ制御部２３４のフラグ更新時刻Ｔが供給された最新の更新データの時刻に補正される。そして、バックアップ元のＤＢサーバ２０では、データ整合処理部２３５により、補正後のフラグ更新時刻Ｔがデータ整合の起点（差分データの基準時間）として保持され、データ記憶部２２から、補正後のフラグ更新時刻Ｔ以後に更新されたデータ（フラグ更新時刻Ｔ以後のタイムスタンプのデータ）が取得される。そして、バックアップ先のＤＢサーバ２０（データ整合処理部２３５）は、バックアップ元のＤＢサーバ２０から取得したデータ（フラグ更新時刻Ｔ以後に更新されたデータ）の供給を受けて、データ記憶部２２のデータ更新を行う。これにより、バックアップ元のＤＢサーバ２０のデータベースのデータと、バックアップ先のＤＢサーバ２０のデータベースのデータが同期することになる。そして、データ同期の後に、２つのＤＢサーバ２０は二相コミットメントに移行（コミットメントフラグＦをＯＮに変更）する処理を行うことができる。
【００４２】
以上のような手順で、ＤＢシステム１では、バックアップ元のＤＢサーバ２０とバックアップ先のＤＢサーバ２０との間のデータ整合（データ同期）が行われる。
【００４３】
（Ａ−２）第１の実施形態の動作
次に、以上のような構成を有する第１の実施形態のＤＢシステム１の動作を図２〜図４を用いて説明する。
【００４４】
図２、図３は、ＤＢサーバ２０−１、２０−２の動作について示したシーケンス図である。図４は、ＤＢサーバ２０−１、２０−２が、図２、図３のシーケンス図に従って動作した場合のデータベース（データ記憶部２２のデータ）の内容の遷移について示した説明図である。以下では、ＤＢサーバ２０−２で障害等が発生して停止した場合の例について説明する。
【００４５】
まず、ＤＢサーバ２０−１、２０−２が、いずれも二相コミットメントで動作している状態（コミットメントフラグＦがＯＮの状態）で、ＤＢサーバ２０−２に障害等が発生し動作が停止したものとする（Ｓ１０１）。
【００４６】
その後、ＤＢサーバ２０−１のデータベース制御部２３（フラグ制御部２３４）で、ＤＢサーバ２０−２で障害（動作停止）が発生したことが検知され（Ｓ１０２）、コミットメントフラグＦがＯＮからＯＦＦに更新されたものとする（Ｓ１０３）。
【００４７】
また、このとき、フラグ制御部２３４は、フラグ更新時刻Ｔに現在時刻を設定する（Ｓ１０４）。ここでは、フラグ制御部２３４は、フラグ更新時刻Ｔに「2015/1/9  13:00:00」を設定したものとする。以後、ＤＢサーバ２０−１は一相コミットメントでＤＢクライアント１０からのデータ更新の処理（トランザクション処理）を受付けることになる。
【００４８】
その後、保守作業者等（以下、「オペレータ」とも呼ぶ）により、ＤＢサーバ２０−２の障害復旧（データベースのデータ以外の基本的なシステム構成の復旧）が完了したものとする（Ｓ２００）。
【００４９】
ステップＳ２０１の時点でのＤＢサーバ２０−１、２０−２のデータベースの内容（データ記憶部２２の内容）は図４（ａ）のような内容となる。
【００５０】
図４（ａ）に示すように、ステップＳ２０１の時点では、ＤＢサーバ２０−１のデータベース（データ記憶部２２）では、ＤＢサーバ２０−１、２０−２により二相コミットメントでデータ更新されたデータ群Ｄ１と、ＤＢサーバ２０−１により一相コミットメントでデータ更新されたデータ群Ｄ２とで構成されるデータベースが保持されている。また、図４（ａ）に示すように、ステップＳ２０１の時点では、ＤＢサーバ２０−２のデータベースは空の状態（初期状態）となっているものとする。言い換えると、この実施形態の例では、ステップＳ２００の時点では、ＤＢサーバ２０−２は単にハードウェア及び基本的なシステム（ＯＳやＲＤＢＭＳ等のミドルウェア等）が復旧しただけの状態であるため、データ記憶部２２にはデータが登録されていない状態となっているものとする。
【００５１】
次に、ＤＢサーバ２０−１のデータベース制御部２３（バックアップ管理部２３１）が、バックアップデータの生成（エクスポートファイルの生成）を行う（Ｓ２０１）。
【００５２】
ＤＢサーバ２０−１のバックアップ管理部２３１がバックアップデータの生成（エクスポートファイルの生成）を開始する契機については限定されないものである。ＤＢサーバ２０−１のバックアップ管理部２３１は、例えば、オペレータの操作（例えば、コンソール等によるコマンド入力等）を契機としてバックアップデータの生成を開始するようにしてもよいし、ＤＢサーバ２０−２の状態を監視して動作を開始したタイミングでバックアップデータの生成を開始するようにしてもよい。また、ＤＢサーバ２０−２のバックアップ管理部２３１が復旧後の起動時にＤＢサーバ２０−１のバックアップ管理部２３１にバックアップデータを要求し、ＤＢサーバ２０−１のバックアップ管理部２３１がＤＢサーバ２０−２からの要求に応じてバックアップデータを生成するようにしてもよい。なお、ＤＢサーバ２０−１のバックアップ管理部２３１は、ＤＢサーバ２０−２の復旧が完了する前にバックアップデータの生成を開始するようにしてもよい。なお、ここでは、ＤＢサーバ２０−１がバックアップデータの生成（エクスポートファイルの生成）を開始した時刻は「2015/1/10 9:00」であるものとする。
【００５３】
ＤＢサーバ２０−１のバックアップ管理部２３１は、バックアップデータの生成（エクスポートファイルの生成）が終了すると、生成したバックアップデータ（エクスポートファイル）を、ＤＢサーバ２０−２に送信する（Ｓ２０２）。
【００５４】
一方、ＤＢサーバ２０−２のバックアップ管理部２３１は、ＤＢサーバ２０−１からバックアップデータ（エクスポートファイル）を受信すると、そのバックアップデータ（エクスポートファイル）をデータ記憶部２２に展開する処理（エクスポートファイルのインポート処理）を行う（Ｓ２０３）。
【００５５】
ステップＳ２０２、Ｓ２０３の処理が終了した時点のＤＢサーバ２０−１、２０−２のデータベースの内容（データ記憶部２２の内容）は図４（ｂ）のような内容となる。
【００５６】
図４（ｂ）に示すようにステップＳ２０２、Ｓ２０３の処理が終了した時点（エクスポートファイルのインポート完了時点）において、ＤＢサーバ２０−２のデータ記憶部２２には、ＤＢサーバ２０−１がバックアップデータの生成（エクスポートファイルの生成）を開始した時刻（2015/1/10 9:00）のスナップショットが再現されることになる。図４（ｂ）に示すように、ステップＳ２０２、Ｓ２０３の処理が終了した時点において、ＤＢサーバ２０−２のデータ記憶部２２には、ＤＢサーバ２０−１、２０−２により二相コミットメントでデータ更新されたデータ群Ｄ１と、バックアップデータの生成開始前にＤＢサーバ２０−１により一相コミットメントでデータ更新されたデータ群Ｄ２とで構成されるデータが保持されている。
【００５７】
また、図４（ｂ）に示すようにステップＳ２０２、Ｓ２０３の処理が終了した時点（エクスポートファイルのインポートが完了時点）において、ＤＢサーバ２０−１のデータ記憶部２２には、データ群Ｄ１、Ｄ２に加えて、バックアップデータの生成開始後にＤＢサーバ２０−１により一相コミットメントでデータ更新されたデータ群Ｄ３が含まれている。
【００５８】
すなわち、図４（ｂ）に示すようにステップＳ２０２、Ｓ２０３の処理が終了した時点（エクスポートファイルのインポート完了時点）において、ＤＢサーバ２０−１、２０−２間では、データ群Ｄ３の分の差分データが発生していることになる。以後、ＤＢサーバ２０−１、２０−２では、後述するステップＳ２０４〜Ｓ２１０で、上述の差分を整合（同期）する処理を行うことになる。
【００５９】
次に、ＤＢサーバ２０−１の最新更新データ探索部２３２が、ＤＢサーバ２０−２の最新更新データ探索部２３２に、最新の更新データ（最も更新された時刻の新しいデータ）の探索を要求する（Ｓ２０４）。
【００６０】
次に、ＤＢサーバ２０−２の最新更新データ探索部２３２は、データ記憶部２２内で最新の更新データ（最も更新時刻の新しいデータ）を探索して取得する（Ｓ２０５）。そして、ＤＢサーバ２０−２の最新更新データ探索部２３２は、取得した最新の更新データの更新時刻（更新時のタイムスタンプ）を取得して、ＤＢサーバ２０−１の最新更新データ探索部２３２に返答する（Ｓ２０６）。ここでは、ＤＢサーバ２０−２の最新更新データ探索部２３２が取得した最新の更新データの更新時刻が、「2015/1/10 8:55」であったものとする。
【００６１】
次に、ＤＢサーバ２０−１のフラグ更新時刻補正部２３３は、フラグ制御部２３４のフラグ更新時刻Ｔを、最新更新データ探索部２３２が取得した更新時刻（ここでは、「2015/1/10 8:55」）に更新する（Ｓ２０７）。
【００６２】
次に、ＤＢサーバ２０−１のデータ整合処理部２３５が、ＤＢサーバ２０−２とのデータ整合（データ同期）の起点時刻として、補正後のフラグ更新時刻Ｔ（ここでは、「2015/1/10 8:55」）を取得する（Ｓ２０８）。
【００６３】
次に、ＤＢサーバ２０−１のデータ整合処理部２３５が、データ記憶部２２から、データ整合（データ同期）の起点時刻（ここでは、「2015/1/10 8:55」）以後に更新されたデータを検索して、ＤＢサーバ２０−２のデータ整合処理部２３５に送信する（Ｓ２０９）。なお、ＤＢサーバ２０−１では、ステップＳ２０９の処理中であっても、ＤＢクライアント１０から一相コミットメントによりデータ更新を受付ける処理を継続している。したがって、ＤＢサーバ２０−１のデータ整合処理部２３５は、自装置のデータ記憶部２２の最新更新データの送信処理が終了するまで、ステップＳ２０９の処理を継続する必要がある。
【００６４】
一方、ＤＢサーバ２０−２のデータ整合処理部２３５は、ＤＢサーバ２０−１から供給されたデータをデータ記憶部２２のデータベースに反映する処理を行う（Ｓ２１０）。
【００６５】
なお、このとき、ＤＢサーバ２０−２のデータ整合処理部２３５は、ＤＢサーバ２０−１とのデータ整合処理（同期処理）の一環として、自装置のデータ記憶部２２に存在するデータであってＤＢサーバ２０−１のデータ記憶部２２に存在しないデータ（バックアップデータの生成開始後にＤＢサーバ２０−１により一相コミットメントで削除されたデータ）を、検索して削除する処理を行うことが望ましい。また、ＤＢサーバ２０−１のデータ整合処理部２３５は、データ整合に必要な最後のデータ送信を行う際に、ＤＢサーバ２０−２のデータ整合処理部２３５にその旨（データ整合の処理が終了した旨）を通知するようにしてもよい。これにより、ＤＢサーバ２０−２側で、データ整合の処理が終了したことを認識することができる。
【００６６】
以上のように、ＤＢサーバ２０−１、２０−２では、データベースのデータ整合（データ同期）の処理が行われる。
【００６７】
ステップＳ２０９、Ｓ２１０の処理が終了した時点のＤＢサーバ２０−１、２０−２のデータベースの内容（データ記憶部２２の内容）は図４（ｃ）のような内容となる。
【００６８】
図４（ｃ）に示すようにステップＳ２０９、Ｓ２１０の処理が終了した時点（データ整合の処理が終了した時点）で、ＤＢサーバ２０−１のデータベース（データ記憶部２２）の内容と、ＤＢサーバ２０−２のデータベース（データ記憶部２２）の内容とが一致することになる。
【００６９】
図４（ｃ）に示すように、ステップＳ２０９、Ｓ２１０の処理が終了した時点（データ整合の処理が終了した時点）において、ＤＢサーバ２０−１、２０−２のデータベースの内容（データ記憶部２２の内容）は、ＤＢサーバ２０−１、２０−２により二相コミットメントでデータ更新されたデータ群Ｄ１と、バックアップデータの生成開始前にＤＢサーバ２０−１により一相コミットメントでデータ更新されたデータ群Ｄ２と、バックアップデータの生成開始後にＤＢサーバ２０−１により一相コミットメントでデータ更新されたデータ群Ｄ３とで構成されている。
【００７０】
ＤＢサーバ２０−１、２０−２では、データベースのデータ整合（データ同期）の処理を終了すると、フラグ制御部２３４によりコミットメントフラグＦがＯＮに更新され、二相コミットメントでの動作が開始することになる（Ｓ２１１、Ｓ２１２）。
【００７１】
（Ａ−３）第１の実施形態の効果
第１の実施形態によれば、以下のような効果を奏することができる。
【００７２】
第１の実施形態では、データ整合処理の起点となる二相コミットメントフラグがＯＦＦに切り替えられた時間について、実際にデータ差分が発生しているデータ更新日時に補正し、データ整合を実施することにより、データ整合処理時間を短縮することができる。
【００７３】
例えば、ＤＢシステム１において、仮にフラグ更新時刻補正部２３３によるフラグ更新時刻Ｔの補正（データ整合処理の起点となる時刻の補正）が行われないとした場合を想定する。この場合、ＤＢサーバ２０−１のデータ整合処理部２３５は、データ整合処理を行う際に、図４に示すデータ群Ｄ３（バックアップデータ取得開始後に一相コミットメントで更新されたデータ群）だけでなく、データ群Ｄ２（バックアップデータ取得開始前に一相コミットメントで更新されたデータ群）についてもデータ整合の対象として処理する必要がある。これに対して、第１の実施形態では、フラグ更新時刻補正部２３３によるフラグ更新時刻Ｔの補正（データ整合処理の起点となる時刻の補正）を行うことで、図４に示すデータ群Ｄ２の分のデータ整合処理を省略することができる。
【００７４】
上述の図３に示すように、ＤＢサーバ２０−１のフラグ更新時刻補正部２３３は、フラグ制御部２３４に記憶されているフラグ更新時刻Ｔの内容を、ＤＢサーバ２０−２からの探索結果である「2015/1/10 8:55:00」に更新している。ここで、ＤＢサーバ２０−１のフラグ更新時刻補正部２３３は、フラグ更新時刻Ｔを、「2015/1/10 9:00」（ＤＢサーバ２０−１のバックアップファイル出力実施時刻）としない方が良い。通常、データベースのバックアップ処理は、ＲＤＢＭＳとしてのデータのリレーショナルを保証するため、バックアップ処理開始時のスナップショット（つまり、一相コミットメント実施中のデータベースのある時点での写し）のファイル（エクスポートファイル）を出力する。例えば、バックアップデータ（エクスポートファイル）の生成開始時刻「2015/1/10 9:00」を跨ぐように、複数のデータ表のデータ更新が実行中であった場合、生成されるバックアップデータ（エクスポートファイル）には、「2015/1/10 9:00」以前に更新されたデータと、「2015/1/10 9:00」以降に更新されたデータとのリレーショナルが壊れている可能性が発生してしまう。このことから、バックアップデータ（エクスポートファイル）出力時に、どの時点までのデータがバックアップデータ（エクスポートファイル）に出力されているかは、データを探索する必要がある。そのため、ＤＢサーバ２０−１では、バックアップデータ（エクスポートファイル）の生成開始時刻「2015/1/10 9:00」ではなく、ＤＢサーバ２０−２で探索された最新データのデータ更新時刻である「2015/1/10 8:55:00」とすることで、上述のような問題を回避している。
【００７５】
（Ｂ）第２の実施形態
以下、本発明によるデータベースシステム、データベースサーバ、データベースサーバプログラム、及びデータベースシステムの制御方法の第２の実施形態を、図面を参照しながら詳述する。
【００７６】
（Ｂ−１）第２の実施形態の構成
第２の実施形態のＤＢシステム１及び各ＤＢサーバ２０の構成は、上述の図１を用いて示すことができる。以下では、第２の実施形態について第１の実施形態との差異を中心に説明する。
【００７７】
上述の図３に示すように、第１の実施形態のＤＢシステム１では、バックアップ先のＤＢサーバ２０−２でバックアップデータの展開（エクスポートファイルのインポート）が終了した後、データ群Ｄ３（バックアップデータの生成開始後にＤＢサーバ２０−１により一相コミットメントでデータ更新されたデータ群）の分の差分を整合する整合処理（上述のステップＳ２０７〜Ｓ２１０の処理）が実行される。これに対して、第２の実施形態のＤＢシステム１では、バックアップ元のＤＢサーバ２０−１からバックアップ先のＤＢサーバ２０−２へバックアップデータの展開（エクスポートファイルのインポート）が終了した後、バックアップ元のＤＢサーバ２０−１が、データ群Ｄ３（差分データ）が発生しているか否かを確認し、データ群Ｄ３が発生していない場合にはデータ整合の処理を実行せずに（データ整合の処理をスキップして）二相コミットメントに移行する。この実施形態では、バックアップ元のＤＢサーバ２０−１において、データ群Ｄ３が発生しているか否かを確認してデータ整合処理の要否を判定する処理についてデータ整合処理部２３５が行うものとして説明する。バックアップ元のＤＢサーバ２０−１は、例えば、最新更新データ探索部２３２を用いて、バックアップ元のＤＢサーバ２０−１における最新の更新データの更新時刻と、バックアップ先のＤＢサーバ２０−２における最新の更新データの更新時刻とを比較し、２つの更新時刻が一致する場合にはデータ群Ｄ３が発生していないと判定するものとする。一方、２つの更新時刻に差分がある場合（バックアップ元のＤＢサーバ２０−１における最新の更新データの更新時刻の方が新しい時刻の場合）、バックアップ元のＤＢサーバ２０−１（最新更新データ探索部２３２）は、データ群Ｄ３が発生していると判定するものとする。バックアップ元のＤＢサーバ２０−１とバックアップ先のＤＢサーバ２０−２とで、更新データの更新時刻が一致する場合は、バックアップ元のＤＢサーバ２０−１とバックアップ先のＤＢサーバ２０−２との間でデータの差分（データベースの差分）が発生していないことを意味する。
【００７８】
（Ｂ−２）第２の実施形態の動作
次に、以上のような構成を有する第２の実施形態のＤＢシステム１の動作を説明する。
【００７９】
以下では、第２の実施形態のＤＢシステム１において、ＤＢサーバ２０−２で障害等が発生して停止した場合の例について説明する。ＤＢサーバ２０−１側で一相コミットメントに変更した動作を継続し、のＤＢサーバ２０−２でのバックアップデータの展開（エクスポートファイルのインポート）処理までの動作については、第１の実施形態と同様の処理（上述の図２の処理、及び上述の図３のステップＳ２０１〜Ｓ２０３の処理）であるため説明を省略する。
【００８０】
第２の実施形態では、ＤＢサーバ２０−２でのバックアップデータの展開後、ＤＢサーバ２０−１のデータ整合処理部２３５が、データ整合を行うか否かの判定処理（データベースの差分の有無の判定処理）を行う。
【００８１】
このとき、のＤＢサーバ２０−１側で行われる処理は、例えば図５のフローチャートにより示すことができる。
【００８２】
まず、ＤＢサーバ２０−１のデータ整合処理部２３５は、最新更新データ探索部２３２を介して、ＤＢサーバ２０−１及びＤＢサーバ２０−２における最新更新データの更新時刻を取得する（Ｓ３０１、Ｓ３０２）。
【００８３】
次に、ＤＢサーバ２０−１のデータ整合処理部２３５は、取得した２つの更新時刻を比較する（Ｓ３０３）。
【００８４】
そして、取得した２つの更新時刻が同時刻の場合（一致する場合）、ＤＢサーバ２０−１のデータ整合処理部２３５は、データの差分が発生していないためデータ整合は行わないと判定し、データ整合処理（後述するステップＳ３０４の処理）をスキップして処理を終了する。
【００８５】
一方、取得した２つの更新時刻に差分がある場合（一致しない場合）、ＤＢサーバ２０−１のデータ整合処理部２３５は、データの差分が発生しているためデータ整合の処理を行うと判断する。そして、ＤＢサーバ２０−１は、ＤＢサーバ２０−２との間でデータ整合の処理を実行する（Ｓ３０４）。このときのデータ整合の処理は、第１の実施形態と同様の処理（上述のステップＳ２０７〜Ｓ２１０と同様の処理）であるため詳しい説明を省略する。
【００８６】
次に、第２の実施形態のＤＢシステム１において、のＤＢサーバ２０−２でのバックアップデータの展開（エクスポートファイルのインポート）処理が終了した後の動作（上述のステップＳ２０２、Ｓ２０３の後の動作）について図６のシーケンス図を用いて説明する。
【００８７】
なお、ここでは、ＤＢサーバ２０−２でバックアップデータの展開が完了した時点におけるＤＢサーバ２０−１、２０−２のデータベースの内容（データ記憶部２２のデータ）は図７のような状態であったものとする。図７に示すように、この時点でデータ群Ｄ３（バックアップデータの生成開始後にＤＢサーバ２０−１により一相コミットメントでデータ更新されたデータ群）は発生していない状態となっているものとする。言い換えると、図７に示すように、ＤＢサーバ２０−２においてバックアップデータの展開が完了した時点で、ＤＢサーバ２０−１、２０−２のデータベースの内容は一致している状態（差分が発生していない状態）となっているものとする。また、図７の状態では、ＤＢサーバ２０−１、２０−２における最新更新データの更新時刻はいずれも「2015/1/10 8:55」であるものとして以下の説明を行う。
【００８８】
ＤＢサーバ２０−２でバックアップデータの展開が完了すると、ＤＢサーバ２０−１のデータ整合処理部２３５は、自装置（ＤＢサーバ２０−１）の最新更新データ探索部２３２を介して、ＤＢサーバ２０−２（最新更新データ探索部２３２）から最新更新データの更新時刻を取得する処理を行う（Ｓ４０１〜Ｓ４０３）。このとき、データ整合処理部２３５がＤＢサーバ２０−２から取得した更新時刻は、「2015/1/10 8:55」となる。
【００８９】
次に、ＤＢサーバ２０−１のデータ整合処理部２３５は、自装置の最新更新データ探索部２３２を介して、自装置（ＤＢサーバ２０−１）の最新更新データの更新時刻を取得する処理を行う（Ｓ４０４）。このとき、データ整合処理部２３５が、自装置（ＤＢサーバ２０−１）の最新更新データ探索部２３２から取得する更新時刻は、「2015/1/10 8:55」となる。
【００９０】
次に、データ整合処理部２３５は、取得した２つの更新時刻を比較する処理を行う。上述の通り、ＤＢサーバ２０−１、２０−２における最新更新データの更新時刻はいずれも「2015/1/10 8:55」であるため、データ整合処理部２３５は、ＤＢサーバ２０−１、２０−２の間でデータの差分は発生しておらずデータ整合を行わない（データ整合は不要）であると判断することになる（Ｓ４０５）。このとき、データ整合処理部２３５は、ＤＢサーバ２０−２（データベース制御部２３）に対して、データ整合は不要と判断した旨を通知するようにしてもよい。これにより、ＤＢサーバ２０−２（データベース制御部２３）の側でもデータ整合が行われないことを認識することが可能となる。
【００９１】
以上のように、ＤＢサーバ２０−１、２０−２の間でデータの差分は発生していない場合、ＤＢサーバ２０−１、２０−２では、データベースのデータ整合の処理がスキップされることになる。
【００９２】
そしてその後、ＤＢサーバ２０−１、２０−２では、フラグ制御部２３４によりコミットメントフラグＦがＯＮに更新され、二相コミットメントでの動作が開始することになる（Ｓ４０６、Ｓ４０７）。
【００９３】
なお、上述のステップＳ４０５において、データ整合処理部２３５がデータ整合を行うと判断した場合（取得した２つの更新時刻が一致しない場合）におけるＤＢサーバ２０−１、２０−２の動作は、第１の実施形態と同様の動作（上述のステップＳ２０７〜Ｓ２１２と同様の動作）となるため詳しい説明を省略する。
【００９４】
（Ｂ−３）第２の実施形態の効果
第２の実施形態によれば、第１の実施形態の効果に加えて、以下のような効果を奏することができる。
【００９５】
第２の実施形態のＤＢシステム１では、ＤＢサーバ２０−２でバックアップデータの展開処理（エクスポートデータのインポート処理）が完了した後、ＤＢサーバ２０−１、２０−２で最新データの更新時刻が一致する場合には、ＤＢサーバ２０−１、２０−２間でのデータの差分がないと判断してデータの整合処理を省略している。これにより、第２の実施形態では、第１の実施形態よりもデータ整合処理をより効率的に行うことができる。
【００９６】
（Ｃ）他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【００９７】
（Ｃ−１）上記の各実施形態では、データベースシステムにおいて、２台のデータベースサーバが配置された場合について示したが、３台以上のデータベースサーバを配置しても良く、その台数は限定されないものである。
【００９８】
（Ｃ−２）上記の各実施形態においては、データベースシステムにおいて、通常時は二相コミットメントに従ってデータ更新を行い、いずれかのデータベースサーバの障害時には、一相コミットメントに従ったデータ更新をするようにしていたが、通常時は三相コミットメントによりデータ更新を行うデータベースシステムに適用しても良い。
【００９９】
（Ｃ−３）上記の各実施形態では、バックアップ元のＤＢサーバ２０−１において、バックアップ先のＤＢサーバ２０−２でバックアップデータ展開後に取得された最新更新データの更新時刻を取得して、その更新時刻でフラグ更新時刻Ｔを補正する処理を行っているが、バックアップ元のＤＢサーバ２０−１では、バックアップ先のＤＢサーバ２０−２における最新更新データの更新時刻を、データ整合の起点とすることができれば良い。したがって、バックアップ元のＤＢサーバ２０−１において、フラグ更新時刻ＴをＤＢサーバ２０−２から取得した更新時刻に補正する処理を経由する処理は必須ではない。
【符号の説明】
【０１００】
１…ＤＢシステム、１０…ＤＢクライアント、１１…クライアントライブラリ、２０、２０−１、２０−２…ＤＢサーバ、２１…ＲＤＢＭＳ、２２…データ記憶部、２３…データベース制御部、２３１…バックアップ管理部、２３２…最新更新データ探索部、２３３…フラグ更新時刻補正部、２３４…フラグ制御部、２３５…データ整合処理部。
【図１】
0006485212.tif 000002
【図２】
0006485212.tif 000003
【図３】
0006485212.tif 000004
【図４】
0006485212.tif 000005
【図５】
0006485212.tif 000006
【図６】
0006485212.tif 000007
【図７】
0006485212.tif 000008