説明

負荷分散システム、データアクセス装置、及び負荷分散方法

【課題】分散データベースにおける負荷を分散する。
【解決手段】複数のデータベースサーバと、複数の予備用データベースサーバと、データベースアクセス装置とを備える。複数のデータベースサーバは、対応記憶手段を備える。複数の予備用データベースサーバは、レプリケーション用対応記憶手段を備える。対応記憶手段及びレプリケーション用対応記憶手段は、識別情報と、関連情報と、を対応付けて記憶する。データベースアクセス装置は、端末装置からの更新要求に対して、負荷分散規則に従いデータベースサーバを選択して更新要求を行う。読み出し要求に対して、最新情報を保持するデータベースサーバから読み出す。データベースが更新されると、更新が行われたデータベースサーバと対応付けられたデータベースアクセス装置に対して、更新要求を送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、負荷分散システム、データアクセス装置、及び負荷分散方法に関する。
【背景技術】
【0002】
従来、ネットワーク及びコンピュータ技術の発達と共に、ユーザに対して提供するサービスが大規模になっていく傾向にある。このようなサービスの大規模化に伴い、安定したサービスを提供するために、様々な技術が提案されている。
【0003】
このサービスの大規模化に伴い、複数台の装置を接続した場合に、ある装置に負荷が集中するという問題が生じる。このような問題を解決するために負荷を分散するための様々な技術が提案されている。
【0004】
例えば、RAID(Redundant Arrays of Inexpensive Disks)等の技術を用いて、複数のハードディスクでデータを分散管理する技術がある。さらに、データベースにアクセスするためのデータベースアクセスサーバを複数台備え、データベースに対して接続する台数が均等になるよう、データベースアクセスサーバ間の負荷を分散する技術などが提案されている。
【0005】
さらに、従来技術では、データベースシステムに高いトランザクション負荷がかかる場合、データベースサーバを複数配置して収容するデータを分散配置することで1台あたりのデータベースサーバの負荷を下げる手法がとられることが多い。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−234373号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、データを分散配置する方式では、イベントの発生などを条件にトランザクションに偏りが生じていた。このように、一部のデータベースサーバに負荷が集中することで、データベースの性能低下が生じる、又はデータベースシステムに必要以上のスペックを予め備えておくという問題が生じていた。
【課題を解決するための手段】
【0008】
実施形態の複数の負荷分散システムは、複数のデータベースサーバと、複数の予備用データベースサーバと、データベースアクセス装置と、を備える。複数のデータベースサーバは、対応記憶手段を備える。複数の予備用データベースサーバは、レプリケーション用対応記憶手段を備える。対応記憶手段及びレプリケーション用対応記憶手段は、識別情報と、関連情報と、を対応付けて記憶する。データベースアクセス装置は、選択手段と、更新要求手段と、履歴記憶手段と、識別情報記憶手段と、読出要求手段と、転送先記憶手段と、システム制御手段と、を備える。選択手段は、データベースサーバを選択する。更新要求手段は、選択されたデータベースサーバに対して更新要求を行う。識別情報記憶手段は、識別情報と、データベース識別情報と、を対応付けて記憶する。読出要求手段は、識別情報と対応記憶手段で対応付けられた関連情報を、識別情報と識別情報記憶手段で対応付けられたデータベース識別情報で識別されるデータベースサーバから読み出す。転送先記憶手段は、データベースサーバを示すサーバ識別情報と、データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する。システム制御手段は、更新が行われたデータベースサーバを示すサーバ識別情報と、転送先記憶手段で対応付けられた装置識別情報で示される、データベースアクセス装置に対して、更新要求を送信する。
【図面の簡単な説明】
【0009】
【図1】図1は、第1の実施形態にかかる制御システムの構成を示すブロック図である。
【図2】図2は、ネットワーク網の例を示した図である。
【図3】図3は、従来のDBシステムにおけるユーザデータの格納手法の例を示した図である。
【図4】図4は、第1の実施形態にかかる制御システムが備える複数のDBシステムに対するユーザデータの格納手法の例を示した図である。
【図5】図5は、第1の実施形態にかかる第1のSQLサーバと第2のSQLサーバとのハードウェア構成を示したブロック図である。
【図6】図6は、第1の実施形態にかかる第1のSQLサーバの演算部がプログラムを読み出すことで実現されるソフトウェア構成を示した図である。
【図7】図7は、第1の実施形態にかかる端末対応テーブルのテーブル構造の例を示した図である。
【図8】図8は、第1の実施形態にかかる更新テーブルのテーブル構造の例を示した図である。
【図9】図9は、第1の実施形態にかかるDBアクセステーブルのテーブル構造の例を示した図である。
【図10】図10は、第1の実施形態にかかる転送先テーブルのテーブル構造を示した図である。
【図11】図11は、第1の実施形態にかかる第1のDBシステムのハードウェア構成を示した図である。
【図12】図12は、第1の実施形態にかかる本体DBのテーブル構造を示した図である。
【図13】図13は、第1の実施形態にかかる第1のMPサーバのハードウェア構成を示した図である。
【図14】図14は、第1の実施形態にかかるSQLサーバにおける、トランザクションを受け付けた場合に行われる処理の手順を示すフローチャートである。
【図15】図15は、第1の実施形態にかかる制御システムにおけるバックアップ処理を示したシーケンス図である。
【図16】図16は、第1の制御システム1側で行われる処理手順を示したシーケンス図である。
【図17】図17は、第2の制御システム2側で行われる処理手順を示したシーケンス図である。
【図18】図18は、第1の制御システム1でDBサーバが停止した場合の処理手順を示したシーケンス図である。
【発明を実施するための形態】
【0010】
(第1の実施形態)
図1は、第1の実施形態にかかる複数の制御システムの構成を示すブロック図である。図1に示すように、本実施形態は、第1の制御システム1と、第2の制御システム2と、で構成されている。第1の制御システム1及び第2の制御システム2は、ネットワークを介して端末装置180_1〜180_k、及びオペレータ端末191や、構成管理装置192と接続されている。この第1の制御システム1、及び第2の制御システム2は、外部にある端末装置180_1〜180_kからの認証や制御に関わるトランザクションを処理して応答を返すものとする。
【0011】
端末装置180_1〜180_kは、ネットワークを介して接続するPC、電話端末、又は携帯電話端末とする。さらには、他の端末装置と接続するためのIPルータ等であってもよい。そして、端末装置180_1〜180_kは、第1の制御システム1の第1のSQLサーバ100_1〜第nのSQLサーバ100_n、及び第2の制御システム2の第1のSQLサーバ150_1〜第nのSQLサーバ150_n、のうち、接続先としていずれかのアドレスを有する。
【0012】
本実施形態にかかる端末装置180_1〜端末装置180_kは、上述した第1のSQLサーバ100_1〜第nのSQLサーバ100_n及び第2の制御システム2の第1のSQLサーバ150_1〜第nのSQLサーバ150_nのうち、複数のSQLサーバのアドレスを有し、負荷が分散するよう、いずれか一つのSQLサーバを接続先として選択する。そして、端末装置180_1〜端末装置180_kは、選択された接続先に対して、トランザクションを送信する。
【0013】
オペレータ端末191及び構成管理装置192は、第1の制御システム1及び第2の制御システム2の保守に用いる。オペレータ端末191は、第1の制御システム1及び第2の制御システム2を制御するための端末であり、例えば第1の制御システム1のDBシステム120_1〜120_m及び第2の制御システム2のDBシステム170_1〜170_mのバックアップを行う際にインターフェースとして利用できる。
【0014】
構成管理装置192は、DBシステム120_1〜120_m及びDBシステム170_1〜170_mの構成を管理する装置であり、これらのDBシステムのデータベースを構築したり、データを流し込む際に用いられる。
【0015】
第1の制御システム1は、第1のSQLサーバ100_1〜第nのSQLサーバ100_nと、第1のMPサーバ111と、第2のMPサーバ112と、L2SW131と、L2SW132と、第1のDBシステム120_1〜第mのDBシステム120_mと、を備える。
【0016】
第2の制御システム2は、第1のSQLサーバ150_1〜第nのSQLサーバ150_nと、第1のMPサーバ161と、第2のMPサーバ162と、L2SW181と、L2SW182と、第1のDBシステム170_1〜第mのDBシステム170_mと、を備える。なお、第2の制御システム2が有する各構成については、第1の制御システム1が有する各構成と同様として説明を省略する。
【0017】
このように、第2の制御システム2は、第1の制御システム1と同機能をもち、通常は両制御システムが稼動している。これにより、各システムにかかる負担を分散できる。そして、一方の制御システムが障害やメンテナンスで停止した場合には、他方の制御システムが、全トランザクションを処理する。
【0018】
ところで、大規模で多量なトランザクションに対して即座に応答を返すデータベースシステムでは、応答時間を短くするためにデータ構造を単純化している。すなわち、単一でユニークなキーをデータ毎に対応付けて、当該データの読み出し、更新、及び追加のみですべてのトランザクションを処理するデータベースを構築する。本実施形態にかかる第1の制御システム1では、さらに、構築された第1のDBシステム120_1〜第mのDBシステム120_mにアクセスする際の負荷を分散させることを可能する。当該第1の制御システム1を適用される環境として、以下に示す例が考えられる。
【0019】
図2は、ネットワーク網の例を示した図である。図2に示すネットワーク網では、IP網250を中心に、小型ITX装置251_1、251_2、251_lが配置されている。そして、これらの小型ITX装置251_1、251_2、251_lを介して接続された様々な端末装置の着呼及び発呼を制御する呼制御システム201がある。
【0020】
呼制御システム201は、何百、何千万いるユーザについて認証、接続経路を特定し、発信元に対して通知する。このように呼制御システム201は、大量の端末装置の管理、着呼及び発呼の信頼性並びに即応性が要求される。このため、負荷を分散することが重要となる。そこで、図1で示す第1の制御システム1を適用することで負荷を分散できる。
【0021】
また、図1の第1の制御システム1は、呼制御システム201以外のシステムについても適用することができる。例えば、図2に示すPHS網260で、ショートメッセージの送受信を管理するショートメッセージサービスシステム202についても適用できる。ショートメッセージサービスシステム202では、例えば、PHS間以外に携帯電話端末に対してもショートメッセージが送信可能になると、負荷が増大すると考えられる。このため、ショートメッセージサービスシステム202でも、図1に示すような第1の制御システム1を適用することで負荷を分散できる。
【0022】
なお、図1に示す第1の制御システム1は、呼制御システム201やショートメッセージサービスシステム202に制限するものではなく、複数のデータベースを備えるシステムであれば適用できる。図1に戻り、第1の制御システム1内の構成について説明する。
【0023】
第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、端末装置180_1〜180_kからのトランザクションを受け付け、処理に必要なデータベースにアクセスするためのステートメントを発行し、第1のDBシステム120_1〜第mのDBシステム120_mにアクセスする。
【0024】
第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、図1に示すように複数のサーバから構成される。そして、端末装置180_1〜180_kからのトランザクションは、各装置に登録されている複数のSQLサーバのアドレスから、1つのSQLサーバを選択して送信されている。これにより、第1のSQLサーバ100_1〜第nのSQLサーバ100_nにおける、端末装置180_1〜180_kからの負荷は分散されている。
【0025】
第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、端末装置180_1〜180_kからのトランザクションを受信すると、トランザクションの要求に含まれるキー情報から、第1のDBシステム120_1〜第mのDBシステム120_mに格納されている個別データを検索する。個別データは、端末識別IDに紐づけられた、端末装置又は加入者に関連する情報であり、例えばアクセス回数などの統計情報が含まれている。そして、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、トランザクション処理を行うたびに、当該統計情報を更新する。
【0026】
このため、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、これら個別データの検索や統計情報の更新するためステートメントを生成し、第1のDBシステム120_1〜第mのDBシステム120_mに送信する。
【0027】
なお、本実施形態では、端末装置180_1〜180_k側で、第1のSQLサーバ100_1〜第nのSQLサーバ100_nのトランザクションを分散させる例について説明した。しかしながら、端末装置180_1〜180_kが、このような機能を有して無くともよい。このような場合、例えば、第1の制御システム1側にロードバランサを配置することでも同様な機能を実現できる。
【0028】
第1のMPサーバ111、及び第2のMPサーバ112は、オペレータ端末191からの操作に従って処理を行う。また、第1のMPサーバ111、及び第2のMPサーバ112は、構成管理装置192からの個別データの追加、変更、又は削除を行うためのデータを受け付ける。
【0029】
第1のMPサーバ111、及び第2のMPサーバ112は、オペレータ端末191に対して、第1のDBシステム120_1〜第mのDBシステム120_mをメンテナンスする機能を提供する。さらに、第1のMPサーバ111、及び第2のMPサーバ112は、大容量のテープドライブを備え、第1のDBシステム120_1〜第mのDBシステム120_mが保持しているデータをバックアップする機能を有する。さらに、第1のDBシステム120_1〜第mのDBシステム120_mのそれぞれの性能などの統計データを収集し、自装置内に蓄積する機能を有する。
【0030】
第1のMPサーバ111、及び第2のMPサーバ112は、それぞれ一方が運用系、他方が待機系として動作し、どちらか一方が障害になっても機能が失われることはない。
【0031】
L2SW131、及びL2SW132は、第1のSQLサーバ100_1〜第nのSQLサーバ100_n、第1のMPサーバ111、第2のMPサーバ112、及び第1のDBシステム120_1〜第mのDBシステム120_m間を接続するスイッチとする。なお、このようなスイッチに制限するものではなく、データを転送可能にする装置であればよく、例えばIPルータ等であってもよい。
【0032】
第1のDBシステム120_1〜第mのDBシステム120_mは、それぞれ端末装置を識別する端末識別IDと、当該端末に関する個別データとを、対応付けて記憶する記憶装置を備える。個別データには、端末装置毎に個別のデータが含まれている。記憶装置は、一つの装置でなくともよく、例えばRAID1+0等であってもよい。
【0033】
第1のDBシステム120_1〜第mのDBシステム120_mが備える記憶装置(RAID1+0)には、それぞれ同一の端末識別IDが格納されている。
【0034】
そして、第1のDBシステム120_1〜第mのDBシステム120_mは、第1のSQLサーバ100_1〜第nのSQLサーバ100_nからデータベースにアクセスするためのステートメントを受信し、データベースに対して、レコードの追加、参照、又は更新を行う。
【0035】
第1のDBシステム120_1〜第mのDBシステム120_mは、2台1組(第1−1DBサーバ121_1及び第1−2DBサーバ122_1、第2−1DBサーバ121_2及び第2−2DBサーバ122_2、第3−1DBサーバ121_3及び第3−2DBサーバ122_3、第m−1DBサーバ121_m及び第m−2DBサーバ122_m)で構成されている。そして、DBシステムのうち、一方のDBサーバが停止した場合、他方のDBサーバを用いて運用を継続する。
【0036】
第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、第1のDBシステム120_1〜第mのDBシステム120_mを選択する機能を備えている。例えば、第1のDBシステム120_1を選択した場合、第1−1DBサーバ121_1又は第1−2DBサーバ122_1にアクセスして使用できる。
【0037】
第1のDBシステム120_1が、第1のSQLサーバ100_1からデータベースにアクセスするためのステートメントを受信した場合について説明する。この場合、第1のDBシステム120_1は、ステートメントが読み出し要求である場合に、第1−1DBサーバ121_1内のデータベースに対して検索を行い、要求元である第1のSQLサーバ100_1に検索結果を受け渡す。ステートメントが更新要求である場合に、第1−1DBサーバ121_1内のデータベースを更新する。その際、レプリケーション側の第1−2DBサーバ122_1に対しても更新要求を行う。そして、第1のDBシステム120_1が、これらの応答の受信を待ってから、要求元である第1のSQLサーバ100_1に更新完了の応答を送信する。このように構成することで、第1−1DBサーバ121_1又は第1−2DBサーバ122_1のいずれかが障害になっても、データの消失が発生することなく第1の制御システム1は、動作を継続できる。
【0038】
なお、本実施形態にかかる第1のDBシステム120_1〜第mのDBシステム120_mは、2台1組のレプリケーション構成としたが、レプリケーション数が3台以上でも良い。
【0039】
従来のDBシステムについて説明する。図3は、従来のDBシステムにおけるユーザデータの格納手法の例を示した図である。図3に示す例では、第1〜第mのDBシステムで全体的なシステムが構築されているものとする。このような場合に、ユーザデータを、1/m毎に、各DBシステムに振り分けて格納していた。そして、クラスタやRAID等の技術を用いることで、これら第1〜第mのDBシステムが一個の大規模なDBシステムとして動作させることが可能であった。しかしながら、DBシステム毎に格納されたユーザデータは異なるため、例えば第3のDBシステムに格納されたユーザデータについて読み込み及び更新が集中した場合に、負荷を分散することができないという問題が生じていた。
【0040】
図4は、第1の実施形態の第1の制御システム1が備えるDBシステム120_1〜120_mに対するユーザデータの格納手法の例を示した図である。図4に示す例のように、全ユーザデータを第1〜第mのDBシステムのそれぞれに対して格納する。そして、最新のデータについては第1〜第mのDBシステムのうちいずれか一つが保持するようにする。読み出す場合には、最新のユーザデータが格納されたDBシステムを参照し、更新を行う場合には、第1〜第mのDBシステムから一つDBシステムを負荷が分散する規則を用いて選択し、選択したDBシステムに格納されているユーザデータに対して更新を行う。これにより、更新が各DBシステムに分散することになる。特にデータベースに対してアクセスする際に、負荷は読み出しより更新の方が高いため、当該制御を行うことで負荷を分散することができる。次に当該制御を実現するための各構成について説明する。
【0041】
図5は、第1のSQLサーバ100_1と第2のSQLサーバ100_2とのハードウェア構成を示したブロック図である。
【0042】
第1のSQLサーバ100_1は、外部I/F501と、サーバI/F502と、演算部503と、メモリ504と、記憶装置505と、DB_I/F506と、を備える。なお、第2のSQLサーバ100_2、並びに図示していない他のSQLサーバも第1のSQLサーバ100_1と同様の構成を備えているものとして、説明を省略する。
【0043】
外部I/F501は、端末装置180_1〜180_kから、認証要求などのトランザクションを受信する。
【0044】
サーバI/F502は、第1のSQLサーバ100_1〜第nのSQLサーバ100_nとの間で通信を行うインターフェースとする。
【0045】
演算部503は、第1のSQLサーバ100_1全体を制御する。演算部503は、記憶装置505に記憶されたプログラムを読み出して様々な処理を実現する。例えば、演算部503は、第1のSQLサーバ100_1が受信したトランザクションや他のサーバからの要求を解釈して、処理を行う。
【0046】
メモリ504は、様々なデータを記憶する。例えば、メモリ504は、演算部503の処理で展開された各種データを記憶する。例えば、メモリ504には、第1のSQLサーバ100_1が起動した際に、端末対応テーブル511、更新テーブル512、及びDBアクセステーブル513、転送先テーブル514などが展開される。
【0047】
記憶装置505は、プログラム等と、トランザクションログ記憶部と、を記憶する。そして、記憶装置505は、サーバ立ち上げ時に、演算部503が使用する。
【0048】
トランザクションログ記憶部は、更新要求部605の更新要求による更新の履歴情報を記憶する。なお、トランザクションログ記憶部は、更新内容を示す情報の他、更新要求の送信元も対応付けて記憶する。例えば、第2の制御システム2の第1のSQLサーバ150_1から同期のためのトランザクション(更新要求)が送られてきた場合、トランザクションログ記憶部は、当該トランザクションによる更新内容を示す情報と、第2の制御システム2の第1のSQLサーバ150_1を示すSQLサーバ識別情報と、を対応付けて記憶する。
【0049】
なお、当然ながら、第2の制御システム2に含まれるSQLサーバも、第1の制御システム1から同期のために送信されたトランザクションをトランザクションログ記憶部で記憶する。
【0050】
DB_I/F506は、各種DBサーバとの通信するインターフェースとする。
【0051】
図6は、第1のSQLサーバ100_1の演算部503がプログラムを読み出すことで実現されるソフトウェア構成を示した図である。図6に示すように、演算部503は、端末要求受付部601と、選択部602と、読出要求部603と、サーバ同期制御部604と、更新要求部605と、制御部606と、システム判定部607と、システム同期制御部608と、トランザクションログ更新部609と、停止検出部610と、切替制御部611と、ログ取得要求部612と、を備える。
【0052】
端末対応テーブル511は、端末装置毎に最新のデータが格納されたDBシステムを保持している。端末対応テーブル511は、各端末装置からトランザクションを受け付けた場合に、読み出すべき情報が格納されているDBシステムを、各端末装置を識別する端末識別IDと対応付けて記憶している。図7は、端末対応テーブル511のテーブル構造の例を示した図である。図7に示すように端末対応テーブル511は、端末識別IDと、優先制御システムと、DBシステム番号と、データベースと、を対応付けて記憶している。
【0053】
端末識別IDは、端末装置180_1〜180_kを識別するIDとする。端末識別IDは、第1の制御システム1及び第2の制御システム2による記憶対象として固有の識別情報とする。この端末識別IDとして、例えば電話番号や加入者を特定するための加入者IDを適用しても良い。
【0054】
優先制御システムは、端末識別IDで識別される端末装置180_1〜180_kが優先的に接続すべき制御システムを識別する情報とする。
【0055】
DBシステム番号は、当該端末識別IDと対応付けられた最新の個別データが格納されたDBシステムを識別する番号とする。最新の個別データとは、最後に更新された個別データを意味する。
【0056】
データベースは、DBシステム番号で識別されるDBシステムに複数のデータベースが含まれている場合に、当該データベースを識別する情報とする。例えば、第1の制御システム1と、第2の制御システム2と、の間のDBシステム数が一致していない場合、対応関係を明確にするために、一つのDBシステム内に複数のデータベースを作成する必要がある場合もある。このように、DBシステム内に複数のデータベースが格納されている状況があるため、本実施形態では、データベースを識別する情報を、DBシステム番号と共に、端末識別IDと対応付けることとした。このように端末装置毎の最新データが、DBシステム番号及びデータベースを識別する情報と対応付けられている。
【0057】
更新テーブル512は、他のSQLサーバからの更新要求を管理するためのテーブルである。図8は、更新テーブル512のテーブル構造の例を示した図である。図8に示すように更新テーブル512は、SQLサーバ識別情報と、コマンドシーケンス番号と、を対応付けて記憶している。
【0058】
SQLサーバ識別情報は、各SQLサーバを識別する情報とする。SQLサーバを識別する情報として、例えばIPアドレスを用いても良い。
【0059】
コマンドシーケンス番号は、他のSQLサーバ100_x(xは、2〜nのいずれかの数値とする)との間で同期を行うための番号とする。コマンドシーケンス番号は、SQLサーバ毎にそれぞれ別に割り当てられている。そして、コマンドシーケンス番号は、当該SQLサーバ100_xから、更新要求を受け付ける毎に、コマンドシーケンス番号を1増加する。そして、サーバ同期制御部604が、他のSQLサーバ100_xから更新要求と共に受信したコマンドシーケンス番号と、更新テーブル512に格納されているコマンドシーケンス番号と、が連続しない場合に、SQLサーバ100_1は、他のSQLサーバ100_xからの更新要求が欠落したものと見なす。
【0060】
DBアクセステーブル513は、更新先のDBシステムを選択するためのテーブルである。図9は、DBアクセステーブル513のテーブル構造の例を示した図である。図9に示すように、DBアクセステーブル513は、DBシステム識別情報と、アクセス比率と、“ON/OFF”フラグと、を対応づけて記憶している。
【0061】
DBシステム識別情報は、第1のDBシステム120_1〜第mのDBシステム120_mのいずれかを識別する情報とする。DBアクセステーブル513にDBシステム識別情報が格納されている場合に、DBシステム識別情報で識別されるDBシステムが更新の対象となる。
【0062】
アクセス比率は、DBシステム識別情報で示されたDBシステムが更新される割合を示している。本実施形態にかかる第1の制御システム1では、SQLサーバ100_1〜100_mが更新とするDBシステムは、ランダムに選択されるが、選択される比率については、DBアクセステーブル513に格納されている。
【0063】
“ON/OFF”フラグは、更新の対象となるDBシステムを切り替えることで、負荷分散をするか否かを切り替えるフラグとする。
【0064】
当該“ON/OFF”フラグに“OFF”が設定されると、最新の個別データが格納されたDBシステムの切替が抑止される。最新の個別データが格納されたDBシステムの切替を抑止している場合に、データベースマネージメントシステムが備えている通常のバックアップ機能で、各DBサーバのバックアップを取ることが可能となる。
【0065】
転送先テーブル514は、更新要求の転送先を管理するテーブルとする。図10は、転送先テーブルのテーブル構造を示した図である。図10に示すように、DBシステムと、転送先SQLサーバと、を対応付けて記憶している。図10の例に示すDBシステムは、第1の制御システム1内の第1のDBシステム120_1〜第mのDBシステム120_mのいずれか一つを識別する。一方、図10の例に示す転送先SQLサーバは、第2の制御システム2内の第1のSQLサーバ150_1〜第nのSQLサーバ150_mを識別する。
【0066】
このように、本実施形態では、SQLサーバの更新要求部605が、DBシステムに対して更新要求を行った場合、当該DBシステムと転送先テーブル514で対応付けられている、第2の制御システム2のSQLサーバに対して更新要求を送信する。これにより、他の制御システムでも第1の制御システム1と同様の更新が行われる。
【0067】
端末要求受付部601は、端末装置180_1〜180_kからのトランザクション要求を受け付ける。そして、端末要求受付部601は、必要に応じて、トランザクション要求を行った端末装置180_1〜180_kに対して認証処理を行う。
【0068】
システム判定部607は、端末要求受付部601が端末装置180_1〜180_kからのトランザクション要求を受け付けた場合、端末対応テーブル511を参照し、トランザクション要求を行った端末装置と対応付けられている制御システムが、自システム(例えば第1の制御システム1)であるか否かを判定する。自システムであると判定した場合に、自システム内で処理を継続し、選択部602による選択が行われる。自システムではないと判定した場合、トランザクション要求を行った端末装置からのトランザクションを、対応付けられている他の制御システム(例えば第2の制御システム2)に転送する。
【0069】
選択部602は、第1のDBシステム120_1〜第mのDBシステム120_mから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新対象となるデータベースサーバを選択する。本実施形態では、当該規則の例として、ランダムにデータベースを選択する例について説明する。本実施形態は、ランダムに制限するものではなく、例えば第1のDBシステム120_1〜第mのDBシステム120_mをそれぞれ所定の順番に従って選択しても良い。
【0070】
選択部602は、DBアクセステーブル513に記憶された各データベース識別情報と対応付けられたアクセス比率に基づいて、更新対象となるデータベースサーバを選択する。本実施形態にかかる選択部602は、トランザクションを受け付ける毎に、アクセス比率にあわせてDBシステムを選択する。例えば、DBシステム番号1のアクセス比率が20%の場合に、1〜100の数値を取る乱数において、1〜20が生じた際、選択部602は、DBシステム番号1を選択する。
【0071】
ところで、データ更新を行うDBシステムをランダムに選択する方式では、データ更新による負荷は分散されるが、参照が多く行われる場合には負荷が特定のDBシステムに集中する可能性がある。そこで、第1のSQLサーバ100_1〜第nのSQLサーバ100_nにDBシステムごとのアクセス回数を計測、又はDBシステムの応答時間を測定し、アクセス集中を検出した場合には、アクセスが集中しているSQLサーバのアクセス比率を低くするよう設定を行うことで、即座にDBシステムの負荷を均一に近づけることが可能となる。
【0072】
本実施形態とは異なる例として、SQLサーバの選択部602が、予め定められた選択比率(読み出し元のDBシステムを選択する比率)を保持しており、トランザクションを受け付けたとき、更新先のDBシステムを、読み出し元のDBシステムとするか、全DBシステムからランダムに選択するかを選択しても良い。このように一部のトランザクションについては、個別データの読み出し元のDBシステムを、更新対象として選択することで、端末対応テーブル511の更新回数を削減できる。さらに、単位時間あたりのトランザクションが高くなった場合でもSQLサーバ間で行われる端末対応テーブル511の更新回数を抑制できる。この場合、選択比率に相当する認証処理ではデータの更新負荷が分散されないが、アクセス頻度の高い端末装置の個別データが、徐々に他のDBシステムに移動するので、時間経過とともに負荷は均等に分散される。
【0073】
第1の実施形態に戻り、読出要求部603は、端末装置180_1〜180_kからのトランザクションに応じて、第1のDBシステム120_1〜第mのDBシステム120_mから最新の個別データを読み出す。本実施形態にかかる読出要求部603は、要求元の端末装置を識別する端末識別IDと端末対応テーブル511で対応付けられたDB識別番号で識別されるDBシステムを読み出し先として特定する。そして、読出要求部603は、特定されたDBシステムで、当該端末識別IDと対応付けられている個別データを読み出す。
【0074】
このように、最新の更新データは、第1のDBシステム120_1〜第mのDBシステム120mのいずれかに格納されている。そこで、本実施形態にかかる第1のSQLサーバ100_1は、端末対応テーブル511を参照することで、最新の個別データがどのDBシステムに格納されているか認識できるため、当該DBシステムに対してアクセスする。なお、本実施形態では、端末対応テーブル511を参照する例について説明したが、最新の個別データが格納されているDBシステムの検出手法として、他の手法を用いても良い。
【0075】
更新要求部605は、選択部602で選択されたDBシステム内のデータベースに対して、データベースアクセスステートメントにより、更新要求を行った端末装置を識別する端末識別IDと対応付けられた個別データの更新要求を行う。また、更新要求部605は、該当するレコードが存在しない場合に、データの追加を要求しても良い。
【0076】
そして、更新要求部605は、最新のデータを格納していたDBシステムと異なるDBシステムに対して更新要求を行った場合、端末対応テーブル511に対して、更新要求の送信元を示す端末識別IDと、更新先のDBシステム番号と、を対応付けて端末対応テーブル511を更新する。これにより、端末対応テーブル511は、常に最新の個別データが格納されたDBシステムを保持できる。
【0077】
このように、ランダムに選択したDBシステムに対して更新を行うことで、更新処理により発生する負荷を全DBシステムに分散できる。
【0078】
サーバ同期制御部604は、当該第1のSQLサーバ100_1が行った更新と、他のSQLサーバ100_2〜100_mが行った更新と、の間の同期を取る。
【0079】
例えば、更新要求部605によりDBシステムの更新が行われた場合に、サーバ同期制御部604は、更新を行った自装置(第1のSQLサーバ100_1)を識別するSQLサーバ識別情報と、シーケンス番号と、更新した端末識別IDと、更新先を示すDBシステム番号と、を対応付けて、他のSQLサーバ100_2〜100〜nに対して、サーバI/F502を介して通知する。
【0080】
トランザクションログ更新部609は、更新要求部605が行った更新要求の内容を、更新要求の送信元(例えば端末装置180_1〜180_k、又は第2の制御システム2内の第1のSQLサーバ150_1〜第nのSQLサーバ150_n)と対応付けて、トランザクションログ記憶部に更新履歴として追加更新する。
【0081】
また、サーバ同期制御部604は、サーバI/F502を介して、他のSQLサーバを識別するSQLサーバ識別情報と、コマンドシーケンス番号と、更新した端末識別IDと、更新先を示すDBシステム番号と、を対応付けて受信した場合に、受信した情報(端末識別IDと、更新先を示すDBシステム番号と、を対応付けた上)で端末対応テーブル517を更新する。さらに、サーバ同期制御部604は、受信したコマンドシーケンス番号と、更新テーブル512に格納されているコマンドシーケンス番号と、が連続しているか否か判定する。連続している場合には、正常に処理が行われているものとして、更新テーブル512のコマンドシーケンス番号を‘1’追加して同期制御を終了する。連続していない場合、サーバ同期制御部604は、欠落したコマンドシーケンス番号に関する更新要求の再送信を、当該他のSQLサーバに対して要求する。その後、サーバ同期制御部604は、更新テーブル512のコマンドシーケンス番号を更新する。
【0082】
これにより、各SQLサーバ100_1〜100_nが備える端末対応テーブル511は、同期がなされており、常に同一のデータが格納されていることになる。つまり、本実施形態では、同期処理は、迅速に行う必要があるため、更新が適切に行われているか否かを確認している余裕がない。そこで、本実施形態にかかるサーバ同期制御部604は、更新テーブル512で欠落したコマンドシーケンス番号に関する更新要求について再送信を要求することとした。これにより、各SQLサーバ100_1〜100_nが備える端末対応テーブル511における確実な同期を実現できる。
【0083】
制御部606は、メモリ504上の各テーブル(端末対応テーブル511、更新テーブル512、DBアクセステーブル513)に対して、レコードの更新、追加、又は削除を行う。例えば、第1の制御システム1にDBシステムが増設された場合に、制御部606は、DBアクセステーブル513に対して、新たに増設されたDBシステムを示すDB識別情報を含むレコードを追加する。
【0084】
システム同期制御部608は、更新要求部605の更新要求先のDBシステムと、転送先テーブル514で対応付けられている転送先SQLサーバ情報で示される、第2の制御システム2のSQLサーバ(第1のSQLサーバ150_1〜第nのSQLサーバ150_nのうちいずれか一つ)に対して、更新要求部605が行った更新要求を送信する。これにより、制御システム間で同一の更新要求を実現できる。
【0085】
なお、本実施形態では、更新先のSQLサーバは対応付けられているが、更新先のSQLサーバがどのDBシステムに対して更新を行うのかは特に制限しない。しかしながら、SQLサーバは、自装置が行った更新内容をトランザクションログ記憶部に記憶している。このため、DBシステムに対して行った更新内容を把握したい場合、当該DBシステムと対応付けられている転送先SQLサーバから取得できる。
【0086】
停止検出部610は、第1のDBシステム120_1〜第mのDBシステム120_m内で動作しているDBサーバの停止を検出する。なお、停止検出部610が検出するのは,停止のみに制限するものではなく、正常に動作しなくなった状態であれば検出を行うものとする。
【0087】
切替制御部611は、停止検出部610により検出された、正常に動作しなくなったデータベースサーバを含む第1の制御システム1のSQLサーバ100_1〜100_mにトランザクションを送信していた端末装置に対して、第2の制御システム2のSQLサーバ150_1〜150_mにトランザクションを送信するよう、接続先を切り替える制御を行う。本実施形態にかかる切替制御部611は、端末対応テーブル511の優先制御システムを、第1の制御システム1から第2の制御システム2に更新することで、接続先を切り替える。
【0088】
さらに、停止検出部610によりDBサーバ(例えば第1−1DBサーバ121_1)が停止していることが検出された場合に、切替制御部611は、正常に起動しなくなったDBサーバと同期を行っていたDBサーバ(例えば第1−1DBサーバ122_1)を、選択部602の選択対象に切り替える。ただし、切り替えられたDBサーバ(例えば第1−1DBサーバ122_1)は、正常に起動しなくなったDBサーバ(例えば第1−1DBサーバ121_1)との間では、リアルタイムなレプリケーションは行われていない。そこで、切替制御部611は、DBサーバ(例えば第1−1DBサーバ122_1)を切り替えた後、同期を行うまで、切り替えられたDBサーバへの更新要求を一時的に停止する。
【0089】
ところで、本実施形態では、DBサーバ間でリアルタイムなレプリケーションを行わないこととしている。これは、リアルタイムなレプリケーションを行わないことで、各DBサーバの処理負担を軽減すると共に、予備のDBサーバの書き込み回数が軽減できるため、寿命を延ばすことが可能なためである。
【0090】
しかしながら、リアルタイムにレプリケーションを行っていない以上、DBサーバが故障した場合に、即座に切り替えることはできない。前回同期を行ってから故障するまでの間に行われた更新内容を取得し、取得した更新内容で、切り替えられたDBサーバを更新する必要がある。従来はこの更新履歴を別途保持しておく必要があったが、本実施形態では、2つの制御システムによる冗長構成を備えている。そこで、DBサーバを更新するための内容を、他方の制御システムから取得することとした。これにより、更新履歴を別途保持せずとも、更新が可能となった。
【0091】
そして、DBサーバが切り替えられた後、同期を行うまでの間、当該DBサーバに対する更新要求は、SQLサーバの記憶装置505に一時的に記憶される。
【0092】
ログ取得要求部612は、転送先テーブル514を参照し、正常に動作しないDBサーバを含むDBシステムを識別する情報と、対応付けられていた、第2の制御システム2のSQLサーバに対して、トランザクションログの取得要求を行う。これにより、ログ取得要求部612は、当該SQLサーバから、トランザクションログを取得する。
【0093】
そして、更新要求部605は、取得したトランザクションログに格納されている更新内容で、切り替えた後のDBサーバに対して更新要求を行う。さらに、更新要求部605は、記憶装置505に一時的に記憶していた更新要求を、切り替えた後のDBサーバに対して行う。これより、同期が完了したので、端末装置180_1〜180_kからの複製先のDBサーバへの更新要求を開始する。
【0094】
次に、DBシステムについて説明する。図11は、第1のDBシステム120_1のハードウェア構成を示した図である。第1―1DBサーバ121_1と、第1−2DBサーバ122_1と、は、同一の構成を備えている。第1のDBシステム120_1は、第1―1DBサーバ121_1及び第1−2DBサーバ122_1の2台のサーバで構成される。
【0095】
図11に示すように、第1―1DBサーバ121_1は、SQL_I/F1001と、演算部1002と、メモリ1003と、記憶装置1004と、DB_I/F1005と、を備えている。
【0096】
SQL_I/F1001は、第1のSQLサーバ100_1〜第nのSQLサーバ100_nからのデータベースにアクセスするためのステートメントを受信する。
【0097】
DB_I/F1005は、2台のDBサーバ間で、データベースのレプリケーション同期を行うためのインターフェースとする。
【0098】
演算部1002は、レプリケーション制御部1021を備え、データベースにアクセスするためのステートメントを受信した場合に処理を行う。
【0099】
レプリケーション制御部1021は、第1−2DBサーバ122−1の記憶装置1004と、第1−1DBサーバ121−1の記憶装置1004と、の間の同期制御を行う。
【0100】
メモリ1003は、各種データを記憶する。本実施形態にかかるメモリ1003には、データベースキャッシュなどが展開される。
【0101】
記憶装置1004は、データを格納する。本実施形態にかかる記憶装置1004は、RAID1+0で構築されている。本実施形態では、RAID1+0により、1つのデータベースに対して、物理的に複数のディスクドライブを横断的に使用することとした。これにより、個々のディスクドライブの負荷を分散できる。さらに、記憶装置1004は、格納対象となるデータベースを、複数のデータベースに分割して管理する。そして、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、複数のDBシステムが存在するのと同様の態様で、データの参照、更新、追加を行う。これにより、特定のディスクドライブにアクセスが偏ることを抑止できる。
【0102】
記憶装置1004内の個々のデータベースには、トランザクションログ記憶部1011と、本体DB1012と、を備えている。そして、トランザクションログ記憶部1011に記憶された、高速書き込み可能なトランザクションログを用いることで、第1−1DBサーバ121_1と、第1−2DBサーバ122_1との間のレプリケーション同期が可能となる。
【0103】
また、記憶装置1004内の個々のデータベースはロールフォワード機能を有している。これにより、データテーブルが更新されていない状態で障害が発生しても、復旧後にトランザクションログからテータテーブルを復旧できる。したがって、耐障害性を確保したまま高速処理が可能となる。
【0104】
図12は、本体DB1012のテーブル構造を示した図である。図12に示す例では、本体DBが、端末識別IDと、端末関連情報と、統計情報と、を対応付けて記憶している。
【0105】
端末関連情報は、端末に関連する情報で、更新頻度が低い普遍的な情報とする。端末関連情報としては、例えば、端末装置を所有しているユーザの名称、住所等のほか、端末装置の機種等とする。端末関連情報は、第1のDBシステム120_1〜第mのDBシステム120_mの全てに同一のデータが登録されている。
【0106】
統計情報は、端末装置が第1の制御システム1にアクセスする度に更新されるトランジェントな情報とする。この統計情報としては、図12に示す例では、発呼又は着呼の回数などがある。統計情報は、第1のDBシステム120_1〜第mのDBシステム120_mのうちいずれか一つに最新のデータが登録されている。
【0107】
第1―2DBサーバ122_1のレプリケーション制御部1021は、第1―1DBサーバ121_1のレプリケーション制御部1021と協同し、第1−2DBサーバ122−1の記憶装置1004に、第1−1DBサーバ121−1の記憶装置1004に記憶された本体DB1012及びトランザクションログ記憶部1011を非リアルタイムに複製する。本実施形態では、所定の時間毎に複製を行うこととする。
【0108】
次にMPサーバ111、112について説明する。図13は、第1のMPサーバ111のハードウェア構成を示す図である。図13に示すように第1のMPサーバ111は、オペレータI/F1101と、外部I/F1102と、演算部1103と、メモリ1104と、HDD1105と、テープドライブ1106と、内部I/F1107と、を備える。なお、第2のMPサーバ112は、第1のMPサーバ111と同様の構成を備えているものとして説明を省略する。
【0109】
第1のMPサーバ111及び第2のMPサーバ112のうち、いずれか1台が起動中で、他の1台は停止中とする。そして、1台が故障等で起動しなくなった場合、他の1台が起動する。
【0110】
オペレータI/F1101は、オペレータ端末191と通信を行うインターフェースとする。外部I/F1102は、構成データ管理サーバと通信を行うインターフェースとする。
【0111】
内部I/F1107は、第1のSQLサーバ100_1〜第nのSQLサーバ100_n、第1のDBシステム120_1〜第mのDBシステム120_m、及び第2のMPサーバ112と通信するインターフェースとする。
【0112】
メモリ1104は、演算部1103の作業領域、又はバックアップする際の作業領域として用いられる。
【0113】
演算部1103は、第1のMPサーバ111全体を制御する。そして、演算部1103は、HDD1105に記憶されているプログラムを実行することで、第1の制御システム1の保守を行うための機能を実現する。例えば、演算部1103は、オペレータ端末191からの指示に従って処理したり、構成管理装置192からのデータを処理する。
【0114】
また、演算部1103は、第1のDBシステム120_1〜第mのDBシステム120_mの各DBサーバ内の本体DB1012に対応付けて記憶された端末識別IDと、個別データと、対応付けてHDD1105やテープドライブ1106にバックアップする。
【0115】
第1のMPサーバ111及び第2のMPサーバ112は、構成管理装置192から受信したデータに基づいて、DBシステム内のDBサーバのデータを追加、更新する。このため、第1のMPサーバ111及び第2のMPサーバ112は、SQLサーバと同様に、メモリ1104上に、端末対応テーブル511、更新テーブル512、及びDBアクセステーブル513を保持している。
【0116】
HDD1105は、第1のSQLサーバ100_1〜第nのSQLサーバ100_n、第1のDBシステム120_1〜第mのDBシステム120_m、及び第1のMPサーバ111自身の統計データを記憶する。
【0117】
テープドライブ1106は、HDD1105に記憶された各種データを読み出して、バックアップを行う。なお、演算部1103は、テープドライブ1106にデータをバックアップする前に当該データに対して、暗号化処理を施しておく。
【0118】
そして、第1のMPサーバ111又は第2のMPサーバ112が、第1のDBシステム120_1〜第mのDBシステム120_mに対してバックアップを行う際に、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、選択部602による、更新対象となるDBシステムの選択を一時的に停止する。これにより、第1のMPサーバ111又は第2のMPサーバ112が、第1のDBシステム120_1〜第mのDBシステム120_mに保持されているデータのバックアップを行う際、最新のデータがどのDBサーバに格納されているかを示すデータと、実際にDBサーバに格納されているデータと、の整合を保持した状態でバックアップできる。
【0119】
次に端末装置からのトランザクションを受け付けた場合に行われるSQLサーバの処理について説明する。図14は、本実施形態にかかるSQLサーバにおける上述した処理の手順を示すフローチャートである。図14に示す例では、第1のSQLサーバ100_1を用いて説明するが、どのSQLサーバも同じ処理を行うものとする。なお、端末装置180_1〜180_kは、第1のSQLサーバ100_1〜第nのSQLサーバ100_nのIPアドレスを保持しており、認証時などにラウンドロビン方式で1つのSQLサーバを選択してトランザクションを送信する。これにより、第1のSQLサーバ100_1〜第nのSQLサーバ100_nのトランザクション処理負荷は、均一化される。なお、本フローチャートでは、第1のSQLサーバ100_1が処理を行う例について説明する。
【0120】
まず、端末要求受付部601は、端末装置(例えば端末装置180_1)から、トランザクションを受信する(ステップS1301)。次に、端末要求受付部601は、トランザクションを送信してきた端末装置180_1の認証を行う(ステップS1302)。
【0121】
認証が適切に行われた場合、第1のSQLサーバ100_1の端末要求受付部601は、自装置内の端末対応テーブル511を参照し、トランザクションの送信元を識別する端末識別IDと対応付けられているDBシステム番号を読み出す(ステップS1303)。
【0122】
そして、読出要求部603は、読み出したDBシステム番号で識別されるDBシステム(例えば第1のDBシステム120_1)から、当該端末識別IDと対応付けられている個別データを読み出すとともに、当該個別データの読み出しをロックする(ステップS1304)。
【0123】
その後、選択部602が、更新要求を受け付ける毎に、乱数を用いて、第1のDBシステム120_1〜第mのDBシステム120_mから、更新先となるDBシステムを1つランダムに選択する(ステップS1305)。
【0124】
そして、更新要求部605は、選択されたDBシステムに対して、トランザクションの送信元を識別する端末識別IDと対応付けられた個別データを更新する(ステップS1306)。
【0125】
次に、更新要求部605は、個別データを更新したDBシステムと、個別データを読み出したDBシステムと、が同一であるか否かを判定する(ステップS1307)。同一であると判定した場合(ステップS1307:Yes)、ステップS1310に進む。
【0126】
一方、更新要求部605が同一でないと判定した場合(ステップS1307:No)、端末対応テーブル511に対して、トランザクションの送信元を識別する端末識別IDと、更新したDBシステムを識別するDBシステム番号と、を対応付けて更新する(ステップS1308)。
【0127】
さらに、サーバ同期制御部604が、更新した端末識別IDと、DBシステム番号と、を対応付けて、他のSQLサーバ及びMPサーバに対して通知する(ステップS1309)。これにより、他のSQLサーバ及びMPサーバが備える端末対応テーブル511が、更新される。
【0128】
その後、端末要求受付部601は、読み出しを禁止していた個別データのロックを解除して、トランザクション送信元の端末装置に応答を返す(ステップS1310)。これにより、一連のトランザクション処理を終了する。
【0129】
次に、第1の制御システム1で行われるバックアップ処理について説明する。図15は、本実施形態にかかる第1の制御システム1における上述した処理を示したシーケンス図である。本シーケンス図は、第1のMPサーバ111がバックアップする例とする。
【0130】
まず、第1のMPサーバ111が、第1の制御システム1内の、第1のSQLサーバ100_1〜第nのSQLサーバ100_nに対して、DBアクセステーブル513内の“ON/OFF”フラグを、“OFF”にするよう要求する(ステップS1401)。
【0131】
これに伴い、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、DBアクセステーブル513内の“ON/OFF”フラグを、“OFF”に更新する(ステップS1402)。そして、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、更新した旨(OK)を、第1のMPサーバ111に通知する(ステップS1403)。
【0132】
これにより、最新のデータが格納されるDBサーバの切替が止められたので、第1のMPサーバ111は、第1のDBシステム120_1〜第mのDBシステム120_mに対してバックアップを要求する(ステップS1404)。その後、第1のDBシステム120_1〜第mのDBシステム120_mは、記憶装置1004内のデータベースからデータを読み出す(ステップS1405)。そして、第1のDBシステム120_1〜第mのDBシステム120_mは、読み出したデータを、第1のMPサーバ111に転送する(ステップS1406)。なお、バックアップの手順は、従来と同様の手順を用いればよい。
【0133】
そして、第1のMPサーバ111は、転送されてきたデータを、HDD1105に蓄積する(ステップS1407)。
【0134】
全てのデータの転送が終了した後、第1のMPサーバ111は、第1のSQLサーバ100_1〜第nのSQLサーバ100_nに対して、DBアクセステーブル513内の“ON/OFF”フラグを、“ON”にするよう要求する(ステップS1408)。
【0135】
これに伴い、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、DBアクセステーブル513内の“ON/OFF”フラグを、“ON”に更新する(ステップS1409)。そして、第1のSQLサーバ100_1〜第nのSQLサーバ100_nは、更新した旨(OK)を、第1のMPサーバ111に通知する(ステップS1410)。
【0136】
その後、第1のMPサーバ111内の、演算部1103が、HDD1105に格納されているデータに対して、暗号化処理を施す(ステップS1411)。その後、演算部1103は、暗号化処理が施された後のデータを、テープドライブ1106に格納する(ステップS1412)。
【0137】
上述した処理手順によりバックアップが行われる。このバックアップの際、上述した処理手順を行うことで、第1のSQLサーバ100_1〜第nのSQLサーバ100_nが保持する最新のデータがどのDBサーバに格納されているかを示すデータと、DBサーバに格納されているデータと、を間の整合をとることができる。
【0138】
第1の制御システム1側で行われる処理手順について説明する。図16は、第1の制御システム1側で行われる処理手順を示したシーケンス図である。
【0139】
まず、端末装置180_1は、SQLサーバ100_1〜100_nの全て又は一部のIPアドレスを有している。そして、端末装置180_1は、各SQLサーバのトランザクション処理負荷が均等になるようにラウンドロビン方式で1つのSQLサーバを選択する(ステップS1501)。なお、図16に示すシーケンスでは、第1のSQLサーバ100_1が選択されたものとする。
【0140】
そして、端末装置180_1は、選択された第1のSQLサーバ100_1に対して、トランザクション要求を送信する(ステップS1502)。
【0141】
次に、第1のSQLサーバ100_1が、トランザクションを受信した場合、自サーバ内の端末対応テーブル511を参照し、トランザクションの送信元を示す端末識別IDと対応付けられている優先制御システム、DBシステム番号、及びデータベースを識別する情報(データベース番号)を取得する。そして、システム判定部607が、優先制御システムが第1の制御システム1であるか否かを判定する(ステップS1503)。第1の制御システム1ではないと判定した場合(ステップS1503:No)、図17で示した処理手順の処理を行う。
【0142】
一方、システム判定部607が、優先制御システムが第1の制御システム1であると判定した場合(ステップS1503:Yes)、選択部602が、更新要求の出力先として、第1のDBシステム120_1〜第mのDBシステム120_mのうち、いずれか一つのDBシステムのDBサーバを選択する(ステップS1504)。
【0143】
さらに、読出要求部603が、取得したDBシステム番号、及びデータベース番号で識別されるDBサーバがアクセス可能か否かを判定する(ステップS1505)。アクセスできないと判定した場合(ステップS1505:No)、図17で示した処理手順の処理を行う。
【0144】
読出要求部603がアクセス可能と判定した場合(ステップS1505:Yes)、データにアクセスするためのステートメントを送信し(ステップS1506)、取得したDBシステム番号及びデータベース番号で示される第1−1DBサーバ121_1から、データを参照する(ステップS1507)。そして、第1−1DBサーバ121_1は、当該参照結果を応答として返す(ステップS1508)。
【0145】
このステップS1506〜S1508の処理は、トランザクションの数に応じて繰り返す。例えば、更新要求を示すトランザクションを受信していた場合、更新要求部605が、更新のため、データにアクセスするためのステートメントを送信する(ステップS1506)。そして、第1−1DBサーバ121_1は、データの更新を行い(ステップS1507)、当該更新が適切に行われた旨を応答として返す(ステップS1508)。なお、更新を行う際に、トランザクションログ更新部609は、当該更新をトランザクションログとして、第1のSQLサーバ100_1の記憶装置505のトランザクションログ記憶部1011に記憶する。
【0146】
そして、第1のSQLサーバ100_1は、端末装置180_1に対してトランザクション応答を送信する(ステップS1509)。
【0147】
その後、第1のSQLサーバ100_1は、更新を行った第1の制御システム1の第1のDBシステム120_1と、転送先テーブル514で対応付けられている第2の制御システム2の第1のSQLサーバ150_1に対して、図17に示す処理手順で、第1の制御システムと第2の制御システム2との間のDB同期のための制御を行うことになる(ステップS1510)。
【0148】
次に、第2の制御システム2側で行われる処理手順について説明する。図17は、第2の制御システム2側で行われる処理手順を示したシーケンス図である。
【0149】
まず、第1の制御システム1のシステム同期制御部608が、第2の制御システム2の第1のSQLサーバ150_1に対して、トランザクション要求(転送)又はDB同期要求を送信する(ステップS1601)。
【0150】
これに伴い、第1のSQLサーバ150_1のトランザクションログ更新部609は、トランザクション要求(転送)又はDB同期要求に含まれる更新内容を、記憶装置505のトランザクションログ記憶部505に保存する(ステップS1602)。
【0151】
次に第1のSQLサーバ150_1の選択部602が、更新先のDBシステムと、当該DBシステムに含むDBサーバと、を選択する(ステップS1603)。この際、端末対応テーブル511よりアクセス先として、レプリケーション用のDBサーバである、第1−2DBサーバ172_1が選択されたものとする。
【0152】
その後、更新要求部605が、更新のため、データにアクセスするためのステートメントを送信する(ステップS1604)。そして、第1−2DBサーバ172_1は、当該ステートメントに従ってデータの更新を行う(ステップS1605)。その後、第1−2DBサーバ172_1は、当該更新が適切に行われた旨を応答として返す(ステップS1606)。
【0153】
そして、第1のSQLサーバ150_1は、第1の制御システム1のSQLサーバ100_1に対してトランザクション応答を送信する(ステップS1607)。
【0154】
そして、システム同期制御部608が、ステップS1605で行われた更新が、第1の制御システム1からの同期要求であるか否かを判定する(ステップS1608)。同期要求であると判定した場合(ステップS1608:Yes)、すでに第1の制御システム1で更新は行われているため、処理を終了する。
【0155】
一方、システム同期制御部608が、同期要求ではないと判定した場合(ステップS1608:No)、第1の制御システム1に対してDB同期要求を送信する(ステップS1609)。
【0156】
次にDBサーバが停止した場合に行われる処理手順について説明する。図18は、第1の制御システム1でDBサーバが停止した場合の処理手順を示したシーケンス図である。
【0157】
まず、第1−1DBサーバ121_1が停止したものとする(ステップS1701)。次に、第1のSQLサーバ100_1の停止検出部610が、第1−1DBサーバ121_1の停止を検出する(ステップS1702)。
【0158】
その後、切替制御部611が、第2の制御システム2からの第1−2DBサーバ122_1へのトランザクションを保留し、受信したトランザクションを記憶装置505内に一時的に記憶する(ステップS1703)。
【0159】
そして、参照、追加、又は更新先となるDBサーバが、第1−1DBサーバ121_1から、第1−2DBサーバ122_1に切り替わる(ステップS1704)。
【0160】
その後、切替制御部611は、端末対応テーブル511で、優先制御システムが第1の制御システム1に設定されている場合、当該第1の制御システム1を第2の制御システム2に変更する(ステップS1705)。
【0161】
次に、ログ取得要求部612が、転送先テーブル514から、トランザクションの取得先のSQLサーバを選択する(ステップS1706)。当該選択では、停止したDBサーバを含むDBシステムと対応付けられているSQLサーバを選択する。本シーケンスでは、第1のSQLサーバ150_1が選択されたものとする。
【0162】
そして、ログ取得要求部612が、第1のSQLサーバ150_1に対して、トランザクションログの取得要求を送信する(ステップS1707)。次に、第1のSQLサーバ150_1が、記憶装置505のトランザクションログ記憶部1011から、送信元の第1のSQLサーバ100_1と対応付けられているトランザクションログを読み出す(ステップS1708)。
【0163】
そして、第2の制御システム2の第1のSQLサーバ150_1は、読み出したトランザクションログを添付して、トランザクション取得応答を送信する(ステップS1709)。
【0164】
その後、第1の制御システム1の更新要求部605が、第1−2DBサーバ122_1に対して、送信されてきたトランザクションログに基づいて、データにアクセスするためのステートメントを送信すると共に、保留されていたトランザクションに基づくデータにアクセスするためのステートメントを送信する(ステップS1710)。これにより、第1−2DBサーバ122_1の同期が完了した。
【0165】
そして、切替制御部611が、トランザクションの保留を解除する(ステップS1711)。その後、切替制御部611が、ステップS1705で更新された、端末対応テーブル511の優先制御システムを元の状態に戻す(ステップS1712)。
【0166】
上述した処理手順を用いることで、トランザクション処理では、これらの一連の処理の最中は、第2の制御システム2で処理される。このため、復旧まである程度時間を要してもサービスへの影響を最小限にとどめることができる。
【0167】
さらに、第1の制御システム1のSQLサーバは、第2の制御システム2のSQLサーバからトランザクションログを取得して、該当する制御システムに関わるデータの同期要求が完了していることを確認してもよい。
【0168】
本実施形態では、第1の制御システム1と、第2の制御システム2と、の間のデータ同期を非同方式とし、第1の制御システム1及び第2の制御システム2のうちいずれか一方を遠隔地に配置することが可能である。
【0169】
以上の動作により、DBサーバが停止した場合にも、トランザクションを消失させることなく、以降の処理を、予備用のDBサーバに切り替えて行うことができる。上述した処理手順で、他方の制御システムに格納されていたログでトランザクションの復旧が可能とした。これにより、DBシステムに含まれているDBサーバの間を通常では非同期(一方のDBサーバを更新した後、他方のDBサーバの更新を待たずにトランザクション処理を完了させ、一定時間ごとにまとめてデータ更新を行う方式)とすることができる。非同期とすることで、本実施形態にかかる制御システムのトランザクション処理能力が飛躍的に向上させることができる。
【0170】
上述した実施形態及び変形例では、データベースの参照よりも負荷の高い更新を分散させることで、複数のデータベース間の処理負荷を均一にすることができる。このように、処理負荷を均一にすることで、データベースの性能低下を抑止できる。さらには、必要以上の性能の実装を不要にできる。
【0171】
上述した実施形態及び変形例にかかる第1のSQLサーバ100_1〜第nのSQLサーバ100_nで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0172】
また、上述した実施形態及び変形例にかかる第1のSQLサーバ100_1〜第nのSQLサーバ100_nで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施形態及び変形例にかかる第1のSQLサーバ100_1〜第nのSQLサーバ100_nで実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【0173】
また、上述した実施形態及び変形例にかかる第1のSQLサーバ100_1〜第nのSQLサーバ100_nで実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0174】
上述した実施形態及び変形例にかかる第1のSQLサーバ100_1〜第nのSQLサーバ100_nで実行されるプログラムは、上述した各部(端末要求受付部、選択部、読出要求部、サーバ同期制御部、更新要求部)を含むモジュール構成となっており、実際のハードウェアとしては演算部503が上記記憶媒体からプログラムを読み出して実行することにより上記各部がメモリ504上にロードされ、端末要求受付部、選択部、読出要求部、サーバ同期制御部、更新要求部がメモリ504上に生成されるようになっている。
【0175】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0176】
1…第1の制御システム、2…第2の制御システム、100_1〜100_n,151_1〜151_n…SQLサーバ、111,112,161,162…MPサーバ、120_1〜120m,170_1〜170m…DBシステム、121_1〜121_4,122_1〜122_4,171_1〜171_4,172_1〜172_4…DBサーバ、180_1〜180_k…端末装置、191…オペレータ端末、192…構成管理装置、201…呼制御システム、250…IP網、251_1,251_2,251_l…小型ITX装置、260…ショートメッセージサービスセンター、260…PHS網、501…外部I/F、502…サーバI/F、503…演算部、504…メモリ、505…記憶装置、511…端末対応テーブル、512…更新テーブル、513…DBアクセステーブル、514…転送先テーブル、601…端末要求受付部、602…選択部、603…読出要求部、604…サーバ同期制御部、605…更新要求部、606…制御部、607…システム判定部、608…システム同期制御部608、609…トランザクションログ更新部、610…停止検出部、611…切り替え制御部、612…ログ取得要求部、1001…SQL_I/F、1002…演算部、1003…メモリ、1004…記憶装置、1005…DB_I/F、1011…トランザクションログ記憶部、1021…レプリケーション制御部、1101…オペレータI/F、1102…外部I/F、1103…演算部、1104…メモリ、1105…HDD、1106…テープドライブ、1107…内部I/F


【特許請求の範囲】
【請求項1】
複数のデータベースサーバと、複数の予備用データベースサーバと、当該複数のデータベースサーバが保持するデータベースにアクセスする複数のデータベースアクセス装置と、を備える複数の負荷分散システムにおいて、
前記複数の負荷分散システムのそれぞれは、
前記複数のデータベースサーバが、
前記負荷分散システムの記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する対応記憶手段を備え、
前記複数のデータベースサーバが備える前記対応記憶手段には同一の前記識別情報が格納され、
前記複数の予備用データベースサーバが、
前記負荷分散システムの記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶するレプリケーション用対応記憶手段と、
前記レプリケーション用対応記憶手段に、前記複数のデータベースの前記対応記憶手段に記憶された前記識別情報と前記関連情報とを非リアルタイムに複製する複製手段と、を備え、
前記データベースアクセス装置が、
前記複数のデータベースサーバから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新対象となるデータベースサーバを選択する選択手段と、
前記選択手段で選択された前記データベースサーバに対して、前記識別と前記対応記憶手段で対応付けられた前記関連情報の更新要求を行う更新要求手段と、
前記更新要求による更新の履歴情報を記憶する履歴記憶手段と、
前記識別情報と、前記更新要求手段が当該識別情報と対応付けられた関連情報について最後に更新要求を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求手段と、
前記複数のデータベースサーバのそれぞれを示すサーバ識別情報と、他方の負荷分散システムに含まれている前記データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する転送先記憶手段と、
前記更新要求手段により更新が行われた前記データベースサーバを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられた前記装置識別情報で示される、前記他方の負荷分散システムの前記データベースアクセス装置に対して、前記更新要求手段が行った前記更新要求を送信するシステム制御手段と、を備える、
負荷分散システム。
【請求項2】
前記データベースアクセス装置が、
前記データベースを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けらる前記装置識別情報で示される、前記データベースアクセス装置が備える前記履歴記憶手段に記憶された前記履歴情報を取得する履歴取得手段をさらに備え、
前記更新要求手段は、前記履歴取得要求手段が取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行う、
請求項1に記載の負荷分散システム。
【請求項3】
前記データベースアクセス装置は、
前記複数のデータベースサーバのうち、いずれか一つが正常に起動しなくなった場合に、正常に起動しなくなったデータベースの複製先の前記予備用データベースサーバを前記選択手段の選択対象に切り替えるとともに、当該予備用データベースサーバに対する更新要求を停止させるサーバ切替手段と、
前記サーバ切替手段で前記予備用データベースサーバが選択対象に切り替えられた後、当該予備用データベースサーバに対する更新要求を示す更新要求情報を一時的に記憶する要求記憶手段と、
前記更新要求手段は、さらに、取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行った後、前記要求記憶手段に記憶されていた前記更新要求情報で示された更新要求を、前記レプリケーション用対応記憶手段に行う、
請求項2に記載の負荷分散システム。
【請求項4】
正常に起動しなくなったデータベースサーバを含む第1の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡していた端末装置を、第2の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡すよう、前記端末装置の接続先を切り替える切替手段を、さらに備える請求項1乃至3のいずれか一つに記載の負荷分散システム。
【請求項5】
記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する複数のデータベースサーバと、前記複数のデータベースサーバと非リアルタイムに同期する複数の予備用データベースサーバと、ネットワークを介して接続されたデータアクセス装置において、
前記複数のデータベースサーバのそれぞれを示すデータベース識別情報を複数記憶するデータベース記憶手段と、
前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報を追加する制御手段と、
前記データベース記憶手段に記憶された複数のデータベース識別情報で示される前記複数のデータベースから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新の対象となるデータベースサーバを選択する選択手段と、
前記選択手段で選択された前記データベースに対して、前記識別情報と前記データベースサーバで対応付けられた前記関連情報の更新要求を行う更新要求手段と、
前記更新要求による更新の履歴情報を記憶する履歴記憶手段と、
前記識別情報と、前記更新要求手段が当該識別情報と対応付けられた関連情報について最後に更新要求を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求手段と、
前記複数のデータベースサーバのそれぞれを示すサーバ識別情報と、他方の負荷分散システムに含まれている前記データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する転送先記憶手段と、
前記更新要求手段により更新が行われた前記データベースサーバを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられた前記装置識別情報で示される、前記他方の負荷分散システムの前記データベースアクセス装置に対して、前記更新要求手段が行った前記更新要求を送信するシステム制御手段と、
を備えるデータアクセス装置。
【請求項6】
前記データベースを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられていた前記装置識別情報で示される、前記データベースアクセス装置が備える前記履歴記憶手段に記憶された前記履歴情報を取得する履歴取得手段を、さらに備え、
前記更新要求手段は、前記履歴取得要求手段が取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行う、
請求項5に記載のデータベースアクセス装置。
【請求項7】
前記複数のデータベースサーバのうち、いずれか一つが正常に起動しなくなった場合に、正常に起動しなくなったデータベースの複製先の前記予備用データベースサーバを前記選択手段の選択対象に切り替えるとともに、当該予備用データベースサーバに対する更新要求を停止させるサーバ切替手段と、
前記サーバ切替手段で前記予備用データベースサーバが選択対象に切り替えられた後、当該予備用データベースサーバに対する更新要求を示す更新要求情報を一時的に記憶する要求記憶手段と、
前記更新要求手段は、さらに、取得した前記履歴情報で示された更新要求を、前記レプリケーション用対応記憶手段に対して行った後、前記要求記憶手段に記憶されていた前記更新要求情報で示された更新要求を、前記レプリケーション用対応記憶手段に行う、
請求項6に記載のデータベースアクセス装置。
【請求項8】
正常に起動しなくなったデータベースサーバを含む第1の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡していた端末装置を、第2の負荷分散システムの前記データベースアクセス装置に更新要求を受け渡すよう、前記端末装置の接続先を切り替える切替手段を、さらに備える請求項5乃至7のいずれか一つに記載のデータベースアクセス装置。
【請求項9】
複数のデータベースサーバ、複数の予備用データベースサーバ、及び当該複数のデータベースサーバが保持しているデータベースにアクセスする複数のデータベースアクセス装置で実行される負荷分散方法であって、
複数のデータベースサーバは、記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する対応記憶手段を備え、
複数の予備用データベースサーバは、前記負荷分散システムの記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶するレプリケーション用対応記憶手段を備え、
前記データベースアクセス装置は、
前記更新要求による更新の履歴情報を記憶する履歴記憶手段と、
前記識別情報と、当該識別情報と対応付けられた関連情報について最後に更新を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記複数のデータベースサーバのそれぞれを示すサーバ識別情報と、他方の負荷分散システムに含まれている前記データベースアクセス装置を示す装置識別情報と、を対応付けて記憶する転送先記憶手段と、を備え、
前記予備用データベースサーバでは、複製手段が、前記レプリケーション用対応記憶手段に、前記複数のデータベースの前記対応記憶手段に記憶された前記識別情報と前記関連情報とを非リアルタイムに複製する複製ステップと、を有し、
前記データベースアクセス装置では、選択手段が、前記複数のデータベースサーバから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新対象となるデータベースサーバを選択する選択ステップと、
更新要求手段が、前記選択ステップで選択された前記データベースサーバに対して、前記識別情報と前記対応記憶手段で対応付けられた前記関連情報の更新要求を行う更新要求ステップと、
読出要求手段が、前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求ステップと、
システム制御手段が、前記更新要求ステップにより更新が行われた前記データベースサーバを示す前記サーバ識別情報と、前記転送先記憶手段で対応付けられた前記装置識別情報で示される、前記他方の負荷分散システムの前記データベースアクセス装置に対して、前記更新要求ステップが行った前記更新要求を送信するシステム制御手段と、を有する、
負荷分散方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2013−65120(P2013−65120A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−202459(P2011−202459)
【出願日】平成23年9月15日(2011.9.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】