(57)【要約】【課題】更新系クエリを実行する場合に、単純な更新系クエリと複雑な更新系クエリの実行負荷を分散させる。【解決手段】クエリの処理内容を解析し分解された単純な更新系クエリと複雑な更新系クエリに対し、第１データを参照し第１データを更新する単純な更新系クエリを第１データを有するデータベースマネージャの全てに実行担当させる単純更新系クエリ振り分け装置１１ｅと、第１データを参照して第２データを更新する複雑な更新系クエリを、第１データが配置されたデータベースと第２データが配置されたデータベースの関係に応じて、クエリを作成し、該クエリに応じたデータベースマネージャに担当させる複雑更新系クエリ振り分け装置１１ｆを適応する。【選択図】図１
2008097399.tif 000002
【特許請求の範囲】
【請求項１】
データを配置された複数のデータベースマネージャに接続され、受信したクエリの処理内容に応じてクエリを実行するデータベースマネージャを選択し、選択されたデータベースマネージャに対して前記受信したクエリの実行負荷を分散するデータベース負荷分散装置であって、
前記データの識別子とそのデータを有するデータベースマネージャの識別子を含む配置情報を記憶した記憶部と、
前記クエリの処理内容を解析するクエリ解析装置と、
第１データを参照する参照系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャを一つ選択して、前記参照系クエリの実行をその選択されたデータベースマネージャに担当させる参照系クエリ振り分け装置と、
第１データを参照し第１データを更新する単純な更新系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャの全てに、前記更新系クエリの実行を担当させる単純更新系クエリ振り分け装置と、
第１データを参照して第２データを更新する複雑な更新系クエリを受信した場合に、前記配置情報を参照して、第１データが配置されたデータベースと第２データが配置されたデータベースの関係に応じたクエリを作成し、該クエリに応じたデータベースマネージャに担当させる複雑更新系クエリ振り分け装置と、
を備えることを特徴とするデータベース負荷分散装置。
【請求項２】
請求項１に記載のデータベース負荷分散装置であって、
前記複雑更新系クエリ振り分け装置は、
前記第１データと第２データの両方が同一のデータベースマネージャに有る場合、前記第１データと第２データの両方が有るデータベースマネージャの全てを選択し、前記データベースマネージャに前記複雑な更新系クエリの実行を担当させる手段と、
前記第１データと第２データが異なるデータベースマネージャに有る場合、前記複雑な更新系クエリを、第１データを参照して更新用データを作成するデータ作成用クエリと、作成した更新用データを利用して第２データを更新するデータ更新用クエリとに分解し、前記第１データが有るデータベースマネージャを一つ選択して前記データ作成用クエリの実行を担当させ、第２データが有るデータベースマネージャの全てに前記データ更新用クエリの実行を担当させる手段と、
を備える
ことを特徴とするデータベース負荷分散装置。
【請求項３】
請求項１または２に記載のデータベース負荷分散装置であって、
前記クエリ解析装置が、前記クエリに関する処理内容を解析した結果に基づく統計情報を計算し、前記記憶部に記憶する手段を備え、
前記記憶部の統計情報を参照し、該統計情報に基づいてデータを再配置するデータベースマネージャを決定し、あるデータベースマネージャから他のデータベースマネージャに対しデータ操作を行い、そのデータ操作結果を前記配置情報に反映するデータ再配置装置、
を有することを特徴とするデータベース負荷分散装置。
【請求項４】
データを配置された複数のデータベースマネージャに接続され、
前記データの識別子とそのデータを有するデータベースマネージャの識別子を含む配置情報を記憶した記憶部を備え、
受信したクエリの処理内容に応じてクエリを実行するデータベースマネージャを選択し、選択されたデータベースマネージャに対して前記受信したクエリの実行負荷を分散する装置が実行するデータベース負荷分散方法であって、
前記クエリの処理内容を解析するクエリ解析ステップと、
第１データを参照する参照系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャを一つ選択して、前記参照系クエリの実行をその選択されたデータベースマネージャに担当させる参照系クエリ振り分けステップと、
第１データを参照し第１データを更新する単純な更新系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャの全てに、前記更新系クエリの実行を担当させる単純更新系クエリ振り分けステップと、
第１データを参照して第２データを更新する複雑な更新系クエリを受信した場合に、前記配置情報を参照して、第１データが配置されたデータベースと第２データが配置されたデータベースの関係に応じたクエリを作成し、該クエリに応じたデータベースマネージャに担当させる複雑更新系クエリ振り分けステップと、
を有することを特徴とするデータベース負荷分散方法。
【請求項５】
請求項４に記載のデータベース負荷分散方法であって、
前記複雑更新系クエリ振り分けステップは、
前記第１データと第２データの両方が同一のデータベースマネージャに有る場合、前記第１データと第２データの両方が有るデータベースマネージャの全てを選択し、前記データベースマネージャに前記複雑な更新系クエリの実行を担当させるステップと、
前記第１データと第２データが異なるデータベースマネージャに有る場合、前記複雑な更新系クエリを、第１データを参照して更新用データを作成するデータ作成用クエリと、作成した更新用データを利用して第２データを更新するデータ更新用クエリとに分解し、前記第１データが有るデータベースマネージャを一つ選択して前記データ作成用クエリの実行を担当させ、第２データが有るデータベースマネージャの全てに前記データ更新用クエリの実行を担当させるステップと、
を有する
ことを特徴とするデータベース負荷分散方法。
【請求項６】
請求項４また５に記載のデータベース負荷分散方法であって、
前記クエリ解析ステップが、前記クエリに関する処理内容を解析した結果に基づく統計情報を計算し、前記記憶部に記憶するステップを有し、
前記記憶部の統計情報を参照し、該統計情報に基づいてデータを再配置するデータベースマネージャを決定し、あるデータベースマネージャから他のデータベースマネージャに対しデータ操作を行い、そのデータ操作結果を前記配置情報に反映するデータ再配置ステップ、
を有することを特徴とするデータベース負荷分散方法。
【請求項７】
請求項４乃至６の何れかに記載のデータベース負荷分散方法を、コンピュータで実行可能なコンピュータプログラムとして記述したことを特徴とするデータベース負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースの負荷分散技術に関するものである。
【背景技術】
【０００２】
複数のデータベースマネージャにデータを重複配置あるいは分散配置し、クエリ文（以下、単にクエリという）の処理内容に応じてクエリの実行を担当するデータベースマネージャを選択することによって、データベースマネージャのクエリの実行負荷を分散する方法として、以下のような方法（例えば、非特許文献１参照）が知られていた。
【０００３】
データが配置されているデータベースマネージャの情報（即ち、配置情報）を予め用意しておき、参照系クエリを受信した場合は、前記配置情報を参照して、参照すべきデータを持つデータベースマネージャを一つ選択して前記の参照系クエリの実行を担当させる。また、更新系クエリを受信した場合は、配置情報を参照して、参照すべきデータと更新すべきデータの両方を持つデータベースマネージャの全てに前記の更新系クエリの実行を担当させる。
【０００４】
なお、前記配置情報は、データの識別子（例えば、データベース名や表名など）とそのデータを有するデータベースマネージャの識別子（例えば、ネットワークアドレスなど）を含む組から構成された一覧表である。
【０００５】
上述の方法によって、データベース負荷分散装置がデータベースマネージャのクエリの実行負荷を分散する動作の一例を図７及び図８に基づいて説明する。なお、図７は装置構成図、図８は動作手順を示すフローチャートである。
【０００６】
図７の装置構成は、クライアント装置Ｃ１〜Ｃｎ，データベース負荷分散装置１，データベースＤ１１１〜Ｄ１１ｎの各々が接続されたデータベースマネージャＤ１１〜Ｄ１ｎから構成される。
【０００７】
また、上記データベース負荷分散装置１は、クエリを解析するクエリ解析装置１ａ，参照系クエリ（例えば、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）におけるＳＥＬＥＣＴ文）を振り分け処理する参照系クエリ振り分け装置１ｂ，配置情報１ｃ，更新系クエリ（例えば、ＳＱＬにおけるＵＰＤＡＴＥ文）を振り分け処理する更新系クエリ振り分け装置１ｄを備えている。なお、配置情報１ｃは、データベース負荷分散装置１に予め備えられた記憶部（例えば、メモリやハードディスク装置）に記憶されているものとする。
【０００８】
図８中の処理の流れとしては、まず、データベース負荷分散装置１の初期化が行われ（Ｓ１０１）、データベース負荷分散装置１にクエリが、例えば、クライアント装置Ｃ１から送信される。
【０００９】
次に、クエリ解析装置１ａは、クエリの処理内容を解析し（Ｓ１０２）、参照系クエリであれば参照系クエリ振り分け装置１ｂに引き渡す。更新系クエリであれば更新系クエリ振り分け装置１ｄに引き渡す（Ｓ１０３）。
【００１０】
そして、参照系クエリ振り分け装置１ｂは、配置情報１ｃを参照して、参照すべきデータを持つデータベースマネージャ（例えば、データベースマネージャＤ１１）を一つ選択し、そのデータベースマネージャＤ１１にクエリを発行し、応答をクライアント装置Ｃ１に返す（Ｓ１０４）。更新系クエリ振り分け装置１ｄは、配置情報１ｃを参照して、参照すべきデータと更新すべきデータの両方を持つデータベースマネージャの全てを選択し、そのデータベースマネージャにクエリを発行（送信）し、応答をクライアントに返す（Ｓ１０５）。
【００１１】
また、上記の動作の一例を図９のシーケンス図を用いて説明する。なお、図９Ａは参照系クエリに関する動作、図９Ｂは更新系クエリに関する動作を示すシーケンス図である。
【００１２】
図９Ａでは、クライアント装置Ｃがデータベース負荷分散装置１にクエリを送信する（Ｍ１０１）。
【００１３】
次に、クエリ解析装置１ａは、クエリの処理内容を解析し、参照系クエリであれば参照系クエリ振り分け装置１ｂに引き渡す（Ｍ１０２）。
【００１４】
そして、参照系クエリ振り分け装置１ｂは、配置情報１ｃを参照して（Ｍ１０３）、参照すべきデータを持つデータベースマネージャ（例えば、データベースマネージャＤ１１）を一つ選択し、そのデータベースマネージャＤ１１にクエリを発行し（Ｍ１０４）、応答をクライアント装置Ｃに返す（Ｍ１０５，Ｍ１０６）。
【００１５】
図９Ｂでは、クライアント装置Ｃがデータベース負荷分散装置１にクエリを送信する（Ｍ１０７）。
【００１６】
次に、クエリ解析装置１ａは、クエリの処理内容を解析し、更新系クエリであれば更新系クエリ振り分け装置１ｄに引き渡す（Ｍ１０８）。
【００１７】
そして、更新系クエリ振り分け装置１ｄは、配置情報１ｃを参照して（Ｍ１０９）、参照すべきデータと更新すべきデータの両方を持つデータベースマネージャ（例えば、データベースマネージャＤ１１〜Ｄ１ｎ）の全てを選択し、そのデータベースマネージャＤ１１〜Ｄ１ｎにクエリを発行し（Ｍ１１０，Ｍ１１１）、応答をクライアント装置Ｃに返す（Ｍ１１２，Ｍ１１３，Ｍ１１４）。
【００１８】
以上のように、従来の方法では、更新系クエリを実行するデータベースマネージャが、参照すべきデータと更新すべきデータの両方を持つ必要があった。例えば、第１データと第２データをデータベースマネージャで管理する場合を考えると次のようであった。
【００１９】
第１データを参照して第１データを更新する単純な更新系クエリと、第２データを参照して第２データを更新する単純な更新系クエリだけを実行するのであれば、第１データと第２データを異なるデータベースマネージャに配置することで、上記２種類の単純な更新系クエリの実行負荷を分散することができる。
【００２０】
しかし、第１データを参照して第１データを更新する単純な更新系クエリと、第２データを参照して第２データを更新する単純な更新系クエリと、第１データを参照して第２データを更新する複雑な更新系クエリを実行するのであれば、第１データと第２データの両方を同じデータベースマネージャに配置する必要があるために、上記２種類の単純な更新系クエリと上記１種類の複雑な更新系クエリの実行負荷を分散することができなかった。
【００２１】
さらに、上述の方法では、データを配置するデータベースマネージャが固定的であった。例えば、第１データと第２データをデータベースマネージャで管理する場合を考えると次のようであった。
【００２２】
第１データを参照して第１データを更新する単純な更新系クエリと、第２データを参照して第２データを更新する単純な更新系クエリと、第１データを参照して第２データを更新する複雑な更新系クエリを実行している状態から、第１データを参照して第１データを更新する単純な更新系クエリと、第２データを参照して第２データを更新する単純な更新系クエリだけを実行する状態に変化したのであれば、第１データと第２データを異なるデータベースマネージャに再配置することで、上記２種類の単純な更新系クエリの実行負荷を分散することができる。
【００２３】
しかし、データを配置するデータベースマネージャが固定的であるために、第１データあるいは第２データを異なるデータベースマネージャに移動して、上記２種類の単純な更新系クエリの実行負荷を動的に分散することができなかった。
【００２４】
また、あるデータを参照する参照系クエリについて、そのデータを持つデータベースマネージャに余力があるほど参照系クエリの実行性能はよく、そのデータを持つデータベースマネージャの数が多いほど参照系クエリの実行負荷を分散できる。
【００２５】
そのデータを参照する参照系クエリが増加した場合に、余力のある他のデータベースマネージャにそのデータを移動あるいは複製すれば参照系クエリの実行負荷を動的に改善あるいは分散できる。
【００２６】
しかし、データを配置するデータベースマネージャが固定的であるために、あるデータを参照する参照系クエリが増加した場合に、余力のある他のデータベースマネージャにそのデータを移動あるいは複製して参照系クエリの実行負荷を動的に改善あるいは分散することができなかった。
【非特許文献１】Ｅｍｍａｎｕｅｌ  Ｃｅｃ−ｃｈｅｔ，Ｊｕｌｉｅ  Ｍａｒｇｕｅｒｉｔｒ  ａｎｄ  Ｗｉｌｌｙ  Ｚｗａｅｎｐｏｅｌ、“ＲＡＩＤｂ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄａｔａｂａｓｅｓ”、［ｏｎｌｉｎｅ］、平成１５年（２００３年）１１月、ＯｂｊｅｃｔＷｅｂ  Ｃｏｎｓｏｒｔｉｕｍ、［平成１８年１０月４日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｃ−ｊｄｂｃ．ｏｂｊｅｃｔｗｅｂ．ｏｒｇ／ｃｕｒｒｅｎｔ／ｄｏｃ／ＲＲ−Ｃ−ＪＤＢＣ．ｐｄｆ＞。
【発明の開示】
【発明が解決しようとする課題】
【００２７】
上述の負荷分散技術では、更新系クエリの実行を担当するデータベースマネージャが、参照すべきデータと更新すべきデータの両方を持つ必要があった。また、データを配置するデータベースマネージャが固定的であった。このために以下の問題があった。
【００２８】
第１データを参照して第１データを更新する単純な更新系クエリと、第２データを参照して第２データを更新する単純な更新系クエリと第１データを参照して第２データを更新する複雑な更新系クエリを実行する場合には、第１データと第２データの両方を同じデータベースマネージャに配置する必要があるために、上記２種類の単純な更新系クエリと上記１種類の複雑な更新系クエリの実行負荷を分散することができない。
【００２９】
また、クライアントから発行されるクエリの処理内容のパターンに応じて、クエリの実行負荷を動的に改善あるいは分散することができない。
【００３０】
本発明は、前記課題に基づいてなされたものであって、更新系クエリを実行する場合に、単純な更新系クエリと複雑な更新系クエリの実行負荷を分散させるデータベース負荷分散装置，データベース負荷分散方法及びその方法を実装したデータベース負荷分散プログラムを提供することにある。
【課題を解決するための手段】
【００３１】
前記課題の解決を図るために、請求項１記載の発明は、データを配置された複数のデータベースマネージャに接続され、受信したクエリの処理内容に応じてクエリを実行するデータベースマネージャを選択し、選択されたデータベースマネージャに対して前記受信したクエリの実行負荷を分散するデータベース負荷分散装置であって、前記データの識別子とそのデータを有するデータベースマネージャの識別子を含む配置情報を記憶した記憶部と、前記クエリの処理内容を解析するクエリ解析装置と、第１データを参照する参照系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャを一つ選択して、前記参照系クエリの実行をその選択されたデータベースマネージャに担当させる参照系クエリ振り分け装置と、第１データを参照し第１データを更新する単純な更新系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャの全てに、前記更新系クエリの実行を担当させる単純更新系クエリ振り分け装置と、第１データを参照して第２データを更新する複雑な更新系クエリを受信した場合に、前記配置情報を参照して、第１データが配置されたデータベースと第２データが配置されたデータベースの関係に応じたクエリを作成し、該クエリに応じたデータベースマネージャに担当させる複雑更新系クエリ振り分け装置と、を備えることを特徴とする。
【００３２】
請求項２記載の発明は、請求項１に記載の発明において、前記複雑更新系クエリ振り分け装置は、前記第１データと第２データの両方が同一のデータベースマネージャに有る場合、前記第１データと第２データの両方が有るデータベースマネージャの全てを選択し、前記データベースマネージャに前記複雑な更新系クエリの実行を担当させる手段と、前記第１データと第２データが異なるデータベースマネージャに有る場合、前記複雑な更新系クエリを、第１データを参照して更新用データを作成するデータ作成用クエリと、作成した更新用データを利用して第２データを更新するデータ更新用クエリとに分解し、前記第１データが有るデータベースマネージャを一つ選択して前記データ作成用クエリの実行を担当させ、第２データが有るデータベースマネージャの全てに前記データ更新用クエリの実行を担当させる手段と、を備えることを特徴とする。
【００３３】
請求項３記載の発明は、請求項１または２に記載の発明において、前記クエリ解析装置が、前記クエリに関する処理内容を解析した結果に基づく統計情報を計算し、前記記憶部に記憶する手段を備え、前記記憶部の統計情報を参照し、該統計情報に基づいてデータを再配置するデータベースマネージャを決定し、あるデータベースマネージャから他のデータベースマネージャに対しデータ操作を行い、そのデータ操作結果を前記配置情報に反映するデータ再配置装置、を有することを特徴とする。
【００３４】
請求項４記載の発明は、データを配置された複数のデータベースマネージャに接続され、前記データの識別子とそのデータを有するデータベースマネージャの識別子を含む配置情報を記憶した記憶部を備え、受信したクエリの処理内容に応じてクエリを実行するデータベースマネージャを選択し、選択されたデータベースマネージャに対して前記受信したクエリの実行負荷を分散する装置が実行するデータベース負荷分散方法であって、前記クエリの処理内容を解析するクエリ解析ステップと、第１データを参照する参照系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャを一つ選択して、前記参照系クエリの実行をその選択されたデータベースマネージャに担当させる参照系クエリ振り分けステップと、第１データを参照し第１データを更新する単純な更新系クエリを受信した場合に、前記配置情報を参照して、第１データを有するデータベースマネージャの全てに、前記更新系クエリの実行を担当させる単純更新系クエリ振り分けステップと、第１データを参照して第２データを更新する複雑な更新系クエリを受信した場合に、前記配置情報を参照して、第１データが配置されたデータベースと第２データが配置されたデータベースの関係に応じたクエリを作成し、該クエリに応じたデータベースマネージャに担当させる複雑更新系クエリ振り分けステップと、を有することを特徴とする。
【００３５】
請求項５記載の発明は、請求項４に記載の発明において、前記複雑更新系クエリ振り分けステップは、前記第１データと第２データの両方が同一のデータベースマネージャに有る場合、前記第１データと第２データの両方が有るデータベースマネージャの全てを選択し、前記データベースマネージャに前記複雑な更新系クエリの実行を担当させるステップと、前記第１データと第２データが異なるデータベースマネージャに有る場合、前記複雑な更新系クエリを、第１データを参照して更新用データを作成するデータ作成用クエリと、作成した更新用データを利用して第２データを更新するデータ更新用クエリとに分解し、前記第１データが有るデータベースマネージャを一つ選択して前記データ作成用クエリの実行を担当させ、第２データが有るデータベースマネージャの全てに前記データ更新用クエリの実行を担当させるステップと、を有することを特徴とする。
【００３６】
請求項６記載の発明は、請求項４または５に記載の発明において、前記クエリ解析ステップが、前記クエリに関する処理内容を解析した結果に基づく統計情報を計算し、前記記憶部に記憶するステップを有し、前記記憶部の統計情報を参照し、該統計情報に基づいてデータを再配置するデータベースマネージャを決定し、あるデータベースマネージャから他のデータベースマネージャに対しデータ操作を行い、そのデータ操作結果を前記配置情報に反映するデータ再配置ステップ、を有することを特徴とする。
【００３７】
請求項７記載の発明は、データベース負荷分散プログラムであって、請求項４乃至６の何れかに記載のデータベース負荷分散方法を、コンピュータで実行可能なコンピュータプログラムとして記述したことを特徴とする。
【００３８】
前記請求項１，４記載の発明は、第１データが配置されたデータベースと第２データが配置されたデータベースの関係に応じたクエリを作成できる。
【００３９】
前記請求項２，５記載の発明は、複雑な更新系クエリを、第１データを参照して更新用データを作成するデータ作成用クエリと、作成した更新用データを使用して第２のデータを更新するデータ更新用クエリとに分解して実行し、第１データと第２データを異なるデータベースマネージャに配置できる。
【００４０】
前記請求項３，６記載の発明は、前記統計情報に基づいてデータを配置するデータベースマネージャを決定できる。
【００４１】
前記請求項７記載の発明は、請求項４乃至６の何れかに記載のデータベース負荷分散方法をコンピュータプログラムとして記述できる。
【発明の効果】
【００４２】
以上示したように請求項１，２，４，５の発明によれば、単純な更新系クエリと複雑な更新系クエリの実行負荷を分散できる。
【００４３】
請求項３，６の発明によれば、クエリの実行負荷を動的に統計情報に基づいて改善あるいは分散できる。
【００４４】
請求項７の発明によれば、請求項４乃至６の何れかに記載のデータベース負荷分散方法を実装したコンピュータプログラムを提供できる。
【００４５】
これらを以って情報サービス分野に貢献できる。
【発明を実施するための最良の形態】
【００４６】
以下、本発明の実施形態を図面等に基づいて詳細に説明する。図１は、本実施形態におけるデータベース負荷分散装置を含むシステム構成の一例を示すブロック図である。
【００４７】
図１の装置構成は、クエリ文（以下、単にクエリという）を送信するクライアント装置Ｃ１〜Ｃｎ，データベース負荷分散処理を行うデータベース負荷分散装置１１，データベースＤ１１１〜Ｄ１１ｎの各々が接続されたデータベースマネージャＤ１１〜Ｄ１ｎから構成される。なお、以下の説明で図７中の符号と同じものの説明は省略する。
【００４８】
また、図１中のデータベース負荷分散装置１１は、クエリを解析するクエリ解析装置１１ａ，参照系クエリを振り分け処理する参照系クエリ振り分け装置１１ｂ，配置情報１１ｃ，単純更新系クエリを振り分け処理する単純更新系クエリ振り分け装置１１ｅ，複雑更新系クエリを振り分け処理する複雑更新系クエリ振り分け装置１１ｆを備えている。なお、配置情報１１ｃは、データベース負荷分散装置１１に予め備えられた記憶部（例えば、メモリやハードディスク装置）に記憶されているものとする。
【００４９】
本実施形態におけるデータベースマネージャのクエリの実行負荷を分散する場合の動作を図２に基づいて説明する。以下の説明で図１の符号と同じものの説明は省略する。
【００５０】
まず、データベース負荷分散装置１１の初期化が行われ（Ｓ２０１）、データベース負荷分散装置１１にクエリが、例えば、クライアント装置Ｃ１から送信される。
【００５１】
次に、クエリ解析装置１１ａは、クエリの処理内容を解析し（Ｓ２０２）、参照系クエリであれば参照系クエリ振り分け装置１１ｂに引き渡す。単純更新系クエリであれば単純更新系クエリ振り分け装置１１ｅに引き渡す。複雑更新系クエリであれば複雑更新系クエリ振り分け装置１１ｆに引き渡す（Ｓ２０３）。
【００５２】
次に、参照系クエリ振り分け装置１１ｂは、配置情報１１ｃを参照して、参照すべきデータを持つデータベースマネージャ（例えば、データベースマネージャＤ１１）を一つ選択し、そのデータベースマネージャに参照系クエリを発行し（即ち、参照系クエリの実行を担当させ）、応答をクライアント装置Ｃ１に返す（Ｓ２０４）。
【００５３】
次に、単純更新系クエリ振り分け装置１１ｅは、配置情報１１ｃを参照して、参照しかつ更新すべきデータを持つデータベースマネージャの全てを選択し、そのデータベースマネージャに単純更新系クエリを発行し（即ち、更新系クエリの実行を担当させ）、そのデータベースマネージャからの応答をクライアント装置Ｃ１に返す（Ｓ２０５）。
【００５４】
次に、複雑更新系クエリ振り分け装置１１ｆは、配置情報１１ｃを参照して、参照すべきデータと更新すべきデータの両方が同じデータベースマネージャにあるならば（Ｓ２０６）、参照すべきデータと更新すべきデータの両方を持つデータベースマネージャの全てを選択し、そのデータベースマネージャに複雑更新系クエリを発行し（即ち、複雑更新系クエリの実行を担当させ）、そのデータベースマネージャからの応答をクライアント装置Ｃ１に返す（Ｓ２０７）。
【００５５】
そして、複雑更新系クエリ振り分け装置１１ｆは、配置情報１１ｃを参照して、参照すべきデータと更新すべきデータが異なるデータベースマネージャにあるならば（Ｓ２０６）、参照すべきデータを参照して更新用データを作成するデータ作成用クエリと、作成した更新用データを使用して更新すべきデータを更新するデータ更新用クエリとに分解し、参照すべきデータを持つデータベースマネージャを一つ選択し、そのデータベースマネージャにデータ作成用クエリを発行し、応答を得る。さらに、更新すべきデータを持つデータベースマネージャの全てを選択し、そのデータベースマネージャにデータ更新用クエリを発行し、そのデータベースマネージャからの応答をクライアント装置Ｃ１に返す（Ｓ２０８）。
【００５６】
また、上記の動作の一例を図３のシーケンス図を用いて説明する。なお、図３Ａは参照系クエリに関する動作、図３Ｂは単純更新系クエリに関する動作、図３Ｃ及び図３Ｄは複雑更新系クエリに関する動作を示すシーケンス図である。
【００５７】
図３Ａでは、まず、データベース負荷分散装置１１にクエリがクライアント装置Ｃから送信される（Ｍ２０１）。
【００５８】
次に、クエリ解析装置１１ａは、クエリの処理内容を解析し、参照系クエリであれば参照系クエリ振り分け装置１１ｂに引き渡す（Ｍ２０２）。
【００５９】
そして、参照系クエリ振り分け装置１１ｂは、配置情報１１ｃを参照して（Ｍ２０３）、参照すべきデータを持つデータベースマネージャ（例えば、データベースマネージャＤ１１）を一つ選択し、そのデータベースマネージャに参照系クエリを発行し（Ｍ２０４）、応答をクライアント装置Ｃ１に返す（Ｍ２０５，Ｍ２０６）。
【００６０】
図３Ｂでは、まず、データベース負荷分散装置１１にクエリがクライアント装置Ｃから送信される（Ｍ２０７）。
【００６１】
次に、単純更新系クエリであれば単純更新系クエリ振り分け装置１１ｅに引き渡す（Ｍ２０８）。
【００６２】
そして、単純更新系クエリ振り分け装置１１ｅは、配置情報１１ｃを参照して（Ｍ２０９）、参照し、かつ、更新すべきデータを持つデータベースマネージャの全て（例えば、データベースマネージャＤ１１〜Ｄ１ｎ）を選択し、それらデータベースマネージャＤ１１〜Ｄ１ｎに単純更新系クエリを発行し（Ｍ２１０，Ｍ２１１）、応答をクライアント装置Ｃに返す（Ｍ２１２，Ｍ２１３，Ｍ２１４）。
【００６３】
図３Ｃでは、まず、データベース負荷分散装置１１にクエリがクライアント装置Ｃから送信される（Ｍ２１５）。
【００６４】
次に、複雑更新系クエリであれば複雑更新系クエリ振り分け装置１１ｆに引き渡す（Ｍ２１６）。
【００６５】
そして、複雑更新系クエリ振り分け装置１１ｆは、配置情報１１ｃを参照して（Ｍ２１７）、参照すべきデータと更新すべきデータの両方が同じデータベースマネージャにあるならば、参照すべきデータと更新すべきデータの両方を持つデータベースマネージャの全て（例えば、データベースマネージャＤ１１〜Ｄ１ｎ）を選択し、それらデータベースマネージャＤ１１〜Ｄ１ｎに複雑更新系クエリを発行し（Ｍ２１８，Ｍ２１９）、応答をクライアント装置Ｃに返す（Ｍ２２０，Ｍ２２１，Ｍ２２２）。
【００６６】
図３Ｄでは、まず、データベース負荷分散装置１１にクエリがクライアント装置Ｃから送信される（Ｍ２２３）。
【００６７】
次に、複雑更新系クエリであれば複雑更新系クエリ振り分け装置１１ｆに引き渡す（Ｍ２２４）。
【００６８】
そして、複雑更新系クエリ振り分け装置１１ｆは、配置情報１１ｃを参照して（Ｍ２２５）、参照すべきデータと更新すべきデータが異なるデータベースマネージャにあるならば、参照すべきデータを参照して更新用データを作成するデータ作成用クエリと、作成した更新用データを使用して更新すべきデータを更新するデータ更新用クエリとに分解し、参照すべきデータを持つデータベースマネージャ（例えば、データベースマネージャＤ１１）を一つ選択し、そのデータベースマネージャＤ１１にデータ作成用クエリを発行し（Ｍ２２６）、応答を得る（Ｍ２２７）。さらに、更新すべきデータを持つデータベースマネージャの全て（例えば、データベースマネージャＤ１１〜Ｄ１ｎ）を選択し、そのデータベースマネージャＤ１１〜Ｄ１ｎにデータ更新用クエリを発行し（Ｍ２２８，Ｍ２２９）、応答をクライアント装置Ｃに返す（Ｍ２３０，Ｍ２３１，Ｍ２３２）。
【００６９】
データベース負荷分散装置におけるクライアントから発行されるクエリの内容の統計情報に基づいてデータを移動あるいは複製する場合の動作の一例を図４及び図５に基づいて説明する。なお、以下では図４の構成図において、点線で記載されたものに関して説明する。図５は、その点線で記載されたものに関する手順を示す図である。以下の説明で図１及び図７中の符号と同じものの説明は省略する。
【００７０】
ここで、クライアントから発行されるクエリの内容の統計情報について説明する。前記統計情報は、例えば、データと操作種別ごとの単位時間当たりにおけるデータ操作回数の履歴、データベースマネージャを実行している計算機の単位時間の平均負荷（ＣＰＵ，メモリ，ディスク装置，ネットワークなど）の履歴である。
【００７１】
図４の装置構成は、クライアント装置Ｃ１〜Ｃｎ，データベース負荷分散装置１１Ａ，データベースＤ１１１〜Ｄ１１ｎの各々が接続されたデータベースマネージャＤ１１〜Ｄ１ｎから構成される。
【００７２】
また、図４中のデータベース負荷分散装置１１Ａは、クエリを解析するクエリ解析装置１１ａ，参照系クエリを振り分け処理する参照系クエリ振り分け装置１１ｂ，配置情報１１ｃ，単純更新系クエリを振り分け処理する単純更新系クエリ振り分け装置１１ｅ，複雑更新系クエリを振り分け処理する複雑更新系クエリ振り分け装置１１ｆ，統計情報１１ｇ，データ再配置装置１１ｈを備えている。なお、配置情報１１ｃ及び統計情報１１ｇは、データベース負荷分散装置１１Ａに予め備えられた記憶部（例えば、メモリやハードディスク装置）に記憶されているものとする。また、配置情報１１ｃは、排他制御可能な記憶部（例えば、データベース）に記憶されていることが望ましい。
【００７３】
本実施形態のデータベース負荷分散装置におけるクライアントから発行されるクエリの内容の統計情報に基づいてデータをデータ操作（例えば、データの移動あるいは複製）する場合の動作の一例を図５に基づいて説明する。
【００７４】
まず、データベース負荷分散装置１１Ａが初期化され（Ｓ３０１）、データベース負荷分散装置１１Ａにクエリが送信される。
【００７５】
次に、クエリ解析装置１１ａは、クエリの処理内容の統計情報１１ｇを計算し、統計情報１１ｇを更新する（Ｓ３０２）。
【００７６】
次に、データ再配置装置１１ｈは、統計情報１１ｇにしたがって、データベースマネージャに対するデータ操作（例えば、データの移動あるいは複製）を決定する（Ｓ３０３，Ｓ３０４）。
【００７７】
次に、データ再配置装置１１ｈは、配置情報１１ｃのロックを獲得する（Ｓ３０５）。
【００７８】
次に、データ再配置装置１１ｈは、前記データベースマネージャに対するデータ操作を行う（例えば、データを移動あるいは複製する）（Ｓ３０６）。
【００７９】
次に、データ再配置装置１１ｈは、配置情報１１ｃを更新する（即ち、前記データ操作結果を反映する）（Ｓ３０７）。
【００８０】
そして、データ再配置装置１１ｈは、配置情報１１ｃのロックを解除する（Ｓ３０８）。
【００８１】
また、上記の動作の一例を図６のシーケンス図を用いて説明する。
【００８２】
まず、データベース負荷分散装置１１Ａにクエリが送信される（Ｍ３０１）。
【００８３】
次に、クエリ解析装置１１ａは、クエリの処理内容の統計情報を計算し、前記記憶部中の統計情報１１ｇを更新する（Ｍ３０２）。
【００８４】
次に、データ再配置装置１１ｈは、統計情報１１ｇを読み出し（Ｍ３０３）、該統計情報１１ｇにしたがって、データベースマネージャに対するデータ操作（例えば、データの移動あるいは複製）を決定する。
【００８５】
次に、データ再配置装置１１ｈは、配置情報１１ｃのロックを獲得する（Ｍ３０４）。
【００８６】
次に、データ再配置装置１１ｈは、前記データベースマネージャに対するデータ操作を行う（例えば、データを移動あるいは複製する）（Ｍ３０５，Ｍ３０６）。
【００８７】
次に、データ再配置装置１１ｈは、配置情報１１ｃを更新する（即ち、前記データ操作結果を反映する）（Ｍ３０７）。
【００８８】
そして、データ再配置装置１１ｈは、配置情報１１ｃのロックを解除する（Ｍ３０８）。
【００８９】
なお、本実施形態のデータベース負荷分散装置における各手段の一部もしくは全部の機能をコンピュータのプログラムで構成し、そのプログラムをコンピュータを用いて実行して本発明を実現することができること、本実施形態のデータベース負荷分散方法における手順をコンピュータのプログラムで構成し、そのプログラムをコンピュータに実行させることができることは言うまでもない。
【００９０】
以上、本発明の実施形態について説明したが、本発明は説明した実施形態に限定されるものでなく、各請求項に記載した範囲において各種の変形を行うことが可能である。
【００９１】
例えば、前記配置情報を、排他制御機能を有するファイルシステムや記憶管理部に格納し、上述の実施形態における処理を行うこともできる。
【図面の簡単な説明】
【００９２】
【図１】本実施形態におけるデータベース負荷分散装置の装置構成図。
【図２】本実施形態におけるデータベースマネージャのクエリの実行負荷を分散する動作を示すフローチャート。
【図３】本実施形態におけるデータベースの負荷を分散する場合の実施形態の動作（（Ａ）は参照系クエリに関する動作、（Ｂ）は単純更新系クエリに関する動作、（Ｃ）及び（Ｄ）は複雑更新系クエリに関する動作）を示すシーケンス図。
【図４】本実施例におけるデータベース負荷分散装置の装置構成図。
【図５】本実施例におけるクライアントから発行されるクエリの処理内容のパターンに応じて、データベースマネージャのクエリの実行負荷を動的に変更する動作を示すフローチャート。
【図６】本実施例におけるクライアントから発行されるクエリの処理内容のパターンに応じて、データベースマネージャのクエリの実行負荷を動的に変更する動作を示すシーケンス図。
【図７】一般的なデータベース負荷分散装置の装置構成図。
【図８】一般的なデータベース負荷分散装置におけるデータベースマネージャのクエリの実行負荷を分散する動作のフローチャート。
【図９】一般的なデータベース負荷分散装置におけるデータベースマネージャのクエリの実行負荷を分散する動作（（Ａ）は参照系クエリに関する動作、（Ｂ）は更新系クエリに関する動作）のシーケンス図。
【符号の説明】
【００９３】
１，１１，１１Ａ…データベース負荷分散装置
１ａ，１１ａ…クエリ解析装置
１ｂ，１１ｂ…参照系クエリ振り分け装置
１ｃ，１１ｃ…配置情報
１ｄ…更新系クエリ振り分け装置
１１ｅ…単純更新系クエリ振り分け装置
１１ｆ…複雑更新系クエリ振り分け装置
１１ｇ…統計情報
１１ｈ…データ再配置装置
Ｃ，Ｃ１，Ｃｎ…クライアント装置
Ｄ１１，Ｄ１２，Ｄ１ｎ…データベースマネージャ
Ｄ１１１，Ｄ１１２，Ｄ１１ｎ…データベース
【図１】
2008097399.tif 000003
【図２】
2008097399.tif 000004
【図３】
2008097399.tif 000005
【図４】
2008097399.tif 000006
【図５】
2008097399.tif 000007
【図６】
2008097399.tif 000008
【図７】
2008097399.tif 000009
【図８】
2008097399.tif 000010
【図９】
2008097399.tif 000011