"ネットワークを介して接続された複数のエリアサーバを備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、前記複数のエリアサーバの各々は、管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割するエリア分割部と、所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する通信部と、前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定の閾値以上であれば、前記管理しているエリアの一部を、前記他のエリアサーバに再配置するエリア再配置部と、を有することを特徴とする分散システム。請求項1記載の分散システムにおいて、前記エリア再配置部は、前記自サーバへのエリアの偏りの程度が前記閾値以上である状態が所定期間以上継続した場合にエリアを再配置することを特徴とする分散システム。請求項1または2記載の分散システムにおいて、前記通信部は、前記自サーバ管理エリア数が前回の通知時から所定数以上増加したことを契機として、前記自サーバ管理エリア数を通知することを特徴とする分散システム。請求項1から3のいずれか1項に記載の分散システムにおいて、マスターサーバをさらに備え、前記マスターサーバは、前記複数のエリアサーバをグループ分けするとともに、グループ毎に、該グループに属するエリアサーバの内、1つのエリアサーバをグループサーバに任命する制御部をさらに有し、前記通知部は、自サーバが前記グループサーバに任命されると、自サーバと同じグループに属するエリアサーバの各々から、該エリアサーバで管理されているエリアの数を取得し、所定のイベントを契機として、前記同じグループに属する全てのエリアサーバで管理されているエリアの数の合計である自グループ管理エリア数を前記グループサーバに任命された他のエリアサーバに通知し、前記エリア再配置部は、前記自グループ管理エリア数、および、前記グループサーバに任命された他のエリアサーバから通知された、該エリアサーバが属するグループの全てのエリアサーバで管理されているエリアの数の合計である他グループ管理エリア数に基づき自グループへのエリアの偏りの程度を求め、該求めた偏りの程度が所定の閾値以上であれば、前記自グループのエリアサーバで管理されているエリアの一部を、前記グループサーバに任命された他のエリアサーバが属するグループのエリアサーバに再配置することを特徴とする分散システム。マスターサーバと、ネットワークを介して接続された複数のエリアサーバと、を備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、前記データ群は、キーと該キーに対応する値とを対応つけた複数のロウから構成され、前記マスターサーバは、前記データ群を構成する複数のロウのキーを所定の順にソートした後に前記キーの範囲を前記エリアサーバの数に応じて分割し、該分割したキーの範囲の各々を前記複数のエリアサーバ各々の前記ネットワーク上におけるアドレスの順に前記複数のエリアサーバの各々に割り当て、前記キーの範囲を割り当てた前記エリアサーバに前記キーの範囲のロウを含むエリアを管理させる制御部と、前記複数のエリアサーバの各々に割り当てた前記キーの範囲を記憶する記憶部と、を有し、前記通知部は、前記ネットワーク上におけるアドレスの順が前後のエリアサーバである隣接エリアサーバに前記自サーバ管理エリア数を通知し、前記エリア再配置部は、前記キーのソート順が保持されるようにエリアを再配置することを特徴とする分散システム。請求項5記載の分散システムにおいて、前記制御部は、前記グループ毎に、該グループに属するエリアサーバの内、1つのエリアサーバをグループサーバに任命し、前記記憶部は、前記グループのグループサーバに任命したエリアサーバ毎に、前記グループに属する全てのエリアサーバに割り当てられた前記キーの範囲を記憶し、前記グループのグループサーバに任命されたエリアサーバは、前記グループに属するエリアサーバ毎に、該エリアサーバに割り当てられた前記キーの範囲を記憶し、前記通知部は、自グループが属するグループにおける前記隣接エリアサーバに前記自サーバ管理エリア数を通知し、前記エリア再配置部は、前記キーのソート順が保持されるように、自グループが属するグループにおける前記隣接エリアサーバにエリアを再配置することを特徴とする分散システム。データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に適用される負荷分散方法であって、管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割し、所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知し、前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置することを特徴とする負荷分散方法。データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に、管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割する処理と、所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する処理と、前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置する処理と、を実行させるプログラム。上述した分散システムにおいては、Area分割が行われるたびに、即時に、図25に示すMetaTableMetaAreaの更新が行われる。そのため、MetaAreaを管理するAreaServerへのアクセスが非常に多くなって負荷が高まる。特に、分散システムへのデータの初期投入時には、Area分割が頻発するため、MetaAreaの更新が頻繁に行われ、MetaAreaを管理するAreaServerが高まる。また、一般に、分散システムにおいては、Area数は100,000以上のオーダになる。そのため、上述したように、Area毎にMetaTableにおいて1エントリを作成すると、MetaTableのサイズが大きくなり、MetaTableMetaAreaを管理するAreaServerの負荷が高まる。MetaAreaを管理するAreaServerの負荷が高まると、そのMetaAreaを介してアクセスするUserAreaに対するデータの参照、更新のレスポンス、あるいは、そのMetaAreaを管理するAreaServerで管理されているUserAreaに対するデータの参照、更新のレスポンスが悪化するという問題がある。本発明の目的は、AreaServerの負荷を分散し、レスポンス低下の抑制を図ることができる分散システム、負荷分散方法、および、プログラムを提供することにある。上記目的を達成するために本発明の第1の分散システムは、ネットワークを介して接続された複数のエリアサーバを備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、前記複数のエリアサーバの各々は、管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割するエリア分割部と、所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する通信部と、前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定の閾値以上であれば、前記管理しているエリアの一部を、前記他のエリアサーバに再配置するエリア再配置部と、を有する。上記目的を達成するために本発明の第2の分散システムは、マスターサーバと、ネットワークを介して接続された複数のエリアサーバと、を備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、前記データ群は、キーと該キーに対応する値とを対応つけた複数のロウから構成され、前記マスターサーバは、前記データ群を構成する複数のロウのキーを所定の順にソートした後に前記キーの範囲を前記エリアサーバの数に応じて分割し、該分割したキーの範囲の各々を前記複数のエリアサーバ各々の前記ネットワーク上におけるアドレスの順に前記複数のエリアサーバの各々に割り当て、前記キーの範囲を割り当てた前記エリアサーバに前記キーの範囲のロウを含むエリアを管理させる制御部と、前記複数のエリアサーバの各々に割り当てた前記キーの範囲を記憶する記憶部と、を有し、前記通知部は、前記ネットワーク上におけるアドレスの順が前後のエリアサーバである隣接エリアサーバに前記自サーバ管理エリア数を通知し、前記エリア再配置部は、前記キーのソート順が保持されるようにエリアを再配置する。上記目的を達成するために本発明の負荷分散方法は、データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に適用される負荷分散方法であって、管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割し、所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知し、前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置する。上記目的を達成するために本発明のプログラムは、データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に、管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割する処理と、所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する処理と、前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置する処理と、を実行させる。本発明によれば、Area分割に伴うAreaServerへの負荷を低減し、レスポンス低下の抑制を図ることができる。以下に、本発明を実施するための形態について図面を参照して説明する。図1は、本発明の一実施形態の分散システムの概要を示す図である。なお、図1において、図24と同様の構成については同じ符号を付し、説明を省略する。図1に示す分散システム1は、クライアント10と、MasterServer20と、AreaServer30-1~30-9と、を備える。クライアント10、MasterServer20、および、AreaServer30-1~30-9は、ネットワークを介して接続されている。クライアント10は、ユーザからのデータの参照、更新などのデータ処理の要求を受け付けると、そのデータを格納するAreaServerを探索、特定する、ロケーション解決を行い、要求に応じたデータ処理を行って、処理結果をユーザに返却する。MasterServer20は、AreaServer30-1~30-9を、各AreaServerのIPアドレスの順に、それぞれが複数のAreaServerからなるグループにグループ分けを行う。なお、図1においては、AreaServer30-1のIPアドレスは、10.0.0.1であり、AreaServer30-2のIPアドレスは、10.0.0.2であり、AreaServer30-3のIPアドレスは、10.0.0.3であり、AreaServer30-4のIPアドレスは、10.0.0.4であり、AreaServer30-5のIPアドレスは、10.0.0.5であり、AreaServer30-6のIPアドレスは、10.0.0.6であり、AreaServer30-7のIPアドレスは、10.0.0.7であり、AreaServer30-8のIPアドレスは、10.0.0.8であり、AreaServer30-9のIPアドレスは、10.0.0.9であるとする。MasterServer20は、例えば、AreaServer30-1~30-3をGroup1に、AreaServer30-4~30-6をGroup2に、AreaServer30-7~30-9をGroup3にグループ分けを行う。また、MasterServer20は、グループ毎に、グループに属するAreaServerのうち、1つのAreaServerをGroupServerグループサーバに任命する。図1においては、MasterServer20は、Group1についてはAreaServer30-2を、Group2についてはAreaServer30-5を、Group3についてはAreaServer30-8を、GroupServerに任命したものとする。また、MasterServer20は、分散システム1において管理されるUserTableおよびMetaTableに含まれる複数のRowを各RowのKeyRowKeyに応じて昇順にソートし、その複数のRowのKey範囲をグループ数でほぼ等分となるように分割する。図1においては、Key範囲がKey1~Key300であるとすると、グループ数は3であるため、MasterServer20は、Key範囲を、Key1~Key100と、Key101~Key200と、Key201~Key300とに分割する。さらに、MasterServer20は、GroupServerに任命したAreaServer以下、GroupServerと称するのIPアドレスの順に、グループ間でKey範囲の連続性が保持されるように、各グループのGroupServerに担当のKey範囲を割り当て、割り当てたKey範囲および同じグループに属するAreaServerを通知する。具体的には、MasterServer20は、GroupServer30-2,30-5,30-8のうち、最も上位IPアドレスが最も小さいのGroupServer30-2に、担当のKey範囲がKey1~Key100であり、同じグループGroup1に属するAreaServerがAreaServer30-1,30-3である旨を通知する。また、MasterServer20は、GroupServer30-2の次に上位のGroupServer30-5に、担当のKey範囲がKey101~Key200であり、同じグループGroup2に属するAreaServerがAreaServer30-4,30-6である旨を通知する。また、MasterServer20は、GroupServer30-5の次に上位のGroupServer30-8に、担当のKey範囲がKey201~Key300であり、同じグループGroup3に属するAreaServerがAreaServer30-7,30-9である旨を通知する。また、MasterServer20は、各グループのGroupServerの担当のKey範囲とそのGroupServerのIPアドレスとを対応させたGroupリストを記憶する。なお、本実施形態においては、説明の便宜上、IPアドレスの小さいServerを上位とし、IPアドレスの大きいServerを下位として説明する。GroupServer30-2は、担当のKey範囲Key1~Key100および同じグループGroup1に属するAreaServerAreaServer30-1,30-3が通知されると、通知されたRowのKey範囲を、Group1に属するAreaServerの数でほぼ等分となるように分割する。図1においては、担当のKey範囲がKey1~Key100であり、Group1に属するAreaServerの数は3であるため、GroupServer30-2は、Key範囲を、Key1~Key30と、Key31~Key60と、Key61~Key100と、に分割する。さらに、GroupServer30-2は、Group1に属するAreaServerのIPアドレスの順に、管理するAreaに含まれるRowのKey範囲の連続性が各AreaServer間で保持されるように、各AreaServerにAreaを管理させる。具体的には、GroupServer30-2は、Group1に属するAreaServerのうち、最も上位IPアドレスが最も小さいのAreaServer30-1に、Key範囲がKey1~Key30であるRowを含むAreaを管理させる。また、GroupServer30-2は、自身がAreaServer30-1の次に上位のAreaServerであるため、Key範囲がKey31~Key60であるRowを含むAreaを管理する。また、GroupServer30-2は、自身の次に上位のAreaServer30-3に、Key範囲がKey61~Key100であるRowを含むAreaを管理させる。また、GroupServer30-2は、Group1に属する各AreaServerが管理するAreaに含まれるRowのKey範囲とそのAreaServerのIPアドレスとを対応させたAreaServerリストを記憶する。また、GroupServer30-2は、Group1に属する全てのAreaServerで管理されているAreaの数の合計自グループ管理エリア数を、GroupServer30-2の次にIPアドレスが小さい1つ上位のGroupServerおよびGroupServer30-2の次にIPアドレスが大きい1つ下位のGroupServer、すなわち、IPアドレスがGroupServer30-2の前後のGroupServerに通知する。また、GroupServer30-2は、IPアドレスが前後のGroupServerから、そのGroupServerが属するグループの全てのAreaServerで管理されているAreaの数の合計他グループ管理エリア数の通知を受ける。なお、図1においては、GroupServer30-2の上位のGroupServerは存在しない。この場合、GroupServer30-2は、自身の1つ下位のGroupServer30-5にのみ、自グループ管理エリア数を通知するとともに、GroupServer30-5からのみ他グループ管理エリア数の通知を受ける。GroupServer30-2は、自グループ管理エリア数およびIPアドレスが前後のGroupServerから通知された他グループ管理エリア数を記憶する。また、GroupServer30-2は、記憶している自グループ管理エリア数および他グループ管理エリア数に基づき、Group1へのAreaの偏りの程度を求め、求めた偏りの程度が所定の閾値を超えている場合には、他グループ管理エリア数の通知を受けたGroupServerが属するグループのAreaServerに、Group1に属するAreaServerで管理されているAreaの再配置を行う。GroupServer30-5、GroupServer30-8については、GroupServer30-2と比較して、属するグループが異なるだけなので、説明を省略する。AreaServer30-1は、Key範囲がKey1~Key30であるRowを含むArea3を記憶する。また、AreaServer30-1は、データの追加などにより管理しているAreaのRow数が増加し、そのAreaのサイズが所定の閾値に達すると、そのAreaの分割を行う。また、AreaServer30-1は、自身が管理するAreaの数自サーバ管理エリア数を、Group1に属し、自身の次にIPアドレスが小さい1つ上位のAreaServerおよび自身の次にIPアドレスが大きい1つ下位のAreaServer、すなわち、IPアドレスが自身の前後のAreaServerに通知する。また、AreaServer30-1は、IPアドレスが自身の前後のAreaServerから、そのAreaServerで管理されているAreaの数他サーバ管理エリア数の通知を受ける。なお、図1においては、AreaServer30-1の上位のAreaServerは存在しない。この場合、AreaServer30-1は、自身の1つ下位のAreaServer30-2にのみ、自グループ管理エリア数を通知するとともに、AreaServer30-2からのみ他グループ管理エリア数の通知を受ける。AreaServer30-1は、自エリア管理エリア数およびIPアドレスが前後のAreaServerから通知された他サーバ管理エリア数を記憶する。また、AreaServer30-1は、記憶している自サーバ管理エリア数および他サーバ管理エリア数に基づき、自身へのAreaの偏りの程度を求め、求めた偏りの程度が所定の閾値を超えている場合には、他サーバ管理エリア数の通知を受けたAreaServerに、自身が管理するAreaの再配置を行う。なお、AreaServer30-2~30-9については、AreaServer30-1と比較して、管理するAreaに含まれるRowのKey範囲が異なるだけなので、説明を省略する。図1に示す分散システム1において、Key20を指定したデータ処理の要求がクライアント10に入力されたとする。クライアント10は、MasterServer20にアクセスし、MasterServer20で記憶されているGroupリストを参照して、Key20を担当範囲とするGroupServer30-2のIPアドレスを取得する。次に、クライアント10は、GroupServer30-2にアクセスし、GroupServer30-2で記憶されているAreaServerリストを参照して、Key20のRowを含むAreaを管理するAreaServer30-1のIPアドレスを取得する。次に、クライアント10は、AreaServer30-1にアクセスして、Key20に対応するデータを取得し、データ処理を行う。なお、クライアント10が、一度データを取得したAreaServerのロケーションを記憶するキャッシュCache機能を有しており、Key20に対応するデータを既に取得したことがある場合には、MasterServer20、GroupServer30-2への問い合わせを行わず、直接、AreaServer30-1にアクセスしてデータ処理を行うことも可能である。次に、MasterServer20、AreaServer30-1~30-9、および、GroupServer30-2,30-5,30-8の構成について説明する。なお、以下では、AreaServer30-1~30-9を区別しない場合には、AreaServer30Aと称し、GroupServer30-2,30-5,30-8を区別しない場合には、GroupServer30Gと称する。また、クライアント10の構成は当業者にとってよく知られており、また、本発明と直接関係しないので、説明を省略する。まず、MasterServer20の構成について、図2を参照して説明する。図2に示すMasterServer20は、通信部201と、Disk領域202と、制御部203と、を有する。通信部201は、ネットワークを介して、クライアント10および各AreaServer30Aと通信を行う。Disk領域202は、プロパティファイルおよびGroupリストなどが記憶される記憶領域である。プロパティファイルには、各AreaServer30AのロケーションIPアドレスの一覧、Group数、各GroupServer30Gの担当のKey範囲の初期値などが含まれる。図3は、Groupリストの構成を示す図である。図3に示すように、Groupリストとして、GroupServer30GのロケーションIPアドレスと、そのGroupServer30Gが担当するKey範囲のうち最も小さいKeyであるStartRowKeyと、そのGroupServer30Gが担当するKey範囲のうち最も大きいKeyであるStopRowKeyと、が対応付けて記憶される。したがって、図3においては、例えば、IPアドレスが10.0.0.2であるGroupServer30-2の担当のKey範囲が、Key1~Key100であることを示す。なお、データの追加が行われる場合には、StrartKey<そのデータValueとペアのKey≦StopKeyとなるKey範囲に対応付けられたGroupServer30Gが担当となる。再び、図2を参照すると、制御部203は、稼働中のAreaServer30AのロケーションIPアドレスのリストを記憶するメモリ領域204を有する。また、制御部203は、稼働中のAreaServer30AのIPアドレスの順に、IPアドレスが前後する複数のAreaServer30Aを1つのグループとしてグループ分けを行うとともに、グループ毎に1つのAreaServer30AをGroupServerに任命する。ここで、制御部203は、同じグループに属するAreaServer30Aのうち、ロケーションが中間のAreaServer30AをGroupServer30Gに任命する。同じグループに属するAreaServer30Aのうち、ロケーションが最上位、あるいは、最下位IPアドレスが最小あるいは最大のAreaServer30AをGroupServer30Gに任命すると、Group間でのArea再配置の際に、一時的にそのAreaServer30Aの負荷が高くなる可能性がある。そこで、ロケーションが中間のAreaServer30AをGroupServer30Gに任命することで、Group間でのArea再配置の際にも、特定のAreaServer30Aの負荷が高くなることを防ぐことができる。なお、制御部203は、同じグループに属するAreaServer30Aのうち、ロケーションが中間のAreaServer30Aが複数ある場合には、ランダムに、あるいは、所定の規則IPアドレスの小さいほう、IPアドレスの大きいほうなどに従い、1つのAreaServer30AをGroupServer30Gに任命する。また、制御部203は、グループ毎に、担当のKey範囲を決定し、各グループのGroupServer30Gのロケーションと、そのGroupServer30Gの担当のKey範囲のStartRowKeyおよびStopRowKeyと、をDisk領域202のGroupリストに書き込む。また、制御部203は、各グループのGroupServer30Gに、担当のKey範囲およびそのグループに属するAreaServerを通信部301を介して通知する。次に、AreaServer30Aの構成について、図4を参照して説明する。図4に示すAreaServer30Aは、通信部301と、Disk領域302と、制御部303と、を有する。また、制御部303は、メモリ領域304と、メモリ領域305と、Area分割部306と、Area再配置部307と、を有する。通信部301は、ネットワークを介して、クライアント10、MasterServer20、および、他のAreaServer30Aと通信を行う。Disk領域302は、プロパティファイルおよびAreaリストが記憶される記憶領域である。プロパティファイルには、AreaServer30Aが管理するAreaの数を他のAreaServer30Aに通知する通知頻度、AreaServer30AへのAreaの偏りの程度の閾値、および、Area再配置を行うと判定する、Areaの偏りの程度が閾値を越えた状態の持続時間偏り持続時間が含まれる。図5は、Areaリストの構成を示す図である。なお、図5は、Key範囲がKey1~Key30であるRowを含むAreaを管理するAreaServer30-1のDisk領域302に記憶されるAreaリストの構成を示す図である。図5に示すように、Areaリストとして、AreaのArea名と、そのAreaに含まれるRowのKey範囲のうち最も小さいKeyであるStartRowKeyと、そのAreaに含まれるRowのKey範囲のうち最も大きいKeyであるStopRowKeyと、が対応付けて記憶される。Areaリストにおいては、各AreaのArea名は、そのAreaに含まれるRowのKey範囲で昇順にソート済みである。そのため、2分探索などにより高速な探索が可能な状態となっている。データの追加が行われる場合には、そのデータをValueとするRowの格納先は、StartKey<そのRowのKey≦StopKeyとなるAreaが選択される。ここで、Keyの大小は、辞書順の大小で比較される。したがって、例えば、Keyが、Key10abc>Key10であるRow、あるいは、Keyが、Key15であるRowは、Area2に格納される。再び、図4を参照すると、制御部303は、所定のイベントを契機として、通信部301を介して、AreaServer30Aで管理されているAreaの数自サーバ管理エリア数を、AreaServer30Aと同じグループに属し、AreaServer30Aの次にIPアドレスが小さい1つ上位のAreaServer30AおよびAreaServer30Aの次にIPアドレスが小さい1つ下位のAreaServer30A、すなわち、IPアドレスがAreaServer30Aの前後のAreaServer30Aに通知する。なお、制御部303は、プロパティファイルに記憶されている通知頻度で、あるいは、IPアドレスが前後のAreaServer30Aで管理されているAreaの数他サーバ管理エリア数が通知された際の応答として、自サーバ管理エリア数を通知する。制御部303は、自サーバ管理エリア数およびIPアドレスがAreaServer30Aの前後のAreaServer30Aから通知された他サーバ管理エリア数を記憶する。さらに、制御部303は、自サーバ管理エリア数およびIPアドレスが前後のAreaServer30Aから通知された他サーバ管理エリア数に基づき、その他サーバ管理エリア数の通知を受けたAreaServer30Aに対するAreaServer30AへのAreaの偏りの程度を求め、その偏りの程度が閾値を超えている場合には、その他サーバ管理エリア数の通知を受けたAreaServer30AにAreaの再配置を行う。以下、制御部303の各ブロックについて説明する。メモリ領域304には、自サーバ管理エリア数、および、AreaServer30Aと同じグループに属し、IPアドレスがAreaServer30Aの前後のAreaServer30Aから通知された他サーバ管理エリア数が記憶される。図6は、メモリ領域304の構成を示す図である。なお、図6は、AreaServer30-2のメモリ領域304の構成を示す図である。図6に示すように、メモリ領域304においては、AreaServer30-2の次にIPアドレスが小さい1つ上位のAreaServer30-1IPアドレス:10.0.0.1から通知された、AreaServer30-1が管理するAreaの数と、AreaServer30-1に対するAreaServer30-2へのAreaの偏りの程度がプロパティファイルに記憶されている閾値以上となった状態の持続時間と、AreaServer30-2が現在管理しているAreaの数と、AreaServer30-2が前回通知したAreaの数と、AreaServer30-2の次にIPアドレスが大きい1つ下位のAreaServer30-3IPアドレス:10.0.0.3から通知された、AreaServer30-3が管理するAreaの数と、AreaServer30-3に対するAreaServer30-2へのAreaの偏りの程度がプロパティファイルに記憶されている閾値以上となった状態の持続時間と、が記憶される。なお、例えば、Group1内には、AreaServer30-1よりも上位のAreaServerは存在しない。この場合、AreaServer30-1のメモリ領域304においては、図7に示すように、上位のAreaServerから通知されたAreaの数として、特別な値、例えば、負値-1などあるいはNULLなどが設定される。再び、図4を参照すると、メモリ領域305には、図8に示すように、AreaServer30Aが属するGroup1のGroupServer30-2およびMasterServer20のロケーションIPアドレスが記憶される。Area分割部306は、AreaServer30Aで管理されているAreaのサイズを監視し、Areaのサイズが所定の閾値に達すると、そのAreaを2つのAreaに分割する。Area再配置部307は、IPアドレスがAreaServer30Aの前後のAreaServer30Aから他サーバ管理エリア数の通知を受けると、自サーバ管理エリア数および通知された他サーバ管理エリア数に基づき、その他サーバ管理エリア数の通知を受けたAreaServer30Aに対するAreaServer30AへのAreaの偏りの程度を求め、求めたAreaの偏りの程度がプロパティファイルに記憶されている偏りの程度の閾値を超えているかを判定する。また、Area再配置部307は、他サーバ管理エリア数の通知を受けたAreaServer30Aに対するAreaServer30AへのAreaの偏りの程度が閾値を越えている場合には、AreaServer30AへのAreaの偏りの程度が閾値を超える状態の持続時間が、プロパティファイルに記憶されている偏り持続時間を越えたか否かを判定する。AreaServer30AへのAreaの偏りの程度が閾値を越える状態の持続時間が偏り持続時間を越えると、Area再配置部307は、その他サーバ管理エリア数の通知を受けたAreaServer30AにAreaの再配置を行う。次に、GroupServer30Gの構成について、図9を参照して説明する。なお、上述したように、GroupServer30Gは、AreaServer30Aの中から任命される。したがって、GroupServer30Gは、上述したAreaServer30Aが有する構成を全て包含する。そのため、図9においては、図4と同様の構成については同じ符号を付し、説明を省略する。Disk領域302は、プロパティファイル、Areaリストに加えて、AreaServerリストを記憶している。図10は、AreaServerリストの構成を示す図である。なお、図10は、GroupServer30-2のDisk領域302に記憶されるAreaServerリストの構成を示す図である。図10に示すように、AreaServerリストとして、Group1に属するAreaServer30Aごとに、そのAreaServer30AのロケーションIPアドレスと、そのAreaServer30Aが管理するAreaに含まれるRowの中で最も小さいKeyであるStartRowKeyと、そのAreaServer30Aが管理するAreaに含まれるRowの中で最も大きいKeyであるStopRowKeyと、が対応付けて記憶される。AreaServerリストにおいては、各AreaServer30Aのロケーションに応じて昇順にソート済みである。そのため、2分探索などにより高速な探索が可能な状態となっている。データの追加が行われる場合には、そのデータをValueとするRowの格納先は、StartKey<そのRowのKey≦StopKeyとなるAreaが選択される。ここで、Keyの大小は、辞書順の大小で比較される。したがって、例えば、Keyが、Key30abc>Key30であるRow、あるいは、Keyが、Key60であるRowは、AreaServer30-2IPアドレス:10.0.0.2が管理先として選択される。再び、図9を参照すると、制御部303は、同じグループに属する全てのAreaServer30AからそのAreaServer30Aが管理するAreaの数を取得し、所定のイベントを契機として、通信部301を介して、取得したAreaの数の合計自グループ管理エリア数を、GroupServer30Gの次にIPアドレスが小さい1つ上位のGroupServer30GおよびGroupServer30Gの次にIPアドレスが大きい1つ下位のGroupServer30G、すなわち、IPアドレスがGroupServer30Gの前後のGroupServer30Gに通知する。なお、制御部303は、プロパティファイルに記憶されている通知頻度で、あるいは、IPアドレスがGroupServer30Gの前後のGroupServer30Gから、そのGroupServerが属するグループの全てのAreaServer30Aで管理されているAreaの数の合計他グループ管理エリア数が通知された際の応答として、自グループ管理エリア数を通知する。制御部303は、自グループ管理エリア数および通知された他グループ管理エリア数を記憶領域401に記憶させる。図11は、記憶領域401の構成を示す図である。なお、図11は、GroupServer30-5のメモリ領域401の構成を示す図である。図11に示すように、記憶領域401においては、AreaServer30-5の次にIPアドレスが小さい1つ上位のGroupServer30-2IPアドレス:10.0.0.2から通知されたAreaの数と、GroupServer30-5が属するグループの全てのAreaServer30Aで管理されているAreaの数と、AreaServer30-5の次にIPアドレスが大きい1つ下位のAreaServer30-8から通知されたAreaの数と、が記憶される。ここで、例えば、GroupServer30-2よりも上位のGroupServerは存在しない。この場合、GroupServer30-2のメモリ領域401においては、図12に示すように、上位のGroupServerから通知されたAreaの数として、特別な値、例えば、負値-1などあるいはNULLなどが設定される。再び、図9を参照すると、制御部303は、IPアドレスがGroupServer30Gの前後のGroupServer30Gから他グループ管理エリア数が通知を受けると、自グループ管理エリア数および通知された他サーバ管理エリア数に基づき、その他グループ管理エリア数の通知を受けたGroupServer30Gが属するグループに対するGroupServer30Gが属するグループへのAreaの偏りの程度を求め、その偏りの程度が閾値を超えている場合には、その他グループ管理エリア数の通知を受けたGroupServer30Gが属するグループのAreaServer30Aに、GroupServer30Gが属するグループのAreaServer30で管理されているAreaの再配置を行う。次に、本実施形態の分散システム1の動作について説明する。まず、Group内でのArea再配置時の動作について説明する。図13は、AreaServer30-1~30-3が属するGroup1内でのArea再配置時の動作を示す図である。図13においては、AreaServer30-1~30-3のDisk領域302のプロパティファイルには、自サーバ管理エリア数の通知頻度として、自サーバ管理エリア数が前回の通知時から50増加した場合に他のAreaServerに通知を行い、Areaの偏りの程度の閾値を自グループ管理エリア数の20とし、偏り状態の持続時間として、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているものとする。また、以下では、AreaServer30-1IPアドレス:10.0.0.1が管理するAreaの数は790であり、AreaServer30-2IPアドレス:10.0.0.2が管理するAreaの数は950であり、AreaServer30-3IPアドレス:10.0.0.3が管理するAreaの数は900であるとする状態1。以下では、AreaServer30-2を構成する各部の動作を中心に説明を行う。状態1において、AreaServer30-2の通信部301を介した自サーバ管理エリア数、および、Group1に属し、IPアドレスがAreaServer30-2の前後のAreaServer30-1,30-3が管理するAreaの数の通知が行われ、AreaServer30-1~30-3それぞれが管理するAreaの数がAreaServer30-2のメモリ領域304に記憶される。状態2において、AreaServer30-2の自サーバ管理エリア数が50増加したとする。プロパティファイルには、自サーバ管理エリア数が50増加した場合に通知を行う旨が記憶されているので、AreaServer30-2の通信部301は、自サーバ管理エリア数1000をAreaServer30-1,30-3に通知する。また、通信部301は、その通知に応じて、AreaServer30-1,30-3から、各AreaServerが管理するAreaの数の通知を受ける。ここでは、AreaServer30-1から通知されたAreaの数は790であり、AreaServer30-3から通知されたAreaの数は900であるとする。AreaServer30-2のメモリ領域304には、AreaServer30-1~30-3のそれぞれが管理するAreaの数が記憶される。次に、AreaServer30-2のArea再配置部307は、自サーバ管理エリア数とAreaServer30-1,30-3から通知されたAreaの数との差が偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自サーバ管理エリア数の20を偏りの程度の閾値とする旨が記憶されている。自サーバ管理エリア数は1000であるため、偏りの程度の閾値は200となる。したがって、Area再配置部307は、自サーバ管理エリア数とAreaServer30-1,30-3から通知されたAreaの数との差が、200を超えるか否かを判定する。上述したように、AreaServer30-1から通知されたAreaの数は790であるので、自サーバ管理エリア数との差は210となる。また、AreaServer30-3から通知されたAreaの数は900であるので、自サーバ管理エリア数との差は100となる。自サーバ管理エリア数とAreaServer30-1から通知されたAreaの数との差が偏りの程度の閾値である200を超えるので、Area再配置部307は、メモリ領域304にAreaServer30-1に対するAreaServer30-2へのAreaの偏り程度が閾値以上となった状態の持続時間として1を記憶させる。状態3において、自サーバ管理エリア数がさらに50増加したとすると、通信部301は、自サーバ管理エリア数1050をAreaServer30-1,30-3に通知する。また、通信部301は、その通知に応じて、AreaServer30-1,30-3から、各AreaServerが管理するAreaの数の通知を受ける。ここでは、AreaServer30-1から通知されたAreaの数は800であり、AreaServer30-3から通知されたAreaの数は950であるとする。メモリ領域304には、AreaServer30-1~30-3のそれぞれが管理するAreaの数が記憶される。次に、Area再配置部307は、自サーバ管理エリア数とAreaServer30-1,30-3から通知されたAreaの数との差が、偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自サーバ管理エリア数の20を偏りの程度の閾値とする旨が記憶されており、自サーバ管理エリア数は1050であるため、偏りの程度の閾値は210となる。したがって、Area再配置部307は、自サーバ管理エリア数とAreaServer30-1,30-3から通知されたAreaの数との差が、210を超えるか否かを判定する。上述したように、AreaServer30-1から通知されたAreaの数は800であるので、自サーバ管理エリア数との差は250となる。また、AreaServer30-3から通知されたAreaの数は950であるため、自サーバ管理エリア数との差は100となる。自サーバ管理エリア数とAreaServer30-1から通知されたAreaの数との差が偏りの程度の閾値である210を超えるので、Area再配置部307は、メモリ領域304に記憶されている、AreaServer30-1に対するAreaServer30-2へのAreaの偏りの程度が閾値以上となった状態の持続時間を1から2に更新する。上述したように、プロパティファイルには、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているので、Area再配置部307は、AreaServer30-1をAreaの再配置先と決定し、AreaServer30-2で管理されているAreaのうち、所定数のAreaのAreaServer30-1への再配置を行う。ここで、Area再配置部307は、例えば、自サーバ管理エリア数とAreaServer30-1から通知されたAreaの数との差が250であるので、その半分、すなわち、125だけAreaをAreaServer30-1に再配置する状態4。その結果、AreaServer30-1が管理するAreaの数とAreaServer30-2が管理するAreaの数とは同数となり、AreaServer30-2の負荷が分散される。また、Area再配置部307は、各AreaServer30Aで管理されるAreaに含まれるRowのKey範囲の連続性が保持されるようにAreaの再配置を行う。ここで、上述したように、AreaServer30-1は、Key範囲がKey1~Key30のRowを含むAreaを管理し、AreaServer30-2は、Key範囲がKey31~Key60のRowを含むAreaを管理している。この場合、AreaServer30-2のArea再配置部307は、AreaServer30-1をAreaの再配置先と決定すると、AreaServer30-2で管理されているAreaのうち、RowのKeyの値が小さいAreaから順に所定数のAreaの再配置を行う。そのため、Areaの再配置後においても、各AreaServer30Aが管理するAreaのKey範囲は連続しているため、AreaServerリストにおいて、AreaServer30Aごとのエントリ数は1つでよい。そのため、AreaServerリストのサイズが増大するのを抑制することができる。また、上述したように、Areaの再配置先をIPアドレスが前後のAreaServer30Aとすることで、図24に示したように、MasterServer20がAreaの再配置先のAreaServerを探し必要がなくなり、MasterServer20の負荷を低減することができる。次に、Group間でのArea再配置時の動作について説明する。図14は、Group間でのArea再配置時の動作を示す図である。なお、図14においては、GroupServer30-2,30-5,30-8のDisk領域302のプロパティファイルには、通知頻度として、自グループ管理エリア数が前回の通知時から200増加した場合に他のGroupServerへの通知を行い、Areaの偏りの程度の閾値を自グループ管理エリア数の20とし、偏り状態の持続時間として、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているものとする。また、以下では、Group1に属するAreaServer30-1~30-3で管理されているAreaの数の合計が2100であり、Group2に属するAreaServer30-4~30-6で管理されているAreaの数の合計が2500であり、Group3に属するAreaServer30-7~30-9で管理されているAreaの数の合計が2500であるとする状態1。以下では、GroupServer30-5AreaServer30-5を構成する各部の動作を中心に説明を行う。状態1において、GroupServer30-5の通信部301を介した自グループ管理エリア数、および、Group13の各々に属する全てのAreaServer30Aで管理されているAreaの数の合計の通知が行われ、各Groupに属するすべてのAreaServer30Aで管理されているAreaの数の合計がGroupServer30-2のメモリ領域304に記憶される。状態2において、自グループ管理エリア数が200増加したとする。プロパティファイルには、自グループ管理エリア数が200増加した場合に通知を行う旨が記憶されているので、GroupServer30-5の通信部301は、自グループ管理エリア数2700を、GroupServer30-2,30-8に通知する。また、通信部301は、その通知に応じて、GroupServer30-2からはGroup1に属する全てのAreaServer30Aで管理されているAreaの数の合計を通知され、GroupServer30-8からはGroup3に属する全てのAreaServer30Aで管理されているAreaの数の合計を通知される。ここでは、GroupServer30-2から通知されたAreaの数は2150であり、GroupServer30-8から通知されたAreaの数は2500であるとする。GroupServer30-5のメモリ領域304には、Group1~Group3に属する各AreaServerで管理されているAreaの数の合計が記憶される。次に、GroupServer30-5のArea再配置部307は、自グループ管理エリア数とGroupServer30-2,30-8から通知されたAreaの数との差が偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自グループ管理エリア数の20を偏りの程度の閾値とする旨が記載されている。自グループ管理エリア数は2700であるため、偏りの程度の閾値は540となる。したがって、Area再配置部307は、自グループ管理エリア数とGroupServer30-2,30-8から通知されたAreaの数との差が、540を超えるか否かを判定する。上述したように、GroupServer30-2から通知されたAreaの数は2150であるので、自グループ管理エリア数との差は550となる。また、GroupServer30-8から通知されたAreaの数は2500であるので、自グループ管理エリア数との差は200となる。自グループ管理エリア数とGroupServer30-2から通知されたAreaの数との差が偏りの程度の閾値である540を超えるので、Area再配置部307は、メモリ領域304にGroup1に対するGroup2へのAreaの偏りの程度が閾値以上となった状態の持続時間として1を記憶させる。状態3において、自グループ管理エリア数がさらに200増加したとすると、通信部301は、自グループ管理エリア数2900をGroupServer30-2,30-8に通知する。また、通信部301は、その通知に応じて、GroupServer30-2からはGroup1に属する全てのAreaServer30Aで管理されているAreaの数の合計を通知され、GroupServer30-8からはGroup3に属する全てのAreaServer30Aで管理されているAreaの数の合計を通知される。ここでは、GroupServer30-2から通知されたAreaの数は2200であり、GroupServer30-8から通知されたAreaの数は2500であるとする。GroupServer30-5のメモリ領域304には、Group1~Group3に属する全てのAreaServerで管理されているAreaの数の合計が記憶される。次に、Area再配置部307は、自グループ管理エリア数とGroupServer30-2,30-8から通知されたAreaの数との差が偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自グループ管理エリア数の20とする旨が記載されており、自グループ管理エリア数は2900であるため、偏りの程度の閾値は580となる。したがって、Area再配置部307は、自グループ管理エリア数と、GroupServer30-2,30-8から通知されたAreaの数との差が、580を超えるか否かを判定する。上述したように、GroupServer30-2から通知されたAreaの数は2200であるので、自グループ管理エリア数との差は700となる。また、GroupServer30-8から通知されたAreaの数は2500であるので、自グループ管理エリア数との差は400となる。自グループ管理エリア数とGroupServer30-2から通知されたAreaの数との差が偏りの程度の閾値である580を超えるので、Area再配置部307は、メモリ領域304に記憶されている、Group1に対するGroup2へのAreaの偏りの程度が閾値以上となった状態の持続時間を1から2に更新する。上述したように、プロパティファイルには、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているので、Area再配置部307は、Group2に属するAreaServerで管理されているAreaのGroup1に属するAreaServerへの再配置を行うと決定し、Group2に属するAreaServerで管理されているAreaのうち、所定数のAreaのGroup1に属するAreaServerへの再配置を行う。ここで、Area再配置部307は、例えば、自グループ管理エリア数とGroupServer30-2から通知されたAreaの数との差が700であるので、その半分、すなわち、350だけAreaをGroup1に属するAreaServerに再配置する状態4。その結果、Group2に属する各AreaServerで管理されているAreaの数の合計とGroup1に属する各AreaServerで管理されているAreaの数の合計とは同数となり、Group2に属する各AreaServerの負荷が分散される。また、Area再配置部307は、各グループの担当のKey範囲の連続性が保持されるようにAreaの再配置を行う。ここで、上述したように、Group1に属するGroupServer30-2の担当のKey範囲はKey1~Key100であり、Group2に属するGroupServer30-5の担当のKey範囲はKey101~Key200である。この場合、GroupServer30-5のArea再配置部307は、Group1に属するAreaServerへの再配置を行うと決定すると、Group2に属する各AreaServerで管理されているAreaのうち、Rowの値が小さいAreaから順に所定数のAreaの再配置を行う。そのため、Areaの再配置後においても、各グループのGroupServer30Gが担当するKey範囲は連続しているため、GroupServerリストにおいて、GroupServer30Gごとのエントリ数は1つでよい。そのため、GroupServerリストのサイズが増大するのを抑制することができる。次に、AreaServer起動時のMasterServer20の動作について説明する。図15は、AreaServer30Aの起動時のMasterServer20の動作を示すシーケンス図である。AreaServer30Aの起動時には、ネットワークを介してサーバ間で通信を行うための分散ロックシステムなどにより、MasterServer20にAreaServer30Aが起動プロセスを開始した旨が通知される。MasterServer20は、Disk領域202に記憶されているプロパティファイルから全AreaServer30Aのロケーション一覧、および、Group数を読み込むステップS101。次に、MasterServer20は、AreaServer30Aから起動プロセスを開始した旨が通知されると、自身の稼働を知らせる稼動通知をそのAreaServer30Aに行うとともに、分散システムにおいて担当するAreaを復元する旨を依頼する再開依頼を行うステップS102。次に、MasterServer20は、読み込んだGroup数だけGroupリストにエントリを作成する。また、MasterServer20は、管理するTableに含まれるRowのKey範囲をグループ数でほぼ等分となるように分割する。次に、MasterServer20は、稼働中のAreaServer30Aを読み込んだグループ数のグループにグループ分けを行う。また、MasterServer20は、グループ毎に、そのグループに属するAreaServer30Aのうち、1つのAreaServer30AをGroupServerと決定するステップS103。上述したように、同じグループに属するAreaServer30Aのうち、中間のロケーションに位置するAreaServer30AIPアドレスが最大または最小ではないAreaServer30AがGroupServerに任命される。そのため、Group間でのArea再配置が行われる場合にも、特定のAreaServer30Aの負荷が高くなるのを防ぐことができる。図15においては、MasterServer20は、同じグループに属するAreaServer30-1~30-3のうち、AreaServer30-2をGroupServerに決定したとする。MasterServer20は、AreaServer30-2にAreaServer30-1~30-3が属するグループのGroupServerに任命した旨を通知するステップS104また、MasterServer20は、グループ数でほぼ等分となるように分割したKey範囲のうち、そのグループの担当のKey範囲をGroupServerに任命したAreaServer30-2に通知する。グループのGroupServerに任命されたAreaServer30-2は、そのグループに属するAreaServer30Aの数だけAreaServerリストにエントリを作成する。また、AreaServer30-2は、MasterServer20から通知されたKey範囲をそのグループに属するAreaServer30Aの数でほぼ等分し、各AreaServer30Aに分割したKey範囲のRowを含むAreaを管理させる。系全体が起動すると、MasterServer20は、分散ロックシステムなどにより、AreaServer30A、GroupServer30Gの死活監視を行う。図16は、クライアント10のデータ参照時の動作を示すシーケンス図である。なお、図16においては、クライアント10は、キャッシュ機能を有しているものとする。また、図16においては、URLUniformResourceLocatorがhttpwwwgoonejpTH3のWebコンテンツを収集日時によらず全て取得する旨がクライアント10に入力されたとする。この場合、クライアント10は、例えば、図17に示すAPIApplicationProgramInterfaceを発行する。まず、クライアント10は、図17に示すAPIにおけるRowKeyの値setrowKey関数に指定されたURL情報に対応するキャッシュを記憶しているか否かを判定するステップS201。RowKeyの値に対応するキャッシュを記憶している場合には、クライアント10は、直接、そのキャッシュに示されるロケーションのAreaServer30Aに直接アクセスし、所望のデータを取得する。RowKeyの値に対応するキャッシュを記憶していない場合には、クライアント10は、MasterServer20、GroupServer30G、AreaServer30Aの順にロケーション解決を行い、所望のデータを取得する。具体的には、まず、クライアント10は、図17に示すAPIにおけるRowKeyの値を担当のKey範囲とするGroupServer30Gのロケーションの取得要求をMasterServer20に行うステップS202。次に、クライアント10は、RowKeyの値をキーとして、MasterServer20で記憶されているGroupリスト昇順でソート済みのStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするGroupServer30Gのロケーションを2分探索により取得する。次に、クライアント10は、ロケーションを取得したGroupServer30Gに、APIにおけるRowKeyの値を担当のKey範囲とするAreaServer30Aのロケーションの取得要求を行うステップS203。次に、クライアント10は、RowKeyの値をキーとして、GroupServer30Gで記憶されているAreaServerリスト昇順でソート済みのStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするAreaServer30Aののロケーションを2分探索により取得する。次に、クライアント10は、ロケーションを取得したAreaServer30Aにデータの取得要求を行いステップS204、所望のデータを取得する。図18は、クライアント10のデータ更新時の動作を示すシーケンス図である。なお、図18においては、クライアント10は、キャッシュ機能を有しているものとする。また、図18においては、Table1にURLがhttpwwwgoonejpTH3のWebコンテンツを格納する旨がクライアント10に入力されたとする。この場合、クライアント10は、例えば、図19に示すAPIApplicationProgramInterfaceを発行する。まず、クライアント10は、図19に示すAPIにおけるRowKeyの値に対応するキャッシュを記憶しているか否かを判定するステップS301。RowKeyの値に対応するキャッシュを記憶している場合には、クライアント10は、直接、そのキャッシュに示されるロケーションのAreaServer30Aに直接アクセスし、所望のデータを取得する。RowKeyの値に対応するキャッシュを記憶していない場合には、クライアント10は、MasterServer20、GroupServer30G、AreaServer30Aの順にロケーション解決を行い、Table1へのデータの格納を行う。具体的には、まず、クライアント10は、図19に示すAPIにおけるRowKeyの値を担当のKey範囲とするGroupServer30Gのロケーションの取得要求をMasterServer20に行うステップS302。次に、クライアント10は、RowKeyの値をキーとして、MasterServer20で記憶されているGroupリスト昇順でソート済みのStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするGroupServer30Gのロケーションを2分探索により取得する。次に、クライアント10は、ロケーションを取得したGroupServer30Gに、APIにおけるRowKeyの値を担当のKey範囲とするAreaServer30Aのロケーションの取得要求を行うステップS303。次に、クライアント10は、RowKeyの値をキーとして、GroupServer30Gで記憶されているAreaServerリスト昇順でソート済みのStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするAreaServer30Aののロケーションを2分探索により取得する。次に、クライアント10は、ロケーションを取得したAreaServer30Aにデータの更新要求を行いステップS304、そのAreaServer30Aで管理されている、Table1の所定のAreaにデータを追加で格納する。この結果、Table1には、RowKeyの値がhttpwwwgoonejpTH3、Column名がcontents、タイプスタンプが201102071300、Valueが<html><html>の1レコードがひとまとまりでTable1に追加される。なお、例えば、Group1aaff、Group2ggkk、というように各グループが担当するRowKeyの値の範囲をMasterServer20のプロパティファイルに予め記憶させておくことで、データの初期投入時などに特定のAreaServer30Aに負荷が偏るのを防ぐことができる。次に、Area分割時のAreaServe30Aの動作について説明する。図20は、Area分割時のAreaServer30Aの動作を示すシーケンス図である。AreaServer30AのArea分割部306は、AreaServer30Aで管理されているAreaのサイズを監視し、Areaのサイズが所定の閾値を超えると、そのAreaを2つのAreaに分割する。ここで、Area分割部306は、Area3AとArea3Bとのサイズがほぼ等しくなるようなRowKeyを選択して分割を行う。次に、AreaServer30Aの通信部301は、AreaServer30Aで管理されているAreaの数が、前回の通知時からDisk領域302に記憶されているプロパティファイルに含まれる通知頻度に示される所定数だけ増加したか否かを判定するステップS401。AreaServer30Aで管理されているAreaの数が、前回の通知時から所定数だけ増加している場合には、通信部301は、自サーバ管理エリア数を、同じグループに属し、AreaServer30Aの1つ上位のIPアドレスがAreaServer30Aの次に小さいAreaServer30Aに通知するステップS402。また、通信部301は、1つの上位のAreaServer30Aから、その1つの上位のAreaServer30Aで管理されているAreaの数の通知を受けるステップS403。また、通信部301は、自サーバ管理エリア数を、同じグループに属し、AreaServer30Aの1つ下位のIPアドレスがそのAreaServerの次に大きいAreaServer30Aに通知するステップS404。また、通信部301は、1つの下位のAreaServer30Aから通知、その1つの下位のAreaServer30Aで管理されているAreaの数の通知を受けるステップS405。自サーバ管理エリア数と、1つ上位および1つ下位のAreaServer30Aから通知されたAreaの数とは、AreaServer30Aのメモリ領域304に記憶される。次に、Area再配置時のAreaServer30Aの動作について説明する。図21は、Area再配置時のAreaServer30Aの動作を示すシーケンス図である。なお、図21においては、AreaServer30の自サーバ管理エリア数は1000であり、AreaServer30Aの1つ上位のAreaServer30Aで管理されているAreaの数は800であり、AreaServer30Aの1つ下位のAreaServer30Aで管理されているAreaの数が900であるとする。AreaServer30Aのエリア再配置部307は、1つ上位および1つ下位のAreaServer30Aから、各AreaServer30Aが管理するAreaの数が通知されると、その通知されたAreaの数および自サーバ管理エリア数に基づき、1つ上位および1つ下位のAreaServer30Aに対するAreaServer30AへのAreaの偏りの程度を求める。次に、エリア再配置部307は、求めた1つ上位あるいは1つ下位のAreaServer30Aに対するAreaServer30AへのAreaの偏りの程度が偏りの程度の閾値を超えているか否かを判定する。さらに、エリア再配置部307は、1つ上位あるいは1つ下位のAreaServer30Aに対するAreaServer30AへのAreaの偏りの程度が閾値を超えている場合には、Areaの偏りの程度が閾値を超えている状態の持続時間が、Disk領域302に記憶されているプロパティファイルに含まれる偏り持続時間を越えているか否かを判定する。Areaの偏りの程度が閾値を超えている状態の持続時間が偏り持続時間を越えている場合には、Area再配置部307は、Area再配置が必要であると判定するステップS501。次に、Area再配置部307は、再配置を行うAreaの数およびAreaの再配置先のAreaServer30Aを決定する。ここで、1つ上位のAreaServe30Aで管理されているエリア数が、1つ下位のAreaServer30Aで管理されているエリア数よりも少ないので、Area再配置部307は、1つ上位のAreaServe30AをAreaの再配置先のAreaServer30Aに決定し、例えば、自サーバ管理エリア数と1つ上位のAreaServer30Aで管理されているAreaの数との差200の半分、すなわち、100だけAreaの再配置を行うと決定するステップS502。次に、Area再配置部307は、1つ上位のAreaServer30Aに、決定したAreaの数だけAreaの再配置を行うステップS503。上述したように、1つのAreaServer30Aで管理されているAreaに含まれるRowのKey範囲は連続している。また、各AreaServer30Aで管理されているAreaに含まれるRowのKey範囲は、各AreaServer30AのIPアドレスに順に連続している。ここで、1つ上位のAreaServer30Aで管理されているAreaに含まれるRowのKey範囲が、AreaServer30Aで管理されているAreaに含まれるRowのKey範囲よりも小さいとする。この場合、Area再配置部307は、AreaServer30Aで管理されているAreaのうち、RowのKey範囲が小さい順にAreaの再配置を行う。そのため、Area再配置後も、1つのAreaServer30Aで管理されているAreaに含まれるKey範囲の連続性が保持されるとともに、各AreaServer30Aで管理されているAreaに含まれるRowのKey範囲の連続性も保持される。次に、AreaServer30Aは、自身が属するグループのGroupServer30Aに、AreaServerリストの更新を要求するステップS504。上述したように、各AreaServer30Aが管理するAreaのKey範囲が連続するようにArea再配置が行われるため、AreaServerリストにおいて、AreaServer30Aごとのエントリ数は1つでよい。そのため、AreaServerリストのサイズが増大するのを抑制することができる。次に、GroupServerの再決定時の動作について説明する。図22は、GroupServerの再決定時のMasterServer20の動作を示すシーケンス図である。上述したように、MasterServer20の制御部203は、各AreaServer30AのIPアドレスに応じてグループ分けを行い、グループ毎にGroupServerを決定する。ここで、AreaServer30Aの減設または障害による停止を検出した場合、あるいは、AreaServer30Aの増設を検出すると、制御部203は、各Group内に属するAreaServer30Aの数を点検し、AreaServer数に偏りがあるか否かを判定する。偏りがある場合は、制御部203は、グループの再編成を行う。具体的には、制御部203は、メモリ領域204に記憶されているロケーションリストに示される稼働中のAreaServer30Aを、Disk領域202に記憶されているプロパティファイルの設定に応じてグループ分けする。次に、制御部203は、グループ毎に、そのグループ内のGroupServer数は1であるか否かを判定する。1つのグループ内に2以上のGroupServer30Gが存在する場合には、1つのGroupServerだけを残し、他のGroupServerを解任する。また、1つのグループ内に1つもGroupServer30Gが存在しない場合には、制御部203は、そのグループ内の1つのAreaServer30AをGroupServerに任命するステップS601。次に、MasterServer20の通信部201は、GroupServerを解任されたAreaServer30Aにその旨を通知するステップS602。GroupServerを解任されると、通常のAreaServer30Aに戻る。また、通信部201は、新たにGroupServerに任命されたAreaServer30Aにその旨を通知するステップS603。なお、AreaServer30Aの減設、あるいは、障害による停止を検出すると、MasterServer20は、そのAreaServer30AのDisk領域に記憶されているAreaリストを参照し、そのAreaServer30Aで管理されていた全Areaを、即時に隣接するAreaServerに再配置する。その結果、新たにAreaを管理することになったAreaServer30Aは、一時的に多くのAreaを管理することになり、そのAreaServer30へのAreaの偏りが発生する。しかし、この一時的なAreaの偏りは、例えば、図13に示される処理が繰り返されることにより、徐々に均等化される。また、AreaServer30Aの増設を検出すると、MasterServer20は、その増設されたAreaServer30Aと同じグループに属し、その増設されたAreaServer30Aに隣接するAreaServer30Aに管理されているAreaを、その増設されたAreaServer30Aに再配置する。また、MasterServer20は、GroupServer30Gの障害などによる停止を検出すると、図22に示される処理を行い、AreaServer30Aを新たにGroupServerに任命する。このように、本実施形態によれば、AreaServer30Aは、他のAreaServer30Aに対する自身へのAreaの偏りの程度が所定の閾値を超えたか否かを判定し、自身へのAreaの偏りの程度が所定の閾値を超えた場合に、その他のAreaServer30AへのArea再配置を行う。そのため、Area分割毎にMetaTableMetaAreaの更新が行われることがなくなるので、MetaTableMetaAreaを管理するAreaServer30Aへのアクセスが少なくなり、負荷を低減させることができる。また、本実施形態によれば、MasterServer20は、複数のRowのKey範囲をソートし、GroupServer30GのIPアドレスの順に、Key範囲のソート順が保持されるように、Key範囲の割り当てを行うとともに、GroupServer30G毎に、各GroupServer30Gに割り当てたKey範囲を記憶するGroupServerリスト。また、GroupServer30Gは、自グループに属するAreaServer30A毎に、各AreaServer30AのIPアドレスの順にKey範囲のソート順が保持されるように割り当てられたKey範囲を記憶するAreaServerリスト。上述したように、Area数は100,000以上のオーダになる。そのため、Area毎にエントリを作成すると、MetaTableMetaAreaのエントリ数もArea数は100,000以上のオーダになる。一方、本実施形態のように、GroupServer30G毎に、あるいは、AreaServer30毎に、担当するKey範囲を記憶することで、全てのGroupServerリストおよびAreaServerリストのエントリ数を合わせても、AreaServer30Aの数と同じになる。一般に、分散システム1におけるAreaServerの数は、100~1000のオーダなので、GroupServerリストおよびAreaServerリストのエントリ数も、100~1000のオーダとなり、Area毎にエントリを作成する場合と比べて、2桁以上、エントリ数を削減することができる。また、MasterServer20がGroupリストを記憶し、GroupServer30GがAreaServerリストを記憶し、データの参照、更新時には、Groupリスト、AreaServerリスト、UserAreaの順に辿ることで、従来と同様に、3段階のロケーション解決を行うことができる。なお、上述した実施形態においては、MasterServer20は、所定のKey範囲をGroupServer30Gに割り当てるとともに、そのGroupServerのロケーションとそのKey範囲とをGroupリストとして記憶し、GroupServer30Gは、MasterServer20から割り当てられたKey範囲のRowを含むAreaを同じグループに属するAreaServer30Aで分散して管理させるとともに、AreaServer30AのロケーションとそのAreaServer30Aが管理するAreaに含まれるRowのKey範囲とをAreaServerリストとして記憶する例を用いて説明したが、これに限られるものではない。例えば、MasterServer20が、各AreaServer30AにKey範囲を割り当て、割り当てたKey範囲のRowを含むAreaを監理させるとともに、AreaServer30AのロケーションとそのAreaServer30Aが管理するAreaに含まれるRowのKey範囲と記憶するようにしてもよい。なお、本発明のAreaServerにおいて行われる方法は、コンピュータに実行させるためのプログラムに適用してもよい。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。"