"相互に通信可能に接続される複数のDBサーバと、前記複数のDBサーバそれぞれと通信可能に接続される仮想サーバ配置装置とを備えるデータ負荷分散配置システムであって、前記DBサーバは、1クライアントからの検索対象となるデータ、およびそのデータそれぞれに対応付けられるデータキー、2前記DBサーバ自身のサーバ性能、並びに、3前記データそれぞれの保存先の前記DBサーバを示すサーバ担当データ情報が保存される記憶部と、前記データキーおよび前記サーバ性能を、前記仮想サーバ配置装置に送信するデータ管理部と、前記仮想サーバ配置装置から、新たな前記サーバ担当データ情報を受信し、前記保存していたサーバ担当データ情報と比較することにより、自身の前記DBサーバの前記記憶部に保存していないデータおよびそのデータの保存先となる他のDBサーバを抽出し、前記抽出した他のDBサーバにデータ交換要求を送信することにより、前記自身が保存していないデータを取得し、前記保存していたサーバ担当データ情報を前記新たなサーバ担当データ情報に更新するデータ交換部と、を備え、前記仮想サーバ配置装置は、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれに設定する負荷の閾値を示す負荷閾値定数が保存される記憶部と、前記DBサーバそれぞれから取得した、前記サーバ性能と、前記負荷閾値定数とを用いて、前記DBサーバそれぞれの負荷の閾値であるサーバ閾値を計算し、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれから取得した前記データキーの数の合計であるシステム全体のデータ数とに基づき、前記データへのアクセス回数が均等であると仮定して、前記DBサーバそれぞれの負荷を計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し、前記負荷が前記サーバ閾値以下のサーバS-の集合と、前記負荷が前記サーバ閾値を超えるサーバSの集合とを生成するサーバ負荷計算部と、前記DBサーバおよび前記データそれぞれについて、所定のハッシュ関数を用いてハッシュ値を算出することにより、ハッシュ空間上に、前記データの保存を担当する前記DBサーバの担当領域を設定し、前記サーバSの集合うち、前記負荷と前記サーバ閾値との差の絶対値が大きいDBサーバから順に、前記ハッシュ空間上の前記サーバSの担当領域において、担当できるデータ数が自身のDBサーバのサーバ閾値を超える超過分に対して、前記サーバS-の集合のうち、前記絶対値が大きいDBサーバから順に仮想サーバを配置し、前記超過分のデータの前記ハッシュ空間上での担当領域を前記仮想サーバに変更し、前記変更したハッシュ空間上での担当領域に基づき、前記DBサーバそれぞれが担当するデータの保存先を示す前記新たなサーバ担当データ情報を生成し、前記生成した新たなサーバ担当データ情報を、前記DBサーバそれぞれに送信する配置処理部と、を備えること、を特徴とするデータ負荷分散配置システム。前記DBサーバは、自身が保存する前記データの増減と、前記クライアントからの前記データに対するアクセス数とを監視し、前記データそれぞれへの前記アクセス数を示すアクセス回数情報を生成するアクセス監視部を、さらに備え、前記データ管理部は、所定間隔ごとに、前記記憶部に保存されている前記データの前記データキーと、前記アクセス回数情報とを、前記仮想サーバ配置装置に送信し、前記仮想サーバ配置装置は、仮想サーバ再配置計算部を、さらに備えており、前記サーバ負荷計算部は、前記所定間隔ごとに前記DBサーバそれぞれから取得した前記アクセス回数情報に含まれる、前記データキーの数であるデータ数と、前記データへのアクセス数とを用いて、前記所定間隔ごとの前記DBサーバそれぞれの前記負荷を計算することにより、前記サーバS-の集合と、前記サーバSの集合とを生成し、前記仮想サーバ再配置計算部は、前記サーバS-の集合のうち、前記ハッシュ空間上に前記仮想サーバが配置されている前記DBサーバについて、前記絶対値が大きいDBサーバから順に、前記仮想サーバの担当領域を前記変更前に担当していた前記DBサーバの担当領域に戻したときに、当該DBサーバの負荷が当該DBサーバのサーバ閾値を超えない場合に、前記仮想サーバの担当領域を前記ハッシュ空間上から取り除き、前記DBサーバそれぞれの前記負荷を再計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し直すことにより、前記サーバS-の集合と、前記サーバSの集合とを再度生成して、前記配置処理部に引き渡すこと、を特徴とする請求項1に記載のデータ負荷分散配置システム。相互に通信可能に接続される複数のDBサーバと、前記複数のDBサーバそれぞれと通信可能に接続される仮想サーバ配置装置とを備えるデータ負荷分散配置システムのデータ負荷分散配置方法であって、前記DBサーバは、1クライアントからの検索対象となるデータ、およびそのデータそれぞれに対応付けられるデータキー、2前記DBサーバ自身のサーバ性能、並びに、3前記データそれぞれの保存先の前記DBサーバを示すサーバ担当データ情報が保存されている記憶部を備えており、前記データキーおよび前記サーバ性能を、前記仮想サーバ配置装置に送信するステップを実行し、前記仮想サーバ配置装置は、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれに設定する負荷の閾値を示す負荷閾値定数が保存されている記憶部を備えており、前記DBサーバそれぞれから取得した、前記サーバ性能と、前記負荷閾値定数とを用いて、前記DBサーバそれぞれの負荷の閾値であるサーバ閾値を計算し、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれから取得した前記データキーの数の合計であるシステム全体のデータ数とに基づき、前記データへのアクセス回数が均等であると仮定して、前記DBサーバそれぞれの負荷を計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し、前記負荷が前記サーバ閾値以下のサーバS-の集合と、前記負荷が前記サーバ閾値を超えるサーバSの集合とを生成するステップと、前記DBサーバおよび前記データそれぞれについて、所定のハッシュ関数を用いてハッシュ値を算出することにより、ハッシュ空間上に、前記データの保存を担当する前記DBサーバの担当領域を設定し、前記サーバSの集合うち、前記負荷と前記サーバ閾値との差の絶対値が大きいDBサーバから順に、前記ハッシュ空間上の前記サーバSの担当領域において、担当できるデータ数が自身のDBサーバのサーバ閾値を超える超過分に対して、前記サーバS-の集合のうち、前記絶対値が大きいDBサーバから順に仮想サーバを配置し、前記超過分のデータの前記ハッシュ空間上での担当領域を前記仮想サーバに変更し、前記変更したハッシュ空間上での担当領域に基づき、前記DBサーバそれぞれが担当するデータの保存先を示す新たなサーバ担当データ情報を生成し、前記生成した新たなサーバ担当データ情報を、前記DBサーバそれぞれに送信するステップと、を実行し、前記DBサーバは、前記仮想サーバ配置装置から、前記新たなサーバ担当データ情報を受信し、前記保存していたサーバ担当データ情報と比較することにより、自身の前記DBサーバの前記記憶部に保存していないデータおよびそのデータの保存先となる他のDBサーバを抽出し、前記抽出した他のDBサーバにデータ交換要求を送信することにより、前記自身が保存していないデータを取得し、前記保存していたサーバ担当データ情報を前記新たなサーバ担当データ情報に更新するステップを実行すること、を特徴とするデータ負荷分散配置方法。前記DBサーバは、自身が保存する前記データの増減と、前記クライアントからの前記データに対するアクセス数とを監視し、前記データそれぞれへの前記アクセス数を示すアクセス回数情報を生成するステップと、所定間隔ごとに、前記記憶部に保存されている前記データの前記データキーと、前記アクセス回数情報とを、前記仮想サーバ配置装置に送信するステップとを、さらに実行し、前記仮想サーバ配置装置は、前記所定間隔ごとに前記DBサーバそれぞれから取得した前記アクセス回数情報に含まれる、前記データキーの数であるデータ数と、前記データへのアクセス数とを用いて、前記所定間隔ごとの前記DBサーバそれぞれの前記負荷を計算することにより、前記サーバS-の集合と、前記サーバSの集合とを生成するステップと、前記サーバS-の集合のうち、前記ハッシュ空間上に前記仮想サーバが配置されている前記DBサーバについて、前記絶対値が大きいDBサーバから順に、前記仮想サーバの担当領域を前記変更前に担当していた前記DBサーバの担当領域に戻したときに、当該DBサーバの負荷が当該DBサーバのサーバ閾値を超えない場合に、前記仮想サーバの担当領域を前記ハッシュ空間上から取り除き、前記DBサーバそれぞれの前記負荷を再計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し直すことにより、前記サーバS-の集合と、前記サーバSの集合とを再度生成するステップとを、実行すること、を特徴とする請求項3に記載のデータ負荷分散配置方法。しかしながら、従来のコンシステントハッシュ法による仮想サーバの配置方法では、サーバにハッシュ関数を繰り返し適用するなどして複数のハッシュ値を算出し、仮想サーバをハッシュ空間に配置する。従って、適用するハッシュ関数に応じて負荷分散効果が異なると同時に、分散効果を高めるためには大量の仮想サーバをハッシュ空間上に配置する必要がある。その結果、仮想サーバ保持のための記述量が増加し、クライアントからデータの問い合わせを受けた際に、そのデータを格納している担当サーバの検索に要する時間が増加してしまう。また、従来の仮想サーバを用いた負荷分散方法では、各サーバに設ける仮想サーバ数は同一に設定されることが多く、各サーバの性能を考慮したものではない。さらに、システム稼動後、時間経過に伴う担当データ数の増減や各データへの実アクセス数に応じて変動するサーバの実負荷の変化に対応できず、負荷分散効果を継続して維持するには問題があった。このような背景に鑑みて本発明がなされたのであり、本発明は、仮想サーバの配置数を抑えた上で、サーバ間の負荷分散を実現し、システム全体としてスループットを向上させることができる、仮想サーバを用いたデータ負荷分散配置システムおよびデータ負荷分散配置方法を提供することを課題とする。前記した課題を解決するため、請求項1に記載の発明は、相互に通信可能に接続される複数のDBサーバと、前記複数のDBサーバそれぞれと通信可能に接続される仮想サーバ配置装置とを備えるデータ負荷分散配置システムであって、前記DBサーバが、1クライアントからの検索対象となるデータ、およびそのデータそれぞれに対応付けられるデータキー、2前記DBサーバ自身のサーバ性能、並びに、3前記データそれぞれの保存先の前記DBサーバを示すサーバ担当データ情報が保存される記憶部と、前記データキーおよび前記サーバ性能を、前記仮想サーバ配置装置に送信するデータ管理部と、前記仮想サーバ配置装置から、新たな前記サーバ担当データ情報を受信し、前記保存していたサーバ担当データ情報と比較することにより、自身の前記DBサーバの前記記憶部に保存していないデータおよびそのデータの保存先となる他のDBサーバを抽出し、前記抽出した他のDBサーバにデータ交換要求を送信することにより、前記自身が保存していないデータを取得し、前記保存していたサーバ担当データ情報を前記新たなサーバ担当データ情報に更新するデータ交換部と、を備え、前記仮想サーバ配置装置が、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれに設定する負荷の閾値を示す負荷閾値定数が保存される記憶部と、前記DBサーバそれぞれから取得した、前記サーバ性能と、前記負荷閾値定数とを用いて、前記DBサーバそれぞれの負荷の閾値であるサーバ閾値を計算し、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれから取得した前記データキーの数の合計であるシステム全体のデータ数とに基づき、前記データへのアクセス回数が均等であると仮定して、前記DBサーバそれぞれの負荷を計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し、前記負荷が前記サーバ閾値以下のサーバS-の集合と、前記負荷が前記サーバ閾値を超えるサーバSの集合とを生成するサーバ負荷計算部と、前記DBサーバおよび前記データそれぞれについて、所定のハッシュ関数を用いてハッシュ値を算出することにより、ハッシュ空間上に、前記データの保存を担当する前記DBサーバの担当領域を設定し、前記サーバSの集合うち、前記負荷と前記サーバ閾値との差の絶対値が大きいDBサーバから順に、前記ハッシュ空間上の前記サーバSの担当領域において、担当できるデータ数が自身のDBサーバのサーバ閾値を超える超過分に対して、前記サーバS-の集合のうち、前記絶対値が大きいDBサーバから順に仮想サーバを配置し、前記超過分のデータの前記ハッシュ空間上での担当領域を前記仮想サーバに変更し、前記変更したハッシュ空間上での担当領域に基づき、前記DBサーバそれぞれが担当するデータの保存先を示す前記新たなサーバ担当データ情報を生成し、前記生成した新たなサーバ担当データ情報を、前記DBサーバそれぞれに送信する配置処理部と、を備えることを特徴とするデータ負荷分散配置システムとした。また、請求項3に記載の発明は、相互に通信可能に接続される複数のDBサーバと、前記複数のDBサーバそれぞれと通信可能に接続される仮想サーバ配置装置とを備えるデータ負荷分散配置システムのデータ負荷分散配置方法であって、前記DBサーバが、1クライアントからの検索対象となるデータ、およびそのデータそれぞれに対応付けられるデータキー、2前記DBサーバ自身のサーバ性能、並びに、3前記データそれぞれの保存先の前記DBサーバを示すサーバ担当データ情報が保存されている記憶部を備えており、前記データキーおよび前記サーバ性能を、前記仮想サーバ配置装置に送信するステップを実行し、前記仮想サーバ配置装置が、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれに設定する負荷の閾値を示す負荷閾値定数が保存されている記憶部を備えており、前記DBサーバそれぞれから取得した、前記サーバ性能と、前記負荷閾値定数とを用いて、前記DBサーバそれぞれの負荷の閾値であるサーバ閾値を計算し、前記データ負荷分散配置システム全体に求められる処理性能と、前記DBサーバそれぞれから取得した前記データキーの数の合計であるシステム全体のデータ数とに基づき、前記データへのアクセス回数が均等であると仮定して、前記DBサーバそれぞれの負荷を計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し、前記負荷が前記サーバ閾値以下のサーバS-の集合と、前記負荷が前記サーバ閾値を超えるサーバSの集合とを生成するステップと、前記DBサーバおよび前記データそれぞれについて、所定のハッシュ関数を用いてハッシュ値を算出することにより、ハッシュ空間上に、前記データの保存を担当する前記DBサーバの担当領域を設定し、前記サーバSの集合うち、前記負荷と前記サーバ閾値との差の絶対値が大きいDBサーバから順に、前記ハッシュ空間上の前記サーバSの担当領域において、担当できるデータ数が自身のDBサーバのサーバ閾値を超える超過分に対して、前記サーバS-の集合のうち、前記絶対値が大きいDBサーバから順に仮想サーバを配置し、前記超過分のデータの前記ハッシュ空間上での担当領域を前記仮想サーバに変更し、前記変更したハッシュ空間上での担当領域に基づき、前記DBサーバそれぞれが担当するデータの保存先を示す新たなサーバ担当データ情報を生成し、前記生成した新たなサーバ担当データ情報を、前記DBサーバそれぞれに送信するステップと、を実行し、前記DBサーバが、前記仮想サーバ配置装置から、前記新たなサーバ担当データ情報を受信し、前記保存していたサーバ担当データ情報と比較することにより、自身の前記DBサーバの前記記憶部に保存していないデータおよびそのデータの保存先となる他のDBサーバを抽出し、前記抽出した他のDBサーバにデータ交換要求を送信することにより、前記自身が保存していないデータを取得し、前記保存していたサーバ担当データ情報を前記新たなサーバ担当データ情報に更新するステップを実行することを特徴とするデータ負荷分散配置方法とした。このようにすることで、本実施形態に係るデータ負荷分散配置システムおよびデータ負荷分散配置方法によれば、各DBDataBaseサーバのサーバ性能を考慮した上でサーバ閾値を計算し、ハッシュ空間上で、負荷がサーバ閾値を超えるサーバSのDBサーバの負荷の超過分の領域を、負荷がサーバ閾値以下のサーバS-のDBサーバが、仮想サーバを設けることにより、その領域のデータを、サーバS-のDBサーバが担当する。よって、DBサーバ間の負荷分散を実現し、さらに、各サーバの担当領域に配置する仮想サーバの数が同一に設定される従来技術に比べ、仮想サーバの数を減らすことができる。また、仮想サーバを大量に配置する必要がなくなるため、仮想サーバ保持のための記述量の増加を抑え、クライアントからデータの問い合わせを受けた際に、そのデータを格納している担当サーバの検索に要する時間の増加を抑えることができる。よって、システム全体としてのスループットを向上させることができる。請求項2に記載の発明は、前記DBサーバが、自身が保存する前記データの増減と、前記クライアントからの前記データに対するアクセス数とを監視し、前記データそれぞれへの前記アクセス数を示すアクセス回数情報を生成するアクセス監視部を、さらに備え、前記データ管理部が、所定間隔ごとに、前記記憶部に保存されている前記データの前記データキーと、前記アクセス回数情報とを、前記仮想サーバ配置装置に送信し、前記仮想サーバ配置装置が、仮想サーバ再配置計算部を、さらに備えており、前記サーバ負荷計算部が、前記所定間隔ごとに前記DBサーバそれぞれから取得した前記アクセス回数情報に含まれる、前記データキーの数であるデータ数と、前記データへのアクセス数とを用いて、前記所定間隔ごとの前記DBサーバそれぞれの前記負荷を計算することにより、前記サーバS-の集合と、前記サーバSの集合とを生成し、前記仮想サーバ再配置計算部が、前記サーバS-の集合のうち、前記ハッシュ空間上に前記仮想サーバが配置されている前記DBサーバについて、前記絶対値が大きいDBサーバから順に、前記仮想サーバの担当領域を前記変更前に担当していた前記DBサーバの担当領域に戻したときに、当該DBサーバの負荷が当該DBサーバのサーバ閾値を超えない場合に、前記仮想サーバの担当領域を前記ハッシュ空間上から取り除き、前記DBサーバそれぞれの前記負荷を再計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し直すことにより、前記サーバS-の集合と、前記サーバSの集合とを再度生成して、前記配置処理部に引き渡すこと、を特徴とする請求項1に記載のデータ負荷分散配置システムとした。また、請求項4に記載の発明は、前記DBサーバが、自身が保存する前記データの増減と、前記クライアントからの前記データに対するアクセス数とを監視し、前記データそれぞれへの前記アクセス数を示すアクセス回数情報を生成するステップと、所定間隔ごとに、前記記憶部に保存されている前記データの前記データキーと、前記アクセス回数情報とを、前記仮想サーバ配置装置に送信するステップとを、さらに実行し、前記仮想サーバ配置装置が、前記所定間隔ごとに前記DBサーバそれぞれから取得した前記アクセス回数情報に含まれる、前記データキーの数であるデータ数と、前記データへのアクセス数とを用いて、前記所定間隔ごとの前記DBサーバそれぞれの前記負荷を計算することにより、前記サーバS-の集合と、前記サーバSの集合とを生成するステップと、前記サーバS-の集合のうち、前記ハッシュ空間上に前記仮想サーバが配置されている前記DBサーバについて、前記絶対値が大きいDBサーバから順に、前記仮想サーバの担当領域を前記変更前に担当していた前記DBサーバの担当領域に戻したときに、当該DBサーバの負荷が当該DBサーバのサーバ閾値を超えない場合に、前記仮想サーバの担当領域を前記ハッシュ空間上から取り除き、前記DBサーバそれぞれの前記負荷を再計算し、前記DBサーバごとに、前記負荷と前記サーバ閾値との差の絶対値を計算し直すことにより、前記サーバS-の集合と、前記サーバSの集合とを再度生成するステップとを、実行すること、を特徴とする請求項3に記載のデータ負荷分散配置方法とした。このようにすることで、本実施形態に係るデータ負荷分散配置システムおよびデータ負荷分散配置方法によれば、所定間隔ごとに、負荷がサーバ閾値以下のサーバS-に含まれることになったDBサーバのハッシュ空間上での担当領域に、仮想サーバが配置されている場合に、その仮想サーバの担当領域を、元のDBサーバの担当領域に戻すことができる。そして、負荷とサーバ閾値との差の絶対値を計算し直すことにより、負荷がサーバ閾値以下のサーバS-の集合と、負荷がサーバ閾値を超えるサーバSの集合とを生成して、再度、ハッシュ空間上での仮想サーバの配置を計算する。これにより、各DBサーバの負荷を均一化させるとともに、ハッシュ空間上に配置する仮想サーバの数を減らすことができる。本発明によれば、仮想サーバの配置数を抑えた上で、サーバ間の負荷分散を実現し、システム全体としてスループットを向上させる、仮想サーバを用いたデータ負荷分散配置システムおよびデータ負荷分散配置方法を提供することができる。次に、本発明を実施するための形態以下、実施形態というについて、適宜図面を参照しながら詳細に説明する。本実施形態に係る仮想サーバを用いたデータ負荷分散配置システム1およびデータ負荷分散配置方法では、1各DBサーバ20のサーバ性能を考慮した仮想サーバの初期配置によるデータ負荷分散配置処理と、2システム稼動後の時間経過に伴うデータ数やデータへのアクセス回数の増減に対応した動的な仮想サーバの再配置と、を実現する。まず、本実施形態に係るデータ負荷分散配置システム1の概要について説明する。図1は、本実施形態に係るデータ負荷分散配置システム1の構成を示すブロック図である。図1に示すように、本実施形態に係るデータ負荷分散配置システム1は、各データを保存する複数のDBサーバ20と、ハッシュ空間上での仮想サーバの配置による各データの保存先となるDBサーバ20の決定や、そのデータの保存先の変更等を管理する仮想サーバ配置装置10とが、通信可能に接続されて構成される。この仮想サーバ配置装置10と各DBサーバ20それぞれとが通信可能に接続されるとともに、各DBサーバ20同士も、通信可能に接続される。また、仮想サーバ配置装置10は、管理者サーバ5と通信可能に接続されており、仮想サーバをハッシュ空間上に配置するために必要となる、設定情報後記参照を管理者サーバ5から受信する。そして、仮想サーバ配置装置10は、仮想サーバの配置処理の結果、DBサーバ20が不足する場合には、リソース不足通知を管理者サーバ5へ送信する。DBサーバ20は、クライアント6とも通信可能に接続されている。DBサーバ20は、クライアント6からのデータ要求を受け付けると、そのデータを保存するDBサーバ20を、後記する記憶部24内のサーバ担当データ情報100図6参照を参照して検索し、その検索結果を担当サーバ通知として、クライアント6に送信する。そして、クライアント6は、その担当サーバ通知に示されるデータの保存先のDBサーバ20に対して、データ取得要求を送信し、そのデータを取得する。次に、本実施形態に係るデータ負荷分散配置システム1の仮想サーバの初期配置の概要について説明する。その後に、データ負荷分散配置システム1の具体的な構成と、データ負荷分散配置方法の具体的な処理の流れについて説明する。仮想サーバの初期配置の概要まず、本実施形態に係るデータ負荷分散配置システム1が仮想サーバの初期配置を行う際の前提となる条件および処理の概要について説明する。本実施形態に係るデータ負荷分散配置システム1では、初期状態として、N台のDBサーバ物理サーバ20にH個のデータが保存されているものとする。この場合に、初期状態でのシステム性能要件は、以下のABようになる。A各サーバSmにかかる負荷Wmは、そのサーバ性能Tm以下である。B各サーバSmにかかる負荷Wmの合計が、システム全体に求める処理性能R以下である。このAおよびBのシステム性能条件を満たす限り、クライアント6は、正常なアクセス応答時間内でシステム内のデータへのアクセスが可能である。本実施形態に係る仮想サーバの初期配置では、システム全体に対して1秒当たりのシステム最大性能であるR回のアクセスがあり、各データへのアクセス回数は均等であるとして、1つのデータ当たりR/H回のアクセスがあると仮定する。そして、システム性能条件AおよびBを満たしながら、さらに次のシステム性能条件Cを満たすように、仮想サーバを配置する。C各サーバSmにかかる負荷Wmは、そのサーバ閾値αm以下である。なお、このサーバ閾値αmは、以下の式1により計算される。ここで、cは、負荷閾値定数であり、例えば、サーバ性能Tmの7割をサーバ閾値αmとして設定する場合には、システムの管理者等により07が、負荷閾値定数cとして設定される。また、負荷Wmは、以下の式2により計算される。ここで、Dmは、サーバSmに保存されるデータ数であり、αSmは、サーバSmが保存するデータdSmへのアクセス回数である。本実施形態に係る仮想サーバ配置装置10は、ハッシュ空間における各サーバSmDBサーバ20の担当領域に、仮想サーバを配置し、サーバSm物理サーバの担当領域の一部を仮想サーバに担当させる。これにより、そのサーバSm物理サーバの担当データDBサーバ20が保存するデータの一部を、仮想サーバの基となる他の物理サーバDBサーバ20に変更すること、つまり、他のDBサーバ20にそのデータを移して保存させることが可能となる。そして、仮想サーバ配置装置10は、この仮想サーバを用いて、ハッシュ空間における負荷の大きい物理サーバDBサーバ20の担当領域内に、負荷の小さい物理サーバDBサーバ20の仮想サーバを割り当てることで、システム全体の負荷分散を行う。なお、本実施形態において、DBサーバ20をハッシュ空間に配置した場合に、DBサーバ20を、仮想サーバに対応させる意味において物理サーバということがある。仮想サーバ配置装置10は、各DBサーバ20からサーバ性能Tmを取得し、管理者サーバ5から負荷閾値定数cを取得するなどして、式1を用いて、サーバ閾値αmを計算する。そして、仮想サーバ配置装置10は、負荷Wmがかかっている物理サーバSmに対し、Omを以下のように定義する。ここで、Omは、物理サーバSmの負荷Wmとサーバ閾値αmとの差の絶対値である。そして、仮想サーバ配置装置10は、物理サーバの集合Sを、以下のようにS-,Sの2つの集合に分割する。ここで、負荷がサーバ閾値以下の物理サーバの集合を、S-とする。そして、S-に含まれる物理サーバSmをOmの大きい順に並べたものを以下のように記述する。一方、負荷がサーバ閾値を超える物理サーバの集合を、Sとする。そして、Sに含まれる物理サーバSmをOmの大きい順に並べたものを以下のように記述する。また、負荷がサーバ閾値以下のサーバS-の絶対値O-kj、負荷がサーバ閾値を超えるサーバSの絶対値Oliを、以下のように定義する。次に、仮想サーバ配置装置10による、ハッシュ空間上での仮想サーバの初期配置の概要について説明する。図2~図5は、本実施形態に係る仮想サーバ配置装置10による、ハッシュ空間上での仮想サーバの初期配置の概要を説明するための図である。ここでは、図2bに示すように、仮想サーバ配置装置10により、負荷がサーバ閾値以下のサーバS-が、S3,S4,S5のように、負荷とサーバ閾値との差の絶対値O-の大きい順に並べられ、負荷がサーバ閾値を超えるサーバSが、S1,S2のように、負荷とサーバ閾値との差の絶対値Oの大きい順に並べられているものとする。そして、この各サーバS1~S5とその担当データとが、仮想サーバ配置装置10により、図2aに示すように、ハッシュ空間上に配置されるとする。図2aに示すような状態から、仮想サーバ配置装置10は、負荷とサーバ閾値との差の絶対値が大きい順に、負荷がサーバ閾値を超えるサーバSの負荷の超過分の領域に、負荷がサーバ閾値以下のサーバS-の仮想サーバを配置することで、負荷がサーバ閾値を超えるサーバSの負荷の超過分のデータの担当を、負荷がサーバ閾値以下のサーバS-に変更する。具体的には、図3に示すように、まず、負荷がサーバ閾値を超えるサーバSのうち、絶対値Oが一番大きいS1のサーバの負荷の超過分の領域に、負荷がサーバ閾値以下のサーバS-のうち、絶対値O-が一番大きいサーバS3の仮想サーバVS3を配置し、その領域のデータをサーバS3が担当する。次に、図4に示すように、サーバS1の残りの負荷の超過分の領域に、負荷がサーバ閾値以下の次のサーバであるサーバS4の仮想サーバVS4を配置し、その領域のデータをサーバS4が担当する。これによって、サーバS1の負荷の超過分が解消される。続いて、負荷がサーバ閾値を超える次のサーバであるサーバS2の負荷の超過分の領域に、負荷がサーバ閾値以下のサーバS4の残りの余剰分を、仮想サーバVS4として配置し、その領域のデータをサーバS4が担当する。続いて、図5に示すように、サーバS2の残りの負荷の超過分の領域に、負荷がサーバ閾値以下の次のサーバであるサーバS5の仮想サーバVS5を配置し、その領域のデータをサーバS5が担当する。これによって、サーバS2の負荷の超過分が解消される。なお、仮想サーバ配置装置10は、この仮想サーバの配置処理の結果、負荷がサーバ閾値以下のサーバS-が不足する場合には、リソース不足通知を管理者サーバ5へ送信する。本実施形態に係る仮想サーバ配置装置10は、このように、ハッシュ空間上で、負荷がサーバ閾値を超えるサーバSの負荷の超過分の領域を、負荷がサーバ閾値以下のサーバS-が、仮想サーバを設けることにより、その領域のデータを、負荷がサーバ閾値以下のサーバS-のサーバが担当する。よって、サーバ間の負荷分散を実現し、仮想サーバの数を減らすことができる。データ負荷分散配置システムの構成次に、本実施形態に係るデータ負荷分散配置システム1を構成するDBサーバ20および仮想サーバ配置装置10の構成例について詳細に説明する。<DBサーバの構成>まず、本実施形態に係るDBサーバ20の構成例について、図1を参照して説明する。DBサーバ20は、データを自身が備える記憶手段後記する記憶部24に保存しておき、クライアント6からのデータ取得要求に応じて、その要求のあったデータをクライアント6へ送信する。また、DBサーバ20は、仮想サーバ配置装置10から、各データの保存先となるDBサーバ20を示すサーバ担当データ情報100詳細は後記する図6参照を受信すると、そのサーバ担当データ情報100を参照して、自身が担当すべきデータを記憶する他のDBサーバ20から、そのデータを取得し保存する処理を行う。このDBサーバ20は、図1に示すように、処理部21と、通信部22と、メモリ部23と、記憶部24とを備える。通信部22は、クライアント6、自身以外の他のDBサーバ20および仮想サーバ配置装置10との間の通信を司る、通信インタフェースにより構成される。処理部21は、DBサーバ20全体の制御を司り、情報受信部211と、データ管理部212と、アクセス監視部214と、データ交換部215と、情報送信部216とを含んで構成される。なお、この処理部21は、例えば、DBサーバ20の記憶部24に格納されたプログラムをCPUCentralProcessingUnitが、メモリ部23であるRAMRandomAccessMemoryに展開し実行することで実現される。情報受信部211は、通信部22を介して、クライアント6からのデータ要求や、仮想サーバ配置装置10からのサーバ担当データ情報100図6参照、他のDBサーバ20から送信されたデータ等を取得する。データ管理部212は、記憶部24に記憶されたデータの管理全般を司る。具体的には、データ管理部212は、クライアント6からのデータ要求を、情報受信部211を介して受け付けると、記憶部24内のサーバ担当データ情報100を参照し、そのデータを記憶するDBサーバ20を検索する。そして、その検索結果を、担当サーバ通知として、情報送信部216を介して、クライアント6に送信する。図6は、本実施形態に係るサーバ担当データ情報100のデータ構成の一例を示す図である。図6に示すように、サーバ担当データ情報100は、各DBサーバサーバSm20ごとに、そのサーバSmが保存する担当データが記憶される。例えば、サーバS1は、d1~d3,d6のデータを保存することを示している。なお、この担当データには、各データのデータキーがd1d2...、等として記憶される。なお、このサーバ担当データ情報100には、仮想サーバ配置装置10による仮想サーバの初期配置の処理の初期値として、現時点においてDBサーバ20ごとに保存される各データの情報が記憶されているものとする。また、データ管理部212は、図1に示すように、ハッシュ値計算部213を備えている。そして、データ管理部212は、通信部22や、不図示の入力部を介して、新たなデータを取得すると、そのデータのデータキーに対して、ハッシュ値計算部213が、所定のハッシュ関数によりハッシュ値を計算する。データ管理部212は、そのデータのデータキーと、そのハッシュ値と、そのデータデータ値とを対応付けて、記憶部24内の後記するデータ格納部200に記憶する。そして、データ管理部212は、クライアント6から自身が保存するデータに対するデータ取得要求を受け付けると、そのデータ取得要求に付されたデータキーについて、ハッシュ値計算部213がハッシュ値を計算する。次に、データ管理部212は、そのデータキーのハッシュ値を用いて、データ格納部200に記憶されたデータデータ値を検索し、検索したデータを、情報送信部216を介して、クライアント6へ送信する。また、データ管理部212は、仮想サーバ配置装置10による仮想サーバの初期配置の処理に際して、記憶部24内のデータ格納部200を参照し、自身が保存するすべてのデータのデータキーと、予め記憶部24等に保存されている自身のサーバ性能Tmとを、自身のDBサーバ20に固有な番号と共に、情報送信部216を介して仮想サーバ配置装置10に送信する。なお、自身のDBサーバ20に固有な番号とは、例えば、そのDBサーバ20のIPアドレス等であるが、これに限定されず、他のDBサーバ20等と識別可能な番号であればよい。また、データ管理部212は、システム稼働後、所定間隔Zごとに、自身がその時点で保存するすべてのデータのデータキーと、アクセス監視部214が生成したアクセス回数情報300後記する図7参照とを、自身のDBサーバ20に固有な番号と共に、情報送信部216を介して仮想サーバ配置装置10に送信する。さらに、データ管理部212は、仮想サーバ配置装置10から、新たなサーバ担当データ情報100を取得すると、記憶部24内のサーバ担当データ情報100を更新する処理を行う。アクセス監視部214は、データ管理部212を監視し、クライアント6からのデータ取得要求を受け付けるごとに、データ格納部200に記憶された各データへのアクセス回数をカウントし、その結果を、アクセス回数情報300として記憶する。図7は、本実施形態に係るアクセス回数情報300のデータ構成の一例を示す図である。図7に示すように、アクセス回数情報300には、各DBサーバ20自身が記憶するデータごとに、クライアント6からアクセスが何回あったかを示す情報であり、各データのデータキーと、そのデータのアクセス回数が記憶される。なお、このアクセス回数情報300は、データ管理部212により、仮想サーバ配置装置10へ所定間隔Zごとに送信される。データ交換部215は、データ管理部212が仮想サーバ配置装置10から新たなサーバ担当データ情報100を受信したことを契機として、その新たなサーバ担当データ情報100と記憶部24に保存していたサーバ担当データ情報100と比較することにより、自身が保存していないデータおよびそのデータの保存先となる他のDBサーバ20を抽出する。そして、データ交換部215は、その抽出した自身が担当すべきデータを記憶している他のDBサーバ20に対して、データ交換要求を送信することにより、そのデータの送信を依頼し、担当すべきデータを取得する。続いて、データ交換部215は、記憶部24に保存していたサーバ担当データ情報100を、データ管理部212を介して、受信した新たなサーバ担当データ情報100に更新させる。情報送信部216は、通信部22を介して、クライアント6への担当サーバ通知や、仮想サーバ配置装置10への自身が保存するデータに関する情報、他のDBサーバ20へのデータ交換要求等を送信する。次に、記憶部24は、ハードディスクやフラッシュメモリ等の記憶装置からなり、サーバ担当データ情報100、データ格納部200、アクセス回数情報300を記憶している。メモリ部23は、RAM等の一次記憶装置からなり、処理部21によるデータ処理に必要な情報を一次的に記憶している。<仮想サーバ配置装置の構成>次に、本実施形態に係る仮想サーバ配置装置10の構成について、図1を参照して説明する。仮想サーバ配置装置10は、データを複数のDBサーバ20に分散して保存させるために、データデータキーとDBサーバ固有の番号20とをハッシュ関数にかけてリング状のハッシュ空間に配置する。そして、仮想サーバ配置装置10は、各DBサーバ20のサーバ性能Tmや、時間経過に伴うサーバ負荷の変動を考慮した上で、仮想サーバをハッシュ空間上に配置する。仮想サーバ配置装置10は、仮想サーバの配置により決定した各DBサーバ20が保存すべきデータの情報サーバ担当データ情報100を、各DBサーバ20それぞれに送信する。この仮想サーバ配置装置10は、図1に示すように、制御部11と、通信部12と、メモリ部13と、記憶部14とを備える。通信部12は、各DBサーバ20および管理者サーバ5との間の通信を司る、通信インタフェースにより構成される。制御部11は、仮想サーバ配置装置10全体の制御を司り、情報受信部111と、サーバ負荷計算部112と、配置処理部113と、仮想サーバ再配置計算部115と、情報送信部116とを含んで構成される。なお、この制御部11は、例えば、仮想サーバ配置装置10の記憶部14に格納されたプログラムをCPUが、メモリ部13であるRAMに展開し実行することで実現される。情報受信部111は、通信部12を介して、DBサーバ20それぞれから、各DBサーバ20に記憶されたデータ等に関する情報を受信したり、管理者サーバ5から、仮想サーバの配置に必要となる設定情報等を取得する。サーバ負荷計算部112は、各DBサーバ20のサーバ閾値αmおよび負荷Wmを計算する。具体的には、サーバ負荷計算部112は、仮想サーバの初期配置の処理において、管理者サーバ5等から、システム全体に求める処理性能Rおよび負荷閾値定数cを取得し、DBサーバ20から各DBサーバ20のサーバ性能Tmおよびデータキーを取得する。そして、サーバ負荷計算部112は、各DBサーバ20のサーバ性能Tmと負荷閾値定数cにより、式1を用いて、各DBサーバ20のサーバ閾値αmを計算する。また、サーバ負荷計算部112は、各DBサーバ20から取得したデータキーの数を合計し、システム全体のデータ数Hを計算する。そして、各データへのアクセス回数が均等であると仮定し、1つのデータへのアクセス回数をR/H回として、式2を用いて、各DBサーバ20の負荷Wmを計算する。そして、サーバ負荷計算部112は、計算したDBサーバ20ごとの負荷Wmとサーバ閾値αmとを比較し、負荷がサーバ閾値以下のサーバS-の集合と、負荷がサーバ閾値を超えるサーバSの集合とを生成して、その集合ごとに、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順にサーバを整列する処理を行う。また、サーバ負荷計算部112は、仮想サーバの再配置の処理において、所定間隔Zごとに各DBサーバ20が記憶するデータのデータキーと、そのデータに対するアクセス回数を記録したアクセス回数情報300を、各DBサーバ20から取得する。そして、式2を用いて、各DBサーバ20の負荷Wmを計算する。また、サーバ負荷計算部112は、計算した所定間隔Z経過後のDBサーバ20ごとの負荷Wmとサーバ閾値αmとを比較し、負荷がサーバ閾値以下のサーバS-の集合と、負荷がサーバ閾値を超えるサーバSの集合とを生成して、その集合ごとに、所定間隔Z経過時点における、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順にサーバを整列する処理を行う。次に、配置処理部113は、ハッシュ値計算部114を備えており、コンシステントハッシュ法時計回り方式を用いて、各DBサーバ固有の番号20およびデータデータキーのハッシュ値を計算し、ハッシュ空間上に各DBサーバ20およびデータを配置する。そして、配置処理部113は、負荷がサーバ閾値を超えるサーバSのうち、絶対値Oが大きいDBサーバ20から順に、ハッシュ空間上の担当領域の超過分に対して、負荷がサーバ閾値以下のサーバS-のうち、絶対値O-が大きいDBサーバ20から順に仮想サーバを配置することで、負荷がサーバ閾値を超えるサーバSの超過分を解消する処理仮想サーバ配置処理を行う。なお、この仮想サーバ配置処理の詳細については、図9および図10を用いて説明する。配置処理部113は、負荷がサーバ閾値を超えるサーバSのすべての超過分について、仮想サーバを配置することにより決定した、各DBサーバ20が担当するデータについての新たなサーバ担当データ情報100を生成する。そして、配置処理部113は、情報送信部116を介して、各DBサーバ20それぞれに、新たなサーバ担当データ情報100を送信する。また、配置処理部113は、仮想サーバを配置しても、負荷がサーバ閾値を超えるサーバSの超過分を解消できない場合には、情報送信部116を介して、管理者サーバ5に、DBサーバ20のリソースが足りないことを示すリソース不足通知を送信する。次に、仮想サーバ再配置計算部115は、仮想サーバの再配置の処理において、サーバ負荷計算部112が、所定間隔Z経過時点における、負荷がサーバ閾値以下のサーバS-と、負荷がサーバ閾値を超えるサーバSとについて、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順にサーバを整列する処理が行ったことを契機として、所定間隔Z経過時点において、負荷がサーバ閾値以下のサーバS-に、ハッシュ空間上で仮想サーバが配置されていた場合に、その仮想サーバを取り除く処理仮想サーバ再配置計算を行う。つまり、元々そのDBサーバ20自身が担当すべきハッシュ空間の担当領域を、そのDBサーバ20の負荷Wmがサーバ閾値αmより大きいため、他のDBサーバ20が仮想サーバを配置することにより、データの保存先を変更してもらっていたものを、時間の経過により、サーバの負荷が変化し、負荷に余裕が生じたため、仮想サーバが担当していたデータ分を、元々のDBサーバ20の担当領域に戻す処理を行う。なお、この仮想サーバ再配置計算の詳細は、後記する図12~図18を参照して説明する。情報送信部116は、通信部12を介して、各DBサーバ20それぞれに、配置処理部113が生成したサーバ担当データ情報100を送信する。また、情報送信部116は、管理者サーバ5に対し、リソース不足通知を送信する。次に、記憶部14は、ハードディスクやフラッシュメモリ等の記憶装置からなり、配置処理部113が生成したサーバ担当データ情報100を記憶している。メモリ部13は、RAM等の一次記憶装置からなり、制御部11によるデータ処理に必要な情報を一次的に記憶している。次に、本実施形態に係るデータ負荷分散配置システム1が行う、1各DBサーバ20のサーバ性能を考慮した仮想サーバの初期配置によるデータ負荷分散配置処理と、2システム稼動後の時間経過に伴うデータ数やデータアクセス回数の増減に対応した動的な仮想サーバの再配置と、について具体的に説明する。データ負荷分散配置処理―仮想サーバの初期配置まず、図8を参照して、データ負荷分散配置システム1が行う、仮想サーバの初期配置における全体の処理の流れについて説明する。図8は、本実施形態に係るデータ負荷分散配置処理仮想サーバの初期配置の全体の処理の流れを示すシーケンス図である。まず、管理者サーバ5から、仮想サーバ配置装置10が、システム全体に求める処理性能Rと、各サーバのサーバ閾値を決定するための負荷閾値定数cとを、設定情報として取得するステップS11。なお、この処理は、予め、仮想サーバ配置装置10の記憶部14に、設定情報として記憶するようにしてもよい。次に、各DBサーバ20は、自身が保存しているデータのデータキー、および自サーバのサーバ性能Tmを、自身に固有な番号とともに、仮想サーバ配置装置10に送信するステップS12。続いて、仮想サーバ配置装置10のサーバ負荷計算部112は、サーバ負荷計算処理を行うステップS13。具体的には、サーバ負荷計算部112は、管理者サーバ5から受信した設定情報に含まれる負荷閾値定数cと、各DBサーバ20から受信したサーバ性能Tmとに基づき、式1を用いて、各サーバのサーバ閾値αmを計算する。そして、サーバ負荷計算部112は、管理者サーバ5から受信したシステム全体に求める処理性能Rと、各サーバから受信したデータキーの数の合計から得られるデータ数Hとに基づき、式2を用いて、DBサーバ20ごとの負荷Wmを計算する。なお、この仮想サーバの初期配置では、システム全体に対して1秒当たりシステム最大性能であるR回のアクセスがあり、各データへのアクセス回数は均等であるR/H回と想定する。そして、サーバ負荷計算部112は、計算したDBサーバ20ごとの負荷Wmとサーバ閾値αmとを比較し、負荷がサーバ閾値以下のサーバS-の集合と、負荷がサーバ閾値を超えるサーバSの集合とを生成して、その集合ごとに、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順にサーバを整列する処理を行う。そして、仮想サーバ配置装置10の配置処理部113が、ハッシュ空間上での仮想サーバの配置処理仮想サーバ配置処理を行うことにより、サーバ担当データ情報100を生成するステップS14。ここで、配置処理部113は、この仮想サーバ配置処理において、リソース不足と判定した場合には、サーバ担当データ情報100を生成せずに、そのリソース不足通知を、管理者サーバ5に送信しステップS15、物理サーバDBサーバ20の追加を促してステップS16、処理を終える。一方、仮想サーバ配置装置10が、サーバ担当データ情報100を生成した場合には、そのサーバ担当データ情報100を、各DBサーバ20それぞれに送信するステップS17。そして、各DBサーバ20同士で担当データの交換処理を行うステップS18。具体的には、各DBサーバ20のデータ交換部215は、仮想サーバ配置装置10から受信した新たなサーバ担当データ情報100と、記憶部24に保存していたサーバ担当データ情報100とを比較し、自身のDBサーバ20が、追加して記憶すべきデータを、そのデータを保存するDBサーバ20に問い合わせる。そして、問い合わせを受けたDBサーバ20は、そのデータを問い合わせ元のDBサーバ20に送信し、その送信確認後に自身のサーバからそのデータを削除する処理を行う。また、データ交換部215は、記憶部24に保存していたサーバ担当データ情報100を、データ管理部212を介して、受信した新たなサーバ担当データ情報100に更新させる。<仮想サーバ配置処理>次に、図9および図10を参照して、仮想サーバ配置装置10配置処理部113による仮想サーバ配置処理図8のステップS14について詳細に説明する。図9および図10は、本実施形態に係る仮想サーバ配置装置10の配置処理部113による仮想サーバ配置処理の流れを示すフローチャートである適宜図1参照。なお、この配置処理部113による仮想サーバ配置処理は、図8のステップS13において、仮想サーバ配置装置10のサーバ負荷計算部112により、各DBサーバ20の負荷Wmが計算され、負荷がサーバ閾値以下のサーバS-と、負荷がサーバ閾値を超えるサーバSとについて、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順に、サーバがすでに整列されているものとして説明する。そして、配置処理部113は、図2~図5において説明したように、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順に、負荷がサーバ閾値を超えるサーバSの負荷の超過分の領域に、負荷がサーバ閾値以下のサーバS-の仮想サーバを配置することで、負荷がサーバ閾値を超えるサーバSの負荷の超過分の担当データを、負荷がサーバ閾値以下のサーバS-に変更する処理を行う。以下、具体的に説明する。まず、配置処理部113は、負荷がサーバ閾値を超えるサーバS、負荷がサーバ閾値以下のサーバS-それぞれについて、初期値として、絶対値OliO-kjが大きい順に1番目のサーバを選択しi←1j←1、初期値のFlagとしてTrueを設定するステップS101。なお、ここで、iは、式5で示したように、0<i≦qを満たし、jは、式4で示したように、0<j≦pを満たす値である。また、このFlagは、以後のステップS113,S117,S119図10参照で設定されるものであり、負荷がサーバ閾値を超えるサーバSの負荷の超過分を解消するために、負荷がサーバ閾値以下のサーバS-が仮想サーバの割当てを行った場合に、さらに、まだ仮想サーバを割り当てる負荷の余裕分があるか否かを示すFlagである。そして、次に割り当てる負荷の余裕分がない場合にTrue、次に割り当てる負荷の余裕分がある場合にfalseのFlagが設定される。次に、配置処理部113は、負荷がサーバ閾値を超えるサーバSliのうち、まだ処理していないサーバがあるか否かを判定するi<q1ステップS102。ここで、まだ処理していない、負荷がサーバ閾値を超えるサーバSliがない、つまり、すべての負荷がサーバ閾値を超えるサーバSliの処理を終えている場合にはステップS102→No、処理を終了する。一方、まだ、処理していない、負荷がサーバ閾値を超えるサーバSliがある場合にはステップS102→Yes、次のステップS103へ進む。ステップS103において、配置処理部113は、負荷がサーバ閾値を超えるサーバSliが、どのくらいサーバ閾値を超えているかの絶対値Oli:超過分を計算するOli←Wli-αli。次に、配置処理部113は、その負荷がサーバ閾値を超えるサーバSliが、そのサーバのサーバ閾値αli以下でそのサーバが担当可能な最大個数のデータのハッシュ空間上での値xを計算するステップS104。このxは、負荷がサーバ閾値を超えるサーバSliの担当領域内のデータのハッシュ値をその負荷がサーバ閾値を超えるサーバSliのハッシュ値に近い順に並べたときに、負荷がサーバ閾値αm以下で最大となるh番目のデータのハッシュ値となるx←maxxΣh1...xbli≦αli。ここで、bliは、サーバSliの担当領域のうちのデータのハッシュ値をサーバSliのハッシュ値に近い順に並べたときに、h番目のデータにかかる負荷を示す。なお、この処理は、後記するステップS109において、仮想サーバの配置位置を決定する際に利用される。続いて、配置処理部113は、負荷がサーバ閾値以下のサーバS-kjがあるか否かを判定するj<p1ステップS105。ここで、負荷がサーバ閾値以下のサーバS-kjがない場合にはステップS105→No、ステップS122図10参照に進み、管理者サーバ5に、物理サーバDBサーバ20の追加依頼を送信し、処理を終える。一方、負荷がサーバ閾値以下のサーバS-kjがある場合にはステップS105→Yes、次のステップS106へ進む。ステップS106において、配置処理部113は、Flagがtrueか否かを判定する。つまり、直前の負荷解消のために割り当てた、負荷がサーバ閾値以下のサーバS-kjの負荷の余裕分が使えるか否かを判定する。具体的には、負荷を解消するために、自身の負荷の余裕分をすべて使って仮想サーバの割り当てを行ったかFlagtrue、仮想サーバの割り当てを行ってもなお負荷の余裕分が残っているかFlagfalseを判定する。なお、負荷がサーバ閾値を超えるサーバSliの絶対値Oliの大きい順で1番目のサーバi=1については、ステップS101で初期値のFlagとしてTrueが設定されている。ここで、Flagtrueの場合はステップS106→Yes、次のステップS107において、配置処理部113が、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値を計算しO-kj←αkj-Wkj、ステップS109へ進む。一方、Flagfalseの場合はステップS106→No、次のステップS108において、直前に負荷を割り当てた、負荷がサーバ閾値以下のサーバS-kjの負荷の余裕分Restを取得しO-kj←Rest、ステップS109へ進む。なお、この負荷の余裕分Restは、後記するステップS116図10参照において、計算されるものである。そして、配置処理部113は、ステップS109において、サーバSliの担当領域のx1の位置に、サーバS-kjの仮想サーバを割り当てる。この仮想サーバの配置位置は、ステップS104において計算した、負荷がサーバ閾値を超えるサーバが、サーバ閾値以下でそのサーバが担当可能な最大個数のデータのハッシュ空間上での値xの次のハッシュ値であるx1に設定される。図10に進み、ステップS110において、配置処理部113は、ステップS109図9参照で決定した配置位置に、仮想サーバを配置した場合に、負荷がサーバ閾値を超えるサーバSliの負荷が解消されるか否かを判定する。具体的には、配置処理部113は、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oli:超過分と、仮想サーバを設定する負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分とを比較し、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oliの方が大きいか否かを判定するOli>O-kj。ここで、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oliの方が大きい場合ステップS110→Yes、つまり、仮想サーバを割り当てても、まだ、負荷がサーバ閾値を超えている場合超過分が残っている場合には、次のステップS111へ進む。ステップS111において、配置処理部113は、ステップS109図9参照で設定した、ハッシュ空間上の仮想サーバの配置位置から、その仮想サーバの担当可能な最大個数のデータのハッシュ空間上での値xを計算するx←maxxΣh1...xbli≦αli。なお、このハッシュ空間上での値xは、絶対値O-kjの大きさ順が次の負荷がサーバ閾値以下のサーバS-kjの仮想サーバを、ハッシュ空間上に割り当てる際再び、ステップS109の処理を行う際に、その仮想サーバの配置位置を決定するときに利用される。次に、配置処理部113は、仮想サーバを割り当てた後の負荷がサーバ閾値を超えるサーバSliについて、サーバ閾値を超える負荷の絶対値Oliを計算するOli←Oli-O-kjステップS112。そして、配置処理部113は、負荷解消のために、負荷がサーバ閾値以下のサーバS-kjの余裕部のすべてを割り当てたことを示す、Flagをtrueに設定するステップS113。続いて、配置処理部113は、サーバ負荷計算部112が計算し整列した後の、負荷がサーバ閾値以下のサーバS-kjのうち、次に絶対値O-kjが大きいサーバを選択しj←j1ステップS114、ステップS105図9参照へ戻る。一方、ステップS110において、配置処理部113は、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oli:超過分と、仮想サーバを設定する負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分とを比較し、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oliの方が大きい場合でないときステップS110→No、つまり、負荷がサーバ閾値以下のサーバS-kjの負荷の余裕の絶対値O-kjが、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oliと同じか、それを超える場合には、ステップS115へ進む。そして、ステップS115において、配置処理部113は、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分が、負荷がサーバ閾値を超えるサーバSの負荷の絶対値Oli:超過分を超えるか否かを判定するOli<O-kj。そして、負荷がサーバ閾値以下のサーバS-の負荷の絶対値O-kj:余裕分が、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oli:超過分を超える場合にはステップS115→Yes、つまり、仮想サーバの割当てによって、負荷がサーバ閾値を超えるサーバSliの超過分が解消され、さらに、仮想サーバを割り当てたサーバS-kjにまだ余裕分が残っている場合には、次のステップS116へ進む。次に、配置処理部113は、仮想サーバを割り当てた負荷がサーバ閾値以下のサーバS-kjの負荷の余裕分Restを計算するRest←O-kj-OliステップS116。そして、配置処理部113は、その負荷の余裕分Restを記憶する。次に、配置処理部113は、負荷解消のために、負荷がサーバ閾値以下のサーバS-kjに、まだ余裕分があること次に割り当てる負荷の余裕分があることを示す、Flagをfalseに設定するステップS117。そして、配置処理部113は、サーバ負荷計算部112が計算し整列した後の、負荷がサーバ閾値を超えるサーバSliのうち、次に絶対値Oliの大きいサーバを選択しi←i1ステップS118、次のステップS121へ進む。一方、ステップS115において、配置処理部113は、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分が、負荷がサーバ閾値を超えるサーバSliの負荷の絶対値Oli:超過分と同じ場合はステップS115→No、次のステップS119へ進む。そして、配置処理部113は、負荷解消のために、負荷がサーバ閾値以下のサーバS-kjの余裕分のすべてを割り当てたことを示す、Flagをtrueに設定するステップS119。続いて、配置処理部113は、サーバ負荷計算部112が計算し整列した後の、負荷がサーバ閾値を超えるサーバSli、負荷がサーバ閾値以下のサーバS-kjのうち、次に絶対値OliO-kjの大きいサーバをそれぞれ選択しi←i1,j←j1ステップS120、次のステップS121へ進む。そして、ステップS118およびステップS120の次に、ステップS121において、配置処理部113は、まだ余裕分の残っている、負荷がサーバ閾値以下のサーバS-kjがあるか否かを判定するj=p1。そして、まだ余裕分が残っている、負荷がサーバ閾値以下のサーバS-kjがある場合にはステップS121→Yes、ステップS102図9参照へ戻り処理を続ける。一方、配置処理部113は、負荷がサーバ閾値以下のサーバS-kjで、余裕分が残っているサーバがない場合にはステップS121→No、ステップS122へ進み、管理者サーバ5に、物理サーバDBサーバ20の追加依頼を送信し、処理を終える。なお、配置処理部113は、ハッシュ空間上での仮想サーバの割当てを完了することにより、新たなサーバ担当データ情報100を生成し、各DBサーバ20それぞれに送信する。このようにすることで、本実施形態に係るデータ負荷分散配置システム1およびデータ負荷分散配置方法による仮想サーバの初期配置によって、負荷分散を実現し、さらに、各サーバの担当領域に配置する仮想サーバの数が同一に設定される従来技術に比べ、仮想サーバの数を減らすことができる。また、仮想サーバを大量に配置する必要がなくなるため、仮想サーバ保持のための記述量の増加を抑え、クライアントからデータの問い合わせを受けた際に、そのデータを格納している担当サーバの検索に要する時間の増加を抑えることができる。よって、システム全体としてのスループットを向上させることができる。データ負荷分散配置処理―仮想サーバの再配置次に、図11を参照して、データ負荷分散配置システム1が行う、所定間隔Zごとの仮想サーバの再配置処理の全体の処理の流れについて説明する。図11は、本実施形態に係るデータ負荷分散配置処理仮想サーバの再配置の全体の処理の流れを示すシーケンス図である。なお、図8に示した仮想サーバの初期配置の全体の流れと同一の処理については、図11においても、同一の名称と符号を付し、説明を省略する。まず、管理者サーバ5から、仮想サーバ配置装置10が、システム全体に求める処理性能Rと、各サーバの負荷のサーバ閾値を決定するための負荷閾値定数cとを、設定情報として取得するステップS11。なお、この処理は、所定間隔Zごとに行われてもよいが、システム全体に求める処理性能Rおよび負荷閾値定数cに変更がなければ、このステップS11を行わないようにしてもよい。また、予め、仮想サーバ配置装置10の記憶部14に、設定情報R,cを記憶させておき利用するようにしてもよい。そして、各DBサーバ20それぞれは、所定間隔Zごとに、自身のDBサーバ20に保存しているデータのデータキーおよびそのデータへのアクセス回数の情報であるアクセス回数情報300図7参照を、自身に固有な番号とともに、仮想サーバ配置装置10へ送信するステップS21。次に、仮想サーバ配置装置10のサーバ負荷計算部112は、サーバ負荷計算処理を行うステップS22。具体的は、サーバ負荷計算部112は、図8の仮想サーバの初期配置におけるステップS12で受信している、各DBサーバ20のサーバ性能Tmと、自身の記憶部14に記憶する負荷閾値定数cまたはステップS11で取得した負荷閾値定数cに基づき、式1を用いて、各サーバのサーバ閾値αmを設定する。また、サーバ負荷計算部112は、ステップS21で各DBサーバ20から受信した、データキーおよびアクセス回数を含むアクセス回数情報300図7参照に基づき、各DBサーバの負荷Wmを計算する。そして、サーバ負荷計算部112は、計算したDBサーバ20ごとの負荷Wmとサーバ閾値αmとを比較し、負荷がサーバ閾値以下のサーバS-の集合と、負荷がサーバ閾値を超えるサーバSの集合とを生成して、その集合ごとに、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順にサーバを整列する処理を行う。続いて、仮想サーバ配置装置10の仮想サーバ再配置計算部115は、負荷がサーバ閾値以下となったDBサーバ20について、仮想サーバを取り除く処理仮想サーバ再配置計算を行うステップS23。そして、仮想サーバ再配置計算部115は、仮想サーバを取り除いた後の各サーバの負荷に基づき、負荷がサーバ閾値以下のサーバS-と、負荷がサーバ閾値を超えるサーバSとについて、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順にサーバを整列する。そして、その情報を、配置処理部113に引き渡す。なお、この仮想サーバ再配置計算は、後記する図12~図18において詳細に説明する。そして、仮想サーバ配置装置10の配置処理部113は、仮想サーバ再配置計算部115が計算し整列させた各サーバの負荷に関する情報に基づき、再度、仮想サーバ配置処理図9および図10参照を実行するステップS14。そして、以下は、図8のステップS15~S18と同様の処理を行って、各DBサーバ20同士が担当データの交換処理を行う。<仮想サーバ再配置計算>次に、図12~図17を参照して、図11のステップS23における、仮想サーバ配置装置10仮想サーバ再配置計算部115による仮想サーバ再配置計算の概要を説明する。そして、図18を用いて、仮想サーバ再配置計算部115による仮想サーバ再配置計算の流れを、さらに詳細にフローチャートを用いて説明する適宜図1参照。なお、この仮想サーバ再配置計算部115による仮想サーバ再配置計算は、例えば、図11のステップS22において、サーバ負荷計算部112が、所定間隔Zごとに各DBサーバ20の負荷Wmを算出し、負荷がサーバ閾値以下のサーバS-と、負荷がサーバ閾値を超えるサーバSとについて、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順にサーバを整列させたことを契機として実行される。図12~図17は、本実施形態に係る仮想サーバ配置装置10仮想サーバ再配置計算部115による仮想サーバ再配置計算の概要を説明するための図である。ここでは、仮想サーバ配置装置10による仮想サーバの初期配置により、図5aに示すようにハッシュ空間上で仮想サーバが配置され図12a参照、システム稼働後の所定間隔Z後に、各サーバSmの負荷Wmとサーバ閾値αmとの差の絶対値が、図12bのようになったものとして説明する。例えば、サーバS1は、初期配置では、仮想サーバVS3,VS4が配置されることにより、負荷がサーバ閾値を超えない設定で、処理を開始したが、時間の経過とともに、図12bに示すように、負荷がサーバ閾値以下のサーバS-となっている。つまりサーバS1の負荷が減少している。仮想サーバ再配置計算部115は、負荷がサーバ閾値以下のサーバS-のうち、ハッシュ空間上で仮想サーバが配置されているものを取り除く処理を行う。なお、その際、仮想サーバ再配置計算部115は、仮想サーバを取り除くと、その負荷Wmがサーバ閾値αmを超えてしまう場合には、負荷がサーバ閾値以下のサーバS-のその仮想サーバを取り除く処理を行わないものとする。まず、仮想サーバ再配置計算部115は、図12に示す状態から、負荷がサーバ閾値以下のサーバS-のうち、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順で、かつ、ハッシュ空間上で仮想サーバが配置されているサーバを選択する。ここでは、S1のサーバを選択する。そして、ハッシュ空間上のサーバS1に近い順に、1番目に配置された仮想サーバVS3を取り除く図13a参照。この状態での各サーバSmの負荷Wmとサーバ閾値αmとの差の絶対値を図13bに示す。サーバS1は、仮想サーバVS3が担当していたデータの分だけ、負荷の余裕分が減っている。これに対し、サーバS3は、仮想サーバVS3の担当していたデータ分だけ、負荷の余裕分が増えている。次に、仮想サーバ再配置計算部115は、ハッシュ空間上のサーバS1に近い順に、2番目に配置された仮想サーバVS4を取り除く図14a参照。この状態での各サーバSmの負荷Wmとサーバ閾値αmとの差の絶対値を図14bに示す。サーバS1は、仮想サーバVS4が担当していたデータ分だけ、負荷の余裕分が減っている。これに対し、サーバS4は、仮想サーバVS4の担当していたデータ分だけ、負荷の超過分が減っている。これで、サーバS1の仮想サーバをすべて取り除いたので、図12bにおいて、負荷がサーバ閾値以下のサーバS-で、仮想サーバが配置されている次のサーバであるサーバS2を選択する。なお、サーバS3は、仮想サーバが配置されていないので、選択せずに、サーバS2を選択する。そして、ハッシュ空間上のサーバS2に近い順に、1番目に配置された仮想サーバVS4を取り除く図15a参照。この状態での各サーバSmの負荷Wmとサーバ閾値αmとの差の絶対値を図15bに示す。サーバS2は、仮想サーバVS4が担当していたデータ分だけ、負荷の余裕分が減っている。これに対し、サーバS4は、仮想サーバVS4が担当していたデータ分だけ、負荷の超過分が減っている。次に、仮想サーバ再配置計算部115は、ハッシュ空間上のサーバS2に近い順に、2番目に配置された仮想サーバVS5を取り除く処理を行おうとするが、仮想サーバVS5の担当データ分の負荷が、サーバS2の余裕分より大きいため、仮想サーバVS5を取り除くと、サーバS2の負荷がサーバ閾値を超えてしまうため、取り除く処理を行わない図16参照。そして、仮想サーバ再配置計算部115は、負荷がサーバ閾値以下のサーバS-のすべてのサーバの処理を終えると、仮想サーバを取り除いても負荷がサーバ閾値を超えない範囲で、その仮想サーバを取り除いた状態の各サーバSmの負荷Wmとサーバ閾値αmとの差の絶対値を示す図16bのようになる。仮想サーバ再配置計算部115は、負荷がサーバ閾値以下のサーバS-と、負荷がサーバ閾値を超えるサーバSとについて、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順に整列し直し図17参照、仮想サーバ再配置計算を終え、その情報を配置処理部113に渡す。そして、配置処理部113が、図11のステップS14の仮想サーバ配置処理図9および図10参照を続ける。次に、図18を用いて、仮想サーバ再配置計算部115による仮想サーバ再配置計算の流れを、さらに詳細にフローチャートを用いて説明する適宜図1参照。まず、仮想サーバ再配置計算部115は、初期値として、負荷がサーバ閾値以下のサーバS-kjについて、絶対値O-kjが大きい順に1番目のサーバを選択しj←1、その選択した負荷がサーバ閾値以下のサーバS-kjに、ハッシュ空間上で近い順で一番目の仮想サーバを初期値として選択するl←1ステップS201。次に、仮想サーバ再配置計算部115は、まだ処理していない、負荷がサーバ閾値以下のサーバS-kjがあるか否かを判定するj<p1ステップS202。ここで、まだ処理していない、負荷がサーバ閾値以下のサーバS-kjがない、つまり、すべての負荷がサーバ閾値以下のサーバS-kjの処理を終えている場合にはステップS202→No、ステップS210へ進む。一方、まだ処理していない、負荷がサーバ閾値以下のサーバS-kjがある場合にはステップS202→Yes、次のステップS203へ進む。ステップS203において、仮想サーバ再配置計算部115は、負荷がサーバ閾値以下のサーバS-kjのハッシュ空間上での担当領域に、仮想サーバが配置されているか否かを判定するykj>0。ここでykjは、負荷がサーバ閾値以下のサーバS-kjに配置された仮想サーバ数を示す。そして、負荷がサーバ閾値以下のサーバS-kjに仮想サーバが配置されていない場合にはステップS203→No、ステップS209へ進む。一方、仮想サーバが配置されている場合にはステップS203→Yes、次のステップS204へ進む。続いて、仮想サーバ再配置計算部115は、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分が0を超えているか否かを判定するO-kj>0ステップS204。つまり、負荷がサーバ閾値以下のサーバS-kjが、仮想サーバを取り除いた後でも、まだ、その余裕分が残っているか否かを判定する。なお、このステップS204を最初に実行する際は、ステップS202で、負荷がサーバ閾値以下のサーバが1つでも存在すれば、当然に、余裕分が残っていることになる。ここで、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分が0以下、つまり余裕分が残っていない場合はステップS204→No、ステップS209へ進む。一方、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分が0より大きい、つまり余裕分が残っている場合にはステップS204→Yes、次のステップS205へ進む。次に、仮想サーバ再配置計算部115は、負荷がサーバ閾値以下のサーバS-kjの担当領域に、まだ未処理の仮想サーバが配置されているか否かを判定するl<ykj1ステップS205。つまり、取り除くことができる可能性のある仮想サーバが残っているか否かを判定する。ここで、未処理の仮想サーバがハッシュ空間上に配置されていない場合にはステップS205→No、ステップS209へ進む。一方、未処理の仮想サーバがそのサーバのハッシュ空間上の担当領域に残っている場合にはステップS205→Yes、次のステップS206へ進む。ステップS206において、仮想サーバ再配置計算部115は、仮想サーバの担当する負荷Zkjが、負荷がサーバ閾値以下のサーバS-kjの負荷の余裕分の絶対値O-kj:余裕分より小さいか否かを判定するZkj<O-kj。つまり、仮想サーバを取り除いても、その仮想サーバの基のサーバの負荷が、サーバ閾値を超えないか否かを判定する。ここで、仮想サーバの担当する負荷Zkjが、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分以上の場合はステップS206→No、ステップS209へ進む。一方、仮想サーバの担当する負荷Zkjが、負荷がサーバ閾値以下のサーバS-kjの負荷の絶対値O-kj:余裕分より小さい場合にはステップS206→Yes、次のステップS207へ進む。ステップS207において、仮想サーバ再配置計算部115は、仮想サーバをハッシュ空間上から取り除く。そして、仮想サーバ再配置計算部115は、その領域を担当する元のサーバに負荷を戻す処理を行う。具体的には、仮想サーバvkを取り除いた場合の負荷を以下の式により計算する。ここで、Wvkjは、仮想サーバを取り除いた元のサーバの負荷を示す。そして、仮想サーバ再配置計算部115は、負荷がサーバ閾値以下のサーバS-kjの担当領域の、次の仮想サーバを選択しl←l1ステップS208、ステップS204へ戻り、処理を続ける。一方、ステップS203→No、ステップS204→No、ステップS205→No、ステップS206→Noの場合には、ステップS209において、仮想サーバ再配置計算部115は、サーバ負荷計算部112が計算し整列した後の、負荷がサーバ閾値以下のサーバS-kjのうち、次に絶対値が大きいサーバを選択しj←j1、ステップS202へ戻る。そして、仮想サーバ再配置計算部115は、ステップS202において、負荷がサーバ閾値以下のサーバS-kjすべての処理を終えている場合にはステップS202→No、ステップS207において再計算された各サーバの負荷Wmに基づき、負荷がサーバ閾値以下のサーバS-と、負荷がサーバ閾値を超えるサーバSとについて、負荷Wmとサーバ閾値αmとの差の絶対値が大きい順に整列するステップS210。そして、その情報を、配置処理部113に渡す。配置処理部113では、図9および図10で示した仮想サーバ配置処理を実行する。このようにすることで、本実施形態に係るデータ負荷分散配置システム1およびデータ負荷分散配置方法による仮想サーバの再配置によれば、所定間隔ごとの担当データ数の増減や各データへの実アクセス数に応じた、各DBサーバ20の負荷を計算する。そして、負荷がサーバ閾値以下のサーバS-に含まれることになったDBサーバ20のハッシュ空間上での担当領域に、仮想サーバが配置されている場合に、その仮想サーバの担当領域を、元のDBサーバの担当領域に戻すことができる。そして、負荷Wmとサーバ閾値αmとの差の絶対値を計算し直すことにより、負荷がサーバ閾値以下のサーバS-の集合と、負荷がサーバ閾値を超えるサーバSの集合とを生成して、再度、ハッシュ空間上での仮想サーバの配置を計算する。これにより、各DBサーバ20の負荷を均一化させるとともに、ハッシュ空間上に配置する仮想サーバの数を減らすことができる。なお、本実施形態において仮想サーバ配置装置10は、コンシステントハッシュ法の領域分割方式として、時計回り方式を用いて、ハッシュ空間上に仮想サーバを配置するものとして説明した。しかし、本発明はこれに限定されず、反時計回り方式や、各データがリング上で最も隣接するサーバにデータを格納する最近値方式等を用いることもできる。"