(57)【特許請求の範囲】
【請求項１】
複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、
各装置の出力負荷及び入力負荷を計算し、出力負荷又は入力負荷が最も高い装置を移動元装置として特定するとともに、所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、
特定した移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する
処理をコンピュータに実行させることを特徴とするデータ管理プログラム。
【請求項２】
複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、
所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、
移動すべきデータを保持する移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する
処理をコンピュータに実行させ、
前記特定する処理は、移動元装置から移動先装置へ移動データに関する要求を転送する負荷が移動元装置から移動先装置へ移動データを転送する負荷より小さい場合にデータを移動すべきと判断して移動データを特定することを特徴とするデータ管理プログラム。
【請求項３】
複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、
所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、
移動すべきデータを保持する移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する
処理をコンピュータに実行させ、
前記複数の装置は、スイッチ及びルータを介して接続され、
前記特定する処理は、移動元装置を除いて負荷の低い装置から順番に移動先装置を特定し、特定した移動先装置に移動データを移動することができない場合には、該移動先装置と同じスイッチの配下にある装置、該移動先装置と同じルータの配下にある他のスイッチの配下にある装置の順番で移動先装置を特定することを特徴とするデータ管理プログラム。
【請求項４】
コンピュータが、
複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、
各装置の出力負荷及び入力負荷を計算し、出力負荷又は入力負荷が最も高い装置を移動元装置として特定するとともに、所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、
特定した移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する
処理を実行することを特徴とするデータ管理方法。
【請求項５】
コンピュータが、
複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、
所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、
移動すべきデータを保持する移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する
処理を実行し、
前記特定する処理は、移動元装置から移動先装置へ移動データに関する要求を転送する負荷が移動元装置から移動先装置へ移動データを転送する負荷より小さい場合にデータを移動すべきと判断して移動データを特定することを特徴とするデータ管理方法。
【請求項６】
コンピュータが、
複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、
所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、
移動すべきデータを保持する移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する
処理を実行し、
前記複数の装置は、スイッチ及びルータを介して接続され、
前記特定する処理は、移動元装置を除いて負荷の低い装置から順番に移動先装置を特定し、特定した移動先装置に移動データを移動することができない場合には、該移動先装置と同じスイッチの配下にある装置、該移動先装置と同じルータの配下にある他のスイッチの配下にある装置の順番で移動先装置を特定することを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理プログラム及びデータ管理方法に関する。
【背景技術】
【０００２】
キーとバリューの組合わせでデータを複数のサーバで分散管理する分散データベースシステムは、キー空間を分割して得られる部分キー空間を各サーバに割り当ててデータを分散管理する。すなわち、各サーバは、自装置に割り当てられた部分キー空間に含まれるキーを有するデータを記憶する。データの参照では、データからハッシュ計算によりキーが求められ、データを記憶するサーバがキーから特定され、特定されたサーバにデータの参照要求が転送される。
【０００３】
なお、従来技術として以下の技術がある。管理装置が、複数の処理装置の識別子ｊと、一以上の完全データ集合ｉ毎に、当該完全データ集合に所属するデータを記憶する一以上のデータ装置の識別子（データ装置リストｉ）、を取得する。そして、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷に基づいて、各処理装置が、各完全データ集合の単位データ量を、データ装置リスト内のデータ装置から受信する通信負荷ｃｉｊを含むｃ’ｉｊを算出する。そして、各処理装置が各完全データ集合を受信する０以上の通信量ｆｉｊを、ｆｉｊｃ’ｉｊを含む値の所定和が最小となるように決定する。
【０００４】
また、従来技術として、以下の技術がある。各ノードは、自ノードが保持すべきターゲットデータの値域を求めるための第１の識別子と、メッセージを受信したノードが、そのメッセージを他ノードに転送する転送経路の決定に用いる第２の識別子とを有する。また、各ノードは、第１の識別子を基に決定した値域に属するところの、第３の識別子によって特定されるターゲットデータを保持する保持手段と、第２の識別子が含まれる経路情報を用いてメッセージを転送すべき他ノードを決定する転送手段とを備える。そして、転送手段は第１乃至第３の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する。
【０００５】
また、従来技術として、以下の技術がある。１つ以上の分散処理装置（ノード）によって構成される分散処理システムにおいて、あるノード（比較ノード）が担当する処理の一部を分担させる候補となるノードを候補ノードとする。そして、候補ノードが担当している処理の全てを１つ以上のノード（代行ノード）を用いて代行させる代行ノード集合を作成し、代行ノード集合が候補ノードの処理を代行する場合の各代行ノードの代行後の負荷の予測値（代行後負荷予測値）を求める。そして、各代行ノードの代行後負荷予測値が所定の条件を満たす場合に、候補ノードの処理を代行ノード集合に代行させて候補ノードを空きノードとすると共に、比較ノードが担当する処理の一部を、空きノードとなった候補ノードに分担させる負荷分散を実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１１／０７４６９９号
【特許文献２】特開２０１２−４３３３０号公報
【特許文献３】特開２０１３−１４９０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
キーとバリューの組合わせでデータを複数のサーバで分散管理する分散データベースシステムでは、あるサーバへのアクセスが他のサーバと比較して非常に多くなったとき、サーバの低負荷対策の１つとしてデータの移動が行われる。ただし、データを他のサーバに移動する場合には、サーバ毎に管理するキーの範囲を変更する必要がある。
【０００８】
図２０は、サーバ毎に管理するキーの範囲の変更を説明するための図である。図２０は、５台のサーバでキー空間が分割される場合を示す。図２０に示すように、サーバ９３が管理するデータ９１のアクセス数が多く、サーバ９３のＤＢ（Data  Base：データベース）プロセス負荷（データベース処理の負荷）が高くなり、サーバ９３の負荷が増加すると、データ９１が低負荷のサーバ９４に移動される。このとき、サーバ毎に管理するキーの範囲は連続する必要があるため、データ９２もデータ９１とともに移動される。そして、サーバ９３が管理するキーの範囲及びサーバ９４が管理するキーの範囲が変更される。
【０００９】
各サーバは、サーバが管理するキーの範囲が登録されたルーティング・テーブルを備えるため、各サーバが管理するキーの範囲を変更する場合には、各サーバのルーティング・テーブルを更新する必要がある。したがって、データ９１を移動すると、関連するデータ９２の移動及びルーティング・テーブルの更新に時間がかかるという問題がある。
【００１０】
本発明は、１つの側面では、データの移動に伴う関連データの移動及びルーティングテーブルの更新を不要とし、データ移動の処理時間を短縮することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、データ管理プログラムは、複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、各装置の出力負荷及び入力負荷を計算し、出力負荷又は入力負荷が最も高い装置を移動元装置として特定するとともに、所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定する処理をコンピュータに実行させる。そして、データ管理プログラムは、特定した移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する処理をコンピュータに実行させる。
また、他の態様では、データ管理プログラムは、複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、移動すべきデータを保持する移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する処理をコンピュータに実行させる。そして、前記特定する処理は、移動元装置から移動先装置へ移動データに関する要求を転送する負荷が移動元装置から移動先装置へ移動データを転送する負荷より小さい場合にデータを移動すべきと判断して移動データを特定する。
また、他の態様では、データ管理プログラムは、複数のデータを管理する複数の装置それぞれからデータへのアクセス状況を取得し、所定期間のデータへのアクセス状況から移動すべきデータと移動先装置を特定し、移動すべきデータを保持する移動元装置と特定した移動先装置との間のデータの移動、及び、移動元装置と移動データと移動先装置とを記憶する移動テーブルの更新を移動元装置と移動先装置に指示する処理をコンピュータに実行させる。そして、前記複数の装置は、スイッチ及びルータを介して接続される。そして、前記特定する処理は、移動元装置を除いて負荷の低い装置から順番に移動先装置を特定し、特定した移動先装置に移動データを移動することができない場合には、該移動先装置と同じスイッチの配下にある装置、該移動先装置と同じルータの配下にある他のスイッチの配下にある装置の順番で移動先装置を特定する。
【発明の効果】
【００１２】
１つの側面では、データ移動の処理時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る分散データベースシステムの構成を示す図である。
【図２Ａ】図２Ａは、Ｃｈｏｒｄ方式を説明するための図である。
【図２Ｂ】図２Ｂは、Ｋａｄｅｍｌｉａ方式を説明するための図である。
【図３】図３は、移動データ・ルーティング・テーブルを説明するための図である。
【図４】図４は、実施例１に係る分散データベースシステムの機能構成を示す図である。
【図５】図５は、実施例１に係るデータ管理装置の処理のフローを示すフローチャートである。
【図６】図６は、検索処理のフローを示すフローチャートである。
【図７】図７は、削除処理のフローを示すフローチャートである。
【図８Ａ】図８Ａは、特定部がコスト計算に用いるマトリックスの一例を示す図である。
【図８Ｂ】図８Ｂは、マトリックス作成のベースにしたネットワーク物理構成図である。
【図８Ｃ】図８Ｃは、コスト計算方法を示す図である。
【図８Ｄ】図８Ｄは、出力量及び入力量を示す図である。
【図８Ｅ】図８Ｅは、各サーバの出力負荷及び入力負荷の計算結果を示す図である。
【図８Ｆ】図８Ｆは、偏差値計算結果を示す図である。
【図９】図９は、特定部の機能構成を示す図である。
【図１０】図１０は、実施例２に係るデータ管理装置による処理のフローを示すフローチャートである。
【図１１】図１１は、特定部による処理のフローを示すフローチャートである。
【図１２】図１２は、マトリックス構築の処理のフローを示すフローチャートである。
【図１３】図１３は、データ収集の処理のフローを示すフローチャートである。
【図１４】図１４は、偏り判断の処理のフローを示すフローチャートである。
【図１５】図１５は、移動判断の処理のフローを示すフローチャートである。
【図１６】図１６は、移動データを特定する処理のフローを示すフローチャートである。
【図１７】図１７は、サーバ特定処理のフローを示すフローチャートである。
【図１８】図１８は、低負荷データの移動処理のフローを示すフローチャートである。
【図１９】図１９は、実施例に係るデータ管理プログラムを実行するコンピュータのハードウェア構成を示す図である。
【図２０】図２０は、サーバ毎に管理するキーの範囲の変更を説明するための図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するデータ管理プログラム及びデータ管理方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【実施例１】
【００１５】
まず、実施例１に係る分散データベースシステムの構成について説明する。図１は、実施例１に係る分散データベースシステムの構成を示す図である。図１に示すように、実施例１に係る分散データベースシステム１は、複数台のサーバ２とデータ管理装置２ａとを有する。複数台のサーバ２とデータ管理装置２ａはネットワーク６により接続される。なお、図１では、分散データベースシステム１は４台のサーバ２を有するが、分散データベースシステム１はクラウドシステム等に含まれる任意の台数のサーバ２を有してよい。また、ネットワーク６は、例えばＬＡＮ（Local  Area  Network）である。
【００１６】
サーバ２は、他のサーバ２とデータを分担して管理する装置であり、ＤＢ３とルーティング・テーブル４と移動データ・ルーティング・テーブル５を有する。ＤＢ３は、サーバ２が担当するキー範囲のデータを記憶する。ルーティング・テーブル４は、自身を含めいくつかのサーバ２が管理するキーの範囲がサーバ２の識別子と対応付けられて登録されたテーブルである。ルーティング・テーブル４を用いたルーティング方式には、Ｃｈｏｒｄ方式、Ｋａｄｅｍｌｉａ方式等がある。
【００１７】
図２Ａは、Ｃｈｏｒｄ方式を説明するための図である。Ｃｈｏｒｄ方式では、各サーバ２にハッシュ値が割り当てられ、ハッシュ値の昇降順にサーバ２がソーティングされる。図２Ａでは、６台のサーバ２にそれぞれ１〜６のいずれかが割り当てられ、各サーバ２は、割り当てられたハッシュ値のノードで示される。
【００１８】
そして、登録されるデータにもハッシュ値が割り当てられ、割り当てられたハッシュ値が各サーバ２に割り当てられたハッシュ値に小さい方向で近いサーバ２にデータが登録される。例えば、データのハッシュ値が１．５である場合には、ハッシュ値が小さい方向で近いサーバ２は、ノード＃１である。ここで、ノード＃１は、割り当てられたハッシュ値が１であるノードを表す。
【００１９】
各サーバ２は、ハッシュ値の昇順方向で所定の数のサーバ２についてハッシュ値とサーバ２の識別子とを対応付けたルーティング・テーブル４を管理し、いくつかのサーバ２を経由すればデータを記憶するサーバ２にたどり着けるように管理される。例えば、ノード＃１は、ノード＃２とノード＃３について、サーバ２の識別子をルーティング・テーブル４で管理する。図２Ａにおいて、各ノードに隣接する（ｍ，ｎ）は、隣接するノードがノード＃ｍ〜ノード＃ｎの識別子をルーティング・テーブル４で管理することを示す。
【００２０】
例えば、ハッシュ値４．３のデータ取得がノード＃１に要求されると、ノード＃１のルーティング・テーブル４に基づきノード＃３にたどり着くことが可能である。そして、ノード＃３のルーティング・テーブル４に基づき、ハッシュ値４．３のデータを記憶するノード＃４にたどり着くことが可能である。すなわち、Ｃｈｏｒｄ方式では、図２Ａの破線矢印で示す方向にルーティングが行われる。また、ノード＃４のハッシュ値を４．５に更新する場合、ノード＃４を管理するノード＃２とノード＃３のルーティング・テーブル４の更新が発生する。
【００２１】
図２Ｂは、Ｋａｄｅｍｌｉａ方式を説明するための図である。Ｋａｄｅｍｌｉａ方式では、各サーバ２は、ハッシュ値の昇順及び降順の２つの方向でいくつかのサーバ２についてサーバ２の識別子をルーティング・テーブル４で管理する。したがって、Ｋａｄｅｍｌｉａ方式では、各サーバ２は、Ｃｈｏｒｄ方式より短時間でデータを記憶するサーバ２にたどり着けるように管理される。例えば、ノード＃１は、昇順方向のノード＃２とノード＃３、及び降順方向のノード＃５とノード＃６について、サーバ２の識別子をルーティング・テーブル４で管理する。図２Ｂにおいて、各ノードに隣接する（ｉ，ｊ，ｍ，ｎ）は、隣接するノードがノード＃ｉ〜ノード＃ｊ及びノード＃ｍ〜ノード＃ｎの識別子をルーティング・テーブル４で管理することを示す。
【００２２】
例えば、ハッシュ値５．３のデータ取得がノード＃１に要求されると、ノード＃１のルーティング・テーブル４に基づき、ハッシュ値５．３のデータを記憶するノード＃５にたどり着くことが可能である。Ｋａｄｅｍｌｉａ方式では、図２Ｂの破線矢印で示すように、双方向にルーティングが行われる。また、ノード＃４のハッシュ値を４．５に更新する場合、ノード＃４を管理する４つのノードすなわちノード＃２、ノード＃３、ノード＃５及びノード＃６のルーティング・テーブル４の更新が発生する。
【００２３】
図１に戻って、移動データ・ルーティング・テーブル５は、移動されたデータに関する情報が登録されるテーブルである。図３は、移動データ・ルーティング・テーブル５を説明するための図である。図３は、サーバ＃１のＤＢ３に記憶されたデータ“ｂ”がサーバ＃２に移動される場合を示す。サーバ＃１のＩＰアドレスは「１９２．１６８．０．１」であり、サーバ＃２のＩＰアドレスは「１９２．１６８．０．５」である。ＩＰアドレスはサーバＩＤすなわちサーバ２を識別する識別子として用いられる。データ“ｂ”のハッシュ値は「２００２」である。
【００２４】
サーバ＃１のルーティング・テーブル４には、自装置のハッシュ値範囲として「２００１−２００３」が登録される。また、サーバ＃１のルーティング・テーブル４には、ＩＰアドレス「１９２．１６８．０．２」のハッシュ値範囲として「０００１−１０００」が、ＩＰアドレス「１９２．１６８．０．１２８」のハッシュ値範囲として「１００１−２０００」が登録される。サーバ＃２のルーティング・テーブル４には、自装置のハッシュ値範囲として「５００１−６０００」が登録される。また、サーバ＃２のルーティング・テーブル４には、ＩＰアドレス「１９２．１６８．０．９」のハッシュ値範囲として「３００１−４０００」が、ＩＰアドレス「１９２．１６８．０．１５」のハッシュ値範囲として「４００１−５０００」が登録される。これらのルーティング・テーブル４は、データ“ｂ”の移動後も更新されない。
【００２５】
移動データ・ルーティング・テーブル５には、移動先リストと移動元リストが含まれる。移動先リストは、ハッシュキーと移動先サーバＩＤの組のリストである。ここで、ハッシュキーはハッシュ値である。移動元リストは、ハッシュキーと移動元サーバＩＤの組のリストである。データ“ｂ”がサーバ＃１からサーバ＃２に移動されると、サーバ＃１の移動先リストに、データ“ｂ”のハッシュキー「２００２」とサーバ＃２のＩＰアドレス「１９２．１６８．０．５」が追加される。また、サーバ＃２の移動元リストに、データ“ｂ”のハッシュキー「２００２」とサーバ＃１のＩＰアドレス「１９２．１６８．０．１」が追加される。
【００２６】
このように、移動されたデータに関する情報を移動データ・ルーティング・テーブル５に登録することによって、分散データベースシステム１は、ルーティング・テーブル４の更新を不要とすることができる。
【００２７】
図１に戻って、データ管理装置２ａは、各サーバ２の負荷を取得し、負荷の高いサーバ２、移動すべきデータ及び移動先のサーバ２を特定する。そして、データ管理装置２ａは、移動元のサーバ２及び移動先のサーバ２にデータの移動と移動データ・ルーティング・テーブル５の更新を指示する。
【００２８】
次に、実施例１に係る分散データベースシステム１の機能構成について説明する。図４は、実施例１に係る分散データベースシステム１の機能構成を示す図である。図４では、分散データベースシステム１は、ｎ台のサーバ２を有する。図４に示すように、サーバ２は、ＤＢ３と、記憶部３ａと、データ要求処理部３１と、移動データ制御部３２とを有する。データ管理装置２ａは、取得部２１と、特定部２２と、移動指示部２３とを有する。
【００２９】
記憶部３ａは、サーバ２が担当するデータの管理に用いられるデータを記憶する。記憶部３ａは、ルーティング・テーブル４と、移動データ・ルーティング・テーブル５と、データ・プロパティ・テーブル８とを記憶する。データ・プロパティ・テーブル８は、ハッシュ値にアクセス頻度とデータサイズを対応付ける。アクセス頻度は、書込み数と読出し数である。
【００３０】
データ要求処理部３１は、ネットワーク６を介してクライアント装置又は他のサーバ２から送られてくるデータアクセス要求を記憶部３ａを用いて処理する。具体的には、データ要求処理部３１は、ルーティング・テーブル４と移動データ・ルーティング・テーブル５を参照して、データアクセス要求を処理する。また、データ要求処理部３１は、処理したデータアクセス要求に基づいてデータ・プロパティ・テーブル８を更新する。また、データ要求処理部３１は、移動データ制御部３２の指示に基づいてデータの移動を行う。
【００３１】
移動データ制御部３２は、データ管理装置２ａの指示に基づいてサーバ２間のデータの移動に関する制御を行う。具体的には、移動データ制御部３２は、データ管理装置２ａに指示されたデータの移動をデータ要求処理部３１に指示する。また、移動データ制御部３２は、移動データに基づいて移動データ・ルーティング・テーブル５を更新する。
【００３２】
取得部２１は、一定の時間間隔で各サーバ２からハッシュ値毎のアクセス頻度、データサイズを取得する。特定部２２は、取得部２１が取得したハッシュ値毎のアクセス頻度、データサイズ等に基づいて、移動するデータ、データの移動元及び移動先を特定する。移動指示部２３は、特定部２２が特定したデータの移動、移動データ・ルーティング・テーブル５の更新をデータの移動元のサーバ２及びデータの移動先のサーバ２に指示する。
【００３３】
次に、実施例１に係るデータ管理装置２ａの処理のフローについて説明する。図５は、実施例１に係るデータ管理装置２ａの処理のフローを示すフローチャートである。図５に示すように、取得部２１が、一定の時間間隔で各サーバ２からハッシュ値毎のアクセス頻度、データサイズを取得するデータ取得処理を行う（ステップＳ１）。
【００３４】
そして、特定部２２が、ハッシュ値毎のアクセス頻度、データサイズ等に基づいて、移動するデータ及びデータの移動先を特定する特定処理を行う（ステップＳ２）。そして、移動指示部２３が、移動元のサーバ２及び移動先のサーバ２にデータの移動を指示する（ステップＳ３）。なお、以下では、移動元のサーバ２を移動元サーバＡ、移動先のサーバ２を移動先サーバＣとする。また、過去にデータが移動されている場合の移動先をサーバＢとする。
【００３５】
そして、移動指示部２３は、移動元サーバＡに問い合わせることによって、移動元サーバＡの移動データ・ルーティング・テーブル５の移動元リストに、移動データのハッシュキーＸが登録されているか否かを判定する（ステップＳ４）。その結果、移動データのハッシュキーＸが登録されていない場合には、移動指示部２３は、移動データ・ルーティング・テーブル５の移動先リストに、ハッシュキーＸと移動先サーバＣのサーバＩＤを登録するように、移動元サーバＡに指示する（ステップＳ５）。そして、移動指示部２３は、移動データ・ルーティング・テーブル５の移動元リストに、ハッシュキーＸと移動元サーバＡのサーバＩＤを登録するように、移動先サーバＣに指示する（ステップＳ６）。
【００３６】
一方、ハッシュキーＸが登録されている場合には、移動指示部２３は、ハッシュキーＸに対応して登録されたサーバＩＤのサーバＢに移動データの削除と移動データ・ルーティング・テーブル５のハッシュキーＸに関するエントリーの削除を指示する（ステップＳ７）。そして、移動指示部２３は、移動データ・ルーティング・テーブル５の移動元リストに、ハッシュキーＸと移動元サーバＡのサーバＩＤを登録するように、移動先サーバＣに指示する（ステップＳ８）。そして、移動指示部２３は、移動データ・ルーティング・テーブル５の移動先リストに登録されているハッシュキーＸのサーバＩＤを移動先サーバＣに書き換えるように、移動元サーバＡに指示する（ステップＳ９）。
【００３７】
このように、移動指示部２３は、データの移動と移動データ・ルーティング・テーブル５の更新を移動元サーバＡ及び移動先サーバＣに指示し、データの削除と移動データ・ルーティング・テーブル５の更新をサーバＢに指示する。したがって、データ管理装置２ａは、ルーティング・テーブル４の更新と不要なデータの移動をなくすことができる。
【００３８】
次に、検索処理のフローについて説明する。図６は、検索処理のフローを示すフローチャートである。図６に示すように、クライアント装置からデータの検索依頼を受信したサーバ２は、検索データのハッシュキーを基に、ルーティング・テーブル４を検索し、ルーティング先と連携して、データを登録する登録サーバ２までルーティングする（ステップＳ１１）。
【００３９】
そして、登録サーバ２は、移動データ・ルーティング・テーブル５に検索データのハッシュキーが登録されているかを調査する（ステップＳ１２）。そして、登録サーバ２は、移動データ・ルーティング・テーブル５に検索データのハッシュキーが登録されているか否かを判定し（ステップＳ１３）、登録されていない場合には、ＤＢ３に登録されているデータの値を検索結果として返信する（ステップＳ１４）。
【００４０】
一方、移動データ・ルーティング・テーブル５に検索データのハッシュキーが登録されている場合には、登録サーバ２は、ハッシュキーに対応する移動先サーバ２に検索依頼を転送する（ステップＳ１５）。そして、検索依頼を受けたサーバ２は、ＤＢ３に登録されているデータの値を検索結果として返信する（ステップＳ１６）。
【００４１】
このように、データの検索依頼を受信したサーバ２が移動データ・ルーティング・テーブル５を参照してデータを記憶するサーバ２へ検索依頼を転送することによって、データ管理装置２ａは、ルーティング・テーブル４の更新を不要とすることができる。なお、クライアント装置からデータの修正依頼を受信した場合には、分散データベースシステム１は、ステップＳ１４及びステップＳ１６で検索結果を返信する代わりにＤＢ３を修正して修正完了を返信する点を除いて同様のフローで処理を行う。
【００４２】
次に、削除処理のフローについて説明する。図７は、削除処理のフローを示すフローチャートである。図７に示すように、クライアント装置からデータの削除依頼を受信したサーバ２は、削除データのハッシュキーを基に、ルーティング・テーブル４を検索し、ルーティング先と連携して、データを登録する登録サーバ２までルーティングする（ステップＳ２１）。
【００４３】
そして、登録サーバ２は、移動データ・ルーティング・テーブル５に削除データのハッシュキーが登録されているかを調査する（ステップＳ２２）。そして、登録サーバ２は、移動データ・ルーティング・テーブル５にハッシュキーが登録されているか否かを判定し（ステップＳ２３）、登録されていない場合には、ＤＢ３に登録されているデータの値を削除し削除結果として返信する（ステップＳ２４）。
【００４４】
一方、移動データ・ルーティング・テーブル５にハッシュキーが登録されている場合には、登録サーバ２は、ハッシュキーに対応する移動先サーバ２に削除依頼を転送する（ステップＳ２５）。そして、削除依頼を受けた移動先サーバ２は、移動データ・ルーティング・テーブル５の削除データの移動元サーバ２に対しデータを削除した旨を通知する（ステップＳ２６）。
【００４５】
そして、移動元サーバ２は、移動データ・ルーティング・テーブル５から削除データのハッシュキー及び移動先サーバ２のサーバＩＤを削除する（ステップＳ２７）。そして、削除依頼を受けた移動先サーバ２は、移動データ・ルーティング・テーブル５から削除データのハッシュキー及び移動元サーバ２のサーバＩＤを削除する（ステップＳ２８）。そして、削除依頼を受けた移動先サーバ２は、ＤＢ３に登録されているデータの値を削除し削除結果として返信する（ステップＳ２９）。
【００４６】
このように、データが移動された場合に、移動先サーバ２がデータを削除するとともに、移動元サーバ２及び移動先サーバ２が移動データ・ルーティング・テーブル５から削除データに関する情報を削除する。したがって、分散データベースシステム１は、移動データ・ルーティング・テーブル５から不要になった情報を削除することができる。
【００４７】
上述してきたように、実施例１では、データ管理装置２ａの移動指示部２３は、移動元サーバ２及び移動先サーバ２にデータの移動を指示するとともに、移動データ・ルーティング・テーブル５の更新を指示する。そして、移動元サーバ２及び移動先サーバ２の移動データ制御部３２は、データの移動を制御するとともに、移動データに関して移動データ・ルーティング・テーブル５を更新する。したがって、分散データベースシステム１は、移動データ以外のデータの移動、及び、ルーティング・テーブル４の更新を不要とすることができ、データ移動の処理時間を短縮することができる。
【実施例２】
【００４８】
実施例２では、特定部２２の一例として、マトリックスを用いたコスト計算を行うことによって、移動データ、移動元サーバ２及び移動先サーバ２を特定する特定部２２ａについて説明する。ここで、コストとは、分散データベースシステム１の処理負荷である。コストには、サーバ２間のデータ・アクセスコスト、ネットワークコスト、サーバコストが含まれる。特定部２２ａは、分散データベースシステム１のコストが最小になるように、すなわち、分散データベースシステム１の性能が最大になるように、移動データ、移動元サーバ２及び移動先サーバ２を特定する。
【００４９】
図８Ａ〜図８Ｆは、マトリックスを用いたコスト計算方法を説明するための図である。図８Ａは、特定部２２ａがコスト計算に用いるマトリックスの一例を示す図であり、図８Ｂは、マトリックス作成のベースにしたネットワーク物理構成図である。図８において、ＲＴ＃１はルータを示し、ＳＷ＃１〜ＳＷ＃３はスイッチを示す。図８Ｂに示すように、サーバ＃１〜＃５で表される５台のサーバ２が３台のスイッチ及びルータを介して接続される。
【００５０】
図８Ａに示すように、５台のサーバ２を縦及び横に配置することによりマトリックスが作成される。行がｊで列がｉの要素は、サーバ＃ｊからサーバ＃ｉへ送信されるデータ量、サーバ＃ｊからサーバ＃ｉの経路にあるスイッチ（ＳＷ）数及びルータ（ＲＴ）数を表す。
【００５１】
データ量は、マトリックスの各要素を表す円の上半分に示され、左側から上側のサーバ２へのＤＢ通信量を表す。単位はメガバイト（ＭＢ）である。上側サーバ２へのデータ量の総和がそのサーバ２の入力量であり、左側サーバ２からのデータ量の総和がそのサーバ２の出力量である。ＳＷ数はマトリックスの各要素を表す円の左下半分に示され、ＲＴ数はマトリックスの各要素を表す円の右下半分に示される。
【００５２】
例えば、サーバ＃２からサーバ＃１への通信については、ＤＢ通信量は２０ＭＢであり、経由するスイッチの数は１であり、経由するルータの数は０である。サーバ＃１の入力量は、１列のデータ量の総和であり、２０＋４０＋１０＋６０＝１３０ＭＢである。サーバ＃１の出力量は、１行のデータ量の総和であり、１０＋３０＋２０＋１５＝７５ＭＢである。
【００５３】
図８Ｃは、コスト計算方法を示す図である。図８Ｃに示すように、サーバ数をｋとすると、サーバ＃ｊの出力負荷は、式（１）により、サーバ＃ｊ出力負荷＝Σ［ｍ＝１．．ｋ］（データ量jm×（ＳＷレイテンシ係数×ＳＷ数jm＋ＲＴレイテンシ係数×ＲＴ数jm））で定義される。ここで、ＳＷレイテンシ係数はスイッチによる遅れを表す係数であり、ＲＴレイテンシ係数はルータによる遅れを表す係数である。また、サーバ＃ｉの入力負荷は、式（２）により、サーバ＃ｉ入力負荷＝Σ［ｎ＝１．．ｋ］（データ量ni×（ＳＷレイテンシ係数×ＳＷ数ni＋ＲＴレイテンシ係数×ＲＴ数ni））で定義される。
【００５４】
また、データ移動に伴う要求転送負荷に関して、移動先に要求を転送する時間は、式（３）により、データ移動に伴う要求転送負荷（要求転送量）＝アクセス数／単位時間×要求情報量（バイト）と定義される。
【００５５】
そして、サーバ負荷［ｉ，ｊ］が要求転送量より大きければデータの移動及び移動データ・ルーティング・テーブル５の更新が妥当であると判断される。ここで、サーバ負荷［ｉ，ｊ］は、サーバ＃ｊからサーバ＃ｉへのデータの転送負荷である。また、データ移動に伴う帯域変動による帯域利用率は許容範囲内でなければならない。なお、データ移動に伴う負荷については、データ移動はバックグラウンドでおこなわれるため低いと判断される。
【００５６】
図８Ｄは、出力量及び入力量を示す図である。図８Ｄのネットワーク物理構成図において、サーバ２とスイッチを接続する線の上の値はサーバ２の出力量を示し、下の値はサーバ２の入力量を示す。また、スイッチとルータを接続する線の上の値はスイッチの出力量を示し、下の値はスイッチの入力量を示す。
【００５７】
スイッチの出力量は、接続するサーバ２間の通信はスイッチの外に影響しないので、接続するサーバ２の出力量の総和から、接続するサーバ２間の通信量を引いたものである。また、スイッチの入力量は、接続するサーバ２間の通信はスイッチの外から影響を受けないので、接続するサーバ２の入力量の総和から、接続するサーバ２間の通信量を引いたものである。
【００５８】
例えば、スイッチ＃１の出力量は、（サーバ＃１の出力量−サーバ＃１からサーバ＃２への通信量）＋（サーバ＃２の出力量−サーバ＃２からサーバ＃１への通信量）＝（７５−１０）＋（８５−２０）＝６５＋６５＝１３０である。また、スイッチ＃１の入力量は、（サーバ＃１の入力量−サーバ＃２からサーバ＃１への通信量）＋（サーバ＃２の入力量−サーバ＃１からサーバ＃２への通信量）＝（１３０−２０）＋（９０−１０）＝１１０＋８０＝１９０である。
【００５９】
図８Ｅは、各サーバ２の出力負荷及び入力負荷の計算結果を示す図である。各サーバ２の出力負荷は、図８Ｄに示した各サーバ２の出力量と図８Ｃに示した式（１）から計算され、各サーバ２の入力負荷は、図８Ｄに示した各サーバ２の入力量と図８Ｃに示した式（２）から計算される。なお、ここでは、ＳＷレイテンシ係数及びＲＴレイテンシ係数は、それぞれ０．０１及び０．０１２としている。
【００６０】
特定部２２ａは、各サーバ２の出力負荷及び入力負荷を計算した後、負荷の高いサーバ２を特定する。図８Ｅでは、サーバ＃５の出力負荷が最も高い。そして、特定部２２ａは、次に負荷の高いサーバ２を特定する。図８Ｅでは、サーバ＃１の入力負荷が高い。したがって、サーバ＃５上のデータをサーバ＃１に移動すれば、サーバ＃５の出力負荷が軽減される。そこで、特定部２２ａは、サーバ＃１でＤＢ３を記憶するＨＤＤ（Hard  Disk  Drive）に余裕があれば、サーバ＃５上のデータをサーバ＃１に移動すると決定し、余裕がなければ、サーバ＃５上のデータを別のサーバ２に移動すると決定する。
【００６１】
サーバ＃１のＨＤＤに余裕がないとすると、サーバ＃１への最短パスを有するサーバ＃２が移動先の候補となる。サーバ＃２とＳＷ＃１との間の帯域に余裕があれば、特定部２２ａは、サーバ＃５上のデータをサーバ＃２に移動すると決定する。サーバ＃２とＳＷ＃１との間の帯域に余裕がなく、ＲＴ＃１とＳＷ＃２との間の帯域及びＳＷ＃２とサーバ＃４との間の帯域に余裕があれば、特定部２２ａは、サーバ＃５上のデータをサーバ＃４に移動すると決定する。
【００６２】
なお、特定部２２ａは、負荷の高いサーバ２を特定する場合に、偏差値を用いる。図８Ｆは、偏差値計算結果を示す図である。図８Ｆの出力偏差値及び入力偏差値は、図８Ｅの出力負荷及び入力負荷に基づいてそれぞれ算出されたものである。図８Ｆに示すように、出力負荷については、サーバ＃５の偏差値が最高であり、入力負荷については、サーバ＃１の偏差値が最高である。
【００６３】
次に、特定部２２ａの機能構成について説明する。図９は、特定部２２ａの機能構成を示す図である。図９に示すように、特定部２２ａは、マトリックス構築部４１と、データ収集部４２と、偏り判断部４３と、移動判断部４４とを有する。
【００６４】
マトリックス構築部４１は、特定部２２ａがコスト計算に用いるマトリックスを作成する。マトリックス構築部４１は、ネットワーク物理構成情報、又は、スイッチやルータの機器接続情報等を含むＭＩＢ（Management  Information  Base）情報を基にマトリックスを作成する。
【００６５】
データ収集部４２は、サーバ２間でやり取りされているデータについて送信データ量を一定の周期で各サーバ２から取得し、マトリックスに反映させる。
【００６６】
偏り判断部４３は、マトリックスに基づいて図８Ｃに示した式（１）及び式（２）を用いて各サーバ２の出力負荷及び入力負荷をそれぞれ計算し、各サーバ２の出力負荷及び入力負荷の偏差値を計算する。そして、偏り判断部４３は、各サーバ２の出力負荷及び入力負荷の偏差値を所定の閾値と比較して偏りがあるか否かを判断し、最も偏りがあるサーバ２をデータの移動元サーバ２として特定する。
【００６７】
移動判断部４４は、偏り判断部４３により特定された移動元サーバ２に対して、移動データを特定するように指示する。そして、移動判断部４４は、データの移動により分散データベースシステム１の負荷が減少するか否か、及び、データの移動によりネットワーク６の関連個所の帯域が許容範囲内であるか否かを移動条件として判定する。そして、移動判断部４４は、移動条件が満たされた場合には、データの移動を行うと判断し、移動条件が満たされない場合には、データの移動は行わないと判断する。
【００６８】
次に、実施例２に係るデータ管理装置による処理のフローについて説明する。図１０は、実施例２に係るデータ管理装置による処理のフローを示すフローチャートである。図１０に示すように、実施例２に係るデータ管理装置は、定期的にＣＰＵ（Central  Processing  Unit）負荷やＤＢプロセス負荷を収集し（ステップＳ４１）、ＣＰＵ負荷の内、ＤＢプロセス負荷が一定率以上占めているか否かを判定する（ステップＳ４２）。
【００６９】
その結果、ＤＢプロセス負荷が一定率以上占めない場合には、実施例２に係るデータ管理装置は、処理を終了する。一方、ＤＢプロセス負荷が一定率以上占める場合には、実施例２に係るデータ管理装置は、移動元サーバ２、移動データ及び移動先サーバ２を特定して移動条件が満たされるか否かを判断する特定処理を行う（ステップＳ４３）。そして、移動条件が満たされている場合に、実施例２に係るデータ管理装置は、データの移動及び移動データ・ルーティング・テーブル５の更新を指示する移動指示処理を行う（ステップＳ４４）。
【００７０】
このように、実施例２に係るデータ管理装置は、移動条件が満たされている場合に、移動指示処理を行うことによって、分散データベースシステム１の負荷を減少することができる。
【００７１】
次に、特定部２２ａによる処理のフローについて説明する。図１１は、特定部２２ａによる処理のフローを示すフローチャートである。図１１に示すように、マトリックス構築部４１が、コスト計算に用いるマトリックスを構築するマトリックス構築の処理を行う（ステップＳ５１）。そして、データ収集部４２が、全サーバ２からデータ量を収集するデータ収集の処理を行う（ステップＳ５２）。
【００７２】
そして、偏り判断部４３が、偏差値を用いてサーバ２の負荷の偏りを判断する偏り判断の処理を行う（ステップＳ５３）。そして、サーバ２の負荷に偏りがあると、移動判断部４４が、データを移動するか否かを判断する移動判断の処理を行う（ステップＳ５４）。
【００７３】
このように、サーバ２の負荷に偏りがあると、移動判断部４４が、データを移動するか否かを判断することによって、特定部２２ａは、データを適切に移動することができる。
【００７４】
次に、マトリックス構築の処理のフローについて説明する。図１２は、マトリックス構築の処理のフローを示すフローチャートである。図１２に示すように、マトリックス構築部４１は、ネットワーク物理構成情報、もしくは、スイッチやルータの機器接続情報等を含むＭＩＢ情報を基に、サーバ２、スイッチ、ルータ等の構成情報を取得する（ステップＳ６１）。
【００７５】
そして、マトリックス構築部４１は、取得した構成情報を基に、コスト計算用のマトリックスに、各サーバ２間のスイッチ数及びルータ数を登録する（ステップＳ６２）。
【００７６】
このように、マトリックス構築部４１が、構成情報を基にマトリックスを構築し、スイッチ数及びルータ数をマトリックスに登録することによって、特定部２２ａは、マトリックスを用いてコスト計算を行うことができる。
【００７７】
次に、データ収集の処理のフローについて説明する。図１３は、データ収集の処理のフローを示すフローチャートである。図１３に示すように、データ収集部４２は、送信データ取得周期に達したか否かを判定し（ステップＳ７１）、達していない場合には、送信データ取得周期になるまで判定を繰り返す。
【００７８】
そして、データ収集部４２は、コスト計算用のマトリックスに基づき、サーバ２間でやり取りされているデータについて送信データ量を各サーバ２から取得し、データ量としてマトリックスに反映する（ステップＳ７２）。
【００７９】
そして、データ収集部４２は、全てのサーバ２から送信データ量を取得したか否かを判定し（ステップＳ７３）、取得した場合には、処理を終了し、取得していないサーバ２がある場合には、全てのサーバ２から取得するまで判定を繰り返す。
【００８０】
このように、データ収集部４２がデータ量をマトリックスに登録することによって、特定部２２ａは、マトリックスを用いてコスト計算を行うことができる。
【００８１】
次に、偏り判断の処理のフローについて説明する。図１４は、偏り判断の処理のフローを示すフローチャートである。図１４に示すように、偏り判断部４３は、コスト計算用のマトリックスから図８Ｃの式（１）及び式（２）を用いて各サーバ２の出力負荷及び入力負荷を計算する（ステップＳ８１）。
【００８２】
そして、偏り判断部４３は、各サーバ２の出力負荷を用いて各サーバ２の出力負荷の偏差値を計算し、各サーバ２の入力負荷を用いて、各サーバ２の入力負荷の偏差値を計算する（ステップＳ８２）。そして、偏り判断部４３は、偏差値に基づいて、出力負荷又は入力負荷に偏りがあるか否かを判定し（ステップＳ８３）、偏りがない場合には、特定部２２ａは、図１５に示す移動判断の処理をスキップするように移動する。一方、偏りがある場合には、特定部２２ａは、最も偏りがあるサーバ２をデータの移動元サーバ２として図１５に示す移動判断の処理に移動する。
【００８３】
このように、偏り判断部４３が偏差値に基づいて負荷の偏りを判断することによって、特定部２２ａは、データ移動の必要性を判断することができる。
【００８４】
次に、移動判断の処理のフローについて説明する。図１５は、移動判断の処理のフローを示すフローチャートである。図１５に示すように、移動判断部４４は、移動元サーバ２に移動データの特定を指示し（ステップＳ９１）、図８Ｃの式（３）を用いて要求転送量を計算する（ステップＳ９２）。
【００８５】
そして、移動判断部４４は、移動先サーバ２を特定するサーバ特定処理を行い（ステップＳ９３）、単位時間に移動データが移動元サーバ２から移動先サーバ２へ移動するサイズが要求転送量を超えているか否かを判定する（ステップＳ９４）。その結果、当該サイズが要求転送量を超えていない場合には、移動判断部４４は、データを移動すると判断する。
【００８６】
一方、当該サイズが要求転送量を超えている場合には、移動判断部４４は、移動先サーバ２のＨＤＤの容量に基づいて、移動先サーバ２へデータの移動が可能か否かを判定する（ステップＳ９５）。その結果、移動が可能である場合には、移動先サーバ２へデータを移動すると判断する（ステップＳ９６）。
【００８７】
一方、移動先サーバ２へデータの移動が可能でない場合には、移動判断部４４は、移動先サーバ２と同じＳＷ配下のサーバ２で負荷の低いサーバ２から順に移動可能性を調査する（ステップＳ９７）。そして、移動判断部４４は、移動可能なサーバ２があるか否かを判定し（ステップＳ９８）、移動可能なサーバ２がある場合には、移動先サーバ２と同じＳＷ配下で移動可能なサーバ２を新たに移動先サーバ２と判断する（ステップＳ９９）。
【００８８】
一方、同じＳＷ配下で移動可能なサーバ２がない場合には、移動判断部４４は、移動先サーバ２と同じＲＴ配下のＳＷの内、移動先サーバ２を接続するＳＷを除いたＳＷの配下のサーバ２で負荷の低いサーバ２から順に移動可能性を調査する（ステップＳ１００）。そして、移動判断部４４は、移動可能なサーバ２があるか否かを判定する（ステップＳ１０１）。その結果、移動可能なサーバ２がある場合には、移動先サーバ２と同じＲＴ配下のＳＷの内、移動先サーバ２を接続するＳＷを除いたＳＷの配下で移動可能なサーバ２を新たに移動先サーバ２と判断する（ステップＳ１０２）。一方、移動可能なサーバ２がない場合には、移動判断部４４は、データを移動しないと判断する。
【００８９】
このように、移動判断部４４は、サーバ特定処理により特定した移動先サーバ２へデータを移動できない場合に、移動先サーバ２と同じＳＷ配下、ＲＴ配下のサーバ２への移動可能性を順番に調査することによって、適切な移動先サーバ２を見つけることができる。なお、ステップＳ９１により移動データが複数特定された場合には、ステップＳ９２〜ステップＳ１０２の処理が各移動データに対して行われる。
【００９０】
次に、移動データを特定する処理のフローについて説明する。図１６は、移動データを特定する処理のフローを示すフローチャートである。図１６に示すように、サーバ２は、ハッシュキー毎に、単位時間当たりの書込み数及び読出し数をデータ・プロパティ・テーブル８に記録する（ステップＳ１１１）。
【００９１】
そして、移動データの特定依頼を受けると、サーバ２は、データ・プロパティ・テーブル８の記録に基づき、依頼に含まれる負荷減量になるように、書込み数と読出し数の多いデータを上位から選択する（ステップＳ１１２）。ここで、依頼に含まれる負荷減量は、書込み数と読出し数を２０％減らせ等を指定する。そして、サーバ２は、選択したデータのハッシュキーリストをデータ管理装置に通知する（ステップＳ１１３）。
【００９２】
このように、サーバ２は、ハッシュキー毎に、単位時間当たりの書込み数及び読出し数をデータ・プロパティ・テーブル８に記録するので、移動データの特定依頼を受けた際に、単位時間当たりの書込み数及び読出し数に基づいて移動データを特定することができる。
【００９３】
次に、サーバ特定処理のフローについて説明する。図１７は、サーバ特定処理のフローを示すフローチャートである。図１７に示すように、移動判断部４４は、特定された移動データのハッシュキーに対応する、単位時間の書込み数及び読出し数に、同ハッシュキーに対応するデータサイズを積算し、データ移動によってネットワーク６が影響を受ける通信量を計算する（ステップＳ１２１）。
【００９４】
そして、移動判断部４４は、移動元以外でサーバ負荷が一番少ないサーバ２を移動先候補として選択する（ステップＳ１２２）。ここで、サーバ負荷は、単位時間の書込み数と読出し数である。そして、移動判断部４４は、データを移動しても移動先候補の負荷は許容範囲内か否かを判定する（ステップＳ１２３）。
【００９５】
その結果、許容範囲内でない場合には、移動判断部４４は、次にサーバ負荷が少ないサーバ２を移動先候補として選択し（ステップＳ１２４）、移動元以外のサーバ２全てを調べたか否かを判定する（ステップＳ１２５）。その結果、移動元以外のサーバ２全てを調べた場合には、移動判断部４４は、移動先サーバ２がないと判断して処理を終了する。一方、移動元以外のサーバ２で調べていないサーバ２がある場合には、移動判断部４４は、ステップＳ１２３に戻る。
【００９６】
また、ステップＳ１２３において、移動先候補の負荷が許容範囲内である場合には、移動判断部４４は、移動先候補にデータを移動した場合の通信負荷を調べるために、計算した通信量を関係するＳＷ−サーバ２間、ＲＴ−ＳＷ間の通信量に加算する（ステップＳ１２６）。そして、移動判断部４４は、データを移動しても、関係するＳＷ−サーバ２間、ＲＴ−ＳＷ間の通信量は許容範囲内か否かを判定し（ステップＳ１２７）、許容範囲内でない場合には、ステップＳ１２４に移動する。一方、許容範囲内である場合には、移動判断部４４は、移動先候補を移動先サーバ２として特定する（ステップＳ１２８）。
【００９７】
このように、移動判断部４４は、サーバ負荷と通信負荷に基づいて移動先サーバ２を特定することによって、データ移動にともなう分散データベースシステム１の性能低下を防ぐことができる。
【００９８】
上述してきたように、実施例２では、特定部２２ａは、コスト計算用のマトリックスを用いて各サーバ２の出力負荷及び入力負荷を計算し、計算した出力負荷及び入力負荷に基づいてデータの移動元サーバ２を特定する。したがって、特定部２２ａは、データの移動元サーバ２を適切に特定することができる。
【００９９】
また、実施例２では、特定部２２ａは、移動データが単位時間に移動元サーバ２から移動先サーバ２へ移動するサイズと要求転送量とを比較し、当該サイズが要求転送量より大きい場合に、データを移動すると判断する。したがって、特定部２２ａは、データ移動にともなう分散データベースシステム１の性能低下を防ぐことができる。
【０１００】
また、実施例２では、特定部２２ａは、サーバ特定処理により特定した移動先サーバ２へデータを移動できない場合に、移動先サーバ２と同じＳＷ配下、ＲＴ配下のサーバ２の順番で新たな移動先サーバ２を特定する。したがって、特定部２２ａは、サーバ特定処理により特定した移動先サーバ２とできるだけ近い通信環境のサーバ２を新たな移動先サーバ２とすることができる。
【実施例３】
【０１０１】
実施例２では、最も負荷の高いサーバ２のデータを他のサーバ２に移すことによって分散データベースシステム１の性能を向上させる場合について説明した。一方、アクセスが少ない低負荷のデータをまとめることによっても分散データベースシステム１の性能を向上させることができる。そこで、実施例３では、低負荷データを移動する処理について説明する。なお、以下では、実施例３に係るデータ管理装置を単にデータ管理装置と呼ぶ。
【０１０２】
図１８は、低負荷データの移動処理のフローを示すフローチャートである。図１８に示すように、データ管理装置は、全データに対してアクセス負荷をサーバ２から収集する（ステップＳ１３１）。そして、データ管理装置は、アクセスが少ない低負荷データの内、連続するキー空間の広いものを広い順にソートする（ステップＳ１３２）。ここで、低負荷データとは、例えばアクセス数が所定の閾値より小さいデータである。
【０１０３】
そして、データ管理装置は、連続するキー空間の最も広いものに含まれるデータを移動対象データとする。そして、データ管理装置は、移動対象データのキー空間のハッシュ値の平均値を算出し、担当するキー空間のハッシュ値の平均値が算出した平均値と最も近いサーバ２を移動先サーバ２として選択する（ステップＳ１３３）。ただし、移動対象データの移動元のサーバ２は、移動先サーバ２から除外される。
【０１０４】
そして、データ管理装置は、選択した移動先サーバ２が移動対象データを全て受け入れ可能か否かを判定し（ステップＳ１３４）、全ては受け入れ可能でない場合には、一部を受け入れ可能か否かを判定する（ステップＳ１３５）。その結果、一部でも受け入れ可能でない場合には、データ管理装置は、全てのサーバ２に対し受け入れの可能性を試したか否かを判定する（ステップＳ１３６）。その結果、データ管理装置は、全てのサーバ２に対し受け入れの可能性を試した場合には、処理を終了し、試していないサーバ２がある場合には、平均値が次に近いサーバ２を移動先サーバ２として選択し（ステップＳ１３７）、ステップＳ１３４に戻る。
【０１０５】
一方、一部を受け入れ可能である場合には、データ管理装置は、移動元サーバ２及び移動先サーバ２に対して、受け入れ可能な移動対象データの移動と移動データ・ルーティング・テーブル５の更新を指示する。そして、データ管理装置は、移動できなかったデータを移動対象データとして特定し（ステップＳ１３８）、ステップＳ１３６へ移動する。
【０１０６】
また、選択した移動先サーバ２が移動対象データを全て受け入れ可能である場合には、データ管理装置は、移動元サーバ２及び移動先サーバ２に対して、移動対象データの移動と移動データ・ルーティング・テーブル５の更新を指示する（ステップＳ１３９）。
【０１０７】
上述してきたように、実施例３では、連続するキー空間が最も広い低負荷データを移動対象データとして移動することで、データ管理装置は、低負荷データをまとめることができ、分散データベースシステム１の性能を向上させることができる。
【０１０８】
なお、実施例１〜３では、データ管理装置について説明したが、データ管理装置が有する構成をソフトウェアによって実現することで、同様の機能を有するデータ管理プログラムを得ることができる。そこで、データ管理プログラムを実行するコンピュータについて説明する。
【０１０９】
図１９は、実施例に係るデータ管理プログラムを実行するコンピュータのハードウェア構成を示す図である。図１９に示すように、コンピュータ５０は、メインメモリ５１と、ＣＰＵ５２と、ＬＡＮインタフェース５３と、ＨＤＤ５４とを有する。また、コンピュータ５０は、スーパーＩＯ（Input  Output）５５と、ＤＶＩ（Digital  Visual  Interface）５６と、ＯＤＤ（Optical  Disk  Drive）５７とを有する。
【０１１０】
メインメモリ５１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ５２は、メインメモリ５１からプログラムを読出して実行する中央処理装置である。ＣＰＵ５２は、メモリコントローラを有するチップセットを含む。
【０１１１】
ＬＡＮインタフェース５３は、コンピュータ５０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ５４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ５５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ５６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ５７は、ＤＶＤの読み書きを行う装置である。
【０１１２】
ＬＡＮインタフェース５３は、ＰＣＩエクスプレス（ＰＣＩｅ）によりＣＰＵ５２に接続され、ＨＤＤ５４及びＯＤＤ５７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ５２に接続される。スーパーＩＯ５５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ５２に接続される。
【０１１３】
そして、コンピュータ５０において実行されるデータ管理プログラムは、ＤＶＤに記憶され、ＯＤＤ５７によってＤＶＤから読出されてコンピュータ５０にインストールされる。あるいは、データ管理プログラムは、ＬＡＮインタフェース５３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読出されてコンピュータ５０にインストールされる。そして、インストールされたデータ管理プログラムは、ＨＤＤ５４に記憶され、メインメモリ５１に読み出されてＣＰＵ５２によって実行される。
【０１１４】
また、実施例１〜３では、データ管理装置について説明したが、データを管理するサーバ２あるいはクラウドシステムに含まれる他のサーバ２がデータ管理プログラムを実行することによってデータ管理装置の機能を有してもよい。
【０１１５】
また、実施例１〜３では、キーとバリューの組合わせでデータを複数のサーバで分散管理する分散データベースシステムについて説明したが、分散データベースシステムは、他の構成のデータを複数のサーバで分散管理してもよい。
【符号の説明】
【０１１６】
１    分散データベースシステム
２，９３，９４    サーバ
２ａ    データ管理装置
３    ＤＢ
３ａ    記憶部
４    ルーティング・テーブル
５    移動データ・ルーティング・テーブル
６    ネットワーク
８    データ・プロパティ・テーブル
２１    取得部
２２，２２ａ    特定部
２３    移動指示部
３１    データ要求処理部
３２    移動データ制御部
４１    マトリックス構築部
４２    データ収集部
４３    偏り判断部
４４    移動判断部
５０    コンピュータ
５１    メインメモリ
５２    ＣＰＵ
５３    ＬＡＮインタフェース
５４    ＨＤＤ
５５    スーパーＩＯ
５６    ＤＶＩ
５７    ＯＤＤ
９１，９２    データ
【図１】
0006690212.tif 000002
【図２Ａ】
0006690212.tif 000003
【図２Ｂ】
0006690212.tif 000004
【図３】
0006690212.tif 000005
【図４】
0006690212.tif 000006
【図５】
0006690212.tif 000007
【図６】
0006690212.tif 000008
【図７】
0006690212.tif 000009
【図８Ａ】
0006690212.tif 000010
【図８Ｂ】
0006690212.tif 000011
【図８Ｃ】
0006690212.tif 000012
【図８Ｄ】
0006690212.tif 000013
【図８Ｅ】
0006690212.tif 000014
【図８Ｆ】
0006690212.tif 000015
【図９】
0006690212.tif 000016
【図１０】
0006690212.tif 000017
【図１１】
0006690212.tif 000018
【図１２】
0006690212.tif 000019
【図１３】
0006690212.tif 000020
【図１４】
0006690212.tif 000021
【図１５】
0006690212.tif 000022
【図１６】
0006690212.tif 000023
【図１７】
0006690212.tif 000024
【図１８】
0006690212.tif 000025
【図１９】
0006690212.tif 000026
【図２０】
0006690212.tif 000027