このアプリケーションの一部のコンテンツは現時点では利用できません。
このような状況が続く場合は、にお問い合わせくださいフィードバック & お問い合わせ
1. (WO2018235348) データベースサーバ、データベース管理方法、および記憶媒体
Document

明 細 書

発明の名称 データベースサーバ、データベース管理方法、および記憶媒体

技術分野

0001  

背景技術

0002   0003   0004   0005  

先行技術文献

特許文献

0006  

発明の概要

発明が解決しようとする課題

0007  

課題を解決するための手段

0008  

図面の簡単な説明

0009  

発明を実施するための形態

0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079  

請求の範囲

1   2   3   4   5   6   7   8   9   10  

補正された請求の範囲(条約第19条)

1  *   2  *   3  *   4   5   6   7  *   8   9  *   10  *  

条約第19条(1)に基づく説明書

図面

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21  

明 細 書

発明の名称 : データベースサーバ、データベース管理方法、および記憶媒体

技術分野

[0001]
 本発明の実施形態は、データベースサーバ、データベース管理方法、および記憶媒体に関する。

背景技術

[0002]
 従来、データのレプリケーションを行うシステムが知られている。レプリケーションは、複数のデータベース間で行われる。複数のデータベースを備えるデータベースシステムでは、いずれかのデータベースサーバがマスターとして機能し、他のデータベースサーバがスレーブとして機能する場合がある。マスターは、クライアントからの要求を受け付け、自身のデータベースを更新すると共に、スレーブのデータベースサーバにデータの複製を保存すること(データの同期)を依頼する。
[0003]
 ここで、データベースシステムとして、要求に基づく処理が完了したことをクライアントに通知する動作パターンには、主に2通りの動作パターンがある。例えば、スレーブにおいて同期が完了してからクライアントに通知する動作パターン(同期レプリケーション)と、クライアントに通知してから任意のタイミングで同期を行う動作パターン(非同期レプリケーション)とがある。
[0004]
 そして、マスターとスレーブの関係は、何らかの契機で入れ替わる場合がある。以下、この動作をスイッチオーバーと称する。従来の非同期レプリケーションを行うデータベースシステムでは、スイッチオーバーを開始する時点で同期が完了していない場合、同期が完了するまでスイッチオーバーが完了せず、クライアントからの要求を受け付けられない期間が生じる場合があった。なお、機器故障などの異常時に実行されるスイッチに関してはこの限りでない。
[0005]
 上記に関連し、第1のサイトと第2のサイトとを備え、第2のサイトが、第1のサイトに代わってまたは第1のサイトの補助としてシステム機能の少なくとも一部を提供するために書き込み要求または読み出し要求を受け付けることができ、要求に基づく処理を実行するとき、要求の対象となる最新のデータを未だ保持していなければ、必要な更新情報を取得してから処理を実行するシステムが知られている。しかしながら、この技術においても、要求の対象となる最新のデータを未だ保持していない場合には、必要な更新情報を取得するまでの間、要求に基づく処理を実行できないことになり、クライアントへの応答が遅延する場合があった。

先行技術文献

特許文献

[0006]
特許文献1 : 特開2006-11848号公報

発明の概要

発明が解決しようとする課題

[0007]
 本発明が解決しようとする課題は、スイッチオーバー実行時に、より迅速にクライアントに応答することができるデータベースサーバ、データベース管理方法、および記憶媒体を提供することである。

課題を解決するための手段

[0008]
 実施形態のデータベースサーバは、データベースシステムに含まれる。データベースシステムは、複数のデータベースサーバを備える。データベースサーバは、データベース管理部と、同期処理部とを持つ。データベース管理部は、自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録する。同期処理部は、自データベースサーバが、前記第1の状態である場合、前記メモリに登録された更新データを前記他のデータベースに送信する。自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、前記同期処理部は、前記メモリに登録された前記管理情報を前記他のデータベースに送信する。自データベースサーバが、前記第2の状態である場合、前記同期処理部は、前記メモリに登録された更新データを前記他のデータベースに送信する。自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、前記同期処理部は、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新する。

図面の簡単な説明

[0009]
[図1] 実施形態のデータベースシステム1の構成図。
[図2] 通常時におけるステージシステム1の動作を説明するための図。
[図3] 通常時におけるステージシステム1の動作を説明するための図。
[図4] 通常時におけるステージシステム1の動作を説明するための図。
[図5] 通常時におけるステージシステム1の動作を説明するための図。
[図6] 通常時におけるステージシステム1の動作を説明するための図。
[図7] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図8] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図9] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図10] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図11] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図12] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図13] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図14] スイッチオーバー時におけるステージシステム1の動作を説明するための図。
[図15] 第1DBサーバ100のDB管理部110およびレプリケーション処理部130により実行される処理の流れの一例を示すフローチャート。
[図16] 第2DBサーバ200のDB管理部210およびレプリケーション処理部230により実行される処理の流れの一例を示すフローチャート。
[図17] 比較例のデータベースシステムにおいてスイッチオーバー実行時に行われる処理の流れを模式的に示す図。
[図18] 実施形態のデータベースシステム1においてスイッチオーバー実行時に行われる処理の流れを模式的に示す図。
[図19] 三つ以上のDBサーバを備えるデータベースシステム2の概略図。
[図20] データベースシステム2においてスイッチオーバーが開始された場面を示す図。
[図21] データベースシステム2においてスイッチオーバーが完了した後の場面を示す図。

発明を実施するための形態

[0010]
 以下、実施形態のデータベースサーバ、データベース管理方法、および記憶媒体を、図面を参照して説明する。
[0011]
 [全体構成]
 図1は、実施形態のデータベースシステム1の構成図である。データベースシステム1は、クライアント300からの要求に応じて、ストレージ装置に格納したデータベースを管理するシステムである。クライアント300は、例えば、ネットワーク(不図示)を介してデータベースシステム1に要求(換言するとコマンド、リクエスト)を送信する各種コンピュータ装置である。クライアント300は、データベースシステム1よりも上位のデータベースシステムの管理コンピュータであってもよい。要求は、例えばSQL文によって伝達される。実施形態では、クライアント300とデータベースシステム1との通信経路をクライアントリンクCLと称し、図示する。
[0012]
 データベースシステム1は、例えば、第1DB(データベース)サーバ100と、第2DBサーバ200とを備える。第1DBサーバ100および第2DBサーバ200は、一方がマスターDBとして動作し、他方がスレーブDBとして動作する。図1の例では、第1DBサーバ100がマスターDBとして動作し、第2DBサーバ200がスレーブDBとして動作している。この関係は、例えば、図示しないデータベースシステム1の入力部に対して指示信号を出力することで切り替え可能である。
[0013]
 マスターDBは、クライアント300からの要求を受け付け、まず自信のDBを更新しでクライアント300に応答を返し、任意のタイミングでスレーブDBに同じ要求を送信してDBを同期させる。すなわち、データベースシステム1は、非同期レプリケーションを行う。
[0014]
 マスターDBとスレーブDBの間の通信経路として、例えば、DBリンクDLと、レプリケーションリンクRLの二つが用意されている。これらの通信経路は、物理的に異なる通信経路であってもよいし、一つの通信線を用いた仮想的な通信経路であってもよいし、無線通信を用いた通信経路であってもよい。
[0015]
 [第1DBサーバ]
 第1DBサーバ100は、例えば、DB管理部110と、DB120と、レプリケーション処理部130と、更新リストモジュール140とを備える。DB管理部110およびレプリケーション処理部130は、例えば、CPU(Central Processing Unit)などのプロセッサがプログラム(ソフトウェア)を実行することにより実現される。また、これらのうち一方または双方は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)などのハードウェア(回路部:circuitry)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
[0016]
 DB管理部110は、第1DBサーバ100がマスターDBである場合、クライアント300に対する窓口として機能する。DB管理部110は、クライアント300からの要求を解釈し、DB120の更新あるいはDB120からのデータの読み出しを行う。更新の要求には、書き込みと削除があるが、以下ではこれらをまとめて更新要求と称する。DB管理部110は、所定のデータの管理単位でDB120を管理する。データの管理単位は、テーブル、ブロック、ページ、レコードその他の名称で称することができるが、本実施形態ではデータの管理単位をテーブルとして説明する。また、簡易的に、DB120およびDB220には、A、B、C、D、Eの5つのテーブルが設定されているものとする。また、DB管理部110は、DB120を更新するのに応じて、更新リストモジュール140を更新する。
[0017]
 DB120は、例えば、一以上の、HDD(Hard Disk Drive)やフラッシュメモリ、磁気抵抗メモリなどの不揮発性の記憶装置(ストレージ装置)によって記憶されるデータベースである。
[0018]
 レプリケーション処理部130は、第1DBサーバ100がマスターDBである場合、DB管理部110によって更新された更新リストモジュール140を参照し、クライアント300からの要求を解釈した結果(或いは要求そのもの)を、レプリケーションリンクRLを介して第2DBサーバ200のレプリケーション処理部230に送信する。この際に、レプリケーション処理部130は、更新リストモジュール140を更新する。また、レプリケーション処理部130は、第1DBサーバ100がスレーブDBである場合、レプリケーションリンクRLを介して第2DBサーバ200のレプリケーション処理部230から受信した情報に基づいて、DB120を更新する。
[0019]
 更新リストモジュール140は、例えばRAM(Random Access Memory)、フラッシュメモリなどのメモリによって記憶される情報である。更新リストモジュール140は、DB120と同じ記憶装置によって記憶されてもよい。更新リストモジュール140は、例えば、送信更新リスト141と、受信更新リスト142と、送信更新テーブルリスト143と、受信更新テーブルリスト144とを備える。
[0020]
 送信更新リスト141には、更新データが登録される。送信更新リスト141に登録される更新データは、DB管理部110によりDB120に更新がなされたデータであって、未だ第2DBサーバ200に送信されていないデータである。
[0021]
 受信更新リスト142には、更新データとフラグとが登録される。受信更新リスト142に登録される更新データは、これからDB120に対して更新処理がなされる対象のデータである。フラグについては後述する。
[0022]
 送信更新テーブルリスト143には、テーブルと更新回数とが登録される。送信更新テーブルリスト143に登録されるテーブルは、送信更新リスト141に登録されている更新データが更新対象とするテーブルである。
[0023]
 送信更新テーブルリスト143、受信更新テーブルリスト144、送信更新テーブルリスト243、および受信更新テーブルリスト244における更新回数は、通常時とスイッチオーバー時で意味合いが異なる。ここでスイッチオーバーについて説明する。スイッチオーバーとは、例えば、外部からの指示に応じて、或いは内部的なロジックに基づいて、マスターDBとスレーブDBの機能を入れ替えることをいう。この機能の入れ替えには、スイッチオーバーの他に、機器故障や通信障害などによって緊急的に行うフェールオーバーがある。スイッチオーバーは、上記のような異常に起因して行われるものではないため、スイッチオーバーの完了時には、クライアント300から見てスイッチオーバー前の状態が引き継がれている必要がある。以下、スイッチオーバーの処理が開始されてから完了するまでの間をスイッチオーバー時と称し、それ以外の期間を通常時と称する。
[0024]
 通常時の場合、送信更新テーブルリスト143における更新回数は、対応するテーブルにおいて、送信更新リスト141に登録されている更新データの数を表す。また、スイッチオーバー時の場合、送信更新テーブルリスト143における更新回数は、スイッチオーバー開始時にレプリケーション処理部230に送信された後、レプリケーション処理部130によってリセットされる。
[0025]
 受信更新テーブルリスト144には、テーブルと更新回数とが登録される。受信更新テーブルリスト144に登録されるテーブルは、第2DBサーバ200の送信更新リスト241に登録されている更新データが更新対象とするテーブルである。
[0026]
 通常時の場合、受信更新テーブルリスト144における更新回数は、対応するテーブルにおいて、受信更新リスト142に登録されている更新データの数を表す。スイッチオーバー時の場合、受信更新テーブルリスト144における更新回数は、スイッチオーバー開始時にレプリケーション処理部230から受信した回数に対して、未同期のテーブルに関する更新要求がクライアント300から受信される度にDB管理部110によってインクリメントされ、DB120に格納される度にレプリケーション処理部130によってデクリメントされる。
[0027]
 [第2DBサーバ]
 第2DBサーバ200は、例えば、DB管理部210と、DB220と、レプリケーション処理部230と、更新リストモジュール240とを備える。DB管理部210およびレプリケーション処理部230は、例えば、CPUなどのプロセッサがプログラム(ソフトウェア)を実行することにより実現される。また、これらのうち一方または双方は、LSIやASIC、FPGAなどのハードウェア(回路部:circuitry)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
[0028]
 DB管理部210は、第2DBサーバ100がマスターDBである場合、クライアント300に対する窓口として機能する。DB管理部210は、クライアント300からの要求を解釈し、DB220の更新あるいはDB220からのデータの読み出しを行う。DB管理部210は、第1DBサーバ100と同じ管理単位でDB220を管理する。また、DB管理部210は、DB220を更新するのに応じて、更新リストモジュール240を更新する。
[0029]
 DB220は、例えば、一以上の、HDDやフラッシュメモリ、磁気抵抗メモリなどの不揮発性の記憶装置(ストレージ装置)によって記憶されるデータベースである。
[0030]
 レプリケーション処理部230は、第2DBサーバ200がマスターDBである場合、DB管理部210によって更新された更新リストモジュール240を参照し、クライアント300からの要求を解釈した結果(或いは要求そのもの)を、レプリケーションリンクRLを介して第1DBサーバ100のレプリケーション処理部130に送信する。この際に、レプリケーション処理部230は、更新リストモジュール240を更新する。また、レプリケーション処理部230は、第2DBサーバ200がスレーブDBである場合、レプリケーションリンクRLを介して第1DBサーバ100のレプリケーション処理部130から受信した情報に基づいて、DB210を更新する。
[0031]
 更新リストモジュール240は、例えばRAM、フラッシュメモリなどの記憶装置によって記憶される情報である。更新リストモジュール240は、DB220と同じ記憶装置によって記憶されてもよい。更新リストモジュール240は、例えば、送信更新リスト241と、受信更新リスト242と、送信更新テーブルリスト243と、受信更新テーブルリスト244とを備える。
[0032]
 送信更新リスト241には、更新データが登録される。送信更新リスト241に登録される更新データは、DB管理部210によりDB220に更新がなされたデータであって、未だ第1DBサーバ100に送信されていないデータである。
[0033]
 受信更新リスト242には、更新データとフラグとが登録される。受信更新リスト242に登録される更新データは、第1DBサーバ100から受信し、未だDB220に対して更新処理がなされていないデータである。フラグについては後述する。
[0034]
 送信更新テーブルリスト243には、テーブルと更新回数とが登録される。送信更新テーブルリスト243に登録されるテーブルは、送信更新リスト241に登録されている更新データが更新対象とするテーブルである。
[0035]
 通常時において、送信更新テーブルリスト243における更新回数は、対応するテーブルにおいて、送信更新リスト241に登録されている更新データの数を表す。また、スイッチオーバー時の場合、送信更新テーブルリスト243における更新回数は、スイッチオーバー開始時にレプリケーション処理部230に送信された後、レプリケーション処理部230によってリセットされる。
[0036]
 受信更新テーブルリスト244には、テーブルと更新回数とが登録される。受信更新テーブルリスト244に登録されるテーブルは、第2DBサーバ100の送信更新リスト141に登録されている更新データが更新対象とするテーブルである。
[0037]
 通常時において、受信更新テーブルリスト244における更新回数は、対応するテーブルにおいて、受信更新リスト242に登録されている更新データの数を表す。スイッチオーバー時の場合、受信更新テーブルリスト244における更新回数は、スイッチオーバー開始時にレプリケーション処理部230から受信した回数に対して、未同期のテーブルに関する更新要求がクライアント300から受信される度にDB管理部210によってインクリメントされ、DB220に格納される度にレプリケーション処理部230によってデクリメントされる。
[0038]
 [処理内容:通常時]
 以下、ステージシステム1における処理の内容について、より詳細に説明する。まず、前述した通常時の処理について説明する。図2~6は、通常時におけるステージシステム1の動作を説明するための図である。
[0039]
 以下、時系列に場面を例示して説明する。図2は、クライアント300からテーブルAに「1」を格納する更新要求がなされた場面を示している。DB管理部110は、DB120のテーブルAに「1」を格納すると共に、送信更新リスト141に、クライアント300からの要求内容を示す“Inset into A values (1)”のようなデータ(以下、更新データ)を登録し、更に、送信更新テーブルリスト143のテーブルAの更新回数をインクリメントして1とする。
[0040]
 図3は、図2に例示した場面の後、クライアント300からテーブルBに「2」を格納する更新要求がなされた場面を例示した図である。DB管理部110は、DB120のテーブルBに「2」を格納すると共に、送信更新リスト141に更新データ“Inset into B values (2)”を登録し、更に、送信更新テーブルリスト143のテーブルBの更新回数をインクリメントして1とする。
[0041]
 図4は、図3に例示した場面の後、レプリケーション処理部130によって送信更新リスト141のうちテーブルAに関する更新データ“Inset into A values (1)”と、送信更新テーブルリスト143のうちテーブルAに関する情報とがレプリケーション処理部230に送信され、レプリケーション処理部230によって受信更新リスト242および受信更新テーブルリスト244が更新された場面を例示した図である。レプリケーション処理部230は、テーブルAに関する更新データ“Inset into A values (1)”を受信更新リスト242の更新データに登録すると共に、受信更新テーブルリスト244におけるテーブルAに関する更新回数をインクリメントして1とする。ここで、受信更新リスト242のフラグはゼロ、すなわち非設定のままである。受信更新リスト142および受信更新リスト242のフラグは、専らスイッチオーバー時に使用される。なお、通常時において、送信更新リスト141の情報を送信する際に、送信更新テーブルリスト143の情報の送信を省略してもよい。また、通常時において、送信される送信更新リスト141の情報に対応した部分のみを送信するのではなく、送信更新テーブルリスト143の全ての情報を一括して送信してもよい。
[0042]
 図5は、図4に例示した場面の後、レプリケーション処理部230によってDB200が更新され、更に、レプリケーション処理部130によって送信更新リスト141のうちテーブルBに関する更新データ“Inset into B values (2)”と、送信更新テーブルリスト143のうちテーブルBに関する情報とがレプリケーション処理部230に送信された場面を例示した図である。レプリケーション処理部230は、受信更新リスト242に登録されていた、テーブルAに関する更新データ“Inset into A values (1)”に基づいて、DB220を更新し、受信更新テーブルリスト244のテーブルAの更新回数をデクリメントして0とする。更に、レプリケーション処理部230は、テーブルBに関する更新データ“Inset into B values (2)”を受信更新リスト242の更新データに登録すると共に、受信更新テーブルリスト244におけるテーブルBの更新回数をインクリメントして1とする。このように、レプリケーション処理部130とレプリケーション処理部230との間では、例えば、相手方のDBへの格納が完了したことを通知された後に、次の更新データを送信するといった規則でデータ送信が行われる。
[0043]
 図6は、図5に例示した場面の後、レプリケーション処理部230によってDB200が更新された場面を例示した図である。レプリケーション処理部230は、受信更新リスト242に登録されていた、テーブルBに関する更新データ“Inset into A values (2)”に基づいて、DB220を更新し、受信更新テーブルリスト244のテーブルBの更新回数をデクリメントして0とする。これによって、DB120とDB220との間で、全てのテーブルについて同期が完了した状態となる。データベースシステム1は、このような一連の動作を繰り返し実行し、非同期レプリケーションを継続する。
[0044]
 [処理内容:スイッチオーバー時]
 以下、スイッチオーバー時の処理について説明する。図7~14は、スイッチオーバー時におけるステージシステム1の動作を説明するための図である。
[0045]
 以下、時系列に場面を例示して説明する。図7は、スイッチオーバー要求を受け付けた場面を例示した図である。スイッチオーバー要求(役割変更要求の一例)は、クライアント300以外の機器(キーボードやマウスなどの入力デバイスを含む)から受け付けられてもよいし、クライアント300から受け付けられてもよい。また、スイッチオーバー要求は、より上位のデータベースシステムから受け付けられてもよい。この場面において、送信更新リスト141には、テーブルBに関する更新データ“Inset into B values (3)”および“Inset into B values (4)”が登録されている。DB120には、これらの双方が反映済であり、テーブルBには、後に受け付けた要求である“Inset into B values (4)”に基づいて「4」が格納されている。また、送信更新テーブルリスト143には、テーブルBの更新回数として2が登録されている。
[0046]
 図8は、図7に例示した場面の後の場面を例示した図である。DB管理部110は、DBリンクDLを介してDB管理部210に、スイッチオーバー通知を行う。DB管理部210は、以降、自身がクライアント300からの要求を受け付ける旨の通知をクライアント300に対して行う。
[0047]
 また、DB管理部110は、レプリケーション処理部130に対して、スイッチオーバーに伴い、送信更新テーブルリスト143に登録された情報の全てをレプリケーション処理部230に送信するように指示する。レプリケーション処理部130は、送信更新テーブルリスト143に登録された情報の全てをレプリケーション処理部230に送信すると共に、送信更新テーブルリスト143に登録された情報をリセット(削除、消去、あるいは無効化)する。レプリケーション処理部230は、レプリケーション処理部130から受信した情報を、受信更新テーブルリスト244に登録する。
[0048]
 図9は、図8に例示した場面の後、DB管理部210によって、クライアント300からテーブルAに「6」を格納する更新要求と、テーブルBに「7」を格納する更新要求とが受け付けられた場面を例示した図である。この場合、DB管理部210は、それぞれの要求に係るテーブルが未同期であるか否かを判定する。例えば、DB管理部210は、受信更新テーブルリスト244における当該テーブルの更新回数がゼロでなければ未同期であり、ゼロであれば同期済であると判定する。
[0049]
 DB管理部210は、要求が同期済のテーブルに関するものであれば、自身のDB220に格納すると共に送信更新リスト241および送信更新テーブルリスト243に当該テーブルの情報を登録する。図9の例では、DB管理部210は、同期済のテーブルAについては自身のDB220に「6」を格納すると共に送信更新リスト241に更新データ“Insert into A values(6)”を登録し、送信更新テーブルリスト243のテーブルAの更新回数をインクリメントして1とする。
[0050]
 一方、DB管理部210は、要求が未同期のテーブルに関するものであれば、DBリンクDLを介してDB管理部110に要求(或いは要求を解釈した結果)を転送すると共に、受信更新リスト242に要求を解釈した結果を登録する。この際に、DB管理部210は、登録した結果に対してフラグ1を設定し、且つ、更新の順序性を保つためDB220を更新しない。このように、受信更新リスト142および受信更新リスト242におけるフラグは、スイッチオーバーを開始してから完了するまでの間に、未同期のテーブルについて受け付けられた要求に基づくものであることを示すフラグである。図9の例では、DB管理部210は、未同期のテーブルBについては、受信更新リスト242に更新データ“Insert into B values(7)”を登録してフラグを1に設定し、受信更新テーブルリスト244のテーブルBの更新回数をインクリメントして3とする。
[0051]
 未同期のテーブルに関する要求を受けたDB管理部110は、DB120のテーブルBに「7」を格納する。この場合、DB管理部110は、スイッチオーバー中の要求転送であることを認識しているため、DB120を更新するが、送信更新リスト141および送信更新テーブルリスト143の更新は行わない。
[0052]
 なお、更新要求以外の要求、例えば読み出し要求を受け付けた場合も、同様の振り分けが行われる。すなわち、DB管理部210は、読み出し要求が未同期のテーブルに関するものであれば、DBリンクDLを介してDB管理部110に要求(或いは要求を解釈した結果)を転送すると共にDB管理部110により返信された結果をクライアント300に返し、同期済のテーブルに関するものであれば、DB220から読み出してクライアント300に結果を返す。
[0053]
 図10は、図9に例示した場面の後、レプリケーション処理部130によって送信更新リスト141のうちテーブルBに関する更新データ“Inset into B values (3)”がレプリケーション処理部230に送信され、レプリケーション処理部230によって受信更新リスト242が更新された場面を例示した図である。図示するように、レプリケーション処理部230は、受信更新リスト242に“Insert into B values(3)”を登録してフラグを0に設定する。
[0054]
 図11は、図10に例示した場面の後、レプリケーション処理部230によってDB220が更新され、更に、レプリケーション処理部130によって送信更新リスト141のうちテーブルBに関する更新データ“Inset into B values (4)”と、送信更新テーブルリスト143のうちテーブルBに関する情報とがレプリケーション処理部230に送信され、レプリケーション処理部230によって受信更新リスト242および受信更新テーブルリスト244が更新された場面を例示した図である。図示するように、レプリケーション処理部230は、DB220のテーブルBに「3」を格納し、受信更新テーブルリスト244のテーブルBの更新回数をデクリメントして2とする。ここで、レプリケーション処理部230は、フラグがゼロである更新データを先にDB220に格納する。これによって、更新処理の順序性が維持される。次いで、レプリケーション処理部230は、受信更新リスト242に“Inset into B values (4)”を登録する。
[0055]
 なお、図11に示した旧マスター側から新マスター側に送信更新リストの情報を送信する処理は、新マスター側に読み出し要求または更新要求がなされたテーブルから順に行われてもよい。また、図12に示した新マスター側で旧マスター側からの送信更新リストに基づいてDBを更新する処理も、新マスター側に読み出し要求または更新要求がなされたテーブルから順に行われてもよい。
[0056]
 図12は、図11に例示した場面の後、レプリケーション処理部230によってDB220が更新され、受信更新リスト242および受信更新テーブルリスト244が更新された場面を例示した図である。図示するように、レプリケーション処理部230は、DB220のテーブルBに「4」を格納し、受信更新テーブルリスト244のテーブルBの更新回数をデクリメントして1とする。ここでも、レプリケーション処理部230は、フラグがゼロである更新データを先にDB220に格納する。
[0057]
 図13は、図12に例示した場面の後、レプリケーション処理部230によってDB220が更新され、受信更新リスト242および受信更新テーブルリスト244が更新された場面を例示した図である。図示するように、レプリケーション処理部230は、テーブルBについてフラグがゼロである更新データが無くなったため、フラグが1である更新データに基づいてDB220を更新する。レプリケーション処理部230は、DB220のテーブルBに「7」を格納し、受信更新テーブルリスト244のテーブルBの更新回数をデクリメントして0とする。なお、この場面の処理はDB管理部210によって行われてもよい。
[0058]
 スイッチオーバー開始後に送信更新リスト241に登録された、スイッチオーバー開始時点では同期済のテーブルAについての更新データ“Insert into A (6)”は、図11~図13で例示した場面の後、あるいはそれらの間の任意のタイミングで、通常時と同じように第1DBサーバ100に送信され、DB120に反映される。図14は、テーブルAの同期が完了した場面を例示した図である。これによって、未同期データの同期が完了する。未同期データの同期の完了は、例えば、新たにマスターDBとなった方のDB管理部210によって判断され、旧マスターDBのDB管理部110に通知される。未同期データの同期が完了すると、通常時の処理に戻る。なお、図13に示すように、スイッチオーバー開始時点で存在していた未同期データの同期が完了したことをもって、未同期データの同期が完了したと判断してもよい。
[0059]
 [処理フロー]
 以下、スイッチオーバー時におけるデータベースシステム1における処理の流れについて説明する。ここでは、第1DBサーバ100が旧マスターDBであり、第2DBサーバ200が新マスターDBであるものとして説明するが、逆の場合もあり得る。
[0060]
 図15は、第1DBサーバ100のDB管理部110およびレプリケーション処理部130により実行される処理の流れの一例を示すフローチャートである。本フローチャートの処理は、DB管理部110がスイッチオーバー要求を受け付けたときに開始される。
[0061]
 まず、DB管理部110が、スイッチオーバーする旨の情報を新しくマスターDBとなるDB200のDB管理部210に通知する(ステップS100)。次に、レプリケーション処理部130が、送信更新テーブルリスト143に登録された情報を一括してレプリケーション処理部230に送信する(ステップS102)。
[0062]
 次に、DB管理部110が、DBリンクDLを介して更新要求があったか否かを判定する(ステップS104)。DBリンクDLを介して更新要求があった場合、DB管理部110が、DB120を更新する(ステップS106)。なお、ステップS106において更新リストモジュール140の更新は行わない。
[0063]
 次に、レプリケーション処理部130が、送信更新リスト141に更新データが存在するか否かを判定する(ステップS108)。送信更新リスト141に更新データが存在する場合、レプリケーション処理部130は、レプリケーションリンクRLを介して更新データを送信可能な状態であるか否かを判定する(ステップS110)。送信可能な状態でない場合、ステップS104に処理が戻される。送信可能な状態でない場合とは、例えば、先に送信した更新データに関してレプリケーション処理部230から、DB220への反映を完了した旨の通知を受けていない場合、或いは、レプリケーションリンクRLが通信に使用されている最中である場合などである。一方、送信可能な状態である場合、レプリケーション処理部130は、レプリケーションリンクRLを介して、更新データのうち登録されたタイミングの最も早いものをレプリケーション処理部230に送信し、送信更新リスト141から送信した更新データを削除する(ステップS112)。
[0064]
 そして、DB管理部110は、未同期データの同期が完了したか否かを判定する(ステップS114)。未同期データの同期が完了していないと判定された場合、ステップS104に処理が戻され、未同期データの同期が完了したと判定された場合、本フローチャートの処理が終了する。なお、DB管理部110は、例えば、DBリンクDLを介してDB管理部210から受信される通知情報に基づいて、未同期データの同期が完了したか否かを判定する。
[0065]
 図16は、第2DBサーバ200のDB管理部210およびレプリケーション処理部230により実行される処理の流れの一例を示すフローチャートである。本フローチャートの処理は、DB管理部210がスイッチオーバー通知(図15のステップS100の通知)を受けた受け付けたときに開始される。
[0066]
 まず、DB管理部210は、スイッチオーバーする旨をクライアント300に通知する(ステップS200)。次に、レプリケーション処理部230が、レプリケーション処理部130から、第1DBサーバ100の送信更新テーブルリスト143の情報を一括して受信し、受信更新テーブルリスト244に登録する(ステップS202)。
[0067]
 次に、DB管理部210は、クライアント300から更新要求を受け付けたか否かを判定する(ステップS204)。クライアント300から更新要求を受け付けたと判定した場合、DB管理部210は、更新要求の対象が未同期のテーブルであるか否かを判定する(ステップS206)。更新要求の対象が未同期のテーブルでないと判定した場合、DB管理部210は、自身(第2DBサーバ200)のDB220を更新し、更新内容を更新リストモジュール240に登録する(ステップS208)。
[0068]
 一方、更新要求の対象が未同期のテーブルであると判定した場合、DB管理部210は、DBリンクDLを介して旧マスターDBである第1DBサーバ100のDB管理部110に更新要求を転送する(ステップS210)。そして、DB管理部210は、更新要求を自身の更新リストモジュール240に登録する(ステップS212)。
[0069]
 次に、レプリケーション処理部230は、旧マスターDBである第1DBサーバ100のレプリケーション処理部130から更新データを受信したか否かを判定する(ステップS214)。レプリケーション処理部130から更新データを受信した場合、レプリケーション処理部230は、更新リストモジュール140に更新データなどの情報を登録する(ステップS216)。次に、レプリケーション処理部230は、DB220を更新可能であるか否かを判定する(ステップS218)。DB220を更新可能であると判定した場合、レプリケーション処理部230は、更新リストモジュール240の内容に基づいてDB220を更新する(ステップS220)。DBを更新可能でない場合とは、例えば、DB管理部210によってDB220の更新が行われている最中である場合である。
[0070]
 次に、DB管理部210は、未同期データの同期が完了したか否かを判定する(ステップS222)。未同期データの同期が完了していないと判定された場合、ステップS204に処理が戻される。一方、未同期データの同期が完了したと判定された場合、DB管理部210は、旧マスターDBである第1DBサーバ100のDB管理部110に完了通知を行う(ステップS224)。DB管理部210は、例えば、第1DBサーバ100との通信により更新リストモジュール140および240の全ての情報がリセットされているか否かを判定し、全ての情報がリセットされていることが確認された場合に、未同期データの同期が完了したと判定する。
[0071]
 以上説明した処理によれば、スイッチオーバーの実行時に、より迅速にクライアントに応答することができる。
[0072]
 図17は、比較例のデータベースシステムにおいてスイッチオーバー実行時に行われる処理の流れを模式的に示す図である。比較例のデータベースシステムでは、スイッチオーバー(図中、SO)発生時に未同期データが旧マスターにある場合、未同期データを転送し、未同期データを新マスターのメモリに格納し、更に、未同期データを新マスターのDBに格納してからスイッチオーバーが完了する。この処理の中で、未同期データをDBに格納する処理の時間が支配的であり、例えば、数[sec]~数十[sec]といったオーダーでスイッチオーバー完了までの時間がかかる場合がある。
[0073]
 図18は、実施形態のデータベースシステム1においてスイッチオーバー実行時に行われる処理の流れを模式的に示す図である。実施形態のデータベースシステム1では、スイッチオーバーが発生すると、まず送信更新テーブルリストが旧マスターから新マスターに送信され、新マスターは、受信した送信更新テーブルリストを受信更新テーブルリストとして保持する。この時点でスイッチオーバーは完了する。実施形態では、スイッチオーバー完了までの間にDBの更新処理は必要でなく、例えば、1[sec]未満のオーダーで処理が完了することが見込まれる。そして、新マスターは、受信更新テーブルリストを参照しながらクライアントからの要求を自身または旧マスターに振り分け、データベースシステム1の原則全てのテーブルについて、クライアントからの要求に迅速に応じることができる。
[0074]
 [三以上のDBサーバを備える場合]
 なお、以上の説明では、データベースシステムは、二つのDBサーバを備えるものとして説明したが、データベースシステムは、三つ以上のDBサーバを備えてもよい。図19は、三つ以上のDBサーバを備えるデータベースシステム2の概略図である。図では、第1DBサーバ100Aと、第2DBサーバ200Aと、一以上の第nDBサーバ400A(nは3以上の自然数)とを備えるデータベースシステム2を示している。それぞれのDBサーバは、DB管理部と、DBと、更新リストモジュールと、レプリケーション処理部とを備える。
[0075]
 以下、第1DBサーバ100Aが旧マスターDBであり、第2DBサーバ200Aが新マスターDB、第nDBサーバ400Aはスイッチオーバーの前後を通じてスレーブDBであるものとする。図20は、データベースシステム2においてスイッチオーバーが開始された場面を示す図である。第1DBサーバ100Aは、スイッチオーバーが開始されたとき、送信更新テーブルリストを第2DBサーバ200Aに送信する。図21は、データベースシステム2においてスイッチオーバーが完了した後の場面を示す図である。図示するように、DB管理部210Aは、未同期テーブルに対する要求を第1DBサーバ100Aに転送する。レプリケーション処理部140Aは、更新リストモジュール130Aに登録された未同期データ(更新データ)を第2DBサーバ200Aおよび第nDBサーバ400Aに送信する。また、レプリケーション処理部240Aは、スイッチオーバー完了後、同期完了までの間に発生した未同期データを第1DBサーバ100Aおよび第nDBサーバ400Aに送信する。これによって、二つのDBサーバを備える場合と同様のスイッチオーバーが実現される。
[0076]
 以上説明した少なくともひとつの実施形態によれば、自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録するデータベース管理部と、自データベースサーバが、前記第1の状態である場合、前記メモリに登録された更新データを前記他のデータベースサーバに送信する同期処理部と、を備え、自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、前記同期処理部は、前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、自データベースサーバが、前記第2の状態である場合、前記同期処理部は、前記メモリに登録された更新データを前記他のデータベースサーバに送信し、自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、前記同期処理部は、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新する。これによって、スイッチオーバー実行時に、より迅速にクライアントに応答することができる。
[0077]
 なお、上記実施形態では、レプリケーション処理部が通常時とスイッチオーバー時との双方において処理を実行するものとしたが、データベースシステムは、通常時には起動せず、スイッチオーバー時に起動して上記レプリケーション処理部と同様の処理を行う機能部を備えてもよい。前者の場合、レプリケーション処理部が「同期処理部」の一例であり、後者の場合、レプリケーション処理部と、その機能部とを合わせたものが「同期処理部」の一例である。
[0078]
 また、マスターDBである状態が第1の状態に相当し、マスターDBからスレーブDBに切り替わってスイッチオーバーが完了するまでの状態が第2の状態に相当し、スレーブDBである状態が第3の状態に相当し、スレーブDBからマスターDBに切り替わってスイッチオーバーが完了するまでの状態が第4の状態に相当する。
[0079]
 本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。

請求の範囲

[請求項1]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバであって、
 自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録するデータベース管理部と、
 自データベースサーバが、前記第1の状態である場合、前記メモリに登録された更新データを前記他のデータベースサーバに送信する同期処理部と、を備え、
 自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、前記同期処理部は、前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、
 自データベースサーバが、前記第2の状態である場合、前記同期処理部は、前記メモリに登録された更新データを前記他のデータベースサーバに送信し、
 自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、前記同期処理部は、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新する、
 データベースサーバ。
[請求項2]
 自データベースサーバが、前記第2の状態である場合、前記データベース管理部は、前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新し、前記更新データと前記管理情報とを更新しない、
 請求項1記載のデータベースサーバ。
[請求項3]
 自データベースサーバが、前記役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、前記データベース管理部は、前記他のデータベースサーバから受信した前記管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求であるか否かを判定し、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信する、
 請求項1または2記載のデータベースサーバ。
[請求項4]
 自データベースサーバが、前記第4の状態である場合、
 前記データベース管理部は、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求に基づく更新データをメモリに登録し、
 前記データベース管理部または前記同期処理部は、前記他のデータベースサーバから前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する更新データを受信して自データベースサーバのデータベースを更新した後に、前記メモリに登録した更新データを自データベースサーバのデータベースに反映させる、
 請求項3記載のデータベースサーバ。
[請求項5]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバであって、
 自データベースサーバが、クライアントからの要求を受け付けない第3の状態である場合、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新する同期処理部と、
 自データベースサーバが、役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定し、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信するデータベース管理部と、
 を備えるデータベースサーバ。
[請求項6]
 自データベースサーバが、前記第4の状態である場合、
 前記データベース管理部は、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求に基づく更新データをメモリに登録し、
 前記データベース管理部または前記同期処理部は、前記他のデータベースサーバから前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する更新データを受信して自データベースサーバのデータベースを更新した後に、前記メモリに登録した更新データを自データベースサーバのデータベースに反映させる、
 請求項5記載のデータベースサーバ。
[請求項7]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
 自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、
  前記クライアントからの要求に応じてデータベースを更新し、
  前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録し、
  前記メモリに登録された更新データを前記他のデータベースに送信し、
 自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、
  前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、
 自データベースサーバが、前記第2の状態である場合、
  前記メモリに登録された更新データを前記他のデータベースサーバに送信し、
 自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、
  前記複数のデータベースサーバに含まれる他のデータベースサーバサーバから受信した更新データに基づいて前記データベースを更新する、
 データベース管理方法。
[請求項8]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
 自データベースサーバが、クライアントからの要求を受け付けない第3の状態である場合、
  前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新し、
 自データベースサーバが、役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、
  前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定し、
  前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信する、
 データベース管理方法。
[請求項9]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバに、
 自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、
  前記クライアントからの要求に応じてデータベースを更新させ、
  前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録させ、
  前記メモリに登録された更新データを前記他のデータベースに送信させ、
 自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、
  前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信させ、
 自データベースサーバが、前記第2の状態である場合、
  前記メモリに登録された更新データを前記他のデータベースに送信させ、
 自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、
  前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新させる、
 プログラムを記憶した記憶媒体。
[請求項10]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
 自データベースサーバが、クライアントからの要求を受け付けない第3の状態である場合、
  前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新させ、
 自データベースサーバが、役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、
  前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定させ、
  前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信させる、
 プログラムを記憶した記憶媒体。

補正された請求の範囲(条約第19条)
[ 2018年6月7日 ( 07.06.2018 )  国際事務局受理 ]

[1]
[補正後] 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバであって、
 自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、前記クライアントからの要求に応じてデータベースを更新し、前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録するデータベース管理部と、
 自データベースサーバが、前記第1の状態である場合、前記メモリに登録された更新データを前記他のデータベースサーバに送信する同期処理部と、を備え、
 自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、前記同期処理部は、前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、
 自データベースサーバが、前記第2の状態である場合、前記同期処理部は、前記メモリに登録された更新データを前記他のデータベースサーバに送信し、
 自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、前記同期処理部は、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新し、
 自データベースサーバが、前記第2の状態である場合、前記データベース管理部は、前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新し、前記更新データと前記管理情報とを更新しない、
 データベースサーバ。
[2]
[削除]
[3]
[補正後] 自データベースサーバが、前記役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、前記データベース管理部は、前記他のデータベースサーバから受信した前記管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求であるか否かを判定し、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信する、
 請求項1記載のデータベースサーバ。
[4]
 自データベースサーバが、前記第4の状態である場合、
 前記データベース管理部は、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求に基づく更新データをメモリに登録し、
 前記データベース管理部または前記同期処理部は、前記他のデータベースサーバから前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する更新データを受信して自データベースサーバのデータベースを更新した後に、前記メモリに登録した更新データを自データベースサーバのデータベースに反映させる、
 請求項3記載のデータベースサーバ。
[5]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバであって、
 自データベースサーバが、クライアントからの要求を受け付けない第3の状態である場合、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新する同期処理部と、
 自データベースサーバが、役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定し、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信するデータベース管理部と、
 を備えるデータベースサーバ。
[6]
 自データベースサーバが、前記第4の状態である場合、
 前記データベース管理部は、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求に基づく更新データをメモリに登録し、
 前記データベース管理部または前記同期処理部は、前記他のデータベースサーバから前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する更新データを受信して自データベースサーバのデータベースを更新した後に、前記メモリに登録した更新データを自データベースサーバのデータベースに反映させる、
 請求項5記載のデータベースサーバ。
[7]
[補正後] 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
 自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、
  前記クライアントからの要求に応じてデータベースを更新し、
  前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録し、
  前記メモリに登録された更新データを前記他のデータベースに送信し、
 自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、
  前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信し、
 自データベースサーバが、前記第2の状態である場合、
  前記メモリに登録された更新データを前記他のデータベースサーバに送信し、
  前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新し、
  前記更新データと前記管理情報とを更新せず、
 自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、
  前記複数のデータベースサーバに含まれる他のデータベースサーバサーバから受信した更新データに基づいて前記データベースを更新する、
 データベース管理方法。
[8]
 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバが、
 自データベースサーバが、クライアントからの要求を受け付けない第3の状態である場合、
  前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新し、
 自データベースサーバが、役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、
  前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定し、
  前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信する、
 データベース管理方法。
[9]
[補正後] 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバに、
 自データベースサーバが、クライアントからの要求を受け付ける第1の状態である場合、
  前記クライアントからの要求に応じてデータベースを更新させ、
  前記要求に基づき前記複数のデータベースサーバに含まれる他のデータベースサーバに当該他のデータベースサーバのデータベースを更新させるための更新データと、データの管理単位ごとの前記更新データの管理情報とをメモリに登録させ、
  前記メモリに登録された更新データを前記他のデータベースに送信させ、
 自データベースサーバが、役割変更指示に応じて前記第1の状態から第2の状態に遷移するとき、
  前記メモリに登録された前記管理情報を前記他のデータベースサーバに送信させ、
 自データベースサーバが、前記第2の状態である場合、
  前記メモリに登録された更新データを前記他のデータベースに送信させ、
  前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新させ、
  前記更新データと前記管理情報とを更新させず、
 自データベースサーバが、前記第2の状態から遷移する第3の状態である場合、前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいて前記データベースを更新させる、
 プログラムを記憶した記憶媒体。
[10]
[補正後] 複数のデータベースサーバを備えるデータベースシステムに含まれるデータベースサーバに、
 自データベースサーバが、クライアントからの要求を受け付けない第3の状態である場合、
  前記複数のデータベースサーバに含まれる他のデータベースサーバから受信した更新データに基づいてデータベースを更新させ、
 自データベースサーバが、役割変更指示に応じて前記第3の状態から遷移する第4の状態である場合、
  前記他のデータベースサーバから受信した管理情報を参照し、前記クライアントからの要求が、前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースおいて更新されていない管理単位に関する要求であるか否かを判定させ、
  前記他のデータベースサーバのデータベースにおいて更新され且つ自データベースサーバのデータベースにおいて更新されていない管理単位に関する要求である場合に、前記他のデータベースサーバに、前記要求に基づく情報を送信させる、
 プログラムを記憶した記憶媒体。

条約第19条(1)に基づく説明書
 請求の範囲第1項において、「自データベースサーバが、前記第2の状態である場合、前記データベース管理部は、前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新し、前記更新データと前記管理情報とを更新しない」なる文言を追加した。この補正は、請求項2に記載されていた事項に基づいている。
 請求の範囲第7項において、「前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新し、前記更新データと前記管理情報とを更新せず、」なる文言を追加した。この補正は、請求項2に記載されていた事項に基づいている。
 請求の範囲第9項において、「前記他のデータベースサーバから受信される要求に基づいて前記データベースを更新させ、前記更新データと前記管理情報とを更新させず、」なる文言を追加した。この補正は、請求項2に記載されていた事項に基づいている。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15]

[ 図 16]

[ 図 17]

[ 図 18]

[ 図 19]

[ 図 20]

[ 図 21]