(57)【要約】【課題】分散型データ管理システムを構成する計算機が故障した場合でも、正常なデータ管理サービスを行うことができるデータ管理装置、データ管理プログラム、および記録媒体を提供する。【解決手段】記憶部12は、自身の分散データ管理装置1が管理するデータの情報を含む担当部分と、１または複数の他の分散データ管理装置1が管理するデータの情報を含む複製部分とを含むデータ管理表を記憶する。メッセージ処理部110は、受信されたメッセージに含まれる処理対象のデータの情報がデータ管理表の担当部分または複製部分に含まれていた場合に、メッセージの内容に従った処理を実行する。【選択図】図１
2007249913.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータネットワーク上に分散したデータを管理するデータ管理装置において、
自身のデータ管理装置が管理するデータの情報を含む第１のデータ管理情報と、１または複数の他のデータ管理装置が管理するデータの情報を含む第２のデータ管理情報とを記憶する記憶手段と、
処理対象のデータの情報を含むメッセージを受信するメッセージ受信手段と、
前記第１のデータ管理情報または前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報または前記第２のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行するメッセージ処理手段と、
を備えたことを特徴とするデータ管理装置。
【請求項２】
受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するデータ管理装置を除く他の１または複数のデータ管理装置へ前記メッセージを転送するメッセージ転送手段をさらに備えたことを特徴とする請求項１に記載のデータ管理装置。
【請求項３】
コンピュータネットワーク上に分散したデータを管理するデータ管理装置において、
自身のデータ管理装置が管理するデータの情報を含む第１のデータ管理情報と、他の１または複数のデータ管理装置が管理するデータの情報を含む第２のデータ管理情報とを記憶する記憶手段と、
処理対象のデータの情報を含むメッセージを受信するメッセージ受信手段と、
前記第１のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行するメッセージ処理手段と、
前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第２のデータ管理情報に含まれていた場合に、前記メッセージに含まれる処理対象のデータを管理するデータ管理装置へ前記メッセージを転送するメッセージ転送手段と、
を備えたことを特徴とするデータ管理装置。
【請求項４】
前記メッセージ処理手段はさらに、前記メッセージが転送されてから所定時間内に、前記メッセージの転送先であるデータ管理装置から前記メッセージの受信確認応答が受信されなかった場合に、前記メッセージの内容に従った処理を実行することを特徴とする請求項３に記載のデータ管理装置。
【請求項５】
前記メッセージ転送手段はさらに、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するデータ管理装置を除く他の１または複数のデータ管理装置へ前記メッセージを転送することを特徴とする請求項３に記載のデータ管理装置。
【請求項６】
コンピュータネットワーク上に分散したデータを管理する機能をコンピュータに実現させるためのデータ管理プログラムにおいて、
自身のコンピュータが管理するデータの情報を含む第１のデータ管理情報と、１または複数の他のコンピュータが管理するデータの情報を含む第２のデータ管理情報とを記憶手段に記憶させる機能と、
処理対象のデータの情報を含むメッセージを受信する機能と、
前記第１のデータ管理情報または前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報または前記第２のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行する機能と、
をコンピュータに実現させることを特徴とするデータ管理プログラム。
【請求項７】
受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するコンピュータを除く他の１または複数のコンピュータへ前記メッセージを転送する機能をコンピュータに実現させることを特徴とする請求項６に記載のデータ管理プログラム。
【請求項８】
コンピュータネットワーク上に分散したデータを管理する機能をコンピュータに実現させるためのデータ管理プログラムにおいて、
自身のデータ管理装置が管理するデータの情報を含む第１のデータ管理情報と、他の１または複数のデータ管理装置が管理するデータの情報を含む第２のデータ管理情報とを記憶手段に記憶させる機能と、
処理対象のデータの情報を含むメッセージを受信する機能と、
前記第１のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行する機能と、
前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第２のデータ管理情報に含まれていた場合に、前記メッセージに含まれる処理対象のデータを管理するコンピュータへ前記メッセージを転送する機能と、
をコンピュータに実現させることを特徴とするデータ管理プログラム。
【請求項９】
前記メッセージが転送されてから所定時間内に、前記メッセージの転送先であるコンピュータから前記メッセージの受信確認応答が受信されなかった場合に、前記メッセージの内容に従った処理を実行する機能をコンピュータに実現させることを特徴とする請求項８に記載のデータ管理プログラム。
【請求項１０】
受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するコンピュータを除く他の１または複数のコンピュータへ前記メッセージを転送する機能をコンピュータに実現させることを特徴とする請求項８に記載のデータ管理プログラム。
【請求項１１】
請求項６〜請求項１０のいずれかに記載のデータ管理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワーク上に分散したデータを管理するデータ管理装置に関する。また、本発明は、本データ管理装置の機能をコンピュータに実現させるためのデータ管理プログラムに関すると共に、本データ管理プログラムを記録したコンピュータ読み取り可能な記録媒体にも関する。
【背景技術】
【０００２】
特定のサーバによらず、継続的あるいは一時的にネットワークに接続した計算機群によって構成される分散型のデータ管理システムがある。このシステムを利用して、例えばユーザ側ではデータの名前は分かっているが、そのデータのネットワーク上の存在場所が分からない場合に、そのデータを所持している計算機の情報を、ユーザからの要求に応じてユーザに通知するというデータの名前解決サービスを提供することができる。分散型データ管理システムとして、分散ハッシュ表技術を応用したシステムが知られている。分散型データ管理システムに適用する分散ハッシュ表技術として、米国MIT大学のThe Chord Projectが良く知られている（非特許文献1参照）。
【０００３】
Chordでは、データ、およびそれを管理する計算機には、それぞれ160bitのユニークな識別子が付与されている。160bitの識別子として、SHA-1（Secure Hash Algorithm 1）と呼ばれるハッシュ関数の出力値（ハッシュ値）が一般的に用いられている（非特許文献2参照）。各々の識別子は、循環するハッシュ空間を構成する（図8参照）。データの管理は、ハッシュ空間上で当該データの識別子から正の方向（図8中の矢印Ａの方向）に見て、次に現れる識別子を持つ計算機が担当することになる。例として、p台の計算機でq個のデータを管理するシステムを想定する。計算機の識別子を IDs1，IDs2，・・・，IDsp、データの識別子を IDd1，IDd2，・・・，IDdqとすると、識別子IDs1を持つ計算機は、IDsp ＜ x ≦ 2160-1および0 ≦ x ＜ IDs1の範囲の識別子を有するデータを管理する。また、識別子IDs2を持つ計算機は、IDs1 ＜ x ＜ IDs2の範囲の識別子を有するデータを管理する。以下、このデータ管理に係る情報を「データ管理表」と呼ぶ。
【０００４】
次に、従来の分散型データ管理システムにおける故障対策法を、非特許文献1の内容に基づいて説明する。システムを構成する各計算機は、ハッシュ空間上で自身の識別子から正の方向（図8中の矢印Ａの方向）に見て、次に現れる識別子を持つ計算機を、自らのSUCCESSORとして認識している。「認識している」とは、SUCCESSORのIPアドレスとポート番号とを保持しており、SUCCESSORとの間でメッセージを送受信可能であることを表す。同様に、各計算機は、ハッシュ空間上で自身の識別子から負の方向（図8中の矢印Ｂの方向）に見て、次に現れる識別子を持つ計算機を、自らのPREDECESSORとして認識している。また、各計算機は、ハッシュ空間上で自身の識別子から見て正の方向に現れるr台の計算機の情報を、SUCCESSOR LISTまたはFinger Tableとして保有している。
【０００５】
これら「SUCCESSOR List」または「Finger Table」と呼ばれる部分、およびSUCCESSOR／PREDECESSORを管理する2つのエントリをあわせて、経路表と呼ぶ。経路表およびデータ管理表の内容は、Stabilizationと呼ばれる確認処理により定期的に更新される。具体的には各計算機は、Stabilizationにより、自身の経路表に追加すべき新規の計算機や、自身の経路表から削除すべき計算機（故障等の理由により応答が無い計算機）を検知し、自律的に経路表およびデータ管理表の更新を行う。
【０００６】
このようなシステムにおいて、計算機が故障した場合の動作を説明する。システムを構成する計算機群のうち、ある計算機が故障した場合、その計算機のSUCCESSORはStabilization実行時にPREDECESSORの離脱を検知し、経路表を更新すると共に、PREDECESSORが担当していたデータの管理情報を再度構築しなおし、自身のデータ管理表に追加する。また、故障した計算機の情報を経路表のエントリとして保有する計算機は、Stabilization実行時にその計算機がシステムから離脱したことを検知し、経路表を更新する。以上のように、システムを構成する計算機の故障に対して、システムに残る計算機が自律的に対応することにより、分散型データ管理サービスを提供可能な状態が維持される。
【非特許文献１】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)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、従来の分散型データ管理システムでは、システムを構成する計算機が故障した場合、少なくとも次のStabilizationが実行され、経路表およびデータ管理表が更新されるまでの間、故障した計算機が管理していたデータの管理サービスをユーザに提供できなくなるという問題があった。
【０００８】
本発明は、上述した問題点に鑑みてなされたものであって、分散型データ管理システムを構成するデータ管理装置が故障した場合でも、正常なデータ管理サービスを行うことができるデータ管理装置、データ管理プログラム、および記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するためになされたもので、コンピュータネットワーク上に分散したデータを管理するデータ管理装置において、自身のデータ管理装置が管理するデータの情報を含む第１のデータ管理情報と、１または複数の他のデータ管理装置が管理するデータの情報を含む第２のデータ管理情報とを記憶する記憶手段と、処理対象のデータの情報を含むメッセージを受信するメッセージ受信手段と、前記第１のデータ管理情報または前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報または前記第２のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行するメッセージ処理手段とを備えたことを特徴とするデータ管理装置である。
【００１０】
また、本発明のデータ管理装置は、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するデータ管理装置を除く他の１または複数のデータ管理装置へ前記メッセージを転送するメッセージ転送手段をさらに備えたことを特徴とする。
【００１１】
また、本発明は、コンピュータネットワーク上に分散したデータを管理するデータ管理装置において、自身のデータ管理装置が管理するデータの情報を含む第１のデータ管理情報と、他の１または複数のデータ管理装置が管理するデータの情報を含む第２のデータ管理情報とを記憶する記憶手段と、処理対象のデータの情報を含むメッセージを受信するメッセージ受信手段と、前記第１のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行するメッセージ処理手段と、前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第２のデータ管理情報に含まれていた場合に、前記メッセージに含まれる処理対象のデータを管理するデータ管理装置へ前記メッセージを転送するメッセージ転送手段とを備えたことを特徴とするデータ管理装置である。
【００１２】
また、本発明のデータ管理装置において、前記メッセージ処理手段はさらに、前記メッセージが転送されてから所定時間内に、前記メッセージの転送先であるデータ管理装置から前記メッセージの受信確認応答が受信されなかった場合に、前記メッセージの内容に従った処理を実行することを特徴とする。
【００１３】
また、本発明のデータ管理装置において、前記メッセージ転送手段はさらに、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するデータ管理装置を除く他の１または複数のデータ管理装置へ前記メッセージを転送することを特徴とする。
【００１４】
また、本発明は、コンピュータネットワーク上に分散したデータを管理する機能をコンピュータに実現させるためのデータ管理プログラムにおいて、自身のコンピュータが管理するデータの情報を含む第１のデータ管理情報と、１または複数の他のコンピュータが管理するデータの情報を含む第２のデータ管理情報とを記憶手段に記憶させる機能と、処理対象のデータの情報を含むメッセージを受信する機能と、前記第１のデータ管理情報または前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報または前記第２のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行する機能とをコンピュータに実現させることを特徴とするデータ管理プログラムである。
【００１５】
また、本発明のデータ管理プログラムは、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するコンピュータを除く他の１または複数のコンピュータへ前記メッセージを転送する機能をコンピュータに実現させることを特徴とする。
【００１６】
また、本発明は、コンピュータネットワーク上に分散したデータを管理する機能をコンピュータに実現させるためのデータ管理プログラムにおいて、自身のデータ管理装置が管理するデータの情報を含む第１のデータ管理情報と、他の１または複数のデータ管理装置が管理するデータの情報を含む第２のデータ管理情報とを記憶手段に記憶させる機能と、処理対象のデータの情報を含むメッセージを受信する機能と、前記第１のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報に含まれていた場合に、前記メッセージの内容に従った処理を実行する機能と、前記第２のデータ管理情報を前記記憶手段から読み出し、受信された前記メッセージに含まれる処理対象のデータの情報が前記第２のデータ管理情報に含まれていた場合に、前記メッセージに含まれる処理対象のデータを管理するコンピュータへ前記メッセージを転送する機能とをコンピュータに実現させることを特徴とするデータ管理プログラムである。
【００１７】
また、本発明のデータ管理プログラムは、前記メッセージが転送されてから所定時間内に、前記メッセージの転送先であるコンピュータから前記メッセージの受信確認応答が受信されなかった場合に、前記メッセージの内容に従った処理を実行する機能をコンピュータに実現させることを特徴とする。
【００１８】
また、本発明のデータ管理プログラムは、受信された前記メッセージに含まれる処理対象のデータの情報が前記第１のデータ管理情報にも前記第２のデータ管理情報にも含まれていなかった場合に、前記第２のデータ管理情報によって識別されるデータを管理するコンピュータを除く他の１または複数のコンピュータへ前記メッセージを転送する機能をコンピュータに実現させることを特徴とする。
【００１９】
また、本発明は、上記のデータ管理プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００２０】
本発明によれば、メッセージの受信時に、仮に処理対象のデータを管理している他のデータ管理装置が故障していたとしても、そのデータ管理装置に代わって、メッセージを受信したデータ管理装置が、メッセージの内容に従った処理を実行するので、正常なデータ管理サービスを行うことができるという効果が得られる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態による分散型データ管理システムの構成を示している。図1において、複数の分散データ管理装置1およびユーザ端末2が、通信ネットワーク300を介して互いに通信を行うことが可能なように接続されている。分散データ管理装置1およびユーザ端末2は共にコンピュータである。各々の分散データ管理装置1およびユーザ端末2では、データの加工や演算を行う処理装置、データを保存するための記憶装置、ユーザがコンピュータへの指示を入力するための入力装置、および処理結果を出力する出力装置等のハードウェアと、コンピュータを制御する手順や命令をまとめたソフトウェア（プログラム）とが協働して動作することによって、所望の機能が実現される。
【００２２】
分散データ管理装置1において、通信処理部10は、他の分散データ管理装置1やユーザ端末2との通信を制御し、データの送信や受信を行う。処理部11は、データ管理に係る様々な処理を実行する。記憶部12は経路表およびデータ管理表を記憶する。また、処理部11において、メッセージ処理部110は、他の分散データ管理装置1やユーザ端末2から受信されたメッセージに基づいて処理を実行する。経路表・データ管理表更新処理部111は、従来のStabilizationと同様の処理を実行し、記憶部12に格納されている経路表およびデータ管理表の内容を更新する。
【００２３】
本実施形態では、分散型データ管理システムを構成する各分散データ管理装置1は、自身が担当するデータの管理を行うと共に、ハッシュ空間上で自身の識別子と近い識別子を有する1または複数の他の分散データ管理装置1が担当するデータの管理情報の複製を保持する。これにより、後述するように、ある分散データ管理装置1が故障した場合に、Stabilizationの実行前であっても、その分散データ管理装置1が担当していたデータの管理情報の複製が別の分散データ管理装置1に保存されているため、ユーザに対してデータ管理サービスを提供することが可能となる。
【００２４】
記憶部12が記憶する経路表には、他の分散データ管理装置1との通信に必要な情報（例えばIPアドレスおよびポート番号）が含まれている。図2は経路表の一例を示している。経路表は、前述した「SUCCESSOR List」または「Finger Table」と呼ばれる部分と、SUCCESSORおよびPREDECESSORを管理する2つのエントリとから成る。「SUCCESSOR List」または「Finger Table」には、他の分散データ管理装置1の識別子（装置識別子）と、その分散データ管理装置1のIPアドレスおよびポート番号とが含まれている。処理部11は、通信処理部10を介して他の分散データ管理装置1と通信を行い、通信結果に基づいて経路表を作成し、記憶部12に予め格納しているものとする。
【００２５】
記憶部12が記憶するデータ管理表には、自身および他の分散データ管理装置1が管理するデータについての情報（例えばデータが保存されている装置のIPアドレスおよびポート番号）が含まれている。図3はデータ管理表の一例を示している。データ管理表は、自身が担当するデータの情報（第１のデータ管理情報）が含まれる領域（図3中の「担当部分」）と、PREDECESSORが担当するデータ管理表の複製（第２のデータ管理情報）が含まれる領域（図3中の「複製部分」）とから成る。この定義より明らかなように、自身が保有するデータ管理表の「複製部分」は、PREDECESSORが保有するデータ管理表の「担当部分」と同じである。
【００２６】
「担当部分」および「複製部分」には、管理対象のデータの識別子（データ識別子）と、そのデータを保有する計算機のIPアドレスおよびポート番号と、そのデータを管理する分散データ管理装置1のIPアドレスおよびポート番号とが含まれている。「複製部分」に含まれる情報は、PREDECESSORが保有する「担当部分」の複製だけに限られるわけではなく、自身を除く1または複数の他の分散データ管理装置1の「担当部分」の複製が「複製部分」に含まれていればよい。
【００２７】
処理部1１は、自身が管理するデータの情報をデータ管理表に予め格納しているものとする。また、処理部11は、通信処理部10を介して他の分散データ管理装置1と通信を行い、他の分散データ管理装置1からその分散データ管理装置1の担当部分の情報を取得し、データ管理表に予め格納しているものとする。
【００２８】
ユーザ端末2は、ユーザからの指示に基づいてデータの存在場所を探索する際に、そのユーザ端末2が知っている分散データ管理装置1に対して、そのデータの情報を要求するためのメッセージを送信する。また、分散データ管理装置1は、ユーザ端末2からメッセージを受信した場合に、必要に応じて、他の分散データ管理装置1へそのメッセージを転送する。図4は上記のメッセージの一例を示している。「宛先IPアドレス」および「宛先ポート番号」はそれぞれ、メッセージの宛先である分散データ管理装置1のIPアドレスおよびポート番号を示している。「送信元IPアドレス」および「送信元ポート番号」はそれぞれ、メッセージの送信元である分散データ管理装置1またはユーザ端末2のIPアドレスおよびポート番号を示している。
【００２９】
「処理対象識別子」は、計算機による処理対象となるデータの識別子を示している。「コマンド」は、処理対象識別子で識別されるデータに対して計算機が行うべき処理内容を示している。この処理内容とは、例えばデータ管理表上で処理対象識別子に対応するIPアドレスおよびポート番号の情報を送信元に返信するということや、データ管理表に対してエントリを登録する／削除するということを示している。また、メッセージには、そのメッセージを作成し、発信したユーザ端末2を特定するための発信元IPアドレスおよび発信元ポート番号も含まれている。
【００３０】
次に、本実施形態による分散データ管理装置1の動作を説明する。まず、図5を参照し、他の分散データ管理装置1またはユーザ端末2からメッセージを受信する場合の分散データ管理装置1の動作を説明する。通信処理部10は、メッセージの宛先IPアドレスおよび宛先ポート番号が自身を指すメッセージのみ受信する（ステップS100 ）。メッセージを受信した場合、通信処理部10はメッセージをメッセージ処理部110へ出力する。メッセージ処理部110は、送信元IPアドレスおよび送信元ポート番号で識別される分散データ管理装置1またはユーザ端末2に対して、通信処理部10を介して受信確認用のメッセージ（受信確認応答）を送信し、応答を行う（ステップS101 ）。
【００３１】
続いて、メッセージ処理部110はメッセージ内の処理対象識別子を確認すると共に、記憶部12に格納されたデータ管理表内の担当部分のデータ識別子を順に読み出して処理対象識別子と比較し、担当部分のデータ識別子の中に処理対象識別子と一致する識別子があるか否かを判定する（ステップS102）。処理対象識別子が担当部分の範囲内の識別子であった場合（担当部分のデータ識別子の中に処理対象識別子と一致する識別子があった場合）、メッセージ処理部110はメッセージ内のコマンドの内容に従った処理を実行する（ステップS103）。
【００３２】
一方、処理対象識別子が担当部分の範囲内の識別子でなかった場合（担当部分のデータ識別子の中に処理対象識別子と一致する識別子がなかった場合）、メッセージ処理部110は、記憶部12に格納されたデータ管理表内の複製部分のデータ識別子を順に読み出して処理対象識別子と比較し、複製部分のデータ識別子の中に処理対象識別子と一致する識別子があるか否かを判定する（ステップS104）。処理対象識別子が複製部分の範囲内の識別子であった場合（複製部分のデータ識別子の中に処理対象識別子と一致する識別子があった場合）、メッセージ処理部110はメッセージ内のコマンドの内容に従った処理を実行する（ステップS103）。
【００３３】
一方、処理対象識別子が複製部分の範囲内の識別子でなかった場合（複製部分のデータ識別子の中に処理対象識別子と一致する識別子がなかった場合）、メッセージ処理部110は記憶部12から経路表を読み出し（ステップS105）、経路表内の分散データ管理装置1の識別子と処理対象識別子を比較してメッセージの転送先の分散データ管理装置1を決定する（ステップS106）。続いて、メッセージ処理部110はメッセージの宛先IPアドレスおよび宛先ポート番号を転送先の分散データ管理装置1のIPアドレスおよびポート番号に書き換えると共に、送信元IPアドレスおよび送信元ポート番号を自身のIPアドレスおよびポート番号に書き換え、通信処理部10を介してメッセージを転送する（ステップS107）。メッセージの転送先となる分散データ管理装置1は1台でも複数台でもよい。
【００３４】
メッセージの転送後、メッセージ処理部110は転送先の分散データ管理装置1からの応答に備えて待機し、応答の有無を判定する（ステップS108）。メッセージが転送されてから所定時間内に応答があった（つまり転送先の分散データ管理装置1が正常に動作している）場合は、処理が終了する。一方、メッセージが転送されてから所定時間内に応答がなかった場合、処理がステップS105に戻り、再度経路表を探索して別の転送先を決定する処理と、メッセージの転送処理が行われる。転送先の分散データ管理装置1から応答があるまで同様の処理が行われる。
【００３５】
上記によれば、受信されたメッセージに含まれる処理対象のデータの情報がデータ管理表の担当部分に含まれていなくても、複製部分に含まれていた場合には、メッセージの内容に従った処理が行われる。したがって、メッセージの受信時に、仮に処理対象のデータを管理している他の分散データ管理装置1が故障していたとしても、その分散データ管理装置1に代わって、メッセージを受信した分散データ管理装置1が、メッセージの内容に従った処理を実行するので、正常なデータ管理サービスを滞りなく行うことができる。
【００３６】
また、上記によれば、受信されたメッセージに含まれる処理対象のデータの情報がデータ管理表の担当部分にも複製部分にも含まれていなかった場合に、複製部分に含まれるデータ識別子によって識別されるデータを管理する分散データ管理装置1を除く他の1または複数の分散データ管理装置1へメッセージが転送される。このようにしてメッセージが転送された結果、処理対象のデータの情報を担当部分または複製部分に有する分散データ管理装置1によって、メッセージの内容に従った処理が実行されるので、正常なデータ管理サービスを滞りなく行うことができる。
【００３７】
次に、図6を参照し、他の分散データ管理装置1またはユーザ端末2からメッセージを受信する場合の分散データ管理装置1の他の動作例を説明する。図5のステップS100〜S101と同様にして、メッセージが受信される（ステップS200）と、メッセージの送信先に対して応答が行われる（ステップS201）。
【００３８】
続いて、メッセージ処理部110はメッセージ内の処理対象識別子を確認すると共に、記憶部12に格納されたデータ管理表内の担当部分のデータ識別子を順に読み出して処理対象識別子と比較し、担当部分のデータ識別子の中に処理対象識別子と一致する識別子があるか否かを判定する（ステップS202）。処理対象識別子が担当部分の範囲内の識別子であった場合（担当部分のデータ識別子の中に処理対象識別子と一致する識別子があった場合）、メッセージ処理部110はメッセージ内のコマンドの内容に従った処理を実行する（ステップS203）。
【００３９】
一方、処理対象識別子が担当部分の範囲内の識別子でなかった場合（担当部分のデータ識別子の中に処理対象識別子と一致する識別子がなかった場合）、メッセージ処理部110は、記憶部12に格納されたデータ管理表内の複製部分のデータ識別子を順に読み出して処理対象識別子と比較し、複製部分のデータ識別子の中に処理対象識別子と一致する識別子があるか否かを判定する（ステップS204）。処理対象識別子が複製部分の範囲内のデータ識別子であった場合（複製部分のデータ識別子の中に処理対象識別子と一致する識別子があった場合）、メッセージ処理部110は、複製部分のIPアドレスおよびポート番号で識別される他の分散データ管理装置1をメッセージの転送先に決定する（ステップS205）。メッセージの転送先となる分散データ管理装置1は、上記の処理対象識別子をデータ管理表内の担当部分に有している。
【００４０】
続いて、メッセージ処理部110はメッセージの宛先IPアドレスおよび宛先ポート番号を転送先の分散データ管理装置1のIPアドレスおよびポート番号に書き換えると共に、送信元IPアドレスおよび送信元ポート番号を自身のIPアドレスおよびポート番号に書き換え、通信処理部10を介してメッセージを転送する（ステップS206）。メッセージの転送後、メッセージ処理部110は転送先の分散データ管理装置1からの応答に備えて待機し、応答の有無を判定する（ステップS207）。メッセージが転送されてから所定時間内に応答があった（つまり転送先の分散データ管理装置1が正常に動作している）場合は、処理が終了する。一方、メッセージが転送されてから所定時間内に応答がなかった場合、メッセージ処理部110は、ステップS200で受信されたメッセージ内のコマンドの内容に従った処理を実行する（ステップS203）。
【００４１】
一方、ステップS204での判定の結果、処理対象識別子が複製部分の範囲内の識別子でなかった場合（複製部分のデータ識別子の中に処理対象識別子と一致する識別子がなかった場合）、図5のステップS105〜S108と同様の処理が行われる（ステップS208〜S211）。
【００４２】
上記によれば、受信されたメッセージに含まれる処理対象のデータの情報がデータ管理表の複製部分に含まれていた場合に、複製部分に含まれるデータ識別子によって識別されるデータを管理する分散データ管理装置1へメッセージが転送される。このようにしてメッセージが転送された結果、処理対象のデータの情報を担当部分または複製部分に有する分散データ管理装置1によって、メッセージの内容に従った処理が実行されるので、正常なデータ管理サービスを滞りなく行うことができる。
【００４３】
また、複製部分に含まれるデータ識別子によって識別されるデータを管理する分散データ管理装置1からメッセージに対する受信確認応答が受信されなかった場合には、その分散データ管理装置1へメッセージを転送した分散データ管理装置1によって、メッセージの内容に従った処理が実行されるので、正常なデータ管理サービスを滞りなく行うことができる。
【００４４】
次に、図7を参照し、記憶部12に格納された経路表およびデータ管理表の更新手順を説明する。経路表・データ管理表更新処理部111は、経路表に含まれる自身の複製部分の情報を担当部分の情報として保有する他の分散データ管理装置1に対して、通信処理部10を介して定期的に応答確認を行う（ステップS300）。他の分散データ管理装置1から応答があった場合（ステップS301でYESの場合）、経路表・データ管理表更新処理部111は、さらにその分散データ管理装置1からその分散データ管理装置1の担当部分の情報を取得し、その担当部分の情報と自身の複製部分の情報を比較して自身の複製部分の情報を最新の情報に更新する（ステップS302）。
【００４５】
一方、故障等により応答がなかった場合（ステップS301でNOの場合）、他の分散データ管理装置1がシステムから離脱したと経路表・データ管理表更新処理部111は判断し、自身の複製部分（離脱した他の分散データ管理装置1の担当部分）の情報を自身の担当部分の情報に追加することによって、データ管理表の担当部分を更新する（ステップS303）。
【００４６】
続いて、経路表・データ管理表更新処理部111は、離脱した他の分散データ管理装置1の情報を経路表から削除するなどの更新処理を行う（ステップS304）。最後に、経路表・データ管理表更新処理部111は、経路表に基づいて他の分散データ管理装置1と通信を行い、その分散データ管理装置1から担当部分の情報を取得し、自身の複製部分の情報に追加する。これによって、データ管理表の複製部分が更新された後、処理が終了する。
【００４７】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上述した実施形態による分散データ管理装置1の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させてもよい。
【００４８】
ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００４９】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施形態による分散型データ管理システムの構成を示すブロック図である。
【図２】本発明の一実施形態における経路表の内容を示す参考図である。
【図３】本発明の一実施形態におけるデータ管理表の内容を示す参考図である。
【図４】本発明の一実施形態におけるメッセージの構造を示す参考図である。
【図５】本発明の一実施形態によるデータ管理装置の動作の手順を示すフローチャートである。
【図６】本発明の一実施形態によるデータ管理装置の動作の手順を示すフローチャートである。
【図７】本発明の一実施形態によるデータ管理装置の動作の手順を示すフローチャートである。
【図８】循環するハッシュ空間における識別子の配置の様子を示す参考図である。
【符号の説明】
【００５１】
1・・・分散データ管理装置、2・・・ユーザ端末、10・・・通信処理部（メッセージ受信手段、メッセージ転送手段）、11・・・処理部、12・・・記憶部（記憶手段）、110・・・メッセージ処理部（メッセージ処理手段）、111・・・経路表・データ管理表更新処理部、300・・・通信ネットワーク
【図１】
2007249913.tif 000003
【図２】
2007249913.tif 000004
【図３】
2007249913.tif 000005
【図４】
2007249913.tif 000006
【図５】
2007249913.tif 000007
【図６】
2007249913.tif 000008
【図７】
2007249913.tif 000009
【図８】
2007249913.tif 000010