(57)【要約】本元明の目的は、クエリーを解釈し、負荷分散可能なクエリーをデータベースサーバに振り分けることにより負荷を分散するデータベース負荷軽減システムおよび負荷軽減プログラムを提供することである。データベース負荷軽減システムにおいて、クエリー解釈型ロードバランサ１は、ユーザ端末１０から受信したクエリーを解釈して、負荷分散が可能なクエリーか否か判断する。そして、負荷分散が可能なクエリーを、負荷分散アルゴリズムにより順次データベースサーバ２−１〜２−ｎの内の１つに振り分けて負荷を分散する。一方、データの書き込みなどの負荷分散できないクエリーの場合は、複製して全てのデータベースサーバ２−１〜２−ｎに送信し、データベースの整合性を保持する。
2004063928.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースサーバと、該複数のデータベースサーバを管理する負荷軽減装置とを備えるデータベース負荷軽減システムであって、
前記負荷軽減装置は、
受信したクエリーを解釈して、データベースサーバの負荷分散を行うことが可能なクエリーか否か判断するクエリー解釈手段と、
該クエリー解釈手段により負荷分散が可能と判断されたクエリーをデータベースサーバへ順次振り分け、送信するクエリー振り分け手段と、
前記クエリー解釈手段により負荷分散ができないと判断されたクエリーを複製する複製手段と、
該複製手段により複製されたクエリーを、管理する全てのデータベースサーバに送信するクエリー送信手段と、
を具備することを特徴とするデータベース負荷軽減システム。
【請求項２】
前記クエリー解釈手段は、受信したクエリーがデータの読み込みを行う正規表現か否か判断し、読み込みを行う正規表現の場合、負荷分散を行うことが可能なクエリーであると判断することを特徴とする請求項１に記載のデータベース負荷軽減システム。
【請求項３】
前記クエリー振り分け手段は、前記クエリー解釈手段により負荷分散が可能と判断されたクエリーを、所定の負荷軽減アルゴリズムを用いることにより、複数のデータベースサーバの内の１つを、順に、かつループ状に選択して振り分けることを特徴とする請求項１に記載のデータベース負荷軽減システム。
【請求項４】
前記クエリー送信手段は、前記複製手段により複製されたクエリーを、既に振り分けられたクエリーに続き、次に受信する負荷分散可能なクエリーを振り分ける予定のデータベースサーバから始め、順次全てのデータベースサーバに送信することを特徴とする請求項１に記載のデータベース負荷軽減システム。
【請求項５】
複数のデータベースサーバと、該複数のデータベースサーバを管理する負荷軽減装置とを備えるデータベース負荷軽減システムにおいて、
受信したクエリーを解釈して、データベースサーバの負荷分散を行うことが可能なクエリーか否か判断する機能と、負荷分散が可能と判断されたクエリーをデータベースサーバへ、負荷分散アルゴリズムにより順次振り分け、送信する機能と、負荷分散ができないと判断されたクエリーを複製する機能と、複製されたクエリーを、管理する全てのデータベースサーバに送信する機能とをコンピュータに実行させることを特徴とする負荷軽減プログラム。
【発明の詳細な説明】
【技術分野】  本発明は、データベースの負荷軽減システムに係わり、特に、クエリーを解釈して複数のデータベースサーバに順次振り分け、負荷を軽減するデータベース負荷軽減システムおよび負荷軽減プログラムに関する。
【背景技術】  近年、インターネットの普及により、コンピュータネットワークを介してデータベースを利用するユーザが急激に増加している。ユーザのデータベースに対するクエリーが多発すると、データベースを提供するサーバは負荷の増加によって性能が低下し、クエリーを発してからクエリーの結果を取得するまでの処理時間が長くなる。特に、データベースへのアクセスに同期アクセスを用いている場合、クエリーの結果を取得して次の処理に進むまでの時間が長くなり、操作性が悪化する。従って、データベースサーバの負荷を軽減し、多数のユーザのクエリーを効率的に処理する技術が必要になる。
従来、データベースサーバの負荷を軽減する手法として、複数のデータベースサーバを設置し、クエリーを複数のデータベースサーバの内のどれか１台に振り分けることにより、各データベースサーバの負荷を抑える手法があ（例えば、非特許文献１）る。この手法を用いた場合の複数のデータベースにおける内容の同期、整合性保持のためには、ファイルサーバを用いる手法があり、各データベースサーバは、ファイルサーバに設置したデータベースを共有することにより、内容の整合性を保持できる。
上述した従来のクエリーを振り分ける方法では、複数のデータベースサーバの内の１台にのみ新規データの追加や更新手続きのクエリーが振り分けられた場合、各データベースサーバが提供するデータベースの内容が異なることになり、データベースの整合性を保持できないという問題があった。また、整合性保持のためにファイルサーバを用いる場合、データベースを共有させるファイルサーバに負荷が集中することになり、データベースを提供するシステムの性能が低下する。この性能低下を避けるためには、ファイルサーバに膨大なリソースを備えなければならないという問題があった。
【発明の開示】
本発明の目的は、ユーザのデータベースサーバへのクエリーを解釈してクエリーの種類を分け、負荷分散が可能なクエリーの場合、複数のデータベースサーバに振り分けることによって効果的に負荷分散を行い、負荷分散に適しないデータ書き込みなどのクエリーの場合、全てのデータベースサーバに実行してデータベースの整合性を保持するデータベース負荷軽減システムおよび負荷軽減プログラムを提供することである。
本発明の要旨は、複数のデータベースサーバと、該複数のデータベースサーバを管理する負荷軽減装置とを備えるデータベース負荷軽減システムであって、前記負荷軽減装置は、受信したクエリーを解釈して、データベースサーバの負荷分散を行うことが可能なクエリーか否か判断するクエリー解釈手段と、該クエリー解釈手段により負荷分散が可能と判断されたクエリーをデータベースサーバへ順次振り分け、送信するクエリー振り分け手段と、前記クエリー解釈手段により負荷分散ができないと判断されたクエリーを複製する複製手段と、該複製手段により複製されたクエリーを管理する全てのデータベースサーバに送信する手段とを具備することを特徴とするデータベース負荷軽減システムである。
上記構成は、データベースサーバへの負荷の分散と複数のデータベースの整合性の保持を実現するものとして好適である。
また、本発明の要旨は、上記データベース負荷軽減システムにおいて、前記クエリー解釈手段が、受信したクエリーがデータの読み込みを行う正規表現か否か判断し、読み込みを行う正規表現の場合、負荷分散を行うことが可能なクエリーであると判断する。
また、本発明の要旨は、上記データベース負荷軽減システムにおいて、前記クエリー振り分け手段が、前記クエリー解釈手段により負荷分散が可能と判断されたクエリーを、所定の負荷軽減アルゴリズムを用いることにより、複数のデータベースサーバの内の１つを、順に、かつループ状に選択して振り分ける。
また、本発明の要旨は、上記データベース負荷軽減システムにおいて、前記クエリー実行手段が、前記複製手段により複製されたクエリーを、既に振り分けられたクエリーに続き、次に受信する負荷分散可能なクエリーを振り分ける予定のデータベースサーバから始め、順次全てのデータベースサーバに送信する。
以上説明したように、本発明によれば、クエリーを解釈して、負荷分散可能なクエリーの場合は、複数のデータベースサーバにラウンドロビン方式等の負荷分散アルゴリズムにより順次振り分けて負荷を分散させ、一方、データベースへの書き込み処理を必要とするクエリーの場合は、全てのデータベースサーバに送信して実行するので、データベースの整合性を保持しながら、負荷を分散できるため、負荷の増加によるデータベースサーバの性能低下を防ぎ、かつデータベースの信頼性を維持できるという効果が得られる。
【図面の簡単な説明】
【図１】  本発明の一実施の形態を示す概念図である。
【図２】  “ｕｐｄａｔｅ”文などの処理を示す概念図である。
【発明を実施するための最良の形態】  以下、図面を参照して本発明の一実施の形態について説明する。図１は、同実施形態を示す概念図である。同図において、２−１〜２−ｎ（ｎは正の整数）は、データベースを提供するデータベースサーバである。データベースサーバ２−１〜２−ｎの台数は、クエリーの数量を考慮して算出される必要な負荷軽減率に基づいて定められる。１は、ユーザ端末１０から受信したクエリーを解釈し、クエリーをデータベースサーバ２−１〜２−ｎのいずれか１つに振り分け、送信する、あるいは、全てのデータベースサーバ２−１〜２−ｎにクエリーを送信する負荷軽減装置（以下、クエリー解釈型ロードバランサと呼ぶ）である。
クエリー解釈型ロードバランサ１は、ユーザ端末１０からのクエリーを解釈し、クエリーが負荷分散可能なクエリーか否かを判断する。ここで、データベースサーバに対するクエリーは、データベースを操作するためのプログラミング言語として最も広く普及しているＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）によって記述されているものとする。クエリー解釈型ロードバランサ１は、このＳＱＬの内容に着目して、判断する。例えば、“ｓｅｌｅｃｔ”文などで表現されるデータベース参照系のクエリーは、データベースの読み込みを行うため、負荷分散の可能なクエリーであると判断する。
ＰｏｓｔｇｒｅＳＱＬによる“ｓｅｌｅｃｔ”文の正規表現の例を次に示す。
＾Ｑ［＼ｔΔ］＊ｓｅｌｅｃｔ［＼ｔΔ］＋．＊；＄
ＰｏｓｔｇｒｅＳＱＬでは、ＳＱＬ文の先頭の“＾”に続いてクエリー識別文字“Ｑ”を付与してクエリーであることを宣言する。上記の例に示すように、“Ｑ”の後に、“ｓｅｌｅｃｔ”文が記載される。“Ｑ”と“ｓｅｌｅｃｔ”文の間にはスペースまたはＴＡＢが含まれても良い。負荷分散の可能なクエリーであることを判断するには、この正規表現を用いて“ｓｅｌｅｃｔ”文などで表現されるデータベースの参照のみを行う参照系のクエリーで有るか否かを判定する。
なお、上述したクエリー解釈型のロードバランサ１へのクエリーは、特別な構成のクエリーではなく、一般的なデータベースサーバへのクエリーを利用できる。
その他、この正規表現に一致しないクエリー、例えば、“ｕｐｄａｔｅ”文、“ｉｎｓｅｒｔ”文、“ｄｅｌｅｔｅ”文などで表現されるデータベースのデータを変更する更新系のクエリーは、データベースの書き込み処理を行うため、負荷分散できないクエリーであると解釈する。なお、ＰｏｓｔｇｒｅＳＱＬの例を示したが、使用する言語はこれに限るものではなく、他の言語を使用することも可能である。
クエリー解釈型ロードバランサ１は、負荷分散可能と判断したクエリーを、所定の既存の負荷分散アルゴリズム（ラウンドロビン方式、重みづけ優先順位方式、接続数方式、応答時間方式、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）ヘッダ方式またはこれらの複合型などのアルゴリズム等）、例えば、ラウンドロビンによりデータベースサーバ２−１〜２−ｎに振り分ける。ラウンドロビンは、データベースサーバ２−１〜２−ｎの内の１つを昇順に、かつループ状に選択してクエリーを振り分ける。負荷分散できないクエリーの場合は、ｎ個（データベースサーバの台数）に複製し、全てのデータベースサーバ２−１〜２−ｎに対してクエリーを送信し、実行する。このクエリーは、ラウンドロビンにより既に振り分けられたクエリーに続いて、次に受信する負荷分散可能なクエリーを振り分ける予定のデータベースサーバから始めて、順次全てのデータベースサーバ２−１〜２−ｎに対して送信する。また、クエリー解釈型ロードバランサ１は、データベースサーバ２−１〜２−ｎから各々送信される、クエリーに対応した処理の終了を示す同様な確認データのいずれか一つの確認データ、例えば、データベースサーバ２−１〜２−ｎのいずれかから最後に受信した確認データを、ユーザ端末１０へ送信する。
次に、図１を参照して、本実施の形態の動作を説明する。先ず、ユーザ端末１０から入力されたクエリーは、通信ネットワークを介してクエリー解釈型ロードバランサ１に送られる。クエリー解釈型ロードバランサ１は、このクエリーを解釈して、“ｓｅｌｅｃｔ”文などの参照系のクエリーの正規表現に一致するか否かを判断する。一致する場合、負荷分散可能なクエリーであると判断し、ラウンドロビンに送る。ラウンドロビンは、順次データベースサーバ２−１〜２−ｎの内の１つを昇順に選択してクエリーを振り分け、送信する。
クエリーを受信したデータベースサーバ、例えば、データベースサーバ２−ｉは、クエリーを実行してクエリーの結果をクエリー解釈型ロードバランサ１を介してユーザ端末１０に返す。クエリー解釈型ロードバランサ１は、データベースサーバにクエリーを送信した後、予め定めた時間を経過したにもかかわらずクエリーの結果を取得できない場合、次の順のデータベースサーバにクエリーを振り分ける。
なお、上述のように、“ｓｅｌｅｃｔ”文から成るクエリーを複数のデータベースサーバに振り分けることによる負荷分散の効果をデータベースサーバのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）負荷を計測して評価した結果によれば、クエリー全てが“ｓｅｌｅｃｔ”文などの参照系であり、データベースサーバが２台（ｎ＝２）の場合、ＣＰＵ利用率で平均約６０％改善されるという結果が得られた。
一方、クエリーが、“ｓｅｌｅｃｔ”文の正規表現に一致せず、負荷分散できないクエリーであると判断された場合、このクエリーをｎ個に複製する。図２は、クエリーが、“ｕｐｄａｔｅ”文の場合の処理を示す図である。複製されたクエリーは、先ず、ラウンドロビンにより既に振り分けられたクエリーに続いて、次に受信する負荷分散可能なクエリーを振り分ける予定のデータベースサーバに対して送信される。続いて、順次全てのデータベースサーバ２−１〜２−ｎに対して送信される。クエリーを送信した後、予め定めた時間を経過してもクエリーに対する応答が得られない場合は、次のデータベースサーバへ実行を移す。
【図１】
2004063928.tif 000003
【図２】
2004063928.tif 000004
【国際調査報告】
2004063928.tif 000005
2004063928.tif 000006