(57)【要約】  本発明は分散データベース環境において物理ノード間の負荷均衡を図る。本発明の情報処理システム１００は、複数の物理ノード（１２４）上に分散配置される複数のデータベース・サーバ１２２であって、当該複数のデータベース・サーバ１２２のうち、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されていることを特徴とする複数のデータベース・サーバ１２２と、物理ノードそれぞれに関する負荷を監視し、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへと、クライアントとのコネクションを移動させて、負荷を均衡させるようにコネクションを配分する配分部（１４０，１７０）とを含む。
2012070292.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ノード上に分散配置される複数のデータベース・サーバであって、当該複数のデータベース・サーバのうち、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されていることを特徴とする、当該複数のデータベース・サーバと、
前記物理ノードそれぞれに関する負荷を監視し、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへと、クライアントとのコネクションを移動させて、前記負荷を均衡させるようにコネクションを配分する配分部と
を含む、情報処理システム。
【請求項２】
前記配分部は、目標を上回る分の負荷に相当する接続数分のコネクションの再接続を計画し、目標を下回る分の負荷に応じた確率で再接続を含む新たなコネクションの配分を計画する均衡計画部を含み、
前記情報処理システムは、再接続が計画されたコネクションをトランザクション境界で一旦切断して、再接続に係る新たなコネクションを取得する再接続制御部をさらに含み、  前記移動は、再接続が計画された前記コネクションの切断および前記新たなコネクションの取得により実現される、請求項１に記載の情報処理システム。
【請求項３】
前記配分部は、計画された前記配分の割合に応じて各データベース・サーバに接続されるコネクションのプール量を調整するプール調整部と、コネクションの取得要求に応答して、プールされたコネクションの中から、要求に係るデータを受け持つデータベース・サーバに接続されるコネクションを返すコネクション解決部とを含み、
前記情報処理システムは、再接続制御部からの再接続の要求またはクライアントからの新規接続の要求に応答して、前記解決部に対し取得要求を発行し、返されたコネクションを受け取り、クライアントとデータベース・サーバとの接続を確立するコネクション要求受付部をさらに含む、請求項２に記載の情報処理システム。
【請求項４】
前記複数のデータベース・サーバは、さらに、同一のデータを受け持つサーバを同一の要素として、各要素について、同一要素のサーバが配置される２以上の物理ノード上に配置されるサーバの集合に差異があることを特徴とする、請求項３に記載の情報処理システム。
【請求項５】
前記複数のデータベース・サーバは、互いに同一データを受け持つサーバ間を結ぶ辺の連なりにより構成されるグラフであって、互いに異なるデータを受け持つ２以上のサーバが配置される物理ノードを節点として含む当該グラフの節点の数が、前記複数のデータベース・サーバが分散配置される物理ノードの数と等しいことを特徴とする、請求項４に記載の情報処理システム。
【請求項６】
互いに同一のデータを受け持つ２以上のサーバが同一の物理ノード上に配置されないように、前記複数のデータベース・サーバの配置を計画する配置計画部をさらに含む、請求項１に記載の情報処理システム。
【請求項７】
設定されたスパン内での前記物理ノードそれぞれに関する前記負荷の偏りを検出し、偏った負荷がかかる物理ノード上のデータベース・サーバが受け持つデータと、他の物理ノード上のデータベース・サーバが受け持つデータとを交換させる配置交換部をさらに含む、請求項１に記載の情報処理システム。
【請求項８】
前記配分部は、前記複数のデータベース・サーバに関するパフォーマンス情報を取得するパフォーマンス取得部と、前記複数のデータベース・サーバの配置構成を取得する配置構成取得部と、前記パフォーマンス情報および前記配置構成から、前記物理ノード毎の負荷を計算する負荷計算部とをさらに含み、
前記均衡計画部は、前記物理ノード毎の負荷と、見積もられる接続数の増加量と、接続１つ当たりの負荷とから、前記負荷に対する制御目標値を計算し、さらに前記コネクションの配分の割合を求める、請求項２に記載の情報処理システム。
【請求項９】
複数の物理ノード上に分散配置される複数のデータベース・サーバであって、前記複数のデータベース・サーバのうち、第１データを受け持つ第１サーバと第２データを受け持つ第２サーバとが第１物理ノード上に配置され、前記第１データを受け持つ第３サーバが第２物理ノード上に配置される、当該複数のデータベースと、
前記第１物理ノードおよび前記第２物理ノードそれぞれに関する負荷を監視し、前記第１物理ノードの負荷が目標より大きく、前記第２物理ノードの負荷が目標より小さい場合に、前記第１物理ノード上の前記第１サーバへのクライアントとのコネクションを、前記第２物理ノード上の前記第３サーバへ移動させる配分部と
を含む、情報処理システム。
【請求項１０】
複数の物理ノードにネットワークを介して接続される情報処理装置であって、
前記複数の物理ノード上に分散配置される複数のデータベース・サーバであって、当該複数のデータベース・サーバのうち、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されていることを特徴とする当該複数のデータベース・サーバそれぞれと接続する複数のコネクションをプールするプール部と、
前記物理ノードそれぞれに関する負荷を監視し、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへと、クライアントとのコネクションを移動させて、前記負荷を均衡させるようにコネクションを配分する配分部と
を含む、情報処理装置。
【請求項１１】
前記配分部は、目標を上回る分の負荷に相当する接続数分のコネクションの再接続を計画し、目標を下回る分の負荷に応じた確率で再接続を含む新たなコネクションの配分を計画する均衡計画部を含み、
前記移動は、再接続が計画された前記コネクションの切断および前記新たなコネクションの取得により実現される、請求項１０に記載の情報処理装置。
【請求項１２】
前記配分部は、計画された前記配分の割合に応じて各データベース・サーバに接続されるコネクションのプール量を調整するプール調整部と、コネクションの取得要求に応答して、前記プール部にプールされたコネクションの中から、要求に係るデータベース・サーバに接続されるコネクションを返すコネクション解決部とを含む、請求項１１に記載の情報処理装置。
【請求項１３】
複数の物理ノードにネットワークを介して接続される情報処理装置であって、
複数のデータベース・サーバを前記複数の物理ノード上へ分散配置する計画を立てる配置計画部であって、前記複数のデータベース・サーバのうち、互いに同一のデータを受け持つ２以上のサーバが同一の物理ノード上に配置されないように、かつ、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されるように、データベース配置を計画することにより、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへ、クライアントとのコネクションを移動可能とすることを特徴とする、当該配置計画部を含む、情報処理装置。
【請求項１４】
設定されたスパン内での前記物理ノードそれぞれに関する前記負荷の偏りを検出し、偏った負荷がかかる物理ノード上のデータベース・サーバが受け持つデータと、他の物理ノード上のデータベース・サーバが受け持つデータとを交換させる配置交換部をさらに含む、請求項１３に記載の情報処理装置。
【請求項１５】
前記配置計画部は、前記複数のデータベース・サーバのうち、同一のデータを受け持つサーバを同一の要素として、要素それぞれについて、同一要素のサーバが配置される２以上の物理ノード上に配置されるサーバの集合に差異があるように、前記複数のデータベース・サーバのそれぞれを配置することを特徴とする、請求項１４に記載の情報処理装置。
【請求項１６】
前記配置計画部は、前記複数のデータベース・サーバのうち互いに同一データを受け持つサーバ間を結ぶ辺の連なりにより構成されるグラフであって、互いに異なるデータを受け持つ２以上のサーバが配置される物理ノードを節点として含む当該グラフの節点の数が前記複数のデータベース・サーバが分散配置される物理ノードの数と等しくなるように、前記複数のデータベース・サーバのそれぞれを配置することを特徴とする、請求項１５に記載の情報処理装置。
【請求項１７】
前記配置計画部は、前記複数のデータベース・サーバのうち互いに同一データを受け持つ２つのサーバが配置される２つの物理ノードを結ぶ辺により構成される輪上で、前記２つのサーバと同一のデータを受け持つ他のサーバが前記２つのサーバと距離をあけて配置されるように、前記複数のデータベース・サーバのそれぞれを配置することを特徴とする、請求項１６に記載の情報処理装置。
【請求項１８】
複数の物理ノードにネットワークを介して接続される情報処理装置が実行する、負荷均衡方法であって、前記複数の物理ノード上には、複数のデータベース・サーバであって、当該複数のデータベース・サーバのうち、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されていることを特徴とする当該複数のデータベース・サーバが分散配置され、前記負荷均衡方法は、
前記情報処理装置が、前記物理ノードそれぞれに関する負荷を監視するステップと、
前記情報処理装置が、前記複数のデータベース・サーバのうちの目標より負荷が大きな物理ノード上のデータベース・サーバへのクライアントとのコネクションを、トランザクション境界で切断する要求を発行するステップと、
前記情報処理装置が、前記複数のデータベース・サーバのうちの目標より負荷が小さな物理ノード上のデータベース・サーバへのクライアントとの再接続にかかる新たなコネクションを取得するステップと
を含む、負荷均衡方法。
【請求項１９】
前記負荷を監視するステップは、さらに、
前記情報処理装置が、目標を下回る分の負荷に応じた確率で再接続を含む新たなコネクションの配分を計画するサブステップと、目標を上回る分の負荷に相当する接続数分のコネクションの再接続を計画するサブステップとを含む、請求項１８に記載の負荷均衡方法。
【請求項２０】
前記負荷を監視するステップは、前記情報処理装置が、前記配分の割合に応じてコネクションのプール量を調整するサブステップを含み、前記新たなコネクションを取得するステップは、前記情報処理装置が、クライアントからのコネクションの取得要求に応答して、前記プールされたコネクションの中から、要求に係るデータベース・サーバへ接続されたコネクションを返すサブステップを含む、請求項１９に記載の負荷均衡方法。
【請求項２１】
複数の物理ノードにネットワークを介して接続される情報処理装置が実行する、複数のデータベース・サーバを前記複数の物理ノード上へ分散配置する計画を立てる方法であって、
前記情報処理装置が、前記複数のデータベース・サーバのうち、互いに同一のデータを受け持つ２以上のサーバが同一の物理ノード上に配置されないように、かつ、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されるように、データベースの配置を計画するステップ
を含み、
前記計画するステップにより計画された配置が実施されることによって、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへ、クライアントとのコネクションが移動可能とされることを特徴とする、データベース配置計画方法。
【請求項２２】
前記計画するステップは、
前記情報処理装置が、前記複数のデータベース・サーバのうち、互いに同一データを受け持つサーバを２つづつ物理ノードに配置するように計画するサブステップであって、前記互いに同一データを受け持つ２つのサーバが配置される２つの物理ノードを結ぶ辺により輪を構成する、当該サブステップと、
前記情報処理装置が、他のデータベース・サーバの配置を計画するサブステップであって、前記２つのサーバと同一のデータを受け持つ他のサーバが前記２つのサーバと距離をあけて配置することを計画するサブステップと
を含む、請求項２１に記載のデータベース配置計画方法。
【請求項２３】
設定されたスパン内での前記物理ノードそれぞれにかかる負荷の偏りを検出するステップと、
偏った負荷がかかる物理ノード上のデータベース・サーバが受け持つデータと、他の物理ノード上のデータベース・サーバが受け持つデータとを交換させるステップをさらに含む、請求項２２に記載のデータベース配置計画方法。
【請求項２４】
コンピュータ実行可能なプログラムであって、前記プログラムは、１以上のコンピュータからなるコンピュータ・システムに対し、
複数の物理ノード上に分散配置される複数のデータベース・サーバであって、当該複数のデータベース・サーバのうち、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されていることを特徴とする当該複数のデータベース・サーバそれぞれと接続する複数のコネクションをプールするプール部、および
前記物理ノードそれぞれに関する負荷を監視し、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへと、クライアントとのコネクションを移動させて、前記負荷を均衡させるようにコネクションを配分する配分部
を実現するためのプログラム。
【請求項２５】
コンピュータ実行可能なプログラムであって、前記プログラムは、１以上のコンピュータからなるコンピュータ・システムに対し、
複数のデータベース・サーバを複数の物理ノード上へ分散配置する計画を立てる配置計画部であって、前記複数のデータベース・サーバのうち、互いに同一のデータを受け持つ２以上のサーバが同一の物理ノード上に配置されないように、かつ、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されるように、配置を計画することにより、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへ、クライアントとのコネクションを移動可能とすることを特徴とする、当該配置計画部
を実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースに関し、より詳細には、分散データベース環境において物理ノード間の負荷均衡を図るための情報処理システム、情報処理装置、負荷均衡方法、データベース配置計画方法およびプログラムに関する。
【背景技術】
【０００２】
データベースを利用するアプリケーションにおいては、データ規模やアクセス負荷の大きさに対応して、データベースの性能および容量の向上を図ることが望まれる。従来から、システム全体のスケーラビリティを向上させる手法としては、データベースの複製を作成し、すべてのデータを受け持つ複数のデータベース・サーバを複数の物理ノードに分散配置することで、負荷を軽減する手法が知られている（例えば特許文献１）。また、データベースを実用的な検索範囲で分割して、分割されたパーティションをそれぞれ受け持つ複数のデータベース・サーバを分散配置する手法も知られている。このように、複数の物理ノード上にデータベースを分散配置して、分散データベース環境を構築することによって、トランザクションのパフォーマンスの向上、並びにシステムの可用性および耐障害性の向上を図ることができる。【０００３】
図１４（Ａ）は、従来技術における分散データベース環境を示す概略図である。図１４（Ａ）に示す分散データベース環境５００は、それぞれ複数の物理ノード上に分散配置される複数のデータベース・サーバ５１０ａ１〜５１０ｃ２から構成される。また分散データベース環境５００では、データベースの分割および各パーティションの多重化が施されており、個々のデータベース・サーバ５１０は、それぞれ異なるパーティションまたは同一のパーティションのデータを受け持つ。ここでは、同一のパーティションを受け持つデータベース・サーバ５１０のグループ（例えば、５１０ａ１，５１０ａ２）により管理されるデータベースの論理的な単位を分散データベース５２０（例えば、５２０ａ）と参照する。つまり、分散データベース５２０は、同一のパーティションを受け持つオリジナルのデータベース（マスタ）と、マスタから複製された複製データベース（レプリカ）とから構成される。【０００４】
上述のようにデータベースを分割することにより、個々のデータベース・サーバ５１０が受け持ち、一貫性を維持するデータ範囲を小さくすることができ、さらに各パーティションを多重化し、これらのデータベース・サーバ５１０を複数の物理ノード上に分散配置することにより、個々の物理ノードが受け持つデータの単位を小さくすることができる。これにより、トランザクションのパフォーマンスが高まり、またシステムの可用性および耐障害性の向上が図られる。さらに、上述のようにレプリカを作成してデータを多重化することにより、クライアント・アプリケーション５３０からのアクセスによる負荷を分散し、またシステムの可用性および耐障害性の向上を図ることができる。【０００５】
このような分散コンピューティング環境では、一般的に、限られた物理リソースを有効活用するため、図１４（Ｂ）に示すように、同一物理リソースである物理ノード５４０上に、互いに異なる分散データベース５２０のデータベース・サーバ５１０を組み合わせて配置する手法を採用する。しかし、複数のデータベース・サーバ５１０が同一物理ノード５４０上に配置されると、あるデータベース・サーバ（例えば、データベースＡ）にアクセスが集中した場合などに、そのデータベース・サーバ（例えば、データベースＡ）が同一物理ノード（例えば物理ノード５４０ａ）上の他のデータベース・サーバ（例えばデータベースＣ’）のリソースを圧迫してしまうことが起こり得る。【０００６】
すなわち、同一の物理ノード上に複数のデータベース・サーバを配置する構成を採用すると、突発的な過負荷やリソース余りが発生してしまうという問題があった。この問題に対する対処策としては、突発的な負荷上昇が観測された分散データベース５２０のレプリカを追加する手法、または、突発的な負荷上昇が観測されたデータベース・サーバ５１０を配置する物理ノードを増強するか、または該データベース・サーバ５１０をリソースに余裕のある別の物理ノード上へ移動する手法を挙げることができる。しかし、突発的なアクセス増加状態などの緊急的な状況では、これらの操作自体が高負荷をかけるため、即応的な解決策とは言えない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−１７５６８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、限られた物理リソース上で効率的な分散データベース環境を実現するためには、突発的な過負荷やリソース余りの状況に対して、柔軟かつ操作自体のパフォーマンス・コストが小さな負荷均衡手法を開発することが望まれる。【０００９】
本発明は、上記従来技術の問題点に鑑みてなされたものであり、本発明は、分散データベース環境において、突発的な過負荷や物理リソース余りの状況に対し、即応的かつ柔軟かつ操作自体のパフォーマンス・コストが小さな手法により、物理ノードにかかる負荷を均衡し、ひいては、限られた物理リソース上で効率的な分散データベース環境を実現することが可能な情報処理システム、情報処理装置、負荷均衡方法、データベース配置計画方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上記従来技術の不都合に鑑みてなされたものであり、本発明は、以下の特徴を有する情報処理システムを提供する。本発明の情報処理システムは、複数の物理ノード上に分散配置される複数のデータベース・サーバであって、当該複数のデータベース・サーバのうち、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されていることを特徴とする、当該複数のデータベース・サーバを含む。そして、情報処理システムは、物理ノードそれぞれに関する負荷を監視し、目標より負荷が大きな物理ノード上のデータベース・サーバから、目標より負荷が小さな物理ノード上のデータベース・サーバへと、クライアントとのコネクションを移動させて、物理ノードの負荷を均衡させるようにコネクションを配分する。【００１１】
さらに本発明では、上記コネクションの配分の際には、目標を上回る分の負荷に相当する接続数分のコネクションの再接続を計画し、目標を下回る分の負荷に応じた確率で再接続を含む新たなコネクションの配分を計画することができる。さらに、本情報処理システムは、再接続が計画されたコネクションをトランザクション境界で一旦切断して、再接続に係る新たなコネクションを取得する再接続制御部を含むことができる。これにより、上記コネクションの移動は、再接続が計画されたコネクションの切断および新たなコネクションの取得により実現される。【００１２】
さらに本発明では、複数の物理ノードにネットワークを介して接続され、上記複数のデータベース・サーバそれぞれと接続する複数のコネクションをプールするプール部を備え、上記コネクション配分を実行する情報処理装置を提供することができる。また本発明では、上記複数のデータベース・サーバを複数の物理ノード上へ分散配置する計画を立てる情報処理装置を提供することができる。【００１３】
本発明では、さらに、上記情報処理装置が実行する負荷均衡方法を提供することができる。本負荷均衡方法は、情報処理装置が、上記物理ノードそれぞれに関する負荷を監視するステップと、上記複数のデータベース・サーバのうちの目標より負荷が大きな物理ノード上のデータベース・サーバへのクライアントとのコネクションを、トランザクション境界で切断する要求を発行するステップと、上記複数のデータベース・サーバのうちの目標より負荷が小さな物理ノード上のデータベース・サーバへのクライアントとの再接続にかかる新たなコネクションを取得するステップとを実行することを含む。【００１４】
さらに本発明では、複数のデータベース・サーバを複数の物理ノード上へ分散配置する計画を立てるデータベース配置方法が提供される。本データベース配置方法は、情報処理装置が、複数のデータベース・サーバのうち、互いに同一のデータを受け持つ２以上のサーバが同一の物理ノード上に配置されないように、かつ、互いに異なるデータを受け持つ２以上のサーバが同一の物理ノード上に配置され、前記２以上のサーバのいずれかと同一のデータを受け持つ１以上のサーバがそれぞれ１以上の他の物理ノード上に配置されるように、データベースの配置を計画するステップを実行することを含む。
【発明の効果】
【００１５】
上記構成によれば、一定の要件を満たす複数のデータベース・サーバの配置において物理ノードの負荷状況に応じたコネクション配分を行うことにより、動的に変わる負荷状況に対して、クライアントからのコネクションの割り振り方を変えるというパフォーマンス・コストの低い操作により、物理ノード全体の負荷を均衡し、物理リソースを有効活用することが可能となる。これにより、物理リソースの増強やレプリカの追加では対処が困難であった突発的な過負荷やリソース余りに対しても、即応的に対処することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態によるデータ処理システムにおいて実現される機能ブロック図。
【図２】本発明の実施形態によるコネクション配分を説明する概念図。
【図３】コネクション配分による負荷均衡が可能な関係と負荷均衡が不能な関係を説明する図。
【図４】５個の物理ノード上にそれぞれ多重度が３である５個の分散データベースの各データベース・サーバを分散配置したデータベース配置を例示する図。
【図５】６個の物理ノード上にそれぞれ多重度が２である６個の分散データベースの各データベース・サーバ実体を分散配置したデータベース配置を例示する図。
【図６】本発明の実施形態によるデータ処理システムにおいて実現される、コネクション配分に関する詳細な機能ブロック図。
【図７】本発明の実施形態によるコネクション配分部が実行する、コネクション配分処理を示すフローチャート。
【図８】コネクションの再接続およびコネクションの確率的配分を説明する図。
【図９】本発明の実施形態による配置計画部が実行するデータベース配置計画処理を示すフローチャート。
【図１０】分散データベースの各サーバ実体を物理ノードに配置する方法を説明する図。
【図１１】本発明の実施形態による配置計画部が実行する配置計画アルゴリズムＡ（ｎ）の処理を示すフローチャート。
【図１２】配置計画アルゴリズムＡ（ｎ）を説明する図
【図１３】多重度２で輪状に分散配置されたデータベース配置における負荷分布を例示する図。
【図１４】（Ａ）従来技術における分散データベース環境を示す概略図、および（Ｂ）分散データベースのデータベース・サーバを組み合わせて配置する手法を説明する図。
【発明を実施するための形態】
【００１７】
以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。以下説明する実施形態では、複数の物理ノード上に分散配置される複数のデータベースと、該複数のデータベースにアクセスするクライアント・アプリケーションとを含むデータ処理システムを、情報処理システムの一例として説明する。
【００１８】
（１）概要
（１．１）システム全体の機能ブロック
図１は、本発明の実施形態によるデータ処理システム１００において実現される機能ブロックを示す。図１に示すデータ処理システム１００は、複数の物理ノード（図示せず。）から構成される物理ノード群１２０と、データベース配置を計画し、その計画に従って物理ノード群１２０上にデータベースを分散配置するデータベース配置サーバ１１０と、物理ノード群１２０上に分散配置されたデータベースにアクセスするクライアント・アプリケーション（以下、単にクライアントという。）１６４が動作するアプリケーション・サーバ１３０と、詳細は後述するコネクション配分サーバ１３２とを含んで構成される。なお、３層クライアント・サーバ・モデルでは、クライアント１６４は、アプリケーション層に相当し、ウェブ・アプリケーションでは、クライアント１６４には、ＨＴＴＰプロトコルで接続するウェブ・クライアントが接続されることになるが、図１においては省略されている点に留意されたい。
【００１９】
物理ノード群１２０を構成する各物理ノード、データベース配置サーバ１１０、アプリケーション・サーバ１３０およびコネクション配分サーバ１３２は、それぞれ、ＴＣＰ／ＩＰおよびイーサネット（登録商標）によるＬＡＮ（Local Area Network）や、ＶＰＮ（Virtual Private Network）や専用線を使用するＷＡＮ（Wide Area Network）やインターネットを含む図示しない有線または無線のネットワークを介して相互に接続される。
【００２０】
物理ノード群１２０を構成する物理ノードは、それぞれ、シングルコア・プロセッサまたはマルチコア・プロセッサなどの中央演算装置（ＣＰＵ）、キャッシュ・メモリ、ＲＡＭ、ネットワーク・インタフェース・カード（ＮＩＣ）および適宜ストレージ・デバイスを含み、適切なオペレーティング・システム（以下、ＯＳとして参照する。）の制御のもと動作する。なお、物理ノードは、Shared Nothing型およびShared Disk型のいずれのアーキテクチャを採用するものであってもよい。
【００２１】
物理ノード群１２０には、分散データベースに対応するデータベース管理システム（ＤＢＭＳ）が導入されており、物理ノード群１２０上には、複数のデータベース・サーバ１２２ａ〜１２２ｇが配置される。ここで、「データベース・サーバ」は、各物理ノード上で動作するＤＢＭＳのサーバ・プロセスをいい、「データベース」は、ＤＢＭＳにより管理される、表、ビュー、索引などのデータベース・オブジェクトなどを含むデータのコレクションをいう。なお、データベース・サーバおよびデータのコレクションとしてのデータベースを総合して「データベース」と参照することもある。
【００２２】
個々のデータベース・サーバ１２２は、それぞれ異なるデータまたは同一のデータを受け持つことができる。ここでは、同一のデータを受け持つデータベース・サーバ１２２からなるデータベースの論理的なグループの単位を「分散データベース」と参照する。また、便宜上、分散データベースを構成する個々のデータベースのうち、オリジナルをマスタ・データベース（以下、単にマスタという。）といい、マスタからレプリケーションされたものをレプリカ・データベース（以下、単にレプリカという。）という。なお、レプリケーションの方式は、特に限定されるものではなく、マルチマスタ方式、マスタ−スレーブ方式のいずれの方式であってもかまわない。
【００２３】
このように本データ処理システム１００では、物理ノード群１２０上に分散配置される複数のデータベース・サーバ１２２ａ〜１２２ｇによって、それぞれマスタおよび１以上のレプリカを含む複数の分散データベースからなる分散データベース環境が構成される。なお、「データベース」および「分散データベース」としては、リレーショナル・データベース（ＲＤＢ）を挙げることができるが、これに限定されるものではなく、その他、オブジェクト指向データベース、ＸＭＬ（extensible Markup Language）データベース、key-value式データストアなど如何なるデータベースに適用することができ、特定のデータモデルに限定されるものではない。
【００２４】
データベース配置サーバ１１０、アプリケーション・サーバ１３０およびコネクション配分サーバ１３２は、概ね、パーソナル・コンピュータ、ワークステーション、ラックマウント型やブレード型のサーバ、ミッドレンジ・コンピュータ、メインフレームなどの汎用コンピュータとして構成される。データベース配置サーバ１１０、アプリケーション・サーバ１３０およびコネクション配分サーバ１３２は、より具体的には、シングルコア・プロセッサまたはマルチコア・プロセッサなどのＣＰＵ、キャッシュ・メモリ、ＲＡＭ、ＮＩＣ、ストレージ・デバイスなどを備え、適切なＯＳの制御のもと、ハードウェアおよびソフトウェアが協働して、後述する各機能部および各処理を実現している。
【００２５】
データベース配置サーバ１１０は、効率的な負荷均衡を実現するためのデータベース配置を計画する配置計画部１１２と、配置実行部１１４とを含む。配置実行部１１４は、配置計画部１１２が計画したデータベース配置の計画に従って、分散データベースのデータベース・サーバ１２２を物理ノード群１２０上に配置する機能部である。本実施形態では、さらに、長期的なスパンにおける物理ノード間の負荷の偏りを監視し、負荷の偏りがなくなるようにデータベース配置を適宜変更し、修正する補助構成部１１６をさらに含むことができる。なお、データベースの配置計画および負荷の偏りを軽減するための補助構成についての詳細は後述する。
【００２６】
アプリケーション・サーバ１３０上のクライアント１６４と、物理ノード群１２０上の分散データベース環境との間には、クライアント１６４と分散データベースのデータベース・サーバ実体（マスタまたはレプリカ）との間に確立されるデータベース・コネクション（以下、単にコネクションという。）を、物理ノードにかかる負荷を均衡するように配分する機能を実現するコネクション管理機構１７０が設けられる。なお、「コネクション」の用語は、リクエストに対するアフィニティ付けになどよる送信先の固定化を含むことができる。
【００２７】
従来技術の分散データベース環境においては、マスタおよび１以上のレプリカのデータベース・サーバを用いて負荷分散を行う場合、これらのデータベース・サーバは異なる物理ノード上に配置され、マスタおよび１以上のレプリカには、例えばラウンドロビン方式等によりコネクションが割り振られることになる。この場合、コネクションが固定割合で振り分けられるため、物理リソースの有効活用を目的として複数の分散データベースのサーバ実体が同一物理ノード上に配置されると、一方の分散データベースのサーバ実体にアクセスが集中すると、同一物理ノード上の他方の分散データベースのサーバ実体のリソースを圧迫してしまうという事態が発生し得る。かかる事態には、従来技術では、物理リソースの増強およびレプリカの追加により対応することが一般的であるが、突発的な過負荷やリソース余りが発生した場合に適切に対処することが困難である。
【００２８】
そこで、本実施形態では、かかる突発的な負荷の増減に即応的に対処すべく、コネクション管理機構１７０は、クライアント１６４と、分散データベースのデータベース・サーバ実体との間に確立されるコネクションについて、負荷状況に対応して物理ノード群１２０上のマスタおよびレプリカへのコネクションの配分の割合を動的に制御する構成を採用し、マスタおよびレプリカが配置される物理ノード間の負荷の均衡を図る。
【００２９】
コネクション管理機構１７０は、コネクション配分部１４０と、コネクション要求受付部１６０と、ドライバ部１６２とから構成される。図１に示す実施形態では、コネクション配分部１４０が、コネクション配分サーバ１３２上に実装され、コネクション要求受付部１６０およびドライバ部１６２は、クライアント側のモジュールとして、クライアント・アプリケーションが動作するアプリケーション・サーバ１３０上に実装されている。この場合、コネクション配分サーバ１３２は、複数のアプリケーション・サーバ１３０上の各クライアント１６４に対してコネクション配分を統一的に行うコネクション配分サーバとして構成することができる。図１中のクライアント１６４ａは、新たにコネクションを確立しようとしている接続要求中のクライアント・アプリケーションを表す。これに対してクライアント１６４ｂは、既にコネクションを確立し、接続中であるクライアント・アプリケーションを表している。
【００３０】
コネクション要求受付部１６０は、新たにコネクションを確立しようとしているクライアント１６４ａからの接続要求に応答して、コネクション配分部１４０からコネクションを取得し、クライアント１６４ａと分散データベースのデータベース・サーバ実体との間のコネクションを確立する。コネクション配分部１４０は、物理ノードそれぞれに関する負荷を監視し、負荷状況に応じて、分散データベースのサーバ実体（マスタまたはレプリカ）へのコネクション配分の割合を決定する。コネクション配分部１４０は、コネクション要求受付部１６０からのコネクションの取得要求に応答して、上記決定したコネクション配分の割合に応じて、データベース・サーバ実体へのコネクションを返す。
【００３１】
コネクション配分部１４０は、さらに、上記負荷状況に従い、過大な負荷がかかる物理ノードの存在を発見した場合、当該物理ノード上のデータベース・サーバ実体へのコネクションのうちの、過大な負荷に相当する分の切断および再度の接続をドライバ部１６２に対して要求する。ドライバ部１６２は、クライアント１６４ｂと分散データベースのデータベース・サーバ実体との間のコネクションを制御しており、上記コネクション配分部１４０からの再接続要求に応答して、トランザクション境界で再接続要求されたコネクションを一旦切断する。そして、ドライバ部１６２は、コネクション要求受付部１６０から新たなコネクションを取得して、クライアント１６４とデータベース・サーバ実体とのコネクションを継続させる。このように上記コネクションの切断をトランザクション境界において実施することにより、ユーザに対して切断および再接続を隠蔽することができる。なお、ドライバ部１６２は、本実施形態の再接続制御部を構成する。
【００３２】
本実施形態によるコネクション配分部１４０は、物理ノードそれぞれに関する負荷を監視し、物理ノード群１２０の負荷状況に応じてコネクション配分の割合を決定し、併せてドライバ部１６２に対し過剰なコネクションの再接続を要求する。これにより、ある目標より負荷が大きな物理ノード上のデータベース・サーバ実体から、目標より負荷が小さな物理ノード上のデータベース・サーバ実体へと、クライアントとのコネクションを移動させ、ノード間の負荷均衡を図る。
【００３３】
（１．２）コネクション配分の概要
以下、図２を参照しながら、本発明の実施形態によるコネクション配分について説明する。図２は、本発明の実施形態によるコネクション配分を説明する概念図である。図２（Ａ）はコネクション配分を行う前のコネクションの状態を示し、図２（Ｂ）はコネクション配分を行った場合のコネクションの状態を示す図である。
【００３４】
図２には、各物理ノード１２４ａ，１２４ｂ，１２４ｃ上に、それぞれ、２つずつデータベース・サーバが配置されている様子が示され、各データベース・サーバは、Ａ，Ｂ，Ｃで識別されるいずれかの分散データベースのインスタンスのマスタまたはレプリカに対応している。分散データベースＡ，Ｂ，Ｃは、例えば単一のデータベースから分割された各パーティション、またはそれぞれ異なるデータベースのデータを受け持つことができる。なお、Ｘ（ここでＸは任意のアルファベットである。）は、マスタを表し、Ｘ’（同様にＸは任意のアルファベットである）は、レプリカを表す。
【００３５】
コネクション管理機構１７０は、各クライアント１６４と、分散データベースのデータベース・サーバ実体との間のコネクションを管理し、分散データベースのマスタおよびレプリカ間でコネクションを振り分ける。図２（Ａ）に示すように、例えば分散データベースＢおよびＣにアクセスが集中した場合、コネクション配分の割合が固定されていると、データベース・サーバ実体Ｃ，Ｂ’が相乗りする物理ノード１２４ｂに過剰な負荷が発生してしまうことになる。
【００３６】
そこで、本実施形態のコネクション管理機構１７０は、図２（Ｂ）に示すように、負荷が過大な物理ノード１２４ｂ上のデータベース・サーバ実体Ｂ’，Ｃに割り振られたコネクションのうち過剰な負荷に相当する分をトランザクション境界で一旦切断する。さらに、コネクション管理機構１７０は、異なる物理ノード上で動作するデータベース・サーバ実体Ｂ、Ｂ’間およびデータベース・サーバ実体Ｃ、Ｃ’間のコネクション配分の割合を変化させた上で再接続することによって、クライアント１６４からのコネクションを維持するとともに、物理ノード１２４ｂにかかる過剰な負荷を軽減する。このとき、コネクション配分の割合は、負荷が小さな方の物理ノード１２４ａ上のデータベース・サーバ実体Ｂおよび物理ノード１２４ｃ上のデータベース・サーバ実体Ｃ’へ多く配分されるように確率的に決定される。
【００３７】
すべての分散データベースについて、物理ノードの負荷状況に応じてマスタおよび１以上のレプリカのコネクション配分を行うことにより、比較的負荷が大きな物理ノードから比較的負荷が小さな物理ノードへ負荷を移動させ、物理ノード群１２０全体の負荷のピークを平滑化させることができる。
【００３８】
一方、物理ノード群１２０全体で負荷を効率的に均衡させるためには、コネクション配分によって負荷を移動するために、有利な構成をもって個々のデータベース・サーバ実体が物理ノード群１２０上に配置されていることが望ましい。以下、図３〜図５を参照しながら、コネクション配分による負荷均衡に有利なデータベース配置について説明する。
【００３９】
（１．３）負荷が均衡可能な関係と負荷が均衡不能な関係
図３は、コネクション配分による負荷均衡が可能な関係と負荷均衡が不能な関係を説明する図である。図３は、２つの物理ノード１２４ａ，１２４ｂ間の関係を示しており、物理ノード１２４ａ，１２４ｂ上には、それぞれ２つずつデータベース・サーバが配置されている。図３（Ａ）は、コネクション配分による負荷均衡が不能な関係を例示し、図３（Ｂ）は、コネクション配分による負荷均衡が可能な関係を例示する。
【００４０】
図３（Ａ）に示す負荷均衡が不能な関係では、分散データベースＡ，Ｂをそれぞれ要素とするサーバ集合を考えると、物理ノード１２４ａおよび物理ノード１２４ｂ上のサーバ集合は同一とされている。一方、図３（Ｂ）に示す負荷均衡が可能な関係では、物理ノード１２４ａ上のサーバ集合｛Ａ，Ｂ｝と、物理ノード１２４ｂ上のサーバ集合｛Ｂ，Ｘ｝とは異なっている。
【００４１】
上述したように、負荷は、異なる物理ノード上に配置された分散データベースのマスタおよび１以上のレプリカ間を移動させることができるが、図３（Ａ）に示すように、分散データベースのマスタおよびレプリカが配置される物理ノードすべてのサーバ集合が同一である場合には、コネクション配分によって負荷を実質的に均衡させることができない。したがって、ある分散データベースに関して、コネクション配分による負荷の均衡を実現するためには、マスタおよびレプリカが配置される物理ノード上のサーバ集合が少なくとも差異があることが条件となる。さらに、マスタおよびレプリカが配置される物理ノード上のサーバ集合の差異が大きい方がより好ましいと言える。
【００４２】
（１．４）効率的な負荷均衡を実現するためのデータベース配置
以下、図４および図５を参照しながら、効率的な負荷均衡を実現するためのデータベース配置について説明する。図４は、５個の物理ノード上にそれぞれ多重度が３である５個の分散データベースの各データベース・サーバを分散配置したデータベース配置を例示する。図５は、６個の物理ノード上にそれぞれ多重度が２である６個の分散データベースの各データベース・サーバ実体を分散配置したデータベース配置を例示する。
【００４３】
図４（Ａ）に示すデータベース配置では、５個すべての分散データベースＡ〜Ｅについて、各分散データベースのデータベース・サーバ実体が配置される物理ノード上のサーバ集合が、互いに異なるように配置されている。例えば、分散データベースＡについてみると、サーバ実体が配置される物理ノードＮｏｄｅ１，Ｎｏｄｅ２，Ｎｏｄｅ４のサーバ集合は、それぞれ｛Ａ，Ｃ，Ｅ｝、｛Ａ，Ｂ，Ｄ｝、｛Ａ，Ｃ，Ｄ｝であり、互いに異なっている。そして、他の分散データベースＢ〜Ｅについても同様である。したがって、図４（Ａ）に示すようなデータベース配置では、負荷の大きい物理ノードから負荷の小さな物理ノードへと、効率的に負荷を移動させることが可能であり、物理ノード群１２０全体の負荷のピークを良好に平滑化させることができる。
【００４４】
これに対して、図４（Ｂ）に示すデータベース配置では、分散データベースＡ〜Ｃについて、物理ノード上のサーバ集合が同一となっている部分が存在している。Ｎｏｄｅ２とＮｏｄｅ３は、共通して分散データベースＡ〜Ｃのサーバ実体を有し、これらの物理ノードのサーバ集合は同一となる。一方、分散データベースＡ〜Ｃのマスタまたはレプリカは、物理ノードＮｏｄｅ２，Ｎｏｄｅ３の他、これらとはサーバ集合が異なる物理ノード（Ｎｏｄｅ１、Ｎｏｄｅ４、Ｎｏｄｅ５）上にも存在する。したがって、物理ノードＮｏｄｅ２およびＮｏｄｅ３と、他の物理ノード（Ｎｏｄｅ１、Ｎｏｄｅ４、Ｎｏｄｅ５）との間で、それぞれ負荷を移動させることが可能であり、図４（Ｂ）に示すデータベース配置では、物理ノード全体として負荷を均衡させることができる。しかし、サーバ集合が同一である複数の物理ノードの存在は、負荷移動の自由度を制限することになる。
【００４５】
また、物理ノード群１２０全体で負荷を効率的に均衡させるためには、上記移動可能な関係が物理ノード群１２０内でより多くの物理ノードを巻き込んで可能な限り大きく広がっていることが好ましい。上述したように、負荷は、直接的には、異なる物理ノード上に配置された同一分散データベースのマスタおよびレプリカ間で移動することが可能である。一方、この同一分散データベース内の移動可能な関係を経由することにより、異なる分散データベースのマスタおよびレプリカ間でも負荷を間接的に移動させることが可能である。したがって、上述のような移動可能な関係の広がりというデータベース配置の特性は、物理ノードと負荷が移動可能な関係とをグラフとみなし、移動可能な関係を有する物理ノードを繋いで構成されるクラスタの大きさとして定量することができる。
【００４６】
すなわち、同一分散データベースのサーバ実体が配置される物理ノード間を結ぶ辺（エッジまたはリンク）を異なる分散データベースを含めて繋いで構成されるグラフをクラスタとして、このクラスタの大きさにより定量することができる。当該クラスタが小さくまとまり、物理ノード群１２０の一部で閉じて形成されてしまうと、負荷均衡が小さなクラスタ内で閉じられてしまうことになる。
【００４７】
複数の分散データベースのサーバ実体が相乗りする物理ノードにおいて負荷の均衡が図られることを考慮すると、データベース配置の特性としてのクラスタの広がりは、同一の分散データベースのサーバ実体が配置される物理ノードを結ぶ辺を繋いで構成されるクラスタであって、異なる複数の分散データベースのデータベース・サーバが相乗りする物理ノードを含むクラスタの節点の数によって定量することができる。各クラスタの節点数は、分散データベースがマスタおよび１以上のレプリカから構成されることを考慮すると、３以上となることが好ましく、物理ノード群１２０全体の負荷均衡を目的とする観点からは、物理ノード群１２０の物理ノードの数に一致することがより好ましい。
【００４８】
例えば、図４（Ａ）および図４（Ｂ）に示したデータベース配置は、クラスタの節点数は物理ノードの数と等しく、物理ノード群１２０全体で負荷均衡が図られる。これに対して、図５に示すデータベース配置では、物理ノード群１２０内に２つの閉じたクラスタが構成される。この場合、両クラスタには、共通して配置される分散データベースが存在しないため、クラスタ間で負荷を移動させることができない。したがって、物理ノードＮｏｄｅ１，Ｎｏｄｅ２，Ｎｏｄｅ３からなるクラスタ内、および物理ノードＮｏｄｅ４，Ｎｏｄｅ５，Ｎｏｄｅ６からなるクラスタ内で、それぞれ独立して負荷均衡が行われることになる。
【００４９】
（２）コネクション配分の詳細
（２．１）コネクション配分に関する詳細な機能ブロック
以下、物理ノード間の負荷均衡を図るためのコネクション配分の詳細について説明する。図６は、本発明の実施形態によるデータ処理システム１００において実現される、コネクション配分に関する詳細な機能ブロックを示す。図６には、複数のデータベース・サーバが配置される物理ノード群１２０と、コネクション配分部１４０と、コネクション要求受付部１６０と、ドライバ部１６２と、クライアント１６４とが示されている。
【００５０】
コネクション配分部１４０は、より詳細には、パフォーマンス情報取得部１４２と、配置構成情報取得部１４４と、負荷状況計算部１４６と、動的均衡計画部１４８と、コネクション・プール調整部１５０と、コネクション解決部１５２とを含む。
【００５１】
パフォーマンス情報取得部１４２は、分散データベース環境のパフォーマンスをモニタし、定期的にまたは不定期にパフォーマンス情報を取得する。パフォーマンス情報としては、特に限定されるものではないが、物理ノード毎のＣＰＵ、ディスクＩ／Ｏおよびメモリ等の物理リソースの使用値（使用率）、物理ノードのコネクション総数など、物理ノードにかかる負荷を定量する情報を挙げることができる。また、分散データベース毎のパフォーマンス情報としては、分散データベース毎のコネクション数、テーブル・データの増加量、データベース領域の使用状況、クエリの応答時間、ユーザ数など、分散データベースにかかる負荷を定量する情報を挙げることができる。これらの情報は、分散データベース環境に配備されるパフォーマンス・モニタリング・ツールから取得することができる。
【００５２】
配置構成情報取得部１４４は、定期的にまたは不定期に、分散データベース環境の配置構成情報を取得する。配置構成情報は、物理ノード群１２０上のデータベース・サーバ実体の配置構成を記述する情報であり、各物理ノード上にいずれの分散データベースのサーバ実体が配置されているかを示す情報である。配置構成情報は、簡単には、物理ノード毎のサーバ集合を記述したリストとして構成される。
【００５３】
負荷状況計算部１４６は、パフォーマンス情報取得部１４２が取得した上記パフォーマンス情報と、配置構成情報取得部１４４が取得した上記配置構成情報とを掛け合わせて、物理ノード毎の負荷状況を算出する。算出する物理ノード毎の負荷状況としては、均衡させるべき物理ノードにかかる負荷を定量する物理ノード毎の負荷評価量と、物理ノード毎の各データベース・サーバ実体が上記負荷評価量に占める割合とを含む。
【００５４】
負荷評価量の算出方法は、各物理ノードにかかる負荷を定量することができる限り、特に限定されるものではなく、例えば、取得可能な物理ノードのリソース使用値（使用率）やコネクション総数をそのまま用いてもよい。負荷評価量に占める割合の算出方法も特に限定されるものではなく、例えば、ある物理ノード上にサーバ実体が配置される分散データベース（すなわちサーバ集合）と、各分散データベースのコネクション数と、各分散データベースの各サーバ実体へのコネクション配分の割合とを使用して、当該物理ノード上の負荷評価量において各サーバ実体が占める割合を計算することができる。コネクション配分の割合は、例えば、後述する動的均衡計画部１４８から取得することができる。
【００５５】
動的均衡計画部１４８は、現在のコネクションの状況と、所定インターバル間に見積もられるコネクションの変化量を考慮して、コネクション配分の割合を決定するための目標値を決定し、各物理ノードの負荷評価量が当該目標値に漸近するように、コネクション配分および再接続を計画する。より具体的には、動的均衡計画部１４８は、負荷状況計算部１４６が算出した負荷状況に応じて、目標を下回る分の負荷に応じた配分の割合ないし確率で分散データベースのサーバ実体への再接続を含む新たなコネクションの配分を計画する。
【００５６】
コネクション・プール調整部１５０は、上記動的均衡計画部１４８が計画したコネクション配分の割合に応じて、充分な量のコネクション１５６をプール部１５４に準備する。コネクション解決部１５２は、プール部１５４に対し、プールから貸し出すコネクション最大数などコネクションの数の管理を行う。コネクション解決部１５２は、コネクション要求受付部１６０からのコネクション解決要求に応答して、プール部１５４にプールされたコネクション１５６の中から、要求にかかる分散データベースのサーバ実体へ接続されるものを、当該要求に対する返答として渡す。このとき、上記配分の割合に応じた確率で、サーバ実体に接続するコネクションが渡されることになる。コネクション要求受付部１６０は、接続要求中のクライアント１６４ａからの接続要求に応答して、コネクション解決部１５２にコネクション解決要求を発行して、接続要求中クライアント１６４ａと分散データベースのサーバ実体との間のコネクションを確立させ、該クライアント１６４ａにコネクションの参照を返却する。
【００５７】
本実施形態では、コネクション・プール調整部１５０およびコネクション解決部１５２によるコネクション・プーリングを適用することにより、分散データベースのデータベース・サーバ実体への接続を再利用することで、クライアントとサーバ実体との間のコネクションを確立する際の認証等の諸処理によるオーバーヘッドを軽減することができる。
【００５８】
動的均衡計画部１４８は、さらに、負荷状況計算部１４６が算出した負荷状況から、過大な負荷がかかる物理ノードの存在を発見した場合、上記目標値を上回る分の負荷に相当する接続数分のコネクションについて、一旦切断した上での再接続を計画し、ドライバ部１６２に対してコネクションの再接続を要求する。ドライバ部１６２は、動的均衡計画部１４８からの再接続要求に応答して、トランザクション境界にて、再接続要求にかかるコネクションを一旦切断し、コネクション要求受付部１６０に再接続を依頼する。この依頼を受けて、コネクション要求受付部１６０は、コネクション解決部１５２に対して、コネクション解決要求を発行し、分散データベースのサーバ実体との間の新たなコネクションを確立し、新たなコネクションの参照をドライバ部１６２へ返却する。
【００５９】
例えばデータベース・サーバ実体Ａが配置される物理ノードに過大な負荷がかかっているとすると、ドライバ部１６２は、当該サーバ実体Ａに対するコネクションＩ１５６ａを一旦切断し、コネクション要求受付部１６０に再接続を依頼する。コネクション要求受付部１６０は、例えばデータベース・サーバ実体Ａ’に対するコネクションＩＩ１５６ｂを取得し、分散データベースＡとクライアントとの間のコネクションを維持する。
【００６０】
上述した動的均衡計画部１４８によるコネクションの配分および再接続の計画、およびコネクション要求受付部１６０およびドライバ部１６２による再接続の実施により、目標より大きな負荷がかかる物理ノード上のサーバ実体へのコネクションが切断され、より負荷の小さな物理ノード上のサーバ実体へとコネクションがつなぎ替えられ、物理ノード間で負荷が良好に平滑化される。
【００６１】
（２．２）コネクション配分方法
以下、図７を参照しながら、コネクション配分部１４０におけるコネクション配分処理についてより詳細に説明する。図７は、コネクション配分部１４０が実行する、コネクション配分処理を示すフローチャートである。図７に示す処理は、例えばコネクション配分機能のサービスが起動されたことに応答して、ステップＳ１００から開始する。
【００６２】
ステップＳ１０１では、コネクション配分部１４０は、所定のインターバル時間が経過するまで（ＮＯの間）、ステップＳ１０１をループさせる。このインターバル時間は、コネクション配分を制御するインターバルであり、クライアント・アプリケーションの特性に依存する負荷の変動量に応じた時間間隔を設定することができる。ステップＳ１０１で、所定インターバル時間が経過すると（ＹＥＳ）、ステップＳ１０２へ処理が進められる。
【００６３】
ステップＳ１０２では、パフォーマンス情報取得部１４２は、分散データベース環境のパフォーマンス情報を取得する。ステップＳ１０３では、配置構成情報取得部１４４は、分散データベース環境の配置構成情報を取得する。ステップＳ１０４では、負荷状況計算部１４６は、取得したパフォーマンス情報と、配置構成情報とを使用して、物理ノード毎の負荷評価量と、物理ノード毎の各データベース・サーバ実体が負荷評価量に占める割合とを含む負荷状況を計算する。なお、以下説明する実施形態では、物理ノード毎の負荷状況として、物理ノード毎のリソース使用値と、そのリソース使用値の物理ノードにおける各データベース・サーバ実体が占める割合（以下、リソース使用割合という）を用いる。
【００６４】
ステップＳ１０５では、動的均衡計画部１４８は、負荷状況計算部１４６が算出したサーバ実体が属する物理ノードｉ（ｉ＝１，・・・Ｉ）のリソース使用値をＲｉとし、所定のインターバル時間において生じ得るコネクション数の増加量の平均値をＣとし、コネクション１本に相当するリソース利用値をｒとし、下記式（１）により、リソース使用値に対する目標値Ｔを算出する。
【００６５】
【数１】
2012070292.tif 000003
【００６６】
ここで、目標値Ｔは、現在のコネクションの状況と、上記所定インターバル時間のコネクションの変化を考慮して、各物理ノードにかかる負荷が均衡するようにコネクション配分の割合を決定するための制御目標値である。また、コネクション数の増加量平均値Ｃは、例えば、データベース側からパフォーマンス値として取得することができる。ステップＳ１０６では、動的均衡計画部１４８は、上記算出した目標値Ｔに応じて、各物理ノード上のサーバ実体に対するコネクション配分の割合を決定する。ここでは、各物理ノードｉ（ｉ＝１，・・・Ｉ）上に共通の分散データベースのサーバ実体が配置されるとすると、その分散データベースについての各物理ノードｉ上のサーバ実体へのコネクションの配分の比率は、Ｔ−Ｒ１：Ｔ−Ｒ２：…：Ｔ−ＲＩとなる。
【００６７】
上記式（１）中、コネクション１本に相当するリソース使用値ｒは、コネクション１本当が物理ノードにおけるリソース使用値に占める換算値であり、例えば、物理ノードの総コネクション数がパフォーマンス情報として取得可能であれば、最も負荷の大きな物理ノードに注目して、該物理ノードのリソース使用値をＲｓとし、該物理ノードのコネクション総数をｍとして、下記式（２）により算出することができる。
【００６８】
【数２】
2012070292.tif 000004
【００６９】
あるいは、分散データベース全体のコネクション数が上記パフォーマンス情報として取得可能であれば、最も負荷の大きな分散データベースに注目して、該分散データベースのサーバ実体が配置される各物理ノードのリソース使用値と、各物理ノードにおける該分散データベースのサーバ実体のリソース使用割合とから、分散データベースが使用する総リソース使用値を算出し、これを分散データベース全体に対するコネクション数で割ることで、コネクション１本に相当するリソース利用値ｒを算出することもできる。
【００７０】
ステップＳ１０７〜ステップＳ１１２のループでは、各分散データベース毎にステップＳ１０８〜ステップＳ１１１の処理を実行する。ステップＳ１０８〜ステップＳ１１１のループでは、注目する分散データベースについて、１番目からＩ番目の各物理ノードｉ毎にステップＳ１０９およびステップＳ１１０の処理を実行し、目標値を上回って負荷がかかる物理ノードの存在を検出する。ステップＳ１０９では、動的均衡計画部１４８は、物理ノードｉのリソース使用値Ｒｉと上記目標値Ｔとを比較し、リソース使用値Ｒｉが目標値Ｔを上回るか否かを判定する。ステップＳ１０９で、リソース使用値Ｒｉが目標値Ｔを上回らないと判定された場合（ＮＯ）には、ステップＳ１１１へ処理を進める。
【００７１】
ステップＳ１０７〜ステップＳ１１２のループを抜けると、ステップＳ１１３では、コネクション・プール調整部１５０は、リソース使用値Ｒｉが目標値Ｔを下回る（Ｒｉ＜Ｔ）物理ノードについて、コネクション配分の割合に応じて充分な量のコネクションをプール部１５４にプールし、ステップＳ１０１へ処理をループさせ、次のインターバル時間の経過を待つ。ステップＳ１１３におけるプール量の調整処理により、コネクション解決部１５２は、上記決定したコネクション配分の割合に応じて、例えばラウンドロビン方式により、再接続および新規接続を含めた新たなコネクションを配分するようになる。なお、各物理ノードにコネクションが割り振られる確率Ｓｉは、例えば各物理ノードｉ（ｉ＝１，・・・Ｉ）上に共通の分散データベースのサーバ実体が配置されるとすると、下記式（３）の関係となる（図８）。
【００７２】
【数３】
2012070292.tif 000005
【００７３】
一方、ステップＳ１０９で、リソース使用値Ｒｉが目標値Ｔを上回ると判定された場合（ＹＥＳ）には、ステップＳ１１０へ処理を進める。ステップＳ１１０では、動的均衡計画部１４８は、注目している分散データベースについて、物理ノードのリソース使用値Ｒｉが目標値Ｔを上回るその差分に相当するコネクション数Ｑのうち、注目する当該分散データベースに対応する分について、当該物理ノード上のサーバ実体へのコネクションを切断し再接続するようドライバ部１６２に対し要求する（図８）。ここで、物理ノードｉについて切断が要求される上記差分に相当するコネクション数Ｑは、下記式（４）により算出することができる。
【００７４】
【数４】
2012070292.tif 000006
【００７５】
そして、物理ノードｉ上に複数の分散データベースのサーバ実体が相乗りする場合には、ステップＳ１１０では、上記合計Ｑ本のうち、注目している分散データベースが当該物理ノードｉに占めるリソース使用割合に応じた分だけコネクションの再接続が行われる。再接続の要求を受けたドライバ部１６２は、トランザクション境界のタイミングで、再接続要求にかかるコネクションを切断し、新たなコネクションにつなぎ替える。
【００７６】
本発明の実施形態では、上述したように、物理ノードの負荷状況に応じたコネクション配分を行うことにより、目標よりも負荷が大きな物理ノードから目標より負荷が小さな物理ノードへと負荷を移動させることができ、ひいては物理ノード群１２０全体の負荷のピークを平滑化させることができる。本発明の実施形態によれば、動的に変動する負荷状況を監視し、負荷状況の変化に対応してクライアントとのコネクション配分の割合を動的に変えるというパフォーマンス・コストの低い操作により、物理ノード全体の負荷を均衡し、物理リソースを有効活用することが可能となる。
【００７７】
また、本実施形態によるコネクション配分による負荷均衡手法では、予測が困難な負荷状況を考慮することなくデータベース配置を計画することができる。また、分散データベースのマスタおよびレプリカへのコネクション配分を制御することで負荷均衡が実現されるため、局所的な計画と操作だけで良好に負荷の平滑化を実現することができ、物理リソースの増強やレプリカの追加では対処が困難であった突発的な過負荷やリソース余りに対しても、即応的に対処することが可能である。
【００７８】
さらに、目標値を越える負荷に相当するコネクションの再接続は、トランザクション境界で行われるため、ユーザにはコネクションの切断が隠蔽され、ユーザに切断を意識させない。したがって、長時間接続を維持するようなユーザに対しても、コネクション配分の対象とすることができる。
【００７９】
（３）データベース配置計画の詳細
（３．１）データベース配置計画方法
以下、コネクション配分による負荷均衡に有利なデータベース配置を計画する処理について説明する。ここで、分散データベースの数をＮとし、分散データベースの多重度をＭとし、物理ノードの数をＫとする。また、各分散データベースの多重度は、互いに異なることを妨げないが、説明の便宜上、共通であるものとする。
【００８０】
また、本発明の実施形態によるコネクション配分による負荷均衡手法が、複数の分散データベースのサーバ実体が相乗りする物理ノードにかかる負荷の均衡を目的とすることから、物理ノード上のサーバ集合に組み合わせが生じるようなデータベース配置であることが前提となる。このため、Ｍ≧２、Ｋ＜Ｍ・Ｎを満たすことが条件となる。さらに、分散データベースの多重度Ｍが物理ノードの数Ｋを上回ると、必ず同一物理ノード上に同一分散データベースの複数のサーバ実体が配置されてしまう。また分散データベースの多重度Ｍが物理ノード数Ｋと等しいと、各物理ノード上にすべての分散データベースのサーバ実体が配置されることになり、負荷を実質的に移動させることができなくなる。このため、Ｍ＜Ｋが追加の条件となる。
【００８１】
図９は、本発明の実施形態による配置計画部が実行するデータベース配置計画処理を示すフローチャートである。図９に示す処理は、システム管理者から初期配置構成の実施の指示が行われたことに応答して、ステップＳ２００から開始する。ステップＳ２０１では、配置計画部１１２は、システム管理者からの初期配置構成の実施の指令を受領する。ステップＳ２０２では、配置計画部１１２は、物理ノード数Ｋが分散データベース数Ｎ以上であるか否かを判定し、物理ノード数Ｋと分散データベース数Ｎとの大小関係により処理フローを分岐させる。
【００８２】
ステップＳ２０２で、物理ノード数Ｋが分散データベース数Ｎ以上であると判定された場合（ＹＥＳ）には、ステップＳ２０３へ処理を分岐させる。ステップＳ２０３では、配置計画部１１２は、ｎ個の分散データベースをｎ個の物理ノードに配置する配置計画アルゴリズムＡ（ｎ）を呼び出し、Ｎ個の分散データベースをＫ個のうちのＮ個の物理ノードへ配置する配置計画を実施する。より具体的には、配置計画部１１２は、ｎ←Ｎとして、多重度Ｍとをパラメータとして与えて、配置計画アルゴリズムＡ（ｎ）を呼び出し、Ｎ個の分散データベースのマスタおよびレプリカを、Ｋ個のうちの任意のＮ個の物理ノードに配置する配置計画を実施する。これにより、Ｎ個の物理ノード上にＮ個の分散データベースのＭ個のデータベース・サーバ実体の配置が計画され、Ｋ個のうちの残りＫ−Ｎ個の物理ノードがデータベース未配置の空きノードとして準備される。なお、配置計画アルゴリズムＡ（ｎ）については詳細を後述する。
【００８３】
ステップＳ２０４では、配置計画部１１２は、ステップＳ２０３で配置計画したＮ×Ｍ個のデータベース・サーバ実体うちのＯ個を、最後に配置計画されたものから順に、上記ステップＳ２０３で残されたＫ−Ｎ個の未配置の空きノードに１つずつ移動させる。移動させるサーバ実体の個数Ｏは、下記式（５）により算出することができる。
【００８４】
【数５】
2012070292.tif 000007
【００８５】
上記式（５）中、上の欠けた角括弧は床関数を表す。また、上記式（５）は、各物理ノード上に配置されるサーバ実体の数を均等化するための移動個数を計算する関数を例示するものであり、特に限定されるものではなく、例えば床関数に替えて天井関数を使用してもよい。
【００８６】
図１０は、分散データベースの各サーバ実体を物理ノードに配置する方法を説明する図である。図１０（Ａ）は、物理ノード数Ｋが分散データベース数Ｎ以上である場合の配置方法を示す。図１０（Ａ）に示すように、物理ノード数Ｋが分散データベース数Ｎ以上であるときは、Ｋ個のうちのＮ個の物理ノード上にＮ個の分散データベースのＭ個のサーバ実体の配置が計画され、その後、残りのＫ−Ｎ個の空きノードに均等に振り分けられ、結果として、Ｋ個の物理ノード全体にサーバ実体が均等に配置される。
【００８７】
ステップＳ２０５では、配置計画部１１２は、上記ステップＳ２０３およびステップＳ２０４で計画されたデータベース配置の構成定義を配置実行部１１４に渡し、分散配置の実施を指令して、分散データベース環境を構築させ、ステップＳ２０６で、本処理を終了させる。
【００８８】
一方、ステップＳ２０２で、物理ノード数Ｋが分散データベース数Ｎ未満であると判定された場合（ＮＯ）には、ステップＳ２０７へ処理を分岐させる。ステップＳ２０７では、配置計画部１１２は、まずｉ＝１を設定し、ステップＳ２０８では、配置計画アルゴリズムＡ（ｎ）を呼び出し、Ｎ個のうちのＫ個の分散データベースをＫ個の物理ノードへ配置する配置計画を実施する。より具体的には、配置計画部１１２は、ｎ←Ｋとして、多重度Ｍをパラメータとして与えて、配置計画アルゴリズムＡ（ｎ）を呼び出し、Ｎ個のうちの任意のＫ個の分散データベースのマスタおよびレプリカを、Ｋ個の物理ノード上に配置する配置計画を実施する。これにより、Ｋ個の物理ノード上にＫ個の分散データベースのＭ個のサーバ実体の配置が計画される。ステップＳ２０９では、未計画の分散データベースの個数Ｌを下記式（６）に従って計算する。
【００８９】
【数６】
2012070292.tif 000008
【００９０】
ステップＳ２１０では、配置計画部１１２は、未計画の分散データベースの個数Ｌが物理ノード数Ｋを上回るか否かを判定する。ステップＳ２１０で、未計画の分散データベースの個数Ｌが物理ノード数Ｋを上回ると判定された場合（ＹＥＳ）には、ステップＳ２１１へ処理を分岐させ、ｉをインクリメントし、ステップＳ２０８へ処理をループさせる。これにより、未計画の分散データベースの個数ＬのうちさらにＫ個の分散データベースの配置計画が実施される。一方、ステップＳ２１０で、未計画の分散データベースの個数Ｌが物理ノード数Ｋ以下であると判定された場合（ＮＯ）には、ステップＳ２１２へ処理を分岐させる。
【００９１】
ステップＳ２１２では、配置計画部１１２は、ｎ←Ｌとして、多重度Ｍをパラメータとして与えて、配置計画アルゴリズムＡ（ｎ）を呼び出し、Ｋ個未満の残りＬ個の分散データベースのマスタおよびレプリカをＬ個の物理ノードへの配置計画を実施する。ステップＳ２１３では、配置計画部１１２は、ステップＳ２１２で配置計画したＬ×Ｍ個のデータベース・サーバ実体を、最後に配置計画されたものから順に、Ｋ−Ｌの他の物理ノードに１つずつ移動させる。移動させるサーバ実体の個数は、上記式（５）と同様に、各物理ノード上に配置されるサーバ実体の数を均等化するための移動個数を計算する関数とすることができる。
【００９２】
ステップＳ２０５では、配置計画部１１２は、上記ステップＳ２０７〜ステップＳ２１３で計画されたデータベース配置の構成定義を配置実行部１１４に渡し、分散配置の実施を指令して、分散データベース環境を構築させ、ステップＳ２０６で、本処理を終了させる。
【００９３】
図１０（Ｂ）は、物理ノード数Ｋが分散データベース数Ｎ未満である場合の配置方法を説明する。図１０（Ｂ）に示すように、物理ノード数Ｋが分散データベース数Ｎ未満であるときは、まず、Ｎ個のうちのＫ個の分散データベースがＫ個の物理ノードに配置される。そして、残りの分散データベースがＫ未満となるまで、同様の手順により、Ｋ個ずつ分散データベースの配置計画を行う。残りの分散データベースの個数ＬがＫ未満となると、Ｌ個の分散データベースをＬ個の物理ノードへ配置する配置計画を実施して、最後配置したものから順にサーバ実体をＫ−Ｌ個の物理ノードに振り分けて、Ｋ個の物理ノードに均等にサーバ実体を配置する。
【００９４】
（３．２）配置計画アルゴリズムＡ（ｎ）
図１１は、本発明の実施形態による配置計画部が実行する、配置計画アルゴリズムＡ（ｎ）の処理を示すフローチャートである。図１１に示す処理は、図１０に示したステップＳ２０３、ステップＳ２０８またはステップＳ２１２で呼び出されて、ステップＳ３００から開始される。ステップＳ３０１では、配置計画部１１２は、ｎ個の分散データベースそれぞれの１つのデータベース・サーバ実体（例えばマスタ）をｎ個の物理ノード上に配置計画し、各物理ノードおよび各分散データベースに番号を付す（図１２のＡ１）。
【００９５】
ステップＳ３０２では、配置計画部１１２は、ｎ個の分散データベースのもう１つのデータベース・サーバ実体（例えば１番目のレプリカ）を、それぞれ、ステップＳ３０１で配置した物理ノードの次の番号が付された物理ノード上に配置計画する（図１２のＡ２）。ここで、上記「次の番号」は、１〜ｎまでの値であり、（ｎ＋１）は１へ循環される。ステップＳ３０１およびステップＳ３０２により、同一分散データベースのサーバ実体が配置される物理ノードを連結する辺を繋げると、ｎ個の物理ノードから構成される輪が構成される。なお、この輪はクラスタを構成し、この配置計画アルゴリズムを用いることで、クラスタは、節点数がｎまで広がる。
【００９６】
ステップＳ３０３では、配置計画部１１２は、多重度Ｍが３以上であるか否かを判定する。ステップＳ３０３で、多重度Ｍが３未満であると判定された場合（ＮＯ）には、ステップＳ３０９へ処理を分岐させ、本処理を終了し、呼び出し元に処理を返す。一方、ステップＳ３０３で、多重度Ｍが３以上であると判定された場合（ＹＥＳ）には、ステップＳ３０４〜ステップＳ３０６のループへ処理を進める。
【００９７】
ステップＳ３０４〜ステップＳ３０６のループでは、ステップＳ３０５の処理をＭ−２回だけ繰り返し、各分散データベースの残りのレプリカの配置を計画する。ステップＳ３０５では、ｎ個の分散データベースの残りのレプリカのうちｉ個目のデータベース・サーバ（つまりｉ＋１番目のレプリカ）を、下記式（７）に従って配置計画する（図１２のＡ３）。
【００９８】
【数７】
2012070292.tif 000009
【００９９】
上記式（７）中、下の欠けた角括弧は天井関数を表す。また、上記式（７）中、ｋは、ステップＳ３０１で付された番号であり、ｉは、分散データベースのインスタンスのうちの、上記ステップＳ３０１およびステップＳ３０２で残されたレプリカを識別する番号である。なお、上記式（７）は、ｎ個の分散データベースのサーバ実体を上記物理ノードの輪の上に最も距離を有するように配置するための関数を例示するものであるが、特に限定されるものではない。ステップＳ３０４〜ステップＳ３０６のループを抜けると、ステップＳ３０７では、配置計画部１１２は、Ｍが奇数であり、かつｎが偶数であるという条件を満たすか否かを判定する。ステップＳ３０７で、Ｍが奇数でありかつｎが偶数であるという条件を満たさないと判定された場合（ＮＯ）には、ステップＳ３０９で本処理を終了し、呼び出し元に処理を返す。
【０１００】
一方、ステップＳ３０７で、Ｍが奇数であり、かつｎが偶数であるという条件を満たすと判定された場合（ＹＥＳ）には、ステップＳ３０８へ処理を進める。ステップＳ３０８では、配置計画部１１２は、ｋとｋ＋ｎ−１番目においたデータベース配置の組み合わせが重ならないように、ｉ＝（Ｍ−１）／２番目に配置したデータベース・サーバを、次の番号でまだ配置していない物理ノードに配置する。このように配置することで、ｎ個の物理ノード全体にコネクション配分の流れが分散するようなデータベース配置が計画される。
【０１０１】
上述したデータベース配置処理により、上述した負荷が移動可能な関係を有し、クラスタサイズが最大化され、好ましくはクラスタの節点数が物理ノード数Ｋに一致するデータベース配置が計画される。ひいては、上記コネクション配分により、物理ノード群全体で負荷の均衡を図ることが可能となる。
【０１０２】
（３．３）データベース配置の交換
以下、長期的なスパンにおける負荷の偏りを軽減する補助構成について説明する。本実施形態の補助構成部１１６は、長期的なスパン内における物理ノード間の負荷の偏りを監視し、負荷の偏りがなくなるようにデータベース配置を適宜変更し、修正する機能を有する。ここで、長期的なスパン内における物理ノード間の負荷の偏りとは、各物理ノードの負荷評価量の一定期間における平均値から求められる、物理ノード群１２０内で常態化された負荷の不均一な分布をいう。各物理ノードの負荷評価量は、上述したコネクション配分により、目標値Ｔに漸近するように制御されるが、ある分散データベースに負荷が集中する場合に、複数の物理ノードにわたって負荷が偏在する可能性がある。
【０１０３】
図１３は、多重度２で輪状に分散配置されたデータベース配置における負荷分布を例示する図である。図１３には、物理ノードの物理的な配置ではなく、上記負荷移動可能な関係によるデータベース配置が表されている。図１３に示すような物理ノードが構成する輪の中で、分散データベースに負荷が集中することで、隣接する複数の物理ノードにかかる負荷が偏って増大してしまう可能性がある。この場合、この物理ノード間で効率的に負荷を移動させることができなくなってしまう。
【０１０４】
そこで、補助構成部１１６は、コネクション配分部１４０からパフォーマンス情報を取得し、このような常態化した負荷の偏りを監視する。補助構成部１１６は、常態化した負荷の偏りを検出すると、負荷が偏在する物理ノード上で動作するサーバ実体いずれか（例えばレプリカＡ‘）と、他方の比較的負荷が小さな物理ノード上で動作するサーバ実体（例えばレプリカＸ’）とを交換するよう、配置計画部１１２が計画したデータベース配置計画を修正し、配置実行部１１４のデータベース配置の実行を促す。なお、レプリカの交換はコネクション配分に比べてパフォーマンス・コストが高いため、例えば深夜などの負荷の低い時間帯やメンテナンスのタイミングを選択して行うことができる。なお、補助構成部１１６は、本実施形態の配置交換部を構成する。
【０１０５】
（４）代替実施形態
なお、上述までの実施形態では、コネクション要求受付部１６０およびドライバ部１６２が、クライアント・アプリケーションが動作するアプリケーション・サーバ１３０上に、コネクション配分部１４０が別の装置として構成されたコネクション配分サーバ１３２上に実現されるものとして説明してきた。しかしながら、図１に示す構成に限定されるものではなく、他の実施形態では、図１において波線で示すように、コネクション配分部１４０、コネクション要求受付部１６０、ドライバ部１６２およびクライアント１６４を同一のサーバ１３４上に実装することもできる。
【０１０６】
また、上述までの実施形態では、データベース配置サーバ１１０は、アプリケーション・サーバ１３０やコネクション配分サーバ１３２とは別の装置として実現されるものとして説明してきたが、データベース配置サーバ１１０は、アプリケーション・サーバ１３０、コネクション配分サーバ１３２またはサーバ１３４上に一体として構成することもできる。
【０１０７】
以上説明したように、上記実施形態によれば、分散データベース環境において、突発的な過負荷や物理リソース余りの状況に対し、即応的、柔軟かつ操作自体のパフォーマンス・コストが小さな手法により、物理ノードにかかる負荷を均衡することで、限られた物理リソース上で効率的な分散データベース環境を実現することができる、情報処理システム、情報処理装置、負荷均衡方法、データベース配置計画方法およびプログラムを提供することができる。
【０１０８】
なお、本発明の上記機能は、アセンブラ、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、ＪａｖａＢｅａｎｓ（登録商標）、Ｊａｖａ（登録商標）Ａｐｐｌｅｔ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、Ｒｕｂｙなどのレガシープログラミング言語またはオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、ＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ブルーレイディスク、ＳＤカード、ＭＯなど装置可読な記録媒体に格納して頒布または伝送して頒布することができる。
【０１０９】
これまで本発明を、特定の実施形態および実施例をもって説明してきたが、本発明は、特定の実施形態または実施例に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図１】
2012070292.tif 000010
【図２】
2012070292.tif 000011
【図３】
2012070292.tif 000012
【図４】
2012070292.tif 000013
【図５】
2012070292.tif 000014
【図６】
2012070292.tif 000015
【図７】
2012070292.tif 000016
【図８】
2012070292.tif 000017
【図９】
2012070292.tif 000018
【図１０】
2012070292.tif 000019
【図１１】
2012070292.tif 000020
【図１２】
2012070292.tif 000021
【図１３】
2012070292.tif 000022
【図１４】
2012070292.tif 000023
【手続補正書】
【提出日】平成25年12月3日(2013.12.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
複数の物理ノード上に分散配置される複数のデータベース・サーバであって、前記複数のデータベース・サーバのうち、第１データを受け持つ第１サーバと第２データを受け持つ第２サーバとが第１物理ノード上に配置され、前記第１データを受け持つ第３サーバが第２物理ノード上に配置される、当該複数のデータベース・サーバと、
前記第１物理ノードおよび前記第２物理ノードそれぞれに関する負荷を監視し、前記第１物理ノードの負荷が目標より大きく、前記第２物理ノードの負荷が目標より小さい場合に、前記第１物理ノード上の前記第１サーバへのクライアントとのコネクションを、前記第２物理ノード上の前記第３サーバへ移動させる配分部と
を含む、情報処理システム。
【国際調査報告】
2012070292.tif 000024
2012070292.tif 000025
2012070292.tif 000026
2012070292.tif 000027