"複数のサーバと通信する負荷分散装置であって、当該負荷分散装置は、複数の異なるハッシュ値計算部を備えた処理部と、通信部とを備えており、前記処理部は、読み取り入力クエリを受信した際、前記読み取り入力クエリのキーを取得し、前記複数の異なるハッシュ値計算部のいずれかを決定し、前記決定したハッシュ値計算部により、前記読み取り入力クエリのキーから第1のハッシュ値を計算し、前記通信部によって前記第1のハッシュ値に対応する第1のサーバをロックし、前記読み取り入力クエリを送信したのち、前記第1のサーバのロックを解除する、ことを特徴とするデータベースの負荷分散装置。前記処理部は更に、乱数計算部を備えており、前記処理部は、前記複数の異なるハッシュ値計算部のいずれかを、前記乱数計算部が出力する乱数によって決定する、ことを特徴とする請求項1に記載のデータベースの負荷分散装置。前記通信部は、前記第1のサーバを同期でロックしたのち、非同期で前記読み取り入力クエリを送信し、非同期で前記第1のサーバのロックを解除する、ことを特徴とする請求項1または請求項2に記載のデータベースの負荷分散装置。前記処理部は、書き込み入力クエリを受信した際、前記書き込み入力クエリのキーを取得し、前記複数の異なるハッシュ値計算部により、前記書き込み入力クエリのキーに基づく第2のハッシュ値配列を計算し、前記通信部によって前記第2のハッシュ値配列の各要素に対応する第2のサーバ群を順番にロックし、前記書き込み入力クエリを送信したのち、前記第2のサーバ群のロックを解除する、ことを特徴とする請求項1ないし請求項3のいずれか1項に記載のデータベースの負荷分散装置。前記通信部は、前記第2のサーバ群を順番に同期でロックしたのち、非同期で前記書き込み入力クエリを送信し、非同期で前記第2のサーバ群のロックを解除する、ことを特徴とする請求項4に記載のデータベースの負荷分散装置。前記処理部は更に、コンシステントハッシュ計算部を備えており、前記第1のハッシュ値を計算した際、前記コンシステントハッシュ計算部により、前記第1のハッシュ値をコンシステントハッシュの環に配置して前記第1のサーバを決定し、前記通信部によって前記第1のサーバをロックし、前記読み取り入力クエリを送信したのち、前記第1のサーバのロックを解除し、前記第2のハッシュ値配列を計算した際、前記コンシステントハッシュ計算部により、前記第2のハッシュ値配列をコンシステントハッシュの環に配置して前記第2のサーバ群と当該第2のサーバ群の順番とを決定し、前記通信部によって前記第1のサーバ群を順番にロックし、前記書き込み入力クエリを送信したのち、前記第2のサーバ群のロックを解除する、ことを特徴とする請求項4または請求項5に記載のデータベースの負荷分散装置。前記処理部は更に、前記第1のハッシュ値配列を計算した際、前記第2のハッシュ値配列をソートし、前記コンシステントハッシュ計算部により、ソートした前記第2のハッシュ値配列をコンシステントハッシュの環に配置して第3のサーバ群と当該第3のサーバ群の順番を決定し、前記通信部によって前記第3のサーバ群を順番にロックし、前記書き込み入力クエリを送信したのち、前記第3のサーバ群のロックを解除する、ことを特徴とする請求項6に記載のデータベースの負荷分散装置。NoSQL型のデータベースシステムでは、クエリのアクセス毎に、そのアクセスを、データの在処であるサーバに振り分けているだけである。そのため、同一のデータに集中的にアクセスが発生する場合には処理が分散できずにタイムアウトが発生し、見かけの処理能力が低くなる虞がある。たとえば、NoSQL型のデータベースシステムを、公衆電話網システムに於ける電話番号の検索に適用した場合、チケット予約センタのように、いわゆる企画型輻輳が発生し易い電話番号のkeyにアクセスが集中する虞がある。このアクセスの集中により、この電話番号を格納している特定サーバの処理能力の限界を超えてしまう虞がある。これは、従来のNoSQL型のデータベースシステムが、同じkeyに対しては、単一のハッシュ値しか与えないことに起因している。分散データベースシステムでは、冗長化のため、多重に同一の複製データを保持している。しかし、これらの複製データが使用されるのは故障時だけであり、それ以外はアクセスされることはない。そこで、本発明は、この冗長化のための複製データにアクセス可能とし、処理能力を増大させるデータベースの負荷分散装置を提供することを課題とする。前記した課題を解決するため、請求項1に記載の発明では、複数のサーバと通信する負荷分散装置であって、当該負荷分散装置は、複数の異なるハッシュ値計算部を備えた処理部と、通信部とを備えており、前記処理部は、読み取り入力クエリを受信した際、前記読み取り入力クエリのキーを取得し、前記複数の異なるハッシュ値計算部のいずれかを決定し、前記決定したハッシュ値計算部により、前記読み取り入力クエリのキーから第1のハッシュ値を計算し、前記通信部によって前記第1のハッシュ値に対応する第1のサーバをロックし、前記読み取り入力クエリを送信したのち、前記第1のサーバのロックを解除する、ことを特徴とするデータベースの負荷分散装置とした。このようにすることで、本発明によれば、データの読み取りの際には、冗長化のための複製データを格納しているいずれかのサーバを決定し、アクセスを分散させている。これにより、特定のデータにアクセスが集中する場合でも、このアクセスを分散させることができ、システム全体として高いスループットを維持することができる。請求項2に記載の発明では、前記処理部は更に、乱数計算部を備えており、前記処理部は、前記複数の異なるハッシュ値計算部のいずれかを、前記乱数計算部が出力する乱数によって決定する、ことを特徴とする請求項1に記載のデータベースの負荷分散装置とした。このようにすることで、本発明によれば、データの読み取りの際には、複数の異なるハッシュ値計算部のうちいずれかを乱数で決定している。そして、決定したハッシュ値計算部のハッシュ値hによって、冗長化のための複製データを格納しているいずれかのサーバを決定している。これにより、乱数でアクセスを分散させることができ、自動アクセスソフトウェアいわゆるロボットなどによる繰り返しのアクセスが同一のサーバに集中することを抑止することができる。請求項3に記載の発明では、前記通信部は、前記第1のサーバを同期でロックしたのち、非同期で前記読み取り入力クエリを送信し、非同期で前記第1のサーバのロックを解除する、ことを特徴とする請求項1または請求項2に記載のデータベースの負荷分散装置とした。このようにすることで、本発明によれば、データの読み取りの際には、対象サーバを同期でロックしたのち、非同期で入力クエリをサーバに送信したのち、非同期でサーバ群のロックを解除している。これにより、各サーバからの応答を待たずにサーバ群に入力クエリを送信できるので、高速に処理することができる。請求項4に記載の発明では、前記処理部は、書き込み入力クエリを受信した際、前記書き込み入力クエリのキーを取得し、前記複数の異なるハッシュ値計算部により、前記書き込み入力クエリのキーに基づく第2のハッシュ値配列を計算し、前記通信部によって前記第2のハッシュ値配列の各要素に対応する第2のサーバ群を順番にロックし、前記書き込み入力クエリを送信したのち、前記第2のサーバ群のロックを解除する、ことを特徴とする請求項1ないし請求項3のいずれか1項に記載のデータベースの負荷分散装置とした。このようにすることで、本発明によれば、データの書き込みの際には、データを複製して複数のサーバに格納している。これにより、耐障害性を高めることができる。更に、データの書き込みの際には、このデータのキーを複数のハッシュ関数によって複数のハッシュ値hを計算し、これらハッシュ値hに基いて第2のサーバ群と当該第2のサーバ群の順番を決定し、決定した第2のサーバ群をロックしている。これにより、データの読み取りと競合した場合のデータの不整合を抑止することができる。複数のハッシュ関数の順番は、全ての負荷分散装置に於いて同一である。どの負荷分散装置であっても、同一のキーを有するデータの書き込みの際に、同一の順番で同一の第2のサーバ群をロックする。これにより、複数の負荷分散装置が、互いに異なるサーバをロックし、相手がロックしているサーバのロック解除を両方で待っている状態、いわゆるデッドロック状態が発生することを抑止することができる。請求項5に記載の発明では、前記通信部は、前記第2のサーバ群を順番に同期でロックしたのち、非同期で前記書き込み入力クエリを送信し、非同期で前記第2のサーバ群のロックを解除する、ことを特徴とする請求項4に記載のデータベースの負荷分散装置とした。このようにすることで、本発明によれば、データの書き込みの際には、第2のサーバ群を同期でロックしたのち、非同期で入力クエリを第2のサーバ群に送信したのち、非同期で第2のサーバ群のロックを解除している。これにより、各サーバからの応答を待たずに第2のサーバ群に入力クエリを送信できるので、高速に処理することができる。請求項6に記載の発明では、前記処理部は更に、コンシステントハッシュ計算部を備えており、前記第1のハッシュ値を計算した際、前記コンシステントハッシュ計算部により、前記第1のハッシュ値をコンシステントハッシュの環に配置して前記第1のサーバを決定し、前記通信部によって前記第1のサーバをロックし、前記読み取り入力クエリを送信したのち、前記第1のサーバのロックを解除し、前記第2のハッシュ値配列を計算した際、前記コンシステントハッシュ計算部により、前記第2のハッシュ値配列をコンシステントハッシュの環に配置して前記第2のサーバ群と当該第2のサーバ群の順番とを決定し、前記通信部によって前記第1のサーバ群を順番にロックし、前記書き込み入力クエリを送信したのち、前記第2のサーバ群のロックを解除する、ことを特徴とする請求項4または請求項5に記載のデータベースの負荷分散装置とした。このようにすることで、本発明によれば、データの読み取りと書込みの際には、ハッシュ関数によってハッシュ値hを計算し、このハッシュ値hをコンシステントハッシュの環に配置して、対象サーバ第1のサーバまたは第2のサーバ群を決定している。これにより、サーバの増設と減設の際に、どのサーバにどのデータを移動すればよいかを、コンシステントハッシュの環に基いて容易に決定することができる。請求項7に記載の発明では、前記処理部は更に、前記第1のハッシュ値配列を計算した際、前記第2のハッシュ値配列をソートし、前記コンシステントハッシュ計算部により、ソートした前記第2のハッシュ値配列をコンシステントハッシュの環に配置して第3のサーバ群と当該第3のサーバ群の順番を決定し、前記通信部によって前記第3のサーバ群を順番にロックし、前記書き込み入力クエリを送信したのち、前記第3のサーバ群のロックを解除する、ことを特徴とする請求項6に記載のデータベースの負荷分散装置とした。このようにすることで、本発明によれば、全てのハッシュ値hをソートし、このソートした順番のハッシュ値hに対応する第3のサーバ群にアクセスしている。これにより、データの複製に限られず、如何なるデータ集合の更新においても、第3のサーバ群へのアクセス順番を一意に決定し、デッドロックを回避することができる。本発明に係るデータベースの負荷分散装置によれば、この冗長化のための複製データにアクセス可能となるので、処理能力を増大させることができる。以降、本発明を実施するための形態を、図を参照して詳細に説明する。第1の実施形態の構成図1は、第1の実施形態に於けるデータベースクラスタシステムの概要を示す図である。データベースクラスタシステム10は、ネットワーク100を介して、外部システム90であるオペレータシステム、または、入出力端末80と接続されている。データベースクラスタシステム10は、外部システム90や入出力端末80からの入力データ入力クエリを受け取る。そして、この入力データ入力クエリに基いてデータの保存、更新、検索などを行い、その結果を出力データ応答として、外部システム90や入出力端末80に送信する。図2は、第1の実施形態に於けるデータベースクラスタシステムを示す構成図である。データベースクラスタシステム10は、図面に於いてBと表記されているロードバランサBalancer13と、図面に於いてDと表記されている複数のディスパッチャDispatcher14-nnは自然数と、複数のサーバ15-nとを有している。例えば、サーバ15-1は、図面に於いてPと表記されているプロセッサProcessor16-1と、図面に於いてSと表記されているストレージStorage17-1とを有している。他のサーバ15-2,15-3なども同様の構成を有している。データベースクラスタシステム10は更に、後述する図6に示すように、サーバ15-0,15-4,15-5,15-6と、ディスパッチャ14-0,14-4,14-5,14-6とを有している。この図2では、そのうち、サーバ15-1~15-3と、ディスパッチャ14-1~14-3とを図示し、それ以外の図示を省略している。ロードバランサ13は、入力装置11から入力データ入力クエリを取得し、出力データ応答を出力装置12に送信する。また、ロードバランサ13は、ラウンドロビンなどにより、入力クエリを複数のディスパッチャ14-0~14-6のいずれかに振り分ける。ここで、入力装置11および出力装置12は、前述した図1に示す外部システム90や入出力端末80のことをいう。データベースクラスタシステム10に対する入力クエリとは、例えば、SQLのクエリやXCAPXMLConfigurationAccessProtocolのような、データベースからデータを取得するための要求のことである。負荷分散装置であるディスパッチャ14-1は、それぞれ複数のプロセッサ16-0~16-6と接続されており、ロードバランサ13から取得した書き込み入力クエリと読み取り入力クエリを、サーバ15-0プロセッサ16-0~サーバ15-6プロセッサ16-6のいずれかに振り分ける。このディスパッチャ14-1は、入力クエリを解析してキーを取得し、複数のハッシュ関数によりハッシュ値hを計算し、コンシステントハッシュの環を適用してデータの格納先であるサーバ15-nを決定し、その入力クエリを送信する。他のディスパッチャ14-2,14-3なども同様に構成されている。なお、ディスパッチャ14-nの詳細な構成を処理については、ディスパッチャ14-1を例として、後述する図3で詳細に説明する。プロセッサ16-1は、複数のディスパッチャ14-nおよび自身が制御するストレージ17-1と接続されており、ディスパッチャ14-nから入力クエリを受信し、その入力クエリに従い、ストレージ17-1に新規に入力データを保存し、既存データを更新し、既存データを検索する制御を実行する。他のプロセッサ16-2,16-3などもプロセッサ16-1と同様に構成されている。ストレージ17-1は、実際にデータを保存する記憶手段であり、第1の実施形態では、各データがXMLExtensibleMarkupLanguageファイルで保存されている。他のストレージ17-2,17-3などもストレージ17-1と同様に構成されている。第1の実施形態に於いて、このプロセッサ16-nとストレージ17-nの組を、1つのサーバ15-nとして説明する。図3は、第1の実施形態に於けるディスパッチャを示す概略の構成図である。ここでは、ディスパッチャ14-1を例に説明する。ディスパッチャ14-1は、処理部21と、記憶部22と、通信部23とを備えている。ディスパッチャ14-1は、ロードバランサ13図2および複数のプロセッサ16-n図2と通信可能に接続され、ロードバランサ13図2から取得した入力クエリを、プロセッサ16-n図2のいずれかに振り分ける負荷分散装置である。通信部23は、通信回線を介して情報を送受信する通信インタフェースによって構成され、内部バスなどを介して処理部21に接続されている。通信部23は、ロードバランサ13図2や、各プロセッサ16-n図2との間の情報の送受信を行う。例えば、通信部23は、ロードバランサ13図2が送信した入力クエリを受信し、各プロセッサ16-n図2に対し、その入力クエリを送信する。また、通信部23は、ストレージ17-n図2に保存されていたデータなどの検索結果をプロセッサ16-n図2から受信し、ロードバランサ13図2に対して送信する。処理部21は、クエリ解析部24と、サーバ決定処理部25とを備えており、ディスパッチャ14-1全体を制御する。この処理部21は、例えば、ディスパッチャ14-1の記憶部22に格納されたプログラムをCPUCentralProcessingUnitが記憶部22のRAMRandomAccessMemoryに展開して実行することによって実現される。記憶部22は、ハードディスク、フラッシュメモリ、RAMなどの記憶装置からなり、各サーバ15-n図2のIDなどを記憶している。サーバ15-n図2のIDは、このサーバ15-n図2を一意に識別可能な情報であり、第1の実施形態では、0~6の数字が用いられている。しかし、これに限られず、このサーバ15-n図2のIPInternetProtocolアドレス、または、MACMediaAccessControladdressアドレスなどを用いてもよい。クエリ解析部24は、通信部23から入力クエリを受け取り、そのクエリの内容を構文解析する。例えば、クエリ解析部24は、その入力クエリが、ストレージ17-n図2に格納されたデータに対する読み取り要求GET、新規のデータの書き込み要求PUT、既存データの更新要求UPDATEのいずれであるかを解析する。当該入力クエリがGETであるときには更に、akeyの完全一致検索、bkeyの範囲検索、cvalueの完全一致検索、dvalueの範囲検索のいずれであるかを解析する。クエリ解析部24は、これらの解析結果を、サーバ決定処理部25に引き渡す。サーバ決定処理部25は、乱数計算部26と、複数の異なるハッシュ値計算部である第1ハッシュ値計算部27-1~第3ハッシュ値計算部27-3と、コンシステントハッシュ計算部28とを備えている。しかし、これに限られず、このサーバ決定処理部25は、振り分け対象サーバ数に対応するM個のハッシュ関数計算部を有していてもよい。なお、振り分け対象サーバ数Mは、2以上かつサーバ15-n図2の台数以下である。サーバ決定処理部25は、クエリ解析部24から取得した解析結果に基き、ハッシュ関数のうちいずれかを選択し、コンシステントハッシュの環を適用して、振り分け先となるサーバ15-nを決定する。乱数計算部26は、このサーバ決定処理部25が有している3個のハッシュ関数を選択するため、0以上かつ3未満の乱数rを出力する。しかし、これに限られず、このサーバ決定処理部25がM個のハッシュ関数を有しているとき、乱数計算部26は、これらを選択するため、0以上かつM未満の乱数rを出力してもよい。第1ハッシュ値計算部27-1~第3ハッシュ値計算部27-3は、それぞれ別のハッシュ関数によってハッシュ値hを計算する。第1ハッシュ値計算部27-1は、全てのディスパッチャ14-1~14-3に於いて、同一の入力値xに対して同一の出力値ハッシュ値hを計算する。これにより、どのディスパッチャ14-1~14-3の第1ハッシュ値計算部27-1で計算しても、入力クエリのキーに基いて、一意にサーバ15-nを決定することができる。第2ハッシュ値計算部27-2、第3ハッシュ値計算部27-3も、第1ハッシュ値計算部27-1と同様である。コンシステントハッシュ計算部28は、前述したハッシュ値hをコンシステントハッシュの環に適用し、ハッシュ値hに対応したサーバ15-nを決定する。図4a,bは、第1の実施形態に於けるハッシュ関数とコンシステントハッシュの環を示す図である。図4aは、例えば、第1ハッシュ値計算部27-1図3が有しているハッシュ関数の入力値xと出力値であるハッシュ値hとの関係を示す図である。縦軸は出力値であるハッシュ値hを示し、横軸は入力値xを示している。このハッシュ関数によれば、入力値xに対して、出力値であるハッシュ値hは離散的な値となる。つまり、入力クエリが有するキーを入力値xとして計算したとき、ハッシュ値hは離散的な値となる。このハッシュ値hを基に、サーバ15-nを決定する。これにより、2つの入力クエリのキーがそれぞれ異なると、ハッシュ値hはそれぞれ飛び離れた値となる。これらハッシュ値hに対応したサーバに、それぞれの入力クエリの処理を行わせる。これにより、それぞれの入力クエリのキーの処理を、各サーバ15-nに分散することができる。図4bは、コンシステントハッシュの環を示す図である。時計まわりの矢印は、前述したハッシュ値hを示し、環上の点の番号nは、サーバ15-0~15-6図6のIDを0から6の番号で示している。ハッシュ値hを、コンシステントハッシュの環に適用して配置する。このコンシステントハッシュの環状領域には、ノードと呼ばれる担当領域が決まっている。ハッシュ値hが与えられたとき、どこのノード担当領域に入るかによって、対象サーバが決定される。ハッシュ値hが、n=0の点に配置されていたとき、および、n=0の点からn=1の点の間に配置されていたときには、IDが0のサーバ15-0図6を対象サーバに決定する。ハッシュ値hが、n=1の点に配置されていたとき、および、n=1の点からn=2の点の間に配置されていたときには、IDが1のサーバ15-1図6を対象サーバに決定する。ハッシュ値hが、n=2の点に配置されていたとき、および、n=2の点からn=3の点の間に配置されていたときには、IDが2のサーバ15-2図6を対象サーバに決定する。ハッシュ値hが、n=3の点に配置されていたとき、および、n=3の点からn=4の点の間に配置されていたときには、IDが3のサーバ15-3図6を対象サーバに決定する。ハッシュ値hが、n=4の点に配置されていたとき、および、n=4の点からn=5の点の間に配置されていたときには、IDが4のサーバ15-4図6を対象サーバに決定する。ハッシュ値hが、n=5の点に配置されていたとき、および、n=5の点からn=6の点の間に配置されていたときには、IDが5のサーバ15-5図6を対象サーバに決定する。ハッシュ値hが、n=6の点に配置されていたとき、および、n=6の点からn=0の点の間に配置されていたときには、IDが5のサーバ15-6図6を対象サーバに決定する。図5は、第1の実施形態に於ける入出力データの例を示す図である。入出力ファイル200は、XML形式で記載されており、keyとvalueの4つのタグ要素name,location,phone,chargeを有している。Keyは、a0123が付与されている。Valueのnameタグにはonoが格納されている。Valueのlocationタグにはtokyoが格納されている。Valueのphoneタグには0333331111が格納されている。Valueのchargeタグには3500が格納されている。第1の実施形態の動作図6は、第1の実施形態に於ける書き込みの際の動作例を示す図である。データベースクラスタシステム10は、7台のサーバ15-0~15-6を備えている。このサーバ15-0~15-6は、それぞれ、ディスパッチャ14-0~14-6と、プロセッサ16-0~16-6と、ストレージ17-0~17-6とを備えている。サーバ15-0のIDは0であり、以降、サーバ15-1~15-6のIDは、1~6である。書き込みの際、ロードバランサ13は、前述した外部システム90図1または入出力端末80図1からPUTの入力クエリ書き込み入力クエリを受信する。このロードバランサ13は、ラウンドロビンなどの処理によりディスパッチャ14-0~14-6のいずれかを選択し、選択したディスパッチャ14-nに、このPUTの入力クエリを送信する。図6では、ディスパッチャ14-3に送信している。ディスパッチャ14-3は、ロードバランサ13からPUTの入力クエリを受信すると、クエリ解析部24によって、当該入力クエリを解析する。この解析結果に基き、サーバ決定処理部25図3によってサーバ15-1プロセッサ16-1、サーバ15-3プロセッサ16-3、サーバ15-6プロセッサ16-6と、その順番を決定して、このPUTの入力クエリを送信する。サーバ15-1のプロセッサ16-1は、ディスパッチャ14-3からPUTの入力クエリを受信すると、そのPUTの入力クエリに従い、ストレージ17-1に、新規データである入出力ファイル200を保存する。そののち、ストレージ17-1は、プロセッサ16-1に応答を送信する。プロセッサ16-1は、ディスパッチャ14-3に応答を送信する。サーバ15-3のプロセッサ16-3とサーバ15-6のプロセッサ16-6も、前述したサーバ15-1のプロセッサ16-1と同様に動作する。ディスパッチャ14-3は、プロセッサ16-1,16-3,16-6の全てから応答を受信したならば、ロードバランサ13に応答を送信する。ロードバランサ13は、このPUTの入力クエリを送信した外部システム90図1または入出力端末80図1に、新規データを保存した旨の応答を送信する。これにより、データベースクラスタシステム10は、データの書き込み処理を行うことができる。図7は、第1の実施形態に於ける読み取りの際の動作例を示す図である。データベースクラスタシステム10は、7台のサーバ15-0~15-6を備えている。このサーバ15-0~15-6は、それぞれディスパッチャ14-0~14-6を備えている。ストレージ17-1,17-3,17-6には、入出力ファイル200が格納されている。読み取りの際に、ロードバランサ13は、前述した外部システム90図1または入出力端末80図1からGETの入力クエリ読み取り入力クエリを受信する。このロードバランサ13は、このGETの入力クエリをディスパッチャ14-0~14-6のいずれかに送信する。図7の左側の例では、ディスパッチャ14-2にGETの入力クエリを送信している。図7の中央の例では、ディスパッチャ14-4にGETの入力クエリを送信している。図7の右側の例では、ディスパッチャ14-6にGETの入力クエリを送信している。図7の左側の例に於いて、ディスパッチャ14-2は、ロードバランサ13からGETの入力クエリを受信すると、クエリ解析部24によって、当該入力クエリを解析する。この解析結果に基き、サーバ決定処理部25図3によって、このGETの入力クエリのキーに対応するサーバ15-1,15-6,15-3からサーバ15-1を決定し、このGETの入力クエリを送信する。サーバ15-1のプロセッサ16-1は、ディスパッチャ14-2からGETの入力クエリを受信すると、そのGETの入力クエリに従い、ストレージ17-1から入出力ファイル200を読み取る。プロセッサ16-1は、ディスパッチャ14-2に入出力ファイル200を含んだ応答を送信する。ディスパッチャ14-2は、プロセッサ16-1から、入出力ファイル200を含んだ応答を受信したならば、この応答をロードバランサ13に送信する。ロードバランサ13は、このGETの入力クエリを送信した外部システム90図1または入出力端末80図1に、入出力ファイル200を含んだ応答を送信する。図7の中央の例に於いて、ディスパッチャ14-4は、ロードバランサ13からGETの入力クエリを受信すると、クエリ解析部24によって、当該入力クエリを解析する。この解析結果に基き、サーバ決定処理部25図3によって、このGETの入力クエリのキーに対応するサーバ15-1,15-6,15-3からサーバ15-3プロセッサ16-3を決定し、このGETの入力クエリを送信する。サーバ15-3のプロセッサ16-3は、ディスパッチャ14-4からGETの入力クエリを受信すると、そのGETの入力クエリに従い、ストレージ17-3から入出力ファイル200を読み取る。プロセッサ16-3は、ディスパッチャ14-4に入出力ファイル200を含んだ応答を送信する。ディスパッチャ14-4は、プロセッサ16-3から、入出力ファイル200を含んだ応答を受信したならば、この応答をロードバランサ13に送信する。ロードバランサ13は、このGETの入力クエリを送信した外部システム90図1または入出力端末80図1に、入出力ファイル200を含んだ応答を送信する。図7の右側の例に於いて、ディスパッチャ14-6は、ロードバランサ13からGETの入力クエリを受信すると、クエリ解析部24によって、当該入力クエリを解析する。この解析結果に基き、サーバ決定処理部25図3によって、このGETの入力クエリのキーに対応するサーバ15-1,15-6,15-3からサーバ15-6を決定し、このGETの入力クエリを送信する。サーバ15-6のプロセッサ16-6は、ディスパッチャ14-6からGETの入力クエリを受信すると、そのGETの入力クエリに従い、ストレージ17-6から入出力ファイル200を読み取る。プロセッサ16-6は、ディスパッチャ14-6に入出力ファイル200を含んだ応答を送信する。ディスパッチャ14-6は、プロセッサ16-6から、入出力ファイル200を含んだ応答を受信したならば、この応答をロードバランサ13に送信する。ロードバランサ13は、このGETの入力クエリを送信した外部システム90図1または入出力端末80図1に、入出力ファイル200を含んだ応答を送信する。図8は、第1の実施形態に於ける書き込みの例を示すシーケンス図である。処理を開始すると、シーケンスQ10に於いて、入出力端末80は、ロードバランサ13に対して、PUTの入力クエリを送信する。この入力クエリは、書き込みクエリであることを示すPUTの情報と、入力ファイルのキーであるa0123の情報と、入力ファイルa0123xmlのファイル本体の情報とを含んでいる。シーケンスQ11に於いて、ロードバランサ13は、例えば、ディスパッチャ14-1に対して、当該PUTの入力クエリを送信する。ディスパッチャ14-1は、当該PUTの入力クエリを受信すると、第1ハッシュ値計算部27-1~第3ハッシュ値計算部27-3図3により、キーであるa0123の情報に基き、それぞれのハッシュ値を計算する。ここで計算された3つのハッシュ値は、第2のハッシュ値配列である。シーケンスQ12に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-1に対して、ロック取得コマンドを同期で送信する。サーバ15-1は、第2のハッシュ値配列の最初の要素に対応するサーバである。ここで、ロック取得コマンドを同期で送信するとは、ロック取得コマンドの送信側ディスパッチャ14-1が、このロック取得コマンドの応答を待ってから、自身の作業を続行することを言う。シーケンスQ13に於いて、サーバ15-1は、ディスパッチャ14-1に対して、ロック取得コマンドに対する応答を送信する。以降、サーバ15-1は、ディスパッチャ14-1が、この取得したロックを解除するまで、新たなロック取得コマンドには応答しなくなる。シーケンスQ14に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-6に対して、ロック取得コマンドを同期で送信する。サーバ15-6は、第2のハッシュ値配列の2番目の要素に対応するサーバである。シーケンスQ15に於いて、サーバ15-3は、ディスパッチャ14-1に対して、ロック取得コマンドに対する応答を送信する。以降、サーバ15-6は、ディスパッチャ14-1が、この取得したロックを解除するまで、新たなロック取得コマンドには応答しなくなる。シーケンスQ16に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-3に対して、ロック取得コマンドを同期で送信する。サーバ15-3は、第2のハッシュ値配列の3番目の要素に対応するサーバである。すなわち、第2のハッシュ値配列の各要素に対応する第2のサーバ群は、サーバ15-1,15-6,15-3である。シーケンスQ17に於いて、サーバ15-3は、ディスパッチャ14-1に対して、ロック取得コマンドに対する応答を送信する。以降、サーバ15-3は、ディスパッチャ14-1が、この取得したロックを解除するまで、新たなロック取得コマンドには応答しなくなる。シーケンスQ18に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-1に対して、入力クエリを非同期で送信する。サーバ15-1のプロセッサ16-1は、ストレージ17-1に、この入力クエリが含んでいる入力ファイルa0123xmlを書き込む。ここで、入力クエリを非同期で送信するとは、入力クエリの送信側ディスパッチャ14-1が、この入力クエリの応答を待つことなく、自身の作業を続行することを言う。シーケンスQ19に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-3に対して、入力クエリを非同期で送信する。サーバ15-3のプロセッサ16-3は、ストレージ17-3に、この入力クエリが含んでいる入力ファイルa0123xmlを書き込む。シーケンスQ20に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-6に対して、入力クエリを非同期で送信する。サーバ15-6のプロセッサ16-6は、ストレージ17-6に、この入力クエリが含んでいる入力ファイルa0123xmlを書き込む。シーケンスQ21に於いて、サーバ15-1は、ディスパッチャ14-1に対して、入力クエリに対する応答を送信する。シーケンスQ22に於いて、サーバ15-3は、ディスパッチャ14-1に対して、入力クエリに対する応答を送信する。シーケンスQ23に於いて、サーバ15-6は、ディスパッチャ14-1に対して、入力クエリに対する応答を送信する。シーケンスQ24に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-1に対して、ロック解除コマンドを非同期で送信する。サーバ15-1は、ロックを解除し、新たなロック取得コマンドに応答可能な状態となる。シーケンスQ25に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-3に対して、ロック解除コマンドを非同期で送信する。サーバ15-3は、ロックを解除し、新たなロック取得コマンドに応答可能な状態となる。シーケンスQ26に於いて、ディスパッチャ14-1の通信部23図3は、サーバ15-6に対して、ロック解除コマンドを非同期で送信する。サーバ15-6は、ロックを解除し、新たなロック取得コマンドに応答可能な状態となる。シーケンスQ27に於いて、サーバ15-1は、ディスパッチャ14-1に対して、ロック解除コマンドに対する応答を送信する。シーケンスQ28に於いて、サーバ15-3は、ディスパッチャ14-1に対して、ロック解除コマンドに対する応答を送信する。シーケンスQ29に於いて、サーバ15-6は、ディスパッチャ14-1に対して、ロック解除コマンドに対する応答を送信する。シーケンスQ30に於いて、ディスパッチャ14-1の通信部23図3は、ロードバランサ13に対して、入力クエリの完了通知を送信する。シーケンスQ31に於いて、ロードバランサ13は、入出力端末80に対して、入力クエリの完了通知を送信する。以上のシーケンスにより、入出力端末80から、データベースクラスタシステム10に対して、データを書き込むことができる。図9は、第1の実施形態に於ける書き込みの競合の例を示すシーケンス図である。図8に示すシーケンスと同一の要素には同一の符号を付与している。この図9に於いて、右側のロードバランサ13と左側のロードバランサ13とは、同一のものを示している。更に、右側の入出力端末80と左側の入出力端末80とは、異なるものを示している。シーケンスQ10~Q31は、図8に示すシーケンスと同様である。シーケンスQ40に於いて、右側の入出力端末80は、ロードバランサ13に対して、PUTの入力クエリを同期で送信する。この入力クエリは、シーケンスQ10図8と同様に、書き込み入力クエリであることを示すPUTの情報と、ファイルのキーであるa0123の情報と、入力ファイルであるa0123xmlの情報とを含んでいる。シーケンスQ41に於いて、ロードバランサ13は、ディスパッチャ14-3に対して、当該PUTの入力クエリを同期で送信する。ディスパッチャ14-3の通信部23図3は、当該PUTの入力クエリを受信すると、第1ハッシュ値計算部27-1~第3ハッシュ値計算部27-3図3により、キーであるa0123の情報に基き、第2のハッシュ値配列を計算する。シーケンスQ42に於いて、ディスパッチャ14-3の通信部23図3は、サーバ15-1に対して、ロック取得コマンドを同期で送信する。サーバ15-1は、第2のハッシュ値配列の最初の要素に対応するサーバである。しかし、サーバ15-1は、既にロックされているので、このロック取得コマンドに対する応答は、ロックが解除されるまで待たされる。前述したシーケンスQ27に於いて、サーバ15-1はロックが解除され、新たなロックに応答するようになる。こののち、シーケンスQ43に於いて、サーバ15-1は、ディスパッチャ14-3に対して、ロック取得コマンドに対する応答を送信する。以降、サーバ15-1は、ディスパッチャ14-3が、この取得したロックを解除するまで、新たなロック取得コマンドには応答しなくなる。以降、シーケンスQ44~Q61の処理は、シーケンスQ14~Q31の処理と同様である。このように、サーバをロックして入力クエリを送信し、そののちにロックを解除しているので、ほぼ同時に書込み処理が行われた場合であっても、データの不整合が発生しなくなる。図10は、第1の実施形態に於ける書き込みと読み取りの競合の例を示すシーケンス図である。図8に示すシーケンスと同一の要素には同一の符号を付与している。この図10に於いて、右側のロードバランサ13と左側のロードバランサ13とは、同一のものを示している。シーケンスQ10~Q31は、図8に示すシーケンスと同様である。シーケンスQ70~Q79は、読み取りのシーケンス例を示している。シーケンスQ70に於いて、右側の入出力端末80は、ロードバランサ13に対して、GETの入力クエリを同期で送信する。この入力クエリは、読み取り入力クエリであることを示すGETの情報と、ファイルのキーであるa0123の情報とを含んでいる。シーケンスQ71に於いて、ロードバランサ13は、ディスパッチャ14-3に対して、当該GETの入力クエリを同期で送信する。シーケンスQ72に於いて、ディスパッチャ14-3の通信部23図3は、サーバ15-3に対して、ロック取得コマンドを同期で送信する。サーバ15-3は、ハッシュ値hに対応するサーバである。シーケンスQ73に於いて、サーバ15-3は、ディスパッチャ14-3に対して、ロック取得コマンドに対する応答を送信する。以降、サーバ15-3は、ディスパッチャ14-3が、この取得したロックを解除するまで、新たなロック取得コマンドには応答しなくなる。シーケンスQ74に於いて、ディスパッチャ14-3の通信部23図3は、サーバ15-3に対して、この入力クエリを非同期で送信する。サーバ15-3のプロセッサ16-3は、ストレージ17-3から、この入力クエリが含んでいるキーa0123に対応する入力ファイルa0123xmlを読み取る。シーケンスQ75に於いて、サーバ15-3は、ディスパッチャ14-3に対して、入力クエリに対する応答を送信する。この応答は、出力ファイルa0123xmlを含んでいる。シーケンスQ76に於いて、ディスパッチャ14-3の通信部23図3は、サーバ15-3に対して、ロック解除コマンドを非同期で送信する。サーバ15-3は、ロックを解除し、新たなロック取得コマンドに応答可能な状態となる。シーケンスQ77に於いて、サーバ15-3は、ディスパッチャ14-3に対して、ロック解除コマンドに対する応答を送信する。シーケンスQ78に於いて、ディスパッチャ14-3の通信部23図3は、ロードバランサ13に対して、出力ファイルa0123xmlを含んだ完了通知を送信する。シーケンスQ79に於いて、ロードバランサ13は、図10右側の入出力端末80に対して、出力ファイルa0123xmlを含んだ完了通知を送信する。シーケンスQ80~Q89は、書き込みと読み取りの競合シーケンス例を示している。シーケンスQ80に於いて、右側の入出力端末80は、ロードバランサ13に対して、GETの入力クエリを同期で送信する。この入力クエリは、読み取り入力クエリであることを示すGETの情報と、ファイルのキーであるa0123の情報とを含んでいる。シーケンスQ81に於いて、ロードバランサ13は、ディスパッチャ14-3に対して、当該GETの入力クエリを同期で送信する。シーケンスQ82に於いて、ディスパッチャ14-3の通信部23図3は、サーバ15-3に対して、ロック取得コマンドを同期で送信する。サーバ15-3は、ハッシュ値hに対応するサーバである。しかし、サーバ15-3は、既にロックされているので、このロック取得コマンドに対する応答は、ロックが解除されるまで待たされる。前述したシーケンスQ28に於いて、サーバ15-3はロックが解除され、新たなロックに応答するようになる。こののち、シーケンスQ83に於いて、サーバ15-3は、ディスパッチャ14-3に対して、ロック取得コマンドに対する応答を送信する。以降、サーバ15-3は、ディスパッチャ14-3が、この取得したロックを解除するまで、新たなロック取得コマンドには応答しなくなる。以降、シーケンスQ84~Q89の処理は、シーケンスQ74~Q79の処理と同様である。このように、サーバをロックして入力クエリを送信し、そののちにロックを解除しているので、複数のサーバから、ほぼ同時に書き込み処理と読み取り処理が行われた場合であっても、データの不整合が発生しなくなる。図11は、第1の実施形態に於けるディスパッチャの動作を示すフローチャートである。ここでは例として、ディスパッチャ14-1がロードバランサ13から入力クエリを受信したときの処理を示している。処理を開始すると、ステップS10に於いて、ディスパッチャ14-1のクエリ解析部24図3は、入力クエリを解析してキーを抽出し、これをハッシュ関数の入力値xする。ステップS11に於いて、ディスパッチャ14-1の処理部21図3は、入力クエリの種類を判定する。入力クエリの種類がPUTであったならば、ステップS12の処理を行う。入力クエリの種類がGETであったならば、ステップS20の処理を行う。ステップS12~S17は、書き込みの際の処理である。ステップS12に於いて、ディスパッチャ14-1のサーバ決定処理部25図3は、入力クエリのキーの値をハッシュ関数の入力値xとして、全てのハッシュ関数である第1ハッシュ値計算部27-1~第3ハッシュ値計算部27-3図3により、全てのハッシュ値hを計算する。すなわち、書き込み入力クエリのキーに基づく第2のハッシュ値配列を計算する。ステップS13に於いて、ディスパッチャ14-1のコンシステントハッシュ計算部28図3は、全てのハッシュ値hを、コンシステントハッシュの環に適用する。すなわち、第2のハッシュ値配列を、コンシステントハッシュの環のいずれかの位置に配置する。ステップS14に於いて、ディスパッチャ14-1のコンシステントハッシュ計算部28図3は、コンシステントハッシュの環を基に、対象サーバと順番を決定する。すなわち、第2のハッシュ値配列の各要素に対応する第2のサーバ群と、それら第2のサーバ群の通信順番を決定する。ステップS15に於いて、ディスパッチャ14-1の通信部23図3は、同期で、各対象サーバを順番にロックする。すなわち、第2のサーバ群を順番に同期でロックする。ステップS16に於いて、ディスパッチャ14-1の通信部23図3は、非同期で、各対象サーバに入力クエリを送信して、データを更新する。すなわち、非同期で第2のサーバ群に書き込み入力クエリを送信している。ステップS17に於いて、ディスパッチャ14-1の通信部23図3は、非同期で、各対象サーバのロックを解除する。すなわち、非同期で第2のサーバ群のロックを解除している。ステップS17の処理が終了すると、図11の処理を終了する。以下のステップS20~S27は、読み取りの際の処理である。ステップS20に於いて、ディスパッチャ14-1のサーバ決定処理部25図3は、乱数計算部26図3により、対象サーバ数Mの範囲で生成される乱数rを算出する。すなわち、ハッシュ値計算部の数をMとしたとき、0以上かつM未満となる乱数rを算出する。第1の実施形態では、0~2の乱数rを算出する。ステップS21に於いて、ディスパッチャ14-1のサーバ決定処理部25図3は、乱数rに基いて、ハッシュ関数のいずれかを選択する。すなわち、第1ハッシュ値計算部27-1~第3ハッシュ値計算部27-3図3のいずれかを選択する。ステップS22に於いて、ディスパッチャ14-1のサーバ決定処理部25図3は、入力ファイルのキーの値をハッシュ関数の入力値xとして、選択したハッシュ関数でハッシュ値hを計算する。このハッシュ値hは、読み取り入力クエリのキーから計算した第1のハッシュ値である。ステップS23に於いて、ディスパッチャ14-1のコンシステントハッシュ計算部28図3は、ハッシュ値hを、コンシステントハッシュの環に適用する。ステップS24に於いて、ディスパッチャ14-1のサーバ決定処理部25図3は、コンシステントハッシュの環を基に、対象サーバを決定する。この対象サーバは、第1のハッシュ値に対応する第1のサーバである。ステップS25に於いて、ディスパッチャ14-1の通信部23図3は、同期で、1台の対象サーバをロックする。すなわち、この第1のサーバを同期でロックする。ステップS26に於いて、ディスパッチャ14-1の通信部23図3は、非同期で、1台の対象サーバのデータを読み取る。すなわち、この第1のサーバに非同期で読み取り入力クエリを送信する。ステップS27に於いて、ディスパッチャ14-1の通信部23図3は、非同期で、1台の対象サーバのロックを解除する。すなわち、非同期で、この第1のサーバのロックを解除する。ステップS27の処理が終了すると、図11の処理を終了する。第1の実施形態の効果以上説明した第1の実施形態では、次のA~Hのような効果がある。Aデータの読み取りの際には、冗長化のための複製データを格納しているいずれかのサーバを決定し、アクセスを分散させている。これにより、特定のデータにアクセスが集中する場合でも、このアクセスを分散させることができ、システム全体として高いスループットを維持することができる。Bデータの読み取りの際には、複数の異なるハッシュ値計算部のうちいずれかを乱数rで決定し、決定したハッシュ値計算部のハッシュ値hによって、冗長化のための複製データを格納しているいずれかのサーバを決定している。これにより、乱数rでアクセスを分散させることができ、自動アクセスソフトウェアロボットなどによる繰り返しのアクセスが同一のサーバに集中することを抑止することができる。Cデータの読み取りの際には、対象サーバを同期でロックし、非同期で入力クエリをサーバに送信したのち、非同期でサーバ群のロックを解除する。これにより、各サーバからの応答を待たずにサーバ群に入力クエリを送信できるので、高速に処理することができる。Dデータの書き込みの際には、データを複製して複数のサーバに格納している。これにより、耐障害性を高めることができる。Eデータの書き込みの際には、このデータのキーを複数のハッシュ関数によって複数のハッシュ値hを計算し、これらハッシュ値hに基いて第2のサーバ群と当該第2のサーバ群の順番を決定し、決定した第2のサーバ群をロックする。これにより、データの読み取りと競合した場合のデータの不整合を抑止することができる。F複数のハッシュ関数の順番は、全てのディスパッチャ14-nに於いて同一である。どのディスパッチャ14-nであっても、同一のキーを有するデータの書き込みの際に、同一の順番で同一の第2のサーバ群をロックする。これにより、複数のディスパッチャ14-nが、互いに異なるサーバをロックし、相手がロックしているサーバのロック解除を両方で待っている状態、いわゆるデッドロック状態が発生することを抑止することができる。Gデータの書き込みの際には、対象サーバ群を同期でロックしたのち、非同期で入力クエリを対象サーバ群に送信したのち、非同期で対象サーバ群のロックを解除する。これにより、各対象サーバからの応答を待たずに対象サーバ群に入力クエリを送信できるので、高速に処理することができる。Hデータの読み取りと書込みの際には、ハッシュ関数によってハッシュ値hを計算し、このハッシュ値hをコンシステントハッシュの環に配置して、対象サーバを決定する。これにより、サーバの増設と減設の際に、どのサーバにどのデータを移動すればよいかを、コンシステントハッシュの環に基いて容易に決定することができる。例えば、図4bに示す例に於いて、サーバIDが1のサーバを減設する際には、この減設するサーバに格納されているデータを、サーバIDが0のサーバに移動すればよい。サーバIDが7のサーバを増設する場合、n=6からn=0の間に新たにn=7のノードを設け、サーバIDが6のサーバから、このn=7のノードに対応するデータを増設するサーバに移動すればよい。第2の実施形態の構成第2の実施形態のデータベースクラスタシステム10の特徴は、複数のハッシュ関数で計算した複数のハッシュ値hをソートすることにより、デッドロックを発生しにくくすることである。第1の実施形態のデータベースクラスタシステム10は、ハッシュ関数自身の順番に依存してサーバのアクセス順番を決定している。しかし、キーを経ない更新、例えば、既にハッシュ値hだけが分かっている複数のデータの更新などでは、順番を決めることができず、デッドロックを抑制することができない。これは、ハッシュ関数が基本的に逆関数を持たないことによる。そこで、第2の実施形態では、ハッシュ関数の順番に依存しないサーバのアクセス順番の決定方法を提供する。第2の実施形態のデータベースクラスタシステム10は、第1の実施形態のデータベースクラスタシステム10図2と同様の構成を有している。第2の実施形態の動作図12は、第2の実施形態に於けるディスパッチャの動作を示すフローチャートである。図11に示す第1の実施形態のフローチャートと同一の要素には同一の符号を付与している。ここでは例として、ディスパッチャ14-1がロードバランサ13から入力クエリを受信したときの処理を示している。処理を開始したのち、ステップS10~S12の処理は、図11に示す第1の実施形態のステップS10~S12の処理と同様である。ステップS12Aに於いて、ディスパッチャ14-1のサーバ決定処理部25図3は、計算した全てのハッシュ値hをソートする。第2の実施形態では、全てのディスパッチャ14-nは、昇順にソートしている。しかし、これに限られず、全てのディスパッチャ14-nは、一意の順番となるようにソートすればよく、例えば、全て降順でソートしてもよい。ステップS13Aに於いて、ディスパッチャ14-1のコンシステントハッシュ計算部28図3は、全てのソートしたハッシュ値hを、コンシステントハッシュの環に適用する。以降、ステップS14~S17の処理は、図11に示す第1の実施形態のステップS14~S17の処理と同様である。これにより、ステップS14に於いて、対象サーバと当該対象サーバの順番とを決定可能である。この対象サーバは、第3のサーバ群である。また、ステップS20~S27の処理は、図11に示す第1の実施形態のステップS20~S27の処理と同様である。第2の実施形態の効果以上説明した第2の実施形態では、次のIのような効果がある。I全てのハッシュ値hをソートし、これらソートした順番のハッシュ値hに対応する第3のサーバ群にアクセスする。これにより、データの複製に限られず、如何なるデータ集合の更新においても、第3のサーバ群へのアクセス順番を一意に決定し、デッドロックを回避することができる。変形例本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能である。この利用形態や変形例としては、例えば、次のa~fのようなものがある。a第1の実施形態および第2の実施形態のディスパッチャ14-nでは、各対象サーバであるサーバ15-nに非同期でクエリを送信している。しかし、これに限られず、同期でクエリを送信してもよい。b第1の実施形態および第2の実施形態のディスパッチャ14-nでは、各対象サーバであるサーバ15-nを非同期でロック解除している。しかし、これに限られず、同期でロック解除してもよい。c第1の実施形態および第2の実施形態のデータベースクラスタシステム10は、ロードバランサ13と、複数のディスパッチャ14-nとを備えている。しかし、これに限られず、ロードバランサ13を有さず、かつ単一のディスパッチャ14-1のみを備えていてもよい。d第1の実施形態および第2の実施形態のデータベースクラスタシステム10は、サーバ15-nは、ディスパッチャ14-nと、プロセッサ16-nと、ストレージ17-nとを有している。しかし、これに限られず、ディスパッチャ14-nは、プロセッサ16-nとは別のサーバに格納されていてもよい。e第1の実施形態および第2の実施形態のディスパッチャ14-nは、コンシステントハッシュ計算部28を有している。しかし、これに限られず、ディスパッチャ14-nは、ハッシュ値hから対象サーバを決定できる関数を備えていればよい。f第1の実施形態および第2の実施形態のディスパッチャ14-nは、乱数計算部26を有し、この乱数計算部26が生成する乱数rによって、複数の異なるハッシュ値計算部のいずれかを決定している。しかし、これに限られず、ディスパッチャ14-nは、複数の異なるハッシュ値計算部のいずれかを決定可能であればよい。例えば、複数の異なるハッシュ値計算部のいずれかを、ラウンドロビンで決定してもよい。"