説明

データ検索システム及びデータ検索方法、ノード及びそのコンピュータプログラム

【課題】ノード間においてターゲットデータを管理するに際して、個々のターゲットデータの柔軟な配置と、安定したメッセージ転送とを実現するデータ検索システム等を提供する。
【解決手段】各ノードは、自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子と、メッセージを受信したノードが、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子とを有し、前記第1の識別子を基に決定した値域に属するところの、第3の識別子によって特定されるターゲットデータを保持する保持手段と、前記第2の識別子が含まれる経路情報を用いてメッセージを転送すべき他ノードを決定する転送手段とを備え、前記転送手段は前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、管理対象のデータ(ターゲットデータ)を、P2Pを構成するノード間において管理するデータ検索技術に関する。
【背景技術】
【0002】
P2P(Peer to Peer、ピアツーピア)とは、特定のサーバによらず、ピア(ノード)と呼ばれる互いに対等な複数の通信装置によって構成される分散型のデータ検索システムによく用いられるアーキテクチャである。即ち、P2Pとは、通信方式、通信モデル、あるいは、通信技術の一分野を指す。このようなP2Pを、継続的あるいは一時的に、コンピュータネットワーク(通信ネットワーク)に接続した計算機群によって構成するに際して、各計算機のCPU(Central Processing Unit)は、ピア(ノード)と呼ばれるプロセス(処理、プログラム)を、1つあるいは複数実行する。P2Pを構成する分散型のデータ検索システムにおいて、各ノードは、管理対象である複数のデータを、個々のノード、或いは一部のノードに分配した状態で保持する。そして、これらのノードは、互いに対等に通信を行いながら、データの検索や新しいデータの登録といった管理対象のデータに対する処理を実現する。本願において、管理対象のデータとは、例えば動画や音楽などのコンテンツ情報や、データベースのインデックス情報、プログラム(ソフトウェア・プログラム・モジュール)を構成する情報などを指す(以下、これらのデータを「ターゲットデータ」と称する)。但し、係るターゲットデータは、それ以外の情報であっても構わない。
【0003】
ところで、P2P技術の一類型として、上記のようなデータ検索システムに一般的に適用される技術として、分散ハッシュテーブル(Distributed Hash Table:DHT)がある。
【0004】
DHTにおいて、あるコンピュータネットワークに接続された計算機群の各CPUは、ノードに所定の方法で論理的な識別子(論理識別子、識別子、ID)を与える、そして、DHTでは、ノードを識別子空間にマップ(マッピング)することで、当該コンピュータネットワークの上に、論理的には別のネットワークが構築される。DHTにおいて個々のCPUがノードに論理識別子を与える所定の方法は、実装の形態などによって様々である。但し、一般的なDHTでは、ハッシュ関数の出力値であるハッシュ値を、論理識別子として使用する方法が知られている。この場合、物理的に存在するコンピュータネットワーク上に論理的なネットワークが構築されることにより、DHTのノードは、当該コンピュータネットワークよりも下位のコンピュータネットワークのトポロジを意識しない通信を行うことができる。すなわち、DHTにおける任意のノードは、IPアドレスなどのコンピュータネットワーク上のアドレス(住所)を知らない他ノードとも通信を行うことができる。このように、あるコンピュータネットワーク上に構築される別のネットワークのことを、“オーバレイネットワーク”と呼ぶ。即ち、オーバレイネットワークとは、インターネットなどの物理的なトポロジとは独立したアプリケーションレベルのネットワークである。本願における以降の説明では、コンピュータネットワーク及び通信ネットワークを“ネットワーク”と略称する場合がある。一方、係るオーバレイネットワークを意味するときは、略称せずに“オーバレイネットワーク”と表現する。
【0005】
図2は、本願に関連するオーバレイネットワークと、下位のコンピュータネットワークとの対応関係を模式的に例示する図である。図中の破線矢印は、コンピュータネットワークに接続された計算機(黒丸)と、オーバレイネットワークにおけるノード(白丸)との対応関係を表している。図2に示される通り、一つの計算機は、オーバレイネットワークでは複数のノードとして振舞う場合もある。また、コンピュータネットワークのトポロジと、オーバレイネットワークのトポロジとは、同一であるとは限らない。
【0006】
DHTを用いた分散型のデータ検索システムにおいて、コンピュータネットワークに接続された計算機群の各CPUは、所定の方法でターゲットデータに論理識別子を与える。そして、各CPUは、論理識別子を与えたターゲットデータを、論理識別子に従って、ノードと同じ識別子空間へマップすることにより、当該ターゲットデータを、各ノードに分散配置する。ここで、ターゲットデータに対して論理識別子を与える方法としては、採用するDHTのアルゴリズムや実装形態によって様々である。例えば、係る方法としては、ハッシュ関数の出力値であるハッシュ値を論理識別子として利用する方法を採用することができる。
【0007】
図3は、非特許文献1に記載されているChordアルゴリズムを例に、識別子空間におけるノードと、ターゲットデータとの対応関係を例示する図である。図3において、二重破線の円環(Circle)は、Chordにおける識別子(ID)空間を表している。図3に示す例において、識別子の全体の値域は、0以上128未満とする。ここで、5つの白丸は、ノードを表す。説明の便宜上、個々のノードには、ラベルa〜eが付与されている。ここで、ラベルとは、各CPUがノードとして実行するプロセスが当該システムには複数存在する場合があるため、便宜上、それらを区別するために付与した記号(ノードの名称)である。図3では、ノードに付与される識別子によっても、ノードを区別することは可能である。尚、後述する実施形態に係る負荷分散によって、ノード(プロセス)は、実行中に、自ノードが持つ識別子の値を変更する可能性がある。そのため、プロセスを真に特定するためには、ラベルを用いることとする。
【0008】
また、図3に示す円環において、各ノードの下部には、個々のノードのノード識別子(ノードID:NID)を表記する。本願において、ノード識別子は、識別子空間上の位置の名称を表しており、ノードが所持している情報である。白い四角形は、ターゲットデータを表す。各ターゲットデータの上部には、個々のターゲットデータのデータ識別子(データID:DID)を示す。図3によれば、ノードとターゲットデータとが同じ識別子空間上にマップされていることが判る。以降、便宜上、ノードに付与される識別子をノードID、データに付与される識別子をデータIDと呼ぶ。但しこれらの識別子は、何れも同じ識別子空間から得られる値であることに注意する。また、以下の説明において、ノードIDとデータIDどちらにも当てはまる説明については、単に“識別子”と表現する場合がある。
【0009】
ところでDHTでは、識別子に距離の概念が採用されている。DHTにおいて、係る距離の概念は、分散配置されたデータ(ターゲットデータ)の管理に関して非常に重要な役割を果たす。距離の定義は、アルゴリズムによって異なる。例えばChordにおける距離の定義によると、識別子Xからの距離が最も小さい(短い)識別子は、Xの次に値が大きな識別子である。一方、識別子Xからの距離が最も大きい(長い)識別子は、Xの次に値が小さな識別子である。つまり、識別子空間上において値が異なる二つの識別子XとYとに注目した場合、XからYまでの距離の大きさは、YからXまでの距離の大きさと同値ではない。例えば図3において、ノードaにとって最も近いノード(すなわち、ノードaからの距離が最も小さいノード)は、ノードaの次に値が大きいノード識別子を持つノードbである。これに対して、ノードbにとって最も近いノードは、ノードbの次に値が大きいノード識別子を持つノードcである。
【0010】
また、識別子空間は、図3に示す如く循環している。言い換えれば、図3に示す識別子空間は、前述した通り識別子の全体の値域を0以上128未満と仮定したため、当該識別子空間において最大の識別子値である127の次に大きい識別子値は0である。このため、ノードeにとって最も近いノードは、ノードaとなる。Chordでは、自ノードからの距離が最も近い他ノードは、そのノードのサクセッサと呼ぶ。一方、自ノードまでの距離が最も近い他ノードは、そのノードのプレデセッサと呼ぶ。従って、図3に示す例において、ノードeのサクセッサはノードaである。ノードeのプレデセッサはノードdである。
【0011】
尚、Chordと同様に識別子空間がリング状で、同様の距離の定義を持つ異なるアルゴリズムとして、他にKoorde(非特許文献4)と呼ばれるアルゴリズムも存在する。
【0012】
上述したように、ノードは、所定の規則に基づき定められた識別子の、ある値域を情報として保持する。ここで、値域とは、ある値から他の値までの値の範囲である。そして、ノードは、この値域に属するデータIDを持つデータを、ターゲットデータとして管理する。以降、本願では、このような識別子空間上の値域を、“データ保持値域”と呼ぶ。また、ある識別子Xがあるノードのデータ保持値域に属するとき、そのノードを、識別子Xの“担当ノード”と呼ぶ。DHTにおいて、識別子Xの担当ノードは、識別子Xから最も近い識別子を持つノードである。よって、あるノードのデータ保持値域は、自ノードIDまでの距離が最も小さい他ノードのノードIDから、自ノードIDまでの範囲として算出される。例えば、距離の定義が非対称であるChordアルゴリズムでは、あるノードのデータ保持値域は、プレデセッサのノードIDより大きく、かつ、自ノードID以下である。
【0013】
図4は、図3に例示したノードa〜eの夫々のデータ保持値域と、それらノードが保持するデータとの関係を説明する図である。表1は、図3に例示した各ノードのデータ保持値域を表すテーブルである。
【0014】
【表1】

【0015】
本願において、データ保持値域は、数学的な表記によって表現される。例えば、表1に示すノードcのデータ保持値域(28、56]は、識別子28より大きく識別子56以下であることを意味する。例として、表1におけるノードa〜eが保持するターゲットデータの一覧を、図4(a)から図4(e)にリストする。当該リストに示すように、各ノードは、ターゲットデータに与えられたデータIDと、ターゲットデータとを関連付けて保持していることとする。ノードのデータ保持値域が大きいほど、そのノードは、確率的に数多くのターゲットデータを保持する。そして、各ノードにおいて、もし、そのノードのターゲットデータに対する格納容量やネットワークの帯域幅に対して、管理すべきターゲットデータの件数やデータボリュームが大きいとき、そのノードの負荷は高いと言える。
【0016】
複数のノードによって複数のターゲットデータを分散管理するためには、ノード間における通信は欠かせない。DHTを採用するノードは、任意の識別子を検索キーとし、その検索キーの担当ノードへメッセージを届ける通信を行う。ノード間において通信されるメッセージには、検索用のキー値と、宛先ノードへの何らかの処理命令(処理要求)とが記述されている。記述される処理命令としては、例えば、ターゲットデータの検索命令や登録命令などが挙げられる。ノードは、オーバレイネットワークに参加している他のすべてのノードの、ネットワーク上の住所(例えばIPアドレス)を知っているとは限らない。このため、ノードは、検索キーの担当ノードの住所を知らない場合もある。このような場合、各ノードは、それぞれが持つ経路表から適切なノードを選び、メッセージをノード間でリレー(中継、転送)することにより、当該メッセージを、担当(宛先)ノードに最終的に届ける(“経路表”については図5を参照して後述する)。そして本願では、メッセージが経由するノードの道筋を、“経路(Route)”と称する。また、メッセージをノード間において転送する処理を、メッセージ転送(メッセージ転送処理)と称する。
【0017】
経路表が保持する他ノードの情報(経路情報)は、ネットワークからメッセージを受け取ったノードが、そのメッセージを、次の適切な他ノードへ転送することが可能な情報であれば、どのような情報であっても構わない。
【0018】
図5(a)から図5(e)は、図3に例示した5つのノードa〜eの経路表を例示する図である。これらの経路表には、経路情報として、各ノードの識別子空間上の値(たとえばノードID)と、ネットワーク上のアドレス(住所)とが登録されている。ここではIPアドレスとポート番号がネットワーク上のアドレスである。どのような基準で経路表に登録すべき他ノードを選ぶかは、実装態様やアルゴリズムによって異なる。図5(a)から図5(e)に例示した各表は、Chordアルゴリズムに則って作られている。
【0019】
経路表の中から、次にメッセージを転送べきノードを選択する方法は、実装形態やアルゴリズムによって異なる。但し、基本的には、受け取った検索キーが表す識別子からの距離がより小さくなるような識別子を持つ他ノードへ、メッセージは転送される。例として、Chordアルゴリズムにおけるメッセージ転送の動作を以下に説明する。
【0020】
Chordにおいて、各ノードは、自ノードのサクセッサがどのノードであるか、およびサクセッサの住所を必ず知っていることを前提とする。
【0021】
メッセージ転送の最終的な目標は、検索キー(ノードIDあるいはデータID)を含むメッセージを、識別子Xの担当ノードに転送することである。ここで、担当ノードとは、識別子空間上において、識別子Xからの距離が最も小さいノードIDを持つノード、あるいは、自ノードのデータ保持値域に識別子Xが属しているノードである。
【0022】
あるノードは、メッセージを受け取ると、メッセージに含まれる検索キーXと、自ノードおよび経路表に登録された全てのノードのノードIDとを比較する。Xまでの距離が最も小さいノードIDを持つノードが、自ノードがメッセージを転送すべきノードである。もし、経路表に登録された、サクセッサを含む他のどのノードより、自ノードIDからXまでの距離が小さいとき、自ノードは、自ノードIDとサクセッサのノードIDとの間に、Xが存在していることが判る。上述したサクセッサの定義によれば、自ノードとサクセッサとの間に他のノードは存在しない。そのため、自ノードは、Xからの距離が最も小さいノードIDを持つノードが自分のサクセッサであることが分かる。すなわち、サクセッサはXの担当ノードである。自ノードは、直ちにサクセッサにメッセージを転送し、当該メッセージに対するメッセージ転送処理は完了する。
【0023】
Chordでは、上述した手順のように、検索キーXを含むメッセージは、必ずXの担当ノードをサクセッサとして持つノードにたどり着き、その次の転送で担当ノードにたどり着く。以降の説明において、Xの担当ノードをサクセッサとして持つノードは、Xのルートノード(Root Node)と呼ぶ。
【0024】
図6に示す状態(a)から状態(e)は、図3に例示する識別子空間におけるメッセージ転送の動作の流れを説明する図である。はじめに、図6の状態(a)に示すように、ノードcは、オーバレイネットワークの外部から受信したメッセージにより、識別子3を持つターゲットデータの検索命令を取得したとする。このメッセージには、検索キーとして、探したいターゲットデータの識別子値(ここではデータID=3)が含まれている。また、ここでは図6の状態(a)に例示するように、ノードcがオーバレイネットワークの外部からメッセージを受信している。尚、DHTでは、一般に、任意のノードが外部からメッセージを受信可能である。
【0025】
次に、図6の状態(b)に示すように、ノードcは、まず自ノードのデータ保持値域(28、56]に、当該識別子(データID=3)が属さないことを確認する。その後、ノードcは、自ノードおよび経路表(図5(c))に登録されたノードの中から、データID=3までの距離が最も小さいノードIDを持つノードeを選ぶ。そしてノードcは、ノードeに対して、当該メッセージを転送する(図6の状態(b)に示す動作<1>)。
【0026】
ノードeは、当該メッセージを受信するのに応じて、ノードcと同様に、自ノードのデータ保持値域(64、121]にデータID=3が属するか否かを確認し、この例の場合は属さないと判断する。そこで、ノードeは、自ノードおよび経路表(図5(e))に登録されたノードの中から、データID=3までの距離が最も小さいノードIDを持つノードaを選び、ノードaに対してメッセージを転送する(図6の状態(b)に示す動作<2>)。
【0027】
同様な手順により、ノードaもまた、自ノードのデータ保持値域(121、2]にデータID=3が属さないのを確認した後、自ノードおよび経路表に登録されたノードの中から、データID=3までの距離が最も小さいノードIDを持つノードaを選ぶ。この場合、ノードaは自ノードを選んだため、ノードaは、データID=3のルートノードが自分であり、かつ、担当ノードが自分のサクセッサ(ノードb)であることを認識する。ノードaは、ノードbに対して、ノードcがデータID=3のターゲットデータを探していることを、メッセージによって伝達する(図6に示す状態(c))。メッセージを受け取ったノードbは、ノードcへデータID=3のターゲットデータを送信する(図6に示す状態(d))。そして、ターゲットデータを受け取ったノードcは、当該検索命令の発行元に対して、当該ターゲットデータを送信する(図6に示す状態(e))。
【0028】
上述したノードは、必要に応じて、オーバレイネットワークへの参加(加入)、或いは離脱(脱退)を行う場合がある。あるいは、何らかの不具合により、係るノードは、短期的あるいは長期的に通信不可能な状態に陥ることがある。これにより、経路表に登録されたノードの識別子や住所などの経路情報は、時間の経過に伴い失効する可能性がある。例えば、図3におけるノードeが、突然の不具合で通信不可能になったと仮定する。このとき、図6に示した一連の状態(a)から(e)に例示した手順によってメッセージ転送を行おうとすると、ノードcの経路表(図5(c))からノードeを選択し、ノードeに対してメッセージを送信しても通信は失敗する。このとき、実装態様によっては、ノードcは、経路表の中から、検索キーまでの距離が次に近いノードdを選択することによって再びメッセージの送信を試みるなどの処置を行う。しかしながら、通信の失敗による通信遅延はどうしても生じる。
【0029】
このような問題を未然に防ぐため、DHTのアルゴリズムでは、各ノードが経路表のヘルスチェックを行う。ヘルスチェックは、経路表に登録されている他ノードに関する経路情報が正しいかどうかを、その他ノードと通信を試みることによって確認可能な機能である。更にヘルスチェックは、もし経路情報が間違っていた場合はその経路情報を経路表から削除する、ないしは、正しい経路情報に書き換える機能である。Chordでは、ヘルスチェックは定期的に行われる。図3に例示する状況においてノードeが通信不可能に陥った場合、あるタイミングにおけるチェックで、ノードa、b、c、dは、ノードeの経路情報が失効していることを検出する。その時点において、夫々のノードは、経路表からノードeに関する情報を削除する。しかしながら、どのアルゴリズムにおいても、実際に経路情報が失効したタイミングからヘルスチェックにより経路表が正されるまでの時間は、経路表は失効した情報を含むことになる。ノードのオーバレイネットワークへの参加や離脱が頻繁な場合などは、経路表に失効した情報が含まれる確率が高くなるため、通信効率はより低下する。
【0030】
先述したように、DHTでは、データ保持値域が広いほど、多くのターゲットデータを保持する確率が大きくなる。すなわち、管理するターゲットデータの量が増えるので、ノードの負荷が比較的大きくなる。あるノードに過大な負荷が集中すると、そのノードの処理効率は低下し、結果として、データ検索システム全体の処理効率が低下する。そのため、DHTでは、重要な要素技術として、様々な負荷分散技術が提案されている。
【0031】
本願に関連する多くの負荷分散技術において、CPUは、負荷の高いノードや他のノードのデータ保持値域を変更する。そしてCPUは、その値域から外れたデータIDに対応するターゲットデータを、新たな担当ノードへ移すことによって負荷の分散を実現する。係る多くの負荷分散技術は、このような技術的アプローチを採用する。ここで、データ保持値域を変更するアプローチを採用する負荷分散技術のイメージ図を、図7に示す。
【0032】
図7は、負荷分散に際してデータ保持値域を変更するアプローチを取る関連技術を説明する図である。即ち、図7は識別子空間の一部を表わしており、ノードXとノードYとが空間上に隣りあって存在している。図7に示す例では、ノードXのデータ保持値域に属するターゲットデータが多いので、ノードXは負荷が大きい。そこで、係る負荷分散技術では、ノードIDを基に算出されるデータ保持値域を変更することで、一部のターゲットデータの担当ノードをノードXからノードYとし、これにより負荷の分散を図っている。ここで、上記のようなデータ保持値域を変更するアプローチを採る手法としては、インターバルシフト(非特許文献2)、仮想サーバ(非特許文献3)、仮想ノード(非特許文献2)と呼ばれるアルゴリズムなどが提案されている。
【0033】
ここで、データ保持値域を変更することで負荷分散を行う動作を、図8(a)から図8(c)、並びに表1を参照して具体的に説明する。
【0034】
図8(a)から図8(c)は、図3に示す識別子空間において、インターバルシフトを適用する動作を例示的に説明する図である。インターバルシフトは、負荷の高いノードが、自ノードのデータ保持値域を、データ保持値域が隣り合う他ノードとの間で調整することによって狭くする手法である。具体的には、自ノードのノードIDの値を変更することにより、自ノードのデータ保持値域を狭くする。ここでこの手法について概説する。
【0035】
図3に示すノードeにおいて、データ保持値域は、前述した表1に示したように(64、121]である。係るデータ保持値域に対応して、ノードeは、図8(a)に示すように、8個のデータ(即ち、DID=64、70、80、82、103、110、115、119)を保持している。このため、ノードeは、その他のノードに比べて負荷が高い。その一方で、ノードeとデータ保持値域が隣り合うノードa及びノードdは、保持しているデータが夫々1個であるため、ノードeと比較して負荷が小さい。このとき、ノードeは、隣り合うノードa及びノードdと通信することにより、より負荷の軽いノードを、負荷の分散先として選択すべきである(ここではノードaを選択したとする)。ノードeは、自ノードが管理するオブジェクトデータの一部を、ノードaに移譲(分散)できるように、自ノードのノードIDの値を変更する。ノードID値をどのように変更するかは、アルゴリズムや実装態様によって異なる。ここではノードeは、保持するデータ数が以前の半分になるよう、自ノードの識別子を93に設定する(図8(b))。これにより、ノードeのデータ保持値域は(64、93]、ノードaのデータ保持値域は(93、2]となる。そこで、ノードeは、自ノードに代わりノードaが新たに管理することになったターゲットデータ(ID103〜119)を、ノードaに送信する(図8(c))。この一連の動作により、ノードeは、管理するデータの数を減らした分だけ負荷が軽くなる。
【0036】
しかしながら、先述した負荷分散の手法には、以下の問題がある。
【0037】
第一に、DHTにおけるメッセージ転送は、経路表に登録された経路情報(ノードの住所やノードID)が全て正しい場合に限って、最適な、あるいは最短の経路を辿って宛先ノードへたどり着くことが実現できる。しかしながら、経路表から選んだメッセージの転送先ノードの経路情報が既に失効していた場合は、非効率な経路選択となる。例えば、次の転送先として選択したノードの経路情報のうち、住所(IPアドレスやポート番号)が失効していた場合は、通信そのものが失敗する。或いは、住所は正しくともノードIDが負荷分散によるノードIDの変更などで失効していた場合は、選択したノードにメッセージが無事に届けられたとしても、最短経路が選択された可能性は低くなる。
【0038】
例えば、図8(c)に示す状態の直後に、オーバレイネットワークの外部から、データID=119のターゲットデータを検索する要求を、ノードcが新たに取得した場合を考える。そしてこの場合、何れのノードも経路表のヘルスチェックがまだ行われておらず、経路表は、図5(a)から図5(e)に示す状態であると仮定する。
【0039】
上記のような状況において、ノードcは、まず、自ノードと経路表(図5(c))とに登録された他ノードdおよびeの中から、データID=119までの距離が最も小さいノードIDを持つノードdを選択する。そしてノードcは、ノードdへ検索キー(データID=119)を含むメッセージを転送する。
【0040】
メッセージを受け取ったノードdは、同様に、自ノードと経路表(図5(d))とに登録された他ノードaおよびeの中から、検索キーまでの距離が最も小さいノードIDを持つノードdを選択する。この場合、選択したノードが自ノードであるため、ノードdは、自ノードがデータID=119のルートノードであると判断する。更にノードdは、サクセッサであるノードeが、データID=119の担当ノードだと判断する。そしてノードdは、ノードeに対して、データID=119に対応するターゲットデータを要求する。しかし実際は、図8(a)乃至図8(c)を参照して上述した一連の負荷分散動作によって、このターゲットデータは、既にノードaが所持している。このため、ノードeは、要求元であるノードcに対して、当該ターゲットデータを送信することができない。このとき、実装態様によっては、ノードeは検索失敗のメッセージを、ノードcへ向けて送信し、メッセージの転送を終えるかもしれない。あるいは、ノードeは、自ノードが持つ経路表(図5(e))を用いてメッセージの転送処理をやり直すかもしれない。そしてこの場合、ノードeの経路表が図5(e)に示す状態のままであれば、ノードeは、メッセージの検索キーが表すデータID=119までの距離が最も近いノードはノードdであると判断する。そしてノードeは、データID=119に対するターゲットデータの検索要求メッセージを、ノードdへ改めて転送し直す。ノードdは、もし経路表がまだ図5(d)のままならば、先ほどと同様にノードeを検索キー119の担当ノードだと誤認する。このように、必要なノードにおいてヘルスチェックが実行され、且つ必要な経路情報が更新されるまでの間、当該メッセージは、オーバレイネットワーク上のノード間をさまよい、メッセージ転送が非効率になる可能性がある。
【0041】
このように、上述した関連技術に係る負荷分散手法には、各ノードのデータ保持値域を変更する過渡的な期間において、メッセージ転送の効率が一時的に悪化するという問題がある。これは、DHTにおいて、ノード識別子(ノードID)の値が、ターゲットデータをどの程度の数だけ保持するかを決める要素であると共に、ノード識別子の値が経路表にも含まれ、メッセージ転送に際して用いられることが原因である。
【先行技術文献】
【非特許文献】
【0042】
【非特許文献1】Ion Stoica,Robert Morris,David Karger,M. Frans Kaashoek and Hari Balakrishnan,”Chord:A Scalable Peer−to−Peer Lookup Service for Internet Applications,”2001.
【非特許文献2】Karger, David R., and Matthias Ruhl,”Simple Efficient Load−Balancing Algorithms for Peer−to−Peer Systems,”SPAA’04.
【非特許文献3】Ananth Rao, Karthik Lakshminarayanan, Sonesh Surana and Richard Karp,”Load Balancing in Structured P2P Systems,”IPTPS’03.
【非特許文献4】Kaashoek, Frans M., and David Karger,”Koorde: A Simple degree−optimal distributed hash table,”2003.
【発明の概要】
【発明が解決しようとする課題】
【0043】
関連技術として上述したDHTの効率化のための負荷分散技術においては、ターゲットデータを別ノードに移し替えるために、ノードの識別子(NID)を変更する。このため、係る負荷分散技術においては、複数のノードの経路表において一部の情報の失効が発生するのに応じて、それら経路表に登録されている経路情報の削除等の書き換えが行われる。そして、経路情報が書き換えられている過渡的な期間において、ノード間において転送されるメッセージは、場合(タイミング)によっては、書き換えが行われていない定常状態と比較して多くのノードを中継(迂回)される。このため、メッセージの転送に長い時間を要したり、或いは、通信が失敗するなどの問題が生じる。これは、経路情報の書き換えが行われている間にメッセージの転送が行われることに起因して、当該各ノードが接続されているネットワークの通信状態が不安定になることに起因する。
【0044】
即ち、上記の問題は、ノード毎に唯一決定されている識別子(ノードID:NID)が、ノードが管理するターゲットデータの量に影響を与えると同時に、経路情報の一部としても含まれているため、メッセージ転送の実行に際して、次の中継ノードを決定するために重要な役割を果たすことに起因する。
【0045】
更に、上述した問題は、ストレージの容量や帯域幅など、ターゲットデータを保持できる量に影響を与えるノード(ひいてはノードを実行するCPU(Central Processing Unit)や計算機)の性能がノードごとに異なるようなヘテロ(ヘテロジニアス)な環境において、以下に説明する更なる問題を派生する。
【0046】
即ち、上記のようなヘテロな環境の場合、ノードが保持できるデータの数量(ボリューム)は、ノードによって異なる。そのような環境において、各ノードの負荷ができるだけ均一に分散するようにターゲットデータを分配していくと、データ保持値域は、ノード毎に異なってくる。そして、データ保持値域の大きさに偏りが生じると、識別子空間上のある近接した範囲において複数のノードが識別子を割り当てられ、ノード群が比較的密集する現象が生じる。このとき、密集しているノードは、密集していないノードに比べて、ターゲットデータの保持量が少なく、且つ他ノードの経路表に登録される確率が低い。すなわち、メッセージの中継ノードとして選ばれる確率が低い。一般に、メッセージの情報量は、ターゲットデータの情報量より小さい。このため、多くのターゲットデータを保持しきれないノードであっても、メッセージの中継であれば実行可能な場合がある。しかしながら、上述のとおり、負荷分散の結果、データ保持値域の大きさがノード間で大きく偏ると、メッセージの中継ノードとして選ばれる確率にノード間で差が生じ、これに応じてノードのリソースに無駄が生じる。
【0047】
これは、関連技術として上述したDHT技術では、各ノードが保持するターゲットデータの数量に由来する負荷の観点から、個々のノードの経路表に対して、どの程度の数量の経路情報を登録するかを調整することが難しいためである。
【0048】
本発明は、上述した課題を解決することを目的とする。即ち本発明は、ノード間においてターゲットデータを管理するに際して、上述した関連技術と比較して、個々のターゲットデータの柔軟な配置と、安定したメッセージ転送とを実現するデータ検索システム等の提供を主な目的とする。
【課題を解決するための手段】
【0049】
上記の目的を達成すべく、本発明に係るデータ検索システムは、以下の構成を備えることを特徴とする。
【0050】
即ち、管理対象である複数のターゲットデータを、オーバレイネットワーク上に配置された複数のノードにおいて管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するデータ検索システムであって、
各ノードは、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子と、
メッセージを受信したノードが、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子とを有しており、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報を用いて、メッセージを転送すべき他ノードを決定する転送手段とを備え、
前記転送手段は、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する。
【0051】
また、例えば前記各ノードの転送手段は、
前記メッセージを受信するのに応じて、自ノードが保持する前記経路情報を参照した結果に応じてノード間においてメッセージの転送を繰り返すことにより、前記検索キーが表す識別子までの距離が最も小さい前記第2の識別子を持つ特定ノードに対して、前記メッセージを転送すると良い。
【0052】
また、上記の場合において、例えば前記複数のノードは、
自ノードが担当するストレージに関する情報を有しており、
前記特定ノードの転送手段は、
自ノードの前記ストレージに関する情報を参照することにより、自ノードが担当する担当ノードを探し出し、その担当ノードに対してターゲットデータの検索要求を発行するとよい。
【0053】
また、上記同目的を達成する他の観点は、管理対象である複数のターゲットデータを、オーバレイネットワーク上において管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するノードであって、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子と、
メッセージを受信した際、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子とを有しており、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報を用いて、メッセージを転送すべき他ノードを決定する転送手段とを備え、
前記転送手段は、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送することを特徴とする。
【0054】
尚、同目的は、上記の各構成のデータ検索システムに対応するデータ検索方法によっても達成される。
【0055】
また、同目的は、上記の各構成を有するノードを、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【0056】
本発明によれば、ノード間においてターゲットデータを管理するに際して、個々のターゲットデータの柔軟な配置と、安定したメッセージ転送とを実現するデータ検索システム等の提供が実現する。
【図面の簡単な説明】
【0057】
【図1】本発明の実施形態に係るデータ検索システムの構成を例示するブロック図である。
【図2】本願に関連するオーバレイネットワークと、下位のコンピュータネットワークとの対応関係を模式的に例示する図である。
【図3】非特許文献1に記載されているChordアルゴリズムを例に、識別子空間におけるノードと、ターゲットデータとの対応関係を例示する図である。
【図4】図3に例示したノードa〜eの夫々のデータ保持値域と、それらノードが保持するデータとの関係を説明する図である。
【図5】図3に例示した5つのノードa〜eの経路表を例示する図である。
【図6】図3に例示する識別子空間におけるメッセージ転送の動作の流れを説明する図である。
【図7】負荷分散に際してデータ保持値域を変更するアプローチを取る関連技術を説明する図である。
【図8】図3に示す識別子空間において、インターバルシフトを適用する動作を例示的に説明する図である。
【図9】本発明の第1及び第2の実施形態に係るデータ検索装置のハードウェア構成を例示的に説明する図である。
【図10】本発明の第2の実施形態に係るデータ検索システムを、Chordアルゴリズムに適用した動作例を説明する図である。
【図11A】図10における各ノードの担当ストレージ表を示す図である。
【図11B】図10における各ノードの隣接ストレージ表を示す図である。
【図12】本発明の第2の実施形態に係るデータ検索システムにおいて、高負荷な状態にあるノードeから負荷分散を行うときの動作の流れを説明する図である。
【図13A】本発明の第2の実施形態に係るデータ検索システムにおいて、オーバレイネットワークに新たなノードが参加する動作を説明する図である。
【図13B】本発明の第2の実施形態に係るデータ検索システムにおいて、オーバレイネットワークに新たなノードが参加する動作を説明する図である。
【図13C】本発明の第2の実施形態に係るデータ検索システムにおいて、オーバレイネットワークに新たなノードが参加する動作を説明する図である。
【図14】図13Aから図13Cに示すオーバレイネットワークへの参加動作において各ノードが参照する担当ストレージ表を例示する図である。
【図15】本発明の第2の実施形態に係るデータ検索装置が実行するターゲットデータの探索処理を示すフローチャートである。
【図16】本発明の第2の実施形態に係るデータ検索装置が実行するオーバレイネットワークへの参加処理を示すフローチャートである。
【図17】本発明の第2の実施形態に係るデータ検索装置が実行する担当ストレージ表の書き換え処理を示すフローチャートである。
【図18】本発明の第2の実施形態に係るデータ検索装置が実行するネットワークからの離脱処理を示すフローチャートである。
【図19】本発明の第2の実施形態に係るデータ検索装置が実行する負荷分散処理を示すフローチャートである。
【図20】本発明の第2の実施形態に係るデータ検索装置が実行する経路識別子の変更処理を示すフローチャートである。
【図21】本発明の第1の実施形態に係るデータ検索システムの構成を示すブロック図である。
【発明を実施するための形態】
【0058】
次に、本発明の模範的な実施の形態について、図面を参照して詳細に説明する。
【0059】
<第1の実施形態>
図21は、本発明の第1の実施形態に係るデータ検索システムの構成を示すブロック図であり、以下に説明する各実施形態およびその変形例に共通する概念を表す。
【0060】
図21に示すデータ検索システムは、管理対象である複数のターゲットデータを、オーバレイネットワーク上に配置された複数のノード(図21の例では3つのノードA、B、C)において管理する。そして、このデータ検索システムは、移動対象のターゲットデータの移動に先立って、その移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索する。
【0061】
ノード(データ検索装置)100は、保持部(ストレージ部)300と、転送部(メッセージ転送部)400とを備える。
【0062】
第1の識別子(ストレージ識別子(SID))301は、自ノードが保持すべきターゲットデータの値域を求めるための情報である。第2の識別子(経路識別子(RID))401は、受信したメッセージを他ノードに転送する転送経路の決定に用いる情報である。第3の識別子(データID(DID))302は、ターゲットデータを識別する情報である。
【0063】
保持部300は、第3の識別子(データID(DID))302によって特定されるターゲットデータ303を保持(格納)する。各ノードが保持するターゲットデータ303は、第1の識別子301を基に決定した値域に属するデータである。
【0064】
転送部400は、第2の識別子401が含まれる経路情報(経路表)402を用いて、メッセージを転送すべき他ノードを決定する。その際、転送部400は、第1の識別子301、第2の識別子401、第3の識別子302の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、経路情報402を参照する。その結果、転送部400は、対応する他ノードが存在する場合には、当該他ノードに対して、自ノードが受信した当該メッセージを転送する。
【0065】
本実施形態に係るデータ検索システムは、上記のように複数種類の識別子を用いて、ターゲットデータを管理している。このような本実施形態によれば、ノード間においてターゲットデータ303を管理するに際して、例えばあるノードにおける負荷を分散する必要が生じ、そのノードの第1の識別子301を変更したとしても、第1の識別子301とは独立している第2の識別子401は影響を受けない。即ち、本実施形態において、第2の識別子401が含まれる経路表の情報は失効することが無い。よって、本実施形態によれば、個々のターゲットデータの柔軟な配置と、安定したメッセージ転送とを実現することができる。
【0066】
<第2の実施形態>
次に、上述した第1の実施形態に係るデータ検索システムを基本とする模範的な第2の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第1の実施形態と同様な構成についての重複する説明は省略する。
【0067】
本実施形態に係る分散型のデータ検索システムは、コンピュータネットワークに接続された複数のノードによって構成される。このデータ検索システムは、あるノードから他ノードにターゲットデータを、DHTを用いて配置するシステムである。ここで、配置とは、ノード間におけるターゲットデータの移動、移譲、分配などを表す。このようなシステムでは、ノード間におけるターゲットデータの移動によるネットワーク上の通信トラフィックの発生を抑制する必要がある。本システムは、当該ターゲットデータの移動(配置)に先立って、対象となるノード間においてメッセージの転送(中継)を適宜行うことにより、移動対象のターゲットデータの異動先のノードを、メッセージを用いて探索する。このため、メッセージの情報量は、原則としてターゲットデータの情報量より少ないことが好ましい。
【0068】
本実施形態において、各ノードは、ネットワークに接続された計算機のCPUが実行するプロセス(ソフトウェアプログラム・モジュール)である。従って、本実施形態において、ネットワークに接続された複数のノードは、ハードウェア資源としての1台の計算機(CPU)が、いわゆる仮想マシンとして実現する形態、ノード毎に計算機が割り当てられた形態、並びにそれらを適宜組み合わせた形態などが想定される。
【0069】
また、本実施形態において、当該各ノードには、自ノードがターゲットデータを保持(格納)するための第1の識別子と、ノード間においてメッセージ転送を行うための第2の識別子とが与えられる。第1の識別子は、第1の実施形態における第1の識別子301に相当する。第2の識別子は、第1の実施形態における第2の識別子401に相当する。これら2種類の識別子は、同一の識別子空間から得られる値であり、同値である必要はない。本実施形態においても、以下の説明において、係る第1の識別子を“ストレージ識別子(SID)”、係る第2の識別子を“経路識別子(RID)”と称する。
【0070】
ストレージ識別子(SID)は、各ノードのデータ保持値域を決める値である。本実施形態において、第1ノードが保持するターゲットデータを第2ノードに分散(配置)するに際して、当該第1ノードは、ストレージ識別子の値を変更する。即ち、当該第1ノードのCPUは、自ノードのデータ保持値域を狭める等の処理を契機として、自ノード(第1ノード)に保持されているターゲットデータを、他ノード(第2ノード)に移譲する。これにより、例えば、多くのターゲットデータを処理しており負荷が高かった第1ノードから、比較的負荷が少なかった第2ノードへの負荷分散が実現する。
【0071】
経路識別子(RID)は、例えば、ターゲットデータを、オーバレイネットワークにおいて検索すべく、メッセージの転送経路を決定するために用いる値である。本実施形態において、各ノードの経路表に保持される経路情報は、ネットワーク上の住所(IPアドレスなど)と、経路識別子とを含む。本実施形態において上記負荷分散は、ストレージ識別子(SID)を用いて実行される。このため、本実施形態において経路識別子(RID)を用いて実行されるメッセージ転送は、上述した関連技術で説明した経路情報の失効などによる悪影響を受けない。
【0072】
ノードは、メッセージの受信に応じて、検索キーとなる識別子(データID、SID、あるいはRID)を取得する。そして、当該ノードは、自ノードの経路表の中で、当該検索キーまでの距離が最も小さい経路識別子を持つノード(特定ノード)に対して、当該メッセージを転送する。本実施形態において、メッセージには、検索用のキー値のほかに、ノードへの何らかの処理命令(処理要求)が記述されている。
【0073】
メッセージに含まれる処理命令がターゲットデータの検索要求である場合、上記転送処理が繰り返されることにより、当該メッセージは、やがて、オーバレイネットワークに参加している全てのノードのうち、当該検索キー値までの距離が最も小さい経路識別子を持つノード(特定ノード)にたどり着く。上述したように、当該ノードの経路識別子と、ストレージ識別子とは同値である必要はない。このため、当該ノードは、当該検索キー値が表す識別子に対応する担当ノードであるとは限らない。しかしながら、当該ノードの経路識別子の近くにデータ保持値域が広がっているような他ノードは、当該検索キーによって求めている担当ノードである可能性は高い。そこで本実施形態において、各ノードは、自ノードの経路識別子からの距離が小さいストレージ識別子を持つ他ノードの経路情報も保持する。この経路情報には、少なくとも、当該他ノードのデータ保持値域と、当該他ノードのネットワーク上の住所(アドレス)とが含まれる。このような経路情報群を、以下の説明では、“担当ストレージ表”と称する(詳細は図11Aを参照して後述する)。
【0074】
また、本実施形態では、自ノードの経路識別子から、受信した検索キーまでの距離が他のどのノードよりも十分近い場合、当該自ノードは、担当ストレージ表の中に、当該検索キーの担当ノードの経路情報を必ず持っていなければならない。ターゲットデータの検索要求を含むメッセージを、オーバレイネットワーク外部からあるノードが取得した際、当該メッセージは、経路表に基づき当該オーバレイネットワーク上のノード間において中継される。そして、当該メッセージは、そのメッセージに含まれる検索キーが表す識別子までの距離が最も小さい経路識別子を持つノード(特定ノード)にやがてたどり着く。
【0075】
当該メッセージを受信したノードは、自ノードの持つ担当ストレージ表を参照することにより、その担当ストレージ表に登録された各ノードのデータ保持値域を参照する。そして当該ノードは、自ノードの担当ノードを探し出して、その担当ノードに対してターゲットデータの検索要求を発行する。
【0076】
即ち、メッセージ転送がノード間において行われる過程において、当該メッセージが担当ノードにたどり着く最後のメッセージ転送動作を除いて、それ以外の中間ノードを転々とするメッセージ転送動作は、個々の経路表の中の経路識別子を参照することによって行われる。そして、当該メッセージが担当ノードにたどり着く最後のメッセージ転送動作においては、担当ストレージ表を参照することによって行われる。
【0077】
図1は、本発明の実施形態に係るデータ検索システムの構成を例示するブロック図である。図1に示すデータ検索システムは、ネットワークに接続された複数のノード1、2、3によって構成されている。本実施形態において、個々のノード(データ検索装置100)は、計算機のCPUにより実行されるプロセス(ソフトウェアプログラム・モジュール)である(詳細は、図9を参照して後述する)。
上述したように、個々のノードは、1台の計算機において複数のノードが仮想マシンとして実行される環境、1台の計算機に1つのノードが割り当てられる環境、或いはそれらの組み合わせの何れであってもよい。
【0078】
以下の説明では、図1に例示する3つのノードのち、データ検索装置100としてのノード3を例にノードの構成について説明する。ノード3は、大別して、通信部10、ストレージ部20、初期化・終了部30、そしてメッセージ転送部40を備える。 ストレージ部20は、第1の実施形態における保持部(ストレージ部)300に相当する。そしてメッセージ転送部40は、第1の実施形態における転送部(メッセージ転送部)400に相当する。尚、本実施形態において、ノード1、2は、ノード3と同様な構成を備えており、ノード3との通信が可能である。
【0079】
<ノード(データ検索装置100)の構成>
ノード3(データ検索装置100)を構成する各部の構成と動作について以下に説明する。
【0080】
通信部10は、通信機能11を備えている。通信機能11は、ノード3が有する他の機能から、メッセージや、そのメッセージの宛先となる他ノードのネットワーク200上の住所(アドレス)を与えられる。そしてノード3は、取得したメッセージを、当該住所に対応する他ノードに送信する。また、ノード3は、自ノードが参加しているオーバレイネットワークとは異なる外部のノードや装置、或いは自ノードが所参加しているオーバレイネットワークの他ノードからメッセージを受信する。そしてノード3は、受信したメッセージの内容に応じて、自ノードの適切な部ないし機能に当該メッセージを割り振る。
【0081】
初期化・終了部30は、参加機能31と離脱機能32とを備える。参加機能31は、図1に示すネットワーク200の上位に位置する概念的なオーバレイネットワーク(図1には不図示)に自ノードが参加する際に、ストレージ部20およびメッセージ転送部40を初期化する。離脱機能32は、係るオーバレイネットワークから自ノードが離脱する際に、以下の動作を実行する。
【0082】
即ち、離脱機能32は、当該オーバレイネットワークに参加している他の必要なノードに、自ノードの離脱を通知する。また、離脱機能32は、ストレージ部20が管理するターゲットデータを、適切な他ノードに移譲する。更に、離脱機能32は、メッセージ転送部40がそれまで行っていたメッセージ転送の処理を停止する。また、離脱機能32は、自ノード外部からのメッセージの受信を停止する。
【0083】
(ストレージ部20)
ストレージ部20は、データアクセス機能22、ストレージ識別子(SID)決定機能23、隣接ストレージ維持機能21、SID情報格納部26、データ格納部25、そして隣接ストレージ表24を備える。
【0084】
はじめに、ストレージ部20が上記各機能を実行するに際して読み書きする情報(隣接ストレージ表24、データ格納部25、SID情報格納部26)について説明する。
【0085】
SID情報格納部26は、ストレージ識別子と、そのストレージ識別子を基に決定されるデータ保持値域とを格納する。後述するChordアルゴリズムを用いた実施例では、あるノードのデータ保持値域は、自ノードのストレージ識別子(SID)の次に小さい他ノードのストレージ識別子から、自ノードのストレージ識別子までを表す値の範囲である。
【0086】
データ格納部25は、ノード3(自ノード)が保持するターゲットデータを格納する。本実施形態において、各ノードは、自ノードのデータ保持値域に属するデータIDを持つターゲットデータの担当ノードとなり、そのターゲットデータを保持する。ここで、データIDは、第1の実施形態における第3の識別子302に相当する。また、ターゲットデータは、第1の実施形態におけるターゲットデータ303に相当する。
【0087】
隣接ストレージ表(図11B)は、ストレージ識別子の値が自ノードの次に大きい他ノードと、あるいはストレージ識別子の値が自ノードの次に小さい他ノードとに関して、ストレージ識別子とネットワーク上のアドレスとを格納する。以降、このような他ノードを、本実施形態では“隣接ストレージ”と称する。
【0088】
次に、ストレージ部20が上記各種情報を読み書きしながら実行するところの、隣接ストレージ維持機能21、データアクセス機能22、そしてSID決定機能23について説明する。
【0089】
データアクセス機能22は、データ格納部25に対してターゲットデータの登録や検索、削除を行う機能である。
【0090】
隣接ストレージ維持機能21は、隣接ストレージ表(図11B)を定期的にヘルスチェックし、その結果、失効した経路情報があれば、適宜削除や書き換えを行う。
【0091】
SID決定機能23は、自ノードのストレージ識別子(SID)を決定し、決定したストレージ識別子をSID情報格納部26に格納する。決定方法は、DHTのアルゴリズムや、負荷分散の手順によって異なる。
【0092】
(メッセージ転送部40)
メッセージ転送部40は、RID決定機能41、ストレージ探索機能42、経路表維持機能43、担当ストレージ表維持機能44、RID情報格納部45、経路表46、そして担当ストレージ表47を備える。
【0093】
はじめに、メッセージ転送部40が上記各機能を実行するに際して読み書きする情報(RID情報格納部45、経路表46、担当ストレージ表47)について説明する。
【0094】
RID情報格納部45は、経路識別子(RID)と、その経路識別子を基に決定される識別子値域とが格納される。経路識別子の決定方法は、実装態様やアルゴリズムによってさまざま異なるが、上述した関連技術と同様な技術を採用することができる。たとえば、ノード識別子の決定方法として、本実施形態では、ハッシュ関数の出力値を経路識別子として用いるなどの手法を適用可能である。本実施形態における以下の説明では、このような経路識別子の値域を“ストレージ索引値域”と呼ぶ。あるノードのストレージ索引値域は、自ノードの経路識別子(RID)から、最も距離が近い経路識別子を持つ他ノードまでを表す値の範囲である。尚、本実施形態では、同一ノードが格納するストレージ識別子と経路識別子とは、同じ識別子空間に存在するも、同値であるとは限らない。
【0095】
経路識別子(RID)は、検索キーとなる各種識別子(データID、SID、あるいはRID)を自ノードが受信したとき、次にメッセージを転送する他ノードを選ぶときに使用される。そこで、本実施形態における経路表(46)には、複数のノードの経路識別子と、ネットワーク上のアドレスとが格納される。本実施形態において、自ノードは、メッセージと共に受け取ったキーの識別子(データ識別子、SID、あるいはRID)までの距離が最も近い経路識別子を持つ他ノードを、当該メッセージの次の転送先として当該経路表から選択する(詳細は図13A乃至図13Cを参照して後述する)。
【0096】
ノード3の担当ストレージ表(47)は、ノード3のストレージ索引値域に少なくとも一部が重なるようなデータ保持値域を持つ他ノードの、データ保持値域とネットワーク上のアドレスとを格納する。このため、自ノードのストレージ索引値域に検索キーの値が属するということは、担当ストレージ表に登録された複数のノード群において、いずれか一つのノードのデータ保持値域に検索キーが属することを表す。すなわち、受信したメッセージに含まれる検索キーが自ノードのストレージ索引値域に属するとき、自ノードは、担当ストレージ表の中に、当該検索キーに対応する担当ノードへの経路情報を必ず持っている。
【0097】
次に、メッセージ転送部40が上記各種情報を読み書きしながら実行するところの、RID決定機能41、ストレージ探索機能42、経路表維持機能43、そして担当ストレージ表維持機能44について説明する。
【0098】
ストレージ探索機能42は、検索キーを受け取ると、経路表46および担当ストレージ表47から適切なノードを探索し、探索によって見つけたノードへ当該検索キーを転送する。
【0099】
経路表維持機能43は、経路表46のヘルスチェックを行い、その結果、失効した情報が見つかれば適宜削除や書き換えを行う。
【0100】
担当ストレージ表維持機能44は、担当ストレージ表47のヘルスチェックを行い、その結果、失効した情報が見つかれば適宜削除や書き換えを行う。
【0101】
RID決定機能41は、自ノードの経路識別子(RID)を決定すると共に、決定した経路識別子をRID情報格納部に格納する。経路識別子の決定方法は、DHTのアルゴリズムや、どのような方針で各ノードにメッセージ転送を実行するかに依る。
【0102】
図10は、本発明の第2の実施形態に係るデータ検索システムを、Chordアルゴリズムに適用した動作例を説明する図である。図10に示す例は、同一の識別子空間に、5つのノードa〜eが存在している状態を表している。即ち、円環aには、各ノードに分散配置されているターゲットデータの識別子(データID:DID)と、各ノードのストレージ識別子(SID)の値とが例示されている。一方、円環bには、当該各ノードの経路識別子(RID)の値が示されている。円環aと円環bとは、同一の識別子空間を表わす。但し、図示と理解の利便性を考慮して、本実施形態では、データID(DID)およびストレージ識別子(SID)の分布の様子と、経路識別子(RID)の分布の様子とを、図10に示す如く2つの円環に分けて表している。
【0103】
表2は、本実施形態において図10に示す各ノードのデータ保持値域を例示する。また、表3は、本実施形態において図10に示す各ノードのストレージ索引値域を例示する。図10において、夫々のノードのストレージ識別子(SID)と経路識別子(RID)は、たまたま同じ値である例を示している。但し、Chordでは、「背景技術」欄において説明したように、距離の定義が非対称である。このため、ラベルを付した夫々のノードについて表2及び表3を参照すると、これらの表において、データ保持値域とストレージ索引値域とは一致していないことが判る。そして、図1に示す各ノード内のRID情報格納部45には、表2に示すデータ保持領域のうち、ラベル(ノード名)に対応した情報が格納される。また、図1に示す各ノード内のSID情報格納部26には、表3に示すストレージ索引値域のうち、ラベル(ノード名)に対応した情報が格納される。尚、説明の便宜上、表2及び表3には、各ノードの値域をテーブル状にまとめて表現したが、実際の値域は、対応するノードが個別に有する。
【0104】
【表2】

【0105】
【表3】

【0106】
図11Aは、図10における各ノードの担当ストレージ表を示す図である。担当ストレージ表で保持する経路情報(RID)は、ノードのデータ保持値域と住所のみで必要十分である。但し、同図に示す例では、説明の便宜上から、更にノードのラベル及びストレージ識別子(SID)を含む。
【0107】
図11Bは、図10における各ノードの隣接ストレージ表を示す図である。図10に示す例では、各ノードの経路識別子は、図3に示すノード識別子と同値である。このため、図10に示す各ノードの経路表は、図5(a)乃至図5(e)に示した内容と同じである。ただし、ここではストレージ識別子に注目しているので、図5(a)乃至図5(e)に示す表中のNIDを、本実施形態においてはRIDと見なして説明する。また、各ノードのストレージ識別子(およびデータ保持値域)も、図3に示した例におけるノードの識別子(データ保持値域)と同じ値であり、且つデータの分布の様子も同じである。このため、各ノードがデータ格納部に格納するデータは、図4(a)乃至図4(e)に示す場合と同じであることとする。
【0108】
次に、上述した各機能を備えるデータ検索システム(図1)において、各ノードが実行する具体的な動作について詳細に説明する。以下の説明では、本実施形態に係るデータ検索システムの主要な動作(処理)として、(1)ターゲットデータを探索する動作、(2)オーバレイネットワークに新たにノードが参加する動作、(3)ネットワークからノードが離脱する動作、(4)ノード間における負荷分散動作、そして(5)経路識別子の変更動作、について順に説明する。また、以下の説明では、説明の便宜上から、図1に示すノード3が自ノードであると想定して説明する。
【0109】
<ターゲットデータの探索動作>
まず、ターゲットデータの探索動作について、図15に示すフローチャートを参照して説明する。
【0110】
図15は、本発明の第2の実施形態に係るデータ検索装置が実行するターゲットデータの探索処理を示すフローチャートである。図15に示す各ステップは、データ検索装置100(ノード3)のCPUがソフトウェア・プログラムを実行することによって実現する処理機能である(詳細は、図9を参照して後述する)。
【0111】
ノード3(自ノード)は、検索キー(データ識別子)を含むメッセージを外部装置などから受け取るのに応じて、その検索キーが自ノードのデータ保持値域に属するか否かを、SID情報格納部26を参照することによって判断する(ステップS101)。この判断において自ノードのデータ保持値域に当該検索キーが属すると判断した場合(ステップS101にてYES)、ノード3は、その検索キーの担当ノードである。そこでノード3は、当該検索キーを利用して、自ノードのデータ格納部25を探索(探索)する。そして、ノード3は、当該検索キーと一致するデータIDを持つターゲットデータがデータ格納部25に格納されていると判断した場合、そのターゲットデータを、当該メッセージの送信元へ送る(ステップS105)。
【0112】
一方、自ノードのデータ保持値域に当該検索キーが属さないと判断した場合(ステップS101にてNO)、ノード3は、当該検索キーが自ノードのストレージ索引値域に属するか否かを、RID情報格納部45を参照することによって判断する(ステップS102)。この判断において自ノードのストレージ索引値域に当該検索キーが属さないと判断した場合(ステップS102にてNO)、ノード3は、経路表(図5,46)を参照することにより、当該検索キーまでの距離が最も近い経路識別子(RID)を持つ他ノードを選択し、選択した他ノードに当該メッセージを転送する(ステップS103)。
【0113】
これに対して、当該検索キーがストレージ索引値域に属すると判断された場合(ステップS102にてYES)、担当ストレージ表(図11A)に登録された何れかの他ノードが、当該検索キーの担当ノードである。この場合、ノード3は、データ保持値域に当該検索キーが属する他ノードを、担当ストレージ表(図11A)の中から選択し、選択した他ノードに対して当該メッセージを転送する(ステップS104)。
【0114】
ここで、上述したターゲットデータの探索動作の、より具体的な動作例を、図5及び図10を参照して説明する。今、ノードcに、ネットワークの外部から、データID=3のターゲットデータの検索要求メッセージが送られてきたとする(図10に示す動作<1>)。ノードcは、自ノードのSID情報格納部26(表2)を参照することによって、自ノードのデータ保持値域(28、56]を判断する。この例の場合、ノードcは、係る判断の結果、自ノードがデータID3の担当ノードではないと判断する。次にノードcは、自ノードのRID情報格納部45を参照することによって、自ノードのストレージ索引値域(表3)を判断する。この例の場合、ノードcは、データID=3が自ノードのストレージ索引値域(56、64]に属していないと判断する。そしてこの例の場合、ノードcは、経路表46(図5(c))の中から、データID(DID)=3までの距離が最も近い経路識別子121を持つノードeを選択し、選択したノードeに対して、当該メッセージを転送する(図10に示す動作<2>)。尚、この説明においてもストレージ識別子に注目しているので、上述したように、図5(a)乃至図5(e)に示す表中のNIDは、本実施形態においてはRIDと見なした説明である。
【0115】
ノードeも上述したノードcと同様な動作を実行する。即ち、ノードeは、識別子3が自ノードのデータ保持値域(64、121]およびストレージ索引値域(121、2]に属していないことを、SID情報格納部26及びRID情報格納部45を参照することによって確認する。そして、ノードeは、経路表46(図5(e))の中から、識別子3までの距離が最も近い経路識別子2に対応するノードaを選択し、選択したノードaに対して、当該メッセージを転送する(図10に示す動作<3>)。
【0116】
そして、ノードaも上述したノードc及びeと同様な動作を実行する。即ち、ノードaは、データID3がデータ保持値域(121、2]には属しておらず、ストレージ保持値域(2、28]には属していると判断する。そこでノードaは、自ノードの担当ストレージ表47(図11A(a))を参照することにより、データ保持値域にデータID3が属するノードbを選択する。そしてノードaは、ノードcがデータID3のターゲットデータを探していることを、ノードbへ伝える(図10に示す動作<4>)。ノードbは、データ格納部25からデータID3に対応するターゲットデータを読み出し、読み出したターゲットデータをノードcへ送信する(図10に示す動作<5>)。
【0117】
<オーバレイネットワークへの参加動作>
次に、オーバレイネットワークへのノードの参加動作について、図16のフローチャートを参照して詳細に説明する。
【0118】
図16は、本発明の第2の実施形態に係るデータ検索装置が実行するオーバレイネットワークへの参加処理を示すフローチャートである。図16に示す各ステップは、データ検索装置100(ノード3)のCPUがソフトウェア・プログラムを実行することによって実現する処理機能である(詳細は、図9を参照して後述する)。
【0119】
ノード3(自ノード)は、まず、図1を参照して上述したSID決定機能23およびRID決定機能41により、ストレージ識別子(SID)および経路識別子(RID)を決定する(ステップS201)。つぎに、ノード3は、決定した経路識別子を検索キーとし、その検索キーから、あるいは検索キーまでの距離が最も近い経路識別子を持つ他ノードXを探索する。係る条件を満たすノードが複数ある場合は、すべて探索する。そしてノード3は、探索した条件に合致する全ての他ノードXから、他ノードXの経路情報(経路識別子とネットワーク上のアドレス)を受け取り、自ノードの経路表46に、他ノードXの経路情報を登録する(ステップS202)。ノード3は、登録した他ノードXの経路識別子を基に自ノードのストレージ索引値域を算出すると共に、算出したストレージ索引値域を、RID情報格納部45に格納する(ステップS203)。
【0120】
さらに、ノード3は、自ノードの経路表46に登録された他ノードの担当ストレージ表から、自ノードの担当ストレージ表に保持すべき経路情報を取得する。また、ノード3は、自ノードのストレージ識別子を検索キーに用いて、検索キーから、あるいは検索キーまでの距離が最も近いストレージ識別子を持つ他ノード(隣接ストレージ)を探索する。そしてノード3と当該隣接ストレージとは、互いの経路情報を、互いの隣接ストレージ表(図11B)に登録する(ステップS204)。ノード3は、これら取得した隣接ストレージのストレージ識別子を基に、自ノードのデータ保持値域を算出し、SID情報格納部26に格納する。
【0121】
また、ネットワークに新たに参加したノード3は、自ノードの経路情報を、適切な他ノードの担当ストレージ表に登録するよう、適切な他ノードに対して登録命令を発行する(ステップS205)。ここで、ノード3を担当ストレージ表に登録するべき適切な他ノードとは、先述の通り、ノード3のデータ保持値域と少なくとも一部が重なり合うようなストレージ索引値域を持つノードである。この動作は、担当ストレージ表の書き換え動作(図17)として詳しく後述する。
【0122】
最後に、ノード3は、隣接ストレージ表に登録された他ノードのデータ格納部から、保持すべきデータを取得する(ステップS206)。
【0123】
ここで、担当ストレージ表の書き換え動作について、図17に示すフローチャートを参照して説明する。
【0124】
図17は、本発明の第2の実施形態に係るデータ検索装置が実行する担当ストレージ表の書き換え処理を示すフローチャートである。図17に示す各ステップは、データ検索装置100(ノード3)のCPUがソフトウェア・プログラムを実行することによって実現する処理機能である(詳細は、図9を参照して後述する)。
【0125】
ステップS301:まず、登録命令(メッセージ)を出したいノード3は、自ノードのデータ保持値域の下限値を検索キーとし、その検索キーまでの距離が最も近い経路識別子を持つ他ノードを探索する。係る他ノードは、すなわち、ストレージ索引値域に検索キーが属する他ノードである。これは、ノード3のデータ保持値域と、当該他ノードのストレージ索引値域とが、少なくとも一部において重なっていることを意味する。このため、当該他ノードは、自ノードの担当ストレージ表に、ノード3の経路情報を登録すべきである。係る他ノードを発見したノード3は、すぐさま係る他ノードと通信を行い、ノード3の経路情報(ここではデータ保持値域とネットワーク上のアドレス)を、登録メッセージと共に送信する。
【0126】
ステップS302:メッセージを受信した当該他ノードは、自ノードの担当ストレージ表に、ノード3の経路情報を登録する。
【0127】
ステップS303:さらに、係る他ノードは、メッセージに含まれているノード3のデータ保持値域の上限値が、当該他ノード自身のストレージ索引値域に属しているかどうか確認する。当該上限値が係る他ノードのストレージ索引値域に属している場合(ステップS303にてYES)、担当ストレージ表の書き換え動作は、終了である。一方、当該上限値が係る他ノードのストレージ索引値域に属していない場合(ステップS303にてNO)は、係る他ノードは、自ノードのストレージ索引値域の上限値を経路識別子とする別の他ノードに対して、登録命令(メッセージ)を転送する。尚、ステップS303は、自ノードが上記他ノードとして動作する場合を想定して同一のフローチャートに記載した。
【0128】
ここで、オーバレイネットワークに新たなノードfが参加するときの具体的な動作の流れについて、図5、図13Aから図13C、図14、図16、図17、並びに表4、表5を参照して説明する。
【0129】
【表4】

【0130】
【表5】

【0131】
図13Aから図13Cは、本発明の第2の実施形態に係るデータ検索システムにおいて、オーバレイネットワークに新たなノードが参加する動作を説明する図である。図14は、図13Aから図13Cに示すオーバレイネットワークへの参加動作において各ノードが参照する担当ストレージ表を例示する図である。
【0132】
ノードfは、オーバレイネットワークに新たに参加を希望しているノードである。まず、ノードfは、SID決定機能23及びRID決定機能41により、自ノードのストレージ識別子を93(SID=93)、経路識別子の値を15(RID=15)と決定する(図16のステップS201)。本実施形態に係るデータ検索システムにおける前提として、新たに参加するノードは、既にオーバレイネットワークに参加している各ノードのうち、任意のあるノードの住所(IPアドレスなど)を認識している。以下に説明する具体例では、ノードfは、ノードaの住所を知っていることとする。また、ここでは、自ノードが持つ経路識別子の次に大きい経路識別子を持つ他ノードを、自ノードのサクセッサとする。
【0133】
ノードfは、まず、自ノードの経路表46に、必要最低限の経路情報として、自ノードのサクセッサを登録する処理を行う(図16のステップS202)。サクセッサを探すため、ノードfは、自ノードの経路識別子の値15を検索キーとし、その検索キーを用いて、当該値15から最も距離が近い経路識別子を持つノードを探すよう、ノードaに命令を送信する(図13Aに示す動作<1>)。ノードaは、自ノードの経路表(図5(a))を参照することにより、経路識別子の値が15から最も近い経路識別子を持つノードbを選択する。ここで、ノードbは、ノードaのサクセッサである。従って、ノードaは、ノードb以上には経路識別子の値15から近い距離に存在するノードが他に存在しないことを認識する。
【0134】
そして、ノードaは、ノードfがネットワークへの参加手続きを希望していることをノードbに伝える(図13Aに示す動作<2>)。知らせを受けたノードbは、ノードfと通信し、ノードbの経路情報(ここでは経路識別子とネットワーク上のアドレス)を送信する(図13Aに示す動作<3>)。ノードfは、受け取った経路情報を経路表に登録する。また、ノードaは、上記の一連の処理から、ノードfが自ノードの新たなサクセッサになったことを認識することができるので、ノードfの経路情報を、自ノードの経路表に登録する。
【0135】
次に、ノードfは、自ノードの担当ストレージ表に、適切な経路情報を登録する処理を行う(図16のステップS203)。ノードfのストレージ索引値域(表5)は、それまでノードaのストレージ索引値域であった値域の一部である。すなわち、ノードfは、ノードaの担当ストレージ表に登録されている経路情報の適切な一部を、ノードfが管理すべき経路情報として受け取れば十分である。そこで、ノードfはノードaと通信を行い、ノードaの担当ストレージ表に登録されている経路情報の中から、ノードfのストレージ索引値域と重なるようなデータ保持値域(表4)を持つノードの経路情報を、ノードaから受け取り、ノードfの担当ストレージ表に登録する。
【0136】
さらに、ノードfは、隣接ストレージ表24に自ノードの隣接ストレージの経路情報(ここではストレージ識別子とネットワーク上のアドレス)を登録する処理を行う(図16のステップS204)。隣接ストレージを探すため、ノードfは、自ノードのストレージ識別子の値93を検索キーに用いて、値93からの距離が最も近いストレージ識別子を持つノード(すなわち隣接ストレージ)を探索するメッセージを、ノードaに送信する(図13Bに示す動作<4>)。これまでと同様、メッセージを受け取ったノードaは、自ノードの経路表46を用いてメッセージを真の宛先までリレーしていく。この例では、当該メッセージは、図13Bに示す動作<5>及び動作<6>のように転送され、最後にノードdへたどり着く。ノードdは、自ノードの経路表に登録された他ノードおよび自ノード自身の経路識別子と、検索キー93とを夫々比較して、自ノードの経路識別子から検索キー93までの距離が、もっとも最短であることを認識する。ノードdは、担当ストレージ表の中に、ノードfの隣接ストレージとなるべき他ノードへの経路情報を保持していることになる。
【0137】
そこで、ノードdは、自ノードの担当ストレージ表(図13Dに示す(d))を参照することにより、検索キー93が属するようなストレージ索引値域を持つ他ノード(ここではノードe)を探す。そして、ノードdは、ノードeに対して、ノードfが隣接ストレージを探していることをメッセージによって伝える(図13Bに示す動作<7>)。このメッセージを受けたノードeは、ノードfと通信を行い、互いの経路情報(ここではストレージ識別子とネットワーク上のアドレス)を、互いの隣接ストレージ表に登録する(図13Bに示す動作<8>)。
【0138】
また、ノードfは、自ノードの経路情報を、適切な他ノードの担当ストレージ表に登録してもらう処理を行う(図16のステップS205)。図17のステップS301に従い、ノードfは、表4を参照することにより、自ノードのデータ保持値域の下限値(データ保持値域に属する最小の値)65を検索キーとし、検索キーまでの距離が最も近い経路識別子を持つ他ノードを探すため、経路表を用いて検索キーを含むメッセージを転送する。現在、ノードfの経路表には唯一ノードbが登録されているので、メッセージはノードbへ転送される(図13Bに示す動作<9>)。メッセージを受け取ったノードbは、当該メッセージに含まれる検索キー値65までの距離が最も近い経路識別子を持つ他ノードを、ノードb自身および経路表の中から選択する。まだいずれのノードにおいても経路表のヘルスチェックが行われていないと仮定すると、ノードbは、図5(b)に示す経路表からノードdを選び、メッセージを転送する。ノードdは、自ノード自身および経路表の中から、検索キー65までの距離が最も近い経路識別子を持つノードdを選択することで、自ノードが最も検索キー65までの距離が近いと判断する。そして、ノードdは、ノードfと通信し、自ノードがノードfの探しているノードであることを教える。
【0139】
ノードfは、ノードdへ、自ノードのデータ保持値域とともに、登録命令の書かれたメッセージを送信する。メッセージを受信したノードdは、共に受け取ったノードfのデータ保持値域とネットワーク上のアドレスを経路情報として、ノードdの担当ストレージ表に登録する(図17のステップS302)。
【0140】
さらに、図17のステップS303に従い、ノードdは、ノードfのデータ保持値域の上限値93が、ノードdのストレージ索引値域に属しているか判定する。この判定は真であるため、図17に従い、適切なノードの担当ストレージ表への登録(書き換え)処理は終了する。
【0141】
最後に、図16のステップS206に従い、ノードfは、自ノードの隣接ストレージであるノードeから、自ノードが保持すべきターゲットデータ(ID=64〜82)を受け取る。このような一連の動作を経て、ノードfは、オーバレイネットワークに新たに参加することにより、図13Cに示す状態が実現する。
【0142】
<ネットワークからの離脱動作>
次に、ノードがネットワークから離脱する動作について、図18に示すフローチャートを参照して説明する。
【0143】
図18は、本発明の第2の実施形態に係るデータ検索装置が実行するネットワークからの離脱処理を示すフローチャートである。図18に示す各ステップは、データ検索装置100(ノード3)のCPUがソフトウェア・プログラムを実行することによって実現する処理機能である(詳細は、図9を参照して後述する)。
【0144】
離脱対象のノードは、まず保持しているターゲットデータを、隣接ストレージ表(図11B)に登録されている隣接ストレージへ移譲する(ステップS401)。次に、離脱対象のノードは、自ノードのストレージ索引値域の下限値及び上限値を、SID情報格納部26から参照し、その下限値あるいは上限値を経路識別子に持つ他ノードを探索する。そして、離脱対象のノードは、自ノードの担当ストレージ表(図11A)に登録されている経路情報を、探索によって求めた当該他ノードに移譲する(ステップS402)。そして、当該離脱対象のノードは、ネットワークから離脱する(ステップS403)。尚、離脱対象のノードの指定は、例えば、ノードへ離脱を命令できる権限のあるユーザが、当該ノードへ離脱の命令が書かれたメッセージを送信するなどによって行えば良い。
【0145】
<負荷分散動作>
次に、ネットワークに参加しているノード間において負荷を分散する負荷分散動作について、図19に示すフローチャートを参照して説明する。
【0146】
図19は、本発明の第2の実施形態に係るデータ検索装置が実行する負荷分散処理を示すフローチャートである。図19に示す各ステップは、データ検索装置100(ノード3)のCPUがソフトウェア・プログラムを実行することによって実現する処理機能である(詳細は、図9を参照して後述する)。
【0147】
ノードは、何らかの手段により自ノードの負荷が高いと判断すると(ステップS501にてNO)、図1を参照して上述したSID決定機能23により、新たなストレージ識別子およびデータ保持値域を決定する(ステップS502)。
【0148】
上記の決定によってストレージ識別子を変更したため、自ノードの隣接ストレージは、決定前と異なっている可能性がある。そこで当該ノードは、係る新たなストレージ識別子を用いて、隣接ストレージ表(図11B)の経路情報(ここではストレージ識別子とネットワーク上のアドレス)のヘルスチェックを行う(ステップS503)。その結果、自ノードの新たなストレージ識別子に対して、現在登録されている他ノードがもはや隣接ストレージの条件を満たさないと判定した場合、当該自ノードは、当該他ノードを隣接ストレージ表から削除する(ステップS503)。
【0149】
さらに自ノードは、新たなストレージ識別子を検索キーとして含むメッセージを発行することで、検索キーと数値的に隣り合うストレージ識別子を持つ他ノードを新たな隣接ストレージとして探索し、探索結果を隣接ストレージ表に登録する。次に、当該自ノードは、負荷分散に応じてデータ保持値域が変わるので、必要な全ての他ノードに対して、担当ストレージ表の書き換えを行わせる必要がある。そこで、図17に示す、担当ストレージ表の書き換え動作のフローチャートに従い、当該ノードは、新たなデータ保持値域に基づき、保持すべきデータは保持し、他ノードへ移譲すべきノードは移譲する(ステップS504)。
【0150】
更に当該ノードは、変更したデータ保持値域の下限値を検索キーとし、その検索キーまでの距離が最も近い経路識別子を持つ他ノードを探索する。当該ノードは、探索した他ノードへ、自ノードのデータ保持値域の情報と共に、担当ストレージ表(図11A)への登録命令を送信する(ステップS505)。
【0151】
ここで、上述した負荷分散動作について、より具体的に説明する。本実施形態において例示しているノードeは、図4等を参照して上述したように、保持しているターゲットデータ数が他のノードに比べて多いので負荷が高い。そこで、以下の具体例では、インターバルシフトによる負荷分散について説明する。
【0152】
図12は、本発明の第2の実施形態に係るデータ検索システムにおいて、高負荷な状態にあるノードeから負荷分散を行うときの動作の流れを説明する図である。はじめに、ノードeは、隣接ストレージ表(図11Bに示す(e))に登録された他ノード(隣接ストレージ)と通信を行い、ターゲットデータの譲渡先となるノード(ここではノードaとする)を、どの隣接ストレージにするか決める。ここで、隣接ストレージの決定方法としては、様々な方法が考えられる。例えば、ノード識別子を変更することで負荷分散を行う関連技術を採用すると共に、負荷の高いノードがターゲットデータの移譲先を決定する方法を採用することができる。
【0153】
ノードeは、ノードaにターゲットデータを譲渡すべく、ストレージ識別子(SID)の値を93に、データ保持値域を(64、93]に、それぞれ変更する(図12に示す円環a)。次に、ノードeは、ノードaへ、ストレージ識別子を93に変更したことを伝える。これに応じてノードaは、自ノードのデータ保持値域を、当初の(121、2](表2)から、(93、2]に広げる変更を行う。これによりノードaは、当初はノードeが保持していたデータ識別子103〜119のターゲットデータ(図4(e))を、ノードeから受け取る。
【0154】
ノードeおよびノードaは、夫々のデータ保持値域を変更したため、適切な他ノードに対して、担当ストレージ表の書き換えを依頼する必要がある。そこで、ノードeは、図17に示すフローチャートに従い、担当ストレージ表の書き換え処理を実行する。即ち、ノードeは、新たなデータ保持値域(64、93]の下限(最小値)65を検索キーとし、値65をストレージ索引値域に含むようなノードを探索する。そしてノードeは、探索により求めた他ノードに対して、自ノードのデータ保持値域の情報と共に、担当ストレージ表の書き換え命令をメッセージとして送信する。
【0155】
経路表(図5)を用いて当該キーまでの距離が最も近づくようにメッセージ転送を行えば、メッセージは、図12に示す動作<1>のように、ノードdに転送される。ノードdは、検索キー値65が自ノードのストレージ索引値域(64、121]に含まれている(表3)。このためノードdは、自ノードの担当ストレージ表(図11A)の中の、ノードeの経路情報を書き換える。
【0156】
上述した具体例におけるノードeの変更後のデータ保持値域(64、93]の上限93は、ノードdの変更後のストレージ索引値域(64、121]に属している。このため、ノードdは、メッセージをそれ以上他ノードに転送する必要がない。
【0157】
一方、ノードaもまた、変更が生じた自ノードのデータ保持値域(93、2]の下限(最小値)94を検索キーに用いて、値94をストレージ索引値域に含むノードを探し、自ノードのデータ保持値域の情報と共に、担当ストレージ表の書き換え命令をメッセージとして送信する。
【0158】
経路表(図5)を用いて当該検索キーまでの距離が最も近づくようにメッセージ転送を行えば、メッセージは、図12に示す動作<2>及び動作<3>のように転送され、ノードdに辿り着く。ノードdは、自ノードの担当ストレージ表のノードaの情報を書き換える。さらに、ノードaのデータ保持値域の上限値2は、ノードdのストレージ索引値域(64、121]に属していない(表3)。このためノードdは、メッセージを、ストレージ索引値域の上限の担当ノード(すなわち、Chordでは自ノードのサクセッサ)であるノードeに転送する(図12に示す動作<4>)。ノードeは、メッセージに従い、自ノードの担当ストレージ表を書き換える。ノードaのデータ保持値域の上限値2は、ノードeのストレージ索引値域(121、2]に属しているので、ノードeはメッセージを転送する必要がない。
【0159】
<経路識別子の変更動作>
ところで、経路表(46)に登録された経路情報の数を減らしたい、或いはノード間でできるだけ経路表の大きさを均一にしたい、などの目的で、経路識別子を変更したい場合がある。本実施形態における経路識別子の変更は、図20に示すフローチャートのように動作する。
【0160】
図20は、本発明の第2の実施形態に係るデータ検索装置が実行する経路識別子の変更処理を示すフローチャートである。図20に示す各ステップは、データ検索装置100(ノード3)のCPUがソフトウェア・プログラムを実行することによって実現する処理機能である(詳細は、図9を参照して後述する)。
【0161】
ステップS601:まず、経路識別子を変更したいノードは、自ノードの経路識別子の値を変更する。
【0162】
ステップS602:次に、変更した経路識別子を検索キーに用いて、当該ノードは、当該変更後の経路識別子から(まで)の距離が最も近い経路識別子を持つ他ノードを探索する。そして、当該ノードは、探索によって見つけた他ノードに応じて、経路表に必要な情報を登録する。
【0163】
ステップS603:さらに、当該自ノードは、経路表に登録された他ノードから、ストレージ索引値域を算出する。自ノードは、新たに算出されたストレージ索引値域と重なりあうデータ保持値域を持つ他ノードを、担当ストレージ表に登録する必要がある。担当ストレージ表に登録すべき経路情報は、自ノードの経路識別子と数値的に隣り合う他ノード(すなわち、先ほど経路表に登録した他ノード)が保持しているため、当該他ノードから係る経路情報を取得する。
【0164】
<ハードウェア構成>
次に、第1及び第2の実施形態において上述したデータ検索装置(ノード)が実行されるハードウェア環境について、図9を参照して説明する。上述したように、各実施形態において説明したデータ検索装置(ノード)は、サーバなどのコンピュータによって実行されるプロセスとして捉えることができる。係るデータ検索装置の機能は、ソフトウェアプログラムを、コンピュータのCPUが実行することによって実現される。そして、上述した各実施形態において図面に示した各機能は、ソフトウェアプログラムの機能単位(ソフトウェアモジュール)と捉えることができる。この場合のハードウェア環境の一例を、図9を参照して説明する。
【0165】
図9は、本発明の第1及び第2の実施形態に係るデータ検索装置のハードウェア構成を例示的に説明する図である。図9に示したハードウェアは、CPU101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、ハードディスク(記憶装置)104、通信インタフェース105を備え、これらの構成がバス106を介して接続された一般的なコンピュータである。通信インタフェース(I/F)105は、図1に示した通信部10に対応しており、ネットワーク200を介して、自装置(自ノード)と外部装置(他ノードなど)との通信を実現する。ここで、ハードディスク104は、上述した図1に示す隣接ストレージ表24、データ格納部25、SID情報格納部26、RID情報格納部45、経路表46、及び担当ストレージ表47を実現する記憶装置として機能する。
【0166】
そして、上述した各実施形態を例に説明したデータ検索装置100(ノード)は、図9に示したハードウェアに対して、その説明において参照したブロック構成図(図1、図21)或いはフローチャート(図15乃至図20)の機能を実現可能なコンピュータプログラムを供給した後、そのコンピュータプログラムを、当該ハードウェアのCPU101に読み出して実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能なメモリ(103)またはハードディスク装置(104)等の記憶デバイスに格納すれば良い。
【0167】
尚、上記の例では、説明の便宜上から、1台のコンピュータが1つのノード(データ検索装置)を実現する構成を説明したがこの構成には限られない。即ち、上述した各実施形態を例に説明したデータ検索装置100(ノード)は、1台のコンピュータが複数の仮想マシンを実現する構成を実行環境として、当該1台のコンピュータが複数のノード(プロセス)を実現する構成であってもよい(尚、仮想マシンを利用する場合については後述する実施例にて詳述する)。但し、データ検索装置100は、専用のハードウェアによって実現してもよい。
【0168】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、CD−ROM等の各種記録媒体を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータプログラムのコード或いは記憶媒体によって構成される。
【0169】
<実施形態の効果>
以上説明した第1及び第2の実施形態に係るデータ検索装置(ノード)及びそれらが複数接続されたデータ検索システムによれば、ノード間においてターゲットデータを管理するに際して、個々のターゲットデータの柔軟な配置と、安定したメッセージ転送とを実現することができる。
【0170】
即ち、本実施形態では、例えばあるノードにおける負荷を分散する必要が生じ、そのノードのストレージ識別子(SID)を変更したとしても、経路表の情報が失効することが無いので、安定したメッセージ転送が実現する。
【0171】
また、本実施形態によれば、経路識別子(RID)を変更することも可能である。即ち、メッセージの中継ノードに選ばれる確率にノード間において大きな差があり、これに応じてノードのリソースに無駄が生じている場合がある。このような場合、本実施形態によれば、各ノードの経路識別子を、識別子空間上において可能な限り分散するように割り当て直すことにより、当該確率を、ノード間で均一にすることができる。これに対して、「発明の背景」欄で説明した関連技術では、各ノードが一つの識別子のみを用いてターゲットデータの保持とメッセージ転送とを実行するため、負荷の観点から困難であった。換言すれば、ノード間において、メッセージ転送を全く行わないノードは、リソースを持て余してしまうので、そのようなノードは無くすることが求められる。この要求に対して、関連技術では、ヘテロな環境であればあるほど、負荷を分散すると、データ保持値域の広さがノード間でバラついてしまい、結果として、識別子空間上で複数のノードが極端に近い場所に密集する状況が生じる。この場合、密集したノード群には、確率的に、メッセージがほとんど転送されることはない。このような問題を解消する観点からは、メッセージ転送の際に参照する識別子は、ノード間において均等に離散していることが望ましい。この関係は、上述した関連技術においては、ヘテロな環境において負荷分散とトレードオフの関係であった。これに対して、本実施形態によれば、2種類の識別子(RID,RID)を用いて、個々のターゲットデータの柔軟な配置と、安定したメッセージ転送とを実現する訳である。
【実施例】
【0172】
上述した実施形態では、負荷分散の1つのアプローチとして、インターバルシフトを用いた。しかしながら、上述した実施形態を例に説明した本発明は、識別子の値を変更することで負荷の分散を図る各種のアプローチに有効である。このため、本発明に係るデータ検索システムは、仮想サーバ、仮想ノード等と呼ばれる仮想マシン(仮想マシン環境)にも適用可能である。
【0173】
ここで、仮想マシン環境に本発明を適用した場合について説明する。この場合、既にオーバレイネットワークに参加しているノードのうち、リソースに余裕のあるノードを実現しているCPUは、負荷を分散すべく、新たなプロセスを実行することによって別ノードを作り、当該別ノードをオーバレイネットワークに参加させる。但し、仮想マシンでは、一般に、1つのCPUが複数のノードを実現するため、メッセージがノード間を中継される際に、実際は同じ計算機(物理マシン)の中で何度も中継されるという問題がある。このような問題が生じる仮想マシン環境に対して、本発明に係るデータ検索システムを適用する場合、ストレージ索引値域が限りなく小さくなるように経路識別子を決定すれば、同じメッセージが何度も同一ノードに転送されてくることを阻止することができるので、上記の問題が解消できるという利点がある。
【0174】
さらに、上述した実施形態では、Chordアルゴリズムを例に説明した。しかしながら本発明は、Chordアルゴリズムだけでなく、Chordと同様に識別子空間がリング型であるKoordeアルゴリズムにも適用可能である。ここで、Koordeアルゴリズムは、仮想的なde Buruijnグラフ上のノード(イマジナリノード)を、目的キーに対応するノードに近づけるようシミュレートしながら、オーバレイネットワーク上で自ノードのデータ保持値域にイマジナリノードが含まれるよう、経路を辿っていくアルゴリズムである。本発明は、係るイマジナリノードを経路識別子として用いることで、Koordeアルゴリズムにも適用可能である。
【産業上の利用可能性】
【0175】
本発明は、ネットワークに接続した計算機群に対して、各CPUがプロセスとして動かすノードへデータを分散して管理する分散型のデータ検索システムに適用可能である。ここで想定するネットワークは、例えば、インターネットなどの広域なものから、データセンタ内部の比較的閉じたネットワークなどが挙げられる。分散配置された情報のメタデータ(例えばどのデータベースにその情報があるなどの位置情報)を、上述した実施形態及びその実施例にて説明した如く管理すれば、分散型のインデックスとして適用することができる。また、広域でのコンテンツ配信システムにも適用できる。コンテンツ配信システムとしては、映画やテレビ映像、ビデオの配信などが想定される。
【0176】
尚、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0177】
(付記1)
管理対象である複数のターゲットデータを、オーバレイネットワーク上に配置された複数のノードにおいて管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するデータ検索システムであって、
各ノードは、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子(ストレージ識別子(SID))と、
メッセージを受信したノードが、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子(経路識別子(RID))とを有しており、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子(データID(DID))によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報(経路表)を用いて、メッセージを転送すべき他ノードを決定する転送手段とを備え、
前記転送手段は、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするデータ検索システム。
【0178】
(付記2)
前記各ノードの転送手段は、
前記メッセージを受信するのに応じて、自ノードが保持する前記経路情報を参照した結果に応じてノード間においてメッセージの転送を繰り返すことにより、前記検索キーが表す識別子までの距離が最も小さい前記第2の識別子(経路識別子)を持つ特定ノードに対して、前記メッセージを転送する
ことを特徴とする付記1記載のデータ検索システム。
【0179】
(付記3)
前記複数のノードは、
自ノードが担当するストレージに関する情報(担当ストレージ表)を有しており、
前記特定ノードの転送手段は、
自ノードの前記ストレージに関する情報を参照することにより、自ノードが担当する担当ノードを探し出し、その担当ノードに対してターゲットデータの検索要求を発行する
ことを特徴とする付記2記載のデータ検索システム。
【0180】
(付記4)
前記ストレージに関する情報は、
自ノードの前記第2の識別子(経路識別子)から、最も距離が近い前記第2の識別子を持つ他ノードまでを表す値の範囲(ストレージ索引値域)に、少なくとも一部が重なるようなターゲットデータの保持値域を持つ他ノードに関して、ターゲットデータの保持値域と、前記複数のノードが接続された通信ネットワーク上のアドレスとを含む
ことを特徴とする付記3記載のデータ検索システム。
【0181】
(付記5)
前記複数のノードのうち、第1ノードが保持するターゲットデータを第2ノードに配置するに際して、該第1ノードの転送手段は、前記第2の識別子の変更に応じて、前記経路情報に登録すべき情報を変更することの契機とする
ことを特徴とする付記1乃至付記4の何れかに記載のデータ検索システム。
【0182】
(付記6)
前記複数のノードのうち、第1ノードが保持するターゲットデータを第2ノードに分散するに際して、該第1ノードの転送手段は、前記第1の識別子と、その第1ノードによるターゲットデータの保持値域とを新たな値に更新することの契機とする
ことを特徴とする付記1乃至付記4の何れかに記載のデータ検索システム。
【0183】
(付記7)
管理対象である複数のターゲットデータを、オーバレイネットワーク上に配置された複数のノードにおいて管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するデータ検索方法であって、
各ノードに、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子(ストレージ識別子(SID))と、
メッセージを受信したノードが、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子(経路識別子(RID))と
を保持させ、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子(データID(DID))によって特定されるターゲットデータを保持させ、
前記第2の識別子が含まれる経路情報(経路表)を用いて、メッセージを転送すべき他ノードを決定するに際して、前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするデータ検索方法。
【0184】
(付記8)
前記各ノードがメッセージを転送する過程において、
前記メッセージを受信するのに応じて、自ノードが保持する前記経路情報を参照した結果に応じてノード間においてメッセージの転送を繰り返すことにより、前記検索キーが表す識別子までの距離が最も小さい前記第2の識別子(経路識別子)を持つ特定ノードに対して、前記メッセージを転送する
ことを特徴とする付記7記載のデータ検索方法。
【0185】
(付記9)
前記複数のノードに、
自ノードが担当するストレージに関する情報(担当ストレージ表)を保持させ、
前記特定ノードは、
自ノードの前記ストレージに関する情報を参照することにより、自ノードが担当する担当ノードを探し出し、その担当ノードに対してターゲットデータの検索要求を発行する
ことを特徴とする付記8記載のデータ検索方法。
【0186】
(付記10)
管理対象である複数のターゲットデータを、オーバレイネットワーク上において管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するノードであって、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子(ストレージ識別子(SID))と、
メッセージを受信した際、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子(経路識別子(RID))とを有しており、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子(データID(DID))によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報(経路表)を用いて、メッセージを転送すべき他ノードを決定する転送手段とを備え、
前記転送手段は、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするノード。
【0187】
(付記11)
自ノードが担当するストレージに関する情報(担当ストレージ表)を有しており、
自ノードが、前記検索キーが表す識別子までの距離が最も小さい前記第2の識別子(経路識別子)を持つ特定ノードである場合に、前記転送手段は、
自ノードの前記ストレージに関する情報を参照することにより、自ノードが担当する担当ノードを探し出し、その担当ノードに対してターゲットデータの検索要求を発行する
ことを特徴とする付記10記載のノード。
【0188】
(付記12)
管理対象である複数のターゲットデータを、オーバレイネットワーク上において管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するノードとして、コンピュータを動作させるコンピュータプログラムであって、そのコンピュータプログラムにより、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子(ストレージ識別子(SID))と、
メッセージを受信した際、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子(経路識別子(RID))とを保持する機能と、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子(データID(DID))によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報(経路表)を用いて、メッセージを転送すべき他ノードを決定する転送機能とを実現すると共に、
前記転送機能により、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするコンピュータプログラム。
【符号の説明】
【0189】
10 通信部
11 通信機能
20 ストレージ部
21 隣接ストレージ維持機能
22 データアクセス機能
23 ストレージ識別子(SID)決定機能
24 隣接ストレージ表
25 データ格納部
26 SID情報格納部
30 初期化・終了部
31 参加機能
32 離脱機能
40 メッセージ転送部
41 RID決定機能
42 ストレージ探索機能
43 経路表維持機能
44 担当ストレージ表維持機能
45 RID情報格納部
46 経路表
47 担当ストレージ表
100 ノード(データ検索装置)
200 ネットワーク
300 保持部(ストレージ部)
301 第1の識別子(ストレージ識別子(SID))
302 第3の識別子(データID(DID))
303 ターゲットデータ
400 転送部(メッセージ転送部)
401 第2の識別子(経路識別子(RID))
402 経路情報(経路表)

【特許請求の範囲】
【請求項1】
管理対象である複数のターゲットデータを、オーバレイネットワーク上に配置された複数のノードにおいて管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するデータ検索システムであって、
各ノードは、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子と、
メッセージを受信したノードが、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子とを有しており、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報を用いて、メッセージを転送すべき他ノードを決定する転送手段とを備え、
前記転送手段は、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするデータ検索システム。
【請求項2】
前記各ノードの転送手段は、
前記メッセージを受信するのに応じて、自ノードが保持する前記経路情報を参照した結果に応じてノード間においてメッセージの転送を繰り返すことにより、前記検索キーが表す識別子までの距離が最も小さい前記第2の識別子を持つ特定ノードに対して、前記メッセージを転送する
ことを特徴とする請求項1記載のデータ検索システム。
【請求項3】
前記複数のノードは、
自ノードが担当するストレージに関する情報を有しており、
前記特定ノードの転送手段は、
自ノードの前記ストレージに関する情報を参照することにより、自ノードが担当する担当ノードを探し出し、その担当ノードに対してターゲットデータの検索要求を発行する
ことを特徴とする請求項2記載のデータ検索システム。
【請求項4】
前記ストレージに関する情報は、
自ノードの前記第2の識別子から、最も距離が近い前記第2の識別子を持つ他ノードまでを表す値の範囲に、少なくとも一部が重なるようなターゲットデータの保持値域を持つ他ノードに関して、ターゲットデータの保持値域と、前記複数のノードが接続された通信ネットワーク上のアドレスとを含む
ことを特徴とする請求項3記載のデータ検索システム。
【請求項5】
管理対象である複数のターゲットデータを、オーバレイネットワーク上に配置された複数のノードにおいて管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するデータ検索方法であって、
各ノードに、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子と、
メッセージを受信したノードが、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子と
を保持させ、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子によって特定されるターゲットデータを保持させ、
前記第2の識別子が含まれる経路情報を用いて、メッセージを転送すべき他ノードを決定するに際して、前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするデータ検索方法。
【請求項6】
前記各ノードがメッセージを転送する過程において、
前記メッセージを受信するのに応じて、自ノードが保持する前記経路情報を参照した結果に応じてノード間においてメッセージの転送を繰り返すことにより、前記検索キーが表す識別子までの距離が最も小さい前記第2の識別子を持つ特定ノードに対して、前記メッセージを転送する
ことを特徴とする請求項5記載のデータ検索方法。
【請求項7】
前記複数のノードに、
自ノードが担当するストレージに関する情報を保持させ、
前記特定ノードは、
自ノードの前記ストレージに関する情報を参照することにより、自ノードが担当する担当ノードを探し出し、その担当ノードに対してターゲットデータの検索要求を発行する
ことを特徴とする請求項6記載のデータ検索方法。
【請求項8】
管理対象である複数のターゲットデータを、オーバレイネットワーク上において管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するノードであって、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子と、
メッセージを受信した際、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子とを有しており、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報を用いて、メッセージを転送すべき他ノードを決定する転送手段とを備え、
前記転送手段は、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするノード。
【請求項9】
自ノードが担当するストレージに関する情報を有しており、
自ノードが、前記検索キーが表す識別子までの距離が最も小さい前記第2の識別子を持つ特定ノードである場合に、前記転送手段は、
自ノードの前記ストレージに関する情報を参照することにより、自ノードが担当する担当ノードを探し出し、その担当ノードに対してターゲットデータの検索要求を発行する
ことを特徴とする請求項9記載のノード。
【請求項10】
管理対象である複数のターゲットデータを、オーバレイネットワーク上において管理すると共に、移動対象のターゲットデータの移動に先立って、該移動対象のターゲットデータの異動先のノードを、メッセージを用いて検索するノードとして、コンピュータを動作させるコンピュータプログラムであって、そのコンピュータプログラムにより、
自ノードが保持すべきターゲットデータの値域を求めるための第1の識別子と、
メッセージを受信した際、そのメッセージを他ノードに転送する転送経路の決定に用いる第2の識別子とを保持する機能と、
前記第1の識別子を基に決定した値域に属するところの、第3の識別子によって特定されるターゲットデータを保持する保持手段と、
前記第2の識別子が含まれる経路情報を用いて、メッセージを転送すべき他ノードを決定する転送機能とを実現すると共に、
前記転送機能により、
前記第1乃至第3の少なくとも何れかの識別子を自ノードに受信するのに応じて、その識別子を検索キーとして、前記経路情報を参照した結果、対応する他ノードが存在する場合には該他ノードにメッセージを転送する
ことを特徴とするコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図13C】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2012−43330(P2012−43330A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願番号】特願2010−185968(P2010−185968)
【出願日】平成22年8月23日(2010.8.23)
【国等の委託研究の成果に係る記載事項】(出願人による申告)国等の委託研究の成果に係る特許出願(平成21年度 独立行政法人新エネルギー・産業 技術総合開発機構「グリーンネットワーク・システム技術研究開発プロジェクト(グリーンITプロジェクト)/エネルギー利用最適化データセンタ基盤技術の研究開発/サーバの最適構成とクラウド・コンピューティング環境における進化するアーキテクチャー開発/クラウド・コンピューティング技術」委託研究、産業技術力強化法第19条適用を受ける特許出願)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】