(57)【特許請求の範囲】
【請求項１】
Ｐ２Ｐ方式のネットワークに接続された複数のノードを含み、データを複製して２重に保持する情報処理システムであって、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信手段と、
を有し、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して返信するように依頼する依頼手段と、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第２ノードに保存した前記データを復元する復元手段と、
前記復元されたデータを前記第１ノードに送信する送信手段と、
を有することを特徴とする情報処理システム。
【請求項２】
Ｐ２Ｐ方式のネットワークに接続された複数のノードを含み、データを複製して２重に保持する情報処理システムであって、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信手段と、
を有し、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して前記第１ノードに返信するように依頼する依頼手段と、
前記分散識別情報を前記第１ノードに通知する通知手段と、
自ノードに分散保持されたデータを前記第１ノードに送信する送信手段と、を有し、
前記第１ノードは、前記分散識別情報に基づいて前記複数の第３ノードから返信されたデータをマージして、前記第２ノードに保存した前記データを復元する復元手段を有することを特徴とする情報処理システム。
【請求項３】
前記第１ノードは、
前記第２ノードに障害が発生した場合に、前記複数の第３ノードの少なくとも１つに対して、前記複数の第３ノードに分散保持させた前記データの読出しを指示する指示手段を有することを特徴とする請求項１または２に記載の情報処理システム。
【請求項４】
前記第１ノードは、前記Ｐ２Ｐ方式のネットワークに接続された複数のノードから前記保存するデータに対応して前記第２ノードを選択する選択手段をさらに有することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理システム。
【請求項５】
前記第２ノードは、前記分散識別情報にしたがって、前記Ｐ２Ｐ方式のネットワークに接続された複数のノードから前記データを分散保持させる前記複数の第３ノードを選択する選択手段をさらに有することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
複数のノードがＰ２Ｐ方式のネットワークに接続され、データを複製して２重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信ステップとを含み、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して返信するように依頼する依頼ステップと、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第２ノードに保存した前記データを復元する復元ステップと、
前記復元されたデータを前記第１ノードに送信する送信ステップと、
を含むことを特徴とする情報処理システムのバックアップ方法。
【請求項７】
複数のノードがＰ２Ｐ方式のネットワークに接続され、データを複製して２重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信ステップとを含み、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して前記第１ノードに返信するように依頼する依頼ステップと、
前記分散識別情報を前記第１ノードに通知する通知ステップと、
自ノードに分散保持されたデータを前記第１ノードに送信する送信ステップと、
を含み、
前記第１ノードは、前記分散識別情報に基づいて前記複数の第３ノードから返信されたデータをマージして、前記第２ノードに保存した前記データを復元する復元ステップを含むことを特徴とする情報処理システムのバックアップ方法。
【請求項８】
請求項１乃至５の何れか１項に記載の情報処理システムにおける、前記第１ノード、前記第２ノード、及び前記第３ノードの少なくとも何れか一つのノードとして機能することを特徴とする情報処理装置。
【請求項９】
請求項８に記載の情報処理装置の制御方法であって、
前記情報処理装置が前記第１ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第１ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、書込／検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項１０】
請求項８に記載の情報処理装置の制御プログラムであって、
前記情報処理装置が前記第１ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第１ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、書込／検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムにおける情報分散によるデータバックアップの技術に関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、ネットワークに接続された複数のＰＯＳの各メモリの内容を、他のＰＯＳに圧縮して分散保持する技術が開示されている。特許文献１においては、自メモリの障害を他のＰＯＳの分散保持された圧縮データにより復元する。また、非特許文献１には、Ｐ２Ｐ（Peer-to-peer）方式のシステムにおいて、フィンガーテーブルによりデータの分散保持を行なうことが記載されている。さらに、特許文献２には、Ｐ２Ｐ方式のシステムにおいて、分散ハッシュテーブル（ＤＨＴ:Distributed Hash Table）により分散データを管理することが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−０６７２３２号公報
【特許文献２】特表２０１０−５１９６３０号公報
【非特許文献】
【０００４】
【非特許文献１】Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan (2001). “Chord: A scalable peer-to-peer lookup service for internet applications”. ACM SIGCOMM Computer Communication Review 31 (4): 149 - 160. New York, NY, USA: ACM Press.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１には、メモリの障害が考慮されるのみで、コントローラの障害によりＰＯＳ全体が動作不能になった場合のデータ回復については示されていない。あくまで、他のＰＯＳに対してデータを分散したＰＯＳ自身がその分散先から分散データを集める技術である。この特許文献１の技術に、非特許文献１のフィンガーテーブルや特許文献２のＤＨＴを組み合わせたとしても、データを保存する装置全体が動作不能になった場合のデータ回復の技術に対するヒントは得られない。
【０００６】
一方、従来のＰ２Ｐ方式のシステムにおいて、データを保存するノードが動作不能になった場合のデータ回復の技術では、障害のためシステムから外されたノードの直近に存在する一部の特定ノードに対してデータ移管の処理が行われていた。そのため、データ移管をするノードに多大な負荷がかかっていた。
【０００７】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係るシステムは、
Ｐ２Ｐ方式のネットワークに接続された複数のノードを含み、データを複製して２重に保持する情報処理システムであって、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信手段と、
を有し、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して返信するように依頼する依頼手段と、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第２ノードに保存した前記データを復元する復元手段と、
前記復元されたデータを前記第１ノードに送信する送信手段と、
を有することを特徴とする。
また、上記目的を達成するため、本発明に係るシステムは、
Ｐ２Ｐ方式のネットワークに接続された複数のノードを含み、データを複製して２重に保持する情報処理システムであって、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信手段と、
を有し、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して前記第１ノードに返信するように依頼する依頼手段と、
前記分散識別情報を前記第１ノードに通知する通知手段と、
自ノードに分散保持されたデータを前記第１ノードに送信する送信手段と、を有し、
前記第１ノードは、前記分散識別情報に基づいて前記複数の第３ノードから返信されたデータをマージして、前記第２ノードに保存した前記データを復元する復元手段を有することを特徴とする。
【０００９】
上記目的を達成するため、本発明に係る方法は、
複数のノードがＰ２Ｐ方式のネットワークに接続され、データを複製して２重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信ステップとを含み、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して返信するように依頼する依頼ステップと、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第２ノードに保存した前記データを復元する復元ステップと、
前記復元されたデータを前記第１ノードに送信する送信ステップと、
を含むことを特徴とする。
また、上記目的を達成するため、本発明に係る方法は、
複数のノードがＰ２Ｐ方式のネットワークに接続され、データを複製して２重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信ステップとを含み、
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して前記第１ノードに返信するように依頼する依頼ステップと、
前記分散識別情報を前記第１ノードに通知する通知ステップと、
自ノードに分散保持されたデータを前記第１ノードに送信する送信ステップと、
を含み、
前記第１ノードは、前記分散識別情報に基づいて前記複数の第３ノードから返信されたデータをマージして、前記第２ノードに保存した前記データを復元する復元ステップを含むことを特徴とする。
【００１０】
上記目的を達成するため、本発明に係る情報処理装置は、
上記情報処理システムにおける、前記第１ノード、前記第２ノード、及び前記第３ノードの少なくとも何れか一つのノードとして機能することを特徴とする。
【００１１】
上記目的を達成するため、本発明に係る他の方法は、上記情報処理装置の制御方法であって、
前記情報処理装置が前記第１ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第１ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、書込／検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする。
【００１２】
上記目的を達成するため、本発明に係るプログラムは、
上記情報処理装置の制御プログラムであって、
前記情報処理装置が前記第１ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第１ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、書込／検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、Ｐ２Ｐ方式の情報処理システムにおいて、データを保存するノードが障害で動作不能となった場合であっても、データ回復をノードへの負荷を偏らせることなく実現することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態に係る情報処理システムの構成を示すブロック図である。
【図２】本発明の第２実施形態に係る情報処理システムの構成を示すブロック図である。
【図３】本発明の第２実施形態に係る情報処理システムにおける、保存データの書込を示す図である。
【図４】本発明の第２実施形態に係る情報処理システムにおける、保存データの書込の手順を示すシーケンス図である。
【図５】本発明の第２実施形態に係る情報処理システムにおける、保存データの正常検索を示す図である。
【図６】本発明の第２実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の一例を示す図である。
【図７】本発明の第２実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の一例の手順を示すシーケンス図である。
【図８】本発明の第２実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の他例を示す図である。
【図９】本発明の第２実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の他例の手順を示すシーケンス図である。
【図１０】本発明の第２実施形態に係る各ノードとして動作する情報処理装置のハードウェア構成を示すブロック図である。
【図１１】本発明の第２実施形態に係るマスターデータ処理ノードテーブルの構成を示す図である。
【図１２】本発明の第２実施形態に係るフィンガーテーブル及びフィンガーテーブル格納部の構成を示す図である。
【図１３】本発明の第２実施形態に係る検索データ送信先情報の構成を示す図である。
【図１４】本発明の第２実施形態に係るハッシュテーブル及び保存データの構成を示す図である。
【図１５】本発明の第２実施形態に係る各ノード間の送信メッセージの構成を示す図である。
【図１６】本発明の第２実施形態に係る情報処理プログラムの処理手順を示すフローチャートである。
【図１７】本発明の第２実施形態に係るデータ検索要求ノードとして動作する場合の処理手順を示すフローチャートである。
【図１８】本発明の第２実施形態に係るマスターデータ処理ノードとして動作する場合の処理手順を示すフローチャートである。
【図１９】本発明の第２実施形態に係るレプリカデータ処理ノードとして動作する場合の処理手順を示すフローチャートである。
【図２０】本発明の第３実施形態に係るデータ検索要求ノードからマスターデータ処理ノードへの送信メッセージの構成を示す図である。
【図２１】本発明の第４実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索を示す図である。
【図２２】本発明の第５実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索を示す図である。
【図２３】本発明の第５実施形態に係る検索データ送信先及び復元データ送信先情報の構成を示す図である。
【図２４】本発明の第６実施形態に係る複数の情報処理システムが接続したシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１６】
［第１実施形態］
本発明の第１実施形態としての情報処理システム１００について、図１を用いて説明する。情報処理システム１００は、複数のノードがＰ２Ｐ方式のネットワークに接続され、保存データを複製して２重に保持するシステムである。
【００１７】
図１に示すように、情報処理システム１００は、第１ノード１１０と、第２ノード１２０と、第３ノード１３０と、を含む。第１ノード１１０は、データの書込及び検索を指示する。第２ノード１２０は、第１ノード１１０に書込を指示されたデータを保存し、第１ノード１１０の検索の指示にしたがってデータを読出す。第３ノード１３０は、第２ノード１２０に保存されたデータを複製して保持する。そして、第２ノード１２０は、保存部１２２と、送信部１２１とを有する。１２２保存部は、自ノードへ第１ノード１１０により書込を指示されたデータを保存する。送信部１２１は、保存したデータを分割して、複数の第３ノード１３０に対して送信して分散保持させると共に、保存したデータを分散保持させた複数の第３ノード１３０を識別可能な分散識別情報を複数の第３ノード１３０の少なくとも１つに送信する。
【００１８】
本実施形態によれば、Ｐ２Ｐ方式の情報処理システムにおいて、データを保存するノードが障害で動作不能となった場合であっても、データ回復をノードへの負荷を偏らせることなく実現することができる。
【００１９】
［第２実施形態］
本発明に係る第２実施形態においては、ＤＨＴ（Distributed Hash Table：分散ハッシュテーブル）型Ｐ２Ｐ方式のネットワークにおける障害時の保存データ（以下、マスターデータとも言う）の回復について説明する。すなわち、分散して複数のノードに保持された分散データは、ハッシュテーブルに基づいて検索されて特定される。また、本実施形態においては、保存データを分散して保持するノードを分散識別情報であるフィンガーテーブル（Finger Table)に基づいて選定するように制御される。そして、分散データは、障害にあったノードを代行するノード、あるいは保存データを検索したノードによってマージされて、保存データが復元される。本実施形態によれば、（１）マスターデータのレプリカを分散書込みすることで、各ノードの負荷を分散できる。また、（２）マスターデータのレプリカを分散書込みするノードはマスターデータを保持するノードのフィンガーテーブル内のみであるため、書込み、検索で発生する不要なホップを防ぐことができる。また、（３）ＤＨＴ型Ｐ２Ｐネットワーク内のノード追加・削除を分散処理できるため、これらの処理を効率良く実行することができる。すなわち、このバックアップデータを分散配置し、局所的に負荷がかかっていた問題を軽減させた。このため、再分散時に多量のデータを移管することなく、データ移管を可能にする。また、検索においても、ネットワークに流れるデータ量減少及び応答速度向上を目的として、ホップ数を削減させて検索できる。
【００２０】
《本実施形態に係る情報処理システムの構成》
図２は、本実施形態に係る情報処理システム２００の構成を示すブロック図である。
【００２１】
図２においては、ＤＨＴ型Ｐ２Ｐネットワークに各ノード２１０、２２０、２３０−１〜−３となる情報処理装置が存在する。各ノードは同一の機能を有しており、全てのノードがデータ書込／検索要求ノード２１０、マスターデータ処理ノード２２０（データ保存ノードとも称す）、レプリカデータ処理ノード２３０−１〜−３（分散保持ノードとも称す）の動作が可能である。たとえば、データ書込／検索要求ノード２１０になる条件としては、オペレータ等がＤＨＴ型Ｐ２Ｐネットワークの外部から検索要求を行った場合がある。ただ、オペレータ等がどのノードで検索するかは自由である。マスターデータとレプリカデータとについては、基本はマスターデータで運用し、マスターデータ処理ノード２２０が故障した場合には、レプリカデータを使用する流れとなる。マスターデータ処理ノード２２０については、データ検索の対象が存在するマスターデータを保持するノードがその役割となるため、検索するデータによっては、どのノードでも、マスターデータ処理ノード２２０になる可能性があり得る。
【００２２】
以下、本実施形態の基本的な動作を説明する。
【００２３】
図２のデータ書込／検索要求ノード２１０には、書込／検索をするデータ２１０ａがある。データ書込／検索要求ノード２１０の書込要求により、データ２１０ａはその内容などによって選択されたマスターデータ処理ノード２２０の保存部２２２に保存データ２１０ｂとして複製される。そして、データ書込／検索要求ノード２１０のデータ２１０ａは削除される。
【００２４】
マスターデータ処理ノード２２０は、保存データ２１０ｂをハッシュテーブル２２５内のハッシュ値に対応付ける。ハッシュテーブル２２５の詳細な例は特許文献２に説明があるので、特許文献２を参照されたい。そして、分散識別情報保持部のフィンガーテーブル２２４に従って、保存データ２１０ｂの分散保持先を設定し、保存データ２１０ｂを分散データ生成部２２３で分割する。分割数は分散保存先の数に対応していても、さらに分散保存数の半分にしたり重なり部分を設けたりして、復元能力を高めることもできる。なお、フィンガーテーブル２２４の詳細な例は非特許文献１に説明があるので、非特許文献１を参照されたい。送信部２２１からは、フィンガーテーブル２２４により特定される分散データ保持先のレプリカデータ処理ノード２３０−１〜−３に分散データ及び分散データのハッシュ値の保持が要請される。図２には、フィンガーテーブル２２４及び２３１が１つのように図示されているが、保存データの種別やデータ書込を指示したデータ書込／検索要求ノードなどによって異なる複数のフィンガーテーブルから選択されて使用されてよい。
【００２５】
マスターデータ処理ノード２２０から分散保持が要請された各分散データ及びハッシュ値は、レプリカデータ処理ノード２３０−１〜−３のそれぞれ分散データ２３０ａ〜２３０ｃ、及びハッシュテーブル２３２ａ〜２３２ｃに保持される。なお、図２では、データ書込／検索要求ノード２１０とマスターデータ処理ノード２２０以外のノードがレプリカデータ処理ノード２３０−１〜−３として図示されている。しかし、レプリカデータ処理ノード２３０−１〜−３はフィンガーテーブル２２４に従って選択されるものであり、図２はその特殊な例に過ぎない。
【００２６】
また、本実施形態では、マスターデータ処理ノード２２０からレプリカデータ処理ノード２３０−１〜−３の少なくとも１つに、マスターデータ処理ノード２２０が分散保持先を決めるために使用したフィンガーテーブル２２４の複製が送信される。レプリカデータ処理ノード２３０−１〜−３の少なくとも１つは、フィンガーテーブル２２４の複製を保持している。従って、マスターデータ処理ノード２２０が障害を起こして動作不能となっても、データ書込／検索要求ノード２１０による保存データの検索をレプリカデータ処理ノード２３０−１〜−３の１つが代行することによって、分散データから保存データを復元することが可能となる。なお、マスターデータ処理ノードの障害時に、データ書込／検索要求ノードによる保存データの検索を代行するレプリカデータ処理ノードを、以下、他のレプリカデータ処理ノードと区別するため「障害支援ノード」とも呼ぶ。
【００２７】
《本実施形態に係る情報処理システムの動作》
以下、図３〜図１０を参照して、図２の情報処理システムにおける動作手順を具体的に説明する。なお、図２において、データ書込／検索要求ノード２１０として動作した情報処理装置は、図３〜図１０においては、同じ情報処理装置がデータ書込要求ノード２１０として動作したりデータ検索要求ノードとして動作したりする。
【００２８】
（保存データの書込）
図３は、保存データの書込３００を示す図である。なお。以下明細書の(n)は図３、図５、図６及び図８の丸数字に対応する。
【００２９】
データ検索要求ノード２１０のデータ書込要求に従って、マスターデータ処理ノード２２０は(1)及び(2)の処理を行う。すなわち、マスターデータ処理ノード２２０が全てのデータを自ノードに保存すると共に、それぞれのレプリカデータ処理ノード２３０−１〜−４にデータを分散配置する。データの分散配置にはマスターデータ処理ノード２２０のフィンガーテーブルを用いる。図３には、保存データが４つの部分に分割されて、４つのレプリカデータ処理ノード２３０−１〜−４にその１つ１つが分散配置される様子を示している。マスターデータ処理ノード２２０が分散データの分散配置に使用したフィンガーテーブルは分散配置するレプリカデータ処理ノード２３０−１〜−４に配置される。
【００３０】
（保存データ書込のシーケンス）
図４は、図３のような保存データの書込の手順４００を示すシーケンス図である。
【００３１】
データ書込要求ノード２１０のデータ書込要求処理（Ｓ４１１）によるデータ書込要求を、マスターデータ処理ノード２２０は、データ受信処理（Ｓ４２１）により受信する。マスターデータ処理ノード２２０は、マスターデータの書込要求に対応して、マスターデータ書込処理（Ｓ４２２）によりＤＢに保存データとして書き込む。マスターデータ処理ノード２２０は、正常に書き込まれた場合、書込結果送信処理（Ｓ４２３）によりデータ書込要求ノード２１０に正常に書き込まれたことを通知する。なお、マスターデータ書込処理（Ｓ４２２）で正常に書き込めなかった場合、書込結果送信処理（Ｓ４２３）により正常に書き込めなかった旨のメッセージをデータ書込要求ノード２１０に通知する。
【００３２】
データ書込要求ノード２１０は、書込結果受信処理（Ｓ４１３）において書込結果を受信すると、マスターデータ書込結果判定処理（Ｓ４１５）においてマスターデータ書込結果を判定する。マスターデータ書込完了処理（Ｓ４１７）においては、判定結果からマスターデータを正常に書込めた場合、データ書込要求ノード２１０が格納していたマスターデータ処理ノード２２０に書き込む内容を消去し、マスターデータ書込み処理を完了させる。また、正常に書き込めなかった場合には、マスターデータ書込完了処理（Ｓ４１７）において、正常に書込めなかった旨のメッセージを通知する。
【００３３】
なお、どこに正常に書込めなかった旨のメッセージを通知するかはシステム設計による。例えば、データ書込要求ノード２１０自身で通知しても、データ書込要求ノード２１０に書込を指示した依頼元に通知してもよい。さらに、正常に書き込めなかった場合、データ書込み要求ノード２１０が保持するマスターデータ処理ノード２２０に書き込む内容を保持するか／消去するかもシステム設計による。さらに、データ書込み要求ノード２１０が保持するマスターデータ処理ノード２２０に書き込む内容を再度マスターデータ処理ノード２２０に書き込むように要求するかもシステム設計による。
【００３４】
次に、マスターデータ処理ノード２２０は、フィンガーテーブル確認処理（Ｓ４２４）において、フィンガーテーブルを確認して、どのノードにレプリカを分散すれば良いのか決定する。分散先ノードの決定後、フィンガーテーブル確認処理（Ｓ４２４）からデータ分散処理（Ｓ４２５）に対して、どのノードにレプリカを分散すれば良いのかを通知する。マスターデータ処理ノード２２０は、データ分散処理（Ｓ４２５）において、フィンガーテーブル確認処理（Ｓ４２４）から通知されたノードに分散するように、保存したマスターデータを所定数（図３の例では４つ）に分散する。そして、各分散データのハッシュ値を算出して、分散データ及びハッシュ値を振り分ける。振り分けた分散データは、データ分散処理（Ｓ４２５）から分散データ送信処理（Ｓ４２６）に渡される。マスターデータ処理ノード２２０は、分散データ送信処理（Ｓ４２６）において、渡された分散データ及びハッシュ値をフィンガーテーブル上のノードに対して送信する。図３の例では、レプリカデータ処理ノード２３０−１〜−４の４つのノードに分散データ及びハッシュ値を送信する。なお、分散データの送信先は、フィンガーテーブルによって設定される。
【００３５】
レプリカデータ処理ノード２３０−１〜−４は、データ受信処理（Ｓ４３１）において、送信された分散データ及びハッシュ値を受信する。以下、レプリカデータ処理ノード２３０−１〜−４の処理は同様なので、１つのレプリカデータ処理ノード２３０−１の処理について説明する。レプリカデータ処理ノード２３０−１は、データ書込処理及びフィンガーテーブル登録処理（Ｓ４３３）において、ＤＢに分散データとハッシュ値を書込み、フィンガーテーブルを登録する。なお、フィンガーテーブルの登録は、システム設計に対応して、分散データの分散先の全てのレプリカデータ処理ノードに登録してもよいし、予め決められたレプリカデータ処理ノードへの送信でもよい。例えば、図３において、マスターデータ処理ノード２２０の時計回りの次のレプリカデータ処理ノード２３０−１が、マスターデータ処理ノード２２０の障害時にデータ検索の代行をする設計であれば、レプリカデータ処理ノード２３０−１に送信すればよい。しかしながら、どのレプリカデータ処理ノードでも障害時にデータ検索の代行ができるように設計すれば、全レプリカデータ処理ノード２３０−１〜−４に送信することになる。そして、書き込みが完了したことが、データ書込処理及びフィンガーテーブル登録処理（Ｓ４３３）からデータ書込完了通知処理（Ｓ４３５）に通知される。レプリカデータ処理ノード２３０−１のＤＢに分散データが書き込まれなかった場合には、書き込まれなかったことが、データ書込処理及びフィンガーテーブル登録処理（Ｓ４３３）からデータ書込完了通知処理（Ｓ４３５）に通知される。レプリカデータ処理ノード２３０−１は、データ書込完了通知処理（Ｓ４３５）によって、書込完了あるいは書込未了の通知を、マスターデータ処理ノード２２０に通知する。
【００３６】
マスターデータ処理ノード２２０は、データ書込み完了通知受信処理（Ｓ４２７）において、レプリカデータ処理ノード２３０−１〜−４からの書込完了あるいは書込未了の通知を受信する。そして、書込完了あるいは書込未了の通知は、データ書込み完了通知受信処理（Ｓ４２７）から分散データ書込結果判定処理（Ｓ４２８）に通知される。マスターデータ処理ノード２２０は、分散データ書込結果判定処理（Ｓ４２８）において、分散データが全ての分散先に正常に書き込まれたか否かを判定する。マスターデータ処理ノード２２０は、判定結果から分散データを正常に書込めた場合には、分散データ書込完了処理（Ｓ４２９）において、マスターデータ処理ノード２２０が格納していた分散データを消去し、分散データのレプリカデータ処理ノード２３０−１〜−４への書込みを完了させる。
【００３７】
一方、分散データが少なくとも１つのレプリカデータ処理ノードに対して正常に書き込めなかった場合には、正常に書込めなかった旨のメッセージを通知する。どこに通知するかはシステムの設計による。例えば、マスターデータ処理ノード２２０自身で通知を受けて、他のフィンガーテーブルによる再分散を試みてもよいし、書込を失敗したレプリカデータ処理ノードを他のレプリカデータ処理ノードで代行して再分散を試みてもよい。あるいは、データ書込要求ノード２１０に通知してもよいし、データ書込要求ノード２１０を介してデータ書込要求を行なったシステム外部の他のシステムや装置でもよい。さらに、レプリカデータ処理ノードに通知して、他のレプリカデータ処理ノードで分散データの書込が失敗したことを通知して、ＤＢに書き込んだ分散データを削除するようにしてもよい。また、分散データが正常に書き込めなかった場合、マスターデータ処理ノード２２０が保存したマスターデータの保持を継続するか／消去するかも、システムの設計による。更に、マスターデータ処理ノード２２０が保存したマスターデータの分散データの保持を再度レプリカデータ処理ノードに要求するかも、システムの設計による。
【００３８】
（保存データの正常検索）
次に、検索処理について説明する。
【００３９】
図５は、一般的に行われている検索方法において、保存データの正常検索５００を示す図である。
【００４０】
マスターデータ処理ノード２２０に障害がなく正常検索を行なわれた場合は、図５の(1)−(2)の順序で、保存データの検索が完了する。なお、本実施形態において、保存データの検索はハッシュテーブルのハッシュ値との比較に基づいて行われる。
【００４１】
（保存データ障害時の分散データ検索の一例）
図６は、保存データ障害時の分散データ検索の一例６００を示す図である。図６の例では、データの検索中に障害が発生したマスターデータ処理ノードの検索処理を代行するレプリカデータ処理ノードが、自分に分散データを集めてデータ復元のためのマージ(merge:併合）を行なって、データ検索要求ノードに送信する。
【００４２】
図６の例では、(1)のように、マスターデータ処理ノード２２０に障害が発生した場合、次のように処理する。まず、(2)のように、障害が発生したマスターデータ処理ノード２２０から図６において右回り（時計回り）に次のレプリカデータ処理ノード２３０−１に、データ検索要求ノード２１０から検索要求を行う。なお、障害が発生したマスターデータ処理ノード２２０の代行は、図６のように右回り（時計回り）の次のレプリカデータ処理ノード２３０−１に限定する必要はなく、システムの設計による。検索要求を受けたレプリカデータ処理ノード２３０−２は、故障したマスターデータ処理ノード２２０の代わり(3)のように検索処理を実行する。(3)の処理では、検索要求を受けた各レプリカデータ処理ノード２３０−２〜−４が検索要求元のレプリカデータ処理ノード２３０−１に検索結果を返す。自ノード以外のレプリカデータ処理ノード２３０−２〜−４から検索した分散データが返送されると、(4)のように、要求元のレプリカデータ処理ノード２３０−１は、自ノードに保持している分散データと他のレプリカデータ処理ノード２３０−２〜−４からの分散データとをマージする。そして、レプリカデータ処理ノード２３０−１は、マージして復元したマスターデータの複製をデータ検索要求ノード２１０に検索結果として送信する。このようにして、データ検索要求ノード２１０は保存したマスターデータを得ることができる。
【００４３】
（保存データ障害時の分散データ検索のシーケンス）
図７は、保存データ障害時の分散データ検索の一例の手順７００を示すシーケンス図である。
【００４４】
データ検索要求ノード２１０のデータ検索要求処理（Ｓ７１１）によるデータ検索要求を、レプリカデータ処理ノード２３０−１は検索データ受信処理（Ｓ７２１）により受信する。レプリカデータ処理ノード２３０−１は、フィンガーテーブル確認処理（Ｓ７２２）において、図４のＳ４３２で登録した検索データに対応するフィンガーテーブルを見付ける。そして、フィンガーテーブル確認処理（Ｓ７２２）から検索する分散データ問い合わせ処理（Ｓ７２３）に対して見付けたフィンガーテーブルの情報を渡す。レプリカデータ処理ノード２３０−１は、検索する分散データ問い合わせ処理（Ｓ７２３）において、フィンガーテーブルの情報を基に検索要求を行うレプリカデータ処理ノードを特定する。図６の例では、レプリカデータ処理ノード２３０−２〜−４を特定する。そして、検索する分散データ問い合わせ処理（Ｓ７２３）から、特定したレプリカデータ処理ノード２３０−２〜−４の情報と検索する分散データを特定可能なハッシュ値とを、分散データ内容送信処理（Ｓ７２４）に渡す。ハッシュ値送信処理（Ｓ７２４）において各分散データを検索する検索キーとなるハッシュ値を送信することにより、特定されたレプリカデータ処理ノード２３０−２〜−４に対して分散データの検索要求を行う。なお、本例ではハッシュ値を分散データの検索として送信するが、他の検索キーを使うシステム設計であってもよい。ただし、検索キー割当の容易性や秘匿性からハッシュ値が望ましい。また、Ｓ７２４の括弧内の「分散データ返信先」は、返信先が検索要求元のレプリカデータ処理ノード２３０−１とする設計であれば必要ない。しかし、次の例で示すように、返信先を選択できる設計とするのであれば必要であり、本例では、レプリカデータ処理ノード２３０−１が返信元に指定される。
【００４５】
検索要求を受けたレプリカデータ処理ノード２３０−２〜−４は、ハッシュ値受信処理（Ｓ７３１）において、分散データ検索要求として分散データのハッシュ値を受信する。なお、括弧内の「分散データの返信先」の役割については前述した。なお、レプリカデータ処理ノード２３０−２〜−４の処理は同様なので、以下、レプリカデータ処理ノード２３０−２を代表させて説明する。レプリカデータ処理ノード２３０−２は、要求を受けた検索を実施するため、ハッシュ値受信処理（Ｓ７３１）からデータ検索処理（Ｓ７３３）に検索内容を渡すよう制御する。データ検索処理（Ｓ７３３）において、ハッシュ値を基にデータ検索を行う。そして、検索された分散データ及び検索結果の情報等が、データ検索処理（Ｓ７３３）から検索データ及び検索結果取得処理（Ｓ７３５）に渡される。さらに、これらの結果が、検索データ及び検索結果取得処理（Ｓ７３５）から検索データ送信処理（Ｓ７３７）に渡され、検索データ送信処理（Ｓ７３７）は検索された分散データ及び検索結果の情報等をレプリカデータ処理ノード２３０−１に返信する。
【００４６】
レプリカデータ処理ノード２３０−１は、検索データ及び検索結果受信処理（Ｓ７２７）において、各レプリカデータ処理ノード２３０−２〜−４の検索データ送信処理（Ｓ７３７）からの分散データ及び検索結果の情報等を受信する。受信した情報は、検索データ及び検索結果受信処理（Ｓ７２７）から検索データマージ処理（Ｓ７２８）に渡される。一方、レプリカデータ処理ノード２３０−１は、他のレプリカデータ処理ノード２３０−２〜−４への分散データの検索要請と並行して、データ検索処理（Ｓ７２５）以降の処理を検索する分散データ問い合わせ処理（Ｓ７２３）の実行完了後に実行する。すなわち、検索データ受信処理（Ｓ７２１）において受信した検索内容から、レプリカデータ処理ノード２３０−１自身に対する検索を実行する。この検索結果は、検索データ及び検索結果取得処理（Ｓ７２６）に渡され、他の分散データと共に検索データマージ処理（Ｓ７２８）に渡される。レプリカデータ処理ノード２３０−１は、検索データマージ処理（Ｓ７２８）において、検索データ及び検索結果取得処理（Ｓ７２６）で得られたレプリカデータ処理ノード２３０−１が保持した分散データと検索データ及び検索結果取得処理（Ｓ７２７）で得られたレプリカデータ処理ノード２３０−２〜−４の分散データとをマージする。そして、マージ結果のマスターデータの複製は、検索データ送信処理（Ｓ７２９）に渡される。レプリカデータ処理ノード２３０−１は、検索データ送信処理（Ｓ７２９）により、この結果をデータ検索要求ノード２１０に送信する。
【００４７】
データ検索要求ノード２１０は、レプリカデータ処理ノード２３０−１が検索データ送信処理（Ｓ７２９）により送信した検索結果を、検索データ受信処理（Ｓ７１３）において受信する。そして、検索データ判定処理（Ｓ７１５）において、検索結果の検索データは自分が検索要求したデータであることを判定する。
【００４８】
（保存データ障害時の分散データ検索の他例）
図８は、保存データ障害時の分散データ検索の他例８００を示す図である。
【００４９】
図８の他例８００では、図６の例と分散データをマージするところが異なる。すなわち、図８においては(4)のように、データ検索を代行したレプリカデータ処理ノード２３０−１が、自ノードに保持されている分散データと、分散データの検索要求をしたレプリカデータ処理ノード２３０−２〜−４を示すフィンガーテーブルとを、データ検索要求ノード２１０に送信する。そして、(5)のように、それぞれのレプリカデータ処理ノード２３０−２〜−４が、検索した分散データをデータ検索要求ノード２１０に返信する。データ検索要求ノード２１０が、フィンガーテーブルを使って対応するレプリカデータ処理ノード２３０−２〜−４から受信した分散データをマージして、データ書込要求したデータを複製して分散した分散データから復元する。なお、レプリカデータ処理ノード２３０−２〜−４の検索した分散データの返信先は、図７の括弧内に記載した「分散データ返信先」を分散データの検索依頼時にレプリカデータ処理ノード２３０−１からレプリカデータ処理ノード２３０−２〜−４に送信することで実現する。本他例によれば、データの移動量が少ない（レプリカデータ処理ノード２３０−１を経由しない）ため効率的であることから、ファイアウォール等の問題がない場合には、図８の方法を用いるのが望ましい。
【００５０】
（保存データ障害時の分散データ検索の他のシーケンス）
図９は、保存データ障害時の分散データ検索の他例の手順９００を示す図である。
【００５１】
図９の図７との相違は、フィンガーテーブルのレプリカデータ処理ノード２３０−１からデータ検索要求ノード２１０への送信と、検索した分散データのマージをデータ検索要求ノード２１０が行うことである。従って、以下、図７との相違点について説明し、図７と同様処理の手順には図７と同じ参照番号を付与している。
【００５２】
最初の図７との相違点では、レプリカデータ処理ノード２３０−１は、ハッシュ値／分散データ返信先送信処理（Ｓ９２４）において、検索キーであるハッシュ値と共に、分散データ返信先を、レプリカデータ処理ノード２３０−２〜−４に送信する。本例では、データ検索要求ノード２１０を分散データ返信先に指定する。各レプリカデータ処理ノード２３０−１は、ハッシュ値／分散データ返信先受信処理（Ｓ９３１）において、検索キーであるハッシュ値と共に、分散データ返信先を受信する。
【００５３】
次の図７との相違点では、レプリカデータ処理ノード２３０−１は、フィンガーテーブル送信処理（Ｓ９２７）において、フィンガーテーブル確認処理（Ｓ７２２）及び検索する分散データ問い合わせ処理（Ｓ７２３）で問い合わせ先を決定するために使用したフィンガーテーブルを、障害支援中にデータ検索要求ノード２１０に送信する。データ検索要求ノード２１０は、フィンガーテーブル受信処理（Ｓ９１７）において、レプリカデータ処理ノード２３０−１が送信したフィンガーテーブルを受信し、検索した分散データのマージのために使用する。すなわち、分散させた全ての分散データが返信されたかをこのフィンガーテーブルにより確認することになる。
【００５４】
最後の図７との相違点では、レプリカデータ処理ノード２３０−１は、検索データ及び検索結果取得処理（Ｓ７２６）で取得した自ノードの分散データのみを直接、検索データ送信処理（Ｓ９２８）によりデータ検索要求ノード２１０に送信する。そして、データ検索要求ノード２１０は、検索データ受信処理（Ｓ７１３）において受信した全ての分散データを、検索データマージ処理（Ｓ９１９）においてマージして保存したデータを復元し、検索データ判定処理（Ｓ７１５）に渡す。以上の処理では、データ検索要求ノード２１０は、レプリカデータ処理ノード２３０−１から受信したフィンガーテーブルに記載されているレプリカデータ処理ノードからの分散データの返信を待ち、全ての分散データを受信した場合には検索成功とみなす。なお、レプリカデータ処理ノードのいずれかから分散データが送信されなかった場合のタイムアウトやその後の処理については、システムの設計により種々の設定が可能である。
【００５５】
《各ノードとして動作する情報処理装置のハードウェア構成》
図１０は、本実施形態に係る各ノードとして動作する情報処理装置１０００のハードウェア構成を示すブロック図である。
【００５６】
図１０で、ＣＰＵ１０１０は演算制御用のプロセッサであり、プログラムを実行することで図２の各機能構成部を実現する。ＲＯＭ１０２０は、初期データ及びプログラムなどの固定データ及びプログラムを記憶する。通信制御部１０３０は、ネットワークを介して他のノードと通信する。あるいは、通信制御部１０３０は、本Ｐ２Ｐ方式のネットワークの外部にある他のネットワークや装置との通信をしてもよい。また、上記２つの機能をそれぞれ別個に有する複数の通信制御部で構成してもよい。通信は無線でも有線でもよい。
【００５７】
ＲＡＭ１０４０は、ＣＰＵ１０１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ１０４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。領域は、大きく分けて、受信メッセージ１０４１用と、送信メッセージ１０４６用と、本例では対象としない情報処理データとを含む。
【００５８】
受信メッセージ１０４１の内、１０４２は、書込／検索する受信データである。受信データには分散データも含まれる。１０４３は、受信データから算出されるハッシュ値である。１０４４は、例えば、データ書込／検索要求ノード２１０が障害支援ノードとなったレプリカデータ処理ノードから受信するフィンガーテーブルや、レプリカデータ処理ノードがマスターデータ処理ノード２２０から受信するフィンガーテーブルである。１０４５は、図８及び図９の場合における、分散データを送信する検索データ送信先である。
【００５９】
送信メッセージ１０４６の内、１０４７は、書込／検索する送信データである。送信データには分散データも含まれる。１０４８は、送信データから算出されるハッシュ値である。１０４９は、例えば、障害支援ノードとなったレプリカデータ処理ノードからデータ書込／検索要求ノード２１０に送信するフィンガーテーブルや、マスターデータ処理ノード２２０からレプリカデータ処理ノードに送信するフィンガーテーブルである。
【００６０】
なお、受信メッセージ１０４１及び送信メッセージ１０４６については、本実施形態に重要な一部のデータ要素を示したのみであり、他のデータ要素も随時に使用される（図１５参照）。
【００６１】
ストレージ１０５０は、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータ又はプログラムが記憶されている。１０５１は、データ書込／検索要求ノードがデータの書込／検索を行なう先を、そのデータの内容や形式に対応して設定するためのマスターデータ処理ノードテーブルである。１０５２は、予め保持する、あるいは他ノードから送信されたフィンガーテーブルを保持するフィンガーテーブル保持部である。１０５３は、保存あるいは保持したデータを検索するための検索キーとして、データに対応付けられて記憶するハッシュテーブルである。１０５４は、保存あるいは保持したデータを検索可能に蓄積する保存データＤＢであり、分散データも含まれる。ストレージ１０５０には、以下のプログラムが格納される。１０５５は、全体の処理を実行させる本例の書込／検索以外の処理も含む情報処理を行なう情報処理プログラムである（図１６参照）。１０５６は、情報処理プログラム１０５５において、情報処理装置１０００がデータ書込／検索要求ノードとして動作する場合に実行されるデータ書込／検索要求ノード実行モジュールである。１０５７は、情報処理プログラム１０５５において、情報処理装置１０００がマスターデータ処理ノードとして動作する場合に実行されるマスターデータ処理ノード実行モジュールである。１０５８は、情報処理プログラム１０５５において、情報処理装置１０００がレプリカデータ処理ノードとして動作する場合に実行されるレプリカデータ処理ノード実行モジュールである。
【００６２】
なお、図１０には、本実施形態に必須なデータやプログラムのみが示されており、ＯＳなどの汎用のデータやプログラムは図示されていない。
【００６３】
（マスターデータ処理ノードテーブル）
図１１は、マスターデータ処理ノードテーブル１０５１の構成を示す図である。
【００６４】
かかるマスターデータ処理ノードテーブル１０５１は、データ書込／検索要求ノードがデータファイルの内容や形式などから、マスターデータ処理ノードを決定するために使用する。図３〜図９に示した例では、マスターデータ処理ノード２２０は固定したノードのように示されていたが、実際には、データ書込／検索要求ノード２１０がデータファイルの内容や形式などから決定する。なぜなら、マスターデータのＤＢなどの作成に当たっては、同種あるいは同形式のデータを管理するのが効率的である。さらに、１つのノードをマスターデータ処理ノード専用にするのではなく、全てのノードがマスターデータを分散管理することで、ノードへの負荷を分散することができる。
【００６５】
図１１において、マスターデータ処理ノードを決める条件として、ファイル内容１１０１やファイル形式１１０２のそれぞれ又はその組合せに対応付けて、マスターデータ処理ノードとなるノードのノードＩＤが記憶されている。なお、図１１においては、理解を容易にするため、ノードＩＤは図３〜図９に示した参照番号を援用した。
【００６６】
（フィンガーテーブル及びフィンガーテーブル格納部）
図１２は、フィンガーテーブル１０４４及びフィンガーテーブル格納部１０５２の構成を示す図である。
【００６７】
図１２のフィンガーテーブル１０４４は、分散データ書込元ノードＩＤ１２１１に対応して分散データ書込先ノードＩＤ１２１２のセットが記憶されている。図１２においては、各ノードＩＤは図３〜図９の参照番号を援用している。なお、フィンガーテーブルについては、図１２の構成に限定することはなく、分散データの書込元と書込先との関連が記述されていればよい。フィンガーテーブルの例については、非特許文献１を参照されたい。
【００６８】
図１２のフィンガーテーブル格納部１０５２は、上記構成のフィンガーテーブルのどれを分散データの分散書込に使用したかを、ファイル名に対応付けて記録する。各データのファイル名１２２１に対応付けて使用したフィンガーテーブル１２２２が記憶される。もし、ノードによって使用するフィンガーテーブルが固定であるなら、書込元ノードＩＤに対応付けてフィンガーテーブルを記憶することになる。
【００６９】
（検索データの送信先）
図１３は、検索データ送信先情報１０４５の構成を示す図である。
【００７０】
検索データ送信先情報１０４５は、マスターデータ処理ノードに障害が発生した場合に代替して分散データを検索するレプリカデータ処理ノードからの検索要請に対して、各レプリカデータ処理ノードが分散データを何処に送信するかの送信先を記憶する。図１３においては、書込／検索するデータのファイル名１３０１に対応付けて検索した分散データの送信先ノードＩＤ１３０２が記憶されている。なお、送信先ノードＩＤ１３０２は、図３〜図１０の参照番号を援用した。図１３においては、図６の場合（送信先ノードＩＤ１３０２はレプリカデータ処理ノード２３０−１）と、図７の場合（送信先ノードＩＤ１３０２はデータ書込／検索要求ノード２１０）との、送信先を示している。
【００７１】
なお、図１３は、ファイル名に対応付けて送信先を設定しているが、例えば、マスターデータ処理ノードがどれか、代替のレプリカデータ処理ノードがどれか、データ書込／検索要求ノードがどれか、などに対応付けてもよい。さらに、システムの設計に従った対応付けが可能である。
【００７２】
（ハッシュテーブル及び保存データ）
図１４は、ハッシュテーブル１０５３及び保存データ１０５４の構成を示す図である。
【００７３】
図１４のハッシュテーブル１０５３は、ハッシュ値の比較によりデータを検索し、ハッシュ値が一致したデータファイルを検索データとするための検索キーテーブルである。データファイルに対して別途にＩＤなどの検索キーを付すのではなく、データの内容から算出されたハッシュ値を検索キーとすることで、容易に検索キーを付すことができると共に、秘匿性が優れている。
【００７４】
ハッシュテーブル１０５３は、ハッシュ値１４１１に対応付けられてファイル名が記憶されている。各ノードは、検索を要請されたデータファイルのハッシュ値により一致するハッシュ値のファイルを探し出し、保存データＤＢからそのファイルを読み出すことができる。ハッシュテーブルの詳細については、その一例が特許文献２に記載されているので、参照されたい。
【００７５】
（各ノード間の送信メッセージ）
図１５は、各ノード間の送信メッセージ１０４６の構成を示す図である。
【００７６】
図１５の送信メッセージ１５１０は、データ書込／検索要求ノードから送信される送信メッセージである。１５１１は、マスターデータ処理ノードへの書込要求の送信メッセージの構成を示している。ここで、括弧で示した「分散データ送信先」は、データ書込／検索要求ノードが主導して分散データ報告先を指定する場合に使用されるが、マスターデータ処理ノードが予め保持している場合や、データ内容やデータ形式から決定される場合は、使用されない。１５１２は、マスターデータ処理ノードや障害時にレプリカデータ処理ノードの１つである障害支援ノードに送信される検索要求の送信メッセージである。検索要求がいずれによるかに対応して、マスターデータ処理ノードへの正常な検索要求であるか／障害支援ノードへの障害支援の検索要求であるかを示すデータ以外は共通である。なお、括弧で示した「分散データ送信先」は、書込要求と同様である。
【００７７】
図１５の送信メッセージ１５２０は、マスターデータ処理ノードから送信される送信メッセージである。１５２１は、データ保存後にレプリカデータ処理ノードに送信される分散データ書込要求の送信メッセージである。なお、ここでは、フィンガーテーブルも分散データと共に送信される。
【００７８】
図１５の送信メッセージ１５３０は、レプリカデータ処理ノードの１つである障害支援ノーから送信される送信メッセージである。１５３１は、フィンガーテーブルにより確定した他のレプリカデータ処理ノードへの分散データ検索要求の送信メッセージである。なお、括弧で示した「分散データ送信先」は、図８のように分散データの送信先が要求元と異なる場合に使用される。分散データの送信先が要求元と同じ場合は、使用しなくてもよい。１５３２は、図８のように分散データの送信先が要求元と異なり、データ書込／検索要求ノードである場合のフィンガーテーブルの送信メッセージである。
【００７９】
《各ノードとして動作する情報処理装置の処理手順》
図１６は、情報処理プログラムの処理手順を示すフローチャートである。以下、図１６〜図１９に示すフローチャートは、図１０のＣＰＵ１０１０が、ＲＡＭ１０４０を使用しながら実行し、図２〜図９に図示された各機能構成部及びその処理を実現する。
【００８０】
まず、ステップＳ１６１０において、自装置内部からあるいは外部装置からデータをシステム内に書き込む指示があったか／データを検索する指示があったかを判定する。データ書込またはデータ検索の指示があればステップＳ１６１２に進んで、情報処理装置１０００はデータ書込／検索要求ノードとして動作する（図１７参照）。次に、ステップＳ１６２０において、他のノードからデータを書き込む指示があったか／データを検索する指示があったかを判定する。データ書込またはデータ検索の指示があればステップＳ１６２２に進んで、情報処理装置１０００はマスターデータ処理ノードとして動作する（図１８参照）。次に、ステップＳ１６３０において、他のノードから分散データを書き込む指示があったか／分散データを検索する指示があったかを判定する。分散データ書込または分散データ検索の指示があればステップＳ１６３２に進んで、情報処理装置１０００はレプリカデータ処理ノードとして動作する（図１９参照）。
【００８１】
（データ検索要求ノード実行モジュール）
図１７は、データ検索要求ノードとして動作する場合（Ｓ１６１２）の処理手順を示すフローチャートである。
【００８２】
まず、ステップＳ１７１０において、自装置内部からあるいは外部装置からデータをシステム内に書き込む指示があったかを判定する。データ書込の指示があればステップＳ１７１２に進んで、送信データを含む送信メッセージを予め決まったマスターデータ処理ノード、あるいは選択したマスターデータ処理ノードに送信する。なお、送信メッセージは図１５の送信メッセージ１５１１のフォーマットを有する。次に、ステップＳ１７１４において、送信エラーであるか否かを判断する。送信エラーが無ければ処理を終了する。送信エラーが有ればステップＳ１７１６に進んで、エラーを報知する。なお、エラー報知は自装置から行なっても、あるいはデータ書込を指示した外部装置から行なってもよい。
【００８３】
次に、ステップＳ１７２０において、自装置内部からあるいは外部装置からデータをシステム内から検索する指示があったかを判定する。データ検索の指示があればステップＳ１７２２に進んで、検索するデータを書き込んだマスターデータ処理ノードにデータ検索要求の送信メッセージを送信する。なお、送信メッセージは、図１５の送信メッセージ１５１２のフォーマットを有する。次に、ステップＳ１７２４において、送信エラーがあったか否かを判断する。送信エラーが無ければ処理を終了する。送信エラーが有ればステップＳ１７２６に進んで、障害支援ノードに対してデータ検索要求の送信メッセージを送信する。なお、送信メッセージは、図１５の送信メッセージ１５１２のフォーマットである。次に、ステップＳ１７２８において、障害支援ノードからフィンガーテーブルの送信があれば受信する。このステップＳ１７２８は図８の場合の処理であり、障害支援ノードからフィンガーテーブルの送信がなければ、スキップして処理を終了する。
【００８４】
次に、ステップＳ１７３０において、検索したデータを受信したか否かを判定する。データの受信であればステップＳ１７３２において、マスターデータ処理ノードからの受信であるかを判断する。マスターデータ処理ノードからのデータ受信であれば、データの検索が正常に完了したと考えられるので、ステップＳ１７３８において検索データとして記憶する。一方、マスターデータ処理ノードからのデータでなければステップＳ１７３４に進んで、障害支援ノードからの受信であるかを判断する。障害支援ノードからのデータ受信であれば、分散データの検索とマージとが障害支援ノードで完了したと考えられるので、ステップＳ１７３８において検索データとして記憶する。一方、障害支援ノードからのデータでなければ、分散データの検索が指示された他のレプリカデータ処理ノードからのデータと判断する。従って、ステップＳ１７３６に進んで、フィンガーテーブルに基づいて全分散データが検索され送信されたのを待って、それをマージする。そして、ステップＳ１７３８においてマージした復元データを検索データとして記憶する。
【００８５】
（マスターデータ処理ノード実行モジュール）
図１８は、マスターデータ処理ノードとして動作する場合（Ｓ１６２２）の処理手順を示すフローチャートである。
【００８６】
まず、ステップＳ１８１０において、データ書込／検索要求ノードからデータ書込要求があったかを判定する。データ書込要求があればステップＳ１８１２に進んで、受信データを書き込んで保存する。次に、ステップＳ１８１４において、保存データの複製の分散データの送信先を決定するためにフィンガーテーブルを参照する。そして、フィンガーテーブルに基づいて決定された送信先へ分散データ及び使用したフィンガーテーブルを送信する。
【００８７】
次に、ステップＳ１８２０において、データ書込／検索要求ノードからデータ検索要求があったかを判定する。データ検索要求があればステップＳ１８２２に進んで、ハッシュ値を検索キーとして要求データを検索する。前述の実施形態においては、次に、ステップＳ１８２４に進んで、検索したデータをデータ書込／検索ノードへ返信する。
【００８８】
図１８のステップＳ１８３０とＳ１８３２とは、オプションとしての処理である。上述の実施形態では、障害支援ノードに分散データの検索を要求するのはデータ書込／検索ノードであった。このステップＳ１８３０とＳ１８３２では、マスターデータ処理ノードが動作可能であるが検索エラーが発生した場合の処理として、ステップＳ１８３２において、マスターデータ処理ノードから障害支援ノードに分散データの検索を依頼する。このオプションによれば、データ書込／検索要求ノードの負荷や通信負荷の軽減につながる。
【００８９】
（レプリカデータ処理ノード実行モジュール）
図１９は、レプリカデータ処理ノードとして動作する場合（Ｓ１６３２）の処理手順を示すフローチャートである。
【００９０】
まず、ステップＳ１９１０において、障害支援ノードから分散データの書込要求があったかを判定する。分散データ書込要求があればステップＳ１９１２に進んで、分散データを受信する。そして、ステップＳ１９１４において、分散データを記憶して保持する。
【００９１】
次に、ステップＳ１９２０において、障害支援ノードから分散データの検索要求があったかを判定する。分散データ検索要求があればステップＳ１９２２に進んで、ハッシュ値を検索キーとして要求された分散データを検索する。ステップＳ１９２４においては、返信先の指定があるか否かが判断される。返信先の指定がなければステップＳ１９２６に進んで、検索した分散データを直接の検索指示元のマスターデータ処理ノードへ返信する。一方、返信先の指定があればステップＳ１９２８に進んで、検索した分散データを指定された返信元へ返信する。図８のように、データを要求しているデータ書込／検索要求ノードに直接、検索した分散データを返信する場合は、返信先としてデータ書込／検索要求ノードが指定される。
【００９２】
［第３実施形態］
第２実施形態においては、マスターデータ処理ノードが使用するフィンガーテーブルは、自ノードが持っているフィンガーテーブルであった。しかしながら、データ検索を行なうデータ書込／検索要求ノードとしては、自ノードに都合の良い（出来るだけ近い：特に、分散データの返信先が直接である場合など）フィンガーテーブルを使用したい場合もあり得る。本実施形態においては、データ書込／検索要求ノードがデータ書込要求時にマスターデータ処理ノードが使用するフィンガーテーブルを送信メッセージで指定する。本実施形態によれば、マスターデータ処理ノードの置かれたシステム内の環境によらず、データ書込／検索要求ノードのシステム内の環境に対応した分散データの保持が可能になる。
【００９３】
なお、第３実施形態の第２実施形態との相違点は、データ書込／検索要求ノードがデータ書込要求時にマスターデータ処理ノードに送信する送信メッセージのフォーマットである。従って、第３実施形態の他の構成及び動作は第２実施形態と同様であるので、説明は省略する。
【００９４】
（データ書込／検索要求ノードからマスターデータ処理ノードへの送信メッセージ）
図２０は、データ書込／検索要求ノードからマスターデータ処理ノードへの送信メッセージ２０１０の構成を示す図である。
【００９５】
図２０の送信メッセージ２０１１では、図１５の送信メッセージ１５１１に比較して、フィンガーテーブル２０１２が追加されている。このフィンガーテーブル２０１２は、データ書込／検索要求ノードが分散データを分散してほしいノードを指定している。
【００９６】
［第４実施形態］
第２実施形態においては、マスターデータ処理ノードの障害時には、図示したシステムでマスターデータ処理ノードの右回り（時計回り）で次のレプリカデータ処理ノードと、暗黙の了解があった。しかしながら、各ノードの負荷のバランスを考えると、データ書込／検索要求ノードが障害支援ノードを選択可能であるのが望ましい。本実施形態においては、データ書込／検索要求ノードが任意のレプリカ処理ノードを障害支援ノードとして選択できる。本実施形態によれば、各ノードの負荷のバランスをさらに平均化することができる。
【００９７】
なお、第４実施形態の第２実施形態との違いは、データ書込／検索要求ノードが任意のレプリカ処理ノードを障害支援ノードとして選択できる仕組みであり、特に構成及び動作の変更は必要無い。従って、構成及び動作の説明は第２実施形態の説明を援用する。
【００９８】
（保存データ障害時の分散データ検索）
図２１は、保存データ障害時の分散データ検索２１００を示す図である。
【００９９】
図２１の分散データ検索２１００では、第２実施形態の図６の例や図８の例と、障害が発生したマスターデータ処理ノードの代行をする障害支援ノードが異なる。すなわち、図２１においては(2)のように、データ書込／検索要求ノード２１０は、レプリカデータ処理ノード２３０−２を、データ検索を代行する障害支援ノードとして分散データの検索を要求する。その結果、レプリカデータ処理ノード２３０−２がフィンガーテーブルを使って分散ノード検索を指示し、返信された分散データをマージしてデータ書込／検索要求ノード２１０に送信する。
【０１００】
なお、データ書込／検索要求ノード２１０による障害支援ノードの選択を、例えば、データ内容やデータ形式などにより選択する場合には、データ書込／検索要求ノード２１０が図１１に類似したテーブルを設けて、障害支援ノードとすべきノードＩＤを記憶すればよい。
【０１０１】
［第５実施形態］
第２乃至第４実施形態では、分散データのマージをするのは、障害支援ノードまたはデータ書込／検索要求ノードであった。しかしながら、システム内のノードの負荷の均一化を考慮すると、データ書込／検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できるのが望ましい。本実施形態においては、データ書込／検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できる構成を有する。本実施形態によれば、さらに、システム内のノードの負荷を自在に制御可能になる。
【０１０２】
なお、第５実施形態の第２実施形態との違いは、データ書込／検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できる仕組みであり、特に構成及び動作の変更は必要無い。第２実施形態の図１３に示す検索データ送信先情報を、検索データ送信先及び復元データ送信先の情報に変更するのみで実現可能である。従って、他の構成及び動作の説明は第２実施形態の説明を援用する。
【０１０３】
（保存データ障害時の分散データ検索）
図２２は、保存データ障害時の分散データ検索２２００を示す図である。
【０１０４】
図２２の分散データ検索２２００では、第２実施形態の図６の例や図８の例と異なり、障害が発生したマスターデータ処理ノードの代行をする障害支援ノードと、分散データをマージする分散データマージノードとが異なるノードである。すなわち、図２１においては(4)のように、データ書込／検索要求ノード２１０は、レプリカデータ処理ノード２３０−１を、データ検索を代行する障害支援ノードとして選択し、一方、返信された分散データをマージするノードとしてはレプリカデータ処理ノード２３０−２を選択する。
【０１０５】
なお、かかる選択は、データ書込／検索要求ノード２１０で行なっても、マスターデータ処理ノードで行なってもよい。
【０１０６】
（検索データ送信先及び復元データ送信先の情報）
図２３は、検索データ送信先及び復元データ送信先情報２３４５の構成を示す図である。この情報は、図１３の検索データ送信先情報１０４５に復元データの送信先ノードＩＤ２３０３を追加したものである。
【０１０７】
図２３においては、その一行目に、図２２のように動作するために、障害支援ノードがレプリカデータ処理ノード２３０−１とした場合に、分散データの送信先がレプリカデータ処理ノード２３０−２であり、ここでマージされた復元データの送信先がデータ書込／検索要求ノード２１０と指定されている。
【０１０８】
なお、図２３を図１１のマスターデータ処理ノードテーブルと組み合わせれば、さらに、多様なノードの負荷の平均化も可能である。また、図２３のデータを、システム内のノードが共有すれば、どの段階でどのノードが送信先を指定するかについても融通性が生まれる。
【０１０９】
［第６実施形態］
第２乃至第５実施形態は、１つのＤＨＴ型Ｐ２Ｐ方式のネットワークに注目して、その動作を説明した。しかし、複数のＤＨＴ型Ｐ２Ｐ方式のネットワークが上位のネットワークで接続され、その上位のネットワークを介して上位の情報処理システムが複数のＤＨＴ型Ｐ２Ｐ方式のネットワークを管理するようなシステムも可能である。本実施形態によれば、負荷を均一にしようとする各ＤＨＴ型Ｐ２Ｐ方式のネットワークと、各ＤＨＴ型Ｐ２Ｐ方式のネットワークをデータプール媒体と見なして、全体のデータ管理を一元的に行なうシステムが実現できる。
【０１１０】
《本実施形態に係る複数の情報処理システムが接続したシステムの構成》
図２４は、本実施形態に係る複数の情報処理システムが接続したシステム２４００の構成を示すブロック図である。
【０１１１】
図２４において、２００−１〜２００−３は、それぞれが上記第２乃至第５実施形態で示した１つのＤＨＴ型Ｐ２Ｐ方式のネットワークである。この３つのＤＨＴ型Ｐ２Ｐ方式のネットワーク２００−１〜２００−３がネットワーク２４２０を介して、少なくとも１つのノード間で接続されている。ネットワーク２４２０には、さらに、上位の情報処理システム２４１０が接続されている。この上位の情報処理システム２４１０は、各ＤＨＴ型Ｐ２Ｐ方式のネットワーク２００−１〜２００−３を１つのデータプール媒体（データ記憶媒体あるいはサーバ）と見なして制御する。
【０１１２】
［他の実施形態］
以上、本発明の実施形態について詳述したが、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステム又は装置も、本発明の範疇に含まれる。
【０１１３】
また、本発明は、複数の機器から構成されるシステムに適用されても良いし、単体の装置に適用されても良い。さらに、本発明は、実施形態の機能を実現する制御プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされる制御プログラム、あるいはその制御プログラムを格納した媒体、その制御プログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。
【０１１４】
［実施形態の他の表現］
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１５】
（付記１）
Ｐ２Ｐ方式のネットワークに接続された複数のノードを含み、データを複製して２重に保持する情報処理システムであって、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信手段と、
を有することを特徴とする情報処理システム。
（付記２）
前記第１ノードは、
前記第２ノードに障害が発生した場合に、前記複数の第３ノードの少なくとも１つに対して、前記複数の第３ノードに分散保持させた前記データの読出しを指示する指示手段を有することを特徴とする付記１に記載の情報処理システム。
（付記３）
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して返信するように依頼する依頼手段と、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第２ノードに保存した前記データを復元する復元手段と、
前記復元されたデータを前記第１ノードに送信する送信手段とを有することを特徴とする付記１又は２に記載の情報処理システム。
（付記４）
前記複数の第３ノードの少なくとも１つは、
前記分散識別情報に基づいて、残りの前記複数の第３ノードに分散保持させたデータを検索して前記第１ノードに返信するように依頼する依頼手段と、
前記分散識別情報を前記第１ノードに通知する通知手段と、
自ノードに分散保持されたデータを前記第１ノードに送信する送信手段とを有し、
前記第１ノードは、前記分散識別情報に基づいて前記複数の第３ノードから返信されたデータをマージして、前記第２ノードに保存した前記データを復元する復元手段を有することを特徴とする付記１又は２に記載の情報処理システム。
（付記５）
前記第１ノードは、前記Ｐ２Ｐ方式のネットワークに接続された複数のノードから前記保存するデータに対応して前記第２ノードを選択する選択手段をさらに有することを特徴とする付記１乃至４のいずれか１項に記載の情報処理システム。
（付記６）
前記第２ノードは、前記分散識別情報にしたがって、前記Ｐ２Ｐ方式のネットワークに接続された複数のノードから前記データを分散保持させる前記複数の第３ノードを選択する選択手段をさらに有することを特徴とする付記１乃至５のいずれか１項に記載の情報処理システム。
（付記７）
前記分散識別情報はフィンガーテーブルであることを特徴とする付記１乃至６のいずれか１項に記載の情報処理システム。
（付記８）
前記分散保持されたデータの検索は、分散ハッシュテーブル（ＤＨＴ）を用いて行なわれることを特徴とする付記１乃至７のいずれか１項に記載の情報処理システム。
（付記９）
複数のノードがＰ２Ｐ方式のネットワークに接続され、データを複製して２重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第１ノードと、
前記第１ノードに書込を指示されたデータを保存し、前記第１ノードの検索の指示にしたがって該データを読出す第２ノードと、
前記第２ノードに保存されたデータを複製して保持する第３ノードと、を含み、
前記第２ノードは、
自ノードへ前記第１ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第３ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第３ノードを識別可能な分散識別情報を前記複数の第３ノードの少なくとも１つに送信する送信ステップとを含むことを特徴とする情報処理システムのバックアップ方法。
（付記１０）
付記１乃至８の何れかに記載の情報処理システムにおける、前記第１ノード、前記第２ノード、及び前記第３ノードの少なくとも何れか一つのノードとして機能することを特徴とする情報処理装置。
（付記１１）
他のノードに対してデータの書込及び検索を要求する場合に、前記第１ノードとして機能することを特徴とする付記１０に記載の情報処理装置。
（付記１２）
他のノードからの指示にしたがってデータの書込及び検索を行なう場合に、前記第２ノードとして機能することを特徴とする付記１０又は１１に記載の情報処理装置。
（付記１３）
前記第２ノードに障害がある場合に、前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして機能することを特徴とする付記１０乃至１２の何れかに記載の情報処理装置。
（付記１４）
前記第３ノードとして機能する場合に、前記第２ノードから通知された前記分散識別情報に基づいて、自ノードのデータと他の第３ノードから返信されたデータとをマージして、前記第２ノードに保存した前記データを復元することを特徴とする付記１３に記載の情報処理装置。
（付記１５）
前記第２ノードからデータの分散保持の指示があった場合に、データの分散保持を行なう前記第３ノードとして機能することを特徴とする付記１０乃至１４の何れかに記載の情報処理装置。
（付記１６）
付記１０乃至１５の何れかに記載の情報処理装置の制御方法であって、
前記情報処理装置が前記第１ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第１ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、書込／検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする情報処理装置の制御方法。
（付記１７）
付記１０乃至１５の何れかに記載の情報処理装置の制御プログラムであって、
前記情報処理装置が前記第１ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第１ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第２ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第２ノードの代わりに前記データの読出しを行なう前記第３ノードとして前記情報処理装置が機能する場合に、書込／検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第２ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第３ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
【図１】
0005655628.tif 000002
【図２】
0005655628.tif 000003
【図３】
0005655628.tif 000004
【図４】
0005655628.tif 000005
【図５】
0005655628.tif 000006
【図６】
0005655628.tif 000007
【図７】
0005655628.tif 000008
【図８】
0005655628.tif 000009
【図９】
0005655628.tif 000010
【図１０】
0005655628.tif 000011
【図１１】
0005655628.tif 000012
【図１２】
0005655628.tif 000013
【図１３】
0005655628.tif 000014
【図１４】
0005655628.tif 000015
【図１５】
0005655628.tif 000016
【図１６】
0005655628.tif 000017
【図１７】
0005655628.tif 000018
【図１８】
0005655628.tif 000019
【図１９】
0005655628.tif 000020
【図２０】
0005655628.tif 000021
【図２１】
0005655628.tif 000022
【図２２】
0005655628.tif 000023
【図２３】
0005655628.tif 000024
【図２４】
0005655628.tif 000025