(57)【要約】  システム全体のパフォーマンス向上を図りつつ、逐次更新されるデータに対して、データの同期を維持しながら、迅速な検索を可能にするデータの複製管理を行う。  検索の指示を受領したスレーブノードは、マスタノードへリクエストメッセージを送信した時から所定時間（Ｔs1）以内にマスタノードから返信メッセージを受領しなかった場合、マスタノードにマスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを要求するステップと、該要求を受領したマスタノードは、スレーブノードへ前記トランザクション・ログを送信するステップと、スレーブノードは、マスタノードから転送された前記トランザクション・ログを参照してレプリカデータベースを更新するステップとを含む。
2010106991.tif 000002
【特許請求の範囲】
【請求項１】
マスタノードによって管理されるマスタデータベースと、該マスタノードに接続されたスレーブノードによって前記マスタデータベースと同一内容となるよう管理され、検索対象として使用されるレプリカデータベースとの間のデータの複製管理方法であって、
検索の指示を受領した前記スレーブノードは、前記マスタノードへリクエストメッセージを送信した時から所定時間（Ｔs1）以内に前記マスタノードから返信メッセージを受領しなかった場合、前記マスタノードに前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを要求するステップと、
該要求を受領した前記マスタノードは、前記スレーブノードへ前記トランザクション・ログを送信するステップと、
前記スレーブノードは、前記マスタノードから転送された前記トランザクション・ログを参照して前記レプリカデータベースを更新するステップと
を含むデータの複製管理方法。
【請求項２】
前記スレーブノードは、前記マスタノードへリクエストメッセージを送信した時から所定時間（Ｔs1）以内に前記マスタノードから返信メッセージを受領した場合、既に受領しているトランザクション・ログを参照して前記レプリカデータベースを更新するステップをさらに含む請求項１記載のデータの複製管理方法。
【請求項３】
更新の指示を受領した前記マスタノードは、前記リクエストメッセージの受領時から所定時間（Ｔr1）以内に新たなリクエストメッセージを受領したスレーブノードのすべてから転送完了の通知を受領し、かつ前記マスタデータベースの更新を完了すると、前記更新の指示に従った更新を完了するステップを含む請求項１又は２記載のデータの複製管理方法。
【請求項４】
マスタノードによって管理されるマスタデータベースと、該マスタノードを根として木構造に接続された複数のスレーブノードによって前記マスタデータベースと同一内容となるよう管理され、検索対象として使用されるレプリカデータベースとの間のデータの複製管理方法であって、
検索の指示を受領した前記スレーブノードは、該スレーブノードの親ノードへリクエストメッセージを送信した時から所定時間（Ｔs3）以内に該親ノードから返信メッセージを受領しなかった場合、前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを前記親ノードへ要求するステップと、
前記親ノードが該トランザクション・ログを有しなかった場合、該親ノードは更に該親ノードの親ノードへ該トランザクション・ログを要求することを、該トランザクション・ログを有するノードに達するまで繰り返すステップと、
該要求を受領した該トランザクション・ログを有するノードは、該ノードの子ノードへ該トランザクション・ログを送信し、該子ノードは更にその子ノードへ該トランザクション・ログを送信することを、前記スレーブノードが該トランザクション・ログを受領するまで繰り返すステップと、
前記スレーブノードは、転送された該トランザクション・ログを参照して前記レプリカデータベースを更新するステップと
を含むデータの複製管理方法。
【請求項５】
前記スレーブノードは、該スレーブノードの親ノードへリクエストメッセージを送信した時から所定時間（Ｔs3）以内に前記親ノードから返信メッセージを受領した場合、既に受領しているトランザクション・ログを参照して前記レプリカデータベースを更新するステップをさらに含む請求項４記載のデータの複製管理方法。
【請求項６】
前記ノードは、前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを前記子ノードへ送信後であって、前記リクエストメッセージの受領時から所定時間（Ｔr3）以内に新たなリクエストメッセージを受領した前記子ノードのすべてから転送完了の通知を受領すると、その親ノードに転送完了の通知を送信するステップを含む請求項４又は５記載のデータの複製管理方法。
【請求項７】
前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを有しない前記ノードは、該ノードの子ノードのいずれかから該トランザクション・ログの要求を受領した時から所定時間以内に他の子ノードから該トランザクション・ログの要求を受領した場合、これらの要求を取りまとめて、前記ノードの親ノードへ該トランザクション・ログを要求するステップを含む請求項４乃至６のいずれか１項記載のデータの複製管理方法。
【請求項８】
マスタノードによって管理されるマスタデータベースと、該マスタノードに接続されたスレーブノードによって該マスタデータベースと同一内容となるよう管理され、検索対象として使用されるレプリカデータベースとを接続して構成されるデータの複製管理システムであって、
前記マスタノードが、更新の指示に従って前記マスタデータベースを更新する手段と、該マスタデータベースの更新に係るトランザクション・ログを前記スレーブノードへ送信する手段と、前記スレーブノードの要求に従ってマスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを該スレーブノードへ送信する手段とを備え、
前記スレーブノードが、前記マスタノードへリクエストメッセージを送信した時から所定時間（Ｔs1）以内に前記マスタノードから返信メッセージを受領しなかった場合、検索の指示に従って前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを該マスタノードへ要求する手段と、前記マスタノードから転送された該トランザクション・ログを参照して前記レプリカデータベースを更新する手段とを備える、
データの複製管理システム。
【請求項９】
前記スレーブノードが、前記所定時間（Ｔs1）以内に前記マスタノードから返信メッセージを受領した場合、検索の指示に従って既に受領しているトランザクション・ログを参照して前記レプリカデータベースを更新する手段をさらに備える請求項８記載のデータの複製管理システム。
【請求項１０】
マスタノードによって管理されるマスタデータベースと、該マスタノードを根として木構造に接続された複数のスレーブノードによって前記マスタデータベースと同一内容となるよう管理され、検索対象として使用されるレプリカデータベースとを接続して構成されるデータの複製管理システムであって、
前記マスタノードが、更新の指示に従って前記マスタデータベースを更新する手段と、前記マスタデータベースの更新に係るトランザクション・ログを前記マスタノードの子ノードへ送信する手段と、該子ノードの要求に従って前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを該子ノードへ送信する手段とを備え、
前記スレーブノードが、該スレーブノードの親ノードへリクエストメッセージを送信した時から所定時間（Ｔs3）以内に該１つ上層のノードから返信メッセージを受領しなかった場合、前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを該親ノードへ要求する手段と、転送された該トランザクション・ログを参照して前記レプリカデータベースを更新する手段とを備える
データの複製管理システム。
【請求項１１】
前記スレーブノードが、該スレーブノードの親ノードへリクエストメッセージを送信した時から所定時間（Ｔs3）以内に該親ノードから返信メッセージを受領した場合、検索の指示に従って既に受領しているトランザクション・ログを参照して前記レプリカデータベースを更新する手段をさらに備える請求項１０記載のデータの複製管理システム。
【請求項１２】
前記ノードが、
前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを有しない場合、前記ノードの親ノードへ該トランザクション・ログを要求する手段と、該トランザクション・ログを有する場合、要求した前記ノードの子ノードへ該トランザクション・ログを送信する手段と、
該トランザクション・ログを前記ノードの子ノードへ送信後であって、前記リクエストメッセージの受領時から所定時間以内に新たなリクエストメッセージを受領した該子ノードのすべてから転送完了の通知を受領すると、前記親ノード又はマスタノードへ転送完了の通知を送信する手段と
を備える請求項１０又は１１記載のデータの複製管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの複製管理方法及びシステムに関するものであり、より詳細には、ネットワークに接続された１の計算機（ノード）のデータベースと検索要求のあった他のノードのデータベースとの間のデータの複製管理方法及びシステムに関する。
【背景技術】
【０００２】
近年、トランザクション・ログを応用して、レプリケーション・システムを実現しようとする技術が提案されている。トランザクション・ログは、データベースに加えられた変更の履歴を、データベースの記録領域とは異なる領域に記録することにより、変更の永続性を維持しながら操作の高速性を実現することができる。トランザクション・ログにはすべての更新の履歴が保存されるため、トランザクション・ログが保存されていれば、データベースの更新はすべて再構築できる。【０００３】
トランザクション・ログによるデータの同期方法として、転送元ノード（マスタノード）がトランザクション・ログの記録領域への記録を開始し、レプリケーション・システム内に存在する他のすべてのノードへ同一のトランザクション・ログを転送し、転送先ノード（スレーブノード）がトランザクション・ログの受信を完了後、マスタノードへ完了を通知し、マスタノードがすべてのスレーブノードから完了の通知を受け取り、かつ自身の記録領域への記録処理が終了したとき、マスタノードとスレーブノードのデータの同期処理を完了する方法が提案されている（例えば、特許文献１参照。）。この方法では、スレーブノードが検索を行う際に改めてマスタノードに最新の情報を問い合わせる必要がないので検索処理を速く実行することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２９３９１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のデータの同期方法では、マスタノードのデータベース（以下、「データベース」を「ＤＢ」ということがある。）を更新、削除、挿入（以下、「更新、削除、挿入」を単に「更新」ということがある。）する毎にすべてのレプリカＤＢ(特許文献１において「転送先ノードのデータベース」）との同期処理を行うので、いずれかのノード又はその通信経路などに不具合があっていずれかのレプリカＤＢ同期処理に時間がかかると、同期処理の完了までに時間がかかり、システム全体のパフォーマンスが低下するという課題がある。【０００６】
本発明は、上記の課題を改良し、システム全体のパフォーマンス向上を図りつつ、逐次更新されるデータに対して、データの同期を維持しながら、迅速な検索を可能にするデータの複製管理方法及びシステムを提供することを主目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の観点によれば、検索指示を受領したスレーブノードは、マスタノードへリクエストメッセージを送信した時から所定時間（Ｔs1）以内にマスタノードから返信メッセージを受領しなかった場合、マスタノードにマスタＤＢの更新に係る最新バージョンまでのトランザクション・ログを要求し、該要求を受領したマスタノードは、スレーブノードへ該トランザクション・ログを送信し、スレーブノードは、マスタノードから転送された該トランザクション・ログを参照してレプリカＤＢを更新することを特徴とする。【０００８】
本発明において、検索指示を受領したスレーブノードは、前記所定時間（Ｔs1）以内にマスタノードから返信メッセージを受領した場合、既に受領しているトランザクション・ログを参照してレプリカデータベースを更新することが好ましい。このことにより、トランザクション・ログの適用を遅延して検索指示を受領したときにだけトランザクション・ログを適用してからレプリカＤＢを更新するので、特に検索頻度が高くない場合に、システム全体のパフォーマンスを向上させることができる。【０００９】
本発明において、更新の指示を受領したマスタノードは、リクエストメッセージの受領時から所定時間（Ｔr1）以内に新たなリクエストメッセージを受領したスレーブノードのすべてから転送完了の通知を受領し、かつマスタＤＢの更新を完了すると、更新の指示に従った更新を完了することが好ましい。このことにより、マスタノードは、スレーブノードのうち通信に時間がかかるノードを外したノードと同期処理を実行することができ、いずれかのスレーブノード又はその通信経路に障害が生じたとしても更新処理を迅速に完了することができる。【００１０】
本発明の第２の観点によれば、検索の指示を受領したスレーブノードは、その親ノードへリクエストメッセージを送信した時から所定時間（Ｔs3）以内に該親ノードから返信メッセージを受領しなかった場合、マスタＤＢの更新に係る最新バージョンまでのトランザクション・ログを該親ノードへ要求し、該親ノードが該トランザクション・ログを有しなかった場合、該親ノードは更にその親ノードへ該トランザクション・ログを要求することを、該トランザクション・ログを有するノードに達するまで繰り返し、該要求を受領した該トランザクション・ログを有するノードは、その子ノードへ該トランザクション・ログを送信し、該送信を受領した該子ノードは更にその子ノードへ該トランザクション・ログを送信することを、前記スレーブノードが該トランザクション・ログを受領するまで繰り返し、該スレーブノードは転送された該トランザクション・ログを参照してレプリカＤＢを更新することを特徴とする。【００１１】
本発明において、検索指示を受領したスレーブノードは、前記所定時間（Ｔs3）以内に前記親ノードから返信メッセージを受領した場合、既に受領しているトランザクション・ログを参照してレプリカＤＢを更新することが好ましい。このことにより、トランザクション・ログの適用を遅延して検索指示を受領したときにだけトランザクション・ログを適用してからレプリカＤＢを更新するので、特に検索頻度が高くない場合に、システム全体のパフォーマンスを向上させることができる。【００１２】
本発明において、各ノードは、マスタＤＢの更新に係る最新バージョンまでのトランザクション・ログをその子ノードへ送信後であって、リクエストメッセージの受領時から所定時間（Ｔr3）以内に新たなリクエストメッセージを受領した前記子ノードのすべてから転送完了の通知を受領すると、その親ノードに転送完了の通知を送信することが好ましい。
このことにより、各ノードは、通信に時間がかかるノードを外したノードと同期処理を実行することができ、いずれかのノード又はその通信経路に障害が生じても更新処理を迅速に完了することができる。
【発明の効果】
【００１３】
本発明のデータの複製管理方法及びシステムによれば、検索指示を受領したスレーブノードが、その親ノード又はマスタノードへリクエストメッセージを送信した時から所定時間以内に返信メッセージを受信しなかった場合、最新バージョンまでのトランザクション・ログを有するノード又はマスタノードから転送された該トランザクション・ログを参照してレプリカＤＢが更新される。したがって、いずれかのノード又は通信経路に障害が生じても迅速に同期処理をすることができ、使用者は、マスタＤＢと同期のとれたレプリカＤＢを用いて検索できる。つまり、システム全体のパフォーマンスの向上が図られ、迅速な検索を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は本発明の一実施例に係るデータの複製管理を示す説明図である。（実施例１及び２）
【図２】図２はスレーブノードとマスタノードとの間のハートビート通信を示す説明図である。（実施例１及び２）
【図３】図３は本発明の一実施例に係る木構造のデータの複製管理を示す説明図である。（実施例３及び４）
【図４】図４はスレーブノードとその親ノードとの間のハートビート通信を示す説明図である。（実施例３及び４）
【発明を実施するための形態】
【００１５】
以下、添付図面を参照しながら本発明を実施するための形態について詳細に説明するが、本発明は、これに限定されて解釈されるものではなく、本発明の範囲を逸脱しない限りにおいて、当業者の知識に基づいて、種々の更新、修正、改良を加え得るものである。また、以下の実施例において実施例１と同一部材については同一の符号を付し、その重複する説明は省略する。
【実施例１】
【００１６】
図１は、本発明の実施例１に係るデータの複製管理の概略を示し、マスタノード１００と、マスタノード１００とネットワーク１２０を介して接続されている複数（Ｎ個）のスレーブノードを有する。ここで、複数のスレーブノードはすべて同じ構成であり、同じ番号２００を付ける。
マスタノード１００は、マスタノード１００によって管理されるマスタＤＢ１０２、トランザクション・ログを記録し保存するトランザクション・ログ記録領域１０４、マスタＤＢ１０２及びトランザクション・ログ記録領域１０４への書き込み指示を与えるＤＢバックエンド１０６、スレーブノードとの通信を行う通信モジュール１０８を備える。【００１７】
スレーブノード２００はそれぞれ、スレーブノード２００によってマスタＤＢ１０２と同一内容となるよう管理され、検索対象として使用されるレプリカＤＢ２０２、トランザクション・ログを記録し保存するトランザクション・ログ記録領域２０４、レプリカＤＢ２０２及びトランザクション・ログ記録領域２０４への書き込み指示を与えるＤＢバックエンド２０６、マスタノード１００との通信を行う通信モジュール２０８、マスタノード１００から受領したトランザクション・ログをトランザクション・ログ記録領域２０４に書き込むトランザクション・ログ書き込みモジュール２１０、トランザクション・ログの復元処理を行いレプリカＤＢ２０２に書き込む復元モジュール２１２を備える。【００１８】
次に、本実施例におけるデータの複製管理システムの動作について、図１を参照して説明する。
使用者からのデータの更新要求は、更新指示としてマスタノード１００のＤＢバックエンド１０６に入る。該更新指示を受領したＤＢバックエンド１０６は、トランザクション・ログ記録領域１０４への書き込みを開始すると同時に、通信モジュール１０８に新たな更新に係るトランザクション・ログの転送指示を与える。【００１９】
ＤＢバックエンド１０６は、トランザクション・ログ記憶領域１０４への書き込みを終了すると、マスタＤＢ１０２の更新を開始する。
前記転送指示を受領した通信モジュール１０８は、原則として、接続されているすべてのスレーブノード２００の通信モジュール２０８に前記トランザクション・ログを送信する。通信モジュール２０８は、前記トランザクション・ログを受領するとトランザクション・ログ書き込みモジュール２１０に送信し、トランザクション・ログ書き込みモジュール２１０は、前記トランザクション・ログをトランザクション・ログ記録領域２０４に書き込む。【００２０】
次いで、復元モジュール２１２は、トランザクション・ログ記録領域２０４から前記トランザクション・ログを呼び出し、レプリカＤＢ２０２に適用することにより、マスタＤＢ１０２と検索対象として使用されるレプリカＤＢ２０２との間のデータの複製が完了する。
複製の完了を待って、通信モジュール２０８は通信モジュール１０８に、通信モジュール１０８はＤＢバックエンド１０６に転送完了を送信する。
通信モジュール１０８がすべてのスレーブノード２００の通信モジュール２０８からトランザクション・ログの転送完了の通知を受領し、かつマスタＤＢ１０２の更新が終了すると、使用者からのデータの更新要求（更新指示）に従った更新作業は完了する。【００２１】
図２は、スレーブノード２００とマスタノード１００との間の正常なハートビート通信を示す説明図である。
スレーブノード２００はそれぞれ、マスタノード１００へ所定の時間Ｔi1間隔でリクエストメッセージを送る。ここで、所定の時間Ｔi1は、スレーブノード２００がマスタノード１００へリクエストメッセージを送信した時から返信メッセージ受領後時間Ｔ01経過するまでの時間とする。
リクエストメッセージを受信したマスタノード１００は、送信した各スレーブノード２００に返信メッセージを送る。スレーブノード２００がリクエストメッセージを送信した時から所定時間Ｔs1以内にマスタノード１００から返信メッセージがなかった場合、マスタノード１００又はその通信経路に何らかの障害が発生しているおそれがある。【００２２】
なお、前記所定の時間Ｔi1を、リクエストメッセージを送信した時から時間Ｔ01経過するまでの時間とすることもできる。この場合も、リクエストメッセージを送信した時から所定時間Ｔs1以内にマスタノード１００から返信メッセージがなかった場合、システムに何らかの障害が発生しているおそれがある。
スレーブノード２００は、リクエストメッセージを送信した時から所定時間Ｔs1以内にマスタノード１００から返信メッセージを受領しなかった場合、システムに何らかの障害が発生しているおそれがあるとみなし、マスタノード１００にリクエストメッセージを送ることを停止する。【００２３】
また、リクエストメッセージを受信したマスタノード１００は、返信メッセージ送信時から所定時間Ｔr1以内に送信したスレーブノード２００から次の新たなリクエストメッセージを受信しなかった場合、該スレーブノード２００又はその通信経路に何らかの異常が発生したものとみなす。
ここで、所定時間Ｔr1は、該スレーブノード２００がマスタノード１００と同時かそれよりも先に異常を検知できるように、時間Ｔs1よりも十分長い時間、例えば数式Ｔr1＝Ｔ01＋２×Ｔs1で計算される時間とする。【００２４】
マスタノード１００が返信メッセージを送信した時からＴs1経過してもスレーブノード２００が該返信メッセージを受信していないなら、スレーブノード２００は異常を検知する。異常を検知していないとすれば、スレーブノード２００は、リクエストメッセージを送信した時からＴ01＋Ｔs1経過するまでに次のリクエストメッセージを送信する。スレーブノード２００が次のリクエストメッセージを送信した時からＴs1経過してもマスタノード１００が次のリクエストメッセージを受信していない場合、スレーブノード２００は次のリクエストメッセージを送信した時からＴs1経過しても返信メッセージを受領しないため、異常を検知する。【００２５】
したがって、マスタノード２００がＴr1（＝Ｔ01＋２×Ｔs1）経過するまでの間に新たなリクエストメッセージを受け取らずに異常を検知した時には、スレーブノード２００は、最新のリクエストメッセージに対する返信メッセージを該リクエストメッセージ送信時からＴs1以内に受け取っていないか、次のリクエストメッセージに対する返信メッセージを該リクエストメッセージ送信時からＴs1以内に受け取っていないかのどちらかなので、既に異常を検知している。【００２６】
マスタノード１００は、使用者からデータの更新要求を受けると、トランザクション・ログ記録領域１０４への書き込みを開始すると同時に、返信メッセージ送信時から所定時間Ｔr1以内に新たなリクエストメッセージの送信があったスレーブノード２００の通信モジュール２０８に新たな更新に係るトランザクション・ログを転送する。そして、該トランザクション・ログを受領したスレーブノード２００はレプリカＤＢ２０２を更新し、マスタノード１００に転送完了を送信することは上述のとおりである。
所定時間Ｔr1以内に新たなリクエストメッセージの送信がなかったスレーブノード２００は何らかの異常が発生しているとみなし、その通信モジュール２０８には該トランザクション・ログを転送しない。【００２７】
マスタノード１００は、該トランザクション・ログを転送したすべてのスレーブノード２００から転送完了の通知を受けたならば、新たなリクエストメッセージの送信がないスレーブノード２００から転送完了の通知がなくてもトランザクション・ログの同期処理が完了したとみなす。トランザクション・ログの同期処理が完了し、かつ自らのマスタＤＢ１０２の更新が終了したならば、使用者からのデータ更新要求は完了する。【００２８】
使用者からのデータの検索要求は、検索指示としていずれかのスレーブノード２００のＤＢバックエンド２０６に入り、該スレーブノード２００がマスタノード１００へリクエストメッセージを送信した時から所定時間Ｔs1以内に返信メッセージを受領した場合、使用者から要求された検索は、レプリカＤＢ２０２を使用して行われる。【００２９】
しかしながら、前記スレーブノード２００が、所定時間Ｔs1以内に返信メッセージを受領しなかった場合、通信モジュール２０８は、マスタノード１００の通信モジュール１０８に、未取得かつ最新バージョンまでのトランザクション・ログ（本明細書において併せて「最新バージョンまでのトランザクション・ログ」又は単に「トランザクション・ログ」ということがある。）を要求する。該要求するトランザクション・ログにスレーブノード２００が既に取得しているトランザクション・ログを含まないことによって、伝達する情報量を減らし、通信負荷を軽減することができる。【００３０】
該要求を受領した通信モジュール１０８は、該要求を送信したスレーブノード２００の通信モジュール２０８に、最新バージョンまでのトランザクション・ログを送信する。
通信モジュール２０８は、受領した前記トランザクション・ログをトランザクション・ログ書き込みモジュール２１０に送信し、トランザクション・ログ書き込みモジュール２１０はトランザクション・ログ記録領域２０４に書き込む。次いで、復元モジュール２１２は、トランザクション・ログ記録領域２０４から前記トランザクション・ログを呼び出し、レプリカＤＢ２０２に適用することにより、マスタＤＢ１０２と検索対象として使用されるレプリカＤＢ２０２との間のデータの複製が完了する。
使用者から要求された検索は、レプリカＤＢ２０２を使用して行われる。【００３１】
リクエストメッセージを送信した時から所定時間Ｔs1以内に返信メッセージを受領しなかったためにリクエストメッセージの送信を停止したスレーブノード２００は、リクエストメッセージの送信を停止してから所定時間経過後、マスタノード１００にリクエスト再開メッセージを送信し、その後最新バージョンまでのトランザクション・ログをマスタノード１００に要求する。再開メッセージ送信時から所定時間Ｔs1以内に再開許可メッセージを受領すると、スレーブノード２００は、マスタノード１００にリクエストメッセージを送信し、その後は障害が発生する前と同様に、返信メッセージ受信時から所定時間Ｔ01毎にマスタノード１００にリクエストメッセージを送信する。そして、リクエスト再開メッセージに対する返信メッセージを所定時間Ｔs1以内に受信しないか、再開拒否メッセージを受領すると、所定時間経過後再度リクエスト再開メッセージを送信する。【００３２】
リクエスト再開メッセージを受信したマスタノード１００は、該スレーブノード２００に異常が発生したとみなしている場合は再開許可メッセージを送信し、該スレーブノード２００をトランザクション・ログを転送する際の同期処理の対象となるノードに加える。その後、最新バージョンまでのトランザクション・ログの要求を受けると、該トランザクション・ログを送信する。
同期処理の対象から外されたスレーブノード２００は、検索を実行するに際して最新バージョンまでのトランザクション・ログを入手してレプリカＤＢを更新するため、マスタＤＢと同期のとれたレプリカＤＢを用いて検索できる。
しかしながら、マスタノード１００は、該スレーブノード２００の異常を検知していない場合は、再開拒否メッセージを送信する。【００３３】
実施例１では、原則として、使用者から更新要求を受けるとその都度、マスタノード１００は、マスタＤＢ１０２の更新に係るトランザクション・ログをすべてのスレーブノード２００に転送し、各スレーブノード２００にてレプリカＤＢ２０２の更新が行われたことを確認してから該更新要求を完了するので、検索指示を受領したスレーブノード２００は、既に最新の状態に保たれているレプリカＤＢ２０２を使用して迅速に検索でき、検索頻度が高い場合にも検索スピードが低下しないというメリットがある。【００３４】
また、マスタノード１００といずれかのスレーブノード２００との間のリクエスト又は返信メッセージに対する応答が所定時間以内にないときは、該ノード又はその通信経路に障害が発生したとみなし、マスタノード１００は、マスタＤＢ１０２を更新する際に該スレーブノード２００を同期処理の対象から外し、該スレーブノード２００が検索指示を受領するとその都度マスタノード１００へ最新バージョンまでのトランザクション・ログを要求するので、障害発生時にもスレーブノード２００を同期が取れた状態に保ちながら同期処理を高速に実行することができる。【００３５】
本実施例では、上述のようにマスタノード１００が返信メッセージ送信後新たなリクエストメッセージを受信するまでの時間Ｔr1を、Ｔs1よりも十分に長く設定している。このため、マスタノード１００が障害を検知し、スレーブノード２００を同期処理の対象から外したにもかかわらず、該スレーブノード２００が障害に気づかないで、自らは最新バージョンまでのトランザクション・ログを受領していると判断することを防止できる。つまり、使用者が更新されたマスタＤＢ１０２と同期されていないレプリカＤＢ２０２を使用して検索するのを防止できる。【００３６】
障害を検知したスレーブノード２００は、障害が復旧した後、リクエストメッセージの送信を再開し、障害発生前の状態に復帰することができる。スレーブノード２００との間の一時的なネットワークの障害に対して、障害が発生しているときは該スレーブノード２００を同期の対象から外して更新要求を迅速に処理し、復旧後は再び同期の対象に加えて該スレーブノード２００に対する検索要求を迅速に処理できるので、システム全体のパフォーマンスを向上することができる。【００３７】
本実施例において、リクエスト及び返信メッセージの送受信とトランザクション・ログの要求及びその転送とを同一の通信経路を使用して行うことができる。また、通信経路として、先に送信したメッセージが必ず先に届くような通信経路を使用することができる。このことにより、リクエストメッセージと返信メッセージの送受信の確認により、その通信経路間のトランザクション・ログの転送が確実に行われていることが保証できる。
【実施例２】
【００３８】
図１は、本発明の実施例２に係るデータの複製管理の概略を示し、その動作について、図１を参照して説明する。
実施例１の場合と同様に、使用者からのデータの更新要求を更新指示として受領したマスタノード１００は、マスタＤＢ１０２の更新を開始し、原則として、接続されているすべてのスレーブノード２００の通信モジュール２０８にマスタＤＢ１０２の更新に係るトランザクション・ログを送信する。【００３９】
通信モジュール２０８は、該トランザクション・ログの受領が終了すると、転送完了の通知を通信モジュール１０８に送信し、通信モジュール１０８は、ＤＢバックエンド１０６に送信する。
通信モジュール１０８がすべてのスレーブノード２００の通信モジュール２０８からトランザクション・ログの転送完了の通知を受領し、かつマスタＤＢ１０２の更新が終了すると、使用者からのデータの更新要求（更新指示）に従った更新作業は完了する。【００４０】
図２は、マスタノード１００とスレーブノード２００との間の正常時のハートビート通信を示し、実施例１で説明したとおりである。
使用者からのデータの検索要求は、検索指示としていずれかのスレーブノード２００のＤＢバックエンド２０６に入る。ＤＢバックエンド２０６は、該検索指示を通信モジュール２０８に送信し、該スレーブノード２００が、マスタノード１００へリクエストメッセージを送信した時から所定時間Ｔs1以内に返信メッセージを受領した場合、通信モジュール２０８は、自ら所有する最新バージョンまでのトランザクション・ログをトランザクション・ログ書き込みモジュール２１０に送信する。トランザクション・ログ書き込みモジュール２１０は、該トランザクション・ログをトランザクション・ログ記録領域２０４に書き込む。【００４１】
次いで、復元モジュール２１２は、トランザクション・ログ記録領域２０４から前記トランザクション・ログを呼び出し、レプリカＤＢ２０２に適用することにより、マスタＤＢ１０２と検索対象として使用されるレプリカＤＢ２０２との間のデータの複製が完了する。データの検索要求は、レプリカＤＢ２０２を使用して行われる。
検索指示を受領したスレーブノード２００が、マスタノード１００へリクエストメッセージを送信した時から所定時間Ｔs1以内に返信メッセージを受領しなかった場合については、実施例１と同様であり、本実施例における上記以外の実施例１で説明した態様についても、実施例１と同様である。【００４２】
本実施例特有の効果は次のとおりである。
実施例２では、更新指示を反映したトランザクション・ログをスレーブノード２００に送信したマスタノード１００は、通信モジュール２０８から該トランザクション・ログの受領通知を受信するのを待つだけでよく、該トランザクション・ログがレプリカＤＢ２０２に適用されるまで待つ必要がないので、トランザクション・ログ転送時の同期処理を迅速に処理できる。【００４３】
また、検索指示を受領したスレーブノード２００は既に受領している最新バージョンまでのトランザクション・ログを参照してレプリカＤＢ２０２のデータ更新を行い、該レプリカＤＢ２０２を使用して検索が行われる。
本実施例では、トランザクション・ログの適用を遅延して検索指示を受領したときにだけトランザクション・ログを適用してレプリカＤＢを更新するので、改めてマスタノード１００に最新バージョンまでのトランザクション・ログを要求する必要がないというメリットがある。
【実施例３】
【００４４】
図３は、本発明の実施例３において使用する木構造のデータの複製管理を示す説明図である。
木構造の根としてマスタノード１００を有し、木構造の節点及び葉として複数のスレーブノード２００を有する。マスタノードを最上層とし、マスタノード１００からｎ層下層に位置するスレーブノードをスレーブノード２００（ｎ）と示す。
各ノードは、図３に示すように、１つ下層又は１つ上層に位置するノードとそれぞれネットワーク（図３にて図示せず）で直接接続されている。本明細書において、１のノードの「子ノード」とは該１のノードに直接接続されている１つ下層のノードをいい、１のノードの「親ノード」とは該１のノードに直接接続されている１つ上層のノードをいう。また、「葉ノード」とは子ノードを持たないノードをいう。【００４５】
１のノードの「子孫ノード」とは、該１のノードの子ノード、該子ノードの子ノードと、木構造に沿って該１のノードから下層に下りることで到達することができるノードをいい、子孫ノードのうち、最も下層に位置するノード（葉ノード）と該１のノードとが位置する層の差を「高さ」と呼ぶことがある。
マスタノード１００及び各スレーブノード２００の構成は、それぞれ図１に示すマスタノード１００及びスレーブノード２００と同じである。【００４６】
次に、実施例３に係るデータの複製管理方法について、図１及び図３を参照して説明する。
使用者からのデータの更新要求は、更新指示としてマスタノード１００のＤＢバックエンド１０６に入る。ＤＢバックエンド１０６は、該更新指示を受領すると、トランザクション・ログ記録領域１０４への書き込みを開始すると同時に、通信モジュール１０８に新たな更新に係るトランザクション・ログの転送指示を与える。
ＤＢバックエンド１０６は、トランザクション・ログ記憶領域１０４への書き込みを終了すると、マスタＤＢ１０２の更新を開始する。【００４７】
新たな更新に係るトランザクション・ログの転送指示を受けた通信モジュール１０８は、すべての子ノード２００（１）の通信モジュール２０８（１）に該トランザクション・ログを送信する。通信モジュール２０８（１）は、受領した該トランザクション・ログをトランザクション・ログ書き込みモジュール２１０（１）に送信し、レプリカＤＢ２０２（１）の更新を指示するとともに、該トランザクション・ログを更にすべての子ノード２００（２）の通信モジュール２０８（２）へ送信する。
上述のことは、葉ノードの２００（ｚ）の通信モジュール２０８（ｚ）へ該トランザクション・ログを送信するまで繰り返される。【００４８】
該通信モジュール２０８（ｚ）は、該トランザクション・ログを受領するとトランザクション・ログ書き込みモジュール２１０（ｚ）に送信し、トランザクション・ログ書き込みモジュール２１０（ｚ）は、該トランザクション・ログをトランザクション・ログ記録領域２０４（ｚ）に書き込む。
次いで、復元モジュール２１２（ｚ）は、トランザクション・ログ記録領域２０４（ｚ）から該トランザクション・ログを呼び出し、レプリカＤＢ２０２（ｚ）に適用することにより、マスタＤＢ１０２と葉ノードの２００（ｚ）が管理するレプリカＤＢ２０２（ｚ）との間のデータの複製が完了する。【００４９】
複製の完了を待って、通信モジュール２０８（ｚ）は、前記トランザクション・ログを転送した親ノード２００（ｚ−１）の通信モジュール２０８（ｚ−１）に転送完了を送信し、該通信モジュール２０８（ｚ−１）は、送信したすべてのスレーブノード２００（ｚ）から転送完了を受領し、かつ自らのレプリカＤＢ２０２（ｚ−１）のデータの更新が完了したなら、更にその親ノード２００（ｚ−２）の通信モジュール２０８（ｚ−２）に転送完了を送信する。
上記転送完了の送信を繰り返し、マスタノード１００の通信モジュール１０８がすべての子ノード２００（１）から転送完了を受領し、かつマスタＤＢ１０２の更新が終了したなら、使用者からのデータの更新要求（更新指示）に従った更新作業は完了する。【００５０】
図４は、スレーブノード２００（ｎ）とその親ノード２００（ｎ−１）又は１００との間の正常なハートビート通信を示す説明図である。
スレーブノード２００（ｎ）は、その親ノードへ所定の時間Ｔi3間隔でリクエストメッセージを送る。該リクエストメッセージを受信した親ノードは、スレーブノード２００（ｎ）返信メッセージを送る。スレーブノード２００（ｎ）がリクエストメッセージを送信した時から所定時間Ｔs3以内に親ノードから返信メッセージがなかった場合、該親ノード又はその通信経路に何らかの障害が発生しているおそれがある。【００５１】
ここで、親ノードは、ｎが１より大きい場合はスレーブノード２００（ｎ−１）、ｎ＝１の場合はマスタノード１００である（本明細書において併せて「親ノード２００（ｎ−１）又は１００」と示すことがある。）。前記所定の時間Ｔi3は、スレーブノード２００（ｎ）が該親ノードへリクエストメッセージを送信した時から返信メッセージ受領時から時間Ｔ03経過するまでの時間とする。
なお、前記所定の時間Ｔi3を、スレーブノード２００（ｎ）がリクエストメッセージを送信した時から時間Ｔ03が経過するまでの時間とすることもできる。この場合も、リクエストメッセージを送信した時から所定時間Ｔs3以内に該親ノードから返信メッセージがなかった場合、システムに何らかの障害が発生しているおそれがある。【００５２】
スレーブノード２００（ｎ）は、リクエストメッセージを送信した時から所定時間Ｔs3以内にその親ノードから返信メッセージを受け取った場合、自ノードが最新バージョンまでのトランザクション・ログを所有しているとみなす。
逆に、前記所定時間Ｔs3以内にその親ノードから返信メッセージを受領しなかった場合、該親ノードにリクエストメッセージを送ることを停止する。つまり、スレーブノード２００（ｎ）は、システムに何らかの障害が発生しているおそれがあるとみなし、自ノードは最新バージョンまでのトランザクション・ログを所有していないとみなす。【００５３】
また、リクエストメッセージの送信を停止した前記スレーブノード２００（ｎ）は、その子ノード２００（ｎ＋１）からリクエストメッセージがあると、それに対する返信メッセージを送信しない。そのため、該子ノード２００（ｎ＋１）は、所定時間Ｔs3経過しても返信メッセージを受信しないため、該子ノードの子ノード２００（ｎ＋２）に返答メッセージを送信しない。このことを、すべての子孫ノードに達するまで繰り返す。
なお、スレーブノード２００（ｎ）が返信メッセージの送信を停止してからそのすべての子孫ノードが障害を検知するまでにかかる最大の時間Ｔm3は、スレーブノード２００（ｎ）の木構造における高さをｑとすると、Ｔ03，Ｔs3，ｑを変数とする関数Ｔm3＝ｆ（Ｔ03，Ｔs3，ｑ）として計算することができ、ｑが大きくなるほど長くなる。【００５４】
また、リクエストメッセージを受信したスレーブノード２００（ｎ）の親ノード２００（ｎ−１）又は１００は、返信メッセージ送信時から所定時間Ｔr3以内に該スレーブノード２００（ｎ）から新たなリクエストメッセージがなかった場合、該スレーブノード２００（ｎ）又はその通信経路に何らかの異常が発生したものとみなす。ここで、Ｔr3は、該スレーブノード２００（ｎ）及びそのすべての子孫ノードが異常を検知するよりも確実に長い時間とする。１例として、数式Ｔr3＝Ｔ03＋２×Ｔs3＋Ｔm3で計算される時間とする。【００５５】
返信メッセージ送信時から時間Ｔ（＝Ｔ03＋２×Ｔs3）が経過するまでにスレーブノード２００（ｎ）は異常を検知し、その子ノードからのリクエストメッセージに返信メッセージを返さなくなる。該スレーブノード２００（ｎ）の木構造における高さをｑとすると、その時点からさらに所定の関数Ｔm3＝ｆ（Ｔ03，Ｔs3，ｑ）で計算される時間Ｔm3が経過すれば該スレーブノード２００（ｎ）のすべての子孫ノードが異常を検知することになる。したがって、Ｔr3＝Ｔ03＋２×Ｔs3＋Ｔm3とすれば、時間Ｔr3は、スレーブノード２００（ｎ）及びそのすべての子孫ノードが異常を検知するよりも長い時間となる。【００５６】
何らかの異常が発生したとみなした親ノード２００（ｎ−１）又は１００は、返信メッセージ送信時から所定時間Ｔr3以内に新たなリクエストメッセージの送信があったスレーブノード２００（ｎ）の通信モジュール２０８（ｎ）には前記トランザクション・ログを転送するが、前記所定時間Ｔr3以内に新たなリクエストメッセージの送信がなかったスレーブノード２００（ｎ）の通信モジュール２０８（ｎ）には転送しない。【００５７】
前記親ノードは、前記トランザクション・ログを転送したすべてのノード２００（ｎ）から転送完了の通知を受けたならば、新たなリクエストメッセージの送信がないスレーブノード２００（ｎ）から転送完了の通知がなくてもトランザクション・ログの同期処理が完了したとみなす。該親ノードがスレーブノード２００（ｎ−１）の場合は、トランザクション・ログの同期処理が完了し、かつ自らが管理するレプリカＤＢ２０２（ｎ−１）の更新が終了したならば、更にその親ノード２００（ｎ−２）又は１００に転送完了の通知を送る。該親ノードがマスタノード１００の場合は、トランザクション・ログの同期処理が完了し、かつ自らのマスタＤＢ１０２の更新が終了したならば、使用者からのデータ更新要求は完了する。【００５８】
使用者からのデータの検索要求は、検索指示としていずれかのスレーブノード２００（ｋ）のＤＢバックエンド２０６（ｋ）に入り、該スレーブノード２００（ｋ）がその親ノード２００（ｋ−１）又は１００へリクエストメッセージを送信し、該送信時から所定時間Ｔs3以内に該親ノードから返信メッセージを受領した場合には、データ検索はレプリカＤＢ２０２（ｋ）を使用して行われる。【００５９】
しかしながら、前記所定時間Ｔs3以内に該親ノードから返信メッセージを受領しなかった場合には、スレーブノード２００（ｋ）のＤＢバックエンド２０６（ｋ）は、前記検索指示を通信モジュール２０８（ｋ）に送信し、通信モジュール２０８（ｋ）は、該親ノードの通信モジュール２０８（ｋ−１）又は１０８に、マスタＤＢ１０２の更新に係る最新バージョンまでのトランザクション・ログを要求する。
該親ノードが該トランザクション・ログを所有するスレーブノード２００（ｋ−１）又はマスタノード１００である場合、該親ノードの通信モジュール２０８（ｋ−１）又は１０８は、該スレーブノード２００（ｋ）の通信モジュール２０８（ｋ）に該トランザクション・ログを送信する。【００６０】
該親ノードが該トランザクション・ログを所有していないスレーブノード２００（ｋ−１）である場合、通信モジュール２０８（ｋ−１）は、通信モジュール２０８（ｋ）から前記トランザクション・ログの要求を受領してから所定時間経過後、更にその親ノードの通信モジュール２０８（ｋ−２）又は１０８（ｋ＝２の場合）へ該トランザクション・ログの転送を要求する。【００６１】
上述のように最新バージョンまでのトランザクション・ログの転送要求を繰り返し、該トランザクション・ログを所有するスレーブノード２００（ｍ）又はマスタノード１００に達したならば、その通信モジュール２０８（ｍ）又は１０８は、該トランザクション・ログを、転送要求を送信してきた子ノード２００（ｍ＋１）又は２００（１）の通信モジュール２０８（ｍ＋１）又は２０８（１）へ送信する。該トランザクション・ログを受領した通信モジュール２０８（ｍ＋１）又は２０８（１）は、転送要求を送信したその子ノードの子ノード２００（ｍ＋２）又は２０８（２）の通信モジュール２０８（ｍ＋２）又は２０８（２）へ送る。同様な転送を繰り返し、スレーブノード２００（ｋ）の通信モジュール２０８（ｋ）は、該トランザクション・ログを取得する。【００６２】
通信モジュール２０８（ｋ）は、該トランザクション・ログをトランザクション・ログ書き込みモジュール２１０（ｋ）に転送し、トランザクション・ログ書き込みモジュール２１０（ｋ）は、トランザクション・ログ記録領域２０４（ｋ）に書き込む。
次いで、復元モジュール２１２（ｋ）は、トランザクション・ログ記録領域２０４（ｋ）から該トランザクション・ログを呼び出し、レプリカＤＢ２０２（ｋ）に適用することにより、マスタＤＢ１０２と検索対象として使用されるレプリカＤＢ２０２（ｋ）との間のデータの複製が完了する。【００６３】
リクエストメッセージを送信時から所定時間Ｔs3以内に親ノード２００（ｎ−１）又は１００から返信メッセージを受領しなかったためにリクエストメッセージの送信を停止したスレーブノード２００（ｎ）は、リクエストメッセージの送信を停止してから数式Ｔm3＝ｆ（Ｔ03，Ｔs3，ｑ）で計算される時間Ｔm3が経過した後、該親ノードにリクエスト再開メッセージを送信し、その後最新バージョンまでのトランザクション・ログを該親ノードに要求する。該リクエスト再開メッセージに対する再開許可メッセージを該リクエスト再開メッセージ送信時から所定時間Ｔs3以内に受領しないか、再開拒否メッセージを受領した場合、スレーブノード２００（ｎ）は所定時間経過後再度リクエスト再開メッセージを送信する。
再開メッセージ送信時から所定時間Ｔs3以内に再開許可メッセージを受領すると、該親ノードにリクエストメッセージを送信し、その後は異常を検知する前と同様に、返信メッセージ受信時から所定時間Ｔs1毎に該親ノードにリクエストメッセージを送信する。【００６４】
リクエスト再開メッセージを受け取った該親ノードは、すでに該スレーブノード２００（ｎ）に異常が発生したとみなしており、かつ自ノードが最新バージョンまでのトランザクション・ログを所有している場合、再開許可メッセージを送信し、該ノード２００（ｎ）をトランザクション・ログを転送する対象となるノードに加える。また、その後に最新バージョンまでのトランザクション・ログの要求を受けると、所有している最新バージョンまでのトランザクション・ログを送信する。まだ該スレーブノード２００（ｎ）に異常が発生したとみなしていないか、自ノードが最新バージョンまでのトランザクション・ログを所有していない場合は再開拒否メッセージを送信する。【００６５】
以上のようなので、障害が復旧するとまずスレーブノード２００（ｎ）がリクエストメッセージの送信を再開する。すると該スレーブノード２００（ｎ）が最新バージョンまでのトランザクション・ログを所有するようになるので、その子ノード２００（ｎ＋１）がリクエストメッセージの送信を再開する。したがって、スレーブノード２００（ｎ）からすべての子孫ノードにいたるまで、上層から順にリクエストメッセージの送信を再開し、最終的にすべての子孫ノードが障害発生前の状態に復帰する。
このように同期処理の対象から外されたスレーブノード２００（ｎ）が検索指示を受領したときには検索を実行するに際して最新バージョンまでのトランザクション・ログを入手してレプリカＤＢを更新するため、マスタＤＢと同期のとれたレプリカＤＢを用いて検索できる。【００６６】
実施例３では、木構造の根としてマスタノードであるマスタノード１００を有し、木構造の節点及び葉としてスレーブノードである複数のスレーブノード２００を有する構造において、マスタＤＢの更新に係るトランザクション・ログが、原則として、その更新の都度、すべてのスレーブノード２００に転送され、各スレーブノード２００にてレプリカＤＢ２０２の更新が行われるので、使用者から検索要求を受けたスレーブノード２００は、レプリカＤＢ２０２を使用して迅速に検索ができ、検索頻度が高い場合にも検索スピードが低下しないというメリットがある。【００６７】
また、接続されているいずれかのノード間のリクエストメッセージ又は応答メッセージに対して所定時間以内に応答がないときは、なんらかの障害が発生したとみなし、更新要求を受領したマスタノード１００及びトランザクション・ログを受領したスレーブノード２００は、リクエストメッセージを受領していない子ノード２００を同期処理の対象から外し、検索要求を受領したスレーブノード２００は、返信メッセージを受領していない場合は、スレーブノード２００からその親ノードへ最新バージョンまでのトランザクション・ログを要求するので、障害発生時にもスレーブノード２００を同期が取れた状態に保ちながら同期処理を高速に実行することができる。【００６８】
本実施例において、親ノードが返信メッセージを送信した時から子ノードから新たなリクエストメッセージを受信するまでの時間Ｔr3を、Ｔ03、Ｔs3及び該子ノードの木構造における高さｑを勘案して設定している。このため、親ノードが障害を検知して子ノードを同期処理の対象から外したにもかかわらず、該子ノード２００及びその子孫ノードとなるすべてのスレーブノード２００が、障害に気づかないで、最新バージョンまでのトランザクション・ログを受領していると判断することを防止できる。つまり、更新されたマスタＤＢ１０２と同期されていないレプリカＤＢ２０２を使用して検索するのを防止できる。【００６９】
返信メッセージを受信できずに障害を検知したスレーブノード２００は、障害が復旧した後、リクエストメッセージの送信を再開し、障害発生前の状態に復帰することができる。スレーブノード２００との間の一時的なネットワークの障害に対して、障害が発生しているときは該スレーブノード２００を更新要求に対する同期の対象から外して更新要求を迅速に処理し、障害が復旧した後は再び同期の対象に加えて該スレーブノード２００に対する検索要求を迅速に処理できるので、システム全体のパフォーマンスを向上することができるというメリットがある。【００７０】
本実施例において、通信モジュール２０８（ｎ）から前記トランザクション・ログの要求を受領してから所定時間以内に、該スレーブノード２００（ｎ−１）の別の子ノードから最新バージョンまでのトランザクション・ログの要求が入ってきたら、それらの要求を取りまとめて更にその親ノードへ送ることができる。このようにすることによって、ネットワークトラフィックの負担を軽減できる。【００７１】
さらに、本実施例において、リクエスト及び返信メッセージの送受信とトランザクション・ログの要求及びその転送とを同一の通信経路を使用して行うことができる。また、通信経路として、先に送信したメッセージが必ず先に届くような通信経路を使用することができる。このことにより、リクエストメッセージと返信メッセージの送受信の確認により、その通信経路間のトランザクション・ログの転送が確実に行われていることが保証できる。
【実施例４】
【００７２】
図３は、本発明の実施例２に係るデータの複製管理の概略を示し、その動作について、図１及び図３を参照して説明する。
使用者からのデータの更新要求を受けたマスタノード１００のＤＢバックエンド１０６から新たな更新に係るトランザクション・ログの転送指示を受けた通信モジュール１０８は、そのすべての子ノード２００（１）の通信モジュール２０８（１）に前記トランザクション・ログを転送し、受領した通信モジュール２０８（１）はそれぞれ、更にそのすべての子ノード２００（２）の通信モジュール２０８（２）に前記トランザクション・ログを転送する。
上述のことは、葉ノード２００（ｚ）の通信モジュール２０８（ｚ）が前記トランザクション・ログを受信するまで繰り返される。【００７３】
葉ノードの２００（ｚ）の通信モジュール２０８（ｚ）は、前記トランザクション・ログを受信したなら、その親ノードの通信モジュール２０８（ｚ−１）に転送完了を送信し、該通信モジュール２０８（ｚ−１）は、転送したすべての葉ノード２００（ｚ）から転送完了を受領したら、更にその親ノードの通信モジュール２０８（ｚ−２）に転送完了を送信する。
上記転送完了の送信を繰り返し、マスタノード１００の通信モジュール１０８がすべてのスレーブノード２００（１）から転送完了を受領し、かつマスタＤＢ１０２の更新が終了したならば、クライアントからのデータの更新要求（更新指示）に従った更新作業は完了する。【００７４】
使用者から要求された検索は、いずれかのスレーブノード２００（ｋ）のＤＢバックエンド２０６（ｋ）に入り、該スレーブノード２００（ｋ）がその１つ上層のノード２００（ｎ−１）又はマスタノード１００へリクエストメッセージを送信した時から所定時間Ｔs3以内に返信メッセージを受領し、自らが異常を検知していなかった場合、レプリカＤＢ２０２（ｋ）を使用して行われる。【００７５】
使用者からのデータの検索要求は、検索指示としていずれかのスレーブノード２００（ｋ）のＤＢバックエンド２０６（ｋ）に入る。ＤＢバックエンド２０６（ｋ）は、該検索指示を通信モジュール２０８（ｋ）に送信し、該スレーブノード２００（ｋ）がその親ノード２００（ｋ−１）又はマスタノード１００へリクエストメッセージを送信した時から所定時間Ｔs3以内に返信メッセージを受領した場合、通信モジュール２０８（ｋ）は、自ら所有する最新バージョンまでのトランザクション・ログをトランザクション・ログ書き込みモジュール２１０（ｋ）に送信する。トランザクション・ログ書き込みモジュール２１０は、該トランザクション・ログをトランザクション・ログ記録領域２０４（ｋ）に書き込む。【００７６】
次いで、復元モジュール２１２（ｋ）は、トランザクション・ログ記録領域２０４（ｋ）から該トランザクション・ログを呼び出し、レプリカＤＢ２０２（ｋ）に適用することにより、マスタＤＢ１０２と検索対象として使用されるレプリカＤＢ２０２（ｋ）との間のデータの複製が完了し、データの検索要求は、レプリカＤＢ２０２（ｋ）を使用して行われる。
検索指示を受領したスレーブノード２００（ｋ）が、前記所定時間Ｔs3以内に返信メッセージを受領しなかった場合については実施例３と同様であり、本実施例における上記以外の実施例３で説明した態様についても、実施例３と同様である。【００７７】
本実施例特有の効果は次のとおりである。
実施例４では、更新指示を反映したトランザクション・ログをスレーブノード２００（ｋ）に送信した親ノード２００（ｋ−１）は、通信モジュール２０８（ｋ）から該トランザクション・ログの受領通知を受領するのを待つだけでよく、該トランザクション・ログがスレーブＤＢ２０２（ｋ）に適用するまで待つ必要がないので、トランザクション・ログ転送時の同期処理を迅速に処理できる。【００７８】
また、検索指示を受領したスレーブノード２００（ｋ）は既に受領している最新バージョンまでのトランザクション・ログを参照してレプリカＤＢ２０２（ｋ）のデータ更新を行い、該レプリカＤＢ２０２（ｋ）を使用して検索が行われる。
本実施例では、トランザクション・ログの適用を遅延して検索指示を受領したときにだけトランザクション・ログを適用してレプリカＤＢを更新するので、改めて該親ノードに最新バージョンまでのトランザクション・ログを要求する必要がないというメリットがある。
【産業上の利用可能性】
【００７９】
以上説明したように、本発明によると複数サイト間で、逐次更新される情報が整合性を確保しながら検索することのできるＤＢ管理システムとして使用できる。
【符号の説明】
【００８０】
１００          マスタノード
１０２          マスタＤＢ
１０４，２０４  トランザクション・ログ記憶領域
１０６，２０６  ＤＢバックエンド
１０８，２０８  トランザクション・ログ書き込みモジュール
１２０          ネットワーク
２００          スレーブノード
２０２          レプリカＤＢ
【図１】
2010106991.tif 000003
【図２】
2010106991.tif 000004
【図３】
2010106991.tif 000005
【図４】
2010106991.tif 000006
【手続補正書】
【提出日】平成22年9月13日(2010.9.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
図３は、本発明の実施例４に係るデータの複製管理の概略を示し、その動作について、図１及び図３を参照して説明する。
使用者からのデータの更新要求を受けたマスタノード１００のＤＢバックエンド１０６から新たな更新に係るトランザクション・ログの転送指示を受けた通信モジュール１０８は、そのすべての子ノード２００（１）の通信モジュール２０８（１）に前記トランザクション・ログを転送し、受領した通信モジュール２０８（１）はそれぞれ、更にそのすべての子ノード２００（２）の通信モジュール２０８（２）に前記トランザクション・ログを転送する。
上述のことは、葉ノード２００（ｚ）の通信モジュール２０８（ｚ）が前記トランザクション・ログを受信するまで繰り返される。
【手続補正書】
【提出日】平成23年2月8日(2011.2.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マスタノードによって管理されるマスタデータベースと、該マスタデータノードを根として本構造に接続された複数のスレーブノードによって前記マスタデータベースと同一内容となるよう管理され、検索対象として使用されるレプリカデータベースとの間のデータ複製管理方法であって、
検索の指示を受領した前記スレーブノードは、該スレーブノードの親ノードへハートビート通信におけるリクエストメッセージを送信した時から所定時間（Ｔｓ３）以内に該親ノードから前記ハートビート通信における返信メッセージを受領しなかった場合、前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログの要求を前記親ノードへ送信するステップと、
前記親ノードが該トランザクション・ログを有しなかった場合、該親ノードは更に該親ノードの親ノードへ該トランザクション・ログを要求することを、該トランザクション・ログを有するノードに達するまで繰り返すステップと、
該要求を受領した該トランザクション・ログを有するノードは、該ノードの子ノードへ該トランザクション・ログを送信し、該子ノードは更にその子ノードへ該トランザクション・ログを送信することを、前記スレーブノードが該トランザクション・ログを受領するまで繰り返すステップと、
前記スレーブノードは、受信した該トランザクション・ログを参照して前記レプリカデータベースを更新するステップと
を含むデータの複製管理方法。
【請求項２】
前記スレーブノードは、該スレーブノードの親ノードへハートビート通信におけるリクエストメッセージを送信した時から所定時間（Ｔｓ３）以内に前記親ノードから前記ハートビート通信における返信メッセージを受領した場合、既に受領しているトランザクション・ログを参照して前記レプリカデータベースを更新するステップをさらに含む請求項１記載のデータ複製管理方法。
【請求項３】
前記ノードは、前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを前記子ノードへ送信後であって、前記リクエストメッセージの受領時から所定時間（Ｔｒ３）以内に新たなリクエストメッセージを受領した前記子ノードのすべてから転送の完了の通知を受領すると、その親ノードに転送完了の通知を送信するステップ
を含む請求項１または２記載のデータの複製管理方法。
【請求項４】
前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを有しない前記ノードは、該ノードの子ノードのいずれかから該トランザクション・ログの要求を受領した場合、これらの要求を取りまとめて、前記ノードの親ノードへ該トランザクション・ログを要求するステップを含む請求項１乃至３のいずれか１項に記載のデータの複製管理方法。
【請求項５】
マスタノードによって管理されるマスタデータベースと、該マスタノードを根として木構造に接続された複数のスレーブノードによって前記マスタデータベースと同一内容となるよう管理され、検索対象として使用されるレプリカデータベースとを接続して構成されるデータの複製管理システムであって、
前記マスタノードが、更新の指示に従って前記マスタデータベースを更新する手段と、
前記マスタデータベースの更新に係るトランザクション・ログを前記マスタノードの子ノードへ送信する手段と、
該子ノードの要求に従って前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを該子ノードへ送信する手段とを備え、
前記スレーブノードが、該スレーブノードの親ノードへハートビート通信におけるリクエストメッセージを送信した時から所定時間（Ｔｓ３）以内に該１つ上層のノードから前記ハートビート通信における返信メッセージを受領しなかった場合、前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを該親ノードへ要求する手段と、
転送された該トランザクション・ログを参照して前記レプリカデータベースを更新する手段と、
前記ノードが前記マスタデータベースの更新に係る最新バージョンまでのトランザクション・ログを有しない場合、前記ノードの親ノードへ該トランザクション・ログを要求する手段と、
該トランザクション・ログを有する場合、要求した前記ノードの子ノードへ該トランザクション・ログを送信する手段と、
該トランザクション・ログを前記ノードの子ノードへ送信後であって、前記リクエストメッセージの受領時から所定時間以内に新たなリクエストメッセージを受領した該子ノードのすべてから転送完了の通知を受領すると、前記親ノード又はマスタノードへ転送完了の通信を送信する手段と
を備えるデータの複製管理システム。
【請求項６】
前記スレーブノードが、該スレーブノードの親ノードへリクエストメッセージを送信した時から所定時間（Ｔｓ３）以内に該親ノードから返信メッセージを受領した場合、検索の指示に従って既に受領しているトランザクション・ログを参照して前記レプリカデータベースを更新する手段をさらに備える請求項５記載のデータの複製管理システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
図２は、スレーブノード２００とマスタノード１００との間の正常なハートビート通信を示す説明図である。ここで、ハートビート通信とは、一定時間毎に心臓の鼓動のように通信相手との間でリクエストメッセージを送信し、相手方から所定時間内にその返信メッセージを受信することで通信回線と相手方ノードが正常に機能していることを確認する通
信機能である。
スレーブノード２００はそれぞれ、マスタノード１００への所定時間Ｔｉ１間隔でハートビート通信におけるリクエストメッセージを送る。ここで、所定の時間Ｔｉ１は、スレーブノード２００がマスタノード１００へリクエストメッセージを送信した後、返信メッセージを受領してから時間Ｔｏ１を経過するまでの時間とする。
リクエストメッセージを受信したマスタノード１００は、送信した各スレーブノード２００に前記ハートビート通信における返信メッセージを送る。スレーブノード２００がリクエストメッセージを送信した時から所定時間ＴＳ１以内にマスタノード１００から返信メッセージがなかった場合、マスタノード１００又はその通信経路に何らかの障害が発生しているおそれがある。前者のマスタノード１００の障害の場合とは、マスタノード自体がダウンしている場合の他、マスタノードのタスク処理の負荷が大きすぎて、所定時間内に返信メッセージを返信できないような場合があり得る。また、通信経路の障害の場合とは、通信経路そのものがダウンしている場合の他、通信経路の負荷が大きいため、所定時間内に返信メッセージを到着させることができないような場合があり得る。つまり、ハートビート通信は過大な負荷のために成立していないが、遅延を生じつつも、マスタノード１００も通信経路も機能はしている場合があり得る。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
なお、前記所定の時間Ｔｉ１を、ハートビート通信におけるリクエストメッセージを送信した時から時間Ｔｏ１を経過するまでの時間とすることもできる。この場合も、リクエストメッセージを送信した時から所定時間Ｔｓ１以内にマスタノード１００から前記ハートビート通信における返信メッセージがなかった場合、システムに何らかの障害が発生しているおそれがある。
スレーブノード２００は、リクエストメッセージを送信した時から所定時間Ｔｓ１以内にマスタノード１００から返信メッセージを受領しなかった場合、システムに何らかの障害が発生しているおそれがあるとみなし、マスタノード１００にリクエストメッセージを送ることを停止する。
この場合のシステムの障害についても、マスタノード自体がダウンしている場合の他、マスタノードのタスク処理の負荷が大きすぎて、所定時間内にハートビート通信の返信メッセージを返信できないような場合があり得る。また通信経路の障害として、通信経路そのものがダウンしている場合の他、通信経路の負荷が大きいため、所定時間内に返信メッセージを到着させることができないような場合もあり得る。つまり、ハートビート通信は過大な負荷のために成立していないが、遅延を生じつつも、マスタノード１００も通信経路も機能はしている場合があり得る。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
しかしながら、前記スレーブノード２００が、所定時間Ｔｓ１以内にハートビート通信における返信メッセージを受領しなかった場合、通信モジュール２０８は、マスタノード１００の通信モジュール１０８に、未取得かつ最新バージョンまでのトランザクション・ログ（本明細書において併せて「最新バージョンまでのトランザクション・ログ」又は単
に「トランザクション・ログ」ということがある。）を要求する。該要求するトランザクション・ログにスレーブノード２００が既に取得しているトランザクション・ログを含まないことによって、伝達する情報量を減らし、通信負荷を軽減することができる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
図４は、スレーブノード２００（ｎ）とその親ノード２００（ｎ−１）又は１００との間の正常なハートビート通信を示す説明図である。
スレーブノード２００（ｎ）は、その親ノードへ所定の時間Ｔｉ３間隔でハートビート通信におけるリクエストメッセージを送る。該リクエストメッセージを受信した親ノードは、スレーブノード２００（ｎ）へ前記ハートビート通信における返信メッセージを送る。スレーブノード２００（ｎ）がリクエストメッセージを送信した時から所定時間Ｔｓ３以内に親ノードから返信メッセージがなかった場合、該親ノード又はその通信経路に何らかの障害が発生しているおそれがある。前者の親ノードの障害の場合とは、親ノード自体がダウンしている場合の他、親ノードのタスク処理の負荷が大きすぎて、所定時間内に返信メッセージを返信できないような場合があり得る。また、通信経路の障害の場合とは、通信経路そのものがダウンしている場合の他、通信経路の負荷が大きいため、所定時間内に返信メッセージを到着させることができないような場合があり得る。つまり、ハートビート通信は過大な負荷のために成立していないが、遅延を生じつつも、親ノードも通信経路も機能はしている場合があり得る。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
ここで、親ノードは、ｎが１より大きい場合はスレーブノード２００（ｎ−１）、ｎ＝１の場合はマスタノード１００である（本明細書において併せて「親ノード２００（ｎ−１）又は１００」と示すことがある。）。前記所定の時間Ｔｉ３は、スレーブノード２００（ｎ）が該親ノードへハートビート通信におけるリクエストメッセージを送信した後、返信メッセージを受領してから時間Ｔｏ３経過するまでの時間とする。
なお、前記所定の時間Ｔｉ３を、スレーブノード２００（ｎ）がハートビート通信におけるリクエストメッセージを送信した時から時間Ｔｏ３が経過するまでの時間とすることもできる。この場合も、リクエストメッセージを送信した時から所定時間Ｔｓ３以内に該親ノードから返信メッセージがなかった場合、システムに何らかの障害が発生しているおそれがある。
この場合のシステムの障害についても、親ノード自体がダウンしている場合の他、親ノードのタスク処理の負荷が大きすぎて、所定時間内にハートビート通信の返信メッセージを返信できないような場合があり得る。また通信経路の障害として、通信経路そのものがダウンしている場合の他、通信経路の負荷が大きいため、所定時間内に返信メッセージを到着させることができないような場合もあり得る。つまり、ハートビート通信は過大な負荷のために成立していないが、遅延を生じつつも、親ノードも通信経路も機能はしている場合があり得る。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
スレーブノード２００（ｎ）は、ハートビート通信におけるリクエストメッセージを送信した時から所定時間Ｔｓ３以内にその親ノードからその返信メッセージを受け取った場合、自ノードが最新バージョンまでのトランザクションログを所有しているとみなす。
逆に、前記所定時間Ｔｓ３以内にその親ノードから前記ハートビート通信における返信メッセージを受領しなかった場合、該親ノードにハートビート通信におけるリクエストメッセージを送ることを停止する。つまり、スレーブノード２００（ｎ）は、システムに何らかの障害が発生しているおそれがあるとみなし、自ノードは最新バージョンまでのトランザクション・ログを所有していないとみなす。
この場合のシステムの障害についても、親ノード自体がダウンしている場合の他、親ノードのタスク処理の負荷が大きすぎて、所定時間内にハートビート通信の返信メッセージを返信できないような場合があり得る。また通信経路の障害として、通信経路そのものがダウンしている場合の他、通信経路の負荷が大きいため、所定時間内に返信メッセージを到着させることができないような場合もあり得る。つまり、ハートビート通信は過大な負荷のために成立していないが、遅延を生じつつも、親ノードも通信経路も機能はしている場合があり得る。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
しかしながら、前記所定時間Ｔｓ３以内に該親ノードからハートビート通信における返信メッセージを受領しなかった場合には、スレーブノード２００（ｋ）のＤＢバックエンド２０６（ｋ）は、前記検索指示を通信モジュール２０８（ｋ）に送信し、通信モジュール２０８（ｋ）は、該親ノードの通信モジュール２０８（ｋ−１）又は１０８に、マスタＤＢ１０２の更新に係る最新バージョンまでのトランザクション・ログを要求する。
該親ノードが該トランザクション・ログを所有するスレーブノード２００（ｋ−１）又はマスタノード１００である場合、該親ノードの通信モジュール２０８（ｋ−１）又は１０８は、該スレーブノード２００（ｋ）の通信モジュール２０８（ｋ）に該トランザクション・ログを送信する。
【国際調査報告】
2010106991.tif 000007
2010106991.tif 000008
2010106991.tif 000009