説明

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

【課題】増設時の負担を軽減する。
【解決手段】実施形態の負荷分散システムは、複数のデータベースサーバと、データベースアクセス装置と、を備える。データベースアクセス装置は、データベース記憶手段と、選択手段と、更新要求手段と、識別情報記憶手段と、読出要求手段と、制御手段と、を備える。データベース記憶手段は、データベースサーバを示すデータベース識別情報を記憶する。制御手段は、データベース記憶手段に、データベース識別情報を追加する。選択手段は、複数のデータベース識別情報から、データベースサーバを選択する。更新要求手段は、選択されたデータベースサーバに対して、識別情報と対応記憶手段で対応付けられた関連情報を更新する。識別情報記憶手段は、識別情報とデータベース識別情報とを対応付けて記憶する。読出要求手段は、識別情報と対応記憶手段で対応付けられた関連情報を、識別情報と識別情報記憶手段で対応付けられたデータベース識別情報で識別されるデータベースサーバから読み出す。

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

【特許請求の範囲】
【請求項1】
複数のデータベースサーバと、当該複数のデータベースサーバが保持するデータベースにアクセスするデータベースアクセス装置と、前記データベースサーバと前記データベースアクセス装置との間に配置されたスイッチ装置と、を備える負荷分散システムにおいて、
複数のデータベースサーバはそれぞれ、
前記負荷分散システムの記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する対応記憶手段を備え、
前記複数のデータベースサーバが備える前記対応記憶手段にはそれぞれ同一の前記識別情報が格納され、
前記データベースアクセス装置は、
前記複数のデータベースサーバのそれぞれを示すデータベース識別情報を複数記憶するデータベース記憶手段と、
前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報を追加する制御手段と、
前記データベース記憶手段に記憶された複数のデータベース識別情報で示される前記複数のデータベースから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新の対象となるデータベースサーバを選択する選択手段と、
前記選択手段で選択された前記データベースに対して、前記識別情報と前記対応記憶手段で対応付けられた前記関連情報の更新要求を行う更新要求手段と、
前記識別情報と、前記更新要求手段が当該識別情報と対応付けられた関連情報について最後に更新要求を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求手段と、
を備える負荷分散システム。
【請求項2】
前記データベースアクセス装置は、
前記データベースサーバ識別情報と、当該データベースサーバに対して更新を行う比率情報と、を対応付けて記憶する比率記憶手段を、さらに備え、
前記選択手段は、前記記憶として、前記比率記憶手段に記憶された各データベースサーバと対応付けられた比率情報に基づいて、更新対象となるデータベースサーバを選択し、
前記制御手段は、前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報と、当該データベースサーバに対して更新を行う比率情報と、を対応付けて追加する、
請求項1に記載の負荷分散システム。
【請求項3】
前記負荷分散システムは、前記データベースアクセス装置を複数備え、
前記データベースアクセス装置は、
データベースサーバを識別するデータベースサーバ識別情報と、データベースアクセス装置を識別するデータベースアクセス識別情報と、を対応付けて記憶する対応関係記憶手段と、
前記選択手段により選択された前記データベースサーバを識別するデータベースサーバ識別情報と、前記対応関係記憶手段で対応付けられた前記データベースアクセス識別情報で識別されるデータベースアクセス装置に対して、前記関連情報の更新要求を通知する更新要求通知手段と、をさらに備え、
前記制御手段は、前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報と、当該データベースサーバに対して更新を行うデータベースアクセス装置を識別するデータベースアクセス識別情報と、を対応付けて追加する、
請求項1又は2に記載の負荷分散システム。
【請求項4】
記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する複数のデータベースサーバとネットワークを介して接続されたデータアクセス装置において、
前記複数のデータベースサーバのそれぞれを示すデータベース識別情報を複数記憶するデータベース記憶手段と、
前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報を追加する制御手段と、
前記データベース記憶手段に記憶された複数のデータベース識別情報で示される前記複数のデータベースから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新の対象となるデータベースサーバを選択する選択手段と、
前記選択手段で選択された前記データベースに対して、前記識別情報と前記データベースサーバで対応付けられた前記関連情報の更新要求を行う更新要求手段と、
前記識別情報と、前記更新要求手段が当該識別情報と対応付けられた関連情報について最後に更新要求を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、
前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求手段と、
を備えるデータアクセス装置。
【請求項5】
前記データベースサーバ識別情報と、当該データベースサーバに対して更新を行う比率情報と、を対応付けて記憶する比率記憶手段を、さらに備え、
前記選択手段は、前記記憶として、前記比率記憶手段に記憶された各データベースサーバと対応付けられた比率情報に基づいて、更新対象となるデータベースサーバを選択し、
前記制御手段は、前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報と、当該データベースサーバに対して更新を行う比率情報と、を対応付けて追加する、
請求項4に記載のデータアクセス装置。
【請求項6】
データベースサーバを識別するデータベースサーバ識別情報と、データベースアクセス装置を識別するデータベースアクセス識別情報と、を対応付けて記憶する対応関係記憶手段と、
前記選択手段により選択された前記データベースサーバを識別するデータベースサーバ識別情報と、前記対応関係記憶手段で対応付けられた前記データベースアクセス識別情報で識別されるデータベースアクセス装置に対して、前記関連情報の更新要求を通知する更新要求通知手段と、をさらに備え、
前記制御手段は、前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報と、当該データベースサーバに対して更新を行うデータベースアクセス装置を識別するデータベースアクセス識別情報と、を対応付けて追加する、
請求項4又は5に記載のデータアクセス装置。
【請求項7】
データベースアクセス装置及び複数のデータベースサーバで実行される負荷分散方法であって、
複数のデータベースサーバは、記憶対象として固有の識別情報と、当該識別情報に紐づく関連情報と、を対応付けて記憶する対応記憶手段を備え、
前記データベースアクセス装置は、
前記複数のデータベースサーバのそれぞれを示すデータベース識別情報を複数記憶するデータベース記憶手段と、
前記識別情報と、当該識別情報と対応付けられた関連情報について最後に更新を行った前記データベースサーバを識別するデータベース識別情報と、を対応付けて記憶する識別情報記憶手段と、を備え、
制御手段が、前記データベース記憶手段に対して、新たに増設されたデータベースを示すデータベース識別情報を追加する制御ステップと、
選択手段が、前記データベース記憶手段に記憶された複数のデータベース識別情報で示される前記複数のデータベースから、負荷が各データベースサーバに分散するよう定められた規則に従って、更新の対象となるデータベースサーバを選択する選択ステップと、
更新要求手段が、前記選択ステップで選択された前記データベースに対して、前記識別情報と前記対応記憶手段で対応付けられた前記関連情報の更新要求を行う更新要求ステップと、
読出要求手段が、前記データベースアクセス装置は、前記識別情報と前記対応記憶手段で対応付けられた前記関連情報を、当該識別情報と前記識別情報記憶手段で対応付けられた前記データベース識別情報で識別される前記データベースサーバに対して読み出しを要求する読出要求ステップと、
を有する負荷分散方法。

【図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

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate