(57)【要約】【課題】各種処理の遅延やメッセージ消失の可能性を低減することができるデータ管理装置を提供する。【解決手段】処理部１１は、IDi＝（X+K×Ni）modNmなる式に基づいて算出したIDiを識別子空間上の管理対象の所定範囲に含むデータ管理装置１の識別子を含む経路表を生成する。ただし、識別子空間を構成する識別子の最大個数をNmとし、Xは自身のデータ管理装置１の識別子であり、Kは、iに応じて変化する係数である。これによって、経路表の大部分が特定のデータ管理装置１の識別子で占められる状況が発生する可能性が低減し、経路表に含まれるデータ管理装置１の識別子の種類数が従来よりも増加するので、メッセージの転送がより効率的に行われるようになる。【選択図】図１
2008011331.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータネットワーク上に分散するデータを複数のデータ管理装置で管理するデータ管理システムを構成し、互いに異なる識別子の付与された前記複数のデータ管理装置が配置された識別子空間における所定範囲に対応したデータを管理するデータ管理装置において、
所定の演算式に基づいて算出した演算値を管理対象の前記所定範囲に含むデータ管理装置の前記識別子を含む経路情報を生成する経路情報生成手段と、
前記経路情報生成手段によって生成された前記経路情報を記憶する記憶手段と、
他のデータ管理装置とメッセージの送受信を行う通信手段と、
前記通信手段によって、他のデータ管理装置から受信された前記メッセージがさらに他のデータ管理装置へ転送される場合に、前記記憶手段によって記憶されている前記経路情報に基づいて前記メッセージの転送先を決定する転送先決定手段とを備え、
前記識別子空間を構成する前記識別子の最大個数がNm（N，mは２以上の自然数）である場合に、前記所定の演算式はIDi＝（X+K×Ni）modNmなる式で表され、前記IDiは前記演算値であり、前記Xは自身のデータ管理装置の前記識別子であり、前記iは変数であり、前記Kは、前記iに応じて変化する係数であり、
前記経路情報生成手段は、前記所定の演算式に基づいて、前記iを0と前記mの間で順次変化させながら前記演算値を算出する
ことを特徴とするデータ管理装置。
【請求項２】
前記Kは、
【数１】
2008011331.tif 000006
なる式で表され、前記Lは、自身のデータ管理装置の識別子と、前記識別子空間上で自身のデータ管理装置に隣接するデータ管理装置の識別子との距離である
ことを特徴とする請求項１に記載のデータ管理装置。
【請求項３】
異なる前記iを前記所定の演算式に代入して算出された異なる前記演算値が同一のデータ管理装置の管理対象の前記所定範囲に含まれる場合に、前記通信手段は、前記同一のデータ管理装置と異なるデータ管理装置を探索するための探索メッセージを生成して他のデータ管理装置へ送信し、前記探索メッセージに対する返答メッセージを他のデータ管理装置から受信し、
前記経路情報生成手段は、前記返答メッセージの内容に基づいて前記経路情報を生成する
ことを特徴とする請求項１または請求項２に記載のデータ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワーク上に分散するデータを複数のデータ管理装置で管理するデータ管理システムを構成するデータ管理装置に関する。
【背景技術】
【０００２】
特定のサーバによらず、継続的あるいは一時的にネットワークに接続した計算機群によって構成される分散型のデータ管理システムがある。このシステムを利用して、例えばユーザ側ではデータの名前は分かっているが、そのデータのネットワーク上の存在場所が分からない場合に、そのデータを所持している計算機の情報を、ユーザからの要求に応じてユーザに通知するというデータの名前解決サービスを提供することができる。このようなサービスを提供可能な分散型のデータ管理システムとして、米国MIT大学のThe Chord Projectによるシステム（Chordシステム）が良く知られている（非特許文献１参照）。
【０００３】
Chordシステムでは、システムを構成する各データ管理装置には、当該データ管理装置のIPアドレス（またはIPアドレスとポート番号の組）からハッシュ関数SHA-1（Secure Hash Algorithm 1）（非特許文献２参照）で計算されたハッシュ値が、識別子として付与される。また、ネットワーク上のデータにも、互いにユニークな識別子が付与されるとしている。ここで、データ管理装置およびデータに付与される各々の識別子は、循環する論理上の識別子空間を構成する（図１２参照）。以下、この識別子空間の大きさ（識別子空間を構成する識別子数の最大値）を2mとする。
【０００４】
データの管理は、識別子空間上で当該データの識別子から正の方向（図１２中の矢印Ａの方向）に見て、次に現れる識別子を持つデータ管理装置が担当するものとしている。一例として、p台のデータ管理装置でq個のデータを管理するシステムでのデータ管理を説明する。データ管理装置の識別子を ID(s1)，ID(s2)，・・・，ID(sp)、データの識別子を ID(d1)，ID(d2)，・・・，ID(dq)とすると、識別子ID(s1)を持つデータ管理装置は、ID(sp) ＜ x ≦ 2m-1および0 ≦ x ≦ ID(s1)の範囲の識別子を有するデータを管理する。また、識別子ID(s2)を持つデータ管理装置は、ID(s1) ＜ x ≦ ID(s2)の範囲の識別子を有するデータを管理する。このように、各データ管理装置の管理範囲を示す識別子の数値範囲はデータ管理装置毎に異なっており、各数値範囲が重ならないようになっている。
【０００５】
上記のように、Chordシステムではネットワーク上のデータを多数のデータ管理装置が分担して管理している。各データ管理装置が自身の担当外のデータに対する名前解決等の処理を行うためには、他のデータ管理装置と通信（メッセージの送受信）を行う必要がある。この要求を満たすため、各データ管理装置は他のデータ管理装置のIPアドレスおよびポート番号の組を経路表として持つ。各データ管理装置は、メッセージを送信する際に、経路表を参照してメッセージの送信先を決定する。
【０００６】
経路表には、識別子空間上で自身の識別子から正の方向（図１２中の矢印Aの方向）に見て最初に現れる識別子を持つデータ管理装置の情報がSUCCESSORとして含まれている。同様に、識別子空間上で自身の識別子から負の方向（図１２中の矢印Bの方向）に見て最初に現れる識別子を持つデータ管理装置の情報がPREDECESSORとして経路表に含まれている。
【０００７】
経路表にはこれ以外に、識別子空間上で自身の識別子から見て正の方向に現れるm台のデータ管理装置の情報がSUCCESSOR LIST又はFinger Tableとして格納されている。SUCCESSOR Listは、識別子空間上で自身の識別子から正の方向に見て最初に現れるm台のデータ管理装置のリストである。これに対して、Finger Tableは、自身の識別子をXとしたときに、Xを基準にして一定の法則に従った距離を隔てて識別子空間上に並ぶ識別子を自身の担当範囲に含むm台(0≦i＜m)のデータ管理装置のリストである。
【０００８】
Finger Tableを用いた場合、システムを構成するデータ管理装置の数をNとすると、任意のデータ管理装置に対して最大log2(N) 回の転送回数（Path Length）でメッセージを到達させることができる。つまり、システム内のデータ管理装置数（N）が2倍になっても、メッセージ転送回数は1回程度の増加で済むため、SUCCESSOR LISTと比較して効率的である。このため、経路表として、SUCCESSOR/PREDECESSORの情報を格納するエントリとFinger Tableの組合せが一般的に用いられる。
【０００９】
図１３は従来のFinger Tableの生成手順を示している。以下、従来のFinger Tableの生成方法を説明する。以下では、識別子空間の大きさを2160とする。また、経路表において、SUCCESSORの情報を格納するエントリの設定が既に終了しているものとする。まず、変数iを初期化し（変数iに0を代入し）（ステップＳ４００）、次式に従ってIDiを算出する（ステップＳ４０１）。ただし、Xは自身のデータ管理装置の識別子であり、PmodQは、PをQで割ったときの余りを示す。
IDi＝（X+2i）mod2160  ・・・（１）
【００１０】
続いて、自身が管理対象とする識別子空間上の数値範囲内に上記のIDiを含むデータ管理装置Nを探索する（ステップＳ４０２）。見つかったデータ管理装置Ｎの情報はFinger Tableのi番目のエントリの情報として保存される（ステップＳ４０３）。続いて、変数iの値がチェックされる（ステップＳ４０４）。変数iの値が159であった場合にはFinger Tableの生成が終了し、159でなかった場合には、変数iの値に1が加算され（ステップＳ４０５）、処理が再度ステップＳ４０１に戻る。
【００１１】
ステップＳ４０２では、より具体的には、以下のようにしてデータ管理装置Nの探索が行われる。まず、SUCCESSORに対してメッセージを送信し、IDiを管理範囲内に持つデータ管理装置Nの探索を依頼する。依頼を受けたSUCCESSORは、IDiが自身の管理範囲内である場合には、自身の情報をメッセージに格納して返信する。
【００１２】
また、IDiが自身の管理範囲内でない場合には、SUCCESSORは、経路表の内容に基づいて、メッセージの転送先となるデータ管理装置を決定し、そのデータ管理装置にメッセージを転送する。具体的には、経路表に含まれるデータ管理装置の中から、IDiから負の方向（図１２中の矢印Ｂの方向）に見て最も近い識別子を持つデータ管理装置を、メッセージの転送先として選択する。以上の処理を繰り返すことにより、最終的には、IDiを管理範囲内に持つデータ管理装置にメッセージが到達し、当該データ管理装置からメッセージが返信される。以上のようにして、データ管理装置Nの情報を取得することができる。
【非特許文献１】I. Stoica，et. al.，“Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications”，Proceedings of the 2001 ACM SIGCOMM Conference，2001
【非特許文献２】FIPS 180-1，“Secure Hash Standard”，U.S. Department of Commerce/NIST，National Technical Information Service，Springfield，VA，Apr. (1995)
【発明の開示】
【発明が解決しようとする課題】
【００１３】
従来のデータ管理システムでは、上記の方法によってFinger Tableを生成した結果、経路表内のFinger Tableの上位のエントリに同じデータ管理装置が重複して多数登録されてしまうという現象が発生していた。例えば、識別子空間の大きさを2160とし、その識別子空間上に100万（106）台のデータ管理装置が配置されている場合に、識別子空間上で隣接するデータ管理装置間の距離の平均は1.46×1042となる。ここで、2k＞1.46×1042を満たす最小の整数kを求めると、k＝141となる。つまり、Finger Tableに用意されている160個のエントリのうち、上位142個のエントリがSUCCESSORの情報で占められることになる。
【００１４】
このため、識別子空間の大きさに比べて、Finger Tableに実質的に登録されるデータ管理装置の数が少なくなる。すると、経路表に基づいたメッセージの転送が非効率的となり、メッセージの伝送距離が長くなる可能性がある。これにより、従来のデータ管理システムでは、メッセージの伝送遅延に起因する各種処理（名前解決など）の遅延が発生したり、多数のルータを経由することによりメッセージが消失したりする可能性が高くなるという問題があった。
【００１５】
本発明は、上述した問題点に鑑みてなされたものであって、各種処理の遅延やメッセージの消失を低減することができるデータ管理装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、上記の課題を解決するためになされたもので、コンピュータネットワーク上に分散するデータを複数のデータ管理装置で管理するデータ管理システムを構成し、互いに異なる識別子の付与された前記複数のデータ管理装置が配置された識別子空間における所定範囲に対応したデータを管理するデータ管理装置において、所定の演算式に基づいて算出した演算値を管理対象の前記所定範囲に含むデータ管理装置の前記識別子を含む経路情報を生成する経路情報生成手段と、前記経路情報生成手段によって生成された前記経路情報を記憶する記憶手段と、他のデータ管理装置とメッセージの送受信を行う通信手段と、前記通信手段によって、他のデータ管理装置から受信された前記メッセージがさらに他のデータ管理装置へ転送される場合に、前記記憶手段によって記憶されている前記経路情報に基づいて前記メッセージの転送先を決定する転送先決定手段とを備え、前記識別子空間を構成する前記識別子の最大個数がNm（N，mは２以上の自然数）である場合に、前記所定の演算式はIDi＝（X+K×Ni）modNmなる式で表され、前記IDiは前記演算値であり、前記Xは自身のデータ管理装置の前記識別子であり、前記iは変数であり、前記Kは、前記iに応じて変化する係数であり、前記経路情報生成手段は、前記所定の演算式に基づいて、前記iを0と前記mの間で順次変化させながら前記演算値を算出することを特徴とするデータ管理装置である。
【００１７】
また、本発明のデータ管理装置において、前記Kは、［数１］なる式で表され、前記Lは、自身のデータ管理装置の識別子と、前記識別子空間上で自身のデータ管理装置に隣接するデータ管理装置の識別子との距離であることを特徴とする。
【００１８】
【数１】
2008011331.tif 000003
【００１９】
また、本発明のデータ管理装置において、異なる前記iを前記所定の演算式に代入して算出された異なる前記演算値が同一のデータ管理装置の管理対象の前記所定範囲に含まれる場合に、前記通信手段は、前記同一のデータ管理装置と異なるデータ管理装置を探索するための探索メッセージを生成して他のデータ管理装置へ送信し、前記探索メッセージに対する返答メッセージを他のデータ管理装置から受信し、前記経路情報生成手段は、前記返答メッセージの内容に基づいて前記経路情報を生成することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、経路情報に含まれるデータ管理装置の識別子の種類数が従来よりも増加するようなKを設定することによって、メッセージの転送がより効率的に行われるようになる。これによって、各種処理の遅延やメッセージの消失を低減することができるという効果が得られる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の一実施形態による分散型のデータ管理システムの構成を示している。図１において、複数のデータ管理装置１が、通信ネットワーク３００を介して互いに通信を行うことが可能なように接続されている。データ管理装置１はコンピュータであり、データの加工や演算を行う処理装置、データを保存するための記憶装置、ユーザがコンピュータへの指示を入力するための入力装置、および処理結果を出力する出力装置等のハードウェアと、コンピュータを制御する手順や命令をまとめたソフトウェア（プログラム）とが協働して動作することによって、所望の機能が実現される。
【００２２】
データ管理装置１において、通信処理部１０（本発明の通信手段に対応）は、他のデータ管理装置１との通信を制御し、各種メッセージの送信や受信を行う。処理部１１（本発明の経路情報生成手段、転送先決定手段に対応）は、データ管理に係る様々な処理を実行する。経路表記憶部１２（本発明の記憶手段に対応）は経路表を記憶し、データ管理表記憶部１３はデータ管理表を記憶する。経路表記憶部１２とデータ管理表記憶部１３は異なる記録媒体で構成されていてもよいし、同一の記録媒体内の異なる記録領域で構成されていてもよい。
【００２３】
次に、経路表記憶部１２に格納される経路表の内容を説明する。図２は経路表の一例を示している。経路表には、他のデータ管理装置１との通信に必要な情報（例えばIPアドレスおよびポート番号）が含まれている。経路表は、SUCCESSORおよびPREDECESSORの情報が格納されているエントリ２００，２０１と、Finger Tableと呼ばれるエントリ２０２とから成る。
【００２４】
SUCCESSORを管理するためのエントリ２００には、SUCCESSORとなる他のデータ管理装置１の識別子（装置識別子）とそのデータ管理装置１のIPアドレスおよびポート番号とが格納されている。PREDECESSORを管理するためのエントリ２０１には、PREDECESSORとなる他のデータ管理装置１の識別子（装置識別子）とそのデータ管理装置１のIPアドレスおよびポート番号とが格納されている。Finger Tableと呼ばれるエントリ２０２には、m台分（m≧0）のデータ管理装置１の識別子（装置識別子）とそれらのデータ管理装置１のIPアドレスおよびポート番号とが格納されている。
【００２５】
次に、データ管理表記憶部１３に格納されるデータ管理表の内容を説明する。各データ管理装置１は、自身が管理対象とする識別子空間上の数値範囲を認識しており、その数値範囲に含まれる識別子の付与されたデータの情報をデータ管理表として持つ。データ管理表は、データ毎のエントリにより構成されている。各エントリは、当該データの識別子、当該データが保存されているネットワーク装置のIPアドレス、およびポート番号の組合せにより構成されている（図３参照）。
【００２６】
次に、データ管理装置１間で送受信されるメッセージの内容を説明する。図４はメッセージの一例を示している。宛先IPアドレスフィールド４００、宛先ポート番号フィールド４０１には、それぞれメッセージの宛先であるデータ管理装置１のIPアドレス、ポート番号が記録されている。送信元IPアドレスフィールド４０２、送信元ポート番号フィールド４０３には、それぞれメッセージの送信元であるデータ管理装置１のIPアドレス、ポート番号が記録されている。
【００２７】
処理対象識別子フィールド４０４には、処理対象となる識別子（名前解決を依頼するデータの識別子等）が記録されている。メッセージ内容フィールド４０５には、メッセージの内容（名前解決の依頼やデータ管理装置の探索依頼等）が記録されている。発信元IPアドレスフィールド４０６、発信元ポート番号フィールド４０７には、それぞれメッセージを作成し、最初に発信したデータ管理装置１のIPアドレス、ポート番号が記録されている。
【００２８】
メッセージを最初に発信するデータ管理装置１は、送信元IPアドレスフィールド４０２と発信元IPアドレスフィールド４０６、送信元ポート番号フィールド４０３と発信元ポート番号フィールド４０７にそれぞれ自身の情報を記録する。また、他のデータ管理装置１から受信したメッセージを転送するデータ管理装置１は、送信元IPアドレスフィールド４０２と送信元ポート番号フィールド４０３を自身の情報に書き換えると共に、宛先IPアドレスフィールド４００と宛先ポート番号フィールド４０１を転送先のデータ管理装置１の情報に書き換えてメッセージを送信する。
【００２９】
次に、経路表記憶部１２に格納される経路表の生成方法を説明する。処理部１１は、自身のデータ管理装置１がデータ管理システムに初めて参加する際に経路表を生成し、経路表記憶部１２に格納する。以下では、識別子空間の大きさ（識別子空間を構成する識別子数の最大値）を2160とする。また、経路表において、SUCCESSORの情報を格納するエントリ（図２のエントリ２００）の設定が既に終了しているものとする。
【００３０】
以下、図５を参照し、経路表内のFinger Tableの生成方法を説明する。処理部１１は変数iを初期化し（変数iに0を代入し）（ステップＳ１００）、次式に従ってIDiを算出する（ステップＳ１０１）。ただし、Xは自身のデータ管理装置の識別子であり、PmodQは、PをQで割ったときの余りを示す。また、Lは、自身のデータ管理装置１の識別子と、識別子空間上で自身のデータ管理装置１の識別子から正の方向に見て次に現れるデータ管理装置１（SUCCESSOR）の識別子との、識別子空間における距離（識別子の差）である。
【００３１】
【数２】
2008011331.tif 000004
【００３２】
続いて、処理部１１は、自身のデータ管理装置１が管理対象とする識別子空間上の数値範囲内に上記のIDiを含むデータ管理装置Nを探索する（ステップＳ１０２）。この処理の詳細は図１３のステップＳ４０２と同様である。処理部１１は、見つかったデータ管理装置Ｎの情報をFinger Tableのi番目のエントリに格納する（ステップＳ１０３）。続いて、処理部１１は変数iの値をチェックする（ステップＳ１０４）。変数iの値が159であった場合にはFinger Tableの生成が終了し、159でなかった場合には、処理部１１は変数iの値に1を加算し（ステップＳ１０５）、再度ステップＳ１０１の処理を実行する。
【００３３】
上記の［数２］で示される式を整理すると、以下のようになる。
IDi＝（X+K×2i）mod2160  ・・・（２）
また、係数Kは次式で表される。
【００３４】
【数３】
2008011331.tif 000005
【００３５】
従来の（１）式と本実施形態の（２）式を比較すると、iの値に応じて変化する係数Kの有無が両者の相違点である。（２）式では、i＝0のときIDi＝X+Lとなり、これはSUCCESSORの識別子と同一である。また、（２）式でも（１）式と同様に、iが増加するに従って、IDiが指数関数的に増加する。
【００３６】
（１）式と（２）式の違いは、生成される経路表に以下のように反映される。図６は経路表の様子を模式的に示している。識別子空間上の矢印の根元は、経路表を生成するデータ管理装置の位置を示しており、矢印の先端は、（１）式または（２）式に従って順次算出したIDiの位置を示している。図６（ａ）は、（１）式を用いた従来の方法で生成された経路表の様子を模式的に示している。図６のデータ管理装置Ｂが生成した経路表内のFinger Tableの大部分は、前述したように、SUCCESSORとなるデータ管理装置Ｃの情報で占められてしまう。
【００３７】
一方、図６（ｂ）は、（２）式を用いた本実施形態の方法で生成された経路表の様子を模式的に示している。経路表内のFinger Tableの最初のエントリには、SUCCESSORとなるデータ管理装置Ｃの情報が格納されるが、他のエントリには、それ以外のデータ管理装置の情報が格納される。
【００３８】
（２）式に含まれる係数Kとして、（２）式の算出結果が、i＝0のときに自身のデータ管理装置１の識別子の値より大きく自身のデータ管理装置１のSUCCESSORの識別子の値以下の値となり、i＝1のときに自身のデータ管理装置１のSUCCESSORの識別子の値より大きな値となるような係数を用いることが望ましい。本実施形態では、その一例として、［数３］で表される係数Kを用いている。
【００３９】
これによって、経路表の大部分が特定のデータ管理装置１の識別子で占められる状況が発生する可能性が低減し、経路表に含まれるデータ管理装置１の識別子の種類数が従来よりも増加するので、メッセージの転送がより効率的に行われるようになる。その結果、メッセージの伝送距離がより短くなるので、メッセージの伝送遅延に起因する各種処理の遅延やメッセージ消失の可能性を低減することができる。
【００４０】
また、（２）式も、iの増加に応じてIDiが指数関数的に増加するという（１）式と同様の特徴を有している。したがって、システム内のデータ管理装置数（N）が2倍になっても、メッセージ転送回数が1回程度の増加で済むという従来の特徴を維持したまま、各種処理の遅延やメッセージ消失の可能性を低減することができる。
【００４１】
図７は、図５に示す処理の一部を変形した処理の手順を示している。以下、図６を参照し、Finger Tableの他の生成方法を説明する。処理部１１は変数iを初期化し（変数iに0を代入し）（ステップＳ２００）、前述した［数２］に従ってIDiを算出する（ステップＳ２０１）。
【００４２】
続いて、処理部１１は、自身のデータ管理装置１が管理対象とする識別子空間上の数値範囲内にIDiを含むデータ管理装置Ｎを探索する（ステップＳ２０２）。続いて、処理部１１は変数iの値をチェックする（ステップＳ２０３）。変数iの値が0であった場合には、処理はステップＳ２０５へ進み、変数iの値が0でなかった場合には、処理はステップＳ２０４へ進む。
【００４３】
変数iの値が0でなかった場合には、処理部１１は、経路表記憶部１２から経路表を読み出して参照し、ステップＳ２０２で見つかったデータ管理装置Ｎの情報が経路表に存在するか否かを判定する（ステップＳ２０４）。
【００４４】
ステップＳ２０２で見つかったデータ管理装置Ｎの情報が経路表に存在しなかった場合、処理部１１はデータ管理装置Ｎの情報を経路表のi番目のエントリに格納する（ステップＳ２０５）。続いて、処理部１１は変数iの値をチェックする（ステップＳ２０６）。変数iの値が159であった場合には経路表の生成が終了し、159でなかった場合には、処理部１１は変数iの値に1を加算し（ステップＳ２０７）、再度ステップＳ２０１の処理を実行する。
【００４５】
一方、ステップＳ２０２で見つかったデータ管理装置Ｎの情報が経路表に存在した場合、処理部１１は、データ管理装置ＮのSUCCESSORを探索するためのメッセージ（本発明の探索メッセージに対応）を生成し、通信処理部１０を介してメッセージをデータ管理装置Ｎへ送信する。このメッセージの処理対象識別子フィールドにはデータ管理装置Ｎの識別子が格納されており、メッセージ内容フィールドには、SUCCESSORの探索依頼を示す情報が格納されている。
【００４６】
メッセージを受信したデータ管理装置Ｎの処理部１１は、メッセージ内容に基づいて経路表記憶部１２から経路表を読み出して参照し、SUCCESSORの情報が格納されているエントリから情報を抽出し、その情報を含むメッセージ（本発明の返答メッセージに対応）を生成する。処理部１１は、通信処理部１０を介してメッセージを返信する。経路表を生成するデータ管理装置１の処理部１１はこのメッセージを受信し、メッセージに含まれるデータ管理装置ＮのSUCCESSORを新たにデータ管理装置Ｎに設定し（ステップＳ２０８）、再度ステップＳ２０４の処理を実行する。
【００４７】
上記のように、図７に示した処理では、異なるiを（２）式に代入して算出した異なる識別子の値が、同一のデータ管理装置１が管理対象とする識別子空間上の数値範囲に含まれる場合に、同一のデータ管理装置１と異なるデータ管理装置１を探索するための探索メッセージを生成する。そして、探索メッセージを他のデータ管理装置１へ送信し、探索メッセージに対する返答メッセージの内容に基づいてFinger Tableを生成する。
【００４８】
これによって、同一のデータ管理装置１の情報がFinger Tableの複数のエントリにわたって格納されることを防止し、図５に示した処理によってFinger Tableを生成した場合よりも、Finger Tableに格納されるデータ管理装置１の種類数をより増加させることができる。したがって、メッセージの伝送遅延に起因する各種処理の遅延やメッセージ消失の可能性をより低減することができる。
【００４９】
次に、図８を参照し、他のデータ管理装置１からメッセージを受信した場合のデータ管理装置１の動作を説明する。通信処理部１０は、メッセージの宛先IPアドレスおよび宛先ポート番号が自身を指すメッセージのみ受信し、処理部１１へメッセージを出力する（ステップＳ３００ ）。処理部１１はメッセージ内の処理対象識別子を確認し、その処理対象識別子が、自身の担当する範囲内の識別子であるか否かを判定する（ステップＳ３０１）。
【００５０】
処理対象識別子が、自身の担当する範囲内の識別子でなかった場合、処理部１１は経路表記憶部１２から経路表を読み出し（ステップＳ３０２）、経路表内のデータ管理装置１の識別子と処理対象識別子を比較して、メッセージの転送先となるデータ管理装置１を決定する（ステップＳ３０３）。続いて、処理部１１はメッセージの宛先IPアドレスおよび宛先ポート番号を転送先のデータ管理装置１のIPアドレスおよびポート番号に書き換えると共に、送信元IPアドレスおよび送信元ポート番号を自身のIPアドレスおよびポート番号に書き換え、通信処理部１０を介してメッセージを転送する（ステップＳ３０４）。メッセージの転送先となるデータ管理装置１は１台でも複数台でもよい。
【００５１】
一方、ステップＳ３０１での判定の結果、処理対象識別子が、自身の担当する範囲内の識別子であった場合、処理部１１はメッセージ内のメッセージ内容を参照し、メッセージ内容に応じた名前解決等の処理を行う（ステップＳ３０５）。
【００５２】
上記のステップＳ３０３において、メッセージの転送先となるデータ管理装置１は、具体的には以下のようにして決定される。処理対象識別子が識別子空間上で自身の識別子とSUCCESSORの識別子の間に位置する場合（すなわち識別子空間上で自身の識別子から正の方向に見て、処理対象識別子、SUCCESSORの識別子の順に識別子が並んでいる場合）、メッセージの転送先としてSUCCESSORが選択される。また、処理対象識別子が識別子空間上で自身の識別子とSUCCESSORの識別子の間に位置しない場合、経路表内の識別子のうち、識別子空間上で処理対象識別子から負の方向に見て最も近い識別子の付与されたデータ管理装置１がメッセージの転送先として選択される。
【００５３】
次に、従来の経路表の生成方法と本実施形態の経路表の生成方法を比較する。経路表の生成方法の違いによる効果を評価するため、数値シミュレーションを行った。まず、本数値シミュレーションで想定するネットワークであるインターネットのトポロジーを説明する。インターネットは、自律システム（AS：Autonomous System）と呼ばれる複数のネットワークより構成されている。自律システムとは、共通の経路情報を共有し、1 つの管理実体のもとに存在するネットワーク（例えば、特定のインターネットサービスプロバイダが管理するネットワークなど）である。
【００５４】
自律システム自体もひとつのネットワークであり、複数のルータで構成される。図９は、複数の自律システムにより構成されるインターネットのネットワークトポロジーを模式的に示している。このようなネットワークトポロジーを構築するための数学的モデルとして、Transit-Stubモデル（E. W. Zegura，K. L. Calvert，S. Bhattacharjee，“How to Model an Internetwork”，IEEE Infocom，vol. 2，pp594-602，San Francisco，CA，1996）がある。本数値シミュレーションでは、想定する物理ネットワークとしてTransit-Stubモデルを使用し、2400台のルータで構成されるネットワークを生成した。
【００５５】
続いて、この物理ネットワーク上に1024台のデータ管理装置（Chordノード）をランダムに配置し、オーバーレイネットワークを構築した。各データ管理装置に付与する識別子のビット長は160bitとした。この状態で、ランダムに2台のデータ管理装置を選択し、一方から送信されたメッセージが他方に到達するまでのデータ管理装置間転送回数（Chordノード間転送回数 ＝ Path Length）、および物理ネットワークにおけるルータホップ数を、数値シミュレーションにより評価した。
【００５６】
本数値シミュレーションでは、従来のChord方式（図１３に示した処理手順に従って経路表を生成する方式）と本実施形態による方式のそれぞれについて宛先データ管理装置をランダムに指定し、メッセージの送信を1000回試行した。それぞれの試行についてデータ管理装置間転送回数（Path Length）とルータホップ数の関係を図１０に示す。図１０（ａ）は、図５に示した処理手順に従って経路表を生成した場合（本実施形態の方法Ａとする）のシミュレーション結果であり、図１０（ｂ）は、図７に示した処理手順に従って経路表を生成した場合（本実施形態の方法Ｂとする）のシミュレーション結果である。また、図１０に示したデータをまとめた結果を図１１に示す。
【００５７】
本実施形態による経路表生成方法を用いると、従来の経路表生成方法と比べて、経路表に登録されるデータ管理装置の識別子の種類数が増加することが分かる。また、宛先データ管理装置にメッセージが到達するまでに行われるメッセージの転送回数が減少していることも分かる。つまり、本実施形態によれば、メッセージの転送が効率的に行われるようになることが分かる。メッセージの転送が効率的に行われるようになると、宛先データ管理装置にメッセージが到達するまでに経由するルータの数（ルータホップ数）が減少するが、それもシミュレーション結果に現れている。したがって、本実施形態によれば、メッセージの伝送遅延に起因する各種処理の遅延やメッセージの消失を低減することができる。
【００５８】
また、本実施形態の方法ＡとＢを比較すると、方法Ｂを用いる方が、方法Ａを用いるよりも、経路表に登録されるデータ管理装置の識別子の種類数が増加することが分かる。その結果、メッセージの転送回数およびルータホップ数が共に減少している。つまり、方法Ｂを用いると、各種処理の遅延やメッセージの消失を低減する効果がより大きくなる。
【００５９】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施形態によるデータ管理システムの構成を示すブロック図である。
【図２】本発明の一実施形態における経路表の内容を示す参考図である。
【図３】本発明の一実施形態におけるデータ管理表の内容を示す参考図である。
【図４】本発明の一実施形態におけるメッセージの構造を示す参考図である。
【図５】本発明の一実施形態における経路表の生成手順を示すフローチャートである。
【図６】本発明の一実施形態による経路表の生成方法と従来の経路表の生成方法のそれぞれによって生成される経路表の様子を示す参考図である。
【図７】本発明の一実施形態における経路表の生成手順を示すフローチャートである。
【図８】本発明の一実施形態によるデータ管理装置のメッセージ受信時の動作の手順を示すフローチャートである。
【図９】本発明の一実施形態における数値シミュレーションで想定するネットワークのトポロジーを示す参考図である。
【図１０】本発明の一実施形態における数値シミュレーションの結果を示す参考図である。
【図１１】本発明の一実施形態における数値シミュレーションの結果を示す参考図である。
【図１２】循環する識別子空間における識別子の配置の様子を示す参考図である。
【図１３】従来の経路表の生成手順を示すフローチャートである。
【符号の説明】
【００６１】
１・・・データ管理装置、１０・・・通信処理部、１１・・・処理部、１２・・・経路表記憶部、１３・・・データ管理表記憶部、３００・・・通信ネットワーク
【図１】
2008011331.tif 000007
【図２】
2008011331.tif 000008
【図３】
2008011331.tif 000009
【図４】
2008011331.tif 000010
【図５】
2008011331.tif 000011
【図６】
2008011331.tif 000012
【図７】
2008011331.tif 000013
【図８】
2008011331.tif 000014
【図９】
2008011331.tif 000015
【図１０】
2008011331.tif 000016
【図１１】
2008011331.tif 000017
【図１２】
2008011331.tif 000018
【図１３】
2008011331.tif 000019