(57)【要約】【課題】データ管理システムに対するデータ蓄積装置の接続状態に応じて、データの使用可否の正確な状態を管理することができるデータ管理システムおよびデータ管理装置を提供する。【解決手段】データ蓄積装置２の処理部２１は、電源スイッチ２３の状態の変化を検出すると、データ管理装置１へメッセージを送信する処理を実行する。データ管理装置１の処理部１２は、データ蓄積装置２からのメッセージが受信されると、データ管理表記憶部１４に格納されているデータ管理表、およびデータ経路表記憶部１５に格納されているデータ経路表の更新処理を実行し、管理対象のデータに係る使用可否情報を更新する。【選択図】図１
2008176376.tif 000002
【特許請求の範囲】
【請求項１】
データを蓄積するデータ蓄積装置と、前記データ蓄積装置に蓄積されるデータに関する情報を管理するデータ管理装置とを備えたデータ管理システムにおいて、
前記データ蓄積装置は、
データと、当該データの使用可否を示す使用可否情報とを関連付けて記憶するデータ記憶手段と、
前記データ管理システムに対する接続状態の変化、または当該変化に伴う前記使用可否情報の変化を示す変化情報を前記データ管理装置へ送信する第１の送信手段とを備え、
前記データ管理装置は、
情報を受信する受信手段と、
管理対象のデータに係る前記使用可否情報を記憶する使用可否情報記憶手段と、
前記変化情報が受信された場合に、前記管理対象のデータに係る前記使用可否情報を更新する情報更新手段とを備えた
ことを特徴とするデータ管理システム。
【請求項２】
前記データ管理装置は、前記変化情報が受信された場合に、前記変化情報の送信元である前記データ蓄積装置が記憶しているデータを管理対象とする他のデータ管理装置へ前記変化情報を送信する第２の送信手段をさらに備えたことを特徴とする請求項１に記載のデータ管理システム。
【請求項３】
前記データ管理装置は、
特定のデータ蓄積装置が記憶するデータを管理対象とする他のデータ管理装置を識別する識別情報を記憶する識別情報記憶手段と、
前記特定のデータ蓄積装置から前記変化情報が受信された場合に、前記識別情報によって識別される前記他のデータ管理装置へ前記変化情報を送信する第２の送信手段と、
をさらに備えたことを特徴とする請求項１に記載のデータ管理システム。
【請求項４】
前記データ蓄積装置に蓄積される各データには、識別子空間を構成する互いに異なる識別子が付与されており、前記データ管理装置は、前記識別子空間における所定範囲内の識別子が付与されているデータを管理対象のデータとすることを特徴とする請求項３に記載のデータ管理システム。
【請求項５】
データを蓄積するデータ蓄積装置と、前記データ蓄積装置に蓄積されるデータに関する情報を管理するデータ管理装置とを備えたデータ管理システムを構成する前記データ管理装置において、
情報を受信する受信手段と、
管理対象のデータの使用可否を示す使用可否情報を記憶する使用可否情報記憶手段と、
前記データ管理システムに対する前記データ蓄積装置の接続状態の変化、または当該変化に伴う前記使用可否情報の変化を示す変化情報が受信された場合に、前記管理対象のデータに係る前記使用可否情報を更新する情報更新手段と、
を備えたことを特徴とするデータ管理装置。
【請求項６】
前記変化情報が受信された場合に、前記変化情報の送信元である前記データ蓄積装置が記憶しているデータを管理対象とする他のデータ管理装置へ前記変化情報を送信する送信手段をさらに備えたことを特徴とする請求項５に記載のデータ管理装置。
【請求項７】
特定のデータ蓄積装置が記憶するデータを管理対象とする他のデータ管理装置を識別する識別情報を記憶する識別情報記憶手段と、
前記特定のデータ蓄積装置から前記変化情報が受信された場合に、前記識別情報によって識別される前記他のデータ管理装置へ前記変化情報を送信する送信手段と、
をさらに備えたことを特徴とする請求項５に記載のデータ管理装置。
【請求項８】
前記データ蓄積装置に蓄積される各データには、識別子空間を構成する互いに異なる識別子が付与されており、前記識別子空間における所定範囲内の識別子が付与されているデータを管理対象のデータとすることを特徴とする請求項７に記載のデータ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上に分散するデータを管理するデータ管理システムに関する。また、本発明は、本データ管理システムの構成要素であるデータ管理装置にも関する。
【背景技術】
【０００２】
特定のサーバによらず、ネットワークに比較的継続して接続されたノード群によって構成され、ノード間でデータを共有する分散型のデータ管理システムがある。このシステムを利用して、例えばユーザ側ではデータの名前は分かっているが、そのデータのネットワーク上の存在場所が分からない場合に、そのデータを所持しているノードの情報を、ユーザからの要求に応じてユーザに通知するというデータの名前解決サービスを提供することができる。
【０００３】
このようなサービスを提供可能な分散型のデータ管理システムとして、分散ハッシュ表（DHT：Distributed Hash Table）技術を応用した構造型P2P（structured peer-to-peer）システムが知られている。この構造型P2Pシステムの代表的な例として、米国MIT大学のThe Chord Projectによるシステム（Chordシステム）が良く知られている（非特許文献１参照）。
【０００４】
しかし、構造型P2Pシステムでは、多数のノードが頻繁にシステムへの接続／離脱を繰り返すと、システムを正常に維持することができないという問題がある（非特許文献２参照）。このため、数時間程度でシステムへの接続／離脱を繰り返すノード（例えば、常時電源が入れられているわけではない一般ユーザのPC等）で構成されるシステムに対する構造型P2Pシステムの適用は困難であった。この問題を解決する方法として、各ノードの機能のうち、データを管理し名前解決等の処理を実行するデータ管理機能を分離し、当該機能を担当する、システムへの接続／離脱を頻繁に繰り返さない装置を新たに追加する方法がある。
【非特許文献１】I. Stoica，et. al.，“Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications”，Proceedings of the 2001 ACM SIGCOMM Conference，2001
【非特許文献２】J. Risson，et. al.，“Survey of Research towards Robust Peer-to-Peer Networks: Search Methods”，University of New South Wales Technical Report，UNSW-EE-P2P-1-1，2004
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図１７（ａ）に示すように、一般的な構造型P2Pシステムでは、通信ネットワーク４００に対してノード１００が接続されており、各ノード１００は、データを管理し名前解決等の処理を実行するデータ管理部１０１と、管理対象のデータを蓄積するデータ蓄積部１０２とを有している。これに対して、図１７（ｂ）に示すように、データ管理機能を分離した構造型P2Pシステムでは、各ノードを構成するデータ管理部１０１とデータ蓄積部１０２とが分離している。
【０００６】
データ管理部１０１をデータ管理装置として構成し、データ蓄積部１０２をデータ蓄積装置として構成した場合、データ蓄積装置は、電源がしばしばOFFになるものの、データ管理装置はほぼ常時ネットワークに接続している。しかし、データ蓄積装置の電源がOFFになり、当該データ蓄積装置がデータ管理システムから離脱した場合、データ管理装置が定期的に行う各種情報の更新処理（例えばChordにおけるStabilization処理）までの間、当該データ蓄積装置に保存されているデータが使用不可能であるにもかかわらず、そのデータが使用可能と判断されるという課題があった。
【０００７】
同様に、データ蓄積装置の電源がONになり、当該データ蓄積装置がデータ管理システムに接続した場合（より正確には、当該データ蓄積装置の電源がOFFになっている間に、データ管理装置が定期的に行う各種情報の更新処理が少なくとも１回行われ、その後、当該データ蓄積装置の電源がONになった場合）、データ管理装置が定期的に行う各種情報の更新処理までの間、当該データ蓄積装置に保存されているデータが使用可能であるにもかかわらず、そのデータが使用不可能と判断されるという課題があった。
【０００８】
本発明は、上述した課題に鑑みてなされたものであって、データ管理システムに対するデータ蓄積装置の接続状態に応じて、データの使用可否の正確な状態を管理することができるデータ管理システムおよびデータ管理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するためになされたもので、データを蓄積するデータ蓄積装置と、前記データ蓄積装置に蓄積されるデータに関する情報を管理するデータ管理装置とを備えたデータ管理システムにおいて、前記データ蓄積装置は、データと、当該データの使用可否を示す使用可否情報とを関連付けて記憶するデータ記憶手段と、前記データ管理システムに対する接続状態の変化、または当該変化に伴う前記使用可否情報の変化を示す変化情報を前記データ管理装置へ送信する第１の送信手段とを備え、前記データ管理装置は、情報を受信する受信手段と、管理対象のデータに係る前記使用可否情報を記憶する使用可否情報記憶手段と、前記変化情報が受信された場合に、前記管理対象のデータに係る前記使用可否情報を更新する情報更新手段とを備えたことを特徴とするデータ管理システムである。
【００１０】
また、本発明のデータ管理システムにおいて、前記データ管理装置は、前記変化情報が受信された場合に、前記変化情報の送信元である前記データ蓄積装置が記憶しているデータを管理対象とする他のデータ管理装置へ前記変化情報を送信する第２の送信手段をさらに備えたことを特徴とする。
【００１１】
また、本発明のデータ管理システムにおいて、前記データ管理装置は、特定のデータ蓄積装置が記憶するデータを管理対象とする他のデータ管理装置を識別する識別情報を記憶する識別情報記憶手段と、前記特定のデータ蓄積装置から前記変化情報が受信された場合に、前記識別情報によって識別される前記他のデータ管理装置へ前記変化情報を送信する第２の送信手段とをさらに備えたことを特徴とする。
【００１２】
また、本発明のデータ管理システムにおいて、前記データ蓄積装置に蓄積される各データには、識別子空間を構成する互いに異なる識別子が付与されており、前記データ管理装置は、前記識別子空間における所定範囲内の識別子が付与されているデータを管理対象のデータとすることを特徴とする。
【００１３】
また、本発明は、データを蓄積するデータ蓄積装置と、前記データ蓄積装置に蓄積されるデータに関する情報を管理するデータ管理装置とを備えたデータ管理システムを構成する前記データ管理装置において、情報を受信する受信手段と、管理対象のデータの使用可否を示す使用可否情報を記憶する使用可否情報記憶手段と、前記データ管理システムに対する前記データ蓄積装置の接続状態の変化、または当該変化に伴う前記使用可否情報の変化を示す変化情報が受信された場合に、前記管理対象のデータに係る前記使用可否情報を更新する情報更新手段とを備えたことを特徴とするデータ管理装置である。
【００１４】
また、本発明のデータ管理装置は、前記変化情報が受信された場合に、前記変化情報の送信元である前記データ蓄積装置が記憶しているデータを管理対象とする他のデータ管理装置へ前記変化情報を送信する送信手段をさらに備えたことを特徴とする。
【００１５】
また、本発明のデータ管理装置は、特定のデータ蓄積装置が記憶するデータを管理対象とする他のデータ管理装置を識別する識別情報を記憶する識別情報記憶手段と、前記特定のデータ蓄積装置から前記変化情報が受信された場合に、前記識別情報によって識別される前記他のデータ管理装置へ前記変化情報を送信する送信手段とをさらに備えたことを特徴とする。
【００１６】
また、本発明のデータ管理装置において、前記データ蓄積装置に蓄積される各データには、識別子空間を構成する互いに異なる識別子が付与されており、前記識別子空間における所定範囲内の識別子が付与されているデータを管理対象のデータとすることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、変化情報が受信された場合に、管理対象のデータに係る使用可否情報を更新することによって、データ管理システムに対するデータ蓄積装置の接続状態に応じて、データの使用可否の正確な状態を管理することができるという効果が得られる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照し、本発明の実施形態を説明する。本実施形態によるデータ管理システムでは、前述したChordシステムと同様の方式でデータが管理される。Chordシステムでは、システムを構成する各データ管理装置には、当該データ管理装置のIPアドレス（またはIPアドレスとポート番号の組）からハッシュ関数SHA-1（Secure Hash Algorithm 1）（FIPS 180-1，“Secure Hash Standard”，U.S. Department of Commerce/NIST，National Technical Information Service，Springfield，VA，Apr. (1995)を参照）で計算されたハッシュ値が、識別子として付与される。また、ネットワーク上のデータ（データ蓄積装置に蓄積されるデータ）にも、互いにユニークな識別子が付与される。
【００１９】
ここで、データ管理装置およびデータに付与される各々の識別子は、循環する論理上の識別子空間を構成する（図１６参照）。以下、この識別子空間の大きさK（識別子空間を構成する識別子数の最大値）をK＝2mとする。図１６では、一例としてm＝160としている。
【００２０】
ネットワーク上の各データの管理は、識別子空間上で当該データの識別子から正の方向（図１６中の矢印Ａの方向）に見て、次に現れる識別子を持つデータ管理装置が担当するものとする。一例として、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)の範囲の識別子を有するデータを管理する。このように、各データ管理装置の管理範囲を示す識別子の数値範囲はデータ管理装置毎に異なっており、各数値範囲が重ならないようになっている。
【００２２】
次に、本実施形態によるデータ管理システムの構成を説明する。図１は、本データ管理システムの構成を示している。図１において、複数のデータ管理装置１が、通信ネットワーク４００を介して互いに通信を行うことが可能なように接続されている。各データ管理装置１には、データ蓄積装置２が接続されている。データ蓄積装置２は、電源のON／OFFに応じて、データ管理システムへ接続したり、データ管理システムから離脱したりする。データ蓄積装置２には、データ管理装置１が管理対象とするデータが蓄積されている。ユーザ端末３は、ユーザからの指示に基づいて動作し、例えばデータの検索をデータ管理装置１に依頼する。
【００２３】
本実施形態では、１台のデータ管理装置１に対して１台のデータ蓄積装置２が接続されているが、１台のデータ管理装置１に対して複数のデータ蓄積装置２が接続されていてもよい。また、ユーザ端末３も複数存在しているが、図１では１台のみが図示されており、他のユーザ端末の図示は省略されている。
【００２４】
データ管理装置１、データ蓄積装置２、およびユーザ端末３はコンピュータであり、データの加工や演算を行う処理装置、データを保存するための記憶装置、ユーザがコンピュータへの指示を入力するための入力装置、および処理結果を出力する出力装置等のハードウェアと、コンピュータを制御する手順や命令をまとめたソフトウェア（プログラム）とが協働して動作することによって、所望の機能が実現される。
【００２５】
データ管理システムによって管理されるデータには、前述したように識別子が付与されており、その識別子に応じて、そのデータを管理するデータ管理装置１が決まる。しかし、データ蓄積装置２に蓄積されているデータを、当該データ蓄積装置２が接続されているデータ管理装置１が管理するとは限らず、データ管理システム上で当該データ蓄積装置２から離れた場所にあるデータ管理装置１がそのデータを管理することもある。
【００２６】
データ管理装置１において、インタフェース部１０ａ（本発明の送信手段・第２の送信手段・受信手段に対応）は、通信ネットワーク４００を介した他のデータ管理装置１との通信を制御し、各種メッセージの送信や受信を行う。インタフェース部１０ｂは、データ蓄積装置２との通信を制御し、各種メッセージの送信や受信を行う。スイッチ１１は、インタフェース部１０ａを介した通信と、インタフェース部１０ｂを介した通信とを切り換える。
【００２７】
処理部１２（本発明の情報更新手段に対応）は、データ管理に係る様々な処理を実行する。経路表記憶部１３は経路表を記憶し、データ管理表記憶部１４（本発明の使用可否情報記憶手段に対応）はデータ管理表を記憶し、データ経路表記憶部１５（本発明の識別情報記憶手段に対応）はデータ経路表を記憶する。経路表、データ管理表、およびデータ経路表の詳細は後述する。
【００２８】
データ蓄積装置２において、インタフェース部２０（本発明の第１の送信手段に対応）はデータ管理装置１との通信を制御し、各種メッセージの送信や受信を行う。処理部２１は、データ蓄積部２２（本発明のデータ記憶手段に対応）に蓄積されるデータや、データ管理装置１との間で送受信されるメッセージに係る様々な処理を実行する。データ蓄積部２２は、データと、そのデータの識別子と、そのデータの使用可否を示す情報（以下、使用可否情報とする）とを関連付けて記憶する。電源スイッチ２３は、電源のON／OFFの状態を切り換えるためにユーザが操作するスイッチである。処理部２１は、電源スイッチ２３の操作状態に応じて、電源のON／OFFの指示を検出する。
【００２９】
次に、本実施形態によるデータ管理装置１、データ蓄積装置２、およびユーザ端末３が送受信するメッセージの内容を説明する。図２はメッセージの一例を示している。宛先IPアドレスフィールド２００、宛先ポート番号フィールド２０１には、それぞれメッセージの宛先である装置のIPアドレス、ポート番号が記録される。送信元IPアドレスフィールド２０２、送信元ポート番号フィールド２０３には、それぞれメッセージの送信元である装置のIPアドレス、ポート番号が記録される。
【００３０】
メッセージ内容フィールド２０４には、メッセージの内容（データの検索処理の要求等）が記録される。発信元IPアドレスフィールド２０５、発信元ポート番号フィールド２０６には、それぞれメッセージを作成し、最初に発信した装置のIPアドレス、ポート番号が記録されている。
【００３１】
メッセージを最初に発信する装置は、送信元IPアドレスフィールド２０２と発信元IPアドレスフィールド２０５、送信元ポート番号フィールド２０３と発信元ポート番号フィールド２０７にそれぞれ同一の情報を記録する。また、他の装置から受信したメッセージを他の装置に転送する場合、その装置は送信元IPアドレスフィールド２０２と送信元ポート番号フィールド２０３を自身の情報に書き換えると共に、宛先IPアドレスフィールド２００と宛先ポート番号フィールド２０１を転送先の装置の情報に書き換えてメッセージを送信する。
【００３２】
以下の説明において、他の装置から受信したメッセージの内容に基づいて処理を実行し、処理結果に応じた内容のメッセージを送信する場合がある。この場合に、他の装置から受信したメッセージの情報を適宜書き換えてメッセージを転送してもよいし、新たに生成したメッセージを送信してもよい。メッセージの構造は、どちらの方法にも対応可能となっている。以下の説明では、上記のような場合に、新たに生成したメッセージを送信するものとしている。
【００３３】
次に、経路表記憶部１３に格納される経路表の内容を説明する。構造型P2Pシステムでは、ネットワーク上のデータ蓄積装置２に保存されている多数のデータを、多数のデータ管理装置１が分担して管理している。このため、データ管理装置１が、自身の担当範囲外のデータに対する検索処理等を行うためには、他のデータ管理装置１と通信を行う必要がある。
【００３４】
この要求を満たすため、データ管理システムを構成する各データ管理装置１は、他のデータ管理装置１のIPアドレスおよびポート番号の組を経路表として持つ。経路表には、識別子空間上で自身の識別子から正の方向（図１６中の矢印Aの方向）に見て最初に現れる識別子を持つデータ管理装置１の情報がSUCCESSORとして含まれている。同様に、経路表には、識別子空間上で自身の識別子から負の方向（図１６中の矢印Bの方向）に見て最初に現れる識別子を持つデータ管理装置１の情報がPREDECESSORとして含まれている。
【００３５】
経路表にはこれ以外に、識別子空間上で自身の識別子から見て正の方向に現れるm台のデータ管理装置１の情報がSUCCESSOR LISTまたはFinger Tableとして格納されている。SUCCESSOR Listは、識別子空間上で自身の識別子から正の方向に見て最初に現れるm台のデータ管理装置１のリストである。これに対して、Finger Tableは、自身の識別子をXとしたときに、（X+2i）mod2mの識別子を自身の担当範囲に含むm台(0≦i＜m)のデータ管理装置１のリストである。
【００３６】
図３は経路表の一例を示している。経路表は、SUCCESSORおよびPREDECESSORの情報が格納されているエントリ３００，３０１と、SUCCESSOR ListまたはFinger Tableと呼ばれるエントリ３０２とから成る。
【００３７】
SUCCESSORを管理するためのエントリ３００には、SUCCESSORとなる他のデータ管理装置１の識別子（装置識別子）とそのデータ管理装置１のIPアドレスおよびポート番号とが格納されている。PREDECESSORを管理するためのエントリ３０１には、PREDECESSORとなる他のデータ管理装置１の識別子（装置識別子）とそのデータ管理装置１のIPアドレスおよびポート番号とが格納されている。SUCCESSOR ListまたはFinger Tableと呼ばれるエントリ３０２には、m台分（m≧0）のデータ管理装置１の識別子（装置識別子）とそれらのデータ管理装置１のIPアドレスおよびポート番号とが格納されている。
【００３８】
Finger Tableを用いた場合、システムを構成するデータ管理装置の数をNとすると、任意のデータ管理装置に対して最大log2(N) 回の転送回数（Path Length）でメッセージを到達させることができる。つまり、システム内のデータ管理装置数（N）が2倍になっても、メッセージ転送回数は1回程度の増加で済むため、SUCCESSOR LISTと比較して効率的である。このため、経路表として、SUCCESSOR/PREDECESSORの情報を格納するエントリとFinger Tableの組合せが一般的に用いられる。
【００３９】
次に、データ管理表記憶部１４に格納されるデータ管理表の内容を説明する。各データ管理装置１は、自身が管理対象とする識別子空間上の数値範囲を認識しており、その数値範囲に含まれる識別子の付与されたデータの情報をデータ管理表として持つ。データ管理表は、データ毎のエントリにより構成されている。各エントリは、当該データの識別子、当該データが保存されているデータ蓄積装置２のIPアドレスとポート番号、および当該データの使用可否情報の組合せにより構成されている（図４参照）。
【００４０】
次に、データ経路表記憶部１５に格納されるデータ経路表の内容を説明する。データ経路表は、データ管理を効率的に行うためのものであり、配下のデータ蓄積装置２に保存されているデータの識別子と、当該データを管理するデータ管理装置１の情報（識別子、IPアドレス、ポート番号）と当該データの使用可否情報とがデータ経路表に含まれる（図５参照）。経路表およびデータ管理表は従来の構造型P2Pシステムでも使用されているが、データ経路表は従来の構造型P2Pシステムにはない。
【００４１】
データ経路表は、次の３つの時点で更新される。すなわち、（１）配下のデータ蓄積装置２の電源がOFFからONになったとき、（２）配下のデータ蓄積装置２の電源がONからOFFになったとき、（３）定期的な状態確認処理が実行されたときである。
【００４２】
次に、本実施形態によるデータ管理システムの動作を説明する。まず、図６を参照しながら、Finger Tableの生成手順を説明する。この生成手順は従来と同様である。以下では、識別子空間の大きさを2160とする。また、経路表において、SUCCESSORの情報を格納するエントリの設定が既に終了しているものとする。まず、処理部１２は変数iを初期化し（変数iに0を代入し）（ステップＳ１００）、以下の（１）式に従ってIDiを算出する（ステップＳ１０１）。ただし、Xは自身のデータ管理装置１の識別子であり、PmodQは、PをQで割ったときの余りを示す。
IDi＝（X+2i）mod2160  ・・・（１）
【００４３】
続いて、処理部１２は、上記のIDiを管理対象とする（管理対象とする識別子空間上の数値範囲内に上記のIDiを含む）データ管理装置１（ノードN）を探索する（ステップＳ１０２）。処理部１２は、見つかったデータ管理装置１（ノードN）の情報をFinger Tableのi番目のエントリに格納する（ステップＳ１０３）。続いて、処理部１２は変数iの値をチェックする（ステップＳ１０４）。変数iの値が159であった場合にはFinger Tableの生成が終了し、159でなかった場合には、処理部１２は変数iの値に1を加算し（ステップＳ１０５）、再度ステップＳ１０１の処理を実行する。
【００４４】
ステップＳ１０２では、より具体的には、以下のようにしてデータ管理装置１（ノードN）の探索が行われる。まず、処理部１２は、SUCCESSORに対するメッセージを生成し、スイッチ１１を介してインタフェース部１０ａへ出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、SUCCESSORのIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、このメッセージのメッセージ内容として、探索依頼を示す情報とIDiとが書き込まれる。インタフェース部１０ａは、通信ネットワーク４００を介してSUCCESSORへメッセージを送信し、IDiを管理範囲内に持つデータ管理装置１（ノードN）の探索を依頼する。
【００４５】
SUCCESSORにおいて、インタフェース部１０ａは上記のメッセージを受信し、スイッチ１１を介して処理部１２へメッセージを出力する。処理部１２は、メッセージに含まれるIDiが自身の管理範囲内である場合には、自身の識別子等の情報をメッセージに格納して返信する処理を実行する。
【００４６】
また、IDiが自身の管理範囲内でない場合には、処理部１２は、経路表の内容に基づいて、メッセージの転送先となるデータ管理装置１を決定し、そのデータ管理装置１にメッセージを転送する処理を実行する。具体的には、経路表に含まれるデータ管理装置１の中から、IDiから負の方向（図１６中の矢印Ｂの方向）に見て最も近い識別子を持つデータ管理装置１を、メッセージの転送先として選択する。以上の処理を繰り返すことにより、最終的には、IDiを管理範囲内に持つデータ管理装置１にメッセージが到達し、当該データ管理装置１からメッセージが返信される。
【００４７】
上記のようにして返信されたメッセージは、インタフェース部１０ａによって受信され、スイッチ１１を介して処理部１２へ出力される。処理部１２は、ステップＳ１０３において、メッセージに含まれるデータ管理装置１（ノードN）の情報をFinger Tableのi番目のエントリに格納する。以上のようにして、Finger Tableを構成するデータ管理装置１の情報を取得し、Finger Tableを生成することができる。
【００４８】
次に、データ蓄積装置２の電源がOFFからONに変化する場合のデータ管理装置１およびデータ蓄積装置２の動作を説明する。まず、図７を参照しながら、データ蓄積装置２の動作を説明する。データ蓄積装置２の処理部２１は、電源スイッチ２３の状態がOFFからONに切り替えられたことを検出すると、データ蓄積部２２から全データの情報（データの識別子および使用可否情報）を読み出す（ステップＳ２００）。データ蓄積部２２にはk個のデータが蓄積されているものとし、各データは0番目、1番目、・・・、i番目、・・・、k番目のデータとして識別可能であるものとする。
【００４９】
続いて、処理部２１は、データ管理システムへの接続開始（参加開始）をデータ管理装置１に通知するためのメッセージを生成し、インタフェース部２０へメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ蓄積装置２が接続されているデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、データ蓄積装置２のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積部２２から読み出した情報と、データ管理システムへの接続開始を示す情報とが書き込まれる。インタフェース部２０はこのメッセージをデータ管理装置１へ送信する（ステップＳ２０１）。
【００５０】
以下、図８を参照しながら、データ管理装置１の動作を説明する。データ管理装置１のインタフェース部１０ｂはデータ蓄積装置２からのメッセージを受信し、スイッチ１１を介してメッセージを処理部１２へ出力する（ステップＳ３００）。処理部１２は、メッセージが入力されると、変数iを初期化する（変数iに0を代入する）（ステップＳ３０１）。
【００５１】
続いて、処理部１２は、データ経路表記憶部１５からデータ経路表を読み出すと共に、データ蓄積装置２からのメッセージに含まれるk個のデータの情報のうち、i番目のデータの情報を参照する。そして、処理部１２は、このi番目のデータの識別子とデータ経路表内のデータの識別子を比較し、i番目のデータの識別子がデータ経路表内のいずれかのデータの識別子と一致するか否か（i番目のデータの識別子と同じ識別子がデータ経路表に存在するか否か）を判定する（ステップＳ３０２）。
【００５２】
ステップＳ３０２での判定の結果、i番目のデータの識別子がデータ経路表内のどのデータの識別子とも一致しなかった場合（i番目のデータの識別子と同じ識別子がデータ経路表に存在しなかった場合）、処理部１２は、i番目のデータの識別子を管理対象とする（管理対象とする識別子空間上の数値範囲内にi番目のデータの識別子を含む）データ管理装置１を探索する（ステップＳ３０７）。この探索方法は図６のステップＳ１０２と同様である。
【００５３】
ステップＳ３０７の処理を実行することによって、i番目のデータの識別子を管理対象とするデータ管理装置１からメッセージが返信される。処理部１２は、データ経路表に新しいエントリを追加し、そのエントリにi番目のデータの情報を格納することによって、データ経路表を更新する（ステップＳ３０８）。エントリに格納されるデータの情報は、データ蓄積装置２からのメッセージに含まれる当該データの識別子および使用可否情報と、当該データを管理するデータ管理装置１からのメッセージに含まれる当該データ管理装置１の識別子、IPアドレス、およびポート番号とである。
【００５４】
続いて、処理部１２は、i番目のデータを管理しているデータ管理装置１に対して、データ蓄積装置２から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ１１を介してインタフェース部１０ａへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、ステップＳ３０７で見つかったデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置２から通知されたi番目のデータの情報（データの識別子および使用可否情報）と、データの追加を示す情報とが書き込まれる。インタフェース部１０ａはこのメッセージを宛先のデータ管理装置１へ送信する（ステップＳ３０９）。
【００５５】
このメッセージを受信したデータ管理装置１の処理部１２はデータ管理表記憶部１４からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、処理部１２は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報（データの識別子、使用可否情報、データ蓄積装置２のIPアドレスとポート番号）を格納する。
【００５６】
一方、ステップＳ３０２での判定の結果、i番目のデータの識別子がデータ経路表内のいずれかのデータの識別子と一致した場合（i番目のデータの識別子と同じ識別子がデータ経路表に存在した場合）、処理部１２は、データ経路表内で当該識別子に関連付けられているデータの情報（データの使用可否情報）が、データ蓄積装置２から通知されたi番目のデータの情報（データの使用可否情報）と一致するか否かを判定する（ステップＳ３０３）。
【００５７】
ステップＳ３０３での判定の結果、データ経路表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置２から通知されたi番目のデータの情報と一致した場合、処理部１２は、データ経路表内で当該識別子に関連付けられているデータの情報（データの使用可否情報）を、データ蓄積装置２から通知されたi番目のデータの情報（データの使用可否情報）に書き換えることによってデータ経路表を更新する（ステップＳ３０４）。この場合、更新前後でデータ経路表内のデータの情報の内容自体は変化しない。
【００５８】
また、ステップＳ３０３での判定の結果、データ経路表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置２から通知されたi番目のデータの情報と一致しなかった場合、処理部１２は、データ経路表内で当該識別子に関連付けられているデータの情報（データの使用可否情報）を、データ蓄積装置２から通知されたi番目のデータの情報（データの使用可否情報）に書き換えることによってデータ経路表を更新する（ステップＳ３０５）。
【００５９】
続いて、処理部１２は、i番目のデータを管理しているデータ管理装置１に対して、データ蓄積装置２から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ１１を介してインタフェース部１０ａへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ経路表内で当該識別子に関連付けられているデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置２から通知されたi番目のデータの情報（データの識別子および使用可否情報）と、データの状態変化を示す情報とが書き込まれる。インタフェース部１０ａはこのメッセージを宛先のデータ管理装置１へ送信する（ステップＳ３０６）。このメッセージを受信したデータ管理装置１の処理部１２はデータ管理表記憶部１４からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。
【００６０】
上記のステップＳ３０４，Ｓ３０６，Ｓ３０９に続いて、処理部１２は変数iの値をチェックする（ステップＳ３１０）。変数iの値がk-1であった場合には、データ蓄積装置２から通知されたk個のデータに関する処理が終了したことになる。この場合には、処理部１２は、データ経路表内のエントリのうち、新たに追加されたエントリと、情報が更新されたエントリとを除くエントリ（すなわち情報が更新されなかったエントリ）をデータ経路表から削除する（ステップＳ３１２）。また、変数iの値がk-1でなかった場合には、処理部１２は変数iの値に1を加算し（ステップＳ３１１）、再度ステップＳ３０２の処理を実行する。
【００６１】
本実施形態において、稀ではあるが、配下のデータ蓄積装置２に保存されているデータを、自身のデータ管理装置１が管理対象としている状態が発生する可能性がある。その場合には、図８のステップＳ３０７〜Ｓ３０９の代わりに、処理部１２は、データ管理表記憶部１４に格納されているデータ管理表に含まれる当該データの情報を、データ蓄積装置２から通知されたi番目のデータの情報で更新する処理を実行する。
【００６２】
また、本実施形態では、データ管理装置１の配下にデータ蓄積装置２が１台だけ接続され、データ管理装置１が有するデータ経路表には、当該データ蓄積装置２に蓄積されているデータのみの情報が含まれているため、図８のステップＳ３１２において、情報が更新されなかったデータ経路表内のエントリが全て削除される。もし、データ管理装置１の配下に複数のデータ蓄積装置２が接続される形態を採用した場合には、データ経路表内のエントリにデータ蓄積装置２の識別情報も格納するようにしておき、図８のステップＳ３１２では、データ経路表内のエントリのうち、メッセージを送信したデータ蓄積装置２に関するエントリについてのみ、上記の処理を行うようにすればよい。
【００６３】
また、データ蓄積装置２からデータ管理装置１へ送信されるメッセージには、データ管理システムへの接続開始を示す情報が含まれているが、この情報と同等の意味を示す情報として、データ蓄積装置２の電源がOFFからONに変化したことを示す情報が代わりにメッセージに含まれていてもよい。
【００６４】
さらに、多くのデータについては、データ蓄積装置２の電源がONとなることによって、データが使用不可から使用可となる（一部のデータについては使用不可のままであることもあり得る）ことが予想され、データ管理システムへの接続状態の変化とデータの使用可否の変化には密接な関係がある。したがって、データ管理システムへの接続開始を直接的に示す情報の代わりに、データの使用可否の変化を示す情報（データの使用可否に変化があったことを示す情報）がメッセージに含まれていてもよい。このような場合には、データ管理装置１は、データ蓄積装置２のデータ管理システムへの接続状態の変化（あるいはデータ蓄積装置２の電源状態の変化）を必ずしも認識することなく、データ経路表およびデータ管理表の更新処理を実行することになる。
【００６５】
図７および図８を参照して説明したように、データ蓄積装置２の電源がOFFからONに変化する場合に、データ蓄積装置２からメッセージが送信され、そのメッセージに基づいて、データ管理装置１がデータ経路表およびデータ管理表の更新処理を実行することによって、データ蓄積装置２に保存されているデータの実際の使用可否と、データ管理装置１が把握している当該データの使用可否との食い違いが発生している時間を短縮することが可能となる。
【００６６】
次に、データ蓄積装置２の電源がONからOFFに変化する場合のデータ管理装置１およびデータ蓄積装置２の動作を説明する。まず、図９を参照しながら、データ蓄積装置２の動作を説明する。データ蓄積装置２の処理部２１は、電源スイッチ２３の状態がONからOFFに切り替えられたことを検出すると、データ管理システムからの離脱（接続終了）をデータ管理装置１に通知するためのメッセージを生成し、インタフェース部２０へメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ蓄積装置２が接続されているデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、データ蓄積装置２のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ管理システムへの接続終了を示す情報が書き込まれる。インタフェース部２０はこのメッセージをデータ管理装置１へ送信する（ステップＳ４００）。上記の動作の後、データ蓄積装置２の電源がOFFとなる（ステップＳ４０１）。
【００６７】
以下、図１０を参照しながら、データ管理装置１の動作を説明する。データ管理装置１のインタフェース部１０ｂはデータ蓄積装置２からのメッセージを受信し、スイッチ１１を介してメッセージを処理部１２へ出力する（ステップＳ５００）。処理部１２は、メッセージが入力されると、データ経路表記憶部１５からデータ経路表を読み出し、データ経路表内の全てのエントリの使用可否情報を使用不可に書き換えることによって、データ経路表を更新する（ステップＳ５０１）。
【００６８】
続いて、処理部１２は、データ経路表に格納されている全てのデータについて、各データを管理しているデータ管理装置１に対して、データ蓄積装置２から通知された最新のデータの情報（当該データが使用不可であること）を通知するためのメッセージを生成し、スイッチ１１を介してメッセージをインタフェース部１０ａへ出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ経路表内で各データの識別子に関連付けられているデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データの識別子および使用可否情報（使用不可）と、データの状態変化を示す情報とが書き込まれる。インタフェース部１０ａはこのメッセージを宛先のデータ管理装置１へ送信する（ステップＳ５０２）。このメッセージを受信したデータ管理装置１の処理部１２はデータ管理表記憶部１４からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。
【００６９】
前述したように、配下のデータ蓄積装置２に保存されているデータを、自身のデータ管理装置１が管理対象としている状態が発生する可能性がある。その場合には、図１０のステップＳ５０２において、処理部１２は、データ管理表記憶部１４に格納されているデータ管理表に含まれる当該データの使用可否情報を使用不可に書き換える処理を実行する。
【００７０】
また、本実施形態では、データ管理装置１の配下にデータ蓄積装置２が１台だけ接続され、データ管理装置１が有するデータ経路表には、当該データ蓄積装置２に蓄積されているデータのみの情報が含まれているため、図１０のステップＳ５０１において、データ経路表内の全てのエントリの使用可否情報が使用不可となる。もし、データ管理装置１の配下に複数のデータ蓄積装置２が接続される形態を採用した場合には、データ経路表内のエントリにデータ蓄積装置２の識別情報も格納するようにしておき、図１０のステップＳ５０１では、データ経路表内のエントリのうち、メッセージを送信したデータ蓄積装置２に関するエントリについてのみ、上記の処理を行うようにすればよい。
【００７１】
また、データ蓄積装置２からデータ管理装置１へ送信されるメッセージには、データ管理システムへの接続終了を示す情報が含まれているが、この情報と同等の意味を示す情報として、データ蓄積装置２の電源がOＮからOFFに変化したことを示す情報が代わりにメッセージに含まれていてもよい。
【００７２】
また、データ蓄積装置２の電源がOＮからOFFに変化した場合、そのデータ蓄積装置２に蓄積されているデータは全て使用不可となる。したがって、図１０のステップＳ５０２において他のデータ管理装置１へ送信されるメッセージに対して、データの状態変化を示す情報の代わりに、データ蓄積装置２の電源がOFFになったことを示す情報が含まれていてもよい。
【００７３】
さらに、データ管理システムへの接続終了を直接的に示す情報ではなく、データの使用可否の変化を示す情報（データが全て使用不可となることを示す情報）がメッセージに含まれていてもよい。このような場合には、データ管理装置１は、データ蓄積装置２のデータ管理システムへの接続状態の変化（あるいはデータ蓄積装置２の電源状態の変化）を必ずしも認識することなく、データ経路表およびデータ管理表の更新処理を実行することになる。
【００７４】
図９および図１０を参照して説明したように、データ蓄積装置２の電源がONからOFFに変化する場合に、データ蓄積装置２からメッセージが送信され、そのメッセージに基づいて、データ管理装置１がデータ経路表およびデータ管理表の更新処理を実行することによって、データ蓄積装置２に保存されているデータの実際の使用可否と、データ管理装置１が把握している当該データの使用可否との食い違いが発生している時間を短縮することが可能となる。
【００７５】
次に、ユーザ端末３からの検索要求に従ってデータの検索処理を実行する場合のデータ管理装置１の動作を、図１１を参照しながら説明する。ユーザ端末３は、データの検索を要求することを示す情報と、検索を要求するデータの識別子（処理対象識別子）とをメッセージ内容に含むメッセージ（検索要求メッセージ）を、通信ネットワーク４００を介してデータ管理装置１へ送信する。
【００７６】
データ管理装置１のインタフェース部１０ａはユーザ端末３からのメッセージを受信し、スイッチ１１を介してメッセージを処理部１２へ出力する（ステップＳ２００ ）。処理部１２はメッセージ内の処理対象識別子を確認し、その処理対象識別子が、自身の担当する範囲内の識別子であるか否かを判定する（ステップＳ６０１）。
【００７７】
処理対象識別子が、自身の担当する範囲内の識別子でなかった場合、処理部１２はデータ経路表記憶部１５からデータ経路表を読み出し、データ経路表内のデータの識別子と処理対象識別子を比較する。そして、処理部１２は、処理対象識別子がデータ経路表内のいずれかのデータの識別子と一致するか否か（処理対象識別子と同じ識別子がデータ経路表に存在するか否か）を判定する（ステップＳ６０２）。
【００７８】
ステップＳ６０２での判定の結果、処理対象識別子がデータ経路表内のいずれかのデータの識別子と一致した場合（処理対象識別子と同じ識別子がデータ経路表に存在した場合）、処理部１２は、処理対象識別子と一致したデータの識別子と関連付けられているデータ管理装置１（当該データを管理しているデータ管理装置１）をメッセージの送信先に決定する（ステップＳ６０３）。
【００７９】
続いて、処理部１２は、メッセージの送信先に決定したデータ管理装置１へ送信するメッセージを生成し、スイッチ１１を介してメッセージをインタフェース部１０ａへ出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、送信先のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データの識別子と、データの検索要求を示す情報とが書き込まれる。インタフェース部１０ａは、通信ネットワーク４００を介してメッセージを他のデータ管理装置１へ転送する（ステップＳ６０６）。
【００８０】
また、ステップＳ６０２での判定の結果、処理対象識別子がデータ経路表内のどのデータの識別子とも一致しなかった場合（処理対象識別子と同じ識別子がデータ経路表に存在しなかった場合）、処理部１２は、経路表記憶部１３から経路表を読み出し（ステップＳ６０４）、経路表内のデータ管理装置１の識別子と処理対象識別子を比較して、メッセージの送信先となるデータ管理装置１を決定する（ステップＳ６０５）。続いて、送信先のデータ管理装置１へメッセージが送信される（ステップＳ６０６）。
【００８１】
一方、ステップＳ６０１での判定の結果、処理対象識別子が、自身の担当する範囲内の識別子であった場合、処理部１２はデータ管理表記憶部１４からデータ管理表を読み出し、データ管理表内のデータの識別子と処理対象識別子を比較する。そして、処理部１２は、処理対象識別子がデータ管理表内のいずれかのデータの識別子と一致するか否か（処理対象識別子と同じ識別子がデータ管理表に存在するか否か）を判定する（ステップＳ６０７）。
【００８２】
ステップＳ６０７での判定の結果、処理対象識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合（処理対象識別子と同一の識別子がデータ管理表に存在しなかった場合）、処理部１２は、メッセージの発信元（メッセージを発信したユーザ端末３）に対して、処理対象識別子と同一の識別子を有するデータが存在しないことを通知するためのメッセージを生成し、スイッチ１１を介してメッセージをインタフェース部１０ａへ出力する。インタフェース部１０ａは、通信ネットワーク４００を介してメッセージをユーザ端末３へ送信する（ステップＳ６１１）。
【００８３】
また、ステップＳ６０７での判定の結果、処理対象識別子がデータ管理表内のいずれかのデータの識別子と一致した場合（処理対象識別子と同一の識別子がデータ管理表に存在した場合）、処理部１２は、データ管理表内の当該処理対象識別子に対応する全てのエントリの使用可否情報を確認する。そして、処理部１２は、使用可否情報が使用可を示しているエントリが少なくとも１つ存在するか否かを判定する（ステップＳ６０８）。
【００８４】
ステップＳ６０８での判定の結果、使用可否情報が使用可を示しているエントリが１つも存在しなかった場合、処理部１２は、処理対象識別子に対応するデータの全てが現在使用不可能であることを通知するためのメッセージを生成し、スイッチ１１を介してメッセージをインタフェース部１０ａへ出力する。インタフェース部１０ａは、通信ネットワーク４００を介してメッセージをユーザ端末３へ送信する（ステップＳ６１０）。
【００８５】
また、使用可否情報が使用可を示しているエントリが少なくとも１つ存在した場合、処理部１２は、使用可否情報が使用可を示しているエントリの中から１つを選択し、そのエントリに含まれるIPアドレスおよびポート番号を通知するためのメッセージを生成し、スイッチ１１を介してメッセージをインタフェース部１０ａへ出力する。インタフェース部１０ａは、通信ネットワーク４００を介してメッセージをユーザ端末３へ送信する（ステップＳ６０９）。
【００８６】
次に、データ管理装置１が定期的に行う状態確認処理時のデータ管理装置１およびデータ蓄積装置２の動作を説明する。まず、図１２を参照しながら、データ管理装置１の動作を説明する。データ管理装置１の処理部１２は変数iを初期化する（変数iに0を代入する）（ステップＳ７００）。
【００８７】
続いて、処理部１２は、データ経路表内のi番目のエントリのデータの状態を配下のデータ蓄積装置２に確認するためのメッセージ（状態確認メッセージ）を生成し、スイッチ１１を介してインタフェース部１０ｂへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、配下のデータ蓄積装置２のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、状態確認の要求を示す情報と、i番目のエントリに格納されているデータの識別子とが書き込まれる。インタフェース部１０ｂはこのメッセージをデータ蓄積装置２へ送信する（ステップＳ７０１）。
【００８８】
メッセージの送信と同時に処理部１２は図示せぬタイマを起動し、計時を開始する。所定時間（タイムアウト時間）が経過した後、処理部１２は、データ蓄積装置２から応答があったか否か（応答メッセージが受信されたか否か）を判定する（ステップＳ７０２）。ステップＳ７０２での判定の結果、データ蓄積装置２から応答があった場合には、処理部１２は、データ蓄積装置２からの応答メッセージに基づいて、応答内容を確認する（ステップＳ７０３）。この確認の結果に応じて、以下のように処理が分岐する。
【００８９】
データ蓄積装置２からの応答メッセージには、i番目のエントリに格納されているデータの識別子と同じ識別子と、当該識別子を有するデータの有無を示す情報と、当該データの使用可否情報とが含まれている。ステップＳ７０３での確認の結果、状態確認の対象となっているデータがデータ蓄積装置２に保存されていなかった場合には、処理部１２は、当該データについてのデータ経路表内のエントリをデータ経路表から削除する（ステップＳ７０４）。ステップＳ７０２での判定の結果、データ蓄積装置２から応答がなかった場合にも同様に当該データについてのデータ経路表内のエントリがデータ経路表から削除される。
【００９０】
また、ステップＳ７０３での確認の結果、状態確認の対象となっているデータがデータ蓄積装置２に保存されているものの、使用不可であった場合には、処理部１２は、当該データについてのデータ経路表内のエントリの使用可否情報を使用不可に書き換える（ステップＳ７０５）。既に使用可否情報が使用不可であった場合には、エントリの内容は変化しない。また、ステップＳ７０３での確認の結果、状態確認の対象となっているデータがデータ蓄積装置２に保存されており、かつ使用可であった場合には、処理部１２は、当該データについてのデータ経路表内のエントリの使用可否情報を使用可に書き換える（ステップＳ７０６）。既に使用可否情報が使用可であった場合には、エントリの内容は変化しない。
【００９１】
ステップＳ７０４，Ｓ７０５，Ｓ７０６に続いて、処理部１２はi番目のエントリの内容が変化したか否かを判定する（ステップＳ７０７）。i番目のエントリの内容が変化しなかった場合には、処理がステップＳ７０９に進む。
【００９２】
また、ステップＳ７０４の処理を行った場合、およびステップＳ７０５もしくはＳ７０６において、エントリの使用可否情報が変化した場合には、処理部１２は、i番目のエントリのデータを管理しているデータ管理装置１に対して、データ蓄積装置２から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ１１を介してインタフェース部１０ａへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ経路表のi番目のエントリに格納されているデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置２から通知されたデータの情報（データの識別子および使用可否情報）と、データの状態変化を示す情報とが書き込まれる。インタフェース部１０ａはこのメッセージを宛先のデータ管理装置１へ送信する（ステップＳ７０８）。
【００９３】
このメッセージを受信したデータ管理装置１の処理部１２はデータ管理表記憶部１４からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、処理部１２は、メッセージに含まれるデータの識別子からデータ管理表内の更新対象のエントリを識別し、そのエントリの使用可否情報を、メッセージに含まれる使用可否情報に書き換えることによってデータ管理表を更新する。あるいは、処理部１２は、データ管理表から当該エントリを削除する（上記のステップＳ７０４の処理が行われた場合）。
【００９４】
ステップＳ７０８に続いて、処理部１２は変数iの値をチェックする（ステップＳ７０９）。変数iの値がm-1であった場合には、データ経路表に存在するm個のエントリに関する処理が終了したことになる。この場合には、状態確認処理が終了する。また、変数iの値がm-1でなかった場合には、処理部１２は変数iの値に1を加算し（ステップＳ７１０）、再度ステップＳ７０１の処理を実行する。
【００９５】
以下、図１３を参照しながら、データ蓄積装置２の動作を説明する。データ蓄積装置２のインタフェース部２０はデータ管理装置１からのメッセージ（状態確認メッセージ）を受信し、処理部２１へ出力する（ステップＳ８００）。処理部２１は、データ蓄積部２２からデータの情報（データの識別子および使用可否情報）を読み出すと共に、データ管理装置１からのメッセージに含まれるデータの識別子を参照する。そして、処理部２１は、メッセージに含まれるデータの識別子とデータ蓄積部２２内のデータの識別子とを比較し、メッセージに含まれるデータの識別子がデータ蓄積部２２内のいずれかのデータの識別子と一致するか否か（メッセージに含まれるデータの識別子と同じ識別子がデータ蓄積部２２に存在するか否か）を判定する（ステップＳ８０１）。
【００９６】
ステップＳ８０１での判定の結果、メッセージに含まれるデータの識別子がデータ蓄積部２２内のどのデータの識別子とも一致しなかった場合（メッセージに含まれるデータの識別子と同じ識別子を有するデータがデータ蓄積部２２に存在しなかった場合）、処理部２１は、状態確認を要求されたデータが存在しないことをデータ管理装置１に通知するためのメッセージ（応答メッセージ）を生成する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ蓄積装置２が接続されているデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、データ蓄積装置２のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、状態確認を要求されたデータの識別子と、当該識別子を有するデータが存在しないことを示す情報とが書き込まれる。インタフェース部２０はこのメッセージをデータ管理装置１へ送信する（ステップＳ８０５）。
【００９７】
また、ステップＳ８０１での判定の結果、メッセージに含まれるデータの識別子がデータ蓄積部２２内のいずれかのデータの識別子と一致した場合（メッセージに含まれるデータの識別子と同じ識別子を有するデータがデータ蓄積部２２に存在した場合）、処理部２１は、使用可否情報を参照し、状態確認を要求されたデータが使用可能であるか否かを判定する（ステップＳ８０２）。
【００９８】
ステップＳ８０２での判定の結果、状態確認を要求されたデータが使用可能であった場合、処理部２１は、状態確認を要求されたデータが存在すると共に、当該データが使用可能であることをデータ管理装置１に通知するためのメッセージを生成する。このメッセージの宛先IPアドレス、宛先ポート番号、送信元IPアドレス、および送信元ポート番号は、ステップＳ８０５で生成されるメッセージと同様である。また、メッセージ内容として、状態確認を要求されたデータの識別子と、当該識別子を有するデータが存在することを示す情報と、当該データの使用可否情報（使用可能）とが書き込まれる。インタフェース部２０はこのメッセージをデータ管理装置１へ送信する（ステップＳ８０３）。
【００９９】
また、ステップＳ８０２での判定の結果、状態確認を要求されたデータが使用不可能であった場合、処理部２１は、状態確認を要求されたデータが存在すると共に、当該データが使用不可能であることをデータ管理装置１に通知するためのメッセージを生成する。このメッセージの宛先IPアドレス、宛先ポート番号、送信元IPアドレス、および送信元ポート番号は、ステップＳ８０５で生成されるメッセージと同様である。また、メッセージ内容として、状態確認を要求されたデータの識別子と、当該識別子を有するデータが存在することを示す情報と、当該データの使用可否情報（使用不可）とが書き込まれる。インタフェース部２０はこのメッセージをデータ管理装置１へ送信する（ステップＳ８０４）。
【０１００】
上述したように、本実施形態では、データ管理システムに対するデータ蓄積装置２の接続状態の変化、またはその変化に伴うデータの使用可否情報の変化を示すメッセージをデータ蓄積装置２が送信し、そのメッセージを受信したデータ管理装置１がデータ経路表およびデータ管理表の更新処理を実行する（図７〜図１０を参照）。これによって、データ管理システムに対するデータ蓄積装置２の接続状態に応じて、データの使用可否の正確な状態を管理することができる。
【０１０１】
また、本実施形態によるデータ管理装置１は、配下のデータ蓄積装置２から上記のメッセージを受信した場合に、データ蓄積装置２に蓄積されているデータを管理対象とする他のデータ管理装置１へ、データ管理システムに対するデータ蓄積装置２の接続状態の変化、またはその変化に伴うデータの使用可否情報の変化を示すメッセージを送信する（図８および図１０を参照）。これによって、例えばChordシステムのように、各データ管理装置１が管理対象とするデータが識別子空間で決まり、各データ管理装置１が管理対象とするデータがネットワーク上で分散している構造型P2Pシステムにおいても、データ管理システムに対するデータ蓄積装置２の接続状態に応じて、データの使用可否の正確な状態を管理することができる。
【０１０２】
次に、本実施形態の変形例を説明する。図１に示したデータ管理装置１はデータ経路表記憶部１５を備えているが、データ管理装置１がデータ経路表記憶部１５を備えていない場合のデータ管理システムの動作を説明する。まず、図１４を参照しながら、データ蓄積装置２の電源がOFFからONに変化する場合のデータ管理装置１の動作を説明する。データ蓄積装置２の動作は図７と同様であるので、説明を省略する。
【０１０３】
図１４のステップＳ９００〜Ｓ９０１は図８のステップＳ３００〜Ｓ３０１と同様であるので、説明を省略する。ステップＳ９０１に続いて、データ管理装置１の処理部１２は、データ蓄積装置２からのメッセージに含まれるi番目のデータの識別子を確認し、その識別子が、自身の担当する範囲内の識別子であるか否かを判定する（ステップＳ９０２）。
【０１０４】
ステップＳ９０２での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子でなかった場合、処理部１２は、i番目のデータの識別子を管理対象とする（管理対象とする識別子空間上の数値範囲内にi番目のデータの識別子を含む）データ管理装置１を探索する（ステップＳ９０８）。この探索方法は図６のステップＳ１０２と同様である。
【０１０５】
ステップＳ９０８の処理を実行することによって、i番目のデータの識別子を管理対象とするデータ管理装置１からメッセージが返信される。処理部１２は、そのデータ管理装置１に対して、データ蓄積装置２から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ１１を介してインタフェース部１０ａへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、ステップＳ９０８で見つかったデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置２から通知されたi番目のデータの情報（データの識別子および使用可否情報）と、データの状態変化を示す情報とが書き込まれる。インタフェース部１０ａはこのメッセージを宛先のデータ管理装置１へ送信する（ステップＳ９０９）。
【０１０６】
このメッセージを受信したデータ管理装置１の処理部１２はデータ管理表記憶部１４からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、メッセージに含まれるデータの識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合には、処理部１２は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報（データの識別子、使用可否情報、データ蓄積装置２のIPアドレスとポート番号）を格納する。また、メッセージに含まれるデータの識別子がデータ管理表内のいずれかのデータの識別子と一致した場合には、処理部１２は、その識別子が格納されているエントリの使用可否情報を、メッセージに含まれる使用可否情報に書き換えることによってデータ管理表を更新する。
【０１０７】
一方、ステップＳ９０２での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子であった場合、処理部１２は、データ管理表記憶部１４からデータ管理表を読み出すと共に、データ蓄積装置２からのメッセージに含まれるk個のデータの情報のうち、i番目のデータの情報を参照する。そして、処理部１２は、このi番目のデータの識別子とデータ管理表内のデータの識別子とを比較し、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致するか否か（i番目のデータの識別子と同じ識別子がデータ管理表に存在するか否か）を判定する（ステップＳ９０３）。
【０１０８】
ステップＳ９０３での判定の結果、i番目のデータの識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合（i番目のデータの識別子と同じ識別子がデータ管理表に存在しなかった場合）、処理部１２は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報（データの識別子、使用可否情報、データ蓄積装置２のIPアドレスとポート番号）を格納する（ステップＳ９０７）。
【０１０９】
また、ステップＳ９０３での判定の結果、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致した場合（i番目のデータの識別子と同じ識別子がデータ管理表に存在した場合）、処理部１２は、データ管理表内で当該識別子に関連付けられているデータの情報（データの使用可否情報）が、データ蓄積装置２から通知されたi番目のデータの情報（データの使用可否情報）と一致するか否かを判定する（ステップＳ９０４）。
【０１１０】
ステップＳ９０４での判定の結果、データ管理表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置２から通知されたi番目のデータの情報と一致した場合、処理部１２は、データ管理表内で当該識別子に関連付けられているデータの情報（データの使用可否情報）を、データ蓄積装置２から通知されたi番目のデータの情報（データの使用可否情報）に書き換えることによってデータ管理表を更新する（ステップＳ９０５）。この場合、更新前後でデータ管理表内のデータの情報の内容自体は変化しない。
【０１１１】
また、ステップＳ９０４での判定の結果、データ管理表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置２から通知されたi番目のデータの情報と一致しなかった場合、処理部１２は、データ管理表内で当該識別子に関連付けられているデータの情報（データの使用可否情報）を、データ蓄積装置２から通知されたi番目のデータの情報（データの使用可否情報）に書き換えることによってデータ管理表を更新する（ステップＳ９０６）。
【０１１２】
これ以降のステップＳ９１０〜Ｓ９１１は図８のステップＳ３１０〜Ｓ３１１と同様であるので、説明を省略する。ステップＳ９１０での判定の結果、変数iの値がk-1であった場合には、データ蓄積装置２から通知されたk個のデータに関する処理が終了したことになるため、一連の処理が終了する。
【０１１３】
次に、図１５を参照しながら、データ蓄積装置２の電源がONからOFFに変化する場合のデータ管理装置１の動作を説明する。データ蓄積装置２の動作は図９と同様であるので、説明を省略する。データ管理装置１のインタフェース部１０ｂはデータ蓄積装置２からのメッセージを受信し、スイッチ１１を介してメッセージを処理部１２へ出力する（ステップＳ１０００）。このメッセージには、データ管理システムへのデータ蓄積装置２の接続終了を示す情報が含まれている。処理部１２は、メッセージが入力されると、変数iを初期化する（変数iに0を代入する）（ステップＳ１００１）。
【０１１４】
続いて、処理部１２は、データ蓄積装置２からのメッセージに含まれるi番目のデータの識別子を確認し、その識別子が、自身の担当する範囲内の識別子であるか否かを判定する（ステップＳ１００２）。ステップＳ１００２での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子でなかった場合、処理部１２は、i番目のデータの識別子を管理対象とする（管理対象とする識別子空間上の数値範囲内にi番目のデータの識別子を含む）データ管理装置１を探索する（ステップＳ１００６）。この探索方法は図６のステップＳ１０２と同様である。
【０１１５】
ステップＳ１００６の処理を実行することによって、i番目のデータの識別子を管理対象とするデータ管理装置１からメッセージが返信される。処理部１２は、そのデータ管理装置１に対して、データ蓄積装置２から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ１１を介してインタフェース部１０ａへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、ステップＳ１００６で見つかったデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置１のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置２から通知されたi番目のデータの情報（データの識別子および使用可否情報）と、データの状態変化を示す情報とが書き込まれる。インタフェース部１０ａはこのメッセージを宛先のデータ管理装置１へ送信する（ステップＳ１００７）。
【０１１６】
このメッセージを受信したデータ管理装置１の処理部１２はデータ管理表記憶部１４からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、処理部１２は、メッセージに含まれるデータの識別子が格納されているエントリの使用可否情報を、メッセージに含まれる使用可否情報に書き換えることによってデータ管理表を更新する。データ蓄積装置２の電源がOFFになるので、使用可否情報は使用不可となる。
【０１１７】
一方、ステップＳ１００２での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子であった場合、処理部１２は、データ管理表記憶部１４からデータ管理表を読み出すと共に、データ蓄積装置２からのメッセージに含まれるk個のデータの情報のうち、i番目のデータの情報を参照する。そして、処理部１２は、このi番目のデータの識別子とデータ管理表内のデータの識別子とを比較し、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致するか否か（i番目のデータの識別子と同じ識別子がデータ管理表に存在するか否か）を判定する（ステップＳ１００３）。
【０１１８】
ステップＳ１００３での判定の結果、i番目のデータの識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合（i番目のデータの識別子と同じ識別子がデータ管理表に存在しなかった場合）、処理部１２は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報（データの識別子、使用可否情報、データ蓄積装置２のIPアドレスとポート番号）を格納する（ステップＳ１００４）。続いて、処理がステップＳ１００５に進む。
【０１１９】
また、ステップＳ１００３での判定の結果、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致した場合（i番目のデータの識別子と同じ識別子がデータ管理表に存在した場合）、処理部１２は、データ管理表内で当該識別子に関連付けられているデータの使用可否情報を使用不可に書き換えることによってデータ管理表を更新する（ステップＳ１００５）。
【０１２０】
これ以降のステップＳ１００６〜Ｓ１００７は図１４のステップＳ９０７〜Ｓ９０８と同様であるので、説明を省略する。ステップＳ１００７での判定の結果、変数iの値がk-1であった場合には、データ蓄積装置２から通知されたk個のデータに関する処理が終了したことになるため、一連の処理が終了する。
【０１２１】
例えばChordシステムのように、各データ管理装置１が管理対象とするデータが識別子空間で決まり、各データ管理装置１が管理対象とするデータがネットワーク上で分散している構造型P2Pシステムにおいては、データ蓄積装置２に蓄積されているデータを、当該データ蓄積装置２が接続されているデータ管理装置１ではなく、データ管理システム上で当該データ蓄積装置２から離れた場所にあるデータ管理装置１が管理している可能性が高い。このため、図１４のステップＳ９０２での判定の結果、大部分の場合、処理がステップＳ９０８に進むことになる。同様に、図１５のステップＳ１００２での判定の結果、大部分の場合、処理がステップＳ１００６に進むことになる。
【０１２２】
図１４のステップＳ９０８または図１５のステップＳ１００６の処理が実行されると、実際にデータを管理しているデータ管理装置１を探索するためのメッセージが送受信されるため、データ管理装置１の処理負荷および通信ネットワーク４００への通信負荷が増大する。一方、データ管理装置１がデータ経路表記憶部１５を備えている場合でも、図８のステップＳ３０７の処理の実行によって、実際にデータを管理しているデータ管理装置１を探索するためのメッセージが送受信される。
【０１２３】
しかし、ステップＳ３０７の処理が実行されるのは、状態確認処理が実行されてから、データ蓄積装置２の電源がOFFとなるまでの間に新しいデータがデータ蓄積装置２に保存された場合等であり、ステップＳ３０７の処理の実行頻度は小さい。したがって、データ管理装置１がデータ経路表記憶部１５を備えることによって、特定のデータ蓄積装置２が記憶するデータを管理対象とする他のデータ管理装置１に対して、データの状態変化に係るメッセージを送信する場合のデータ管理装置１の処理負荷および通信ネットワーク４００への通信負荷の増大を抑えることができる。
【０１２４】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【図面の簡単な説明】
【０１２５】
【図１】本発明の一実施形態によるデータ管理システムの構成を示すブロック図である。
【図２】本発明の一実施形態におけるメッセージの構造を示す参考図である。
【図３】本発明の一実施形態における経路表の内容を示す参考図である。
【図４】本発明の一実施形態におけるデータ管理表の内容を示す参考図である。
【図５】本発明の一実施形態におけるデータ経路表の内容を示す参考図である。
【図６】本発明の一実施形態における経路表の生成手順を示すフローチャートである。
【図７】本発明の一実施形態において、データ蓄積装置の電源がONになった場合のデータ蓄積装置の動作手順を示すフローチャートである。
【図８】本発明の一実施形態において、データ蓄積装置の電源がONになった場合のデータ管理装置の動作手順を示すフローチャートである。
【図９】本発明の一実施形態において、データ蓄積装置の電源がOFFになった場合のデータ蓄積装置の動作手順を示すフローチャートである。
【図１０】本発明の一実施形態において、データ蓄積装置の電源がOFFになった場合のデータ管理装置の動作手順を示すフローチャートである。
【図１１】本発明の一実施形態において、検索処理時のデータ管理装置の動作手順を示すフローチャートである。
【図１２】本発明の一実施形態において、状態確認処理時のデータ管理装置の動作手順を示すフローチャートである。
【図１３】本発明の一実施形態において、状態確認処理時のデータ蓄積装置の動作手順を示すフローチャートである。
【図１４】本発明の一実施形態（変形例）において、データ蓄積装置の電源がONになった場合のデータ管理装置の動作手順を示すフローチャートである。
【図１５】本発明の一実施形態（変形例）において、データ蓄積装置の電源がOFFになった場合のデータ管理装置の動作手順を示すフローチャートである。
【図１６】循環する識別子空間における識別子の配置の様子を示す参考図である。
【図１７】従来の構造型P2Pシステムの構成を示すブロック図である。
【符号の説明】
【０１２６】
１・・・データ管理装置、２・・・データ蓄積装置、３・・・ユーザ端末、１０ａ，１０ｂ，２０・・・インタフェース部、１１・・・スイッチ、１２，２１・・・処理部、１３・・・経路表記憶部、１４・・・データ管理表記憶部、１５・・・データ経路表記憶部、２２・・・データ蓄積部、２３・・・電源スイッチ、４００・・・通信ネットワーク
【図１】
2008176376.tif 000003
【図２】
2008176376.tif 000004
【図３】
2008176376.tif 000005
【図４】
2008176376.tif 000006
【図５】
2008176376.tif 000007
【図６】
2008176376.tif 000008
【図７】
2008176376.tif 000009
【図８】
2008176376.tif 000010
【図９】
2008176376.tif 000011
【図１０】
2008176376.tif 000012
【図１１】
2008176376.tif 000013
【図１２】
2008176376.tif 000014
【図１３】
2008176376.tif 000015
【図１４】
2008176376.tif 000016
【図１５】
2008176376.tif 000017
【図１６】
2008176376.tif 000018
【図１７】
2008176376.tif 000019