(57)【要約】【課題】スイッチオーバー実行時に、より迅速にクライアントに応答することができるデータベースサーバ、データベース管理方法、およびプログラムを提供することである。【解決手段】データベースサーバは、データベース管理部と、同期処理部とを持つ。データベース管理部は、自データベースサーバが、クライアントからの要求を受け付ける第１の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録する。同期処理部は、自データベースサーバが、前記第１の状態である場合、前記メモリに登録された更新データを前記他のデータベースに送信する。【選択図】図８
2019003584.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバであって、
自データベースサーバが、クライアントからの要求を受け付ける第１の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録するデータベース管理部と、
自データベースサーバが、前記第１の状態である場合、前記メモリに登録された更新データを前記他のデータベースサーバに送信する同期処理部と、を備え、
自データベースサーバが、役割変更指示に応じて前記第１の状態から第２の状態に遷移するとき、前記同期処理部は、前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、
自データベースサーバが、前記第２の状態である場合、前記同期処理部は、前記メモリに登録された更新データを前記他のデータベースサーバに送信し、
自データベースサーバが、前記第２の状態から遷移する第３の状態である場合、前記同期処理部は、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新する、
データベースサーバ。
【請求項２】
自データベースサーバが、前記第２の状態である場合、前記データベース管理部は、前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新し、前記更新データと前記管理情報とを更新しない、
請求項１記載のデータベースサーバ。
【請求項３】
自データベースサーバが、前記役割変更指示に応じて前記第３の状態から遷移する第４の状態である場合、前記データベース管理部は、前記他のデータベースサーバから受信した前記管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求であるか否かを判定し、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信する、
請求項１または２記載のデータベースサーバ。
【請求項４】
自データベースサーバが、前記第４の状態である場合、
前記データベース管理部は、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求に基づく更新データをメモリに登録し、
前記データベース管理部または前記同期処理部は、前記他のデータベースサーバから前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する更新データを受信して自データベースサーバのデータベースを更新した後に、前記メモリに登録した更新データを自データベースサーバのデータベースに反映させる、
請求項３記載のデータベースサーバ。
【請求項５】
複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバであって、
自データベースサーバが、クライアントからの要求を受け付けない第３の状態である場合、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新する同期処理部と、
自データベースサーバが、役割変更指示に応じて前記第３の状態から遷移する第４の状態である場合、前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定し、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信するデータベース管理部と、
を備えるデータベースサーバ。
【請求項６】
自データベースサーバが、前記第４の状態である場合、
前記データベース管理部は、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求に基づく更新データをメモリに登録し、
前記データベース管理部または前記同期処理部は、前記他のデータベースサーバから前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する更新データを受信して自データベースサーバのデータベースを更新した後に、前記メモリに登録した更新データを自データベースサーバのデータベースに反映させる、
請求項５記載のデータベースサーバ。
【請求項７】
複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
自データベースサーバが、クライアントからの要求を受け付ける第１の状態である場合、
前記クライアントからの要求に応じてデータベースを更新し、
前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録し、
前記メモリに登録された更新データを前記他のデータベースに送信し、
自データベースサーバが、役割変更指示に応じて前記第１の状態から第２の状態に遷移するとき、
前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、
自データベースサーバが、前記第２の状態である場合、
前記メモリに登録された更新データを前記他のデータベースサーバに送信し、
自データベースサーバが、前記第２の状態から遷移する第３の状態である場合、
前記複数のデータベースサーバに含まれる他のデータベースサーバサーバから受信した更新データに基づいて前記データベースを更新する、
データベース管理方法。
【請求項８】
複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
自データベースサーバが、クライアントからの要求を受け付けない第３の状態である場合、
前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新し、
自データベースサーバが、役割変更指示に応じて前記第３の状態から遷移する第４の状態である場合、
前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定し、
前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信する、
データベース管理方法。
【請求項９】
複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバに、
自データベースサーバが、クライアントからの要求を受け付ける第１の状態である場合、
前記クライアントからの要求に応じてデータベースを更新させ、
前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録させ、
前記メモリに登録された更新データを前記他のデータベースに送信させ、
自データベースサーバが、役割変更指示に応じて前記第１の状態から第２の状態に遷移するとき、
前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信させ、
自データベースサーバが、前記第２の状態である場合、
前記メモリに登録された更新データを前記他のデータベースに送信させ、
自データベースサーバが、前記第２の状態から遷移する第３の状態である場合、
前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新させる、
プログラム。
【請求項１０】
複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
自データベースサーバが、クライアントからの要求を受け付けない第３の状態である場合、
前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新させ、
自データベースサーバが、役割変更指示に応じて前記第３の状態から遷移する第４の状態である場合、
前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定させ、
前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベースサーバ、データベース管理方法、およびプログラム
に関する。
【背景技術】
【０００２】
従来、データのレプリケーションを行うシステムが知られている。レプリケーションは、複数のデータベース間で行われる。複数のデータベースを備えるデータベースシステムでは、いずれかのデータベースサーバがマスターとして機能し、他のデータベースサーバがスレーブとして機能する場合がある。マスターは、クライアントからの要求を受け付け、自身のデータベースを更新すると共に、スレーブのデータベースサーバにデータの複製を保存すること（データの同期）を依頼する。
【０００３】
ここで、データベースシステムとして、要求に基づく処理が完了したことをクライアントに通知する動作パターンには、主に２通りの動作パターンがある。例えば、スレーブにおいて同期が完了してからクライアントに通知する動作パターン（同期レプリケーション）と、クライアントに通知してから任意のタイミングで同期を行う動作パターン（非同期レプリケーション）とがある。
【０００４】
そして、マスターとスレーブの関係は、何らかの契機で入れ替わる場合がある。以下、この動作をスイッチオーバーと称する。従来の非同期レプリケーションを行うデータベースシステムでは、スイッチオーバーを開始する時点で同期が完了していない場合、同期が完了するまでスイッチオーバーが完了せず、クライアントからの要求を受け付けられない期間が生じる場合があった。なお、機器故障などの異常時に実行されるスイッチに関してはこの限りでない。
【０００５】
上記に関連し、第１のサイトと第２のサイトとを備え、第２のサイトが、第１のサイトに代わってまたは第１のサイトの補助としてシステム機能の少なくとも一部を提供するために書き込み要求または読み出し要求を受け付けることができ、要求に基づく処理を実行するとき、要求の対象となる最新のデータを未だ保持していなければ、必要な更新情報を取得してから処理を実行するシステムが知られている。しかしながら、この技術においても、要求の対象となる最新のデータを未だ保持していない場合には、必要な更新情報を取得するまでの間、要求に基づく処理を実行できないことになり、クライアントへの応答が遅延する場合があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１１８４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、スイッチオーバー実行時に、より迅速にクライアントに応答することができるデータベースサーバ、データベース管理方法、およびプログラムを提供することである。
【課題を解決するための手段】
【０００８】
実施形態のデータベースサーバは、データベースシステムに含まれる。データベースシステムは、複数のデータベースサーバを備える。データベースサーバは、データベース管理部と、同期処理部とを持つ。データベース管理部は、自データベースサーバが、クライアントからの要求を受け付ける第１の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録する。同期処理部は、自データベースサーバが、前記第１の状態である場合、前記メモリに登録された更新データを前記他のデータベースに送信する。自データベースサーバが、役割変更指示に応じて前記第１の状態から第２の状態に遷移するとき、前記同期処理部は、前記メモリに登録された前記管理情報を前記他のデータベースに送信する。自データベースサーバが、前記第２の状態である場合、前記同期処理部は、前記メモリに登録された更新データを前記他のデータベースに送信する。自データベースサーバが、前記第２の状態から遷移する第３の状態である場合、前記同期処理部は、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新する。
【図面の簡単な説明】
【０００９】
【図１】実施形態のデータベースシステム１の構成図。
【図２】通常時におけるステージシステム１の動作を説明するための図。
【図３】通常時におけるステージシステム１の動作を説明するための図。
【図４】通常時におけるステージシステム１の動作を説明するための図。
【図５】通常時におけるステージシステム１の動作を説明するための図。
【図６】通常時におけるステージシステム１の動作を説明するための図。
【図７】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図８】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図９】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図１０】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図１１】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図１２】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図１３】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図１４】スイッチオーバー時におけるステージシステム１の動作を説明するための図。
【図１５】第１ＤＢサーバ１００のＤＢ管理部１１０およびレプリケーション処理部１３０により実行される処理の流れの一例を示すフローチャート。
【図１６】第２ＤＢサーバ２００のＤＢ管理部２１０およびレプリケーション処理部２３０により実行される処理の流れの一例を示すフローチャート。
【図１７】比較例のデータベースシステムにおいてスイッチオーバー実行時に行われる処理の流れを模式的に示す図。
【図１８】実施形態のデータベースシステム１においてスイッチオーバー実行時に行われる処理の流れを模式的に示す図。
【図１９】三つ以上のＤＢサーバを備えるデータベースシステム２の概略図。
【図２０】データベースシステム２においてスイッチオーバーが開始された場面を示す図。
【図２１】データベースシステム２においてスイッチオーバーが完了した後の場面を示す図。
【発明を実施するための形態】
【００１０】
以下、実施形態のデータベースサーバ、データベース管理方法、およびプログラム
を、図面を参照して説明する。
【００１１】
［全体構成］
図１は、実施形態のデータベースシステム１の構成図である。データベースシステム１は、クライアント３００からの要求に応じて、ストレージ装置に格納したデータベースを管理するシステムである。クライアント３００は、例えば、ネットワーク（不図示）を介してデータベースシステム１に要求（換言するとコマンド、リクエスト）を送信する各種コンピュータ装置である。クライアント３００は、データベースシステム１よりも上位のデータベースシステムの管理コンピュータであってもよい。要求は、例えばＳＱＬ文によって伝達される。実施形態では、クライアント３００とデータベースシステム１との通信経路をクライアントリンクＣＬと称し、図示する。
【００１２】
データベースシステム１は、例えば、第１ＤＢ（データベース）サーバ１００と、第２ＤＢサーバ２００とを備える。第１ＤＢサーバ１００および第２ＤＢサーバ２００は、一方がマスターＤＢとして動作し、他方がスレーブＤＢとして動作する。図１の例では、第１ＤＢサーバ１００がマスターＤＢとして動作し、第２ＤＢサーバ２００がスレーブＤＢとして動作している。この関係は、例えば、図示しないデータベースシステム１の入力部に対して指示信号を出力することで切り替え可能である。
【００１３】
マスターＤＢは、クライアント３００からの要求を受け付け、まず自信のＤＢを更新しでクライアント３００に応答を返し、任意のタイミングでスレーブＤＢに同じ要求を送信してＤＢを同期させる。すなわち、データベースシステム１は、非同期レプリケーションを行う。
【００１４】
マスターＤＢとスレーブＤＢの間の通信経路として、例えば、ＤＢリンクＤＬと、レプリケーションリンクＲＬの二つが用意されている。これらの通信経路は、物理的に異なる通信経路であってもよいし、一つの通信線を用いた仮想的な通信経路であってもよいし、無線通信を用いた通信経路であってもよい。
【００１５】
［第１ＤＢサーバ］
第１ＤＢサーバ１００は、例えば、ＤＢ管理部１１０と、ＤＢ１２０と、レプリケーション処理部１３０と、更新リストモジュール１４０とを備える。ＤＢ管理部１１０およびレプリケーション処理部１３０は、例えば、ＣＰＵ（Central Processing Unit）などのプロセッサがプログラム（ソフトウェア）を実行することにより実現される。また、これらのうち一方または双方は、ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）などのハードウェア（回路部：circuitry）によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
【００１６】
ＤＢ管理部１１０は、第１ＤＢサーバ１００がマスターＤＢである場合、クライアント３００に対する窓口として機能する。ＤＢ管理部１１０は、クライアント３００からの要求を解釈し、ＤＢ１２０の更新あるいはＤＢ１２０からのデータの読み出しを行う。更新の要求には、書き込みと削除があるが、以下ではこれらをまとめて更新要求と称する。ＤＢ管理部１１０は、所定のデータの管理単位でＤＢ１２０を管理する。データの管理単位は、テーブル、ブロック、ページ、レコードその他の名称で称することができるが、本実施形態ではデータの管理単位をテーブルとして説明する。また、簡易的に、ＤＢ１２０およびＤＢ２２０には、Ａ、Ｂ、Ｃ、Ｄ、Ｅの５つのテーブルが設定されているものとする。また、ＤＢ管理部１１０は、ＤＢ１２０を更新するのに応じて、更新リストモジュール１４０を更新する。
【００１７】
ＤＢ１２０は、例えば、一以上の、ＨＤＤ（Hard Disk Drive）やフラッシュメモリ、磁気抵抗メモリなどの不揮発性の記憶装置（ストレージ装置）によって記憶されるデータベースである。
【００１８】
レプリケーション処理部１３０は、第１ＤＢサーバ１００がマスターＤＢである場合、ＤＢ管理部１１０によって更新された更新リストモジュール１４０を参照し、クライアント３００からの要求を解釈した結果（或いは要求そのもの）を、レプリケーションリンクＲＬを介して第２ＤＢサーバ２００のレプリケーション処理部２３０に送信する。この際に、レプリケーション処理部１３０は、更新リストモジュール１４０を更新する。また、レプリケーション処理部１３０は、第１ＤＢサーバ１００がスレーブＤＢである場合、レプリケーションリンクＲＬを介して第２ＤＢサーバ２００のレプリケーション処理部２３０から受信した情報に基づいて、ＤＢ１２０を更新する。
【００１９】
更新リストモジュール１４０は、例えばＲＡＭ（Random Access Memory）、フラッシュメモリなどのメモリによって記憶される情報である。更新リストモジュール１４０は、ＤＢ１２０と同じ記憶装置によって記憶されてもよい。更新リストモジュール１４０は、例えば、送信更新リスト１４１と、受信更新リスト１４２と、送信更新テーブルリスト１４３と、受信更新テーブルリスト１４４とを備える。
【００２０】
送信更新リスト１４１には、更新データが登録される。送信更新リスト１４１に登録される更新データは、ＤＢ管理部１１０によりＤＢ１２０に更新がなされたデータであって、未だ第２ＤＢサーバ２００に送信されていないデータである。
【００２１】
受信更新リスト１４２には、更新データとフラグとが登録される。受信更新リスト１４２に登録される更新データは、これからＤＢ１２０に対して更新処理がなされる対象のデータである。フラグについては後述する。
【００２２】
送信更新テーブルリスト１４３には、テーブルと更新回数とが登録される。送信更新テーブルリスト１４３に登録されるテーブルは、送信更新リスト１４１に登録されている更新データが更新対象とするテーブルである。
【００２３】
送信更新テーブルリスト１４３、受信更新テーブルリスト１４４、送信更新テーブルリスト２４３、および受信更新テーブルリスト２４４における更新回数は、通常時とスイッチオーバー時で意味合いが異なる。ここでスイッチオーバーについて説明する。スイッチオーバーとは、例えば、外部からの指示に応じて、或いは内部的なロジックに基づいて、マスターＤＢとスレーブＤＢの機能を入れ替えることをいう。この機能の入れ替えには、スイッチオーバーの他に、機器故障や通信障害などによって緊急的に行うフェールオーバーがある。スイッチオーバーは、上記のような異常に起因して行われるものではないため、スイッチオーバーの完了時には、クライアント３００から見てスイッチオーバー前の状態が引き継がれている必要がある。以下、スイッチオーバーの処理が開始されてから完了するまでの間をスイッチオーバー時と称し、それ以外の期間を通常時と称する。
【００２４】
通常時の場合、送信更新テーブルリスト１４３における更新回数は、対応するテーブルにおいて、送信更新リスト１４１に登録されている更新データの数を表す。また、スイッチオーバー時の場合、送信更新テーブルリスト１４３における更新回数は、スイッチオーバー開始時にレプリケーション処理部２３０に送信された後、レプリケーション処理部１３０によってリセットされる。
【００２５】
受信更新テーブルリスト１４４には、テーブルと更新回数とが登録される。受信更新テーブルリスト１４４に登録されるテーブルは、第２ＤＢサーバ２００の送信更新リスト２４１に登録されている更新データが更新対象とするテーブルである。
【００２６】
通常時の場合、受信更新テーブルリスト１４４における更新回数は、対応するテーブルにおいて、受信更新リスト１４２に登録されている更新データの数を表す。スイッチオーバー時の場合、受信更新テーブルリスト１４４における更新回数は、スイッチオーバー開始時にレプリケーション処理部２３０から受信した回数に対して、未同期のテーブルに関する更新要求がクライアント３００から受信される度にＤＢ管理部１１０によってインクリメントされ、ＤＢ１２０に格納される度にレプリケーション処理部１３０によってデクリメントされる。
【００２７】
［第２ＤＢサーバ］
第２ＤＢサーバ２００は、例えば、ＤＢ管理部２１０と、ＤＢ２２０と、レプリケーション処理部２３０と、更新リストモジュール２４０とを備える。ＤＢ管理部２１０およびレプリケーション処理部２３０は、例えば、ＣＰＵなどのプロセッサがプログラム（ソフトウェア）を実行することにより実現される。また、これらのうち一方または双方は、ＬＳＩやＡＳＩＣ、ＦＰＧＡなどのハードウェア（回路部：circuitry）によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
【００２８】
ＤＢ管理部２１０は、第２ＤＢサーバ１００がマスターＤＢである場合、クライアント３００に対する窓口として機能する。ＤＢ管理部２１０は、クライアント３００からの要求を解釈し、ＤＢ２２０の更新あるいはＤＢ２２０からのデータの読み出しを行う。ＤＢ管理部２１０は、第１ＤＢサーバ１００と同じ管理単位でＤＢ２２０を管理する。また、ＤＢ管理部２１０は、ＤＢ２２０を更新するのに応じて、更新リストモジュール２４０を更新する。
【００２９】
ＤＢ２２０は、例えば、一以上の、ＨＤＤやフラッシュメモリ、磁気抵抗メモリなどの不揮発性の記憶装置（ストレージ装置）によって記憶されるデータベースである。
【００３０】
レプリケーション処理部２３０は、第２ＤＢサーバ２００がマスターＤＢである場合、ＤＢ管理部２１０によって更新された更新リストモジュール２４０を参照し、クライアント３００からの要求を解釈した結果（或いは要求そのもの）を、レプリケーションリンクＲＬを介して第１ＤＢサーバ１００のレプリケーション処理部１３０に送信する。この際に、レプリケーション処理部２３０は、更新リストモジュール２４０を更新する。また、レプリケーション処理部２３０は、第２ＤＢサーバ２００がスレーブＤＢである場合、レプリケーションリンクＲＬを介して第１ＤＢサーバ１００のレプリケーション処理部１３０から受信した情報に基づいて、ＤＢ２１０を更新する。
【００３１】
更新リストモジュール２４０は、例えばＲＡＭ、フラッシュメモリなどの記憶装置によって記憶される情報である。更新リストモジュール２４０は、ＤＢ２２０と同じ記憶装置によって記憶されてもよい。更新リストモジュール２４０は、例えば、送信更新リスト２４１と、受信更新リスト２４２と、送信更新テーブルリスト２４３と、受信更新テーブルリスト２４４とを備える。
【００３２】
送信更新リスト２４１には、更新データが登録される。送信更新リスト２４１に登録される更新データは、ＤＢ管理部２１０によりＤＢ２２０に更新がなされたデータであって、未だ第１ＤＢサーバ１００に送信されていないデータである。
【００３３】
受信更新リスト２４２には、更新データとフラグとが登録される。受信更新リスト２４２に登録される更新データは、第１ＤＢサーバ１００から受信し、未だＤＢ２２０に対して更新処理がなされていないデータである。フラグについては後述する。
【００３４】
送信更新テーブルリスト２４３には、テーブルと更新回数とが登録される。送信更新テーブルリスト２４３に登録されるテーブルは、送信更新リスト２４１に登録されている更新データが更新対象とするテーブルである。
【００３５】
通常時において、送信更新テーブルリスト２４３における更新回数は、対応するテーブルにおいて、送信更新リスト２４１に登録されている更新データの数を表す。また、スイッチオーバー時の場合、送信更新テーブルリスト２４３における更新回数は、スイッチオーバー開始時にレプリケーション処理部２３０に送信された後、レプリケーション処理部２３０によってリセットされる。
【００３６】
受信更新テーブルリスト２４４には、テーブルと更新回数とが登録される。受信更新テーブルリスト２４４に登録されるテーブルは、第２ＤＢサーバ１００の送信更新リスト１４１に登録されている更新データが更新対象とするテーブルである。
【００３７】
通常時において、受信更新テーブルリスト２４４における更新回数は、対応するテーブルにおいて、受信更新リスト２４２に登録されている更新データの数を表す。スイッチオーバー時の場合、受信更新テーブルリスト２４４における更新回数は、スイッチオーバー開始時にレプリケーション処理部２３０から受信した回数に対して、未同期のテーブルに関する更新要求がクライアント３００から受信される度にＤＢ管理部２１０によってインクリメントされ、ＤＢ２２０に格納される度にレプリケーション処理部２３０によってデクリメントされる。
【００３８】
［処理内容：通常時］
以下、ステージシステム１における処理の内容について、より詳細に説明する。まず、前述した通常時の処理について説明する。図２〜６は、通常時におけるステージシステム１の動作を説明するための図である。
【００３９】
以下、時系列に場面を例示して説明する。図２は、クライアント３００からテーブルＡに「１」を格納する更新要求がなされた場面を示している。ＤＢ管理部１１０は、ＤＢ１２０のテーブルＡに「１」を格納すると共に、送信更新リスト１４１に、クライアント３００からの要求内容を示す“Inset into A values (1)”のようなデータ（以下、更新データ）を登録し、更に、送信更新テーブルリスト１４３のテーブルＡの更新回数をインクリメントして１とする。
【００４０】
図３は、図２に例示した場面の後、クライアント３００からテーブルＢに「２」を格納する更新要求がなされた場面を例示した図である。ＤＢ管理部１１０は、ＤＢ１２０のテーブルＢに「２」を格納すると共に、送信更新リスト１４１に更新データ“Inset into B values (2)”を登録し、更に、送信更新テーブルリスト１４３のテーブルＢの更新回数をインクリメントして１とする。
【００４１】
図４は、図３に例示した場面の後、レプリケーション処理部１３０によって送信更新リスト１４１のうちテーブルＡに関する更新データ“Inset into A values (1)”と、送信更新テーブルリスト１４３のうちテーブルＡに関する情報とがレプリケーション処理部２３０に送信され、レプリケーション処理部２３０によって受信更新リスト２４２および受信更新テーブルリスト２４４が更新された場面を例示した図である。レプリケーション処理部２３０は、テーブルＡに関する更新データ“Inset into A values (1)”を受信更新リスト２４２の更新データに登録すると共に、受信更新テーブルリスト２４４におけるテーブルＡに関する更新回数をインクリメントして１とする。ここで、受信更新リスト２４２のフラグはゼロ、すなわち非設定のままである。受信更新リスト１４２および受信更新リスト２４２のフラグは、専らスイッチオーバー時に使用される。なお、通常時において、送信更新リスト１４１の情報を送信する際に、送信更新テーブルリスト１４３の情報の送信を省略してもよい。また、通常時において、送信される送信更新リスト１４１の情報に対応した部分のみを送信するのではなく、送信更新テーブルリスト１４３の全ての情報を一括して送信してもよい。
【００４２】
図５は、図４に例示した場面の後、レプリケーション処理部２３０によってＤＢ２００が更新され、更に、レプリケーション処理部１３０によって送信更新リスト１４１のうちテーブルＢに関する更新データ“Inset into B values (2)”と、送信更新テーブルリスト１４３のうちテーブルＢに関する情報とがレプリケーション処理部２３０に送信された場面を例示した図である。レプリケーション処理部２３０は、受信更新リスト２４２に登録されていた、テーブルＡに関する更新データ“Inset into A values (1)”に基づいて、ＤＢ２２０を更新し、受信更新テーブルリスト２４４のテーブルＡの更新回数をデクリメントして０とする。更に、レプリケーション処理部２３０は、テーブルＢに関する更新データ“Inset into B values (2)”を受信更新リスト２４２の更新データに登録すると共に、受信更新テーブルリスト２４４におけるテーブルＢの更新回数をインクリメントして１とする。このように、レプリケーション処理部１３０とレプリケーション処理部２３０との間では、例えば、相手方のＤＢへの格納が完了したことを通知された後に、次の更新データを送信するといった規則でデータ送信が行われる。
【００４３】
図６は、図５に例示した場面の後、レプリケーション処理部２３０によってＤＢ２００が更新された場面を例示した図である。レプリケーション処理部２３０は、受信更新リスト２４２に登録されていた、テーブルＢに関する更新データ“Inset into A values (2)”に基づいて、ＤＢ２２０を更新し、受信更新テーブルリスト２４４のテーブルＢの更新回数をデクリメントして０とする。これによって、ＤＢ１２０とＤＢ２２０との間で、全てのテーブルについて同期が完了した状態となる。データベースシステム１は、このような一連の動作を繰り返し実行し、非同期レプリケーションを継続する。
【００４４】
［処理内容：スイッチオーバー時］
以下、スイッチオーバー時の処理について説明する。図７〜１４は、スイッチオーバー時におけるステージシステム１の動作を説明するための図である。
【００４５】
以下、時系列に場面を例示して説明する。図７は、スイッチオーバー要求を受け付けた場面を例示した図である。スイッチオーバー要求（役割変更要求の一例）は、クライアント３００以外の機器（キーボードやマウスなどの入力デバイスを含む）から受け付けられてもよいし、クライアント３００から受け付けられてもよい。また、スイッチオーバー要求は、より上位のデータベースシステムから受け付けられてもよい。この場面において、送信更新リスト１４１には、テーブルＢに関する更新データ“Inset into B values (3)”および“Inset into B values (4)”が登録されている。ＤＢ１２０には、これらの双方が反映済であり、テーブルＢには、後に受け付けた要求である“Inset into B values (4)”に基づいて「４」が格納されている。また、送信更新テーブルリスト１４３には、テーブルＢの更新回数として２が登録されている。
【００４６】
図８は、図７に例示した場面の後の場面を例示した図である。ＤＢ管理部１１０は、ＤＢリンクＤＬを介してＤＢ管理部２１０に、スイッチオーバー通知を行う。ＤＢ管理部２１０は、以降、自身がクライアント３００からの要求を受け付ける旨の通知をクライアント３００に対して行う。
【００４７】
また、ＤＢ管理部１１０は、レプリケーション処理部１３０に対して、スイッチオーバーに伴い、送信更新テーブルリスト１４３に登録された情報の全てをレプリケーション処理部２３０に送信するように指示する。レプリケーション処理部１３０は、送信更新テーブルリスト１４３に登録された情報の全てをレプリケーション処理部２３０に送信すると共に、送信更新テーブルリスト１４３に登録された情報をリセット（削除、消去、あるいは無効化）する。レプリケーション処理部２３０は、レプリケーション処理部１３０から受信した情報を、受信更新テーブルリスト２４４に登録する。
【００４８】
図９は、図８に例示した場面の後、ＤＢ管理部２１０によって、クライアント３００からテーブルＡに「６」を格納する更新要求と、テーブルＢに「７」を格納する更新要求とが受け付けられた場面を例示した図である。この場合、ＤＢ管理部２１０は、それぞれの要求に係るテーブルが未同期であるか否かを判定する。例えば、ＤＢ管理部２１０は、受信更新テーブルリスト２４４における当該テーブルの更新回数がゼロでなければ未同期であり、ゼロであれば同期済であると判定する。
【００４９】
ＤＢ管理部２１０は、要求が同期済のテーブルに関するものであれば、自身のＤＢ２２０に格納すると共に送信更新リスト２４１および送信更新テーブルリスト２４３に当該テーブルの情報を登録する。図９の例では、ＤＢ管理部２１０は、同期済のテーブルＡについては自身のＤＢ２２０に「６」を格納すると共に送信更新リスト２４１に更新データ“Insert into A values(6)”を登録し、送信更新テーブルリスト２４３のテーブルＡの更新回数をインクリメントして１とする。
【００５０】
一方、ＤＢ管理部２１０は、要求が未同期のテーブルに関するものであれば、ＤＢリンクＤＬを介してＤＢ管理部１１０に要求（或いは要求を解釈した結果）を転送すると共に、受信更新リスト２４２に要求を解釈した結果を登録する。この際に、ＤＢ管理部２１０は、登録した結果に対してフラグ１を設定し、且つ、更新の順序性を保つためＤＢ２２０を更新しない。このように、受信更新リスト１４２および受信更新リスト２４２におけるフラグは、スイッチオーバーを開始してから完了するまでの間に、未同期のテーブルについて受け付けられた要求に基づくものであることを示すフラグである。図９の例では、ＤＢ管理部２１０は、未同期のテーブルＢについては、受信更新リスト２４２に更新データ“Insert into B values(7)”を登録してフラグを１に設定し、受信更新テーブルリスト２４４のテーブルＢの更新回数をインクリメントして３とする。
【００５１】
未同期のテーブルに関する要求を受けたＤＢ管理部１１０は、ＤＢ１２０のテーブルＢに「７」を格納する。この場合、ＤＢ管理部１１０は、スイッチオーバー中の要求転送であることを認識しているため、ＤＢ１２０を更新するが、送信更新リスト１４１および送信更新テーブルリスト１４３の更新は行わない。
【００５２】
なお、更新要求以外の要求、例えば読み出し要求を受け付けた場合も、同様の振り分けが行われる。すなわち、ＤＢ管理部２１０は、読み出し要求が未同期のテーブルに関するものであれば、ＤＢリンクＤＬを介してＤＢ管理部１１０に要求（或いは要求を解釈した結果）を転送すると共にＤＢ管理部１１０により返信された結果をクライアント３００に返し、同期済のテーブルに関するものであれば、ＤＢ２２０から読み出してクライアント３００に結果を返す。
【００５３】
図１０は、図９に例示した場面の後、レプリケーション処理部１３０によって送信更新リスト１４１のうちテーブルＢに関する更新データ“Inset into B values (3)”がレプリケーション処理部２３０に送信され、レプリケーション処理部２３０によって受信更新リスト２４２が更新された場面を例示した図である。図示するように、レプリケーション処理部２３０は、受信更新リスト２４２に“Insert into B values(3)”を登録してフラグを０に設定する。
【００５４】
図１１は、図１０に例示した場面の後、レプリケーション処理部２３０によってＤＢ２２０が更新され、更に、レプリケーション処理部１３０によって送信更新リスト１４１のうちテーブルＢに関する更新データ“Inset into B values (4)”と、送信更新テーブルリスト１４３のうちテーブルＢに関する情報とがレプリケーション処理部２３０に送信され、レプリケーション処理部２３０によって受信更新リスト２４２および受信更新テーブルリスト２４４が更新された場面を例示した図である。図示するように、レプリケーション処理部２３０は、ＤＢ２２０のテーブルＢに「３」を格納し、受信更新テーブルリスト２４４のテーブルＢの更新回数をデクリメントして２とする。ここで、レプリケーション処理部２３０は、フラグがゼロである更新データを先にＤＢ２２０に格納する。これによって、更新処理の順序性が維持される。次いで、レプリケーション処理部２３０は、受信更新リスト２４２に“Inset into B values (4)”を登録する。
【００５５】
なお、図１１に示した旧マスター側から新マスター側に送信更新リストの情報を送信する処理は、新マスター側に読み出し要求または更新要求がなされたテーブルから順に行われてもよい。また、図１２に示した新マスター側で旧マスター側からの送信更新リストに基づいてＤＢを更新する処理も、新マスター側に読み出し要求または更新要求がなされたテーブルから順に行われてもよい。
【００５６】
図１２は、図１１に例示した場面の後、レプリケーション処理部２３０によってＤＢ２２０が更新され、受信更新リスト２４２および受信更新テーブルリスト２４４が更新された場面を例示した図である。図示するように、レプリケーション処理部２３０は、ＤＢ２２０のテーブルＢに「４」を格納し、受信更新テーブルリスト２４４のテーブルＢの更新回数をデクリメントして１とする。ここでも、レプリケーション処理部２３０は、フラグがゼロである更新データを先にＤＢ２２０に格納する。
【００５７】
図１３は、図１２に例示した場面の後、レプリケーション処理部２３０によってＤＢ２２０が更新され、受信更新リスト２４２および受信更新テーブルリスト２４４が更新された場面を例示した図である。図示するように、レプリケーション処理部２３０は、テーブルＢについてフラグがゼロである更新データが無くなったため、フラグが１である更新データに基づいてＤＢ２２０を更新する。レプリケーション処理部２３０は、ＤＢ２２０のテーブルＢに「７」を格納し、受信更新テーブルリスト２４４のテーブルＢの更新回数をデクリメントして０とする。なお、この場面の処理はＤＢ管理部２１０によって行われてもよい。
【００５８】
スイッチオーバー開始後に送信更新リスト２４１に登録された、スイッチオーバー開始時点では同期済のテーブルＡについての更新データ“Insert into A (6)”は、図１１〜図１３で例示した場面の後、あるいはそれらの間の任意のタイミングで、通常時と同じように第１ＤＢサーバ１００に送信され、ＤＢ１２０に反映される。図１４は、テーブルＡの同期が完了した場面を例示した図である。これによって、未同期データの同期が完了する。未同期データの同期の完了は、例えば、新たにマスターＤＢとなった方のＤＢ管理部２１０によって判断され、旧マスターＤＢのＤＢ管理部１１０に通知される。未同期データの同期が完了すると、通常時の処理に戻る。なお、図１３に示すように、スイッチオーバー開始時点で存在していた未同期データの同期が完了したことをもって、未同期データの同期が完了したと判断してもよい。
【００５９】
［処理フロー］
以下、スイッチオーバー時におけるデータベースシステム１における処理の流れについて説明する。ここでは、第１ＤＢサーバ１００が旧マスターＤＢであり、第２ＤＢサーバ２００が新マスターＤＢであるものとして説明するが、逆の場合もあり得る。
【００６０】
図１５は、第１ＤＢサーバ１００のＤＢ管理部１１０およびレプリケーション処理部１３０により実行される処理の流れの一例を示すフローチャートである。本フローチャートの処理は、ＤＢ管理部１１０がスイッチオーバー要求を受け付けたときに開始される。
【００６１】
まず、ＤＢ管理部１１０が、スイッチオーバーする旨の情報を新しくマスターＤＢとなるＤＢ２００のＤＢ管理部２１０に通知する（ステップＳ１００）。次に、レプリケーション処理部１３０が、送信更新テーブルリスト１４３に登録された情報を一括してレプリケーション処理部２３０に送信する（ステップＳ１０２）。
【００６２】
次に、ＤＢ管理部１１０が、ＤＢリンクＤＬを介して更新要求があったか否かを判定する（ステップＳ１０４）。ＤＢリンクＤＬを介して更新要求があった場合、ＤＢ管理部１１０が、ＤＢ１２０を更新する（ステップＳ１０６）。なお、ステップＳ１０６において更新リストモジュール１４０の更新は行わない。
【００６３】
次に、レプリケーション処理部１３０が、送信更新リスト１４１に更新データが存在するか否かを判定する（ステップＳ１０８）。送信更新リスト１４１に更新データが存在する場合、レプリケーション処理部１３０は、レプリケーションリンクＲＬを介して更新データを送信可能な状態であるか否かを判定する（ステップＳ１１０）。送信可能な状態でない場合、ステップＳ１０４に処理が戻される。送信可能な状態でない場合とは、例えば、先に送信した更新データに関してレプリケーション処理部２３０から、ＤＢ２２０への反映を完了した旨の通知を受けていない場合、或いは、レプリケーションリンクＲＬが通信に使用されている最中である場合などである。一方、送信可能な状態である場合、レプリケーション処理部１３０は、レプリケーションリンクＲＬを介して、更新データのうち登録されたタイミングの最も早いものをレプリケーション処理部２３０に送信し、送信更新リスト１４１から送信した更新データを削除する（ステップＳ１１２）。
【００６４】
そして、ＤＢ管理部１１０は、未同期データの同期が完了したか否かを判定する（ステップＳ１１４）。未同期データの同期が完了していないと判定された場合、ステップＳ１０４に処理が戻され、未同期データの同期が完了したと判定された場合、本フローチャートの処理が終了する。なお、ＤＢ管理部１１０は、例えば、ＤＢリンクＤＬを介してＤＢ管理部２１０から受信される通知情報に基づいて、未同期データの同期が完了したか否かを判定する。
【００６５】
図１６は、第２ＤＢサーバ２００のＤＢ管理部２１０およびレプリケーション処理部２３０により実行される処理の流れの一例を示すフローチャートである。本フローチャートの処理は、ＤＢ管理部２１０がスイッチオーバー通知（図１５のステップＳ１００の通知）を受けた受け付けたときに開始される。
【００６６】
まず、ＤＢ管理部２１０は、スイッチオーバーする旨をクライアント３００に通知する（ステップＳ２００）。次に、レプリケーション処理部２３０が、レプリケーション処理部１３０から、第１ＤＢサーバ１００の送信更新テーブルリスト１４３の情報を一括して受信し、受信更新テーブルリスト２４４に登録する（ステップＳ２０２）。
【００６７】
次に、ＤＢ管理部２１０は、クライアント３００から更新要求を受け付けたか否かを判定する（ステップＳ２０４）。クライアント３００から更新要求を受け付けたと判定した場合、ＤＢ管理部２１０は、更新要求の対象が未同期のテーブルであるか否かを判定する（ステップＳ２０６）。更新要求の対象が未同期のテーブルでないと判定した場合、ＤＢ管理部２１０は、自身（第２ＤＢサーバ２００）のＤＢ２２０を更新し、更新内容を更新リストモジュール２４０に登録する（ステップＳ２０８）。
【００６８】
一方、更新要求の対象が未同期のテーブルであると判定した場合、ＤＢ管理部２１０は、ＤＢリンクＤＬを介して旧マスターＤＢである第１ＤＢサーバ１００のＤＢ管理部１１０に更新要求を転送する（ステップＳ２１０）。そして、ＤＢ管理部２１０は、更新要求を自身の更新リストモジュール２４０に登録する（ステップＳ２１２）。
【００６９】
次に、レプリケーション処理部２３０は、旧マスターＤＢである第１ＤＢサーバ１００のレプリケーション処理部１３０から更新データを受信したか否かを判定する（ステップＳ２１４）。レプリケーション処理部１３０から更新データを受信した場合、レプリケーション処理部２３０は、更新リストモジュール１４０に更新データなどの情報を登録する（ステップＳ２１６）。次に、レプリケーション処理部２３０は、ＤＢ２２０を更新可能であるか否かを判定する（ステップＳ２１８）。ＤＢ２２０を更新可能であると判定した場合、レプリケーション処理部２３０は、更新リストモジュール２４０の内容に基づいてＤＢ２２０を更新する（ステップＳ２２０）。ＤＢを更新可能でない場合とは、例えば、ＤＢ管理部２１０によってＤＢ２２０の更新が行われている最中である場合である。
【００７０】
次に、ＤＢ管理部２１０は、未同期データの同期が完了したか否かを判定する（ステップＳ２２２）。未同期データの同期が完了していないと判定された場合、ステップＳ２０４に処理が戻される。一方、未同期データの同期が完了したと判定された場合、ＤＢ管理部２１０は、旧マスターＤＢである第１ＤＢサーバ１００のＤＢ管理部１１０に完了通知を行う（ステップＳ２２４）。ＤＢ管理部２１０は、例えば、第１ＤＢサーバ１００との通信により更新リストモジュール１４０および２４０の全ての情報がリセットされているか否かを判定し、全ての情報がリセットされていることが確認された場合に、未同期データの同期が完了したと判定する。
【００７１】
以上説明した処理によれば、スイッチオーバーの実行時に、より迅速にクライアントに応答することができる。
【００７２】
図１７は、比較例のデータベースシステムにおいてスイッチオーバー実行時に行われる処理の流れを模式的に示す図である。比較例のデータベースシステムでは、スイッチオーバー（図中、ＳＯ）発生時に未同期データが旧マスターにある場合、未同期データを転送し、未同期データを新マスターのメモリに格納し、更に、未同期データを新マスターのＤＢに格納してからスイッチオーバーが完了する。この処理の中で、未同期データをＤＢに格納する処理の時間が支配的であり、例えば、数［ｓｅｃ］〜数十［ｓｅｃ］といったオーダーでスイッチオーバー完了までの時間がかかる場合がある。
【００７３】
図１８は、実施形態のデータベースシステム１においてスイッチオーバー実行時に行われる処理の流れを模式的に示す図である。実施形態のデータベースシステム１では、スイッチオーバーが発生すると、まず送信更新テーブルリストが旧マスターから新マスターに送信され、新マスターは、受信した送信更新テーブルリストを受信更新テーブルリストとして保持する。この時点でスイッチオーバーは完了する。実施形態では、スイッチオーバー完了までの間にＤＢの更新処理は必要でなく、例えば、１［ｓｅｃ］未満のオーダーで処理が完了することが見込まれる。そして、新マスターは、受信更新テーブルリストを参照しながらクライアントからの要求を自身または旧マスターに振り分け、データベースシステム１の原則全てのテーブルについて、クライアントからの要求に迅速に応じることができる。
【００７４】
［三以上のＤＢサーバを備える場合］
なお、以上の説明では、データベースシステムは、二つのＤＢサーバを備えるものとして説明したが、データベースシステムは、三つ以上のＤＢサーバを備えてもよい。図１９は、三つ以上のＤＢサーバを備えるデータベースシステム２の概略図である。図では、第１ＤＢサーバ１００Ａと、第２ＤＢサーバ２００Ａと、一以上の第ｎＤＢサーバ４００Ａ（ｎは３以上の自然数）とを備えるデータベースシステム２を示している。それぞれのＤＢサーバは、ＤＢ管理部と、ＤＢと、更新リストモジュールと、レプリケーション処理部とを備える。
【００７５】
以下、第１ＤＢサーバ１００Ａが旧マスターＤＢであり、第２ＤＢサーバ２００Ａが新マスターＤＢ、第ｎＤＢサーバ４００Ａはスイッチオーバーの前後を通じてスレーブＤＢであるものとする。図２０は、データベースシステム２においてスイッチオーバーが開始された場面を示す図である。第１ＤＢサーバ１００Ａは、スイッチオーバーが開始されたとき、送信更新テーブルリストを第２ＤＢサーバ２００Ａに送信する。図２１は、データベースシステム２においてスイッチオーバーが完了した後の場面を示す図である。図示するように、ＤＢ管理部２１０Ａは、未同期テーブルに対する要求を第１ＤＢサーバ１００Ａに転送する。レプリケーション処理部１４０Ａは、更新リストモジュール１３０Ａに登録された未同期データ（更新データ）を第２ＤＢサーバ２００Ａおよび第ｎＤＢサーバ４００Ａに送信する。また、レプリケーション処理部２４０Ａは、スイッチオーバー完了後、同期完了までの間に発生した未同期データを第１ＤＢサーバ１００Ａおよび第ｎＤＢサーバ４００Ａに送信する。これによって、二つのＤＢサーバを備える場合と同様のスイッチオーバーが実現される。
【００７６】
以上説明した少なくともひとつの実施形態によれば、自データベースサーバが、クライアントからの要求を受け付ける第１の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録するデータベース管理部と、自データベースサーバが、前記第１の状態である場合、前記メモリに登録された更新データを前記他のデータベースサーバに送信する同期処理部と、を備え、自データベースサーバが、役割変更指示に応じて前記第１の状態から第２の状態に遷移するとき、前記同期処理部は、前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、自データベースサーバが、前記第２の状態である場合、前記同期処理部は、前記メモリに登録された更新データを前記他のデータベースサーバに送信し、自データベースサーバが、前記第２の状態から遷移する第３の状態である場合、前記同期処理部は、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新する。これによって、スイッチオーバー実行時に、より迅速にクライアントに応答することができる。
【００７７】
なお、上記実施形態では、レプリケーション処理部が通常時とスイッチオーバー時との双方において処理を実行するものとしたが、データベースシステムは、通常時には起動せず、スイッチオーバー時に起動して上記レプリケーション処理部と同様の処理を行う機能部を備えてもよい。前者の場合、レプリケーション処理部が「同期処理部」の一例であり、後者の場合、レプリケーション処理部と、その機能部とを合わせたものが「同期処理部」の一例である。
【００７８】
また、マスターＤＢである状態が第１の状態に相当し、マスターＤＢからスレーブＤＢに切り替わってスイッチオーバーが完了するまでの状態が第２の状態に相当し、スレーブＤＢである状態が第３の状態に相当し、スレーブＤＢからマスターＤＢに切り替わってスイッチオーバーが完了するまでの状態が第４の状態に相当する。
【００７９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００８０】
１００  第１ＤＢサーバ
１１０  ＤＢ管理部
１２０  ＤＢ
１３０  レプリケーション処理部
１４０  更新リストモジュール
１４１  送信更新リスト
１４２  受信更新リスト
１４３  送信更新テーブルリスト
１４４  受信更新テーブルリスト
２１０  ＤＢ管理部
２２０  ＤＢ
２３０  レプリケーション処理部
２４０  更新リストモジュール
２４１  送信更新リスト
２４２  受信更新リスト
２４３  送信更新テーブルリスト
２４４  受信更新テーブルリスト
【図１】
2019003584.tif 000003
【図２】
2019003584.tif 000004
【図３】
2019003584.tif 000005
【図４】
2019003584.tif 000006
【図５】
2019003584.tif 000007
【図６】
2019003584.tif 000008
【図７】
2019003584.tif 000009
【図８】
2019003584.tif 000010
【図９】
2019003584.tif 000011
【図１０】
2019003584.tif 000012
【図１１】
2019003584.tif 000013
【図１２】
2019003584.tif 000014
【図１３】
2019003584.tif 000015
【図１４】
2019003584.tif 000016
【図１５】
2019003584.tif 000017
【図１６】
2019003584.tif 000018
【図１７】
2019003584.tif 000019
【図１８】
2019003584.tif 000020
【図１９】
2019003584.tif 000021
【図２０】
2019003584.tif 000022
【図２１】
2019003584.tif 000023