"複数のストレージノードにノードIDと対応付けられたデータが分散保持され、各ストレージノードは、制御ノードから受信したメッセージに応答してデータを処理する分散データベースの制御方法において、制御ノードから受信したメッセージを各ストレージノードへマルチキャストで転送する中継ノードを備え、各ストレージノードが、自ノードおよび他の一部のノードの各マルチキャストグループアドレスを中継ノードへ通知して同一のマルチキャストグループへ参加する手順と、制御ノードが、メッセージの宛先となるストレージノードのマルチキャストグループアドレスを識別する手順と、制御ノードが、前記マルチキャストグループアドレス宛にメッセージを送信する手順と、中継ノードが、前記メッセージを受信して前記マルチキャストグループアドレスに対応するグループに参加しているストレージノードを識別する手順と、中継ノードが、前記識別されたストレージノードへ前記メッセージを転送する手順とを有することを特徴とする分散データベースの制御方法。前記各ストレージノードは、自ノードのノードIDの上位のビット列に基づいて自ノードのマルチキャストグループアドレスを生成することを特徴とする請求項1に記載の分散データベースの制御方法。前記各ストレージノードに保持されるデータが、KEYとVARUEとのペアであることを特徴とする請求項1または2に記載の分散データベースの制御方法。前記中継ノードが、IPマルチキャストルータであることを特徴とする請求項1ないし3のいずれかに記載の分散データベースの制御方法。前記制御ノードから中継ノードへ送信されるメッセージが、各ストレージにデータを保持させる挿入メッセージであることを特徴とする請求項1ないし4のいずれかに記載の分散データベースの制御方法。前記制御ノードから中継ノードへ送信されるメッセージが、各ストレージに保持されているデータから検索キーに対応したデータを検索させる検索要求メッセージであることを特徴とする請求項1ないし4のいずれかに記載の分散データベースの制御方法。従来のKVSには、ストレージノードの障害などに対応するため、同一データを複数のノードにコピーして保持する複製処理が実装されているが、この複製処理が全てユニキャストで行われ、制御ノードから各ストレージノードNへメッセージが別々に送信されるので、メッセージ数が増加によりトラヒック量が増えてしまう。また、データの複製処理が挿入処理の後で行われ、各処理に時差が生じるので、図8に一例を示したような不都合が生じ得る。すなわち、時刻t1において制御ノードがストレージノードNiへアクセスして挿入要求メッセージを送信すると、ストレージノードNiは、受信データを自ノードのストレージに保持した後、時刻t2,t3において、コピー用の挿入要求メッセージをストレージノードNi1,Ni1へそれぞれ転送する。各ストレージノードNi1,Ni1は、ストレージノードNiから転送されたデータを自ノードのストレージにそれぞれ保持する。その後、制御ノードにおいて、KEYに対応付ける値をVALUE1からVALUE2に変更する更新要求が検知されると、時刻t4では、制御ノードからストレージノードNiへ更新用の挿入要求メッセージが送信される。しかしながら、隣接する各ストレージノードNi1,Ni1へ前記コピー用の挿入要求メッセージが転送時刻t11t,12されるよりも前に、時刻t5,t6,t7において、制御ノードから各ストレージノードNi,Ni1,Ni1へ検索要求メッセージが送信されてしまうと、ストレージノードNiは、時刻t8において、更新後の検索結果を応答できるものの、ストレージノードNi1,Ni1は、時刻t9,t10において、それぞれ更新前の検索結果を応答することになる。その結果、制御ノードでは更新前のデータが検索結果として処理されてしまう。本発明の目的は、上記した従来技術の課題を全て解決し、データの挿入処理や検索処理の際に送受されるメッセージのトラヒック量を抑制し、常に正当な検索結果を得られる分散データベースの制御方法を提供することにある。上記の目的を達成するために、本発明は、複数のストレージノードにノードIDと対応付けられたデータが分散保持され、各ストレージノードは、制御ノードから受信したメッセージに応答してデータを処理する分散データベースの制御方法において、制御ノードから受信したメッセージを各ストレージノードへマルチキャストで転送する中継ノードを備え、各ストレージノードが、自ノードおよび他の一部のノードの各マルチキャストグループアドレスを中継ノードへ通知して同一のマルチキャストグループへ参加する手順と、制御ノードが、メッセージの宛先となるストレージノードのマルチキャストグループアドレスを識別する手順と、制御ノードが、前記マルチキャストグループアドレス宛にメッセージを送信する手順と、中継ノードが、前記メッセージを受信して前記マルチキャストグループアドレスに対応するグループに参加しているストレージノードを識別する手順と、中継ノードが、前記識別されたストレージノードへ前記メッセージを転送する手順とを有することを特徴とする。本発明によれば、以下のような効果が達成される。中継ノードは、一のストレージノード宛のメッセージを受信すると、当該一のストレージノードアドレスと同一のマルチキャストグループへ参加している他のストレージノードへも当該メッセージをマルチキャストアドレスで同位に送信するので、複数のストレージノードへ同一メッセージを少ないトラヒック量で同時に転送できるようになる。同一のマルチキャストグループへ参加している複数のストレージノードへはメッセージが同時に送信され、各ストレージノードに保持されているデータが同時に更新されるので、挿入処理の直後に検索処理が要求された場合でも、常に正当な検索結果を提供できるようになる。以下、図面を参照して本発明の実施の形態について詳細に説明する。図1,2は、本発明が適用されるKVSのネットワーク構成を模式的に表現した図であり、多数のデータを分散保持する複数のストレージノードNと、各ストレージノードNへのデータの挿入検索削除を管理する制御ノード1と、制御ノード1から受信したメッセージをIPマルチキャストで各ストレージノードNへ転送する中継ノード2からと構成され、本実施形態では、前記中継ノード2としてIPマルチキャストルータが用いられている。前記制御ノード1は複数台存在しても良いし、ストレージノードNと物理的に同一であっても良いが、ここでは、1台の制御ノード1がストレージノードNとは別に独立して設けられている場合を例にして説明する。各ストレージノードNには、予め固有のIDが割り当てられており、IDの値域は0≦ID≦IDMAXであって整数値をとるものとする。各ストレージノードNは、ID順かつID=0のストレージノードN0とID=IDMAXのストレージノードNmaxとが連結されて環状に配置されていると考える。ここでは、あるストレージノードNiから見て時計回り方向に隣接するストレージノードNi1を後ノード、反時計回り方向に隣接するストレージノードNi1を前ノードと表現する。また、各ストレージノードN、制御ノード1および中継ノード2は、他の全てのストレージノードNとの通信に必要な情報を知っているものとするJOIN処理図3のタイムチャートを参照し、各ストレージノードNiは、自ノードに割り当てられているノードIDiから生成されるマルチキャストグループアドレスGroup、および前後に隣接する2つのストレージノードNi1,Ni1に割り当てられるノードIDi1,IDi1から生成される2つのマルチキャストグループアドレスGroup,Groupへの参加JOINを、時刻t21において中継ノード2へ通知する。同様に、時刻t22ではストレージノードNi1が、自ノードおよび各隣接ノードの3つのマルチキャストグループアドレスGroup,Group,GroupへのJOINを中継ノード2へ通知し、時刻t23ではストレージノードNi1が、自ノードおよび各隣接ノードの3つのマルチキャストグループアドレスGroup,Group,GroupへのJOINを中継ノード2へ通知する。図4は、本実施形態におけるマルチキャストグループアドレスGroupの生成方法を示した図であり、32ビットのGroupの下位24ビットには、ノードIDの上位24ビットが採用され、上位8ビットには、マルチキャストグループアドレスに固有の固定値が採用される。挿入処理図1,3を参照し、制御ノード1においてデータの挿入要求が検知されると、そのKEYのハッシュ値に基づいて、当該データが挿入されるストレージノードNiのIDiが一意に特定される。次いで、前記IDiに基づいてマルチキャストグループアドレスGroupが上記と同様に生成され、時刻t24において、当該マルチキャストグループアドレスGroupに対して、前記挿入メッセージがIPマルチキャストパケットで送信される。前記挿入メッセージを受信した中継ノード2は、そのマルチキャストグループアドレスGroupにJOINしているグループのストレージノードN図3ではNi,Ni1、Ni1を識別し、時刻t25において、各ストレージノードNへ前記挿入メッセージを転送する。各ストレージノードNは、受信メッセージに記述されている挿入データを自ノードが保持すべきか否かを判定し、保持すべきデータと判定されれば自ノードのストレージに保持する。これにより、前記挿入データはストレージノードNiに保持されると同時に、隣接する2つのノードNi1,Ni1にもバックアップされることになる。検索処理図2,3を参照し、制御ノード1においてデータの検索要求が検知されると、そのKEYのハッシュ値に基づいて、検索対象のデータを保持するストレージノードNiのIDiが一意に特定される。次いで、前記IDiに基づいてマルチキャストグループアドレスGroupが算出され、時刻t26において、当該マルチキャストグループアドレスGroupに対して、前記検索メッセージがIPマルチキャストパケットで送信される。前記メッセージを受信した中継ノード2は、そのマルチキャストグループアドレスGroupにJOINしているグループのストレージノードN図3ではNi,Ni1、Ni1を識別し、時刻t27において、各ストレージノードNへ前記検索メッセージを転送する。前記検索メッセージを受信した各ストレージノードNは、自ノードのストレージを前記検索キーで検索し、時刻t28,t29,t30において、検索結果の値をそれぞれ制御ノード1へ応答する。制御ノード1は、検索結果のうち同じ結果が2つ以上あれば、その値を検索結果として処理する。ところで、上記のように各ストレージノードNiが、自ノードに割り当てられているノードIDiから生成されるマルチキャストグループアドレスGroup、および前後に隣接する2つのストレージノードNi1,Ni1に割り当てられるノードIDi1,IDi1から生成される2つのマルチキャストグループアドレスGroup,GroupへJOINすると、複数の異なるストレージノードNに同一のマルチキャストグループアドレスが割り当てられてしまう衝突が生じ得る。これは、マルチキャストグループアドレスの値域がノードIDの値域よりも狭いことに起因する。図5は、マルチキャストグループアドレスが衝突する例を示した図であり、ストレージノードNi1,Ni2およびNi3には、それぞれのノードIDの上位ビットを利用して生成された固有のマルチキャストグループアドレスGroup=Gj1、Group=Gj1、Group=Gj2が割り当てられている。これに対して、ストレージノードNiおよびNi1は、それぞれのノードIDの上位ビットを利用して生成されたマルチキャストグループアドレスが同値Group=Groupとなるために共通のグループアドレスGjが割り当てられている。したがって、例えばデータの挿入処理において、そのKEYのハッシュ値に基づいてストレージノードNiのIDiが一意に特定され、当該IDiから生成されたマルチキャストグループアドレスGroup=Gjに対して挿入メッセージがIPマルチキャストパケットで送信されると、前記データは4つのストレージノードNi1,Ni,Ni1およびNi2に保持されることになる。このため、マルチキャストグループアドレスの衝突時であっても、本実施形態では、ノードIDの上位ビットがマルチキャストグループアドレスの下位ビットであり、衝突するグループアドレス同士は必ずID空間で隣接することが保障されているので、マルチキャストグループアドレスの衝突処理が不要である。"