(57)【要約】      （修正有）【課題】分散データベースにおける負荷を分散する。【解決手段】複数のデータベースサーバと、複数の予備用データベースサーバと、データベースアクセス装置とを備える。複数のデータベースサーバは、対応記憶手段を備える。複数の予備用データベースサーバは、レプリケーション用対応記憶手段を備える。対応記憶手段及びレプリケーション用対応記憶手段は、識別情報と、関連情報と、を対応付けて記憶する。データベースアクセス装置は、端末装置からの更新要求に対して、負荷分散規則に従いデータベースサーバを選択して更新要求を行う。読み出し要求に対して、最新情報を保持するデータベースサーバから読み出す。データベースが更新されると、更新が行われたデータベースサーバと対応付けられたデータベースアクセス装置に対して、更新要求を送信する。【選択図】図１
2013065120.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースサーバと、複数の予備用データベースサーバと、当該複数のデータベースサーバが保持するデータベースにアクセスする複数のデータベースアクセス装置と、を備える複数の負荷分散システムにおいて、
前記複数の負荷分散システムのそれぞれは、
前記複数のデータベースサーバが、
前記負荷分散システムの記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する対応記憶手段を備え、
前記複数のデータベースサーバが備える前記対応記憶手段には同一の前記識別情報が格納され、
前記複数の予備用データベースサーバが、
前記負荷分散システムの記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶するレプリケーション用対応記憶手段と、
前記レプリケーション用対応記憶手段に、前記複数のデータベースの前記対応記憶手段に記憶された前記識別情報と前記関連情報とを非リアルタイムに複製する複製手段と、を備え、
前記データベースアクセス装置が、
前記複数のデータベースサーバから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新対象となるデータベースサーバを選択する選択手段と、
前記選択手段で選択された前記データベースサーバに対して、前記識別と前記対応記憶手段で対応付けられた前記関連情報の更新要求を行う更新要求手段と、
前記更新要求による更新の履歴情報を記憶する履歴記憶手段と、
前記識別情報と、前記更新要求手段が当該識別情報と対応付けられた関連情報について最後に更新要求を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求手段と、
前記複数のデータベースサーバのそれぞれを示すサーバ識別情報と、他方の負荷分散システムに含まれている前記データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する転送先記憶手段と、
前記更新要求手段により更新が行われた前記データベースサーバを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられた前記装置識別情報で示される、前記他方の負荷分散システムの前記データベースアクセス装置に対して、前記更新要求手段が行った前記更新要求を送信するシステム制御手段と、を備える、
負荷分散システム。
【請求項２】
前記データベースアクセス装置が、
前記データベースを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けらる前記装置識別情報で示される、前記データベースアクセス装置が備える前記履歴記憶手段に記憶された前記履歴情報を取得する履歴取得手段をさらに備え、
前記更新要求手段は、前記履歴取得要求手段が取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行う、
請求項１に記載の負荷分散システム。
【請求項３】
前記データベースアクセス装置は、
前記複数のデータベースサーバのうち、いずれか一つが正常に起動しなくなった場合に、正常に起動しなくなったデータベースの複製先の前記予備用データベースサーバを前記選択手段の選択対象に切り替えるとともに、当該予備用データベースサーバに対する更新要求を停止させるサーバ切替手段と、
前記サーバ切替手段で前記予備用データベースサーバが選択対象に切り替えられた後、当該予備用データベースサーバに対する更新要求を示す更新要求情報を一時的に記憶する要求記憶手段と、
前記更新要求手段は、さらに、取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行った後、前記要求記憶手段に記憶されていた前記更新要求情報で示された更新要求を、前記レプリケーション用対応記憶手段に行う、
請求項２に記載の負荷分散システム。
【請求項４】
正常に起動しなくなったデータベースサーバを含む第１の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡していた端末装置を、第２の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡すよう、前記端末装置の接続先を切り替える切替手段を、さらに備える請求項１乃至３のいずれか一つに記載の負荷分散システム。
【請求項５】
記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する複数のデータベースサーバと、前記複数のデータベースサーバと非リアルタイムに同期する複数の予備用データベースサーバと、ネットワークを介して接続されたデータアクセス装置において、
前記複数のデータベースサーバのそれぞれを示すデータベース識別情報を複数記憶するデータベース記憶手段と、
前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報を追加する制御手段と、
前記データベース記憶手段に記憶された複数のデータベース識別情報で示される前記複数のデータベースから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新の対象となるデータベースサーバを選択する選択手段と、
前記選択手段で選択された前記データベースに対して、前記識別情報と前記データベースサーバで対応付けられた前記関連情報の更新要求を行う更新要求手段と、
前記更新要求による更新の履歴情報を記憶する履歴記憶手段と、
前記識別情報と、前記更新要求手段が当該識別情報と対応付けられた関連情報について最後に更新要求を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求手段と、
前記複数のデータベースサーバのそれぞれを示すサーバ識別情報と、他方の負荷分散システムに含まれている前記データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する転送先記憶手段と、
前記更新要求手段により更新が行われた前記データベースサーバを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられた前記装置識別情報で示される、前記他方の負荷分散システムの前記データベースアクセス装置に対して、前記更新要求手段が行った前記更新要求を送信するシステム制御手段と、
を備えるデータアクセス装置。
【請求項６】
前記データベースを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられていた前記装置識別情報で示される、前記データベースアクセス装置が備える前記履歴記憶手段に記憶された前記履歴情報を取得する履歴取得手段を、さらに備え、
前記更新要求手段は、前記履歴取得要求手段が取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行う、
請求項５に記載のデータベースアクセス装置。
【請求項７】
前記複数のデータベースサーバのうち、いずれか一つが正常に起動しなくなった場合に、正常に起動しなくなったデータベースの複製先の前記予備用データベースサーバを前記選択手段の選択対象に切り替えるとともに、当該予備用データベースサーバに対する更新要求を停止させるサーバ切替手段と、
前記サーバ切替手段で前記予備用データベースサーバが選択対象に切り替えられた後、当該予備用データベースサーバに対する更新要求を示す更新要求情報を一時的に記憶する要求記憶手段と、
前記更新要求手段は、さらに、取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行った後、前記要求記憶手段に記憶されていた前記更新要求情報で示された更新要求を、前記レプリケーション用対応記憶手段に行う、
請求項６に記載のデータベースアクセス装置。
【請求項８】
正常に起動しなくなったデータベースサーバを含む第１の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡していた端末装置を、第２の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡すよう、前記端末装置の接続先を切り替える切替手段を、さらに備える請求項５乃至７のいずれか一つに記載のデータベースアクセス装置。
【請求項９】
複数のデータベースサーバ、複数の予備用データベースサーバ、及び当該複数のデータベースサーバが保持しているデータベースにアクセスする複数のデータベースアクセス装置で実行される負荷分散方法であって、
複数のデータベースサーバは、記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する対応記憶手段を備え、
複数の予備用データベースサーバは、前記負荷分散システムの記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶するレプリケーション用対応記憶手段を備え、
前記データベースアクセス装置は、
前記更新要求による更新の履歴情報を記憶する履歴記憶手段と、
前記識別情報と、当該識別情報と対応付けられた関連情報について最後に更新を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記複数のデータベースサーバのそれぞれを示すサーバ識別情報と、他方の負荷分散システムに含まれている前記データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する転送先記憶手段と、を備え、
前記予備用データベースサーバでは、複製手段が、前記レプリケーション用対応記憶手段に、前記複数のデータベースの前記対応記憶手段に記憶された前記識別情報と前記関連情報とを非リアルタイムに複製する複製ステップと、を有し、
前記データベースアクセス装置では、選択手段が、前記複数のデータベースサーバから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新対象となるデータベースサーバを選択する選択ステップと、
更新要求手段が、前記選択ステップで選択された前記データベースサーバに対して、前記識別情報と前記対応記憶手段で対応付けられた前記関連情報の更新要求を行う更新要求ステップと、
読出要求手段が、前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求ステップと、
システム制御手段が、前記更新要求ステップにより更新が行われた前記データベースサーバを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられた前記装置識別情報で示される、前記他方の負荷分散システムの前記データベースアクセス装置に対して、前記更新要求ステップが行った前記更新要求を送信するシステム制御手段と、を有する、
負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、負荷分散システム、データアクセス装置、及び負荷分散方法に関する。
【背景技術】
【０００２】
従来、ネットワーク及びコンピュータ技術の発達と共に、ユーザに対して提供するサービスが大規模になっていく傾向にある。このようなサービスの大規模化に伴い、安定したサービスを提供するために、様々な技術が提案されている。
【０００３】
このサービスの大規模化に伴い、複数台の装置を接続した場合に、ある装置に負荷が集中するという問題が生じる。このような問題を解決するために負荷を分散するための様々な技術が提案されている。
【０００４】
例えば、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）等の技術を用いて、複数のハードディスクでデータを分散管理する技術がある。さらに、データベースにアクセスするためのデータベースアクセスサーバを複数台備え、データベースに対して接続する台数が均等になるよう、データベースアクセスサーバ間の負荷を分散する技術などが提案されている。
【０００５】
さらに、従来技術では、データベースシステムに高いトランザクション負荷がかかる場合、データベースサーバを複数配置して収容するデータを分散配置することで１台あたりのデータベースサーバの負荷を下げる手法がとられることが多い。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２３４３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、データを分散配置する方式では、イベントの発生などを条件にトランザクションに偏りが生じていた。このように、一部のデータベースサーバに負荷が集中することで、データベースの性能低下が生じる、又はデータベースシステムに必要以上のスペックを予め備えておくという問題が生じていた。
【課題を解決するための手段】
【０００８】
実施形態の複数の負荷分散システムは、複数のデータベースサーバと、複数の予備用データベースサーバと、データベースアクセス装置と、を備える。複数のデータベースサーバは、対応記憶手段を備える。複数の予備用データベースサーバは、レプリケーション用対応記憶手段を備える。対応記憶手段及びレプリケーション用対応記憶手段は、識別情報と、関連情報と、を対応付けて記憶する。データベースアクセス装置は、選択手段と、更新要求手段と、履歴記憶手段と、識別情報記憶手段と、読出要求手段と、転送先記憶手段と、システム制御手段と、を備える。選択手段は、データベースサーバを選択する。更新要求手段は、選択されたデータベースサーバに対して更新要求を行う。識別情報記憶手段は、識別情報と、データベース識別情報と、を対応付けて記憶する。読出要求手段は、識別情報と対応記憶手段で対応付けられた関連情報を、識別情報と識別情報記憶手段で対応付けられたデータベース識別情報で識別されるデータベースサーバから読み出す。転送先記憶手段は、データベースサーバを示すサーバ識別情報と、データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する。システム制御手段は、更新が行われたデータベースサーバを示すサーバ識別情報と、転送先記憶手段で対応付けられた装置識別情報で示される、データベースアクセス装置に対して、更新要求を送信する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態にかかる制御システムの構成を示すブロック図である。
【図２】図２は、ネットワーク網の例を示した図である。
【図３】図３は、従来のＤＢシステムにおけるユーザデータの格納手法の例を示した図である。
【図４】図４は、第１の実施形態にかかる制御システムが備える複数のＤＢシステムに対するユーザデータの格納手法の例を示した図である。
【図５】図５は、第１の実施形態にかかる第１のＳＱＬサーバと第２のＳＱＬサーバとのハードウェア構成を示したブロック図である。
【図６】図６は、第１の実施形態にかかる第１のＳＱＬサーバの演算部がプログラムを読み出すことで実現されるソフトウェア構成を示した図である。
【図７】図７は、第１の実施形態にかかる端末対応テーブルのテーブル構造の例を示した図である。
【図８】図８は、第１の実施形態にかかる更新テーブルのテーブル構造の例を示した図である。
【図９】図９は、第１の実施形態にかかるＤＢアクセステーブルのテーブル構造の例を示した図である。
【図１０】図１０は、第１の実施形態にかかる転送先テーブルのテーブル構造を示した図である。
【図１１】図１１は、第１の実施形態にかかる第１のＤＢシステムのハードウェア構成を示した図である。
【図１２】図１２は、第１の実施形態にかかる本体ＤＢのテーブル構造を示した図である。
【図１３】図１３は、第１の実施形態にかかる第１のＭＰサーバのハードウェア構成を示した図である。
【図１４】図１４は、第１の実施形態にかかるＳＱＬサーバにおける、トランザクションを受け付けた場合に行われる処理の手順を示すフローチャートである。
【図１５】図１５は、第１の実施形態にかかる制御システムにおけるバックアップ処理を示したシーケンス図である。
【図１６】図１６は、第１の制御システム１側で行われる処理手順を示したシーケンス図である。
【図１７】図１７は、第２の制御システム２側で行われる処理手順を示したシーケンス図である。
【図１８】図１８は、第１の制御システム１でＤＢサーバが停止した場合の処理手順を示したシーケンス図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１は、第１の実施形態にかかる複数の制御システムの構成を示すブロック図である。図１に示すように、本実施形態は、第１の制御システム１と、第２の制御システム２と、で構成されている。第１の制御システム１及び第２の制御システム２は、ネットワークを介して端末装置１８０＿１〜１８０＿ｋ、及びオペレータ端末１９１や、構成管理装置１９２と接続されている。この第１の制御システム１、及び第２の制御システム２は、外部にある端末装置１８０＿１〜１８０＿ｋからの認証や制御に関わるトランザクションを処理して応答を返すものとする。
【００１１】
端末装置１８０＿１〜１８０＿ｋは、ネットワークを介して接続するＰＣ、電話端末、又は携帯電話端末とする。さらには、他の端末装置と接続するためのＩＰルータ等であってもよい。そして、端末装置１８０＿１〜１８０＿ｋは、第１の制御システム１の第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎ、及び第２の制御システム２の第１のＳＱＬサーバ１５０＿１〜第ｎのＳＱＬサーバ１５０＿ｎ、のうち、接続先としていずれかのアドレスを有する。
【００１２】
本実施形態にかかる端末装置１８０＿１〜端末装置１８０＿ｋは、上述した第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎ及び第２の制御システム２の第１のＳＱＬサーバ１５０＿１〜第ｎのＳＱＬサーバ１５０＿ｎのうち、複数のＳＱＬサーバのアドレスを有し、負荷が分散するよう、いずれか一つのＳＱＬサーバを接続先として選択する。そして、端末装置１８０＿１〜端末装置１８０＿ｋは、選択された接続先に対して、トランザクションを送信する。
【００１３】
オペレータ端末１９１及び構成管理装置１９２は、第１の制御システム１及び第２の制御システム２の保守に用いる。オペレータ端末１９１は、第１の制御システム１及び第２の制御システム２を制御するための端末であり、例えば第１の制御システム１のＤＢシステム１２０＿１〜１２０＿ｍ及び第２の制御システム２のＤＢシステム１７０＿１〜１７０＿ｍのバックアップを行う際にインターフェースとして利用できる。
【００１４】
構成管理装置１９２は、ＤＢシステム１２０＿１〜１２０＿ｍ及びＤＢシステム１７０＿１〜１７０＿ｍの構成を管理する装置であり、これらのＤＢシステムのデータベースを構築したり、データを流し込む際に用いられる。
【００１５】
第１の制御システム１は、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎと、第１のＭＰサーバ１１１と、第２のＭＰサーバ１１２と、Ｌ２ＳＷ１３１と、Ｌ２ＳＷ１３２と、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍと、を備える。
【００１６】
第２の制御システム２は、第１のＳＱＬサーバ１５０＿１〜第ｎのＳＱＬサーバ１５０＿ｎと、第１のＭＰサーバ１６１と、第２のＭＰサーバ１６２と、Ｌ２ＳＷ１８１と、Ｌ２ＳＷ１８２と、第１のＤＢシステム１７０＿１〜第ｍのＤＢシステム１７０＿ｍと、を備える。なお、第２の制御システム２が有する各構成については、第１の制御システム１が有する各構成と同様として説明を省略する。
【００１７】
このように、第２の制御システム２は、第１の制御システム１と同機能をもち、通常は両制御システムが稼動している。これにより、各システムにかかる負担を分散できる。そして、一方の制御システムが障害やメンテナンスで停止した場合には、他方の制御システムが、全トランザクションを処理する。
【００１８】
ところで、大規模で多量なトランザクションに対して即座に応答を返すデータベースシステムでは、応答時間を短くするためにデータ構造を単純化している。すなわち、単一でユニークなキーをデータ毎に対応付けて、当該データの読み出し、更新、及び追加のみですべてのトランザクションを処理するデータベースを構築する。本実施形態にかかる第１の制御システム１では、さらに、構築された第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍにアクセスする際の負荷を分散させることを可能する。当該第１の制御システム１を適用される環境として、以下に示す例が考えられる。
【００１９】
図２は、ネットワーク網の例を示した図である。図２に示すネットワーク網では、ＩＰ網２５０を中心に、小型ＩＴＸ装置２５１＿１、２５１＿２、２５１＿ｌが配置されている。そして、これらの小型ＩＴＸ装置２５１＿１、２５１＿２、２５１＿ｌを介して接続された様々な端末装置の着呼及び発呼を制御する呼制御システム２０１がある。
【００２０】
呼制御システム２０１は、何百、何千万いるユーザについて認証、接続経路を特定し、発信元に対して通知する。このように呼制御システム２０１は、大量の端末装置の管理、着呼及び発呼の信頼性並びに即応性が要求される。このため、負荷を分散することが重要となる。そこで、図１で示す第１の制御システム１を適用することで負荷を分散できる。
【００２１】
また、図１の第１の制御システム１は、呼制御システム２０１以外のシステムについても適用することができる。例えば、図２に示すＰＨＳ網２６０で、ショートメッセージの送受信を管理するショートメッセージサービスシステム２０２についても適用できる。ショートメッセージサービスシステム２０２では、例えば、ＰＨＳ間以外に携帯電話端末に対してもショートメッセージが送信可能になると、負荷が増大すると考えられる。このため、ショートメッセージサービスシステム２０２でも、図１に示すような第１の制御システム１を適用することで負荷を分散できる。
【００２２】
なお、図１に示す第１の制御システム１は、呼制御システム２０１やショートメッセージサービスシステム２０２に制限するものではなく、複数のデータベースを備えるシステムであれば適用できる。図１に戻り、第１の制御システム１内の構成について説明する。
【００２３】
第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、端末装置１８０＿１〜１８０＿ｋからのトランザクションを受け付け、処理に必要なデータベースにアクセスするためのステートメントを発行し、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍにアクセスする。
【００２４】
第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、図１に示すように複数のサーバから構成される。そして、端末装置１８０＿１〜１８０＿ｋからのトランザクションは、各装置に登録されている複数のＳＱＬサーバのアドレスから、１つのＳＱＬサーバを選択して送信されている。これにより、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎにおける、端末装置１８０＿１〜１８０＿ｋからの負荷は分散されている。
【００２５】
第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、端末装置１８０＿１〜１８０＿ｋからのトランザクションを受信すると、トランザクションの要求に含まれるキー情報から、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍに格納されている個別データを検索する。個別データは、端末識別ＩＤに紐づけられた、端末装置又は加入者に関連する情報であり、例えばアクセス回数などの統計情報が含まれている。そして、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、トランザクション処理を行うたびに、当該統計情報を更新する。
【００２６】
このため、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、これら個別データの検索や統計情報の更新するためステートメントを生成し、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍに送信する。
【００２７】
なお、本実施形態では、端末装置１８０＿１〜１８０＿ｋ側で、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎのトランザクションを分散させる例について説明した。しかしながら、端末装置１８０＿１〜１８０＿ｋが、このような機能を有して無くともよい。このような場合、例えば、第１の制御システム１側にロードバランサを配置することでも同様な機能を実現できる。
【００２８】
第１のＭＰサーバ１１１、及び第２のＭＰサーバ１１２は、オペレータ端末１９１からの操作に従って処理を行う。また、第１のＭＰサーバ１１１、及び第２のＭＰサーバ１１２は、構成管理装置１９２からの個別データの追加、変更、又は削除を行うためのデータを受け付ける。
【００２９】
第１のＭＰサーバ１１１、及び第２のＭＰサーバ１１２は、オペレータ端末１９１に対して、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍをメンテナンスする機能を提供する。さらに、第１のＭＰサーバ１１１、及び第２のＭＰサーバ１１２は、大容量のテープドライブを備え、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍが保持しているデータをバックアップする機能を有する。さらに、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍのそれぞれの性能などの統計データを収集し、自装置内に蓄積する機能を有する。
【００３０】
第１のＭＰサーバ１１１、及び第２のＭＰサーバ１１２は、それぞれ一方が運用系、他方が待機系として動作し、どちらか一方が障害になっても機能が失われることはない。
【００３１】
Ｌ２ＳＷ１３１、及びＬ２ＳＷ１３２は、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎ、第１のＭＰサーバ１１１、第２のＭＰサーバ１１２、及び第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍ間を接続するスイッチとする。なお、このようなスイッチに制限するものではなく、データを転送可能にする装置であればよく、例えばＩＰルータ等であってもよい。
【００３２】
第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍは、それぞれ端末装置を識別する端末識別ＩＤと、当該端末に関する個別データとを、対応付けて記憶する記憶装置を備える。個別データには、端末装置毎に個別のデータが含まれている。記憶装置は、一つの装置でなくともよく、例えばＲＡＩＤ１＋０等であってもよい。
【００３３】
第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍが備える記憶装置（ＲＡＩＤ１＋０）には、それぞれ同一の端末識別ＩＤが格納されている。
【００３４】
そして、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍは、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎからデータベースにアクセスするためのステートメントを受信し、データベースに対して、レコードの追加、参照、又は更新を行う。
【００３５】
第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍは、２台１組（第１−１ＤＢサーバ１２１＿１及び第１−２ＤＢサーバ１２２＿１、第２−１ＤＢサーバ１２１＿２及び第２−２ＤＢサーバ１２２＿２、第３−１ＤＢサーバ１２１＿３及び第３−２ＤＢサーバ１２２＿３、第ｍ−１ＤＢサーバ１２１＿ｍ及び第ｍ−２ＤＢサーバ１２２＿ｍ）で構成されている。そして、ＤＢシステムのうち、一方のＤＢサーバが停止した場合、他方のＤＢサーバを用いて運用を継続する。
【００３６】
第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍを選択する機能を備えている。例えば、第１のＤＢシステム１２０＿１を選択した場合、第１−１ＤＢサーバ１２１＿１又は第１−２ＤＢサーバ１２２＿１にアクセスして使用できる。
【００３７】
第１のＤＢシステム１２０＿１が、第１のＳＱＬサーバ１００＿１からデータベースにアクセスするためのステートメントを受信した場合について説明する。この場合、第１のＤＢシステム１２０＿１は、ステートメントが読み出し要求である場合に、第１−１ＤＢサーバ１２１＿１内のデータベースに対して検索を行い、要求元である第１のＳＱＬサーバ１００＿１に検索結果を受け渡す。ステートメントが更新要求である場合に、第１−１ＤＢサーバ１２１＿１内のデータベースを更新する。その際、レプリケーション側の第１−２ＤＢサーバ１２２＿１に対しても更新要求を行う。そして、第１のＤＢシステム１２０＿１が、これらの応答の受信を待ってから、要求元である第１のＳＱＬサーバ１００＿１に更新完了の応答を送信する。このように構成することで、第１−１ＤＢサーバ１２１＿１又は第１−２ＤＢサーバ１２２＿１のいずれかが障害になっても、データの消失が発生することなく第１の制御システム１は、動作を継続できる。
【００３８】
なお、本実施形態にかかる第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍは、２台１組のレプリケーション構成としたが、レプリケーション数が３台以上でも良い。
【００３９】
従来のＤＢシステムについて説明する。図３は、従来のＤＢシステムにおけるユーザデータの格納手法の例を示した図である。図３に示す例では、第１〜第ｍのＤＢシステムで全体的なシステムが構築されているものとする。このような場合に、ユーザデータを、１／ｍ毎に、各ＤＢシステムに振り分けて格納していた。そして、クラスタやＲＡＩＤ等の技術を用いることで、これら第１〜第ｍのＤＢシステムが一個の大規模なＤＢシステムとして動作させることが可能であった。しかしながら、ＤＢシステム毎に格納されたユーザデータは異なるため、例えば第３のＤＢシステムに格納されたユーザデータについて読み込み及び更新が集中した場合に、負荷を分散することができないという問題が生じていた。
【００４０】
図４は、第１の実施形態の第１の制御システム１が備えるＤＢシステム１２０＿１〜１２０＿ｍに対するユーザデータの格納手法の例を示した図である。図４に示す例のように、全ユーザデータを第１〜第ｍのＤＢシステムのそれぞれに対して格納する。そして、最新のデータについては第１〜第ｍのＤＢシステムのうちいずれか一つが保持するようにする。読み出す場合には、最新のユーザデータが格納されたＤＢシステムを参照し、更新を行う場合には、第１〜第ｍのＤＢシステムから一つＤＢシステムを負荷が分散する規則を用いて選択し、選択したＤＢシステムに格納されているユーザデータに対して更新を行う。これにより、更新が各ＤＢシステムに分散することになる。特にデータベースに対してアクセスする際に、負荷は読み出しより更新の方が高いため、当該制御を行うことで負荷を分散することができる。次に当該制御を実現するための各構成について説明する。
【００４１】
図５は、第１のＳＱＬサーバ１００＿１と第２のＳＱＬサーバ１００＿２とのハードウェア構成を示したブロック図である。
【００４２】
第１のＳＱＬサーバ１００＿１は、外部Ｉ／Ｆ５０１と、サーバＩ／Ｆ５０２と、演算部５０３と、メモリ５０４と、記憶装置５０５と、ＤＢ＿Ｉ／Ｆ５０６と、を備える。なお、第２のＳＱＬサーバ１００＿２、並びに図示していない他のＳＱＬサーバも第１のＳＱＬサーバ１００＿１と同様の構成を備えているものとして、説明を省略する。
【００４３】
外部Ｉ／Ｆ５０１は、端末装置１８０＿１〜１８０＿ｋから、認証要求などのトランザクションを受信する。
【００４４】
サーバＩ／Ｆ５０２は、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎとの間で通信を行うインターフェースとする。
【００４５】
演算部５０３は、第１のＳＱＬサーバ１００＿１全体を制御する。演算部５０３は、記憶装置５０５に記憶されたプログラムを読み出して様々な処理を実現する。例えば、演算部５０３は、第１のＳＱＬサーバ１００＿１が受信したトランザクションや他のサーバからの要求を解釈して、処理を行う。
【００４６】
メモリ５０４は、様々なデータを記憶する。例えば、メモリ５０４は、演算部５０３の処理で展開された各種データを記憶する。例えば、メモリ５０４には、第１のＳＱＬサーバ１００＿１が起動した際に、端末対応テーブル５１１、更新テーブル５１２、及びＤＢアクセステーブル５１３、転送先テーブル５１４などが展開される。
【００４７】
記憶装置５０５は、プログラム等と、トランザクションログ記憶部と、を記憶する。そして、記憶装置５０５は、サーバ立ち上げ時に、演算部５０３が使用する。
【００４８】
トランザクションログ記憶部は、更新要求部６０５の更新要求による更新の履歴情報を記憶する。なお、トランザクションログ記憶部は、更新内容を示す情報の他、更新要求の送信元も対応付けて記憶する。例えば、第２の制御システム２の第１のＳＱＬサーバ１５０＿１から同期のためのトランザクション（更新要求）が送られてきた場合、トランザクションログ記憶部は、当該トランザクションによる更新内容を示す情報と、第２の制御システム２の第１のＳＱＬサーバ１５０＿１を示すＳＱＬサーバ識別情報と、を対応付けて記憶する。
【００４９】
なお、当然ながら、第２の制御システム２に含まれるＳＱＬサーバも、第１の制御システム１から同期のために送信されたトランザクションをトランザクションログ記憶部で記憶する。
【００５０】
ＤＢ＿Ｉ／Ｆ５０６は、各種ＤＢサーバとの通信するインターフェースとする。
【００５１】
図６は、第１のＳＱＬサーバ１００＿１の演算部５０３がプログラムを読み出すことで実現されるソフトウェア構成を示した図である。図６に示すように、演算部５０３は、端末要求受付部６０１と、選択部６０２と、読出要求部６０３と、サーバ同期制御部６０４と、更新要求部６０５と、制御部６０６と、システム判定部６０７と、システム同期制御部６０８と、トランザクションログ更新部６０９と、停止検出部６１０と、切替制御部６１１と、ログ取得要求部６１２と、を備える。
【００５２】
端末対応テーブル５１１は、端末装置毎に最新のデータが格納されたＤＢシステムを保持している。端末対応テーブル５１１は、各端末装置からトランザクションを受け付けた場合に、読み出すべき情報が格納されているＤＢシステムを、各端末装置を識別する端末識別ＩＤと対応付けて記憶している。図７は、端末対応テーブル５１１のテーブル構造の例を示した図である。図７に示すように端末対応テーブル５１１は、端末識別ＩＤと、優先制御システムと、ＤＢシステム番号と、データベースと、を対応付けて記憶している。
【００５３】
端末識別ＩＤは、端末装置１８０＿１〜１８０＿ｋを識別するＩＤとする。端末識別ＩＤは、第１の制御システム１及び第２の制御システム２による記憶対象として固有の識別情報とする。この端末識別ＩＤとして、例えば電話番号や加入者を特定するための加入者ＩＤを適用しても良い。
【００５４】
優先制御システムは、端末識別ＩＤで識別される端末装置１８０＿１〜１８０＿ｋが優先的に接続すべき制御システムを識別する情報とする。
【００５５】
ＤＢシステム番号は、当該端末識別ＩＤと対応付けられた最新の個別データが格納されたＤＢシステムを識別する番号とする。最新の個別データとは、最後に更新された個別データを意味する。
【００５６】
データベースは、ＤＢシステム番号で識別されるＤＢシステムに複数のデータベースが含まれている場合に、当該データベースを識別する情報とする。例えば、第１の制御システム１と、第２の制御システム２と、の間のＤＢシステム数が一致していない場合、対応関係を明確にするために、一つのＤＢシステム内に複数のデータベースを作成する必要がある場合もある。このように、ＤＢシステム内に複数のデータベースが格納されている状況があるため、本実施形態では、データベースを識別する情報を、ＤＢシステム番号と共に、端末識別ＩＤと対応付けることとした。このように端末装置毎の最新データが、ＤＢシステム番号及びデータベースを識別する情報と対応付けられている。
【００５７】
更新テーブル５１２は、他のＳＱＬサーバからの更新要求を管理するためのテーブルである。図８は、更新テーブル５１２のテーブル構造の例を示した図である。図８に示すように更新テーブル５１２は、ＳＱＬサーバ識別情報と、コマンドシーケンス番号と、を対応付けて記憶している。
【００５８】
ＳＱＬサーバ識別情報は、各ＳＱＬサーバを識別する情報とする。ＳＱＬサーバを識別する情報として、例えばＩＰアドレスを用いても良い。
【００５９】
コマンドシーケンス番号は、他のＳＱＬサーバ１００＿ｘ（ｘは、２〜ｎのいずれかの数値とする）との間で同期を行うための番号とする。コマンドシーケンス番号は、ＳＱＬサーバ毎にそれぞれ別に割り当てられている。そして、コマンドシーケンス番号は、当該ＳＱＬサーバ１００＿ｘから、更新要求を受け付ける毎に、コマンドシーケンス番号を１増加する。そして、サーバ同期制御部６０４が、他のＳＱＬサーバ１００＿ｘから更新要求と共に受信したコマンドシーケンス番号と、更新テーブル５１２に格納されているコマンドシーケンス番号と、が連続しない場合に、ＳＱＬサーバ１００＿１は、他のＳＱＬサーバ１００＿ｘからの更新要求が欠落したものと見なす。
【００６０】
ＤＢアクセステーブル５１３は、更新先のＤＢシステムを選択するためのテーブルである。図９は、ＤＢアクセステーブル５１３のテーブル構造の例を示した図である。図９に示すように、ＤＢアクセステーブル５１３は、ＤＢシステム識別情報と、アクセス比率と、“ＯＮ／ＯＦＦ”フラグと、を対応づけて記憶している。
【００６１】
ＤＢシステム識別情報は、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍのいずれかを識別する情報とする。ＤＢアクセステーブル５１３にＤＢシステム識別情報が格納されている場合に、ＤＢシステム識別情報で識別されるＤＢシステムが更新の対象となる。
【００６２】
アクセス比率は、ＤＢシステム識別情報で示されたＤＢシステムが更新される割合を示している。本実施形態にかかる第１の制御システム１では、ＳＱＬサーバ１００＿１〜１００＿ｍが更新とするＤＢシステムは、ランダムに選択されるが、選択される比率については、ＤＢアクセステーブル５１３に格納されている。
【００６３】
“ＯＮ／ＯＦＦ”フラグは、更新の対象となるＤＢシステムを切り替えることで、負荷分散をするか否かを切り替えるフラグとする。
【００６４】
当該“ＯＮ／ＯＦＦ”フラグに“ＯＦＦ”が設定されると、最新の個別データが格納されたＤＢシステムの切替が抑止される。最新の個別データが格納されたＤＢシステムの切替を抑止している場合に、データベースマネージメントシステムが備えている通常のバックアップ機能で、各ＤＢサーバのバックアップを取ることが可能となる。
【００６５】
転送先テーブル５１４は、更新要求の転送先を管理するテーブルとする。図１０は、転送先テーブルのテーブル構造を示した図である。図１０に示すように、ＤＢシステムと、転送先ＳＱＬサーバと、を対応付けて記憶している。図１０の例に示すＤＢシステムは、第１の制御システム１内の第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍのいずれか一つを識別する。一方、図１０の例に示す転送先ＳＱＬサーバは、第２の制御システム２内の第１のＳＱＬサーバ１５０＿１〜第ｎのＳＱＬサーバ１５０＿ｍを識別する。
【００６６】
このように、本実施形態では、ＳＱＬサーバの更新要求部６０５が、ＤＢシステムに対して更新要求を行った場合、当該ＤＢシステムと転送先テーブル５１４で対応付けられている、第２の制御システム２のＳＱＬサーバに対して更新要求を送信する。これにより、他の制御システムでも第１の制御システム１と同様の更新が行われる。
【００６７】
端末要求受付部６０１は、端末装置１８０＿１〜１８０＿ｋからのトランザクション要求を受け付ける。そして、端末要求受付部６０１は、必要に応じて、トランザクション要求を行った端末装置１８０＿１〜１８０＿ｋに対して認証処理を行う。
【００６８】
システム判定部６０７は、端末要求受付部６０１が端末装置１８０＿１〜１８０＿ｋからのトランザクション要求を受け付けた場合、端末対応テーブル５１１を参照し、トランザクション要求を行った端末装置と対応付けられている制御システムが、自システム（例えば第１の制御システム１）であるか否かを判定する。自システムであると判定した場合に、自システム内で処理を継続し、選択部６０２による選択が行われる。自システムではないと判定した場合、トランザクション要求を行った端末装置からのトランザクションを、対応付けられている他の制御システム（例えば第２の制御システム２）に転送する。
【００６９】
選択部６０２は、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新対象となるデータベースサーバを選択する。本実施形態では、当該規則の例として、ランダムにデータベースを選択する例について説明する。本実施形態は、ランダムに制限するものではなく、例えば第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍをそれぞれ所定の順番に従って選択しても良い。
【００７０】
選択部６０２は、ＤＢアクセステーブル５１３に記憶された各データベース識別情報と対応付けられたアクセス比率に基づいて、更新対象となるデータベースサーバを選択する。本実施形態にかかる選択部６０２は、トランザクションを受け付ける毎に、アクセス比率にあわせてＤＢシステムを選択する。例えば、ＤＢシステム番号１のアクセス比率が２０％の場合に、１〜１００の数値を取る乱数において、１〜２０が生じた際、選択部６０２は、ＤＢシステム番号１を選択する。
【００７１】
ところで、データ更新を行うＤＢシステムをランダムに選択する方式では、データ更新による負荷は分散されるが、参照が多く行われる場合には負荷が特定のＤＢシステムに集中する可能性がある。そこで、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎにＤＢシステムごとのアクセス回数を計測、又はＤＢシステムの応答時間を測定し、アクセス集中を検出した場合には、アクセスが集中しているＳＱＬサーバのアクセス比率を低くするよう設定を行うことで、即座にＤＢシステムの負荷を均一に近づけることが可能となる。
【００７２】
本実施形態とは異なる例として、ＳＱＬサーバの選択部６０２が、予め定められた選択比率（読み出し元のＤＢシステムを選択する比率）を保持しており、トランザクションを受け付けたとき、更新先のＤＢシステムを、読み出し元のＤＢシステムとするか、全ＤＢシステムからランダムに選択するかを選択しても良い。このように一部のトランザクションについては、個別データの読み出し元のＤＢシステムを、更新対象として選択することで、端末対応テーブル５１１の更新回数を削減できる。さらに、単位時間あたりのトランザクションが高くなった場合でもＳＱＬサーバ間で行われる端末対応テーブル５１１の更新回数を抑制できる。この場合、選択比率に相当する認証処理ではデータの更新負荷が分散されないが、アクセス頻度の高い端末装置の個別データが、徐々に他のＤＢシステムに移動するので、時間経過とともに負荷は均等に分散される。
【００７３】
第１の実施形態に戻り、読出要求部６０３は、端末装置１８０＿１〜１８０＿ｋからのトランザクションに応じて、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍから最新の個別データを読み出す。本実施形態にかかる読出要求部６０３は、要求元の端末装置を識別する端末識別ＩＤと端末対応テーブル５１１で対応付けられたＤＢ識別番号で識別されるＤＢシステムを読み出し先として特定する。そして、読出要求部６０３は、特定されたＤＢシステムで、当該端末識別ＩＤと対応付けられている個別データを読み出す。
【００７４】
このように、最新の更新データは、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０ｍのいずれかに格納されている。そこで、本実施形態にかかる第１のＳＱＬサーバ１００＿１は、端末対応テーブル５１１を参照することで、最新の個別データがどのＤＢシステムに格納されているか認識できるため、当該ＤＢシステムに対してアクセスする。なお、本実施形態では、端末対応テーブル５１１を参照する例について説明したが、最新の個別データが格納されているＤＢシステムの検出手法として、他の手法を用いても良い。
【００７５】
更新要求部６０５は、選択部６０２で選択されたＤＢシステム内のデータベースに対して、データベースアクセスステートメントにより、更新要求を行った端末装置を識別する端末識別ＩＤと対応付けられた個別データの更新要求を行う。また、更新要求部６０５は、該当するレコードが存在しない場合に、データの追加を要求しても良い。
【００７６】
そして、更新要求部６０５は、最新のデータを格納していたＤＢシステムと異なるＤＢシステムに対して更新要求を行った場合、端末対応テーブル５１１に対して、更新要求の送信元を示す端末識別ＩＤと、更新先のＤＢシステム番号と、を対応付けて端末対応テーブル５１１を更新する。これにより、端末対応テーブル５１１は、常に最新の個別データが格納されたＤＢシステムを保持できる。
【００７７】
このように、ランダムに選択したＤＢシステムに対して更新を行うことで、更新処理により発生する負荷を全ＤＢシステムに分散できる。
【００７８】
サーバ同期制御部６０４は、当該第１のＳＱＬサーバ１００＿１が行った更新と、他のＳＱＬサーバ１００＿２〜１００＿ｍが行った更新と、の間の同期を取る。
【００７９】
例えば、更新要求部６０５によりＤＢシステムの更新が行われた場合に、サーバ同期制御部６０４は、更新を行った自装置（第１のＳＱＬサーバ１００＿１）を識別するＳＱＬサーバ識別情報と、シーケンス番号と、更新した端末識別ＩＤと、更新先を示すＤＢシステム番号と、を対応付けて、他のＳＱＬサーバ１００＿２〜１００〜ｎに対して、サーバＩ／Ｆ５０２を介して通知する。
【００８０】
トランザクションログ更新部６０９は、更新要求部６０５が行った更新要求の内容を、更新要求の送信元（例えば端末装置１８０＿１〜１８０＿ｋ、又は第２の制御システム２内の第１のＳＱＬサーバ１５０＿１〜第ｎのＳＱＬサーバ１５０＿ｎ）と対応付けて、トランザクションログ記憶部に更新履歴として追加更新する。
【００８１】
また、サーバ同期制御部６０４は、サーバＩ／Ｆ５０２を介して、他のＳＱＬサーバを識別するＳＱＬサーバ識別情報と、コマンドシーケンス番号と、更新した端末識別ＩＤと、更新先を示すＤＢシステム番号と、を対応付けて受信した場合に、受信した情報（端末識別ＩＤと、更新先を示すＤＢシステム番号と、を対応付けた上）で端末対応テーブル５１７を更新する。さらに、サーバ同期制御部６０４は、受信したコマンドシーケンス番号と、更新テーブル５１２に格納されているコマンドシーケンス番号と、が連続しているか否か判定する。連続している場合には、正常に処理が行われているものとして、更新テーブル５１２のコマンドシーケンス番号を‘１’追加して同期制御を終了する。連続していない場合、サーバ同期制御部６０４は、欠落したコマンドシーケンス番号に関する更新要求の再送信を、当該他のＳＱＬサーバに対して要求する。その後、サーバ同期制御部６０４は、更新テーブル５１２のコマンドシーケンス番号を更新する。
【００８２】
これにより、各ＳＱＬサーバ１００＿１〜１００＿ｎが備える端末対応テーブル５１１は、同期がなされており、常に同一のデータが格納されていることになる。つまり、本実施形態では、同期処理は、迅速に行う必要があるため、更新が適切に行われているか否かを確認している余裕がない。そこで、本実施形態にかかるサーバ同期制御部６０４は、更新テーブル５１２で欠落したコマンドシーケンス番号に関する更新要求について再送信を要求することとした。これにより、各ＳＱＬサーバ１００＿１〜１００＿ｎが備える端末対応テーブル５１１における確実な同期を実現できる。
【００８３】
制御部６０６は、メモリ５０４上の各テーブル（端末対応テーブル５１１、更新テーブル５１２、ＤＢアクセステーブル５１３）に対して、レコードの更新、追加、又は削除を行う。例えば、第１の制御システム１にＤＢシステムが増設された場合に、制御部６０６は、ＤＢアクセステーブル５１３に対して、新たに増設されたＤＢシステムを示すＤＢ識別情報を含むレコードを追加する。
【００８４】
システム同期制御部６０８は、更新要求部６０５の更新要求先のＤＢシステムと、転送先テーブル５１４で対応付けられている転送先ＳＱＬサーバ情報で示される、第２の制御システム２のＳＱＬサーバ（第１のＳＱＬサーバ１５０＿１〜第ｎのＳＱＬサーバ１５０＿ｎのうちいずれか一つ）に対して、更新要求部６０５が行った更新要求を送信する。これにより、制御システム間で同一の更新要求を実現できる。
【００８５】
なお、本実施形態では、更新先のＳＱＬサーバは対応付けられているが、更新先のＳＱＬサーバがどのＤＢシステムに対して更新を行うのかは特に制限しない。しかしながら、ＳＱＬサーバは、自装置が行った更新内容をトランザクションログ記憶部に記憶している。このため、ＤＢシステムに対して行った更新内容を把握したい場合、当該ＤＢシステムと対応付けられている転送先ＳＱＬサーバから取得できる。
【００８６】
停止検出部６１０は、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍ内で動作しているＤＢサーバの停止を検出する。なお、停止検出部６１０が検出するのは，停止のみに制限するものではなく、正常に動作しなくなった状態であれば検出を行うものとする。
【００８７】
切替制御部６１１は、停止検出部６１０により検出された、正常に動作しなくなったデータベースサーバを含む第１の制御システム１のＳＱＬサーバ１００＿１〜１００＿ｍにトランザクションを送信していた端末装置に対して、第２の制御システム２のＳＱＬサーバ１５０＿１〜１５０＿ｍにトランザクションを送信するよう、接続先を切り替える制御を行う。本実施形態にかかる切替制御部６１１は、端末対応テーブル５１１の優先制御システムを、第１の制御システム１から第２の制御システム２に更新することで、接続先を切り替える。
【００８８】
さらに、停止検出部６１０によりＤＢサーバ（例えば第１−１ＤＢサーバ１２１＿１）が停止していることが検出された場合に、切替制御部６１１は、正常に起動しなくなったＤＢサーバと同期を行っていたＤＢサーバ（例えば第１−１ＤＢサーバ１２２＿１）を、選択部６０２の選択対象に切り替える。ただし、切り替えられたＤＢサーバ（例えば第１−１ＤＢサーバ１２２＿１）は、正常に起動しなくなったＤＢサーバ（例えば第１−１ＤＢサーバ１２１＿１）との間では、リアルタイムなレプリケーションは行われていない。そこで、切替制御部６１１は、ＤＢサーバ（例えば第１−１ＤＢサーバ１２２＿１）を切り替えた後、同期を行うまで、切り替えられたＤＢサーバへの更新要求を一時的に停止する。
【００８９】
ところで、本実施形態では、ＤＢサーバ間でリアルタイムなレプリケーションを行わないこととしている。これは、リアルタイムなレプリケーションを行わないことで、各ＤＢサーバの処理負担を軽減すると共に、予備のＤＢサーバの書き込み回数が軽減できるため、寿命を延ばすことが可能なためである。
【００９０】
しかしながら、リアルタイムにレプリケーションを行っていない以上、ＤＢサーバが故障した場合に、即座に切り替えることはできない。前回同期を行ってから故障するまでの間に行われた更新内容を取得し、取得した更新内容で、切り替えられたＤＢサーバを更新する必要がある。従来はこの更新履歴を別途保持しておく必要があったが、本実施形態では、２つの制御システムによる冗長構成を備えている。そこで、ＤＢサーバを更新するための内容を、他方の制御システムから取得することとした。これにより、更新履歴を別途保持せずとも、更新が可能となった。
【００９１】
そして、ＤＢサーバが切り替えられた後、同期を行うまでの間、当該ＤＢサーバに対する更新要求は、ＳＱＬサーバの記憶装置５０５に一時的に記憶される。
【００９２】
ログ取得要求部６１２は、転送先テーブル５１４を参照し、正常に動作しないＤＢサーバを含むＤＢシステムを識別する情報と、対応付けられていた、第２の制御システム２のＳＱＬサーバに対して、トランザクションログの取得要求を行う。これにより、ログ取得要求部６１２は、当該ＳＱＬサーバから、トランザクションログを取得する。
【００９３】
そして、更新要求部６０５は、取得したトランザクションログに格納されている更新内容で、切り替えた後のＤＢサーバに対して更新要求を行う。さらに、更新要求部６０５は、記憶装置５０５に一時的に記憶していた更新要求を、切り替えた後のＤＢサーバに対して行う。これより、同期が完了したので、端末装置１８０＿１〜１８０＿ｋからの複製先のＤＢサーバへの更新要求を開始する。
【００９４】
次に、ＤＢシステムについて説明する。図１１は、第１のＤＢシステム１２０＿１のハードウェア構成を示した図である。第１―１ＤＢサーバ１２１＿１と、第１−２ＤＢサーバ１２２＿１と、は、同一の構成を備えている。第１のＤＢシステム１２０＿１は、第１―１ＤＢサーバ１２１＿１及び第１−２ＤＢサーバ１２２＿１の２台のサーバで構成される。
【００９５】
図１１に示すように、第１―１ＤＢサーバ１２１＿１は、ＳＱＬ＿Ｉ／Ｆ１００１と、演算部１００２と、メモリ１００３と、記憶装置１００４と、ＤＢ＿Ｉ／Ｆ１００５と、を備えている。
【００９６】
ＳＱＬ＿Ｉ／Ｆ１００１は、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎからのデータベースにアクセスするためのステートメントを受信する。
【００９７】
ＤＢ＿Ｉ／Ｆ１００５は、２台のＤＢサーバ間で、データベースのレプリケーション同期を行うためのインターフェースとする。
【００９８】
演算部１００２は、レプリケーション制御部１０２１を備え、データベースにアクセスするためのステートメントを受信した場合に処理を行う。
【００９９】
レプリケーション制御部１０２１は、第１−２ＤＢサーバ１２２−１の記憶装置１００４と、第１−１ＤＢサーバ１２１−１の記憶装置１００４と、の間の同期制御を行う。
【０１００】
メモリ１００３は、各種データを記憶する。本実施形態にかかるメモリ１００３には、データベースキャッシュなどが展開される。
【０１０１】
記憶装置１００４は、データを格納する。本実施形態にかかる記憶装置１００４は、ＲＡＩＤ１＋０で構築されている。本実施形態では、ＲＡＩＤ１＋０により、１つのデータベースに対して、物理的に複数のディスクドライブを横断的に使用することとした。これにより、個々のディスクドライブの負荷を分散できる。さらに、記憶装置１００４は、格納対象となるデータベースを、複数のデータベースに分割して管理する。そして、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、複数のＤＢシステムが存在するのと同様の態様で、データの参照、更新、追加を行う。これにより、特定のディスクドライブにアクセスが偏ることを抑止できる。
【０１０２】
記憶装置１００４内の個々のデータベースには、トランザクションログ記憶部１０１１と、本体ＤＢ１０１２と、を備えている。そして、トランザクションログ記憶部１０１１に記憶された、高速書き込み可能なトランザクションログを用いることで、第１−１ＤＢサーバ１２１＿１と、第１−２ＤＢサーバ１２２＿１との間のレプリケーション同期が可能となる。
【０１０３】
また、記憶装置１００４内の個々のデータベースはロールフォワード機能を有している。これにより、データテーブルが更新されていない状態で障害が発生しても、復旧後にトランザクションログからテータテーブルを復旧できる。したがって、耐障害性を確保したまま高速処理が可能となる。
【０１０４】
図１２は、本体ＤＢ１０１２のテーブル構造を示した図である。図１２に示す例では、本体ＤＢが、端末識別ＩＤと、端末関連情報と、統計情報と、を対応付けて記憶している。
【０１０５】
端末関連情報は、端末に関連する情報で、更新頻度が低い普遍的な情報とする。端末関連情報としては、例えば、端末装置を所有しているユーザの名称、住所等のほか、端末装置の機種等とする。端末関連情報は、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍの全てに同一のデータが登録されている。
【０１０６】
統計情報は、端末装置が第１の制御システム１にアクセスする度に更新されるトランジェントな情報とする。この統計情報としては、図１２に示す例では、発呼又は着呼の回数などがある。統計情報は、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍのうちいずれか一つに最新のデータが登録されている。
【０１０７】
第１―２ＤＢサーバ１２２＿１のレプリケーション制御部１０２１は、第１―１ＤＢサーバ１２１＿１のレプリケーション制御部１０２１と協同し、第１−２ＤＢサーバ１２２−１の記憶装置１００４に、第１−１ＤＢサーバ１２１−１の記憶装置１００４に記憶された本体ＤＢ１０１２及びトランザクションログ記憶部１０１１を非リアルタイムに複製する。本実施形態では、所定の時間毎に複製を行うこととする。
【０１０８】
次にＭＰサーバ１１１、１１２について説明する。図１３は、第１のＭＰサーバ１１１のハードウェア構成を示す図である。図１３に示すように第１のＭＰサーバ１１１は、オペレータＩ／Ｆ１１０１と、外部Ｉ／Ｆ１１０２と、演算部１１０３と、メモリ１１０４と、ＨＤＤ１１０５と、テープドライブ１１０６と、内部Ｉ／Ｆ１１０７と、を備える。なお、第２のＭＰサーバ１１２は、第１のＭＰサーバ１１１と同様の構成を備えているものとして説明を省略する。
【０１０９】
第１のＭＰサーバ１１１及び第２のＭＰサーバ１１２のうち、いずれか１台が起動中で、他の１台は停止中とする。そして、１台が故障等で起動しなくなった場合、他の１台が起動する。
【０１１０】
オペレータＩ／Ｆ１１０１は、オペレータ端末１９１と通信を行うインターフェースとする。外部Ｉ／Ｆ１１０２は、構成データ管理サーバと通信を行うインターフェースとする。
【０１１１】
内部Ｉ／Ｆ１１０７は、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎ、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍ、及び第２のＭＰサーバ１１２と通信するインターフェースとする。
【０１１２】
メモリ１１０４は、演算部１１０３の作業領域、又はバックアップする際の作業領域として用いられる。
【０１１３】
演算部１１０３は、第１のＭＰサーバ１１１全体を制御する。そして、演算部１１０３は、ＨＤＤ１１０５に記憶されているプログラムを実行することで、第１の制御システム１の保守を行うための機能を実現する。例えば、演算部１１０３は、オペレータ端末１９１からの指示に従って処理したり、構成管理装置１９２からのデータを処理する。
【０１１４】
また、演算部１１０３は、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍの各ＤＢサーバ内の本体ＤＢ１０１２に対応付けて記憶された端末識別ＩＤと、個別データと、対応付けてＨＤＤ１１０５やテープドライブ１１０６にバックアップする。
【０１１５】
第１のＭＰサーバ１１１及び第２のＭＰサーバ１１２は、構成管理装置１９２から受信したデータに基づいて、ＤＢシステム内のＤＢサーバのデータを追加、更新する。このため、第１のＭＰサーバ１１１及び第２のＭＰサーバ１１２は、ＳＱＬサーバと同様に、メモリ１１０４上に、端末対応テーブル５１１、更新テーブル５１２、及びＤＢアクセステーブル５１３を保持している。
【０１１６】
ＨＤＤ１１０５は、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎ、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍ、及び第１のＭＰサーバ１１１自身の統計データを記憶する。
【０１１７】
テープドライブ１１０６は、ＨＤＤ１１０５に記憶された各種データを読み出して、バックアップを行う。なお、演算部１１０３は、テープドライブ１１０６にデータをバックアップする前に当該データに対して、暗号化処理を施しておく。
【０１１８】
そして、第１のＭＰサーバ１１１又は第２のＭＰサーバ１１２が、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍに対してバックアップを行う際に、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、選択部６０２による、更新対象となるＤＢシステムの選択を一時的に停止する。これにより、第１のＭＰサーバ１１１又は第２のＭＰサーバ１１２が、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍに保持されているデータのバックアップを行う際、最新のデータがどのＤＢサーバに格納されているかを示すデータと、実際にＤＢサーバに格納されているデータと、の整合を保持した状態でバックアップできる。
【０１１９】
次に端末装置からのトランザクションを受け付けた場合に行われるＳＱＬサーバの処理について説明する。図１４は、本実施形態にかかるＳＱＬサーバにおける上述した処理の手順を示すフローチャートである。図１４に示す例では、第１のＳＱＬサーバ１００＿１を用いて説明するが、どのＳＱＬサーバも同じ処理を行うものとする。なお、端末装置１８０＿１〜１８０＿ｋは、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎのＩＰアドレスを保持しており、認証時などにラウンドロビン方式で１つのＳＱＬサーバを選択してトランザクションを送信する。これにより、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎのトランザクション処理負荷は、均一化される。なお、本フローチャートでは、第１のＳＱＬサーバ１００＿１が処理を行う例について説明する。
【０１２０】
まず、端末要求受付部６０１は、端末装置（例えば端末装置１８０＿１）から、トランザクションを受信する（ステップＳ１３０１）。次に、端末要求受付部６０１は、トランザクションを送信してきた端末装置１８０＿１の認証を行う（ステップＳ１３０２）。
【０１２１】
認証が適切に行われた場合、第１のＳＱＬサーバ１００＿１の端末要求受付部６０１は、自装置内の端末対応テーブル５１１を参照し、トランザクションの送信元を識別する端末識別ＩＤと対応付けられているＤＢシステム番号を読み出す（ステップＳ１３０３）。
【０１２２】
そして、読出要求部６０３は、読み出したＤＢシステム番号で識別されるＤＢシステム（例えば第１のＤＢシステム１２０＿１）から、当該端末識別ＩＤと対応付けられている個別データを読み出すとともに、当該個別データの読み出しをロックする（ステップＳ１３０４）。
【０１２３】
その後、選択部６０２が、更新要求を受け付ける毎に、乱数を用いて、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍから、更新先となるＤＢシステムを１つランダムに選択する（ステップＳ１３０５）。
【０１２４】
そして、更新要求部６０５は、選択されたＤＢシステムに対して、トランザクションの送信元を識別する端末識別ＩＤと対応付けられた個別データを更新する（ステップＳ１３０６）。
【０１２５】
次に、更新要求部６０５は、個別データを更新したＤＢシステムと、個別データを読み出したＤＢシステムと、が同一であるか否かを判定する（ステップＳ１３０７）。同一であると判定した場合（ステップＳ１３０７：Ｙｅｓ）、ステップＳ１３１０に進む。
【０１２６】
一方、更新要求部６０５が同一でないと判定した場合（ステップＳ１３０７：Ｎｏ）、端末対応テーブル５１１に対して、トランザクションの送信元を識別する端末識別ＩＤと、更新したＤＢシステムを識別するＤＢシステム番号と、を対応付けて更新する（ステップＳ１３０８）。
【０１２７】
さらに、サーバ同期制御部６０４が、更新した端末識別ＩＤと、ＤＢシステム番号と、を対応付けて、他のＳＱＬサーバ及びＭＰサーバに対して通知する（ステップＳ１３０９）。これにより、他のＳＱＬサーバ及びＭＰサーバが備える端末対応テーブル５１１が、更新される。
【０１２８】
その後、端末要求受付部６０１は、読み出しを禁止していた個別データのロックを解除して、トランザクション送信元の端末装置に応答を返す（ステップＳ１３１０）。これにより、一連のトランザクション処理を終了する。
【０１２９】
次に、第１の制御システム１で行われるバックアップ処理について説明する。図１５は、本実施形態にかかる第１の制御システム１における上述した処理を示したシーケンス図である。本シーケンス図は、第１のＭＰサーバ１１１がバックアップする例とする。
【０１３０】
まず、第１のＭＰサーバ１１１が、第１の制御システム１内の、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎに対して、ＤＢアクセステーブル５１３内の“ＯＮ／ＯＦＦ”フラグを、“ＯＦＦ”にするよう要求する（ステップＳ１４０１）。
【０１３１】
これに伴い、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、ＤＢアクセステーブル５１３内の“ＯＮ／ＯＦＦ”フラグを、“ＯＦＦ”に更新する（ステップＳ１４０２）。そして、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、更新した旨（ＯＫ）を、第１のＭＰサーバ１１１に通知する（ステップＳ１４０３）。
【０１３２】
これにより、最新のデータが格納されるＤＢサーバの切替が止められたので、第１のＭＰサーバ１１１は、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍに対してバックアップを要求する（ステップＳ１４０４）。その後、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍは、記憶装置１００４内のデータベースからデータを読み出す（ステップＳ１４０５）。そして、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍは、読み出したデータを、第１のＭＰサーバ１１１に転送する（ステップＳ１４０６）。なお、バックアップの手順は、従来と同様の手順を用いればよい。
【０１３３】
そして、第１のＭＰサーバ１１１は、転送されてきたデータを、ＨＤＤ１１０５に蓄積する（ステップＳ１４０７）。
【０１３４】
全てのデータの転送が終了した後、第１のＭＰサーバ１１１は、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎに対して、ＤＢアクセステーブル５１３内の“ＯＮ／ＯＦＦ”フラグを、“ＯＮ”にするよう要求する（ステップＳ１４０８）。
【０１３５】
これに伴い、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、ＤＢアクセステーブル５１３内の“ＯＮ／ＯＦＦ”フラグを、“ＯＮ”に更新する（ステップＳ１４０９）。そして、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎは、更新した旨（ＯＫ）を、第１のＭＰサーバ１１１に通知する（ステップＳ１４１０）。
【０１３６】
その後、第１のＭＰサーバ１１１内の、演算部１１０３が、ＨＤＤ１１０５に格納されているデータに対して、暗号化処理を施す（ステップＳ１４１１）。その後、演算部１１０３は、暗号化処理が施された後のデータを、テープドライブ１１０６に格納する（ステップＳ１４１２）。
【０１３７】
上述した処理手順によりバックアップが行われる。このバックアップの際、上述した処理手順を行うことで、第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎが保持する最新のデータがどのＤＢサーバに格納されているかを示すデータと、ＤＢサーバに格納されているデータと、を間の整合をとることができる。
【０１３８】
第１の制御システム１側で行われる処理手順について説明する。図１６は、第１の制御システム１側で行われる処理手順を示したシーケンス図である。
【０１３９】
まず、端末装置１８０＿１は、ＳＱＬサーバ１００＿１〜１００＿ｎの全て又は一部のIPアドレスを有している。そして、端末装置１８０＿１は、各ＳＱＬサーバのトランザクション処理負荷が均等になるようにラウンドロビン方式で１つのＳＱＬサーバを選択する（ステップＳ１５０１）。なお、図１６に示すシーケンスでは、第１のＳＱＬサーバ１００＿１が選択されたものとする。
【０１４０】
そして、端末装置１８０＿１は、選択された第１のＳＱＬサーバ１００＿１に対して、トランザクション要求を送信する（ステップＳ１５０２)。
【０１４１】
次に、第１のＳＱＬサーバ１００＿１が、トランザクションを受信した場合、自サーバ内の端末対応テーブル５１１を参照し、トランザクションの送信元を示す端末識別ＩＤと対応付けられている優先制御システム、ＤＢシステム番号、及びデータベースを識別する情報（データベース番号）を取得する。そして、システム判定部６０７が、優先制御システムが第１の制御システム１であるか否かを判定する（ステップＳ１５０３）。第１の制御システム１ではないと判定した場合（ステップＳ１５０３：Ｎｏ）、図１７で示した処理手順の処理を行う。
【０１４２】
一方、システム判定部６０７が、優先制御システムが第１の制御システム１であると判定した場合（ステップＳ１５０３：Ｙｅｓ）、選択部６０２が、更新要求の出力先として、第１のＤＢシステム１２０＿１〜第ｍのＤＢシステム１２０＿ｍのうち、いずれか一つのＤＢシステムのＤＢサーバを選択する（ステップＳ１５０４）。
【０１４３】
さらに、読出要求部６０３が、取得したＤＢシステム番号、及びデータベース番号で識別されるＤＢサーバがアクセス可能か否かを判定する（ステップＳ１５０５）。アクセスできないと判定した場合（ステップＳ１５０５：Ｎｏ）、図１７で示した処理手順の処理を行う。
【０１４４】
読出要求部６０３がアクセス可能と判定した場合（ステップＳ１５０５：Ｙｅｓ）、データにアクセスするためのステートメントを送信し（ステップＳ１５０６）、取得したＤＢシステム番号及びデータベース番号で示される第１−１ＤＢサーバ１２１＿１から、データを参照する（ステップＳ１５０７）。そして、第１−１ＤＢサーバ１２１＿１は、当該参照結果を応答として返す（ステップＳ１５０８）。
【０１４５】
このステップＳ１５０６〜Ｓ１５０８の処理は、トランザクションの数に応じて繰り返す。例えば、更新要求を示すトランザクションを受信していた場合、更新要求部６０５が、更新のため、データにアクセスするためのステートメントを送信する（ステップＳ１５０６）。そして、第１−１ＤＢサーバ１２１＿１は、データの更新を行い（ステップＳ１５０７）、当該更新が適切に行われた旨を応答として返す（ステップＳ１５０８）。なお、更新を行う際に、トランザクションログ更新部６０９は、当該更新をトランザクションログとして、第１のＳＱＬサーバ１００＿１の記憶装置５０５のトランザクションログ記憶部１０１１に記憶する。
【０１４６】
そして、第１のＳＱＬサーバ１００＿１は、端末装置１８０＿１に対してトランザクション応答を送信する（ステップＳ１５０９）。
【０１４７】
その後、第１のＳＱＬサーバ１００＿１は、更新を行った第１の制御システム１の第１のＤＢシステム１２０＿１と、転送先テーブル５１４で対応付けられている第２の制御システム２の第１のＳＱＬサーバ１５０＿１に対して、図１７に示す処理手順で、第１の制御システムと第２の制御システム２との間のＤＢ同期のための制御を行うことになる（ステップＳ１５１０）。
【０１４８】
次に、第２の制御システム２側で行われる処理手順について説明する。図１７は、第２の制御システム２側で行われる処理手順を示したシーケンス図である。
【０１４９】
まず、第１の制御システム１のシステム同期制御部６０８が、第２の制御システム２の第１のＳＱＬサーバ１５０＿１に対して、トランザクション要求（転送）又はＤＢ同期要求を送信する（ステップＳ１６０１）。
【０１５０】
これに伴い、第１のＳＱＬサーバ１５０＿１のトランザクションログ更新部６０９は、トランザクション要求（転送）又はＤＢ同期要求に含まれる更新内容を、記憶装置５０５のトランザクションログ記憶部５０５に保存する（ステップＳ１６０２）。
【０１５１】
次に第１のＳＱＬサーバ１５０＿１の選択部６０２が、更新先のＤＢシステムと、当該ＤＢシステムに含むＤＢサーバと、を選択する（ステップＳ１６０３）。この際、端末対応テーブル５１１よりアクセス先として、レプリケーション用のＤＢサーバである、第１−２ＤＢサーバ１７２＿１が選択されたものとする。
【０１５２】
その後、更新要求部６０５が、更新のため、データにアクセスするためのステートメントを送信する（ステップＳ１６０４）。そして、第１−２ＤＢサーバ１７２＿１は、当該ステートメントに従ってデータの更新を行う（ステップＳ１６０５）。その後、第１−２ＤＢサーバ１７２＿１は、当該更新が適切に行われた旨を応答として返す（ステップＳ１６０６）。
【０１５３】
そして、第１のＳＱＬサーバ１５０＿１は、第１の制御システム１のＳＱＬサーバ１００＿１に対してトランザクション応答を送信する（ステップＳ１６０７）。
【０１５４】
そして、システム同期制御部６０８が、ステップＳ１６０５で行われた更新が、第１の制御システム１からの同期要求であるか否かを判定する（ステップＳ１６０８）。同期要求であると判定した場合（ステップＳ１６０８：Ｙｅｓ）、すでに第１の制御システム１で更新は行われているため、処理を終了する。
【０１５５】
一方、システム同期制御部６０８が、同期要求ではないと判定した場合（ステップＳ１６０８：Ｎｏ）、第１の制御システム１に対してＤＢ同期要求を送信する（ステップＳ１６０９）。
【０１５６】
次にＤＢサーバが停止した場合に行われる処理手順について説明する。図１８は、第１の制御システム１でＤＢサーバが停止した場合の処理手順を示したシーケンス図である。
【０１５７】
まず、第１−１ＤＢサーバ１２１＿１が停止したものとする（ステップＳ１７０１）。次に、第１のＳＱＬサーバ１００＿１の停止検出部６１０が、第１−１ＤＢサーバ１２１＿１の停止を検出する（ステップＳ１７０２）。
【０１５８】
その後、切替制御部６１１が、第２の制御システム２からの第１−２ＤＢサーバ１２２＿１へのトランザクションを保留し、受信したトランザクションを記憶装置５０５内に一時的に記憶する（ステップＳ１７０３）。
【０１５９】
そして、参照、追加、又は更新先となるＤＢサーバが、第１−１ＤＢサーバ１２１＿１から、第１−２ＤＢサーバ１２２＿１に切り替わる（ステップＳ１７０４）。
【０１６０】
その後、切替制御部６１１は、端末対応テーブル５１１で、優先制御システムが第１の制御システム１に設定されている場合、当該第１の制御システム１を第２の制御システム２に変更する（ステップＳ１７０５）。
【０１６１】
次に、ログ取得要求部６１２が、転送先テーブル５１４から、トランザクションの取得先のＳＱＬサーバを選択する（ステップＳ１７０６）。当該選択では、停止したＤＢサーバを含むＤＢシステムと対応付けられているＳＱＬサーバを選択する。本シーケンスでは、第１のＳＱＬサーバ１５０＿１が選択されたものとする。
【０１６２】
そして、ログ取得要求部６１２が、第１のＳＱＬサーバ１５０＿１に対して、トランザクションログの取得要求を送信する（ステップＳ１７０７）。次に、第１のＳＱＬサーバ１５０＿１が、記憶装置５０５のトランザクションログ記憶部１０１１から、送信元の第１のＳＱＬサーバ１００＿１と対応付けられているトランザクションログを読み出す（ステップＳ１７０８）。
【０１６３】
そして、第２の制御システム２の第１のＳＱＬサーバ１５０＿１は、読み出したトランザクションログを添付して、トランザクション取得応答を送信する（ステップＳ１７０９）。
【０１６４】
その後、第１の制御システム１の更新要求部６０５が、第１−２ＤＢサーバ１２２＿１に対して、送信されてきたトランザクションログに基づいて、データにアクセスするためのステートメントを送信すると共に、保留されていたトランザクションに基づくデータにアクセスするためのステートメントを送信する（ステップＳ１７１０）。これにより、第１−２ＤＢサーバ１２２＿１の同期が完了した。
【０１６５】
そして、切替制御部６１１が、トランザクションの保留を解除する（ステップＳ１７１１）。その後、切替制御部６１１が、ステップＳ１７０５で更新された、端末対応テーブル５１１の優先制御システムを元の状態に戻す（ステップＳ１７１２）。
【０１６６】
上述した処理手順を用いることで、トランザクション処理では、これらの一連の処理の最中は、第２の制御システム２で処理される。このため、復旧まである程度時間を要してもサービスへの影響を最小限にとどめることができる。
【０１６７】
さらに、第１の制御システム１のＳＱＬサーバは、第２の制御システム２のＳＱＬサーバからトランザクションログを取得して、該当する制御システムに関わるデータの同期要求が完了していることを確認してもよい。
【０１６８】
本実施形態では、第１の制御システム１と、第２の制御システム２と、の間のデータ同期を非同方式とし、第１の制御システム１及び第２の制御システム２のうちいずれか一方を遠隔地に配置することが可能である。
【０１６９】
以上の動作により、ＤＢサーバが停止した場合にも、トランザクションを消失させることなく、以降の処理を、予備用のＤＢサーバに切り替えて行うことができる。上述した処理手順で、他方の制御システムに格納されていたログでトランザクションの復旧が可能とした。これにより、ＤＢシステムに含まれているＤＢサーバの間を通常では非同期（一方のＤＢサーバを更新した後、他方のＤＢサーバの更新を待たずにトランザクション処理を完了させ、一定時間ごとにまとめてデータ更新を行う方式）とすることができる。非同期とすることで、本実施形態にかかる制御システムのトランザクション処理能力が飛躍的に向上させることができる。
【０１７０】
上述した実施形態及び変形例では、データベースの参照よりも負荷の高い更新を分散させることで、複数のデータベース間の処理負荷を均一にすることができる。このように、処理負荷を均一にすることで、データベースの性能低下を抑止できる。さらには、必要以上の性能の実装を不要にできる。
【０１７１】
上述した実施形態及び変形例にかかる第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１７２】
また、上述した実施形態及び変形例にかかる第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施形態及び変形例にかかる第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎで実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１７３】
また、上述した実施形態及び変形例にかかる第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎで実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１７４】
上述した実施形態及び変形例にかかる第１のＳＱＬサーバ１００＿１〜第ｎのＳＱＬサーバ１００＿ｎで実行されるプログラムは、上述した各部（端末要求受付部、選択部、読出要求部、サーバ同期制御部、更新要求部）を含むモジュール構成となっており、実際のハードウェアとしては演算部５０３が上記記憶媒体からプログラムを読み出して実行することにより上記各部がメモリ５０４上にロードされ、端末要求受付部、選択部、読出要求部、サーバ同期制御部、更新要求部がメモリ５０４上に生成されるようになっている。
【０１７５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１７６】
１…第１の制御システム、２…第２の制御システム、１００＿１〜１００＿ｎ，１５１＿１〜１５１＿ｎ…ＳＱＬサーバ、１１１，１１２，１６１，１６２…ＭＰサーバ、１２０＿１〜１２０ｍ，１７０＿１〜１７０ｍ…ＤＢシステム、１２１＿１〜１２１＿４，１２２＿１〜１２２＿４，１７１＿１〜１７１＿４，１７２＿１〜１７２＿４…ＤＢサーバ、１８０＿１〜１８０＿ｋ…端末装置、１９１…オペレータ端末、１９２…構成管理装置、２０１…呼制御システム、２５０…ＩＰ網、２５１＿１，２５１＿２，２５１＿ｌ…小型ＩＴＸ装置、２６０…ショートメッセージサービスセンター、２６０…ＰＨＳ網、５０１…外部Ｉ／Ｆ、５０２…サーバＩ／Ｆ、５０３…演算部、５０４…メモリ、５０５…記憶装置、５１１…端末対応テーブル、５１２…更新テーブル、５１３…ＤＢアクセステーブル、５１４…転送先テーブル、６０１…端末要求受付部、６０２…選択部、６０３…読出要求部、６０４…サーバ同期制御部、６０５…更新要求部、６０６…制御部、６０７…システム判定部、６０８…システム同期制御部６０８、６０９…トランザクションログ更新部、６１０…停止検出部、６１１…切り替え制御部、６１２…ログ取得要求部、１００１…ＳＱＬ＿Ｉ／Ｆ、１００２…演算部、１００３…メモリ、１００４…記憶装置、１００５…ＤＢ＿Ｉ／Ｆ、１０１１…トランザクションログ記憶部、１０２１…レプリケーション制御部、１１０１…オペレータＩ／Ｆ、１１０２…外部Ｉ／Ｆ、１１０３…演算部、１１０４…メモリ、１１０５…ＨＤＤ、１１０６…テープドライブ、１１０７…内部Ｉ／Ｆ
【図１】
2013065120.tif 000003
【図２】
2013065120.tif 000004
【図３】
2013065120.tif 000005
【図４】
2013065120.tif 000006
【図５】
2013065120.tif 000007
【図６】
2013065120.tif 000008
【図７】
2013065120.tif 000009
【図８】
2013065120.tif 000010
【図９】
2013065120.tif 000011
【図１０】
2013065120.tif 000012
【図１１】
2013065120.tif 000013
【図１２】
2013065120.tif 000014
【図１３】
2013065120.tif 000015
【図１４】
2013065120.tif 000016
【図１５】
2013065120.tif 000017
【図１６】
2013065120.tif 000018
【図１７】
2013065120.tif 000019
【図１８】
2013065120.tif 000020