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