(57)【特許請求の範囲】
【請求項１】
第１データベース装置と第２データベース装置を備えるレプリケーションシステムであって、
前記第１データベース装置は、
データを記憶するための複数のレコードを有する第１データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第１テーブル記憶部、前記第１データベースを更新し、更新後の前記第１データベースに基づいて前記第１テーブル記憶部のテーブルを更新し、前記第１データベースの更新された部分に関する更新情報を前記第２データベース装置に送信する第１更新処理部を備え、
前記第２データベース装置は、
前記第１データベースに一致すべき第２データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第２テーブル記憶部、前記更新情報に基づいて前記第２データベースを更新し、更新後の前記第２データベースに基づいて前記第２テーブル記憶部のテーブルを更新する第２更新処理部を備える
ことを特徴とするレプリケーションシステム。
【請求項２】
前記第２更新処理部は、前記第２データベースを更新したなら、前記第１更新処理部に更新応答を送信するものであり、
前記第１更新処理部は、前記第２データベース装置に更新情報を送信してから、前記更新応答を受信するまでは、前記第１データベース装置の更新された部分を更新しない
ことを特徴とする請求項１記載のレプリケーションシステム。
【請求項３】
第１データベース装置と第２データベース装置を備えるレプリケーションシステムの前記第１データベース装置であって、
前記第１データベース装置は、
データを記憶するための複数のレコードを有する第１データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第１テーブル記憶部、前記第１データベースを更新し、更新後の前記第１データベースに基づいて前記第１テーブル記憶部のテーブルを更新し、前記第１データベースの更新された部分に関する更新情報を前記第２データベース装置に送信する第１更新処理部を備え、
前記第２データベース装置は、
前記第１データベースに一致すべき第２データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第２テーブル記憶部、前記更新情報に基づいて前記第２データベースを更新し、更新後の前記第２データベースに基づいて前記第２テーブル記憶部のテーブルを更新する第２更新処理部を備える
ことを特徴とするレプリケーションシステムの第１データベース装置。
【請求項４】
第１データベース装置と第２データベース装置を備えるレプリケーションシステムの前記第２データベース装置であって、
前記第１データベース装置は、
データを記憶するための複数のレコードを有する第１データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第１テーブル記憶部、前記第１データベースを更新し、更新後の前記第１データベースに基づいて前記第１テーブル記憶部のテーブルを更新し、前記第１データベースの更新された部分に関する更新情報を前記第２データベース装置に送信する第１更新処理部を備え、
前記第２データベース装置は、
前記第１データベースに一致すべき第２データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第２テーブル記憶部、前記更新情報に基づいて前記第２データベースを更新し、更新後の前記第２データベースに基づいて前記第２テーブル記憶部のテーブルを更新する第２更新処理部を備える
ことを特徴とするレプリケーションシステムの第２データベース装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーションシステムにおいて複数の情報を有し且つ当該情報間で関連をもつテーブルとともに使用されるデータベースの更新を迅速に行う技術に関するものである。
【背景技術】
【０００２】
近年、通信サービスにおいては、データのＩＰ化やサーバの仮想化（クラウド）等により安価で高付加価値のサービスをユーザが享受できるようになってきている。また、大規模災害時や装置障害時のサービス中断への影響をできる限り最小化する高信頼なネットワークを構築する技術の重要性が高まってきている。このためには、情報処理装置を装置単位で2 重化等の冗長化を図ったり、大規模災害に備え、複数の異なったロケーションに情報処理装置を設置し（例えば、両者間を50Km以上離れた都市間に情報処理装置を設置する等）、複数装置間を同期化（レプリケーション）することにより、片方が罹災し、障害状態となっても、稼働している残った情報処理装置によりサービスを継続可能としている。このような同期化処理において、ＩＰ化により、特に遠隔のＤＢ間でデータ通信を行う場合、パケットの転送遅延が大きくなるとともに（特にインターネット経由の場合等）、各パケットの転送経路が異なってくるため、ＤＢ間の複数のパケットの送信側順序と受信側順序が異なってくることもある。例えば、パケット１をパケット２より送信側情報処理装置から早く送信したが受信側情報処理装置には、パケット２が最初に到着するようなケースである。同期化においては、これらパケット遅延や送受パケット順序逆転を勘案する必要がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】中野雄介, 堀米紀貴, 大石秀昭, 岸田好司, “加入者データベースにお25 けるデータレプリケーション手法”, 電子情報通信学会ソサイエティ大会講演論文集,page 415, Aug.2011.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図８は、従来のレプリケーションシステムの構成の一例を示す図である。  
レプリケーションシステム１０Ａは、通信ネットワークＮを介して接続された第１データベース装置１Ａと第２データベース装置２Ａとを備える。  
第１データベース装置１Ａは、記憶部１１、更新処理部１２Ａを備え、記憶部１１は、データベース１１Ａ、空塞管理部１１Ｂ、チェーン情報記憶部１１Ｃを備える。第１データベース装置１Ａは、通信回線を介して、データ投入端末３に接続される。  
第２データベース装置２Ａは、記憶部２１、更新処理部２２Ａを備え、記憶部２１は、データベース２１Ａ、空塞管理部２１Ｂ、チェーン情報記憶部２１Ｃを備える。
【０００５】
図９に示すように、各データベース１１Ａ、２１Ａは、データを記憶するための複数のレコードを有する。図では、便宜的に、レコードの数は６とし、各レコードを示すIndex値「１」〜「６」も示す。  
各空塞管理部１１Ｂ、２１Ｂは、それぞれデータベース１１Ａ、２１Ａにつき、各レコードが空きレコードか否かを示すステータスを有する。図では、対応するレコードのIndex値「１」〜「６」も示す。  
各チェーン情報１１Ｄ、２１Ｄは、データベース１１Ａ、２１Ａの空きレコードならびに当該空きレコードにデータを書き込む順序を示すもので、それぞれ、チェーン情報記憶部１１Ｃ、２１Ｃに記憶される。図では、対応するレコードのIndex値「１」〜「６」も示す。  
各チェーン情報１１Ｄ、２１Ｄは、データを書き込む順序の先頭のレコードのIndex値と同じ先頭Index、末尾のレコードのIndex値と同じ末尾Index、ならびに、各レコードにつき、１つ前の順序のレコードのIndex値と同じ前Indexおよび１つ後の順序のレコードのIndex値と同じ後Indexを有する。なお、空きレコードでないレコードの前Index、後Index、先頭のレコードの前Index、末尾のレコードの後Indexは、それぞれ「Null」となっている。
【０００６】
図１０は、レプリケーションシステム１０Ａにおける基本動作を示すシーケンス図である。  
データ投入端末３は、データベース１１Ａの更新すべき部分に関する更新情報を第１データベース装置１Ａに送信する（Ｓ１０１）。  
更新処理部１２Ａは、データベース１１Ａを更新情報に基づいて更新する（Ｓ１０３）。具体的には、更新処理部１２Ａは、先頭Indexに対応するレコードに対し、更新情報で指示されたデータを書き込む、または、更新情報で指示されたレコードのデータを消去する、または、更新情報で指示されたレコードのデータを更新情報で指示されたデータに変更する（Ｓ１０３）。  
次に、更新処理部１２Ａは、このようにレコードを更新したなら、更新情報を受け付けないように、つまり、受け付けを一時的に中止する（Ｓ１０５）。この動作は、所謂データベースのロック（更新禁止）という。  
更新処理部１２Ａは、このレコードにデータが書き込まれたなら、当該レコードに対応する空塞管理部１１Ｂのステータスを「使用中」に置き換える（Ｓ１０７）。  
一方、更新処理部１２Ａは、このレコードからデータが消去されたなら、当該レコードに対応する空塞管理部１１Ｂのステータスを「空き」に置き換える（Ｓ１０７）。  
また、更新処理部１２Ａは、データが書き込まれたなら、または、消去されたなら、チェーン情報１１Ｄを更新する（Ｓ１０７）。  
記憶部１１は、こうしてデータベース１１Ａや空塞管理部１１Ｂやチェーン情報１１Ｄが更新されたら、更新内容を含む更新成功の更新応答を更新処理部１２Ａを送信する（Ｓ１０９）。  
更新処理部１２Ａは、更新成功の更新応答を受信したなら、データベース１１Ａ、空塞管理部１１Ｂおよびチェーン情報１１Ｄの更新された部分に関する更新情報を第２データベース装置２Ａに送信する（Ｓ１１１）。
【０００７】
更新処理部２２Ａは、データベース２１Ａを更新情報に基づいて更新する（Ｓ１１３）。具体的には、更新処理部２２Ａは、更新情報で指示されたレコードに更新情報で指示されたデータを書き込む、または、更新情報で指示されたレコードのデータを消去する、または、更新情報で指示されたレコードのデータを更新情報で指示されたデータに変更する（Ｓ１１３）。  
更新処理部２２Ａは、例えば、更新情報で指示された空塞管理部２１Ｂの位置にあるステータスを、更新情報内に含まれるステータスで置き換える（Ｓ１１７）。  
更新処理部２２Ａは、更新情報で指示されたチェーン情報の位置にある前Index、後Index、先頭Index、末尾Indexを、更新情報内に含まれる前Index、後Index、先頭Index、末尾Indexで置き換える（Ｓ１１７）。  
記憶部２１は、こうしてデータベース２１Ａや空塞管理部２１Ｂやチェーン情報２１Ｄが更新されたら、更新内容を含む更新成功の更新応答を更新処理部２２Ａに送信する（Ｓ１１９）。  
更新処理部２２Ａは、記憶部２１から更新成功の更新応答を受信したなら、第１データベース装置１Ａに更新成功の更新応答を送信する（Ｓ１２１）。
【０００８】
更新処理部１２Ａは、更新成功の更新応答を受信したなら、更新成功の更新応答をデータ投入端末３に送信し（Ｓ１２３）、中止した更新情報の受け付けを再開する（Ｓ１２５）。つまり、データベースのロックを解除する。  
ステップＳ１０５からステップＳ１２５の間は、更新情報の受け付けが中止されるので、その間に受信される更新情報に対しては（Ｓ１３１）、更新失敗の応答が返信される（Ｓ１３３）。
【０００９】
次に、図１１を参照し、レプリケーションシステム１０Ａにおいて更新情報の受け付けを一時的に中止する理由を説明する。つまり、ステップＳ１０５、Ｓ１２５を実行しない場合について説明する。図９と同様、レコードの数は便宜的に６とする。  
例えば、第１データベース装置１Ａにおいて、データベース１１ＡのIndex値「２」のレコードに「ＢＢ」が書き込まれると（Ｇ１）、空塞管理部１１ＢのIndex値「２」のステータスが「使用中」に変わり、チェーン情報１１ＤのIndex値「２」の後Indexが「Null」に変わり、Index値「４」の前Indexが「Null」に変わり、先頭Indexが「４」に変わる（Ｇ３）。  
第１データベース装置１Ａは、Index値「２」のレコード、Index値「２」のステータス、Index値「２」の後Index、Index値「４」の前Indexおよび先頭Indexに関する更新情報を第２データベース装置２Ａに送信する（Ｇ５）。  
また、第１データベース装置１Ａにおいて、データベース１１ＡのIndex値「４」のレコードに「ＤＤ」が書き込まれると（Ｇ１１）、空塞管理部１１ＢのIndex値「４」のステータスが「使用中」に変わり、チェーン情報１１ＤのIndex値「４」の後Indexが「Null」に変わり、Index値「５」の前Indexが「Null」に変わり、先頭Indexが「５」に変わる（Ｇ１３）。  
第１データベース装置１Ａは、Index値「４」のレコード、Index値「４」のステータス、Index値「４」の後Index、Index値「５」の前Indexおよび先頭Indexに関する更新情報を第２データベース装置２Ａに送信する（Ｇ１５）。
【００１０】
例えば、ステップＧ５の更新情報よりもステップＧ１５の更新情報が早く受信された際には、第２データベース装置２Ａにおいては、データベース２１ＡのIndex値「４」のレコードに「ＤＤ」が書き込まれ、空塞管理部２１ＢのIndex値「４」のステータスが「使用中」に変わり、チェーン情報２１ＤのIndex値「４」の後Indexが「Null」に変わり、Index値「５」の前Indexが「Null」に変わり、先頭Indexが「５」に変わる（Ｇ２１）。  
その後、ステップＧ５の更新情報が受信された際には、第２データベース装置２Ａにおいては、データベース２１ＡのIndex値「２」のレコードに「ＢＢ」が書き込まれ、空塞管理部２１ＢのIndex値「２」のステータスが「使用中」に変わり、チェーン情報２１ＤのIndex値「２」の後Indexが「Null」に変わり、先頭Indexが「４」に変わる（Ｇ２３）。  
つまり、この時点では、チェーン情報１１Ｄとチェーン情報２１Ｄは互いに一致しておらず、チェーン情報２１Ｄにおいては、順序の矛盾がある。
【００１１】
すなわち、図１２に示すように、チェーン情報２１Ｄにおいては、Index値「４」の後Indexが「５」であり、Index値「５」の前Indexは「Null」であり、両者は矛盾する。  
したがって、データベースのロックと解除（ステップＳ１０５、Ｓ１２５）を実行することで、このような矛盾の発生を防止する必要がある。  
しかし、ステップＳ１０５、Ｓ１２５を実行すると、その一方で、あるレコードを更新している間は、他のレコードは更新できず、複数のレコードを更新するのに長時間を要する。  
つまり、チェーン情報のような、複数の情報を有し且つ当該情報間で関連をもつテーブルとともに使用されるデータベースの更新が迅速に行えないという問題がある。
【００１２】
本発明は、上記の課題に鑑みてなされたものであり、その目的とするところは、レプリケーションシステムにおいて複数の情報を有し且つ当該情報間で関連をもつテーブルとともに使用されるデータベースの更新を迅速に行う技術を提供することにある。
【課題を解決するための手段】
【００１３】
上記の課題を解決するために、第１の本発明は、第１データベース装置と第２データベース装置を備えるレプリケーションシステムであって、前記第１データベース装置は、データを記憶するための複数のレコードを有する第１データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第１テーブル記憶部、前記第１データベースを更新し、更新後の前記第１データベースに基づいて前記第１テーブル記憶部のテーブルを更新し、前記第１データベースの更新された部分に関する更新情報を前記第２データベース装置に送信する第１更新処理部を備え、前記第２データベース装置は、前記第１データベースに一致すべき第２データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第２テーブル記憶部、前記更新情報に基づいて前記第２データベースを更新し、更新後の前記第２データベースに基づいて前記第２テーブル記憶部のテーブルを更新する第２更新処理部を備えることを特徴とする。
【００１４】
例えば、前記第２更新処理部は、前記第２データベースを更新したなら、前記第１更新処理部に更新応答を送信するものであり、前記第１更新処理部は、前記第２データベース装置に更新情報を送信してから、前記更新応答を受信するまでは、前記第１データベース装置の更新された部分を更新しない。
【００１５】
第２の本発明は、第１データベース装置と第２データベース装置を備えるレプリケーションシステムの前記第１データベース装置であって、前記第１データベース装置は、データを記憶するための複数のレコードを有する第１データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第１テーブル記憶部、前記第１データベースを更新し、更新後の前記第１データベースに基づいて前記第１テーブル記憶部のテーブルを更新し、前記第１データベースの更新された部分に関する更新情報を前記第２データベース装置に送信する第１更新処理部を備え、前記第２データベース装置は、前記第１データベースに一致すべき第２データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第２テーブル記憶部、前記更新情報に基づいて前記第２データベースを更新し、更新後の前記第２データベースに基づいて前記第２テーブル記憶部のテーブルを更新する第２更新処理部を備えることを特徴とする。
【００１６】
第３の本発明は、第１データベース装置と第２データベース装置を備えるレプリケーションシステムの前記第２データベース装置であって、前記第１データベース装置は、データを記憶するための複数のレコードを有する第１データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第１テーブル記憶部、前記第１データベースを更新し、更新後の前記第１データベースに基づいて前記第１テーブル記憶部のテーブルを更新し、前記第１データベースの更新された部分に関する更新情報を前記第２データベース装置に送信する第１更新処理部を備え、前記第２データベース装置は、前記第１データベースに一致すべき第２データベース、複数の情報を有し且つ当該情報間で関連をもつテーブルが記憶される第２テーブル記憶部、前記更新情報に基づいて前記第２データベースを更新し、更新後の前記第２データベースに基づいて前記第２テーブル記憶部のテーブルを更新する第２更新処理部を備えることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、レプリケーションシステムにおいて複数の情報を有し且つ当該情報間で関連をもつテーブルとともに使用されるデータベースの更新を迅速に行うことができる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態に係るレプリケーションシステムの構成図である。
【図２】図１の各データベース１１Ａ、２１Ａ、各空塞管理部１１Ｂ、２１Ｂ、各チェーン情報１１Ｄ、２１Ｄを例示した図である。
【図３】図１のレプリケーションシステム１０における基本動作を示すシーケンス図である。
【図４】図１のレプリケーションシステム１０の具体的な動作例（動作例１）を説明するための図である。
【図５】図１のレプリケーションシステム１０の具体的な動作例（動作例２）を説明するための図である。
【図６】変形例に係るチェーン情報を例示した図である。
【図７】変形例に係るデータベースを例示した図である。
【図８】従来のレプリケーションシステム１０Ａの構成を示す図である。
【図９】図８の各データベース１１Ａ、２１Ａ、各空塞管理部１１Ｂ、２１Ｂ、各チェーン情報１１Ｄ、２１Ｄを例示した図である。
【図１０】図８のレプリケーションシステム１０Ａにおける基本動作を示すシーケンス図である。
【図１１】図８のレプリケーションシステム１０Ａにおいて更新情報の受け付けを一時的に中止する理由を説明するための図である。
【図１２】矛盾を含むチェーン情報の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を参照して説明する。
【００２０】
図１は、本実施の形態に係るレプリケーションシステムの構成図である。
【００２１】
レプリケーションシステム１０は、通信ネットワークＮを介して接続された第１データベース装置１と第２データベース装置２とを備えるレプリケーションシステムである。
【００２２】
第１データベース装置１は、記憶部１１、更新処理部１２（本発明の第１更新処理部に相当）を備え、記憶部１１は、データベース１１Ａ（本発明の第１データベースに相当）、空塞管理部１１Ｂ、チェーン情報記憶部１１Ｃ（本発明の第１テーブル記憶部に相当）を備える。第１データベース装置１は、通信回線を介して、データ投入端末３に接続される。
【００２３】
第２データベース装置２は、記憶部２１、更新処理部２２（本発明の第２更新処理部に相当）を備え、記憶部２１は、データベース２１Ａ（本発明の第２データベースに相当）、空塞管理部２１Ｂ、チェーン情報記憶部２１Ｃ（本発明の第２テーブル記憶部に相当）を備える。
【００２４】
レプリケーションシステム１０は、通常では、まず、データベース１１Ａを更新し、データベース１１Ａを更新したら、データベース２１Ａをデータベース１１Ａに一致させるべく更新するようになっている。つまり、通常では、データベース１１Ａが所謂マスターデータベースである。
【００２５】
しかし、場合によっては、まず、データベース２１Ａを更新し、次に、データベース１１Ａを更新することもある。この場合は、データベース２１Ａがマスターデータベースである。
【００２６】
この目的故に、空塞管理部１１Ｂ、２１Ｂは同一構成を有し、チェーン情報記憶部１１Ｃ、２１Ｃは同一構成を有し、更新処理部１２、２２は同じ機能を備えている。
【００２７】
なお、以下の説明では、便宜上、データベース１１Ａがマスターデータベースである場合を主に述べる。
【００２８】
図２に示すように、各データベース１１Ａ、２１Ａは、データを記憶するための複数のレコードを有する。図では、便宜的に、レコードの数は６とし、各レコードを示すIndex値「１」〜「６」も示す。
【００２９】
各空塞管理部１１Ｂ、２１Ｂは、それぞれデータベース１１Ａ、２１Ａにつき、各レコードが空きレコードか否かを示すステータスを有する。図では、対応するレコードのIndex値「１」〜「６」も示す。
【００３０】
各チェーン情報１１Ｄ、２１Ｄは、データベース１１Ａ、２１Ａの空きレコードならびに当該空きレコードにデータを書き込む順序を示すもので、それぞれ、チェーン情報記憶部１１Ｃ、２１Ｃに記憶される。図では、対応するレコードのIndex値「１」〜「６」も示す。各チェーン情報１１Ｄ、２１Ｄは、データベース１１Ａ、２１Ａを高速に検索するのに使用される。
【００３１】
各チェーン情報１１Ｄ、２１Ｄは、データを書き込む順序の先頭のレコードのIndex値と同じ先頭Index、末尾のレコードのIndex値と同じ末尾Index、ならびに、各レコードにつき、１つ前の順序のレコードのIndex値と同じ前Indexおよび１つ後の順序のレコードのIndex値と同じ後Indexを有する。なお、空きレコードでないレコードの前Index、後Index、先頭のレコードの前Index、末尾のレコードの後Indexは、それぞれ「Null」となっている。
【００３２】
つまり、各チェーン情報１１Ｄ、２１Ｄは、各レコードについての情報からなる複数の情報を有し且つ当該情報間で関連をもつテーブルである。
【００３３】
図１に戻り、データ投入端末３は、更新すべき部分に関する更新情報を第１データベース装置１に送信するものである。
【００３４】
更新処理部１２は、データ投入端末３からの更新情報に基づき、データベース１１Ａを更新し、更新後のデータベース１１Ａに基づいて、空塞管理部１１Ｂおよびチェーン情報１１Ｄを更新し、データベース１１Ａおよび空塞管理部１１Ｂの更新された部分に関する更新情報を第２データベース装置２に送信するものである。なお、以下の説明では省略するが、更新処理部２２は、同様にデータベース２１Ａ、空塞管理部２１Ｂおよびチェーン情報２１Ｄを更新し、データベース２１Ａおよび空塞管理部２１Ｂの更新された部分に関する更新情報を第１データベース装置１に送信することができる。
【００３５】
更新処理部２２は、第１データベース装置１からの更新情報に基づき、データベース２１Ａおよび空塞管理部２１Ｂを更新し、更新後のデータベース２１Ａまたは更新後の空塞管理部２１Ｂに基づいて、チェーン情報２１Ｄを更新するものである。以下の説明では省略するが、更新処理部１２は、同様にデータベース１１Ａ、空塞管理部１１Ｂおよびチェーン情報１１Ｄを更新することができる。
【００３６】
（基本動作）
図３は、レプリケーションシステム１０における基本動作を示すシーケンス図である。
【００３７】
なお、便宜上、データベース２１Ａがマスターデータベースである場合だけを述べる。
【００３８】
データ投入端末３は、データベース１１Ａの更新すべき部分に関する更新情報を第１データベース装置１に送信する（Ｓ１）。
【００３９】
更新処理部１２は、データベース１１Ａを更新情報に基づいて更新する（Ｓ３）。具体的には、更新処理部１２は、先頭Indexに対応するレコードに対し、更新情報で指示されたデータを書き込む、または、更新情報で指示されたレコードのデータを消去する、または、更新情報で指示されたレコードのデータを更新情報で指示されたデータに変更する（Ｓ３）。
【００４０】
次に、更新処理部１２は、このように更新したレコードについては、更新情報を受け付けないように、つまり、受け付けを一時的に中止する（Ｓ５）。この動作は、所謂レコードのロック（更新禁止）という。
【００４１】
更新処理部１２は、このレコードにデータが書き込まれたなら、当該レコードに対応する空塞管理部１１Ｂのステータスを「使用中」に置き換える（Ｓ７）。
【００４２】
一方、更新処理部１２は、このレコードからデータが消去されたなら、当該レコードに対応する空塞管理部１１Ｂのステータスを「空き」に置き換える（Ｓ７）。
【００４３】
また、更新処理部１２は、データが書き込まれたなら、または、消去されたなら、チェーン情報１１Ｄを更新する（Ｓ７）。
【００４４】
具体的には、チェーン情報１１Ｄが、データを書き込む順序でIndex値が「２−４−５−６」となるようなものの場合、更新処理部１２は、先頭Indexが示すレコードにデータを書き込んだなら、「２−４−５−６」が「４−５−６」となるようにチェーン情報１１Ｄを更新する。
【００４５】
一方、チェーン情報１１Ｄが、データを書き込む順序でIndex値が「２−５−６」となるようなものの場合、更新処理部１２は、例えば、Index値「３」のレコードからデータを消去したなら、「２−５−６」が「２−５−６−３」となるようにチェーン情報１１Ｄを更新する。
【００４６】
記憶部１１は、こうしてデータベース１１Ａや空塞管理部１１Ｂやチェーン情報１１Ｄが更新されたら、更新内容を含む更新成功の更新応答を更新処理部１２を送信する（Ｓ９）。
【００４７】
更新処理部１２は、更新成功の更新応答を受信したなら、データベース１１Ａおよび空塞管理部１１Ｂの更新された部分に関する更新情報を第２データベース装置２に送信する（Ｓ１１）。
【００４８】
更新処理部２２は、データベース２１Ａを更新情報に基づいて更新する（Ｓ１３）。具体的には、更新処理部２２は、更新情報で指示されたレコードに更新情報で指示されたデータを書き込む、または、更新情報で指示されたレコードのデータを消去する、または、更新情報で指示されたレコードのデータを更新情報で指示されたデータに変更する（Ｓ１３）。
【００４９】
更新処理部２２は、例えば、更新情報で指示された空塞管理部２１Ｂの位置にあるステータスを、更新情報内に含まれるステータスで置き換える（Ｓ１７）。
【００５０】
記憶部２１は、こうしてデータベース２１Ａや空塞管理部２１Ｂが更新されたら、更新内容を含む更新成功の更新応答を更新処理部２２に送信する（Ｓ１９）。
【００５１】
また、更新処理部２２は、こうしてデータベース２１Ａが更新されたなら、更新後のデータベース２１Ａに基づいて、チェーン情報２１Ｄを更新する（Ｓ２１）。
【００５２】
具体的には、チェーン情報２１Ｄが、データを書き込む順序でIndex値が「２−４−５−６」となるようなものの場合、更新処理部２２は、先頭Indexが示すレコードにデータを書き込んだなら、「２−４−５−６」が「４−５−６」となるようにチェーン情報２１Ｄを更新する。
【００５３】
一方、チェーン情報２１Ｄが、データを書き込む順序でIndex値が「２−５−６」となるようなものの場合、更新処理部２２は、例えば、Index値「３」のレコードからデータを消去したなら、「２−５−６」が「２−５−６−３」となるようにチェーン情報２１Ｄを更新する。
【００５４】
更新処理部２２は、記憶部２１から更新成功の更新応答を受信したなら、第１データベース装置１に更新成功の更新応答を送信する（Ｓ２３）。
【００５５】
更新処理部１２は、更新成功の更新応答を受信したなら、更新成功の更新応答をデータ投入端末３に送信し（Ｓ２５）、更新情報の受け付けを中止したレコードについて、更新情報の受け付けを再開する（Ｓ２７）。つまり、レコードのロックを解除する。
【００５６】
（動作例１）
次に、図４を参照し、レプリケーションシステム１０の具体的な動作例（動作例１）について説明する。図２と同様、レコードの数は便宜的に６とする。
【００５７】
まず、当初、各データベース１１Ａ、データベース２１Ａでは、Index値「１」のレコードにデータ「ＡＡ」、Index値「３」のレコードに「ＣＣ」があり、他のレコードは空きレコードになっている。つまり、データベース１１Ａとデータベース２１Ａは互いに一致している。
【００５８】
また、当初、各空塞管理部１１Ｂ、空塞管理部２１Ｂでは、Index値「１」のステータスと、Index値「３」のステータスが「使用中」で、他のステータスは「空き」である。つまり、空塞管理部１１Ｂと空塞管理部２１Ｂは互いに一致している。
【００５９】
また、各チェーン情報１１Ｄ、チェーン情報２１Ｄでは、Index値「１」の前Index、Index値「１」の後Indexは「Null」であり、Index値「２」の前Index、Index値「２」の後Indexはそれぞれ、「Null」、「４」であり、Index値「３」の前Index、Index値「３」の後Indexは「Null」であり、Index値「４」の前Index、Index値「４」の後Indexはそれぞれ、「２」、「５」であり、Index値「５」の前Index、Index値「５」の後Indexはそれぞれ、「４」、「６」であり、Index値「６」の前Index、Index値「６」の後Indexはそれぞれ、「５」、「Null」であり、先頭Indexは「２」であり、末尾Indexは「６」である。つまり、チェーン情報１１Ｄとチェーン情報２１Ｄは互いに一致しており、各チェーン情報１１Ｄ、チェーン情報２１Ｄにおいては、順序の抜けや重複などの矛盾がない。
【００６０】
例えば、第１データベース装置１において、データベース１１ＡのIndex値「２」のレコードに「ＢＢ」が書き込まれると（Ｔ１）、空塞管理部１１ＢのIndex値「２」のステータスが「使用中」に変わり、チェーン情報１１ＤのIndex値「２」の後Indexが「Null」に変わり、Index値「４」の前Indexが「Null」に変わり、先頭Indexが「４」に変わる（Ｔ３）。
【００６１】
第１データベース装置１は、Index値「２」のレコード、Index値「２」のステータスに関する更新情報を第２データベース装置２に送信する（Ｔ５）。
【００６２】
また、第１データベース装置１において、データベース１１ＡのIndex値「４」のレコードに「ＤＤ」が書き込まれると（Ｔ１１）、空塞管理部１１ＢのIndex値「４」のステータスが「使用中」に変わり、チェーン情報１１ＤのIndex値「４」の後Indexが「Null」に変わり、Index値「５」の前Indexが「Null」に変わり、先頭Indexが「５」に変わる（Ｔ１３）。
【００６３】
第１データベース装置１は、Index値「４」のレコード、Index値「４」のステータスに関する更新情報を第２データベース装置２に送信する（Ｔ１５）。
【００６４】
例えば、ステップＴ５の更新情報よりもステップＴ１５の更新情報が早く受信された際には、第２データベース装置２においては、データベース２１ＡのIndex値「４」のレコードに「ＤＤ」が書き込まれ、空塞管理部２１ＢのIndex値「４」のステータスが「使用中」に変わり、チェーン情報２１ＤのIndex値「２」の後Indexが「５」に変わり、Index値「４」の前Indexが「Null」に変わり、Index値「４」の後Indexが「Null」に変わる（Ｔ２１）。
【００６５】
その後、ステップＴ５の更新情報が受信された際には、第２データベース装置２においては、データベース２１ＡのIndex値「２」のレコードに「ＢＢ」が書き込まれ、空塞管理部２１ＢのIndex値「２」のステータスが「使用中」に変わり、チェーン情報２１ＤのIndex値「２」の後Indexが「Null」に変わり、Index値「５」の前Indexが「Null」に変わり、先頭Indexが「５」に変わる（Ｔ２３）。
【００６６】
つまり、チェーン情報１１Ｄとチェーン情報２１Ｄは互いに一致しており、各チェーン情報１１Ｄ、チェーン情報２１Ｄにおいては、順序の抜けや重複などの矛盾がない。
【００６７】
（動作例２）
次に、図５を参照し、レプリケーションシステム１０の具体的な動作例（動作例２）について説明する。
【００６８】
まず、当初、各データベース１１Ａ、データベース２１Ａでは、Index値「１」のレコードに「ＡＡ」、Index値「３」のレコードに「ＣＣ」、Index値「４」のレコードに「ＤＤ」があり、他のレコードは空きレコードになっている。つまり、データベース１１Ａとデータベース２１Ａは互いに一致している。
【００６９】
また、当初、各空塞管理部１１Ｂ、空塞管理部２１Ｂでは、Index値「１」のステータス、Index値「３」のステータス、Index値「４」のステータスが「使用中」で、他のステータスは「空き」である。つまり、空塞管理部１１Ｂと空塞管理部２１Ｂは互いに一致している。
【００７０】
また、各チェーン情報１１Ｄ、チェーン情報２１Ｄでは、Index値「１」の前Index、Index値「１」の後Indexは「Null」であり、Index値「２」の前Index、Index値「２」の後Indexはそれぞれ、「Null」、「５」であり、Index値「３」の前Index、Index値「３」の後Indexは「Null」であり、Index値「４」の前Index、Index値「４」の後Indexは「Null」であり、Index値「５」の前Index、Index値「５」の後Indexはそれぞれ、「２」、「６」であり、Index値「６」の前Index、Index値「６」の後Indexはそれぞれ、「５」、「Null」であり、先頭Indexは「２」であり、末尾Indexは「６」である。つまり、チェーン情報１１Ｄとチェーン情報２１Ｄは互いに一致しており、各チェーン情報１１Ｄ、チェーン情報２１Ｄにおいては、順序の抜けや重複などの矛盾がない。
【００７１】
例えば、第１データベース装置１において、データベース１１ＡのIndex値「３」のレコードから「ＣＣ」が消去されると（Ｔ３１）、空塞管理部１１ＢのIndex値「３」のステータスが「空き」に変わり、チェーン情報１１ＤのIndex値「３」の前Indexが「６」に変わり、Index値「６」の後Indexが「３」に変わり、末尾Indexが「３」に変わる（Ｔ３３）。
【００７２】
第１データベース装置１は、Index値「３」のレコード、Index値「３」のステータスに関する更新情報を第２データベース装置２に送信する（Ｔ３５）。
【００７３】
また、第１データベース装置１において、データベース１１ＡのIndex値「１」のレコードから「ＡＡ」が消去されると（Ｔ４１）、空塞管理部１１ＢのIndex値「１」のステータスが「空き」に変わり、チェーン情報１１ＤのIndex値「１」の前Indexが「３」に変わり、Index値「３」の後Indexが「１」に変わり、末尾Indexが「１」に変わる（Ｔ４３）。
【００７４】
第１データベース装置１は、Index値「１」のレコード、Index値「１」のステータスに関する更新情報を第２データベース装置２に送信する（Ｔ４５）。
【００７５】
例えば、ステップＴ３５の更新情報よりもステップＴ４５の更新情報が早く受信された際には、第２データベース装置２においては、データベース２１ＡのIndex値「１」のレコードから「ＡＡ」が消去され、空塞管理部２１ＢのIndex値「１」のステータスが「空き」に変わり、チェーン情報２１ＤのIndex値「１」の前Indexが「６」に変わり、Index値「６」の後Indexが「１」に変わり、末尾Indexが「１」に変わる（Ｔ５１）。
【００７６】
その後、ステップＴ３５の更新情報が受信された際には、第２データベース装置２においては、データベース２１ＡのIndex値「３」のレコードから「ＣＣ」が消去され、空塞管理部２１ＢのIndex値「３」のステータスが「空き」に変わり、チェーン情報２１ＤのIndex値「１」の後Indexが「３」に変わり、Index値「３」の前Indexが「１」に変わり、末尾Indexが「３」に変わる（Ｔ５３）。
【００７７】
つまり、チェーン情報１１Ｄとチェーン情報２１Ｄは互いに一致していないが、各チェーン情報１１Ｄ、チェーン情報２１Ｄにおいては、順序の抜けや重複などの矛盾がない。よって、データベース２１Ａがマスターデータベースとなっても問題はない。
【００７８】
なお、このような場合であってもチェーン情報１１Ｄとチェーン情報２１Ｄを一致させるには、以下のようにすればよい。
【００７９】
つまり、チェーン情報１１Ｄが、データを書き込む順序でIndex値が「２−５−６」となるようなもの場合、更新処理部１２は、例えば、Index値「３」のレコードからデータを消去したなら、「２−５−６」が「２−３−５−６」となるようにチェーン情報１１Ｄを更新し、チェーン情報２１Ｄが、データを書き込む順序でIndex値が「２−５−６」となるようなもの場合、更新処理部２２は、例えば、Index値「３」のレコードからデータを消去したなら、「２−５−６」が「２−３−５−６」となるようにチェーン情報２１Ｄを更新すればよい。
【００８０】
（変形例）
本実施の形態では、各チェーン情報１１Ｄ、チェーン情報２１Ｄは、図６（ａ）に示すように、先頭Indexと後Indexだけからなるものとしてもよい。また、各チェーン情報１１Ｄ、チェーン情報２１Ｄは、図６（ｂ）に示すように、先頭Indexと後Indexだけからなるものとしてもよい。
【００８１】
また、各空塞管理部１１Ｂ、空塞管理部２１Ｂのステータスは、図７に示すように、それぞれデータベース１１Ａ、データベース２１Ａの対応するレコードに含めてもよい。
【００８２】
以上説明したように、本実施の形態によれば、第１データベース装置１から第２データベース装置２には、チェーン情報１１Ｄの更新された部分に関する更新情報を送信せず、更新処理部２２は、更新後のデータベース２１Ａに基づいてチェーン情報２１Ｄを更新するので、あるレコードを更新している間でも、他のレコードなら更新でき、もって、チェーン情報１１Ｄ、チェーン情報２１Ｄとともに使用されるデータベース１１Ａ、データベース２１Ａの更新を迅速に行うことができる。
【００８３】
また、チェーン情報１１Ｄの更新された部分に関する更新情報を送信しないので、送信される更新情報の量を低減することができる。
【００８４】
なお、チェーン情報２１Ｄを更新する代わりに、更新後のデータベース２１Ａに基づいて新たにチェーン情報２１Ｄを生成し、これで既存のチェーン情報２１Ｄを置き換えてもよい。この場合であっても、結果的には、更新後のデータベース２１Ａに基づいてチェーン情報２１Ｄが更新されたことになる。
【００８５】
また、空塞管理部１１Ｂ、空塞管理部２１Ｂのステータスは、データベース１１Ａ、データベース２１Ａに基づいて、適宜取得できるので、空塞管理部１１Ｂ、空塞管理部２１Ｂを設けなくてもよい。
【００８６】
また、本実施の形態では、複数の情報を有し且つ当該情報間で関連をもつテーブルの例として、チェーン情報を用いたが、チェーン情報に限らず、テーブルは、複数の情報を有し且つ当該情報間で関連をもつものであればよい。
【００８７】
また、第１データベース装置１や第２データベース装置２としてコンピュータを機能させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録でき、また、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【符号の説明】
【００８８】
１  第１データベース装置
２  第２データベース装置
３  データ投入端末
１０  レプリケーションシステム
１１、２１  記憶部
１１Ａ、２１Ａ  データベース
１１Ｂ、２１Ｂ  空塞管理部
１１Ｃ、２１Ｃ  チェーン情報記憶部
１１Ｄ、２１Ｄ  チェーン情報
１２、２２  更新処理部
【図１】
0005449485.tif 000002
【図２】
0005449485.tif 000003
【図３】
0005449485.tif 000004
【図４】
0005449485.tif 000005
【図５】
0005449485.tif 000006
【図６】
0005449485.tif 000007
【図７】
0005449485.tif 000008
【図８】
0005449485.tif 000009
【図９】
0005449485.tif 000010
【図１０】
0005449485.tif 000011
【図１１】
0005449485.tif 000012
【図１２】
0005449485.tif 000013