以下、図面を参照し、本発明の実施形態を説明する。本実施形態によるデータ管理システムでは、前述した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)を参照)で計算されたハッシュ値が、識別子として付与される。また、ネットワーク上のデータ(データ蓄積装置に蓄積されるデータ)にも、互いにユニークな識別子が付与される。
ここで、データ管理装置およびデータに付与される各々の識別子は、循環する論理上の識別子空間を構成する(図16参照)。以下、この識別子空間の大きさK(識別子空間を構成する識別子数の最大値)をK=2mとする。図16では、一例としてm=160としている。
ネットワーク上の各データの管理は、識別子空間上で当該データの識別子から正の方向(図16中の矢印Aの方向)に見て、次に現れる識別子を持つデータ管理装置が担当するものとする。一例として、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)の範囲の識別子を有するデータを管理する。このように、各データ管理装置の管理範囲を示す識別子の数値範囲はデータ管理装置毎に異なっており、各数値範囲が重ならないようになっている。
次に、本実施形態によるデータ管理システムの構成を説明する。図1は、本データ管理システムの構成を示している。図1において、複数のデータ管理装置1が、通信ネットワーク400を介して互いに通信を行うことが可能なように接続されている。各データ管理装置1には、データ蓄積装置2が接続されている。データ蓄積装置2は、電源のON/OFFに応じて、データ管理システムへ接続したり、データ管理システムから離脱したりする。データ蓄積装置2には、データ管理装置1が管理対象とするデータが蓄積されている。ユーザ端末3は、ユーザからの指示に基づいて動作し、例えばデータの検索をデータ管理装置1に依頼する。
本実施形態では、1台のデータ管理装置1に対して1台のデータ蓄積装置2が接続されているが、1台のデータ管理装置1に対して複数のデータ蓄積装置2が接続されていてもよい。また、ユーザ端末3も複数存在しているが、図1では1台のみが図示されており、他のユーザ端末の図示は省略されている。
データ管理装置1、データ蓄積装置2、およびユーザ端末3はコンピュータであり、データの加工や演算を行う処理装置、データを保存するための記憶装置、ユーザがコンピュータへの指示を入力するための入力装置、および処理結果を出力する出力装置等のハードウェアと、コンピュータを制御する手順や命令をまとめたソフトウェア(プログラム)とが協働して動作することによって、所望の機能が実現される。
データ管理システムによって管理されるデータには、前述したように識別子が付与されており、その識別子に応じて、そのデータを管理するデータ管理装置1が決まる。しかし、データ蓄積装置2に蓄積されているデータを、当該データ蓄積装置2が接続されているデータ管理装置1が管理するとは限らず、データ管理システム上で当該データ蓄積装置2から離れた場所にあるデータ管理装置1がそのデータを管理することもある。
データ管理装置1において、インタフェース部10a(本発明の送信手段・第2の送信手段・受信手段に対応)は、通信ネットワーク400を介した他のデータ管理装置1との通信を制御し、各種メッセージの送信や受信を行う。インタフェース部10bは、データ蓄積装置2との通信を制御し、各種メッセージの送信や受信を行う。スイッチ11は、インタフェース部10aを介した通信と、インタフェース部10bを介した通信とを切り換える。
処理部12(本発明の情報更新手段に対応)は、データ管理に係る様々な処理を実行する。経路表記憶部13は経路表を記憶し、データ管理表記憶部14(本発明の使用可否情報記憶手段に対応)はデータ管理表を記憶し、データ経路表記憶部15(本発明の識別情報記憶手段に対応)はデータ経路表を記憶する。経路表、データ管理表、およびデータ経路表の詳細は後述する。
データ蓄積装置2において、インタフェース部20(本発明の第1の送信手段に対応)はデータ管理装置1との通信を制御し、各種メッセージの送信や受信を行う。処理部21は、データ蓄積部22(本発明のデータ記憶手段に対応)に蓄積されるデータや、データ管理装置1との間で送受信されるメッセージに係る様々な処理を実行する。データ蓄積部22は、データと、そのデータの識別子と、そのデータの使用可否を示す情報(以下、使用可否情報とする)とを関連付けて記憶する。電源スイッチ23は、電源のON/OFFの状態を切り換えるためにユーザが操作するスイッチである。処理部21は、電源スイッチ23の操作状態に応じて、電源のON/OFFの指示を検出する。
次に、本実施形態によるデータ管理装置1、データ蓄積装置2、およびユーザ端末3が送受信するメッセージの内容を説明する。図2はメッセージの一例を示している。宛先IPアドレスフィールド200、宛先ポート番号フィールド201には、それぞれメッセージの宛先である装置のIPアドレス、ポート番号が記録される。送信元IPアドレスフィールド202、送信元ポート番号フィールド203には、それぞれメッセージの送信元である装置のIPアドレス、ポート番号が記録される。
メッセージ内容フィールド204には、メッセージの内容(データの検索処理の要求等)が記録される。発信元IPアドレスフィールド205、発信元ポート番号フィールド206には、それぞれメッセージを作成し、最初に発信した装置のIPアドレス、ポート番号が記録されている。
メッセージを最初に発信する装置は、送信元IPアドレスフィールド202と発信元IPアドレスフィールド205、送信元ポート番号フィールド203と発信元ポート番号フィールド207にそれぞれ同一の情報を記録する。また、他の装置から受信したメッセージを他の装置に転送する場合、その装置は送信元IPアドレスフィールド202と送信元ポート番号フィールド203を自身の情報に書き換えると共に、宛先IPアドレスフィールド200と宛先ポート番号フィールド201を転送先の装置の情報に書き換えてメッセージを送信する。
以下の説明において、他の装置から受信したメッセージの内容に基づいて処理を実行し、処理結果に応じた内容のメッセージを送信する場合がある。この場合に、他の装置から受信したメッセージの情報を適宜書き換えてメッセージを転送してもよいし、新たに生成したメッセージを送信してもよい。メッセージの構造は、どちらの方法にも対応可能となっている。以下の説明では、上記のような場合に、新たに生成したメッセージを送信するものとしている。
次に、経路表記憶部13に格納される経路表の内容を説明する。構造型P2Pシステムでは、ネットワーク上のデータ蓄積装置2に保存されている多数のデータを、多数のデータ管理装置1が分担して管理している。このため、データ管理装置1が、自身の担当範囲外のデータに対する検索処理等を行うためには、他のデータ管理装置1と通信を行う必要がある。
この要求を満たすため、データ管理システムを構成する各データ管理装置1は、他のデータ管理装置1のIPアドレスおよびポート番号の組を経路表として持つ。経路表には、識別子空間上で自身の識別子から正の方向(図16中の矢印Aの方向)に見て最初に現れる識別子を持つデータ管理装置1の情報がSUCCESSORとして含まれている。同様に、経路表には、識別子空間上で自身の識別子から負の方向(図16中の矢印Bの方向)に見て最初に現れる識別子を持つデータ管理装置1の情報がPREDECESSORとして含まれている。
経路表にはこれ以外に、識別子空間上で自身の識別子から見て正の方向に現れるm台のデータ管理装置1の情報がSUCCESSOR LISTまたはFinger Tableとして格納されている。SUCCESSOR Listは、識別子空間上で自身の識別子から正の方向に見て最初に現れるm台のデータ管理装置1のリストである。これに対して、Finger Tableは、自身の識別子をXとしたときに、(X+2i)mod2mの識別子を自身の担当範囲に含むm台(0≦i<m)のデータ管理装置1のリストである。
図3は経路表の一例を示している。経路表は、SUCCESSORおよびPREDECESSORの情報が格納されているエントリ300,301と、SUCCESSOR ListまたはFinger Tableと呼ばれるエントリ302とから成る。
SUCCESSORを管理するためのエントリ300には、SUCCESSORとなる他のデータ管理装置1の識別子(装置識別子)とそのデータ管理装置1のIPアドレスおよびポート番号とが格納されている。PREDECESSORを管理するためのエントリ301には、PREDECESSORとなる他のデータ管理装置1の識別子(装置識別子)とそのデータ管理装置1のIPアドレスおよびポート番号とが格納されている。SUCCESSOR ListまたはFinger Tableと呼ばれるエントリ302には、m台分(m≧0)のデータ管理装置1の識別子(装置識別子)とそれらのデータ管理装置1のIPアドレスおよびポート番号とが格納されている。
Finger Tableを用いた場合、システムを構成するデータ管理装置の数をNとすると、任意のデータ管理装置に対して最大log2(N) 回の転送回数(Path Length)でメッセージを到達させることができる。つまり、システム内のデータ管理装置数(N)が2倍になっても、メッセージ転送回数は1回程度の増加で済むため、SUCCESSOR LISTと比較して効率的である。このため、経路表として、SUCCESSOR/PREDECESSORの情報を格納するエントリとFinger Tableの組合せが一般的に用いられる。
次に、データ管理表記憶部14に格納されるデータ管理表の内容を説明する。各データ管理装置1は、自身が管理対象とする識別子空間上の数値範囲を認識しており、その数値範囲に含まれる識別子の付与されたデータの情報をデータ管理表として持つ。データ管理表は、データ毎のエントリにより構成されている。各エントリは、当該データの識別子、当該データが保存されているデータ蓄積装置2のIPアドレスとポート番号、および当該データの使用可否情報の組合せにより構成されている(図4参照)。
次に、データ経路表記憶部15に格納されるデータ経路表の内容を説明する。データ経路表は、データ管理を効率的に行うためのものであり、配下のデータ蓄積装置2に保存されているデータの識別子と、当該データを管理するデータ管理装置1の情報(識別子、IPアドレス、ポート番号)と当該データの使用可否情報とがデータ経路表に含まれる(図5参照)。経路表およびデータ管理表は従来の構造型P2Pシステムでも使用されているが、データ経路表は従来の構造型P2Pシステムにはない。
データ経路表は、次の3つの時点で更新される。すなわち、(1)配下のデータ蓄積装置2の電源がOFFからONになったとき、(2)配下のデータ蓄積装置2の電源がONからOFFになったとき、(3)定期的な状態確認処理が実行されたときである。
次に、本実施形態によるデータ管理システムの動作を説明する。まず、図6を参照しながら、Finger Tableの生成手順を説明する。この生成手順は従来と同様である。以下では、識別子空間の大きさを2160とする。また、経路表において、SUCCESSORの情報を格納するエントリの設定が既に終了しているものとする。まず、処理部12は変数iを初期化し(変数iに0を代入し)(ステップS100)、以下の(1)式に従ってIDiを算出する(ステップS101)。ただし、Xは自身のデータ管理装置1の識別子であり、PmodQは、PをQで割ったときの余りを示す。
IDi=(X+2i)mod2160 ・・・(1)
続いて、処理部12は、上記のIDiを管理対象とする(管理対象とする識別子空間上の数値範囲内に上記のIDiを含む)データ管理装置1(ノードN)を探索する(ステップS102)。処理部12は、見つかったデータ管理装置1(ノードN)の情報をFinger Tableのi番目のエントリに格納する(ステップS103)。続いて、処理部12は変数iの値をチェックする(ステップS104)。変数iの値が159であった場合にはFinger Tableの生成が終了し、159でなかった場合には、処理部12は変数iの値に1を加算し(ステップS105)、再度ステップS101の処理を実行する。
ステップS102では、より具体的には、以下のようにしてデータ管理装置1(ノードN)の探索が行われる。まず、処理部12は、SUCCESSORに対するメッセージを生成し、スイッチ11を介してインタフェース部10aへ出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、SUCCESSORのIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、このメッセージのメッセージ内容として、探索依頼を示す情報とIDiとが書き込まれる。インタフェース部10aは、通信ネットワーク400を介してSUCCESSORへメッセージを送信し、IDiを管理範囲内に持つデータ管理装置1(ノードN)の探索を依頼する。
SUCCESSORにおいて、インタフェース部10aは上記のメッセージを受信し、スイッチ11を介して処理部12へメッセージを出力する。処理部12は、メッセージに含まれるIDiが自身の管理範囲内である場合には、自身の識別子等の情報をメッセージに格納して返信する処理を実行する。
また、IDiが自身の管理範囲内でない場合には、処理部12は、経路表の内容に基づいて、メッセージの転送先となるデータ管理装置1を決定し、そのデータ管理装置1にメッセージを転送する処理を実行する。具体的には、経路表に含まれるデータ管理装置1の中から、IDiから負の方向(図16中の矢印Bの方向)に見て最も近い識別子を持つデータ管理装置1を、メッセージの転送先として選択する。以上の処理を繰り返すことにより、最終的には、IDiを管理範囲内に持つデータ管理装置1にメッセージが到達し、当該データ管理装置1からメッセージが返信される。
上記のようにして返信されたメッセージは、インタフェース部10aによって受信され、スイッチ11を介して処理部12へ出力される。処理部12は、ステップS103において、メッセージに含まれるデータ管理装置1(ノードN)の情報をFinger Tableのi番目のエントリに格納する。以上のようにして、Finger Tableを構成するデータ管理装置1の情報を取得し、Finger Tableを生成することができる。
次に、データ蓄積装置2の電源がOFFからONに変化する場合のデータ管理装置1およびデータ蓄積装置2の動作を説明する。まず、図7を参照しながら、データ蓄積装置2の動作を説明する。データ蓄積装置2の処理部21は、電源スイッチ23の状態がOFFからONに切り替えられたことを検出すると、データ蓄積部22から全データの情報(データの識別子および使用可否情報)を読み出す(ステップS200)。データ蓄積部22にはk個のデータが蓄積されているものとし、各データは0番目、1番目、・・・、i番目、・・・、k番目のデータとして識別可能であるものとする。
続いて、処理部21は、データ管理システムへの接続開始(参加開始)をデータ管理装置1に通知するためのメッセージを生成し、インタフェース部20へメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ蓄積装置2が接続されているデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、データ蓄積装置2のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積部22から読み出した情報と、データ管理システムへの接続開始を示す情報とが書き込まれる。インタフェース部20はこのメッセージをデータ管理装置1へ送信する(ステップS201)。
以下、図8を参照しながら、データ管理装置1の動作を説明する。データ管理装置1のインタフェース部10bはデータ蓄積装置2からのメッセージを受信し、スイッチ11を介してメッセージを処理部12へ出力する(ステップS300)。処理部12は、メッセージが入力されると、変数iを初期化する(変数iに0を代入する)(ステップS301)。
続いて、処理部12は、データ経路表記憶部15からデータ経路表を読み出すと共に、データ蓄積装置2からのメッセージに含まれるk個のデータの情報のうち、i番目のデータの情報を参照する。そして、処理部12は、このi番目のデータの識別子とデータ経路表内のデータの識別子を比較し、i番目のデータの識別子がデータ経路表内のいずれかのデータの識別子と一致するか否か(i番目のデータの識別子と同じ識別子がデータ経路表に存在するか否か)を判定する(ステップS302)。
ステップS302での判定の結果、i番目のデータの識別子がデータ経路表内のどのデータの識別子とも一致しなかった場合(i番目のデータの識別子と同じ識別子がデータ経路表に存在しなかった場合)、処理部12は、i番目のデータの識別子を管理対象とする(管理対象とする識別子空間上の数値範囲内にi番目のデータの識別子を含む)データ管理装置1を探索する(ステップS307)。この探索方法は図6のステップS102と同様である。
ステップS307の処理を実行することによって、i番目のデータの識別子を管理対象とするデータ管理装置1からメッセージが返信される。処理部12は、データ経路表に新しいエントリを追加し、そのエントリにi番目のデータの情報を格納することによって、データ経路表を更新する(ステップS308)。エントリに格納されるデータの情報は、データ蓄積装置2からのメッセージに含まれる当該データの識別子および使用可否情報と、当該データを管理するデータ管理装置1からのメッセージに含まれる当該データ管理装置1の識別子、IPアドレス、およびポート番号とである。
続いて、処理部12は、i番目のデータを管理しているデータ管理装置1に対して、データ蓄積装置2から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ11を介してインタフェース部10aへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、ステップS307で見つかったデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置2から通知されたi番目のデータの情報(データの識別子および使用可否情報)と、データの追加を示す情報とが書き込まれる。インタフェース部10aはこのメッセージを宛先のデータ管理装置1へ送信する(ステップS309)。
このメッセージを受信したデータ管理装置1の処理部12はデータ管理表記憶部14からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、処理部12は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報(データの識別子、使用可否情報、データ蓄積装置2のIPアドレスとポート番号)を格納する。
一方、ステップS302での判定の結果、i番目のデータの識別子がデータ経路表内のいずれかのデータの識別子と一致した場合(i番目のデータの識別子と同じ識別子がデータ経路表に存在した場合)、処理部12は、データ経路表内で当該識別子に関連付けられているデータの情報(データの使用可否情報)が、データ蓄積装置2から通知されたi番目のデータの情報(データの使用可否情報)と一致するか否かを判定する(ステップS303)。
ステップS303での判定の結果、データ経路表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置2から通知されたi番目のデータの情報と一致した場合、処理部12は、データ経路表内で当該識別子に関連付けられているデータの情報(データの使用可否情報)を、データ蓄積装置2から通知されたi番目のデータの情報(データの使用可否情報)に書き換えることによってデータ経路表を更新する(ステップS304)。この場合、更新前後でデータ経路表内のデータの情報の内容自体は変化しない。
また、ステップS303での判定の結果、データ経路表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置2から通知されたi番目のデータの情報と一致しなかった場合、処理部12は、データ経路表内で当該識別子に関連付けられているデータの情報(データの使用可否情報)を、データ蓄積装置2から通知されたi番目のデータの情報(データの使用可否情報)に書き換えることによってデータ経路表を更新する(ステップS305)。
続いて、処理部12は、i番目のデータを管理しているデータ管理装置1に対して、データ蓄積装置2から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ11を介してインタフェース部10aへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ経路表内で当該識別子に関連付けられているデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置2から通知されたi番目のデータの情報(データの識別子および使用可否情報)と、データの状態変化を示す情報とが書き込まれる。インタフェース部10aはこのメッセージを宛先のデータ管理装置1へ送信する(ステップS306)。このメッセージを受信したデータ管理装置1の処理部12はデータ管理表記憶部14からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。
上記のステップS304,S306,S309に続いて、処理部12は変数iの値をチェックする(ステップS310)。変数iの値がk-1であった場合には、データ蓄積装置2から通知されたk個のデータに関する処理が終了したことになる。この場合には、処理部12は、データ経路表内のエントリのうち、新たに追加されたエントリと、情報が更新されたエントリとを除くエントリ(すなわち情報が更新されなかったエントリ)をデータ経路表から削除する(ステップS312)。また、変数iの値がk-1でなかった場合には、処理部12は変数iの値に1を加算し(ステップS311)、再度ステップS302の処理を実行する。
本実施形態において、稀ではあるが、配下のデータ蓄積装置2に保存されているデータを、自身のデータ管理装置1が管理対象としている状態が発生する可能性がある。その場合には、図8のステップS307〜S309の代わりに、処理部12は、データ管理表記憶部14に格納されているデータ管理表に含まれる当該データの情報を、データ蓄積装置2から通知されたi番目のデータの情報で更新する処理を実行する。
また、本実施形態では、データ管理装置1の配下にデータ蓄積装置2が1台だけ接続され、データ管理装置1が有するデータ経路表には、当該データ蓄積装置2に蓄積されているデータのみの情報が含まれているため、図8のステップS312において、情報が更新されなかったデータ経路表内のエントリが全て削除される。もし、データ管理装置1の配下に複数のデータ蓄積装置2が接続される形態を採用した場合には、データ経路表内のエントリにデータ蓄積装置2の識別情報も格納するようにしておき、図8のステップS312では、データ経路表内のエントリのうち、メッセージを送信したデータ蓄積装置2に関するエントリについてのみ、上記の処理を行うようにすればよい。
また、データ蓄積装置2からデータ管理装置1へ送信されるメッセージには、データ管理システムへの接続開始を示す情報が含まれているが、この情報と同等の意味を示す情報として、データ蓄積装置2の電源がOFFからONに変化したことを示す情報が代わりにメッセージに含まれていてもよい。
さらに、多くのデータについては、データ蓄積装置2の電源がONとなることによって、データが使用不可から使用可となる(一部のデータについては使用不可のままであることもあり得る)ことが予想され、データ管理システムへの接続状態の変化とデータの使用可否の変化には密接な関係がある。したがって、データ管理システムへの接続開始を直接的に示す情報の代わりに、データの使用可否の変化を示す情報(データの使用可否に変化があったことを示す情報)がメッセージに含まれていてもよい。このような場合には、データ管理装置1は、データ蓄積装置2のデータ管理システムへの接続状態の変化(あるいはデータ蓄積装置2の電源状態の変化)を必ずしも認識することなく、データ経路表およびデータ管理表の更新処理を実行することになる。
図7および図8を参照して説明したように、データ蓄積装置2の電源がOFFからONに変化する場合に、データ蓄積装置2からメッセージが送信され、そのメッセージに基づいて、データ管理装置1がデータ経路表およびデータ管理表の更新処理を実行することによって、データ蓄積装置2に保存されているデータの実際の使用可否と、データ管理装置1が把握している当該データの使用可否との食い違いが発生している時間を短縮することが可能となる。
次に、データ蓄積装置2の電源がONからOFFに変化する場合のデータ管理装置1およびデータ蓄積装置2の動作を説明する。まず、図9を参照しながら、データ蓄積装置2の動作を説明する。データ蓄積装置2の処理部21は、電源スイッチ23の状態がONからOFFに切り替えられたことを検出すると、データ管理システムからの離脱(接続終了)をデータ管理装置1に通知するためのメッセージを生成し、インタフェース部20へメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ蓄積装置2が接続されているデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、データ蓄積装置2のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ管理システムへの接続終了を示す情報が書き込まれる。インタフェース部20はこのメッセージをデータ管理装置1へ送信する(ステップS400)。上記の動作の後、データ蓄積装置2の電源がOFFとなる(ステップS401)。
以下、図10を参照しながら、データ管理装置1の動作を説明する。データ管理装置1のインタフェース部10bはデータ蓄積装置2からのメッセージを受信し、スイッチ11を介してメッセージを処理部12へ出力する(ステップS500)。処理部12は、メッセージが入力されると、データ経路表記憶部15からデータ経路表を読み出し、データ経路表内の全てのエントリの使用可否情報を使用不可に書き換えることによって、データ経路表を更新する(ステップS501)。
続いて、処理部12は、データ経路表に格納されている全てのデータについて、各データを管理しているデータ管理装置1に対して、データ蓄積装置2から通知された最新のデータの情報(当該データが使用不可であること)を通知するためのメッセージを生成し、スイッチ11を介してメッセージをインタフェース部10aへ出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ経路表内で各データの識別子に関連付けられているデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データの識別子および使用可否情報(使用不可)と、データの状態変化を示す情報とが書き込まれる。インタフェース部10aはこのメッセージを宛先のデータ管理装置1へ送信する(ステップS502)。このメッセージを受信したデータ管理装置1の処理部12はデータ管理表記憶部14からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。
前述したように、配下のデータ蓄積装置2に保存されているデータを、自身のデータ管理装置1が管理対象としている状態が発生する可能性がある。その場合には、図10のステップS502において、処理部12は、データ管理表記憶部14に格納されているデータ管理表に含まれる当該データの使用可否情報を使用不可に書き換える処理を実行する。
また、本実施形態では、データ管理装置1の配下にデータ蓄積装置2が1台だけ接続され、データ管理装置1が有するデータ経路表には、当該データ蓄積装置2に蓄積されているデータのみの情報が含まれているため、図10のステップS501において、データ経路表内の全てのエントリの使用可否情報が使用不可となる。もし、データ管理装置1の配下に複数のデータ蓄積装置2が接続される形態を採用した場合には、データ経路表内のエントリにデータ蓄積装置2の識別情報も格納するようにしておき、図10のステップS501では、データ経路表内のエントリのうち、メッセージを送信したデータ蓄積装置2に関するエントリについてのみ、上記の処理を行うようにすればよい。
また、データ蓄積装置2からデータ管理装置1へ送信されるメッセージには、データ管理システムへの接続終了を示す情報が含まれているが、この情報と同等の意味を示す情報として、データ蓄積装置2の電源がONからOFFに変化したことを示す情報が代わりにメッセージに含まれていてもよい。
また、データ蓄積装置2の電源がONからOFFに変化した場合、そのデータ蓄積装置2に蓄積されているデータは全て使用不可となる。したがって、図10のステップS502において他のデータ管理装置1へ送信されるメッセージに対して、データの状態変化を示す情報の代わりに、データ蓄積装置2の電源がOFFになったことを示す情報が含まれていてもよい。
さらに、データ管理システムへの接続終了を直接的に示す情報ではなく、データの使用可否の変化を示す情報(データが全て使用不可となることを示す情報)がメッセージに含まれていてもよい。このような場合には、データ管理装置1は、データ蓄積装置2のデータ管理システムへの接続状態の変化(あるいはデータ蓄積装置2の電源状態の変化)を必ずしも認識することなく、データ経路表およびデータ管理表の更新処理を実行することになる。
図9および図10を参照して説明したように、データ蓄積装置2の電源がONからOFFに変化する場合に、データ蓄積装置2からメッセージが送信され、そのメッセージに基づいて、データ管理装置1がデータ経路表およびデータ管理表の更新処理を実行することによって、データ蓄積装置2に保存されているデータの実際の使用可否と、データ管理装置1が把握している当該データの使用可否との食い違いが発生している時間を短縮することが可能となる。
次に、ユーザ端末3からの検索要求に従ってデータの検索処理を実行する場合のデータ管理装置1の動作を、図11を参照しながら説明する。ユーザ端末3は、データの検索を要求することを示す情報と、検索を要求するデータの識別子(処理対象識別子)とをメッセージ内容に含むメッセージ(検索要求メッセージ)を、通信ネットワーク400を介してデータ管理装置1へ送信する。
データ管理装置1のインタフェース部10aはユーザ端末3からのメッセージを受信し、スイッチ11を介してメッセージを処理部12へ出力する(ステップS200 )。処理部12はメッセージ内の処理対象識別子を確認し、その処理対象識別子が、自身の担当する範囲内の識別子であるか否かを判定する(ステップS601)。
処理対象識別子が、自身の担当する範囲内の識別子でなかった場合、処理部12はデータ経路表記憶部15からデータ経路表を読み出し、データ経路表内のデータの識別子と処理対象識別子を比較する。そして、処理部12は、処理対象識別子がデータ経路表内のいずれかのデータの識別子と一致するか否か(処理対象識別子と同じ識別子がデータ経路表に存在するか否か)を判定する(ステップS602)。
ステップS602での判定の結果、処理対象識別子がデータ経路表内のいずれかのデータの識別子と一致した場合(処理対象識別子と同じ識別子がデータ経路表に存在した場合)、処理部12は、処理対象識別子と一致したデータの識別子と関連付けられているデータ管理装置1(当該データを管理しているデータ管理装置1)をメッセージの送信先に決定する(ステップS603)。
続いて、処理部12は、メッセージの送信先に決定したデータ管理装置1へ送信するメッセージを生成し、スイッチ11を介してメッセージをインタフェース部10aへ出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、送信先のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データの識別子と、データの検索要求を示す情報とが書き込まれる。インタフェース部10aは、通信ネットワーク400を介してメッセージを他のデータ管理装置1へ転送する(ステップS606)。
また、ステップS602での判定の結果、処理対象識別子がデータ経路表内のどのデータの識別子とも一致しなかった場合(処理対象識別子と同じ識別子がデータ経路表に存在しなかった場合)、処理部12は、経路表記憶部13から経路表を読み出し(ステップS604)、経路表内のデータ管理装置1の識別子と処理対象識別子を比較して、メッセージの送信先となるデータ管理装置1を決定する(ステップS605)。続いて、送信先のデータ管理装置1へメッセージが送信される(ステップS606)。
一方、ステップS601での判定の結果、処理対象識別子が、自身の担当する範囲内の識別子であった場合、処理部12はデータ管理表記憶部14からデータ管理表を読み出し、データ管理表内のデータの識別子と処理対象識別子を比較する。そして、処理部12は、処理対象識別子がデータ管理表内のいずれかのデータの識別子と一致するか否か(処理対象識別子と同じ識別子がデータ管理表に存在するか否か)を判定する(ステップS607)。
ステップS607での判定の結果、処理対象識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合(処理対象識別子と同一の識別子がデータ管理表に存在しなかった場合)、処理部12は、メッセージの発信元(メッセージを発信したユーザ端末3)に対して、処理対象識別子と同一の識別子を有するデータが存在しないことを通知するためのメッセージを生成し、スイッチ11を介してメッセージをインタフェース部10aへ出力する。インタフェース部10aは、通信ネットワーク400を介してメッセージをユーザ端末3へ送信する(ステップS611)。
また、ステップS607での判定の結果、処理対象識別子がデータ管理表内のいずれかのデータの識別子と一致した場合(処理対象識別子と同一の識別子がデータ管理表に存在した場合)、処理部12は、データ管理表内の当該処理対象識別子に対応する全てのエントリの使用可否情報を確認する。そして、処理部12は、使用可否情報が使用可を示しているエントリが少なくとも1つ存在するか否かを判定する(ステップS608)。
ステップS608での判定の結果、使用可否情報が使用可を示しているエントリが1つも存在しなかった場合、処理部12は、処理対象識別子に対応するデータの全てが現在使用不可能であることを通知するためのメッセージを生成し、スイッチ11を介してメッセージをインタフェース部10aへ出力する。インタフェース部10aは、通信ネットワーク400を介してメッセージをユーザ端末3へ送信する(ステップS610)。
また、使用可否情報が使用可を示しているエントリが少なくとも1つ存在した場合、処理部12は、使用可否情報が使用可を示しているエントリの中から1つを選択し、そのエントリに含まれるIPアドレスおよびポート番号を通知するためのメッセージを生成し、スイッチ11を介してメッセージをインタフェース部10aへ出力する。インタフェース部10aは、通信ネットワーク400を介してメッセージをユーザ端末3へ送信する(ステップS609)。
次に、データ管理装置1が定期的に行う状態確認処理時のデータ管理装置1およびデータ蓄積装置2の動作を説明する。まず、図12を参照しながら、データ管理装置1の動作を説明する。データ管理装置1の処理部12は変数iを初期化する(変数iに0を代入する)(ステップS700)。
続いて、処理部12は、データ経路表内のi番目のエントリのデータの状態を配下のデータ蓄積装置2に確認するためのメッセージ(状態確認メッセージ)を生成し、スイッチ11を介してインタフェース部10bへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、配下のデータ蓄積装置2のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、状態確認の要求を示す情報と、i番目のエントリに格納されているデータの識別子とが書き込まれる。インタフェース部10bはこのメッセージをデータ蓄積装置2へ送信する(ステップS701)。
メッセージの送信と同時に処理部12は図示せぬタイマを起動し、計時を開始する。所定時間(タイムアウト時間)が経過した後、処理部12は、データ蓄積装置2から応答があったか否か(応答メッセージが受信されたか否か)を判定する(ステップS702)。ステップS702での判定の結果、データ蓄積装置2から応答があった場合には、処理部12は、データ蓄積装置2からの応答メッセージに基づいて、応答内容を確認する(ステップS703)。この確認の結果に応じて、以下のように処理が分岐する。
データ蓄積装置2からの応答メッセージには、i番目のエントリに格納されているデータの識別子と同じ識別子と、当該識別子を有するデータの有無を示す情報と、当該データの使用可否情報とが含まれている。ステップS703での確認の結果、状態確認の対象となっているデータがデータ蓄積装置2に保存されていなかった場合には、処理部12は、当該データについてのデータ経路表内のエントリをデータ経路表から削除する(ステップS704)。ステップS702での判定の結果、データ蓄積装置2から応答がなかった場合にも同様に当該データについてのデータ経路表内のエントリがデータ経路表から削除される。
また、ステップS703での確認の結果、状態確認の対象となっているデータがデータ蓄積装置2に保存されているものの、使用不可であった場合には、処理部12は、当該データについてのデータ経路表内のエントリの使用可否情報を使用不可に書き換える(ステップS705)。既に使用可否情報が使用不可であった場合には、エントリの内容は変化しない。また、ステップS703での確認の結果、状態確認の対象となっているデータがデータ蓄積装置2に保存されており、かつ使用可であった場合には、処理部12は、当該データについてのデータ経路表内のエントリの使用可否情報を使用可に書き換える(ステップS706)。既に使用可否情報が使用可であった場合には、エントリの内容は変化しない。
ステップS704,S705,S706に続いて、処理部12はi番目のエントリの内容が変化したか否かを判定する(ステップS707)。i番目のエントリの内容が変化しなかった場合には、処理がステップS709に進む。
また、ステップS704の処理を行った場合、およびステップS705もしくはS706において、エントリの使用可否情報が変化した場合には、処理部12は、i番目のエントリのデータを管理しているデータ管理装置1に対して、データ蓄積装置2から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ11を介してインタフェース部10aへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ経路表のi番目のエントリに格納されているデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置2から通知されたデータの情報(データの識別子および使用可否情報)と、データの状態変化を示す情報とが書き込まれる。インタフェース部10aはこのメッセージを宛先のデータ管理装置1へ送信する(ステップS708)。
このメッセージを受信したデータ管理装置1の処理部12はデータ管理表記憶部14からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、処理部12は、メッセージに含まれるデータの識別子からデータ管理表内の更新対象のエントリを識別し、そのエントリの使用可否情報を、メッセージに含まれる使用可否情報に書き換えることによってデータ管理表を更新する。あるいは、処理部12は、データ管理表から当該エントリを削除する(上記のステップS704の処理が行われた場合)。
ステップS708に続いて、処理部12は変数iの値をチェックする(ステップS709)。変数iの値がm-1であった場合には、データ経路表に存在するm個のエントリに関する処理が終了したことになる。この場合には、状態確認処理が終了する。また、変数iの値がm-1でなかった場合には、処理部12は変数iの値に1を加算し(ステップS710)、再度ステップS701の処理を実行する。
以下、図13を参照しながら、データ蓄積装置2の動作を説明する。データ蓄積装置2のインタフェース部20はデータ管理装置1からのメッセージ(状態確認メッセージ)を受信し、処理部21へ出力する(ステップS800)。処理部21は、データ蓄積部22からデータの情報(データの識別子および使用可否情報)を読み出すと共に、データ管理装置1からのメッセージに含まれるデータの識別子を参照する。そして、処理部21は、メッセージに含まれるデータの識別子とデータ蓄積部22内のデータの識別子とを比較し、メッセージに含まれるデータの識別子がデータ蓄積部22内のいずれかのデータの識別子と一致するか否か(メッセージに含まれるデータの識別子と同じ識別子がデータ蓄積部22に存在するか否か)を判定する(ステップS801)。
ステップS801での判定の結果、メッセージに含まれるデータの識別子がデータ蓄積部22内のどのデータの識別子とも一致しなかった場合(メッセージに含まれるデータの識別子と同じ識別子を有するデータがデータ蓄積部22に存在しなかった場合)、処理部21は、状態確認を要求されたデータが存在しないことをデータ管理装置1に通知するためのメッセージ(応答メッセージ)を生成する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、データ蓄積装置2が接続されているデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、データ蓄積装置2のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、状態確認を要求されたデータの識別子と、当該識別子を有するデータが存在しないことを示す情報とが書き込まれる。インタフェース部20はこのメッセージをデータ管理装置1へ送信する(ステップS805)。
また、ステップS801での判定の結果、メッセージに含まれるデータの識別子がデータ蓄積部22内のいずれかのデータの識別子と一致した場合(メッセージに含まれるデータの識別子と同じ識別子を有するデータがデータ蓄積部22に存在した場合)、処理部21は、使用可否情報を参照し、状態確認を要求されたデータが使用可能であるか否かを判定する(ステップS802)。
ステップS802での判定の結果、状態確認を要求されたデータが使用可能であった場合、処理部21は、状態確認を要求されたデータが存在すると共に、当該データが使用可能であることをデータ管理装置1に通知するためのメッセージを生成する。このメッセージの宛先IPアドレス、宛先ポート番号、送信元IPアドレス、および送信元ポート番号は、ステップS805で生成されるメッセージと同様である。また、メッセージ内容として、状態確認を要求されたデータの識別子と、当該識別子を有するデータが存在することを示す情報と、当該データの使用可否情報(使用可能)とが書き込まれる。インタフェース部20はこのメッセージをデータ管理装置1へ送信する(ステップS803)。
また、ステップS802での判定の結果、状態確認を要求されたデータが使用不可能であった場合、処理部21は、状態確認を要求されたデータが存在すると共に、当該データが使用不可能であることをデータ管理装置1に通知するためのメッセージを生成する。このメッセージの宛先IPアドレス、宛先ポート番号、送信元IPアドレス、および送信元ポート番号は、ステップS805で生成されるメッセージと同様である。また、メッセージ内容として、状態確認を要求されたデータの識別子と、当該識別子を有するデータが存在することを示す情報と、当該データの使用可否情報(使用不可)とが書き込まれる。インタフェース部20はこのメッセージをデータ管理装置1へ送信する(ステップS804)。
上述したように、本実施形態では、データ管理システムに対するデータ蓄積装置2の接続状態の変化、またはその変化に伴うデータの使用可否情報の変化を示すメッセージをデータ蓄積装置2が送信し、そのメッセージを受信したデータ管理装置1がデータ経路表およびデータ管理表の更新処理を実行する(図7〜図10を参照)。これによって、データ管理システムに対するデータ蓄積装置2の接続状態に応じて、データの使用可否の正確な状態を管理することができる。
また、本実施形態によるデータ管理装置1は、配下のデータ蓄積装置2から上記のメッセージを受信した場合に、データ蓄積装置2に蓄積されているデータを管理対象とする他のデータ管理装置1へ、データ管理システムに対するデータ蓄積装置2の接続状態の変化、またはその変化に伴うデータの使用可否情報の変化を示すメッセージを送信する(図8および図10を参照)。これによって、例えばChordシステムのように、各データ管理装置1が管理対象とするデータが識別子空間で決まり、各データ管理装置1が管理対象とするデータがネットワーク上で分散している構造型P2Pシステムにおいても、データ管理システムに対するデータ蓄積装置2の接続状態に応じて、データの使用可否の正確な状態を管理することができる。
次に、本実施形態の変形例を説明する。図1に示したデータ管理装置1はデータ経路表記憶部15を備えているが、データ管理装置1がデータ経路表記憶部15を備えていない場合のデータ管理システムの動作を説明する。まず、図14を参照しながら、データ蓄積装置2の電源がOFFからONに変化する場合のデータ管理装置1の動作を説明する。データ蓄積装置2の動作は図7と同様であるので、説明を省略する。
図14のステップS900〜S901は図8のステップS300〜S301と同様であるので、説明を省略する。ステップS901に続いて、データ管理装置1の処理部12は、データ蓄積装置2からのメッセージに含まれるi番目のデータの識別子を確認し、その識別子が、自身の担当する範囲内の識別子であるか否かを判定する(ステップS902)。
ステップS902での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子でなかった場合、処理部12は、i番目のデータの識別子を管理対象とする(管理対象とする識別子空間上の数値範囲内にi番目のデータの識別子を含む)データ管理装置1を探索する(ステップS908)。この探索方法は図6のステップS102と同様である。
ステップS908の処理を実行することによって、i番目のデータの識別子を管理対象とするデータ管理装置1からメッセージが返信される。処理部12は、そのデータ管理装置1に対して、データ蓄積装置2から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ11を介してインタフェース部10aへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、ステップS908で見つかったデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置2から通知されたi番目のデータの情報(データの識別子および使用可否情報)と、データの状態変化を示す情報とが書き込まれる。インタフェース部10aはこのメッセージを宛先のデータ管理装置1へ送信する(ステップS909)。
このメッセージを受信したデータ管理装置1の処理部12はデータ管理表記憶部14からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、メッセージに含まれるデータの識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合には、処理部12は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報(データの識別子、使用可否情報、データ蓄積装置2のIPアドレスとポート番号)を格納する。また、メッセージに含まれるデータの識別子がデータ管理表内のいずれかのデータの識別子と一致した場合には、処理部12は、その識別子が格納されているエントリの使用可否情報を、メッセージに含まれる使用可否情報に書き換えることによってデータ管理表を更新する。
一方、ステップS902での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子であった場合、処理部12は、データ管理表記憶部14からデータ管理表を読み出すと共に、データ蓄積装置2からのメッセージに含まれるk個のデータの情報のうち、i番目のデータの情報を参照する。そして、処理部12は、このi番目のデータの識別子とデータ管理表内のデータの識別子とを比較し、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致するか否か(i番目のデータの識別子と同じ識別子がデータ管理表に存在するか否か)を判定する(ステップS903)。
ステップS903での判定の結果、i番目のデータの識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合(i番目のデータの識別子と同じ識別子がデータ管理表に存在しなかった場合)、処理部12は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報(データの識別子、使用可否情報、データ蓄積装置2のIPアドレスとポート番号)を格納する(ステップS907)。
また、ステップS903での判定の結果、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致した場合(i番目のデータの識別子と同じ識別子がデータ管理表に存在した場合)、処理部12は、データ管理表内で当該識別子に関連付けられているデータの情報(データの使用可否情報)が、データ蓄積装置2から通知されたi番目のデータの情報(データの使用可否情報)と一致するか否かを判定する(ステップS904)。
ステップS904での判定の結果、データ管理表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置2から通知されたi番目のデータの情報と一致した場合、処理部12は、データ管理表内で当該識別子に関連付けられているデータの情報(データの使用可否情報)を、データ蓄積装置2から通知されたi番目のデータの情報(データの使用可否情報)に書き換えることによってデータ管理表を更新する(ステップS905)。この場合、更新前後でデータ管理表内のデータの情報の内容自体は変化しない。
また、ステップS904での判定の結果、データ管理表内で当該識別子に関連付けられているデータの情報が、データ蓄積装置2から通知されたi番目のデータの情報と一致しなかった場合、処理部12は、データ管理表内で当該識別子に関連付けられているデータの情報(データの使用可否情報)を、データ蓄積装置2から通知されたi番目のデータの情報(データの使用可否情報)に書き換えることによってデータ管理表を更新する(ステップS906)。
これ以降のステップS910〜S911は図8のステップS310〜S311と同様であるので、説明を省略する。ステップS910での判定の結果、変数iの値がk-1であった場合には、データ蓄積装置2から通知されたk個のデータに関する処理が終了したことになるため、一連の処理が終了する。
次に、図15を参照しながら、データ蓄積装置2の電源がONからOFFに変化する場合のデータ管理装置1の動作を説明する。データ蓄積装置2の動作は図9と同様であるので、説明を省略する。データ管理装置1のインタフェース部10bはデータ蓄積装置2からのメッセージを受信し、スイッチ11を介してメッセージを処理部12へ出力する(ステップS1000)。このメッセージには、データ管理システムへのデータ蓄積装置2の接続終了を示す情報が含まれている。処理部12は、メッセージが入力されると、変数iを初期化する(変数iに0を代入する)(ステップS1001)。
続いて、処理部12は、データ蓄積装置2からのメッセージに含まれるi番目のデータの識別子を確認し、その識別子が、自身の担当する範囲内の識別子であるか否かを判定する(ステップS1002)。ステップS1002での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子でなかった場合、処理部12は、i番目のデータの識別子を管理対象とする(管理対象とする識別子空間上の数値範囲内にi番目のデータの識別子を含む)データ管理装置1を探索する(ステップS1006)。この探索方法は図6のステップS102と同様である。
ステップS1006の処理を実行することによって、i番目のデータの識別子を管理対象とするデータ管理装置1からメッセージが返信される。処理部12は、そのデータ管理装置1に対して、データ蓄積装置2から通知された最新のデータの情報を通知するためのメッセージを生成し、スイッチ11を介してインタフェース部10aへメッセージを出力する。このメッセージの宛先IPアドレスおよび宛先ポート番号として、ステップS1006で見つかったデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、送信元IPアドレスおよび送信元ポート番号として、自身のデータ管理装置1のIPアドレスおよびポート番号が書き込まれる。また、メッセージ内容として、データ蓄積装置2から通知されたi番目のデータの情報(データの識別子および使用可否情報)と、データの状態変化を示す情報とが書き込まれる。インタフェース部10aはこのメッセージを宛先のデータ管理装置1へ送信する(ステップS1007)。
このメッセージを受信したデータ管理装置1の処理部12はデータ管理表記憶部14からデータ管理表を読み出し、メッセージの内容に基づいてデータ管理表を更新する。すなわち、処理部12は、メッセージに含まれるデータの識別子が格納されているエントリの使用可否情報を、メッセージに含まれる使用可否情報に書き換えることによってデータ管理表を更新する。データ蓄積装置2の電源がOFFになるので、使用可否情報は使用不可となる。
一方、ステップS1002での判定の結果、i番目のデータの識別子が、自身の担当する範囲内の識別子であった場合、処理部12は、データ管理表記憶部14からデータ管理表を読み出すと共に、データ蓄積装置2からのメッセージに含まれるk個のデータの情報のうち、i番目のデータの情報を参照する。そして、処理部12は、このi番目のデータの識別子とデータ管理表内のデータの識別子とを比較し、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致するか否か(i番目のデータの識別子と同じ識別子がデータ管理表に存在するか否か)を判定する(ステップS1003)。
ステップS1003での判定の結果、i番目のデータの識別子がデータ管理表内のどのデータの識別子とも一致しなかった場合(i番目のデータの識別子と同じ識別子がデータ管理表に存在しなかった場合)、処理部12は、データ管理表に新しいエントリを追加し、そのエントリに対して、メッセージに含まれるデータの情報(データの識別子、使用可否情報、データ蓄積装置2のIPアドレスとポート番号)を格納する(ステップS1004)。続いて、処理がステップS1005に進む。
また、ステップS1003での判定の結果、i番目のデータの識別子がデータ管理表内のいずれかのデータの識別子と一致した場合(i番目のデータの識別子と同じ識別子がデータ管理表に存在した場合)、処理部12は、データ管理表内で当該識別子に関連付けられているデータの使用可否情報を使用不可に書き換えることによってデータ管理表を更新する(ステップS1005)。
これ以降のステップS1006〜S1007は図14のステップS907〜S908と同様であるので、説明を省略する。ステップS1007での判定の結果、変数iの値がk-1であった場合には、データ蓄積装置2から通知されたk個のデータに関する処理が終了したことになるため、一連の処理が終了する。
例えばChordシステムのように、各データ管理装置1が管理対象とするデータが識別子空間で決まり、各データ管理装置1が管理対象とするデータがネットワーク上で分散している構造型P2Pシステムにおいては、データ蓄積装置2に蓄積されているデータを、当該データ蓄積装置2が接続されているデータ管理装置1ではなく、データ管理システム上で当該データ蓄積装置2から離れた場所にあるデータ管理装置1が管理している可能性が高い。このため、図14のステップS902での判定の結果、大部分の場合、処理がステップS908に進むことになる。同様に、図15のステップS1002での判定の結果、大部分の場合、処理がステップS1006に進むことになる。
図14のステップS908または図15のステップS1006の処理が実行されると、実際にデータを管理しているデータ管理装置1を探索するためのメッセージが送受信されるため、データ管理装置1の処理負荷および通信ネットワーク400への通信負荷が増大する。一方、データ管理装置1がデータ経路表記憶部15を備えている場合でも、図8のステップS307の処理の実行によって、実際にデータを管理しているデータ管理装置1を探索するためのメッセージが送受信される。
しかし、ステップS307の処理が実行されるのは、状態確認処理が実行されてから、データ蓄積装置2の電源がOFFとなるまでの間に新しいデータがデータ蓄積装置2に保存された場合等であり、ステップS307の処理の実行頻度は小さい。したがって、データ管理装置1がデータ経路表記憶部15を備えることによって、特定のデータ蓄積装置2が記憶するデータを管理対象とする他のデータ管理装置1に対して、データの状態変化に係るメッセージを送信する場合のデータ管理装置1の処理負荷および通信ネットワーク400への通信負荷の増大を抑えることができる。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
1・・・データ管理装置、2・・・データ蓄積装置、3・・・ユーザ端末、10a,10b,20・・・インタフェース部、11・・・スイッチ、12,21・・・処理部、13・・・経路表記憶部、14・・・データ管理表記憶部、15・・・データ経路表記憶部、22・・・データ蓄積部、23・・・電源スイッチ、400・・・通信ネットワーク