(57)【特許請求の範囲】
【請求項１】
マスタ或いはスレーブの関係で対向装置とネットワークを介して接続するサーバ装置であって、
レコード単位で記録されたデータを有するデータベースと、
自装置が前記マスタである場合には、外部の装置からデータ更新の指示を受け付けた際に、前記データベースのデータを更新し、自装置が前記スレーブである場合には、前記マスタである対向装置から同期の指示を受け付けた際に、前記データベースのデータを更新するデータ更新部と、
自装置が前記マスタである場合であって、前記データ更新部によって外部の装置からデータ更新の指示を受け付けて前記データベースのデータが更新された場合には、該更新したデータとの同期の指示を前記スレーブである対向装置に対して送信する更新データ送信部と、
前記対向装置との間でネットワーク障害が生じた場合、自装置をマスタに暫定的に移行するマスタ移行部と、
前記マスタ移行部によって暫定的にマスタに移行された場合には、外部の装置からデータ更新の指示を受け付けた際に、前記対向装置とは非同期で前記データベースのデータを更新し、ネットワーク障害継続期間に前記データベースの各データに対しデータを更新した場合、該データにデータ更新についての履歴情報を対応付けて前記データベースに記憶させる暫定データ更新部と、
外部の装置からデータ参照を要求された場合には、前記履歴情報を基にデータ参照を要求されたデータの信頼度を判断し、データ参照を要求されたデータとともに判断した信頼度を応答する信頼度通知部と、
を有し、
前記暫定データ更新部は、前記履歴情報として、データの更新回数を前記データベースに記憶させ、
前記信頼度通知部は、前記更新回数が所定の閾値以上である場合に前記データ参照を要求されたデータの信頼度が低いと判断し、前記更新回数が所定の閾値未満である場合に前記データ参照を要求されたデータの信頼度が高いと判断することを特徴とするサーバ装置。
【請求項２】
ネットワーク障害が回復した場合、前記対向装置が保持するデータと前記データベースが有するデータとについて、レコード単位でデータの一致度を確認し、データ間に差分がある場合には前記履歴情報を基に正しいデータを判断し、差分があるデータのみを双方でレプリケーションする差分レプリケーションにより、前記対向装置との間で前記データの整合を行う整合部をさらに有することを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記暫定データ更新部は、前記履歴情報として、データの更新時間を示すタイムスタンプを前記データベースに記憶させ、
前記整合部は、前記対向装置が保持するデータと前記データベースが有するデータとのうちタイムスタンプが新しいデータが正しいと判断することを特徴とする請求項２に記載のサーバ装置。
【請求項４】
マスタデータベースサーバと、前記マスタデータベースサーバとネットワークを介して接続するスレーブデータベースサーバとを有する通信システムであって、
前記マスタデータベースサーバは、
レコード単位で記録されたデータを有するマスタデータベースと、
外部の装置からデータ更新の指示を受け付けた際に、前記マスタデータベースのデータを更新する第１のデータ更新部と、
前記第１のデータ更新部によって外部の装置からデータ更新の指示を受け付けて前記マスタデータベースのデータが更新された場合には、該更新したデータとの同期の指示を前記スレーブデータベースサーバに対して送信する更新データ送信部と、
前記スレーブデータベースサーバとの間でネットワーク障害が生じた場合、自装置をマスタに暫定的に移行する第１のマスタ移行部と、
前記第１のマスタ移行部によって暫定的にマスタに移行された場合には、外部の装置からデータ更新の指示を受け付けた際に、前記スレーブデータベースサーバとは非同期で前記マスタデータベースのデータを更新し、ネットワーク障害継続期間に前記マスタデータベースの各データに対しデータを更新した場合、該データにデータ更新についての履歴情報を対応付けて前記マスタデータベースに記憶させる第１の暫定データ更新部と、
外部の装置からデータ参照を要求された場合には、前記履歴情報を基にデータ参照を要求されたデータの信頼度を判断し、データ参照を要求されたデータとともに判断した信頼度を応答する第１の信頼度通知部と、
を有し、
前記第１の暫定データ更新部は、前記履歴情報として、データの更新回数を前記マスタデータベースに記憶させ、
前記第１の信頼度通知部は、前記更新回数が所定の閾値以上である場合に前記データ参照を要求されたデータの信頼度が低いと判断し、前記更新回数が所定の閾値未満である場合に前記データ参照を要求されたデータの信頼度が高いと判断し、
前記スレーブデータベースサーバは、
前記レコード単位で記録されたデータを有するスレーブデータベースと、
前記マスタデータベースサーバから同期の指示を受け付けた際に、前記スレーブデータベースのデータを更新する第２のデータ更新部と、
前記マスタデータベースサーバとの間でネットワーク障害が生じた場合、自装置をマスタに暫定的に移行する第２のマスタ移行部と、
前記第２のマスタ移行部によって暫定的にマスタに移行された場合には、外部の装置からデータ更新の指示を受け付けた際に、前記マスタデータベースサーバとは非同期で前記スレーブデータベースのデータを更新し、ネットワーク障害継続期間に前記スレーブデータベースの各データに対しデータを更新した場合、該データにデータ更新についての履歴情報を対応付けて前記スレーブデータベースに記憶させる第２の暫定データ更新部と、
外部の装置からデータ参照を要求された場合には、前記履歴情報を基にデータ参照を要求されたデータの信頼度を判断し、データ参照を要求されたデータとともに判断した信頼度を応答する第２の信頼度通知部と、
を有し、
前記第２の暫定データ更新部は、前記履歴情報として、データの更新回数を前記スレーブデータベースに記憶させ、
前記第２の信頼度通知部は、前記更新回数が所定の閾値以上である場合に前記データ参照を要求されたデータの信頼度が低いと判断し、前記更新回数が所定の閾値未満である場合に前記データ参照を要求されたデータの信頼度が高いと判断することを特徴とする通信システム。
【請求項５】
マスタ或いはスレーブの関係で対向装置とネットワークを介して接続するサーバ装置が実行する通信方法であって、
前記サーバ装置は、レコード単位で記録されたデータを有するデータベースを有し、
自装置が前記マスタである場合には、外部の装置からデータ更新の指示を受け付けた際に、前記データベースのデータを更新し、自装置が前記スレーブである場合には、前記マスタである対向装置から同期の指示を受け付けた際に、前記データベースのデータを更新するデータ更新工程と、
自装置が前記マスタである場合であって、前記データ更新工程によって外部の装置からデータ更新の指示を受け付けて前記データベースのデータが更新された場合には、該更新したデータとの同期の指示を前記スレーブである対向装置に対して送信する更新データ送信工程と、
前記対向装置との間でネットワーク障害が生じた場合、自装置をマスタに暫定的に移行する移行工程と、
前記移行工程によって暫定的にマスタに移行された場合には、外部の装置からデータ更新の指示を受け付けた際に、前記対向装置とは非同期で前記データベースのデータを更新し、ネットワーク障害継続期間に前記データベースの各データに対しデータを更新した場合、該データにデータ更新についての履歴情報を対応付けて前記データベースに記憶させる暫定データ更新工程と、
外部の装置からデータ参照を要求された場合には、前記履歴情報を基にデータ参照を要求されたデータの信頼度を判断し、データ参照を要求されたデータとともに判断した信頼度を応答する信頼度通知工程と、
を含み、
前記暫定データ更新工程は、前記履歴情報として、データの更新回数を前記データベースに記憶させ、
前記信頼度通知工程は、前記更新回数が所定の閾値以上である場合に前記データ参照を要求されたデータの信頼度が低いと判断し、前記更新回数が所定の閾値未満である場合に前記データ参照を要求されたデータの信頼度が高いと判断することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置、通信システム及び通信方法に関する。
【背景技術】
【０００２】
従来、マスタデータベース（ＤＢ）／スレーブＤＢによりＤＢが冗長化されたＤＢサーバシステムが知られている（特許文献１参照）。サービス提供装置は、通常、マスタＤＢのデータを参照してユーザにサービスを提供する。
【０００３】
このようなＤＢサーバシステムにおいては、ネットワーク障害等によりマスタＤＢとスレーブＤＢとを同期させることができず、マスタＤＢとスレーブＤＢとを入れ替えるいわゆるマスタ／スレーブ交代ができない状態であっても、サービスを継続して提供する必要がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１４２９９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、マスタ／スレーブによる冗長化構成をとっているＤＢサーバシステムにおいて、マスタとスレーブとが設置されているエリア間でネットワーク障害が発生すると、データ更新処理サービスの中断に繋がるという問題があった。
【０００６】
具体的に、図１５を参照して、従来のＤＢサーバシステムについて説明する。図１５は、従来のＤＢサーバシステムの通信方法を説明する図である。図１５に示すように、従来のＤＢサーバシステムは、例えば、エリアＡに、マスタＤＢサーバ２０Ｐが設けられており、エリアＡ内のサービス提供装置１０Ａｐ，１０Ｂｐを収容する。サービス提供装置１０Ａｐ，１０Ｂｐは、ユーザ５Ａｐ〜５Ｂｐ，５Ｃｐ〜５Ｄｐとそれぞれ接続する。そして、エリアＢに、スレーブＤＢサーバ３０Ｐが設けられており、エリアＢ内のサービス提供装置１０Ｃｐ，１０Ｄｐを収容する。サービス提供装置１０Ｃｐ，１０Ｄｐは、ユーザ５Ｅｐ〜５Ｆｐ，５Ｇｐ〜５Ｈｐとそれぞれ接続する。
【０００７】
このうち、エリアＡでは、ネットワーク障害が発生した場合であっても（図１５の（１）参照）、マスタＤＢサーバ２０Ｐにアクセスできるため、サービス提供装置１０Ａｐ，１０Ｂｐは、データを参照する処理に加え、データを更新する処理も実行可能である。
【０００８】
例えば、サービス提供装置１０Ａｐが、ユーザ５Ａｐによるデータ更新要求を受け（図１５の（２−１）参照）、マスタＤＢサーバ２０Ｐにデータ更新要求を送信すると（図１５の（３−１）参照）、マスタＤＢサーバ２０Ｐは、データを更新する（図１５の（４−１）参照）。また、サービス提供装置１０Ａｐが、ユーザ５Ｂｐによるデータ参照要求を受けると（図１５の（２−２）参照）、マスタＤＢサーバ２０Ｐにデータ参照要求を送信して（図１５の（３−２）参照）、マスタＤＢサーバ２０Ｐによるデータ参照応答をユーザ５Ｂｐに送信することもできる。
【０００９】
これに対し、エリアＢでは、ネットワーク障害が発生した場合には（図１５の（１）参照）、スレーブＤＢサーバ３０Ｐにしかアクセスできないため、サービス提供装置１０Ｃｐ，１０Ｄｐは、スレーブＤＢサーバ３０Ｐにアクセスしてデータを参照する処理は行えるものの、データを更新する処理が行えない。
【００１０】
例えば、サービス提供装置１０Ｃｐが、ユーザ５Ｆｐによるデータ参照要求を受けても（図１５の（２−４）参照）、ネットワーク障害のため、マスタＤＢサーバ２０Ｐとの間で通信できない（図１５の（４−３）参照）。この場合には、サービス提供装置１０Ｃｐは、スレーブＤＢサーバ３０Ｐにアクセスして（図１５の矢印Ｙｐ参照）、データ参照要求を送信し（図１５の（３−４）参照）、スレーブＤＢサーバ３０Ｐによるデータ参照応答をユーザ５Ｆｐに送信する。
【００１１】
一方、ユーザ５Ｅｐによるデータ更新要求を受けた場合には（図１５の（２−３）参照）、サービス提供装置１０Ｃｐは、ネットワーク障害のため、マスタＤＢサーバ２０Ｐとの間で通信できず（図１５の（４−３）参照）、マスタＤＢサーバ２０Ｐにデータ更新要求を送信できない（図１５の（３−３）参照）。
【００１２】
このように、従来のＤＢサーバシステムでは、スレーブＤＢサーバ３０ＰにしかアクセスできないエリアＢのサービス提供装置１０Ｃｐ，１０Ｄｐは、スレーブＤＢサーバ３０Ｐアクセスしてデータを参照する処理は行えるものの、データを更新する処理が行えない。この結果、スレーブＤＢサーバ３０ＰにしかアクセスできないエリアＢでは、データ更新処理サービスの中断（図１５の（５）参照）に繋がるという問題があった。
【００１３】
本発明は、上記に鑑みてなされたものであって、マスタ／スレーブによる冗長化構成をとっている構成において、ネットワーク障害によるエリア内のデータ更新処理サービスの中断を防止するサーバ装置、通信システム及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明に係るサーバ装置は、マスタ或いはスレーブの関係で対向装置とネットワークを介して接続するサーバ装置であって、レコード単位で記録されたデータを有するデータベースと、自装置がマスタである場合には、外部の装置からデータ更新の指示を受け付けた際に、データベースのデータを更新し、自装置がスレーブである場合には、マスタである対向装置から同期の指示を受け付けた際に、データベースのデータを更新するデータ更新部と、自装置がマスタである場合であって、データ更新部によって外部の装置からデータ更新の指示を受け付けてデータベースのデータが更新された場合には、該更新したデータとの同期の指示をスレーブである対向装置に対して送信する更新データ送信部と、対向装置との間でネットワーク障害が生じた場合、自装置をマスタに暫定的に移行するマスタ移行部と、マスタ移行部によって暫定的にマスタに移行された場合には、外部の装置からデータ更新の指示を受け付けた際に、対向装置とは非同期でデータベースのデータを更新する暫定データ更新部と、を有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、マスタ／スレーブによる冗長化構成をとっている構成において、ネットワーク障害によるエリア内のデータ更新処理サービスの中断を防止する。
【図面の簡単な説明】
【００１６】
【図１】図１は、本実施の形態に係る通信システムの概略構成を示す模式図である。
【図２】図２は、図１に示すサービス提供装置の構成を例示する模式図である。
【図３】図３は、図１に示すマスタＤＢサーバの構成を例示する模式図である。
【図４】図４は、図３に示すマスタＤＢが記憶するデータのデータ構成の一例を示す図である。
【図５】図５は、図３に示す整合部の整合処理を説明する図である。
【図６】図６は、図１に示すスレーブＤＢサーバの構成を例示する模式図である。
【図７】図７は、図１に示す通信システムの平常時の処理の流れの一例を示す図である。
【図８】図８は、図１に示す通信システムのネットワーク障害時の処理の流れの一例を示す図である。
【図９】図９は、図１に示す通信システムのネットワーク障害時のデータ更新処理について説明する図である。
【図１０】図１０は、図１に示す通信システムのネットワーク障害時のデータ参照処理の流れの一例を示す図である。
【図１１】図１１は、図１に示す通信システムのネットワーク復旧後のデータに対する整合処理の流れの一例を示す図である。
【図１２】図１２は、図１に示す通信システムの処理手順を示すシーケンス図である。
【図１３】図１３は、図１２に示す整合処理の処理手順を示すフローチャートである。
【図１４】図１４は、プログラムが実行されることにより、マスタＤＢサーバ或いはスレーブＤＢサーバが実現されるコンピュータの一例を示す図である。
【図１５】図１５は、従来のＤＢサーバシステムの通信方法を説明する図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１８】
［実施の形態］
まず、実施の形態に係る通信システムについて、通信システムの概略構成及び通信システムにおける通信処理の流れ及び具体例を説明する。
【００１９】
［通信システム］
図１は、本実施の形態に係る通信システムの概略構成を示す模式図である。図１に示すように、通信システム１は、エリアＡのサービス提供装置１０Ａ，１０Ｂと、エリアＢのサービス提供装置１０Ｃ，１０Ｄと、エリアＡのマスタデータベース（ＤＢ）サーバ２０と、エリアＢのスレーブＤＢサーバ３０とが、ネットワークを介して、互いに通信可能に接続されて構成される。サービス提供装置１０Ａ〜１０Ｄには、それぞれユーザ５Ａ〜５Ｂ，５Ｃ〜５Ｄ，５Ｅ〜５Ｆ，５Ｇ〜５Ｈが接続する。
【００２０】
サービス提供装置１０Ａ〜１０Ｄは、それぞれ接続するユーザ５Ａ〜５Ｂ，５Ｃ〜５Ｄ，５Ｅ〜５Ｆ，５Ｇ〜５Ｈにサービスを提供する。マスタＤＢサーバ２０は、サービス提供に必要なデータを記憶するマスタＤＢ２１を有する。スレーブＤＢサーバ３０は、マスタＤＢ２１の複製データを記憶するスレーブＤＢ３１を有する。
【００２１】
このような構成の通信システム１において、サービス提供装置１０Ａ〜１０Ｄは、平常時に、それぞれ接続するユーザ５Ａ〜５Ｂ，５Ｃ〜５Ｄ，５Ｅ〜５Ｆ，５Ｇ〜５Ｈの要求に応じて、或いは予め、マスタＤＢ２１にアクセスしてデータを参照し、参照したデータをキャッシュメモリに記憶するデータキャッシュを行う。そして、サービス提供装置１０Ａ〜１０Ｄは、このデータを用いて、それぞれ接続するユーザ５Ａ〜５Ｂ，５Ｃ〜５Ｄ，５Ｅ〜５Ｆ，５Ｇ〜５Ｈにサービスを提供する。また、サービス提供装置１０Ａ〜１０Ｄは、平常時に、それぞれ接続するユーザ５Ａ〜５Ｂ，５Ｃ〜５Ｄ，５Ｅ〜５Ｆ，５Ｇ〜５Ｈの要求に応じて、マスタＤＢ２１にアクセスして、マスタＤＢ２１のデータを更新する。
【００２２】
また、エリアＢのサービス提供装置１０Ｃ，１０Ｄは、ネットワーク障害等によりマスタＤＢサーバ２０と通信できない場合に、スレーブＤＢ３１にアクセスしてデータを参照し、データキャッシュを行って、このデータを用いてそれぞれ接続するユーザ５Ｅ〜５Ｆ，５Ｇ〜５Ｈにサービスを提供する。サービス提供装置１０Ｃ，１０Ｄは、ネットワーク障害が生じた場合に、それぞれ接続するユーザ５Ｅ〜５Ｆ，５Ｇ〜５Ｈの要求に応じて、スレーブＤＢ３１にアクセスして、スレーブＤＢ３１のデータを更新する。
【００２３】
マスタＤＢサーバ２０は、データ更新指示を受け付けてスレーブＤＢサーバ３０にデータを同期させる。マスタＤＢサーバ２０は、図示しない操作端末等によりマスタＤＢ２１のデータ更新が行われた場合に、更新されたデータをスレーブＤＢサーバ３０に通知して、マスタＤＢ２１とスレーブＤＢ３１とを同期させるレプリケーションを行う。
【００２４】
そして、マスタＤＢサーバ２０は、スレーブＤＢサーバ３０との間でネットワーク障害が生じた場合、マスタに暫定的に移行してスレーブＤＢサーバ３０とは非同期でマスタＤＢ２１のデータを更新する。言い換えると、マスタＤＢサーバ２０は、当該マスタＤＢサーバ２０に収容されているサービス提供装置１０Ａ，１０ＢのエリアＡに閉じた範囲でのマスタＤＢ２１のデータ更新処理を継続する。すなわち、マスタＤＢサーバ２０は、スレーブＤＢサーバ３０との間でネットワーク障害が生じた場合、対向装置であるスレーブＤＢサーバ３０との間のレプリケーションは実行しない。
【００２５】
また、マスタＤＢサーバ２０は、ネットワーク障害が回復した場合、スレーブＤＢ３１が保持するデータとマスタＤＢ２１が有するデータとについて、レコード単位でデータの一致度を確認する。続いて、マスタＤＢサーバ２０は、データ間に差分がある場合にはデータの履歴情報を基に正しいデータを判断し、差分レプリケーションにより、スレーブＤＢサーバ３０との間でデータの整合を行う。
【００２６】
スレーブＤＢサーバ３０は、マスタＤＢサーバ２０と同期しデータを更新する。スレーブＤＢサーバ３０は、更新されたデータをマスタＤＢサーバ２０から受信し、スレーブＤＢ３１をマスタＤＢ２１に同期させるレプリケーションを行う。そして、スレーブＤＢサーバ３０は、マスタＤＢサーバ２０との間でネットワーク障害が生じた場合、マスタに暫定的に移行してマスタＤＢサーバ２０とは非同期でスレーブＤＢ３１のデータ更新処理を実行する。言い換えると、スレーブＤＢサーバ３０は、当該スレーブＤＢサーバ３０に収容されているサービス提供装置１０Ｃ，１０ＤのエリアＢに閉じた範囲でのスレーブＤＢ３１のデータ更新処理を継続する。
【００２７】
また、スレーブＤＢサーバ３０は、ネットワーク障害が回復した場合、スレーブＤＢ３１が保持するデータとマスタＤＢ２１が有するデータとについて、レコード単位でデータの一致度を確認する。続いて、スレーブＤＢサーバ３０は、データ間に差分がある場合にはデータの履歴情報を基に正しいデータを判断し、差分レプリケーションにより、マスタＤＢサーバ２０との間でデータの整合を行う。
【００２８】
このように、本実施の形態では、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、ネットワーク障害が生じると、いずれも、マスタに暫定的に移行する。そして、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、いずれも、対向サーバとは非同期でそれぞれのＤＢのデータ更新処理を実行する。したがって、本実施の形態では、スレーブＤＢサーバ３０にしかアクセスできないエリアＢにおいても、データ更新処理サービスを継続することが可能になる。
【００２９】
［サービス提供装置の構成］
まず、サービス提供装置１０Ａ〜１０Ｄの構成について説明する。図２は、サービス提供装置１０Ｃの構成を例示する模式図である。なお、サービス提供装置１０Ａ，１０Ｂ、１０Ｄは、サービス提供装置１０Ｃと同様の機能構成である。以降、サービス提供装置１０Ａ〜１０Ｄを区別なく表記する際は、サービス提供装置１０と表記する。
【００３０】
サービス提供装置１０Ｃは、ワークステーションやパソコン等の汎用コンピュータで実現され、ＣＰＵ（Central  Processing  Unit）等の演算処理装置がメモリに記憶された処理プログラムを実行することにより、図２に例示するように、データ参照部１１およびサービス提供部１２として機能する。
【００３１】
データ参照部１１は、マスタＤＢサーバ２０と通信できない場合に、マスタＤＢサーバ２０に代えてスレーブＤＢサーバ３０に、スレーブＤＢ３１のデータ参照或いはデータ更新の要求を送信する。具体的に、データ参照部１１は、平常時、マスタＤＢサーバ２０にマスタＤＢ２１のデータ参照の要求、或いは、マスタＤＢ２１のデータ更新の要求を送信する。また、データ参照部１１は、ネットワーク障害等によりマスタＤＢサーバ２０にアクセスできない場合には、スレーブＤＢサーバ３０に、スレーブＤＢ３１のデータ参照の或いはデータ更新の要求を送信する。
【００３２】
また、データ参照部１１は、参照要求に応答してマスタＤＢサーバ２０またはスレーブＤＢサーバ３０から返送された参照応答に含まれるデータを、キャッシュメモリに記憶する（以下、データキャッシュと称する）。
【００３３】
サービス提供部１２は、データキャッシュされたデータを用いて、ユーザ５Ｅ〜５Ｆにサービスを提供する。例えば、サービス提供部１２は、電話番号と転送番号とを対応づけたデータを用いて、ユーザ５Ｅ，５Ｆが指定した電話番号に対応する転送番号を、ユーザ５Ｅ，５Ｆに通知するサービスを提供する。
【００３４】
［マスタＤＢサーバの構成］
次に、マスタＤＢサーバ２０の構成について説明する。図３は、マスタＤＢサーバ２０の構成を例示する模式図である。マスタＤＢサーバ２０は、ワークステーションやパソコン等の汎用コンピュータで実現され、図３に示すように、マスタＤＢ２１と、入力部２２と、出力部２３と、通信制御部２４と、制御部２５とを備える。
【００３５】
マスタＤＢ２１は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。なお、マスタＤＢ２１は、通信制御部２４（後述）を介して制御部２５（後述）と通信する構成としてもよい。
【００３６】
マスタＤＢ２１は、サービス提供装置１０が参照してサービス提供に用いるサービス情報を記憶する。図４は、マスタＤＢ２１が記憶するデータのデータ構成の一例を示す図である。
【００３７】
図４のテーブルＴ１に示すように、サービス情報は、各レコードを識別するレコードＩＤと、電話番号及び該電話番号の転送先である転送番号の情報内容を示すデータと、これらのデータに対するデータの更新時間を示すタイムスタンプと、このレコードのデータが更新された回数を示すデータ更新回数とを対応付けられた構成を有する。
【００３８】
図４のテーブルＴ１には、例えば、レコードＩＤ「２」の電話番号が「050-3333-4444」であり、転送番号が「090-3333-4444」であることが示されている。さらに、レコードＩＤ「２」については、タイムスタンプが「03/17  11:35:10」であり、データ更新回数が「14105」回であることが示されている。このサービス情報のデータ部分は、制御部２５の制御により、あるいは予め、通信制御部２４あるいは入力部２２を介して上位ＯｐＳやユーザ等から取得される。
【００３９】
入力部２２は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部２５に対して処理開始などの各種指示情報を入力する。出力部２３は、液晶ディスプレイなどの表示装置、プリンタ等の印刷装置、情報通信装置等によって実現される。
【００４０】
通信制御部２４は、ＮＩＣ（Network  Interface  Card）等で実現され、ＬＡＮ（Local  Area  Network）やインターネット等の電気通信回線を介したスレーブＤＢサーバ３０や上位ＯｐＳ（Operation  System）等の外部の装置と制御部２５との通信を制御する。
【００４１】
制御部２５は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部２５は、ＣＰＵやＭＰＵ（Micro  Processing  Unit）などの電子回路である。制御部２５は、図３に例示するように、データ更新部２５１、更新データ送信部２５２及び暫定マスタ制御部２５３を有する。
【００４２】
データ更新部２５１は、上位ＯｐＳやユーザ等から更新用のデータが入力された際、マスタＤＢ２１のデータを更新する。具体的に、データ更新部２５１は、通信制御部２４あるいは入力部２２を介してサービス情報を更新するためのデータが入力された際、対応するレコードのデータを入力されたデータに更新する。なお、データ更新部２５１は、平常時にサービス提供装置１０Ａ〜１０Ｄからデータの参照要求を受信した際、マスタＤＢ２１のデータを該サービス提供装置１０Ａ〜１０Ｄに参照させる。データ更新部２５１は、平常時にサービス提供装置１０Ａ〜１０Ｄから更新要求を受信した際、マスタＤＢ２１のデータを更新する。また、データ更新部２５１は、ネットワーク障害時には、サービス提供装置１０Ａ，１０Ｂによるデータの参照要求に応答する。
【００４３】
更新データ送信部２５２は、マスタＤＢ２１のデータが更新された後、スレーブＤＢサーバ３０にデータが更新されたレコードを送信する。具体的に、更新データ送信部２５２は、データ更新部２５１がサービス情報を更新した場合に、直ちに、或いは所定のタイミングで、スレーブＤＢサーバ３０に、更新されたデータと対応するレコードＩＤとを含むレコードを含め、マスタＤＢ２１とスレーブＤＢ３１との同期を指示するレプリケーションを送信する。
【００４４】
暫定マスタ制御部２５３は、スレーブＤＢサーバ３０との間でネットワーク障害が生じた場合、自装置をマスタに暫定的に移行してスレーブＤＢサーバ３０とは非同期でマスタＤＢ２１のデータを更新する。暫定マスタ制御部２５３は、マスタ移行部２５４、暫定データ更新部２５５、信頼度通知部２５６及び整合部２５７を有する。マスタ移行部２５４は、スレーブＤＢサーバ３０との間でネットワーク障害が生じた場合、マスタに暫定的に移行する。
【００４５】
暫定データ更新部２５５は、暫定マスタ制御部２５３によって暫定的にマスタに移行された場合には、外部の装置からデータ更新の指示を受け付けた際に、対向装置とは非同期でマスタＤＢ２１のデータを更新する。すなわち、暫定データ更新部２５５は、スレーブＤＢサーバ３０との間でネットワーク障害が生じた場合には、マスタＤＢサーバ２０に収容されているサービス提供装置１０Ａ，１０Ｂによるデータ更新要求に応じて、マスタＤＢ２１のデータの更新を行う。
【００４６】
この場合、暫定データ更新部２５５は、ネットワーク障害継続期間に、マスタＤＢ２１の各データに対しデータを更新した場合、該データにデータ更新についての履歴情報を対応付けてマスタＤＢ２１に記憶させる。この履歴情報として、暫定データ更新部２５５は、データの更新時間を示すタイムスタンプと、データの更新回数とを、マスタＤＢ２１に記憶させる。例えば、前述のテーブルＴ１（図４参照）において、レコードＩＤ「２」の転送番号が変更された場合には、このレコードＩＤ「２」に対する転送番号の更新時間をタイムスタンプ欄に記録し、データ更新回数をデータ更新回数欄に記録する。
【００４７】
信頼度通知部２５６は、サービス提供装置１０Ａ，１０Ｂからデータ参照を要求された場合には、履歴情報を基に、データ参照を要求されたデータの信頼度を判断し、データ参照を要求されたデータとともに、判断した信頼度を応答する。
【００４８】
具体的には、信頼度通知部２５６は、データ参照を要求されたレコードＩＤのデータの更新回数が所定の閾値以上である場合に、データ参照を要求されたデータの信頼度が低いと判断する。これは、対向するスレーブＤＢサーバ３０でも、このレコードＩＤのデータが更新されている可能性があり、マスタＤＢ２１のデータと、スレーブＤＢ３１のデータとが一致しない場合があると考えられるためである。閾値は、通信制御部２４を介した上位ＯｐＳ等の制御や、入力部２２から入力された指示情報に応じて、レコードごとに設定される。閾値は、予め設定されていてもよいし、これまでのデータ更新回数の統計を基に定期的に変更されてもよい。
【００４９】
一方、信頼度通知部２５６は、データ参照を要求されたレコードＩＤのデータの更新回数が所定の閾値未満である場合に、データ参照を要求されたデータの信頼度が高いと判断する。これは、対向するスレーブＤＢサーバ３０でも、このレコードＩＤのデータが更新されている可能性が低く、マスタＤＢ２１のデータと、スレーブＤＢ３１のデータとが一致する可能性が高いと考えられるためである。
【００５０】
整合部２５７は、ネットワーク障害が回復した場合、スレーブＤＢサーバ３０が保持するデータとマスタＤＢ２１が保持するデータとについて、レコード単位でデータの一致度を確認する。整合部２５７は、一致度を確認したデータ間に差分がある場合には、履歴情報を基に正しいデータを判断し、差分レプリケーションにより、スレーブＤＢサーバ３０との間でこのデータの整合を行う。例えば、整合部２５７は、スレーブＤＢサーバ３０が保持するデータとマスタＤＢ２１が有するデータとのうち、判断対象のレコードについてタイムスタンプが新しいデータが正しいデータであると判断する。
【００５１】
具体的に、図５を参照して、整合部２５７の整合処理について説明する。図５は、図３に示す整合部２５７の整合処理を説明する図である。図５では、ネットワーク障害回復時において、マスタＤＢ２１が有するデータをテーブルＴ１´とし、スレーブＤＢ３１が保持するデータをテーブルＴ２´とする。そして、整合部２５７が、例えば、レコードＩＤ「２」について整合処理を行う場合について説明する。
【００５２】
図５に示すように、整合部２５７は、テーブルＴ１´のレコードＩＤ「２」のデータと、テーブルＴ２´のレコードＩＤ「２」のデータとを比較する（図５の（１）参照）。この場合、テーブルＴ１´のセルＣ１１のデータは、転送番号「090-9999-0000」である。これに対し、テーブルＴ２´のセルＣ２１のデータは、転送番号「090-7777-8888」である。したがって、テーブルＴ１´とテーブルＴ２´との間で、レコードＩＤ「２」のデータが異なる（図５の（２）参照）。
【００５３】
そこで、整合部２５７は、履歴情報を基に、レコードＩＤ「２」については、テーブルＴ１´及びテーブルＴ２´のいずれが正しいデータであるかを判断する。まず、整合部２５７は、レコードＩＤ「２」についての、テーブルＴ１´とテーブルＴ２´の各タイムスタンプを比較する（図５の(３)参照）。
【００５４】
そして、整合部２５７は、レコードＩＤ「２」について、タイムスタンプが新しいデータが正しいデータであると判断する。図５の例では、レコードＩＤ「２」におけるテーブルＴ２´のタイムスタンプは、「03/17  12：34：56」（セルＣ２２参照）である。一方、レコードＩＤ「２」におけるテーブルＴ１´のタイムスタンプは、「03/17  12：35：10」（セルＣ１２参照）であり、テーブルＴ１´の方が新しいデータであることが分かる。このため、整合部２５７は、図５の例では、レコードＩＤ「２」については、タイムスタンプが新しいテーブルＴ１´を正しいデータとして判断する（図５の（４）参照）。このように、整合部２５７は、レコード単位で履歴情報を基に正しいデータを判断した後、差分レプリケーションにより、スレーブＤＢサーバ３０との間でデータの整合を行う。
【００５５】
［スレーブＤＢサーバの構成］
次に、スレーブＤＢサーバ３０の構成について説明する。図６は、スレーブＤＢサーバ３０の構成を例示する模式図である。スレーブＤＢサーバ３０は、ワークステーションやパソコン等の汎用コンピュータで実現され、図６に示すように、スレーブＤＢ３１と、入力部３２と、出力部３３と、通信制御部３４と、制御部３５とを備える。なお、スレーブＤＢサーバ３０とマスタＤＢサーバ２０とは、例えば同様のサーバ装置であり、スレーブＤＢサーバ３０とマスタＤＢサーバ２０との間で、マスタ、スレーブの機能の切り替えも可能である。
【００５６】
スレーブＤＢ３１は、マスタＤＢ２１に記憶されるサービス情報を複製した冗長化情報を記憶する。入力部３２は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部３５に対して処理開始などの各種指示情報を入力する。出力部３３は、液晶ディスプレイなどの表示装置、プリンタ等の印刷装置、情報通信装置等によって実現される。
【００５７】
通信制御部３４は、ＮＩＣ等で実現され、ＬＡＮやインターネットなどの電気通信回線を介したマスタＤＢサーバ２０やサービス提供装置１０等の外部の装置と制御部３５との通信を制御する。
【００５８】
制御部３５は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部３５は、ＣＰＵやＭＰＵなどの電子回路である。制御部３５は、図６に例示するように、参照データ管理部３５１、データ更新部３５２及び暫定マスタ制御部２５３を有する。
【００５９】
参照データ管理部３５１は、サービス提供装置１０Ｃ，１０Ｄからデータの参照要求を受信した際、マスタＤＢ２１のデータを該サービス提供装置１０Ｃ，１０Ｄに参照させる。また、参照データ管理部３５１は、マスタ不在時には、サービス提供装置１０Ｃ，１０Ｄからデータの参照要求を受信した際、スレーブＤＢ３１の冗長化情報を該サービス提供装置１０Ｃ，１０Ｄに参照させる。
【００６０】
データ更新部３５２は、マスタＤＢサーバ２０から、同期の指示を受け付けた際、スレーブＤＢ３１のデータを更新する。すなわち、データ更新部３５２は、マスタＤＢサーバ２０から、データが更新されたレコードを受信した際、スレーブＤＢ３１の対応するレコードのデータを、受信したデータに更新する。
【００６１】
暫定マスタ制御部２５３は、マスタＤＢサーバ２０における暫定マスタ制御部２５３と同様に、対向するマスタＤＢサーバ２０との間でネットワーク障害が生じた場合、マスタに暫定的に移行してマスタＤＢサーバ２０とは非同期でスレーブＤＢ３１のデータを更新する。暫定マスタ制御部２５３は、図３に示す暫定マスタ制御部２５３と同様に、マスタ移行部２５４、暫定データ更新部２５５、信頼度通知部２５６及び整合部２５７とを有し、サービス提供装置１０Ｃ，１０Ｄ、及び、スレーブＤＢ３１に応じて処理を実行する。
【００６２】
［平常時の処理］
ここで、平常時の通信システム１の処理について説明する。図７は、平常時の通信システム１の処理の流れの一例を示す図である。
【００６３】
例えば、エリアＢのサービス提供装置１０Ｃがユーザ５Ｅによるデータ更新要求を受け（図７の（１−１）参照）、マスタＤＢサーバ２０にデータ更新要求を送信すると（図７の（２−１）参照）、マスタＤＢサーバ２０は、データを更新する（図７の（３−１）参照）。続いて、マスタＤＢサーバ２０は、更新されたデータをスレーブＤＢサーバ３０に通知して、マスタＤＢ２１とスレーブＤＢ３１とを同期させるレプリケーションを行う（図７の（４−１）参照）。なお、エリアＡのサービス提供装置１０Ａ，１０Ｂ及びエリアＢのサービス提供装置１０Ｄによるデータ更新要求処理についても、同様に実行される。
【００６４】
サービス提供装置１０Ｃが、ユーザ５Ｆによるデータ参照要求を受けた場合（図７の（１−２）参照）、マスタＤＢサーバ２０にデータ参照要求を送信し（図７の（２−２）参照）、マスタＤＢサーバ２０によるデータ参照応答をユーザ５Ｆに送信する。或いは、サービス提供装置１０Ｃは、マスタ不在時には、スレーブＤＢサーバ３０に、データ参照要求を送信し（図７の（２−３）参照）、スレーブＤＢサーバ３０によるデータ参照応答をユーザ５Ｆに送信する。
【００６５】
［ネットワーク障害時の処理］
次に、ネットワーク障害時の通信システム１の処理について説明する。図８は、通信システム１のネットワーク障害時の処理の流れの一例を示す図である。
【００６６】
ネットワーク障害が発生し（図８の（Ａ）参照）、エリアＡとエリアＢとの間で通信が不能となると、マスタＤＢサーバ２０及びスレーブＤＢサ−バ３０は、それぞれ暫定マスタに移行する。すなわち、マスタＤＢサーバ２０は、マスタから暫定マスタに移行し（図８の（１−１）参照）、スレーブＤＢサ−バ３０は、スレーブから暫定マスタに移行する（図８の（１−２）参照）。そして、マスタＤＢサーバ２０及びスレーブＤＢサ−バ３０は、それぞれ閉じたエリアＡ，ＢでのＤＢのデータ更新処理を継続する。
【００６７】
具体的には、エリアＡにおいては、例えば、サービス提供装置１０Ａがユーザ５Ｂによるデータ更新要求を受けると（図８の（２−１）参照）、マスタＤＢサーバ２０にデータ更新要求を送信する（図８の（３−１）参照）。これに応じて、マスタＤＢサーバ２０は、データを更新する（図８の（４−１）参照）。これに対し、エリアＢにおいては、例えば、サービス提供装置１０Ｃがユーザ５Ｅによるデータ更新要求を受けると（図８の（２−２）参照）、スレーブＤＢサーバ３０にデータ更新要求を送信する（図８の（３−２）参照）。これに応じて、スレーブＤＢサーバ３０は、データを更新する（図８の（４−２）参照）。
【００６８】
そこで、図９を参照して、通信システム１のネットワーク障害時のデータ更新処理について説明する。図９は、ネットワーク障害時の通信システム１のデータ更新処理の流れの一例を示す図である。図９には、マスタＤＢ２１のテーブルＴ１´及びスレーブＤＢ３１のテーブルＴ２´も示している。まず、ネットワーク障害が発生し（図９の（Ａ）参照）、エリアＡとエリアＢとの間で通信が不能となると、マスタＤＢサーバ２０及びスレーブＤＢサ−バ３０は、それぞれ暫定マスタに移行する（図９の（１−１）及び（１−２）参照）。
【００６９】
例えば、エリアＢでは、ユーザ５Ｅが、レコードＩＤ「２」の転送番号を「090-3333-4444」から「090-7777-8888」へ更新するデータ更新要求をサービス提供装置１０Ｃに送信する（図９の（２）参照）。これに応じて、サービス提供装置１０Ｃがデータ更新要求をスレーブＤＢサーバ３０に送信する（図９の（３）参照）。この場合、スレーブＤＢサーバ３０は、暫定マスタとして機能するため、スレーブＤＢ３１のデータを、データ更新要求に応じて更新する（図９の（４）参照）。
【００７０】
この結果、スレーブＤＢサーバ３０は、レコードＩＤ「２」転送番号を「090-7777-8888」に変更する（図９のセルＣ２１参照）。そして、スレーブＤＢサーバ３０は、レコードＩＤ「２」のタイムスタンプ欄に、データ更新時間「03/17  12:34:56」を記載する（図９のセルＣ２２参照）。続いて、スレーブＤＢサーバ３０は、レコードＩＤ「２」のデータ更新回数欄のデータ更新回数「14105」を「14106」に更新する（図９のセルＣ２３参照）。これによって、スレーブＤＢ３１のデータは、テーブルＴ２´に更新される。
【００７１】
そして、エリアＡでは、ユーザ５Ｂが、レコードＩＤ「２」の転送番号を「090-3333-4444」から「090-9999-0000」へ更新するデータ更新要求をサービス提供装置１０Ａに送信する（図９の（５）参照）。これに応じて、サービス提供装置１０Ａがデータ更新要求をマスタＤＢサーバ２０に送信する（図９の（６）参照）。この場合、マスタＤＢサーバ２０は、暫定マスタとして機能するため、マスタＤＢ２１のデータを、データ更新要求に応じて更新する（図９の（７）参照）。
【００７２】
この結果、マスタＤＢサーバ２０は、レコードＩＤ「２」転送番号を「090-9999-0000」に変更する（図９のセルＣ１１参照）。そして、マスタＤＢサーバ２０は、レコードＩＤ「２」のタイムスタンプ欄に、データ更新時間「03/17  12:35:10」を記載する（図９のセルＣ１２参照）。続いて、マスタＤＢサーバ２０は、レコードＩＤ「２」のデータ更新回数欄のデータ更新回数「14105」を「14106」に更新する（図９のセルＣ１３参照）。これによって、マスタＤＢ２１のデータは、テーブルＴ１´に更新される。
【００７３】
続いて、図１０を参照して、ネットワーク障害時のデータ参照処理について説明する。図１０は、通信システム１のネットワーク障害時のデータ参照処理の流れの一例を示す図である。なお、図１０では、エリアＢにおけるデータ参照処理を例について説明するが、エリアＡにおいても、同様の処理を行うことによって、データ参照処理を実行する。
【００７４】
図１０に示すように、例えば、エリアＢにおいて、ユーザ５Ｆが、レコードＩＤ「２」のデータ参照要求をサービス提供装置１０Ｃに送信する（図１０の（８）参照）。これに応じて、サービス提供装置１０Ｃが、レコードＩＤ「２」のデータ参照要求をスレーブＤＢサーバ３０に送信する（図１０の（９）参照）。
【００７５】
スレーブＤＢサーバ３０は、このデータ参照要求を受け、スレーブＤＢ３１のテーブルＴ２´から、レコードＩＤ「２」のデータを参照する。さらに、スレーブＤＢサーバ３０は、レコードＩＤ「２」についてのデータの更新回数と閾値（例えば、10）を基に、レコードＩＤ「２」のデータの信頼度を判断する。
【００７６】
テーブルＴ２´では、レコードＩＤ「２」のデータ更新回数は「14106」であり（テーブルＴ２´のセルＣ２３参照）、閾値「10」以上となるため、データの信頼度が低いことが判断できる。このため、スレーブＤＢサーバ３０は、サービス提供装置１０Ｃに、レコードＩＤ「２」の電話番号「050-3333-4444」及び転送番号「090-7777-8888」を応答するとともに、このレコードＩＤ「２」のデータ信頼の信頼度が「低い」ことを通知する（図１０の（１０）参照）。
【００７７】
これに従い、サービス提供装置１０Ｃは、スレーブＤＢサーバ３０によるデータ参照応答と、データ信頼度についての通知をユーザ５Ｆに送信する（図１０の（１１）参照）。この結果、ユーザ５Ｆは、応答データの内容とともに、この応答データの信頼度を認知することができる（図１０の（１２）参照）。言い換えると、ネットワーク障害期間中に参照したデータの信頼度をユーザ側で判別できる。
【００７８】
続いて、図１１を参照して、ネットワーク復旧後のマスタＤＢ２１及びスレーブＤＢ３１のデータに対する整合処理について説明する。図１１は、通信システム１のネットワーク復旧後のデータに対する整合処理の流れの一例を示す図である。
【００７９】
まず、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０の間でネットワークが復旧すると（図１１の（１３）参照）、それぞれが、データの差分をチェックする（図１１の（１４）参照）。この場合、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、マスタＤＢ２１が保持するデータとスレーブＤＢ３１が保持するデータとについて、レコード単位で、データの一致度を確認する。
【００８０】
具体的には、マスタＤＢ２１のテーブルＴ１´とスレーブＤＢ３１のテーブルＴ２´とを、レコードごとに比較する。例えば、レコードＩＤ「２」については、テーブルＴ１´の転送番号が「090-9999-0000」（セルＣ１１参照）であるのに対し、テーブルＴ２´の転送番号は「090-7777-8888」と異なる（セルＣ２１参照）。また、テーブルＴ１´とテーブルＴ２´とにおいて、データ更新回数が同一である。そこで、テーブルＴ１´とテーブルＴ２´とのタイムスタンプを比較する。
【００８１】
図１１の例では、テーブルＴ２´のタイムスタンプが「03/17  12:34:56」（セルＣ２２参照）であるのに対し、テーブルＴ１´のタイムスタンプは「03/17  12:35:10」（セルＣ１２参照）であり、テーブルＴ１´の方が新しい。このため、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、レコードＩＤ「２」については、テーブルＴ１´を正しいデータとして判断する（図１１の（１４）参照）。そして、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、双方で差分レプリケーションを行うことにより、スレーブＤＢサーバ３０との間でデータの整合を行う（図１１の（１５）参照）。その後、マスタＤＢサーバ２０は、暫定マスタからマスタに戻り、スレーブＤＢサーバ３０は、暫定マスタからスレーブに戻る。
【００８２】
［通信システムの処理手順］
次に、図１２を参照して、通信システム１の処理手順について説明する。図１２は、通信システム１の処理手順を示すシーケンス図である。
【００８３】
図１２に示すように、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、ネットワークに障害が発生したことを検知すると（ステップＳ１-１及びステップＳ１−２）、それぞれ暫定マスタに移行する（ステップＳ２-１及びステップＳ２−２）。以降、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、それぞれ閉じたエリアＡ，ＢでのＤＢのデータ更新処理を継続する。
【００８４】
例えば、エリアＡのサービス提供装置１０Ａが、ユーザ５Ｂによるデータ更新要求を受け（ステップＳ３−１）、マスタＤＢサーバ２０にデータ更新要求を送信する（ステップＳ４−１）。マスタＤＢサーバ２０は、データ更新要求があるか否かを判断する（ステップＳ５−１）。マスタＤＢサーバ２０は、データ更新要求があると判断した場合（ステップＳ５−１：Ｙｅｓ）、マスタＤＢ２１のデータを更新する（ステップＳ６−１）。
【００８５】
また、例えば、サービス提供装置１０Ａが、ユーザ５Ａによるデータ参照要求を受け（ステップＳ７−１）、マスタＤＢサーバ２０にデータ参照要求を送信する（ステップＳ８−１）。マスタＤＢサーバ２０は、データ参照要求があるか否かを判断する（ステップＳ９−１）。マスタＤＢサーバ２０は、データ参照要求があると判断した場合（ステップＳ９−１：Ｙｅｓ）、参照を要求されたデータの更新回数が、閾値未満であるか、または、参照を要求されたデータの更新回数が所定の閾値以上であるか、を判断する（ステップＳ１０−１）。
【００８６】
マスタＤＢサーバ２０は、参照を要求されたデータの更新回数が所定の閾値未満であると判断した場合（ステップＳ１０−１：閾値未満）、このデータの信頼度が高いと判断する（ステップＳ１１−１）。一方、マスタＤＢサーバ２０は、参照を要求されたデータの更新回数が所定の閾値以上であると判断した場合（ステップＳ１０−１：閾値以上）、このデータの信頼度が低いと判断する（ステップＳ１２−１）。
【００８７】
そして、マスタＤＢサーバ２０は、サービス提供装置１０Ａに、要求されたデータを応答するとともに、該データの信頼度も通知する（ステップＳ１３−１）。これに応じて、サービス提供装置１０Ａは、マスタＤＢサーバ２０によるデータ参照応答と、データ信頼度についての通知をユーザ５Ａに送信する（ステップＳ１４−１）。
【００８８】
続いて、マスタＤＢサーバ２０は、データ更新要求がないと判断した場合（ステップＳ５−１：Ｎｏ）、データ参照要求がないと判断した場合（ステップＳ９−１：Ｎｏ）、或いは、データ参照応答処理後、ネットワークが復旧したか否かを判断する（ステップＳ１５−１）。マスタＤＢサーバ２０は、ネットワークが復旧していないと判断した場合（ステップＳ１５−１：Ｎｏ）、ステップＳ５−１に戻る。
【００８９】
一方、エリアＢにおいても、スレーブＤＢサーバ３０は、暫定マスタに移行するため、マスタＤＢサーバ２０と同様の処理を行う。すなわち、エリアＢのサービス提供装置１０Ｃがユーザ５Ｅによるデータ更新要求を受け（ステップＳ３−２）、スレーブＤＢサーバ３０にデータ更新要求を送信した場合（ステップＳ４−２）、スレーブＤＢサーバ３０は、データ更新要求があると判断し（ステップＳ５−２：Ｙｅｓ）、スレーブＤＢ３１のデータを更新する（ステップＳ６−２）。
【００９０】
また、例えば、サービス提供装置１０Ｃがユーザ５Ｆによるデータ参照要求を受け（ステップＳ７−２）、スレーブＤＢサーバ３０にデータ参照要求を送信した場合（ステップＳ８−２）、スレーブＤＢサーバ３０は、データ参照要求があると判断し（ステップＳ９−２：Ｙｅｓ）、参照を要求されたデータの更新回数について判断する（ステップＳ１０−２）。
【００９１】
そして、スレーブＤＢサーバ３０は、参照を要求されたデータの更新回数が所定の閾値未満であると判断した場合（ステップＳ１０−２：閾値未満）、このデータの信頼度が高いと判断する（ステップＳ１１−２）。一方、スレーブＤＢサーバ３０は、参照を要求されたデータの更新回数が所定の閾値以上であると判断した場合（ステップＳ１０−２：閾値以上）、このデータの信頼度が低いと判断する（ステップＳ１２−２）。
【００９２】
そして、スレーブＤＢサーバ３０は、サービス提供装置１０Ｃに、要求されたデータを応答するとともに、該データの信頼度も通知し（ステップＳ１３−２）、サービス提供装置１０Ｃは、データ参照応答とデータ信頼度についての通知をユーザ５Ｆに送信する（ステップＳ１４−２）。
【００９３】
続いて、スレーブＤＢサーバ３０は、データ更新要求がないと判断した場合（ステップＳ５−２：Ｎｏ）、データ参照要求がないと判断した場合（ステップＳ９−２：Ｎｏ）、或いは、データ参照応答処理後、ネットワークが復旧したか否かを判断する（ステップＳ１５−２）。スレーブＤＢサーバ３０は、ネットワークが復旧していないと判断した場合（ステップＳ１５−２：Ｎｏ）、ステップＳ５−２に戻る。
【００９４】
そして、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、ネットワークが復旧したと判断した場合（ステップＳ１５−１：Ｙｅｓ、ステップＳ１５−２：Ｙｅｓ）、対向する装置を検出し（ステップＳ１６）、同期を取りながら、整合処理を行う（ステップＳ１７−１、ステップＳ１７−２）。マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、差分レプリケーション（ステップＳ１８）によりデータの整合を行う。
【００９５】
このように、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、差分があるデータのみを双方でレプリケーションする差分レプリケーションを行い、差分があるデータのみを整合するため、全データを整合する場合と比較して整合処理時間を短縮することができる。続いて、マスタＤＢサーバ２０は、暫定マスタからマスタに戻り（ステップＳ１９−１）、スレーブＤＢサーバ３０は、暫定マスタからスレーブに戻る（ステップＳ１９−２）。
【００９６】
［整合処理］
次に、図１２に示す整合処理（ステップＳ１７−１）の処理手順について説明する。図１３は、図１２に示す整合処理の処理手順を示すフローチャートである。
【００９７】
図１３に示すように、マスタＤＢサーバ２０において、整合部２５７は、まず、整合対象となるレコードＩＤの番号「ｎ」を初期化し、ｎ＝１とする（ステップＳ２１）。続いて、整合部２５７は、対向装置のデータと比較する（ステップＳ２２）。具体的には、整合部２５７は、マスタＤＢ２１のレコードＩＤ「ｎ」のデータと、マスタＤＢサーバ２０と対向するスレーブＤＢサーバ３０のスレーブＤＢ３１のレコードＩＤ「ｎ」のデータと、を比較する。
【００９８】
そして、整合部２５７は、マスタＤＢ２１のレコードＩＤ「ｎ」のデータとスレーブＤＢ３１のレコードＩＤ「ｎ」のデータとが同一であるか否かを判断する（ステップＳ２３）。整合部２５７は、比較したレコードＩＤ「ｎ」のデータが同一であると判断した場合（ステップＳ２３：Ｙｅｓ）、レコードＩＤ「ｎ」のデータを維持する（ステップＳ２４）。
【００９９】
一方、整合部２５７は、マスタＤＢ２１のレコードＩＤ「ｎ」のデータとスレーブＤＢ３１のレコードＩＤ「ｎ」のデータとが同一でないと判断した場合（ステップＳ２３：Ｎｏ）、マスタＤＢ２１のレコードＩＤ「ｎ」のタイムスタンプとスレーブＤＢ３１のレコードＩＤ「ｎ」のタイムスタンプとを比較する（ステップＳ２５）。整合部２５７は、タイムスタンプが新しい方を、正しいデータであると判断し（ステップＳ２６）、正しいと判断したデータを、レコード「ｎ」に記録する（ステップＳ２７）。
【０１００】
そして、整合部２５７は、ｎ＝Ｎであるか否かを判断する（ステップＳ２８）。ここで、「Ｎ」は、レコードＩＤの番号「ｎ」の最大値である。整合部２５７は、ｎ＝Ｎでないと判断した場合（ステップＳ２８：Ｎｏ）、次のレコードＩＤについてデータの整合を行うため、ｎ＝ｎ＋１とし（ステップＳ２９）、ステップＳ２２に戻る。これに対し、整合部２５７は、ｎ＝Ｎであると判断した場合（ステップＳ２８：Ｙｅｓ）、整合処理を終了する。なお、スレーブＤＢサーバ３０も、同様の処理手順を行うことによって、整合処理（図１２のステップＳ１７−２）を実行することができる。
【０１０１】
［実施の形態の効果］
このように、本実施の形態では、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、いずれも、ネットワーク障害が生じると、マスタに暫定的に移行する。そして、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、暫定的にマスタに移行された場合には、外部の装置からデータ更新の指示を受け付けた際に、いずれも、対向サーバとは非同期でデータベースのデータを更新する。
【０１０２】
したがって、本実施の形態では、スレーブＤＢサーバ３０にしかアクセスできないエリアＢにおいても、データ更新処理サービスを継続することが可能になる。すなわち、本実施の形態によれば、マスタ／スレーブによる冗長化構成をとっている構成において、ネットワーク障害によるエリア内のデータ更新処理サービスの中断を防止できるため、ネットワーク障害が長期化した場合においても、サービスの提供が可能となる。
【０１０３】
また、本実施の形態では、ネットワーク障害によって暫定マスタに移行したマスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、データの参照要求を受けた場合、このデータの更新回数を基にデータの信頼度を判断し、データとともに、このデータの信頼度についてもユーザに応答する。したがって、本実施の形態によれば、ネットワーク障害期間中に参照したデータの信頼度をユーザ側で判別することができる。
【０１０４】
また、本実施の形態では、ネットワーク復旧後、レコード単位でデータチェックを行う。そして、本実施の形態では、差分がある場合には、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０のどちらが正しいデータを保持しているかを、履歴情報であるタイムスタンプを基に判断して、正しいデータに書き換えている。このため、ネットワーク復旧後、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０が保持するデータに差分があった場合であっても、正しいデータに整合することができる。
【０１０５】
また、本実施の形態では、ネットワーク復旧後、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、差分があるデータのみを双方でレプリケーションする差分レプリケーションを行う。言い換えると、マスタＤＢサーバ２０及びスレーブＤＢサーバ３０は、差分があるデータのみを整合するため、全データを整合する場合と比較して整合処理時間を短縮することができる。すなわち、本実施の形態によれば、ネットワーク障害が長期化した場合においても、サービスの提供が可能となるとともに、サービスの回復を適切かつ短時間で実行することができる。
【０１０６】
［他の実施の形態］
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１０７】
また、本実施の形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１０８】
［プログラム］
図１４は、プログラムが実行されることにより、マスタＤＢサーバ２０或いはスレーブＤＢサーバ３０が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【０１０９】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【０１１０】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、マスタＤＢサーバ２０或いはスレーブＤＢサーバ３０の各処理を規定するプログラムは、コンピュータ１０００により実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、マスタＤＢサーバ２０或いはスレーブＤＢサーバ３０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（Solid  State  Drive）により代替されてもよい。
【０１１１】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【０１１２】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１１３】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【０１１４】
１  通信システム
５Ａ〜５Ｈ  ユーザ
１０，１０Ａ〜１０Ｄ  サービス提供装置
１１  データ参照部
１２  サービス提供部
２０  マスタデータベース（ＤＢ）サーバ
２１  マスタＤＢ
２２，３２  入力部
２３，３３  出力部
２４，３４  通信制御部
２５，３５  制御部
３０  スレーブＤＢサーバ
３１  スレーブＤＢ
２５１、３５２  データ更新部
２５２  更新データ送信部
２５３  暫定マスタ制御部
２５４  マスタ移行部
２５５  暫定データ更新部
２５６  信頼度通知部
２５７  整合部
３５１  参照データ管理部
【図１】
0006611254.tif 000002
【図２】
0006611254.tif 000003
【図３】
0006611254.tif 000004
【図４】
0006611254.tif 000005
【図５】
0006611254.tif 000006
【図６】
0006611254.tif 000007
【図７】
0006611254.tif 000008
【図８】
0006611254.tif 000009
【図９】
0006611254.tif 000010
【図１０】
0006611254.tif 000011
【図１１】
0006611254.tif 000012
【図１２】
0006611254.tif 000013
【図１３】
0006611254.tif 000014
【図１４】
0006611254.tif 000015
【図１５】
0006611254.tif 000016