情報処理システム、データバックアップ方法、情報処理装置及びその制御方法と制御プログラム
【課題】P2P方式の情報処理システムにおいて、データを保存するノードが障害で動作不能となった場合であっても、データ回復をノードへの負荷を偏らせることなく実現すること。
【解決手段】複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムで、データの書込及び検索を指示する第1ノードと、第1ノードに書込を指示されたデータを保存し、第1ノードの検索の指示にしたがって該データを読出す第2ノードと、第2ノードに保存されたデータを複製して保持する第3ノードとを含み、第2ノードは、自ノードへ第1ノードにより書込を指示されたデータを保存する保存部と、保存したデータを分割して、複数の第3ノードに対して送信して分散保持させると共に、保存したデータを分散保持させた複数の第3ノードを識別可能な分散識別情報を複数の第3ノードの少なくとも1つに送信する送信部とを有する。
【解決手段】複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムで、データの書込及び検索を指示する第1ノードと、第1ノードに書込を指示されたデータを保存し、第1ノードの検索の指示にしたがって該データを読出す第2ノードと、第2ノードに保存されたデータを複製して保持する第3ノードとを含み、第2ノードは、自ノードへ第1ノードにより書込を指示されたデータを保存する保存部と、保存したデータを分割して、複数の第3ノードに対して送信して分散保持させると共に、保存したデータを分散保持させた複数の第3ノードを識別可能な分散識別情報を複数の第3ノードの少なくとも1つに送信する送信部とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システムにおける情報分散によるデータバックアップの技術に関する。
【背景技術】
【0002】
上記技術分野において、特許文献1には、ネットワークに接続された複数のPOSの各メモリの内容を、他のPOSに圧縮して分散保持する技術が開示されている。特許文献1においては、自メモリの障害を他のPOSの分散保持された圧縮データにより復元する。また、非特許文献1には、P2P(Peer-to-peer)方式のシステムにおいて、フィンガーテーブルによりデータの分散保持を行なうことが記載されている。さらに、特許文献2には、P2P方式のシステムにおいて、分散ハッシュテーブル(DHT:Distributed Hash Table)により分散データを管理することが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−067232号公報
【特許文献2】特表2010−519630号公報
【非特許文献】
【0004】
【非特許文献1】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.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1には、メモリの障害が考慮されるのみで、コントローラの障害によりPOS全体が動作不能になった場合のデータ回復については示されていない。あくまで、他のPOSに対してデータを分散したPOS自身がその分散先から分散データを集める技術である。この特許文献1の技術に、非特許文献1のフィンガーテーブルや特許文献2のDHTを組み合わせたとしても、データを保存する装置全体が動作不能になった場合のデータ回復の技術に対するヒントは得られない。
【0006】
一方、従来のP2P方式のシステムにおいて、データを保存するノードが動作不能になった場合のデータ回復の技術では、障害のためシステムから外されたノードの直近に存在する一部の特定ノードに対してデータ移管の処理が行われていた。そのため、データ移管をするノードに多大な負荷がかかっていた。
【0007】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明に係るシステムは、
P2P方式のネットワークに接続された複数のノードを含み、データを複製して2重に保持する情報処理システムであって、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信手段と、
を有することを特徴とする。
【0009】
上記目的を達成するため、本発明に係る方法は、
複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信ステップとを含むことを特徴とする。
【0010】
上記目的を達成するため、本発明に係る装置は、
上記情報処理システムにおける、前記第1ノード、前記第2ノード、及び前記第3ノードの少なくとも何れか一つのノードとして機能することを特徴とする。
【0011】
上記目的を達成するため、本発明に係る他の方法は、上記情報処理装置の制御方法であって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする。
【0012】
上記目的を達成するため、本発明に係るプログラムは、
上記情報処理装置の制御プログラムであって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする。
【発明の効果】
【0013】
本発明によれば、P2P方式の情報処理システムにおいて、データを保存するノードが障害で動作不能となった場合であっても、データ回復をノードへの負荷を偏らせることなく実現することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の第1実施形態に係る情報処理システムの構成を示すブロック図である。
【図2】本発明の第2実施形態に係る情報処理システムの構成を示すブロック図である。
【図3】本発明の第2実施形態に係る情報処理システムにおける、保存データの書込を示す図である。
【図4】本発明の第2実施形態に係る情報処理システムにおける、保存データの書込の手順を示すシーケンス図である。
【図5】本発明の第2実施形態に係る情報処理システムにおける、保存データの正常検索を示す図である。
【図6】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の一例を示す図である。
【図7】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の一例の手順を示すシーケンス図である。
【図8】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の他例を示す図である。
【図9】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の他例の手順を示すシーケンス図である。
【図10】本発明の第2実施形態に係る各ノードとして動作する情報処理装置のハードウェア構成を示すブロック図である。
【図11】本発明の第2実施形態に係るマスターデータ処理ノードテーブルの構成を示す図である。
【図12】本発明の第2実施形態に係るフィンガーテーブル及びフィンガーテーブル格納部の構成を示す図である。
【図13】本発明の第2実施形態に係る検索データ送信先情報の構成を示す図である。
【図14】本発明の第2実施形態に係るハッシュテーブル及び保存データの構成を示す図である。
【図15】本発明の第2実施形態に係る各ノード間の送信メッセージの構成を示す図である。
【図16】本発明の第2実施形態に係る情報処理プログラムの処理手順を示すフローチャートである。
【図17】本発明の第2実施形態に係るデータ検索要求ノードとして動作する場合の処理手順を示すフローチャートである。
【図18】本発明の第2実施形態に係るマスターデータ処理ノードとして動作する場合の処理手順を示すフローチャートである。
【図19】本発明の第2実施形態に係るレプリカデータ処理ノードとして動作する場合の処理手順を示すフローチャートである。
【図20】本発明の第3実施形態に係るデータ検索要求ノードからマスターデータ処理ノードへの送信メッセージの構成を示す図である。
【図21】本発明の第4実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索を示す図である。
【図22】本発明の第5実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索を示す図である。
【図23】本発明の第5実施形態に係る検索データ送信先及び復元データ送信先情報の構成を示す図である。
【図24】本発明の第6実施形態に係る複数の情報処理システムが接続したシステムの構成を示すブロック図である。
【発明を実施するための形態】
【0015】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【0016】
[第1実施形態]
本発明の第1実施形態としての情報処理システム100について、図1を用いて説明する。情報処理システム100は、複数のノードがP2P方式のネットワークに接続され、保存データを複製して2重に保持するシステムである。
【0017】
図1に示すように、情報処理システム100は、第1ノード110と、第2ノード120と、第3ノード130と、を含む。第1ノード110は、データの書込及び検索を指示する。第2ノード120は、第1ノード110に書込を指示されたデータを保存し、第1ノード110の検索の指示にしたがってデータを読出す。第3ノード130は、第2ノード120に保存されたデータを複製して保持する。そして、第2ノード120は、保存部122と、送信部121とを有する。122保存部は、自ノードへ第1ノード110により書込を指示されたデータを保存する。送信部121は、保存したデータを分割して、複数の第3ノード130に対して送信して分散保持させると共に、保存したデータを分散保持させた複数の第3ノード130を識別可能な分散識別情報を複数の第3ノード130の少なくとも1つに送信する。
【0018】
本実施形態によれば、P2P方式の情報処理システムにおいて、データを保存するノードが障害で動作不能となった場合であっても、データ回復をノードへの負荷を偏らせることなく実現することができる。
【0019】
[第2実施形態]
本発明に係る第2実施形態においては、DHT(Distributed Hash Table:分散ハッシュテーブル)型P2P方式のネットワークにおける障害時の保存データ(以下、マスターデータとも言う)の回復について説明する。すなわち、分散して複数のノードに保持された分散データは、ハッシュテーブルに基づいて検索されて特定される。また、本実施形態においては、保存データを分散して保持するノードを分散識別情報であるフィンガーテーブル(Finger Table)に基づいて選定するように制御される。そして、分散データは、障害にあったノードを代行するノード、あるいは保存データを検索したノードによってマージされて、保存データが復元される。本実施形態によれば、(1)マスターデータのレプリカを分散書込みすることで、各ノードの負荷を分散できる。また、(2)マスターデータのレプリカを分散書込みするノードはマスターデータを保持するノードのフィンガーテーブル内のみであるため、書込み、検索で発生する不要なホップを防ぐことができる。また、(3)DHT型P2Pネットワーク内のノード追加・削除を分散処理できるため、これらの処理を効率良く実行することができる。すなわち、このバックアップデータを分散配置し、局所的に負荷がかかっていた問題を軽減させた。このため、再分散時に多量のデータを移管することなく、データ移管を可能にする。また、検索においても、ネットワークに流れるデータ量減少及び応答速度向上を目的として、ホップ数を削減させて検索できる。
【0020】
《本実施形態に係る情報処理システムの構成》
図2は、本実施形態に係る情報処理システム200の構成を示すブロック図である。
【0021】
図2においては、DHT型P2Pネットワークに各ノード210、220、230−1〜−3となる情報処理装置が存在する。各ノードは同一の機能を有しており、全てのノードがデータ書込/検索要求ノード210、マスターデータ処理ノード220(データ保存ノードとも称す)、レプリカデータ処理ノード230−1〜−3(分散保持ノードとも称す)の動作が可能である。たとえば、データ書込/検索要求ノード210になる条件としては、オペレータ等がDHT型P2Pネットワークの外部から検索要求を行った場合がある。ただ、オペレータ等がどのノードで検索するかは自由である。マスターデータとレプリカデータとについては、基本はマスターデータで運用し、マスターデータ処理ノード220が故障した場合には、レプリカデータを使用する流れとなる。マスターデータ処理ノード220については、データ検索の対象が存在するマスターデータを保持するノードがその役割となるため、検索するデータによっては、どのノードでも、マスターデータ処理ノード220になる可能性があり得る。
【0022】
以下、本実施形態の基本的な動作を説明する。
【0023】
図2のデータ書込/検索要求ノード210には、書込/検索をするデータ210aがある。データ書込/検索要求ノード210の書込要求により、データ210aはその内容などによって選択されたマスターデータ処理ノード220の保存部222に保存データ210bとして複製される。そして、データ書込/検索要求ノード210のデータ210aは削除される。
【0024】
マスターデータ処理ノード220は、保存データ210bをハッシュテーブル225内のハッシュ値に対応付ける。ハッシュテーブル225の詳細な例は特許文献2に説明があるので、特許文献2を参照されたい。そして、分散識別情報保持部のフィンガーテーブル224に従って、保存データ210bの分散保持先を設定し、保存データ210bを分散データ生成部223で分割する。分割数は分散保存先の数に対応していても、さらに分散保存数の半分にしたり重なり部分を設けたりして、復元能力を高めることもできる。なお、フィンガーテーブル224の詳細な例は非特許文献1に説明があるので、非特許文献1を参照されたい。送信部221からは、フィンガーテーブル224により特定される分散データ保持先のレプリカデータ処理ノード230−1〜−3に分散データ及び分散データのハッシュ値の保持が要請される。図2には、フィンガーテーブル224及び231が1つのように図示されているが、保存データの種別やデータ書込を指示したデータ書込/検索要求ノードなどによって異なる複数のフィンガーテーブルから選択されて使用されてよい。
【0025】
マスターデータ処理ノード220から分散保持が要請された各分散データ及びハッシュ値は、レプリカデータ処理ノード230−1〜−3のそれぞれ分散データ230a〜230c、及びハッシュテーブル232a〜232cに保持される。なお、図2では、データ書込/検索要求ノード210とマスターデータ処理ノード220以外のノードがレプリカデータ処理ノード230−1〜−3として図示されている。しかし、レプリカデータ処理ノード230−1〜−3はフィンガーテーブル224に従って選択されるものであり、図2はその特殊な例に過ぎない。
【0026】
また、本実施形態では、マスターデータ処理ノード220からレプリカデータ処理ノード230−1〜−3の少なくとも1つに、マスターデータ処理ノード220が分散保持先を決めるために使用したフィンガーテーブル224の複製が送信される。レプリカデータ処理ノード230−1〜−3の少なくとも1つは、フィンガーテーブル224の複製を保持している。従って、マスターデータ処理ノード220が障害を起こして動作不能となっても、データ書込/検索要求ノード210による保存データの検索をレプリカデータ処理ノード230−1〜−3の1つが代行することによって、分散データから保存データを復元することが可能となる。なお、マスターデータ処理ノードの障害時に、データ書込/検索要求ノードによる保存データの検索を代行するレプリカデータ処理ノードを、以下、他のレプリカデータ処理ノードと区別するため「障害支援ノード」とも呼ぶ。
【0027】
《本実施形態に係る情報処理システムの動作》
以下、図3〜図10を参照して、図2の情報処理システムにおける動作手順を具体的に説明する。なお、図2において、データ書込/検索要求ノード210として動作した情報処理装置は、図3〜図10においては、同じ情報処理装置がデータ書込要求ノード210として動作したりデータ検索要求ノードとして動作したりする。
【0028】
(保存データの書込)
図3は、保存データの書込300を示す図である。なお。以下明細書の(n)は図3、図5、図6及び図8の丸数字に対応する。
【0029】
データ検索要求ノード210のデータ書込要求に従って、マスターデータ処理ノード220は(1)及び(2)の処理を行う。すなわち、マスターデータ処理ノード220が全てのデータを自ノードに保存すると共に、それぞれのレプリカデータ処理ノード230−1〜−4にデータを分散配置する。データの分散配置にはマスターデータ処理ノード220のフィンガーテーブルを用いる。図3には、保存データが4つの部分に分割されて、4つのレプリカデータ処理ノード230−1〜−4にその1つ1つが分散配置される様子を示している。マスターデータ処理ノード220が分散データの分散配置に使用したフィンガーテーブルは分散配置するレプリカデータ処理ノード230−1〜−4に配置される。
【0030】
(保存データ書込のシーケンス)
図4は、図3のような保存データの書込の手順400を示すシーケンス図である。
【0031】
データ書込要求ノード210のデータ書込要求処理(S411)によるデータ書込要求を、マスターデータ処理ノード220は、データ受信処理(S421)により受信する。マスターデータ処理ノード220は、マスターデータの書込要求に対応して、マスターデータ書込処理(S422)によりDBに保存データとして書き込む。マスターデータ処理ノード220は、正常に書き込まれた場合、書込結果送信処理(S423)によりデータ書込要求ノード210に正常に書き込まれたことを通知する。なお、マスターデータ書込処理(S422)で正常に書き込めなかった場合、書込結果送信処理(S423)により正常に書き込めなかった旨のメッセージをデータ書込要求ノード210に通知する。
【0032】
データ書込要求ノード210は、書込結果受信処理(S413)において書込結果を受信すると、マスターデータ書込結果判定処理(S415)においてマスターデータ書込結果を判定する。マスターデータ書込完了処理(S417)においては、判定結果からマスターデータを正常に書込めた場合、データ書込要求ノード210が格納していたマスターデータ処理ノード220に書き込む内容を消去し、マスターデータ書込み処理を完了させる。また、正常に書き込めなかった場合には、マスターデータ書込完了処理(S417)において、正常に書込めなかった旨のメッセージを通知する。
【0033】
なお、どこに正常に書込めなかった旨のメッセージを通知するかはシステム設計による。例えば、データ書込要求ノード210自身で通知しても、データ書込要求ノード210に書込を指示した依頼元に通知してもよい。さらに、正常に書き込めなかった場合、データ書込み要求ノード210が保持するマスターデータ処理ノード220に書き込む内容を保持するか/消去するかもシステム設計による。さらに、データ書込み要求ノード210が保持するマスターデータ処理ノード220に書き込む内容を再度マスターデータ処理ノード220に書き込むように要求するかもシステム設計による。
【0034】
次に、マスターデータ処理ノード220は、フィンガーテーブル確認処理(S424)において、フィンガーテーブルを確認して、どのノードにレプリカを分散すれば良いのか決定する。分散先ノードの決定後、フィンガーテーブル確認処理(S424)からデータ分散処理(S425)に対して、どのノードにレプリカを分散すれば良いのかを通知する。マスターデータ処理ノード220は、データ分散処理(S425)において、フィンガーテーブル確認処理(S424)から通知されたノードに分散するように、保存したマスターデータを所定数(図3の例では4つ)に分散する。そして、各分散データのハッシュ値を算出して、分散データ及びハッシュ値を振り分ける。振り分けた分散データは、データ分散処理(S425)から分散データ送信処理(S426)に渡される。マスターデータ処理ノード220は、分散データ送信処理(S426)において、渡された分散データ及びハッシュ値をフィンガーテーブル上のノードに対して送信する。図3の例では、レプリカデータ処理ノード230−1〜−4の4つのノードに分散データ及びハッシュ値を送信する。なお、分散データの送信先は、フィンガーテーブルによって設定される。
【0035】
レプリカデータ処理ノード230−1〜−4は、データ受信処理(S431)において、送信された分散データ及びハッシュ値を受信する。以下、レプリカデータ処理ノード230−1〜−4の処理は同様なので、1つのレプリカデータ処理ノード230−1の処理について説明する。レプリカデータ処理ノード230−1は、データ書込処理及びフィンガーテーブル登録処理(S433)において、DBに分散データとハッシュ値を書込み、フィンガーテーブルを登録する。なお、フィンガーテーブルの登録は、システム設計に対応して、分散データの分散先の全てのレプリカデータ処理ノードに登録してもよいし、予め決められたレプリカデータ処理ノードへの送信でもよい。例えば、図3において、マスターデータ処理ノード220の時計回りの次のレプリカデータ処理ノード230−1が、マスターデータ処理ノード220の障害時にデータ検索の代行をする設計であれば、レプリカデータ処理ノード230−1に送信すればよい。しかしながら、どのレプリカデータ処理ノードでも障害時にデータ検索の代行ができるように設計すれば、全レプリカデータ処理ノード230−1〜−4に送信することになる。そして、書き込みが完了したことが、データ書込処理及びフィンガーテーブル登録処理(S433)からデータ書込完了通知処理(S435)に通知される。レプリカデータ処理ノード230−1のDBに分散データが書き込まれなかった場合には、書き込まれなかったことが、データ書込処理及びフィンガーテーブル登録処理(S433)からデータ書込完了通知処理(S435)に通知される。レプリカデータ処理ノード230−1は、データ書込完了通知処理(S435)によって、書込完了あるいは書込未了の通知を、マスターデータ処理ノード220に通知する。
【0036】
マスターデータ処理ノード220は、データ書込み完了通知受信処理(S427)において、レプリカデータ処理ノード230−1〜−4からの書込完了あるいは書込未了の通知を受信する。そして、書込完了あるいは書込未了の通知は、データ書込み完了通知受信処理(S427)から分散データ書込結果判定処理(S428)に通知される。マスターデータ処理ノード220は、分散データ書込結果判定処理(S428)において、分散データが全ての分散先に正常に書き込まれたか否かを判定する。マスターデータ処理ノード220は、判定結果から分散データを正常に書込めた場合には、分散データ書込完了処理(S429)において、マスターデータ処理ノード220が格納していた分散データを消去し、分散データのレプリカデータ処理ノード230−1〜−4への書込みを完了させる。
【0037】
一方、分散データが少なくとも1つのレプリカデータ処理ノードに対して正常に書き込めなかった場合には、正常に書込めなかった旨のメッセージを通知する。どこに通知するかはシステムの設計による。例えば、マスターデータ処理ノード220自身で通知を受けて、他のフィンガーテーブルによる再分散を試みてもよいし、書込を失敗したレプリカデータ処理ノードを他のレプリカデータ処理ノードで代行して再分散を試みてもよい。あるいは、データ書込要求ノード210に通知してもよいし、データ書込要求ノード210を介してデータ書込要求を行なったシステム外部の他のシステムや装置でもよい。さらに、レプリカデータ処理ノードに通知して、他のレプリカデータ処理ノードで分散データの書込が失敗したことを通知して、DBに書き込んだ分散データを削除するようにしてもよい。また、分散データが正常に書き込めなかった場合、マスターデータ処理ノード220が保存したマスターデータの保持を継続するか/消去するかも、システムの設計による。更に、マスターデータ処理ノード220が保存したマスターデータの分散データの保持を再度レプリカデータ処理ノードに要求するかも、システムの設計による。
【0038】
(保存データの正常検索)
次に、検索処理について説明する。
【0039】
図5は、一般的に行われている検索方法において、保存データの正常検索500を示す図である。
【0040】
マスターデータ処理ノード220に障害がなく正常検索を行なわれた場合は、図5の(1)−(2)の順序で、保存データの検索が完了する。なお、本実施形態において、保存データの検索はハッシュテーブルのハッシュ値との比較に基づいて行われる。
【0041】
(保存データ障害時の分散データ検索の一例)
図6は、保存データ障害時の分散データ検索の一例600を示す図である。図6の例では、データの検索中に障害が発生したマスターデータ処理ノードの検索処理を代行するレプリカデータ処理ノードが、自分に分散データを集めてデータ復元のためのマージ(merge:併合)を行なって、データ検索要求ノードに送信する。
【0042】
図6の例では、(1)のように、マスターデータ処理ノード220に障害が発生した場合、次のように処理する。まず、(2)のように、障害が発生したマスターデータ処理ノード220から図6において右回り(時計回り)に次のレプリカデータ処理ノード230−1に、データ検索要求ノード210から検索要求を行う。なお、障害が発生したマスターデータ処理ノード220の代行は、図6のように右回り(時計回り)の次のレプリカデータ処理ノード230−1に限定する必要はなく、システムの設計による。検索要求を受けたレプリカデータ処理ノード230−2は、故障したマスターデータ処理ノード220の代わり(3)のように検索処理を実行する。(3)の処理では、検索要求を受けた各レプリカデータ処理ノード230−2〜−4が検索要求元のレプリカデータ処理ノード230−1に検索結果を返す。自ノード以外のレプリカデータ処理ノード230−2〜−4から検索した分散データが返送されると、(4)のように、要求元のレプリカデータ処理ノード230−1は、自ノードに保持している分散データと他のレプリカデータ処理ノード230−2〜−4からの分散データとをマージする。そして、レプリカデータ処理ノード230−1は、マージして復元したマスターデータの複製をデータ検索要求ノード210に検索結果として送信する。このようにして、データ検索要求ノード210は保存したマスターデータを得ることができる。
【0043】
(保存データ障害時の分散データ検索のシーケンス)
図7は、保存データ障害時の分散データ検索の一例の手順700を示すシーケンス図である。
【0044】
データ検索要求ノード210のデータ検索要求処理(S711)によるデータ検索要求を、レプリカデータ処理ノード230−1は検索データ受信処理(S721)により受信する。レプリカデータ処理ノード230−1は、フィンガーテーブル確認処理(S722)において、図4のS432で登録した検索データに対応するフィンガーテーブルを見付ける。そして、フィンガーテーブル確認処理(S722)から検索する分散データ問い合わせ処理(S723)に対して見付けたフィンガーテーブルの情報を渡す。レプリカデータ処理ノード230−1は、検索する分散データ問い合わせ処理(S723)において、フィンガーテーブルの情報を基に検索要求を行うレプリカデータ処理ノードを特定する。図6の例では、レプリカデータ処理ノード230−2〜−4を特定する。そして、検索する分散データ問い合わせ処理(S723)から、特定したレプリカデータ処理ノード230−2〜−4の情報と検索する分散データを特定可能なハッシュ値とを、分散データ内容送信処理(S724)に渡す。ハッシュ値送信処理(S724)において各分散データを検索する検索キーとなるハッシュ値を送信することにより、特定されたレプリカデータ処理ノード230−2〜−4に対して分散データの検索要求を行う。なお、本例ではハッシュ値を分散データの検索として送信するが、他の検索キーを使うシステム設計であってもよい。ただし、検索キー割当の容易性や秘匿性からハッシュ値が望ましい。また、S724の括弧内の「分散データ返信先」は、返信先が検索要求元のレプリカデータ処理ノード230−1とする設計であれば必要ない。しかし、次の例で示すように、返信先を選択できる設計とするのであれば必要であり、本例では、レプリカデータ処理ノード230−1が返信元に指定される。
【0045】
検索要求を受けたレプリカデータ処理ノード230−2〜−4は、ハッシュ値受信処理(S731)において、分散データ検索要求として分散データのハッシュ値を受信する。なお、括弧内の「分散データの返信先」の役割については前述した。なお、レプリカデータ処理ノード230−2〜−4の処理は同様なので、以下、レプリカデータ処理ノード230−2を代表させて説明する。レプリカデータ処理ノード230−2は、要求を受けた検索を実施するため、ハッシュ値受信処理(S731)からデータ検索処理(S733)に検索内容を渡すよう制御する。データ検索処理(S733)において、ハッシュ値を基にデータ検索を行う。そして、検索された分散データ及び検索結果の情報等が、データ検索処理(S733)から検索データ及び検索結果取得処理(S735)に渡される。さらに、これらの結果が、検索データ及び検索結果取得処理(S735)から検索データ送信処理(S737)に渡され、検索データ送信処理(S737)は検索された分散データ及び検索結果の情報等をレプリカデータ処理ノード230−1に返信する。
【0046】
レプリカデータ処理ノード230−1は、検索データ及び検索結果受信処理(S727)において、各レプリカデータ処理ノード230−2〜−4の検索データ送信処理(S737)からの分散データ及び検索結果の情報等を受信する。受信した情報は、検索データ及び検索結果受信処理(S727)から検索データマージ処理(S728)に渡される。一方、レプリカデータ処理ノード230−1は、他のレプリカデータ処理ノード230−2〜−4への分散データの検索要請と並行して、データ検索処理(S725)以降の処理を検索する分散データ問い合わせ処理(S723)の実行完了後に実行する。すなわち、検索データ受信処理(S721)において受信した検索内容から、レプリカデータ処理ノード230−1自身に対する検索を実行する。この検索結果は、検索データ及び検索結果取得処理(S726)に渡され、他の分散データと共に検索データマージ処理(S728)に渡される。レプリカデータ処理ノード230−1は、検索データマージ処理(S728)において、検索データ及び検索結果取得処理(S726)で得られたレプリカデータ処理ノード230−1が保持した分散データと検索データ及び検索結果取得処理(S727)で得られたレプリカデータ処理ノード230−2〜−4の分散データとをマージする。そして、マージ結果のマスターデータの複製は、検索データ送信処理(S729)に渡される。レプリカデータ処理ノード230−1は、検索データ送信処理(S729)により、この結果をデータ検索要求ノード210に送信する。
【0047】
データ検索要求ノード210は、レプリカデータ処理ノード230−1が検索データ送信処理(S729)により送信した検索結果を、検索データ受信処理(S713)において受信する。そして、検索データ判定処理(S715)において、検索結果の検索データは自分が検索要求したデータであることを判定する。
【0048】
(保存データ障害時の分散データ検索の他例)
図8は、保存データ障害時の分散データ検索の他例800を示す図である。
【0049】
図8の他例800では、図6の例と分散データをマージするところが異なる。すなわち、図8においては(4)のように、データ検索を代行したレプリカデータ処理ノード230−1が、自ノードに保持されている分散データと、分散データの検索要求をしたレプリカデータ処理ノード230−2〜−4を示すフィンガーテーブルとを、データ検索要求ノード210に送信する。そして、(5)のように、それぞれのレプリカデータ処理ノード230−2〜−4が、検索した分散データをデータ検索要求ノード210に返信する。データ検索要求ノード210が、フィンガーテーブルを使って対応するレプリカデータ処理ノード230−2〜−4から受信した分散データをマージして、データ書込要求したデータを複製して分散した分散データから復元する。なお、レプリカデータ処理ノード230−2〜−4の検索した分散データの返信先は、図7の括弧内に記載した「分散データ返信先」を分散データの検索依頼時にレプリカデータ処理ノード230−1からレプリカデータ処理ノード230−2〜−4に送信することで実現する。本他例によれば、データの移動量が少ない(レプリカデータ処理ノード230−1を経由しない)ため効率的であることから、ファイアウォール等の問題がない場合には、図8の方法を用いるのが望ましい。
【0050】
(保存データ障害時の分散データ検索の他のシーケンス)
図9は、保存データ障害時の分散データ検索の他例の手順900を示す図である。
【0051】
図9の図7との相違は、フィンガーテーブルのレプリカデータ処理ノード230−1からデータ検索要求ノード210への送信と、検索した分散データのマージをデータ検索要求ノード210が行うことである。従って、以下、図7との相違点について説明し、図7と同様処理の手順には図7と同じ参照番号を付与している。
【0052】
最初の図7との相違点では、レプリカデータ処理ノード230−1は、ハッシュ値/分散データ返信先送信処理(S924)において、検索キーであるハッシュ値と共に、分散データ返信先を、レプリカデータ処理ノード230−2〜−4に送信する。本例では、データ検索要求ノード210を分散データ返信先に指定する。各レプリカデータ処理ノード230−1は、ハッシュ値/分散データ返信先受信処理(S931)において、検索キーであるハッシュ値と共に、分散データ返信先を受信する。
【0053】
次の図7との相違点では、レプリカデータ処理ノード230−1は、フィンガーテーブル送信処理(S927)において、フィンガーテーブル確認処理(S722)及び検索する分散データ問い合わせ処理(S723)で問い合わせ先を決定するために使用したフィンガーテーブルを、障害支援中にデータ検索要求ノード210に送信する。データ検索要求ノード210は、フィンガーテーブル受信処理(S917)において、レプリカデータ処理ノード230−1が送信したフィンガーテーブルを受信し、検索した分散データのマージのために使用する。すなわち、分散させた全ての分散データが返信されたかをこのフィンガーテーブルにより確認することになる。
【0054】
最後の図7との相違点では、レプリカデータ処理ノード230−1は、検索データ及び検索結果取得処理(S726)で取得した自ノードの分散データのみを直接、検索データ送信処理(S928)によりデータ検索要求ノード210に送信する。そして、データ検索要求ノード210は、検索データ受信処理(S713)において受信した全ての分散データを、検索データマージ処理(S919)においてマージして保存したデータを復元し、検索データ判定処理(S715)に渡す。以上の処理では、データ検索要求ノード210は、レプリカデータ処理ノード230−1から受信したフィンガーテーブルに記載されているレプリカデータ処理ノードからの分散データの返信を待ち、全ての分散データを受信した場合には検索成功とみなす。なお、レプリカデータ処理ノードのいずれかから分散データが送信されなかった場合のタイムアウトやその後の処理については、システムの設計により種々の設定が可能である。
【0055】
《各ノードとして動作する情報処理装置のハードウェア構成》
図10は、本実施形態に係る各ノードとして動作する情報処理装置1000のハードウェア構成を示すブロック図である。
【0056】
図10で、CPU1010は演算制御用のプロセッサであり、プログラムを実行することで図2の各機能構成部を実現する。ROM1020は、初期データ及びプログラムなどの固定データ及びプログラムを記憶する。通信制御部1030は、ネットワークを介して他のノードと通信する。あるいは、通信制御部1030は、本P2P方式のネットワークの外部にある他のネットワークや装置との通信をしてもよい。また、上記2つの機能をそれぞれ別個に有する複数の通信制御部で構成してもよい。通信は無線でも有線でもよい。
【0057】
RAM1040は、CPU1010が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM1040には、本実施形態の実現に必要なデータを記憶する領域が確保されている。領域は、大きく分けて、受信メッセージ1041用と、送信メッセージ1046用と、本例では対象としない情報処理データとを含む。
【0058】
受信メッセージ1041の内、1042は、書込/検索する受信データである。受信データには分散データも含まれる。1043は、受信データから算出されるハッシュ値である。1044は、例えば、データ書込/検索要求ノード210が障害支援ノードとなったレプリカデータ処理ノードから受信するフィンガーテーブルや、レプリカデータ処理ノードがマスターデータ処理ノード220から受信するフィンガーテーブルである。1045は、図8及び図9の場合における、分散データを送信する検索データ送信先である。
【0059】
送信メッセージ1046の内、1047は、書込/検索する送信データである。送信データには分散データも含まれる。1048は、送信データから算出されるハッシュ値である。1049は、例えば、障害支援ノードとなったレプリカデータ処理ノードからデータ書込/検索要求ノード210に送信するフィンガーテーブルや、マスターデータ処理ノード220からレプリカデータ処理ノードに送信するフィンガーテーブルである。
【0060】
なお、受信メッセージ1041及び送信メッセージ1046については、本実施形態に重要な一部のデータ要素を示したのみであり、他のデータ要素も随時に使用される(図15参照)。
【0061】
ストレージ1050は、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータ又はプログラムが記憶されている。1051は、データ書込/検索要求ノードがデータの書込/検索を行なう先を、そのデータの内容や形式に対応して設定するためのマスターデータ処理ノードテーブルである。1052は、予め保持する、あるいは他ノードから送信されたフィンガーテーブルを保持するフィンガーテーブル保持部である。1053は、保存あるいは保持したデータを検索するための検索キーとして、データに対応付けられて記憶するハッシュテーブルである。1054は、保存あるいは保持したデータを検索可能に蓄積する保存データDBであり、分散データも含まれる。ストレージ1050には、以下のプログラムが格納される。1055は、全体の処理を実行させる本例の書込/検索以外の処理も含む情報処理を行なう情報処理プログラムである(図16参照)。1056は、情報処理プログラム1055において、情報処理装置1000がデータ書込/検索要求ノードとして動作する場合に実行されるデータ書込/検索要求ノード実行モジュールである。1057は、情報処理プログラム1055において、情報処理装置1000がマスターデータ処理ノードとして動作する場合に実行されるマスターデータ処理ノード実行モジュールである。1058は、情報処理プログラム1055において、情報処理装置1000がレプリカデータ処理ノードとして動作する場合に実行されるレプリカデータ処理ノード実行モジュールである。
【0062】
なお、図10には、本実施形態に必須なデータやプログラムのみが示されており、OSなどの汎用のデータやプログラムは図示されていない。
【0063】
(マスターデータ処理ノードテーブル)
図11は、マスターデータ処理ノードテーブル1051の構成を示す図である。
【0064】
かかるマスターデータ処理ノードテーブル1051は、データ書込/検索要求ノードがデータファイルの内容や形式などから、マスターデータ処理ノードを決定するために使用する。図3〜図9に示した例では、マスターデータ処理ノード220は固定したノードのように示されていたが、実際には、データ書込/検索要求ノード210がデータファイルの内容や形式などから決定する。なぜなら、マスターデータのDBなどの作成に当たっては、同種あるいは同形式のデータを管理するのが効率的である。さらに、1つのノードをマスターデータ処理ノード専用にするのではなく、全てのノードがマスターデータを分散管理することで、ノードへの負荷を分散することができる。
【0065】
図11において、マスターデータ処理ノードを決める条件として、ファイル内容1101やファイル形式1102のそれぞれ又はその組合せに対応付けて、マスターデータ処理ノードとなるノードのノードIDが記憶されている。なお、図11においては、理解を容易にするため、ノードIDは図3〜図9に示した参照番号を援用した。
【0066】
(フィンガーテーブル及びフィンガーテーブル格納部)
図12は、フィンガーテーブル1044及びフィンガーテーブル格納部1052の構成を示す図である。
【0067】
図12のフィンガーテーブル1044は、分散データ書込元ノードID1211に対応して分散データ書込先ノードID1212のセットが記憶されている。図12においては、各ノードIDは図3〜図9の参照番号を援用している。なお、フィンガーテーブルについては、図12の構成に限定することはなく、分散データの書込元と書込先との関連が記述されていればよい。フィンガーテーブルの例については、非特許文献1を参照されたい。
【0068】
図12のフィンガーテーブル格納部1052は、上記構成のフィンガーテーブルのどれを分散データの分散書込に使用したかを、ファイル名に対応付けて記録する。各データのファイル名1221に対応付けて使用したフィンガーテーブル1222が記憶される。もし、ノードによって使用するフィンガーテーブルが固定であるなら、書込元ノードIDに対応付けてフィンガーテーブルを記憶することになる。
【0069】
(検索データの送信先)
図13は、検索データ送信先情報1045の構成を示す図である。
【0070】
検索データ送信先情報1045は、マスターデータ処理ノードに障害が発生した場合に代替して分散データを検索するレプリカデータ処理ノードからの検索要請に対して、各レプリカデータ処理ノードが分散データを何処に送信するかの送信先を記憶する。図13においては、書込/検索するデータのファイル名1301に対応付けて検索した分散データの送信先ノードID1302が記憶されている。なお、送信先ノードID1302は、図3〜図10の参照番号を援用した。図13においては、図6の場合(送信先ノードID1302はレプリカデータ処理ノード230−1)と、図7の場合(送信先ノードID1302はデータ書込/検索要求ノード210)との、送信先を示している。
【0071】
なお、図13は、ファイル名に対応付けて送信先を設定しているが、例えば、マスターデータ処理ノードがどれか、代替のレプリカデータ処理ノードがどれか、データ書込/検索要求ノードがどれか、などに対応付けてもよい。さらに、システムの設計に従った対応付けが可能である。
【0072】
(ハッシュテーブル及び保存データ)
図14は、ハッシュテーブル1053及び保存データ1054の構成を示す図である。
【0073】
図14のハッシュテーブル1053は、ハッシュ値の比較によりデータを検索し、ハッシュ値が一致したデータファイルを検索データとするための検索キーテーブルである。データファイルに対して別途にIDなどの検索キーを付すのではなく、データの内容から算出されたハッシュ値を検索キーとすることで、容易に検索キーを付すことができると共に、秘匿性が優れている。
【0074】
ハッシュテーブル1053は、ハッシュ値1411に対応付けられてファイル名が記憶されている。各ノードは、検索を要請されたデータファイルのハッシュ値により一致するハッシュ値のファイルを探し出し、保存データDBからそのファイルを読み出すことができる。ハッシュテーブルの詳細については、その一例が特許文献2に記載されているので、参照されたい。
【0075】
(各ノード間の送信メッセージ)
図15は、各ノード間の送信メッセージ1046の構成を示す図である。
【0076】
図15の送信メッセージ1510は、データ書込/検索要求ノードから送信される送信メッセージである。1511は、マスターデータ処理ノードへの書込要求の送信メッセージの構成を示している。ここで、括弧で示した「分散データ送信先」は、データ書込/検索要求ノードが主導して分散データ報告先を指定する場合に使用されるが、マスターデータ処理ノードが予め保持している場合や、データ内容やデータ形式から決定される場合は、使用されない。1512は、マスターデータ処理ノードや障害時にレプリカデータ処理ノードの1つである障害支援ノードに送信される検索要求の送信メッセージである。検索要求がいずれによるかに対応して、マスターデータ処理ノードへの正常な検索要求であるか/障害支援ノードへの障害支援の検索要求であるかを示すデータ以外は共通である。なお、括弧で示した「分散データ送信先」は、書込要求と同様である。
【0077】
図15の送信メッセージ1520は、マスターデータ処理ノードから送信される送信メッセージである。1521は、データ保存後にレプリカデータ処理ノードに送信される分散データ書込要求の送信メッセージである。なお、ここでは、フィンガーテーブルも分散データと共に送信される。
【0078】
図15の送信メッセージ1530は、レプリカデータ処理ノードの1つである障害支援ノーから送信される送信メッセージである。1531は、フィンガーテーブルにより確定した他のレプリカデータ処理ノードへの分散データ検索要求の送信メッセージである。なお、括弧で示した「分散データ送信先」は、図8のように分散データの送信先が要求元と異なる場合に使用される。分散データの送信先が要求元と同じ場合は、使用しなくてもよい。1532は、図8のように分散データの送信先が要求元と異なり、データ書込/検索要求ノードである場合のフィンガーテーブルの送信メッセージである。
【0079】
《各ノードとして動作する情報処理装置の処理手順》
図16は、情報処理プログラムの処理手順を示すフローチャートである。以下、図16〜図19に示すフローチャートは、図10のCPU1010が、RAM1040を使用しながら実行し、図2〜図9に図示された各機能構成部及びその処理を実現する。
【0080】
まず、ステップS1610において、自装置内部からあるいは外部装置からデータをシステム内に書き込む指示があったか/データを検索する指示があったかを判定する。データ書込またはデータ検索の指示があればステップS1612に進んで、情報処理装置1000はデータ書込/検索要求ノードとして動作する(図17参照)。次に、ステップS1620において、他のノードからデータを書き込む指示があったか/データを検索する指示があったかを判定する。データ書込またはデータ検索の指示があればステップS1622に進んで、情報処理装置1000はマスターデータ処理ノードとして動作する(図18参照)。次に、ステップS1630において、他のノードから分散データを書き込む指示があったか/分散データを検索する指示があったかを判定する。分散データ書込または分散データ検索の指示があればステップS1632に進んで、情報処理装置1000はレプリカデータ処理ノードとして動作する(図19参照)。
【0081】
(データ検索要求ノード実行モジュール)
図17は、データ検索要求ノードとして動作する場合(S1612)の処理手順を示すフローチャートである。
【0082】
まず、ステップS1710において、自装置内部からあるいは外部装置からデータをシステム内に書き込む指示があったかを判定する。データ書込の指示があればステップS1712に進んで、送信データを含む送信メッセージを予め決まったマスターデータ処理ノード、あるいは選択したマスターデータ処理ノードに送信する。なお、送信メッセージは図15の送信メッセージ1511のフォーマットを有する。次に、ステップS1714において、送信エラーであるか否かを判断する。送信エラーが無ければ処理を終了する。送信エラーが有ればステップS1716に進んで、エラーを報知する。なお、エラー報知は自装置から行なっても、あるいはデータ書込を指示した外部装置から行なってもよい。
【0083】
次に、ステップS1720において、自装置内部からあるいは外部装置からデータをシステム内から検索する指示があったかを判定する。データ検索の指示があればステップS1722に進んで、検索するデータを書き込んだマスターデータ処理ノードにデータ検索要求の送信メッセージを送信する。なお、送信メッセージは、図15の送信メッセージ1512のフォーマットを有する。次に、ステップS1724において、送信エラーがあったか否かを判断する。送信エラーが無ければ処理を終了する。送信エラーが有ればステップS1726に進んで、障害支援ノードに対してデータ検索要求の送信メッセージを送信する。なお、送信メッセージは、図15の送信メッセージ1512のフォーマットである。次に、ステップS1728において、障害支援ノードからフィンガーテーブルの送信があれば受信する。このステップS1728は図8の場合の処理であり、障害支援ノードからフィンガーテーブルの送信がなければ、スキップして処理を終了する。
【0084】
次に、ステップS1730において、検索したデータを受信したか否かを判定する。データの受信であればステップS1732において、マスターデータ処理ノードからの受信であるかを判断する。マスターデータ処理ノードからのデータ受信であれば、データの検索が正常に完了したと考えられるので、ステップS1738において検索データとして記憶する。一方、マスターデータ処理ノードからのデータでなければステップS1734に進んで、障害支援ノードからの受信であるかを判断する。障害支援ノードからのデータ受信であれば、分散データの検索とマージとが障害支援ノードで完了したと考えられるので、ステップS1738において検索データとして記憶する。一方、障害支援ノードからのデータでなければ、分散データの検索が指示された他のレプリカデータ処理ノードからのデータと判断する。従って、ステップS1736に進んで、フィンガーテーブルに基づいて全分散データが検索され送信されたのを待って、それをマージする。そして、ステップS1738においてマージした復元データを検索データとして記憶する。
【0085】
(マスターデータ処理ノード実行モジュール)
図18は、マスターデータ処理ノードとして動作する場合(S1622)の処理手順を示すフローチャートである。
【0086】
まず、ステップS1810において、データ書込/検索要求ノードからデータ書込要求があったかを判定する。データ書込要求があればステップS1812に進んで、受信データを書き込んで保存する。次に、ステップS1814において、保存データの複製の分散データの送信先を決定するためにフィンガーテーブルを参照する。そして、フィンガーテーブルに基づいて決定された送信先へ分散データ及び使用したフィンガーテーブルを送信する。
【0087】
次に、ステップS1820において、データ書込/検索要求ノードからデータ検索要求があったかを判定する。データ検索要求があればステップS1822に進んで、ハッシュ値を検索キーとして要求データを検索する。前述の実施形態においては、次に、ステップS1824に進んで、検索したデータをデータ書込/検索ノードへ返信する。
【0088】
図18のステップS1830とS1832とは、オプションとしての処理である。上述の実施形態では、障害支援ノードに分散データの検索を要求するのはデータ書込/検索ノードであった。このステップS1830とS1832では、マスターデータ処理ノードが動作可能であるが検索エラーが発生した場合の処理として、ステップS1832において、マスターデータ処理ノードから障害支援ノードに分散データの検索を依頼する。このオプションによれば、データ書込/検索要求ノードの負荷や通信負荷の軽減につながる。
【0089】
(レプリカデータ処理ノード実行モジュール)
図19は、レプリカデータ処理ノードとして動作する場合(S1632)の処理手順を示すフローチャートである。
【0090】
まず、ステップS1910において、障害支援ノードから分散データの書込要求があったかを判定する。分散データ書込要求があればステップS1912に進んで、分散データを受信する。そして、ステップS1914において、分散データを記憶して保持する。
【0091】
次に、ステップS1920において、障害支援ノードから分散データの検索要求があったかを判定する。分散データ検索要求があればステップS1922に進んで、ハッシュ値を検索キーとして要求された分散データを検索する。ステップS1924においては、返信先の指定があるか否かが判断される。返信先の指定がなければステップS1926に進んで、検索した分散データを直接の検索指示元のマスターデータ処理ノードへ返信する。一方、返信先の指定があればステップS1928に進んで、検索した分散データを指定された返信元へ返信する。図8のように、データを要求しているデータ書込/検索要求ノードに直接、検索した分散データを返信する場合は、返信先としてデータ書込/検索要求ノードが指定される。
【0092】
[第3実施形態]
第2実施形態においては、マスターデータ処理ノードが使用するフィンガーテーブルは、自ノードが持っているフィンガーテーブルであった。しかしながら、データ検索を行なうデータ書込/検索要求ノードとしては、自ノードに都合の良い(出来るだけ近い:特に、分散データの返信先が直接である場合など)フィンガーテーブルを使用したい場合もあり得る。本実施形態においては、データ書込/検索要求ノードがデータ書込要求時にマスターデータ処理ノードが使用するフィンガーテーブルを送信メッセージで指定する。本実施形態によれば、マスターデータ処理ノードの置かれたシステム内の環境によらず、データ書込/検索要求ノードのシステム内の環境に対応した分散データの保持が可能になる。
【0093】
なお、第3実施形態の第2実施形態との相違点は、データ書込/検索要求ノードがデータ書込要求時にマスターデータ処理ノードに送信する送信メッセージのフォーマットである。従って、第3実施形態の他の構成及び動作は第2実施形態と同様であるので、説明は省略する。
【0094】
(データ書込/検索要求ノードからマスターデータ処理ノードへの送信メッセージ)
図20は、データ書込/検索要求ノードからマスターデータ処理ノードへの送信メッセージ2010の構成を示す図である。
【0095】
図20の送信メッセージ2011では、図15の送信メッセージ1511に比較して、フィンガーテーブル2012が追加されている。このフィンガーテーブル2012は、データ書込/検索要求ノードが分散データを分散してほしいノードを指定している。
【0096】
[第4実施形態]
第2実施形態においては、マスターデータ処理ノードの障害時には、図示したシステムでマスターデータ処理ノードの右回り(時計回り)で次のレプリカデータ処理ノードと、暗黙の了解があった。しかしながら、各ノードの負荷のバランスを考えると、データ書込/検索要求ノードが障害支援ノードを選択可能であるのが望ましい。本実施形態においては、データ書込/検索要求ノードが任意のレプリカ処理ノードを障害支援ノードとして選択できる。本実施形態によれば、各ノードの負荷のバランスをさらに平均化することができる。
【0097】
なお、第4実施形態の第2実施形態との違いは、データ書込/検索要求ノードが任意のレプリカ処理ノードを障害支援ノードとして選択できる仕組みであり、特に構成及び動作の変更は必要無い。従って、構成及び動作の説明は第2実施形態の説明を援用する。
【0098】
(保存データ障害時の分散データ検索)
図21は、保存データ障害時の分散データ検索2100を示す図である。
【0099】
図21の分散データ検索2100では、第2実施形態の図6の例や図8の例と、障害が発生したマスターデータ処理ノードの代行をする障害支援ノードが異なる。すなわち、図21においては(2)のように、データ書込/検索要求ノード210は、レプリカデータ処理ノード230−2を、データ検索を代行する障害支援ノードとして分散データの検索を要求する。その結果、レプリカデータ処理ノード230−2がフィンガーテーブルを使って分散ノード検索を指示し、返信された分散データをマージしてデータ書込/検索要求ノード210に送信する。
【0100】
なお、データ書込/検索要求ノード210による障害支援ノードの選択を、例えば、データ内容やデータ形式などにより選択する場合には、データ書込/検索要求ノード210が図11に類似したテーブルを設けて、障害支援ノードとすべきノードIDを記憶すればよい。
【0101】
[第5実施形態]
第2乃至第4実施形態では、分散データのマージをするのは、障害支援ノードまたはデータ書込/検索要求ノードであった。しかしながら、システム内のノードの負荷の均一化を考慮すると、データ書込/検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できるのが望ましい。本実施形態においては、データ書込/検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できる構成を有する。本実施形態によれば、さらに、システム内のノードの負荷を自在に制御可能になる。
【0102】
なお、第5実施形態の第2実施形態との違いは、データ書込/検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できる仕組みであり、特に構成及び動作の変更は必要無い。第2実施形態の図13に示す検索データ送信先情報を、検索データ送信先及び復元データ送信先の情報に変更するのみで実現可能である。従って、他の構成及び動作の説明は第2実施形態の説明を援用する。
【0103】
(保存データ障害時の分散データ検索)
図22は、保存データ障害時の分散データ検索2200を示す図である。
【0104】
図22の分散データ検索2200では、第2実施形態の図6の例や図8の例と異なり、障害が発生したマスターデータ処理ノードの代行をする障害支援ノードと、分散データをマージする分散データマージノードとが異なるノードである。すなわち、図21においては(4)のように、データ書込/検索要求ノード210は、レプリカデータ処理ノード230−1を、データ検索を代行する障害支援ノードとして選択し、一方、返信された分散データをマージするノードとしてはレプリカデータ処理ノード230−2を選択する。
【0105】
なお、かかる選択は、データ書込/検索要求ノード210で行なっても、マスターデータ処理ノードで行なってもよい。
【0106】
(検索データ送信先及び復元データ送信先の情報)
図23は、検索データ送信先及び復元データ送信先情報2345の構成を示す図である。この情報は、図13の検索データ送信先情報1045に復元データの送信先ノードID2303を追加したものである。
【0107】
図23においては、その一行目に、図22のように動作するために、障害支援ノードがレプリカデータ処理ノード230−1とした場合に、分散データの送信先がレプリカデータ処理ノード230−2であり、ここでマージされた復元データの送信先がデータ書込/検索要求ノード210と指定されている。
【0108】
なお、図23を図11のマスターデータ処理ノードテーブルと組み合わせれば、さらに、多様なノードの負荷の平均化も可能である。また、図23のデータを、システム内のノードが共有すれば、どの段階でどのノードが送信先を指定するかについても融通性が生まれる。
【0109】
[第6実施形態]
第2乃至第5実施形態は、1つのDHT型P2P方式のネットワークに注目して、その動作を説明した。しかし、複数のDHT型P2P方式のネットワークが上位のネットワークで接続され、その上位のネットワークを介して上位の情報処理システムが複数のDHT型P2P方式のネットワークを管理するようなシステムも可能である。本実施形態によれば、負荷を均一にしようとする各DHT型P2P方式のネットワークと、各DHT型P2P方式のネットワークをデータプール媒体と見なして、全体のデータ管理を一元的に行なうシステムが実現できる。
【0110】
《本実施形態に係る複数の情報処理システムが接続したシステムの構成》
図24は、本実施形態に係る複数の情報処理システムが接続したシステム2400の構成を示すブロック図である。
【0111】
図24において、200−1〜200−3は、それぞれが上記第2乃至第5実施形態で示した1つのDHT型P2P方式のネットワークである。この3つのDHT型P2P方式のネットワーク200−1〜200−3がネットワーク2420を介して、少なくとも1つのノード間で接続されている。ネットワーク2420には、さらに、上位の情報処理システム2410が接続されている。この上位の情報処理システム2410は、各DHT型P2P方式のネットワーク200−1〜200−3を1つのデータプール媒体(データ記憶媒体あるいはサーバ)と見なして制御する。
【0112】
[他の実施形態]
以上、本発明の実施形態について詳述したが、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステム又は装置も、本発明の範疇に含まれる。
【0113】
また、本発明は、複数の機器から構成されるシステムに適用されても良いし、単体の装置に適用されても良い。さらに、本発明は、実施形態の機能を実現する制御プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされる制御プログラム、あるいはその制御プログラムを格納した媒体、その制御プログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。
【0114】
[実施形態の他の表現]
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0115】
(付記1)
P2P方式のネットワークに接続された複数のノードを含み、データを複製して2重に保持する情報処理システムであって、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信手段と、
を有することを特徴とする情報処理システム。
(付記2)
前記第1ノードは、
前記第2ノードに障害が発生した場合に、前記複数の第3ノードの少なくとも1つに対して、前記複数の第3ノードに分散保持させた前記データの読出しを指示する指示手段を有することを特徴とする付記1に記載の情報処理システム。
(付記3)
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して返信するように依頼する依頼手段と、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第2ノードに保存した前記データを復元する復元手段と、
前記復元されたデータを前記第1ノードに送信する送信手段とを有することを特徴とする付記1又は2に記載の情報処理システム。
(付記4)
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して前記第1ノードに返信するように依頼する依頼手段と、
前記分散識別情報を前記第1ノードに通知する通知手段と、
自ノードに分散保持されたデータを前記第1ノードに送信する送信手段とを有し、
前記第1ノードは、前記分散識別情報に基づいて前記複数の第3ノードから返信されたデータをマージして、前記第2ノードに保存した前記データを復元する復元手段を有することを特徴とする付記1又は2に記載の情報処理システム。
(付記5)
前記第1ノードは、前記P2P方式のネットワークに接続された複数のノードから前記保存するデータに対応して前記第2ノードを選択する選択手段をさらに有することを特徴とする付記1乃至4のいずれか1項に記載の情報処理システム。
(付記6)
前記第2ノードは、前記分散識別情報にしたがって、前記P2P方式のネットワークに接続された複数のノードから前記データを分散保持させる前記複数の第3ノードを選択する選択手段をさらに有することを特徴とする付記1乃至5のいずれか1項に記載の情報処理システム。
(付記7)
前記分散識別情報はフィンガーテーブルであることを特徴とする付記1乃至6のいずれか1項に記載の情報処理システム。
(付記8)
前記分散保持されたデータの検索は、分散ハッシュテーブル(DHT)を用いて行なわれることを特徴とする付記1乃至7のいずれか1項に記載の情報処理システム。
(付記9)
複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信ステップとを含むことを特徴とする情報処理システムのバックアップ方法。
(付記10)
付記1乃至8の何れかに記載の情報処理システムにおける、前記第1ノード、前記第2ノード、及び前記第3ノードの少なくとも何れか一つのノードとして機能することを特徴とする情報処理装置。
(付記11)
他のノードに対してデータの書込及び検索を要求する場合に、前記第1ノードとして機能することを特徴とする付記10に記載の情報処理装置。
(付記12)
他のノードからの指示にしたがってデータの書込及び検索を行なう場合に、前記第2ノードとして機能することを特徴とする付記10又は11に記載の情報処理装置。
(付記13)
前記第2ノードに障害がある場合に、前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして機能することを特徴とする付記10乃至12の何れかに記載の情報処理装置。
(付記14)
前記第3ノードとして機能する場合に、前記第2ノードから通知された前記分散識別情報に基づいて、自ノードのデータと他の第3ノードから返信されたデータとをマージして、前記第2ノードに保存した前記データを復元することを特徴とする付記13に記載の情報処理装置。
(付記15)
前記第2ノードからデータの分散保持の指示があった場合に、データの分散保持を行なう前記第3ノードとして機能することを特徴とする付記10乃至14の何れかに記載の情報処理装置。
(付記16)
付記10乃至15の何れかに記載の情報処理装置の制御方法であって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする情報処理装置の制御方法。
(付記17)
付記10乃至15の何れかに記載の情報処理装置の制御プログラムであって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
【技術分野】
【0001】
本発明は、情報処理システムにおける情報分散によるデータバックアップの技術に関する。
【背景技術】
【0002】
上記技術分野において、特許文献1には、ネットワークに接続された複数のPOSの各メモリの内容を、他のPOSに圧縮して分散保持する技術が開示されている。特許文献1においては、自メモリの障害を他のPOSの分散保持された圧縮データにより復元する。また、非特許文献1には、P2P(Peer-to-peer)方式のシステムにおいて、フィンガーテーブルによりデータの分散保持を行なうことが記載されている。さらに、特許文献2には、P2P方式のシステムにおいて、分散ハッシュテーブル(DHT:Distributed Hash Table)により分散データを管理することが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−067232号公報
【特許文献2】特表2010−519630号公報
【非特許文献】
【0004】
【非特許文献1】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.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1には、メモリの障害が考慮されるのみで、コントローラの障害によりPOS全体が動作不能になった場合のデータ回復については示されていない。あくまで、他のPOSに対してデータを分散したPOS自身がその分散先から分散データを集める技術である。この特許文献1の技術に、非特許文献1のフィンガーテーブルや特許文献2のDHTを組み合わせたとしても、データを保存する装置全体が動作不能になった場合のデータ回復の技術に対するヒントは得られない。
【0006】
一方、従来のP2P方式のシステムにおいて、データを保存するノードが動作不能になった場合のデータ回復の技術では、障害のためシステムから外されたノードの直近に存在する一部の特定ノードに対してデータ移管の処理が行われていた。そのため、データ移管をするノードに多大な負荷がかかっていた。
【0007】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明に係るシステムは、
P2P方式のネットワークに接続された複数のノードを含み、データを複製して2重に保持する情報処理システムであって、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信手段と、
を有することを特徴とする。
【0009】
上記目的を達成するため、本発明に係る方法は、
複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信ステップとを含むことを特徴とする。
【0010】
上記目的を達成するため、本発明に係る装置は、
上記情報処理システムにおける、前記第1ノード、前記第2ノード、及び前記第3ノードの少なくとも何れか一つのノードとして機能することを特徴とする。
【0011】
上記目的を達成するため、本発明に係る他の方法は、上記情報処理装置の制御方法であって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする。
【0012】
上記目的を達成するため、本発明に係るプログラムは、
上記情報処理装置の制御プログラムであって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする。
【発明の効果】
【0013】
本発明によれば、P2P方式の情報処理システムにおいて、データを保存するノードが障害で動作不能となった場合であっても、データ回復をノードへの負荷を偏らせることなく実現することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の第1実施形態に係る情報処理システムの構成を示すブロック図である。
【図2】本発明の第2実施形態に係る情報処理システムの構成を示すブロック図である。
【図3】本発明の第2実施形態に係る情報処理システムにおける、保存データの書込を示す図である。
【図4】本発明の第2実施形態に係る情報処理システムにおける、保存データの書込の手順を示すシーケンス図である。
【図5】本発明の第2実施形態に係る情報処理システムにおける、保存データの正常検索を示す図である。
【図6】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の一例を示す図である。
【図7】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の一例の手順を示すシーケンス図である。
【図8】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の他例を示す図である。
【図9】本発明の第2実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索の他例の手順を示すシーケンス図である。
【図10】本発明の第2実施形態に係る各ノードとして動作する情報処理装置のハードウェア構成を示すブロック図である。
【図11】本発明の第2実施形態に係るマスターデータ処理ノードテーブルの構成を示す図である。
【図12】本発明の第2実施形態に係るフィンガーテーブル及びフィンガーテーブル格納部の構成を示す図である。
【図13】本発明の第2実施形態に係る検索データ送信先情報の構成を示す図である。
【図14】本発明の第2実施形態に係るハッシュテーブル及び保存データの構成を示す図である。
【図15】本発明の第2実施形態に係る各ノード間の送信メッセージの構成を示す図である。
【図16】本発明の第2実施形態に係る情報処理プログラムの処理手順を示すフローチャートである。
【図17】本発明の第2実施形態に係るデータ検索要求ノードとして動作する場合の処理手順を示すフローチャートである。
【図18】本発明の第2実施形態に係るマスターデータ処理ノードとして動作する場合の処理手順を示すフローチャートである。
【図19】本発明の第2実施形態に係るレプリカデータ処理ノードとして動作する場合の処理手順を示すフローチャートである。
【図20】本発明の第3実施形態に係るデータ検索要求ノードからマスターデータ処理ノードへの送信メッセージの構成を示す図である。
【図21】本発明の第4実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索を示す図である。
【図22】本発明の第5実施形態に係る情報処理システムにおける、保存データ障害時の分散データ検索を示す図である。
【図23】本発明の第5実施形態に係る検索データ送信先及び復元データ送信先情報の構成を示す図である。
【図24】本発明の第6実施形態に係る複数の情報処理システムが接続したシステムの構成を示すブロック図である。
【発明を実施するための形態】
【0015】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【0016】
[第1実施形態]
本発明の第1実施形態としての情報処理システム100について、図1を用いて説明する。情報処理システム100は、複数のノードがP2P方式のネットワークに接続され、保存データを複製して2重に保持するシステムである。
【0017】
図1に示すように、情報処理システム100は、第1ノード110と、第2ノード120と、第3ノード130と、を含む。第1ノード110は、データの書込及び検索を指示する。第2ノード120は、第1ノード110に書込を指示されたデータを保存し、第1ノード110の検索の指示にしたがってデータを読出す。第3ノード130は、第2ノード120に保存されたデータを複製して保持する。そして、第2ノード120は、保存部122と、送信部121とを有する。122保存部は、自ノードへ第1ノード110により書込を指示されたデータを保存する。送信部121は、保存したデータを分割して、複数の第3ノード130に対して送信して分散保持させると共に、保存したデータを分散保持させた複数の第3ノード130を識別可能な分散識別情報を複数の第3ノード130の少なくとも1つに送信する。
【0018】
本実施形態によれば、P2P方式の情報処理システムにおいて、データを保存するノードが障害で動作不能となった場合であっても、データ回復をノードへの負荷を偏らせることなく実現することができる。
【0019】
[第2実施形態]
本発明に係る第2実施形態においては、DHT(Distributed Hash Table:分散ハッシュテーブル)型P2P方式のネットワークにおける障害時の保存データ(以下、マスターデータとも言う)の回復について説明する。すなわち、分散して複数のノードに保持された分散データは、ハッシュテーブルに基づいて検索されて特定される。また、本実施形態においては、保存データを分散して保持するノードを分散識別情報であるフィンガーテーブル(Finger Table)に基づいて選定するように制御される。そして、分散データは、障害にあったノードを代行するノード、あるいは保存データを検索したノードによってマージされて、保存データが復元される。本実施形態によれば、(1)マスターデータのレプリカを分散書込みすることで、各ノードの負荷を分散できる。また、(2)マスターデータのレプリカを分散書込みするノードはマスターデータを保持するノードのフィンガーテーブル内のみであるため、書込み、検索で発生する不要なホップを防ぐことができる。また、(3)DHT型P2Pネットワーク内のノード追加・削除を分散処理できるため、これらの処理を効率良く実行することができる。すなわち、このバックアップデータを分散配置し、局所的に負荷がかかっていた問題を軽減させた。このため、再分散時に多量のデータを移管することなく、データ移管を可能にする。また、検索においても、ネットワークに流れるデータ量減少及び応答速度向上を目的として、ホップ数を削減させて検索できる。
【0020】
《本実施形態に係る情報処理システムの構成》
図2は、本実施形態に係る情報処理システム200の構成を示すブロック図である。
【0021】
図2においては、DHT型P2Pネットワークに各ノード210、220、230−1〜−3となる情報処理装置が存在する。各ノードは同一の機能を有しており、全てのノードがデータ書込/検索要求ノード210、マスターデータ処理ノード220(データ保存ノードとも称す)、レプリカデータ処理ノード230−1〜−3(分散保持ノードとも称す)の動作が可能である。たとえば、データ書込/検索要求ノード210になる条件としては、オペレータ等がDHT型P2Pネットワークの外部から検索要求を行った場合がある。ただ、オペレータ等がどのノードで検索するかは自由である。マスターデータとレプリカデータとについては、基本はマスターデータで運用し、マスターデータ処理ノード220が故障した場合には、レプリカデータを使用する流れとなる。マスターデータ処理ノード220については、データ検索の対象が存在するマスターデータを保持するノードがその役割となるため、検索するデータによっては、どのノードでも、マスターデータ処理ノード220になる可能性があり得る。
【0022】
以下、本実施形態の基本的な動作を説明する。
【0023】
図2のデータ書込/検索要求ノード210には、書込/検索をするデータ210aがある。データ書込/検索要求ノード210の書込要求により、データ210aはその内容などによって選択されたマスターデータ処理ノード220の保存部222に保存データ210bとして複製される。そして、データ書込/検索要求ノード210のデータ210aは削除される。
【0024】
マスターデータ処理ノード220は、保存データ210bをハッシュテーブル225内のハッシュ値に対応付ける。ハッシュテーブル225の詳細な例は特許文献2に説明があるので、特許文献2を参照されたい。そして、分散識別情報保持部のフィンガーテーブル224に従って、保存データ210bの分散保持先を設定し、保存データ210bを分散データ生成部223で分割する。分割数は分散保存先の数に対応していても、さらに分散保存数の半分にしたり重なり部分を設けたりして、復元能力を高めることもできる。なお、フィンガーテーブル224の詳細な例は非特許文献1に説明があるので、非特許文献1を参照されたい。送信部221からは、フィンガーテーブル224により特定される分散データ保持先のレプリカデータ処理ノード230−1〜−3に分散データ及び分散データのハッシュ値の保持が要請される。図2には、フィンガーテーブル224及び231が1つのように図示されているが、保存データの種別やデータ書込を指示したデータ書込/検索要求ノードなどによって異なる複数のフィンガーテーブルから選択されて使用されてよい。
【0025】
マスターデータ処理ノード220から分散保持が要請された各分散データ及びハッシュ値は、レプリカデータ処理ノード230−1〜−3のそれぞれ分散データ230a〜230c、及びハッシュテーブル232a〜232cに保持される。なお、図2では、データ書込/検索要求ノード210とマスターデータ処理ノード220以外のノードがレプリカデータ処理ノード230−1〜−3として図示されている。しかし、レプリカデータ処理ノード230−1〜−3はフィンガーテーブル224に従って選択されるものであり、図2はその特殊な例に過ぎない。
【0026】
また、本実施形態では、マスターデータ処理ノード220からレプリカデータ処理ノード230−1〜−3の少なくとも1つに、マスターデータ処理ノード220が分散保持先を決めるために使用したフィンガーテーブル224の複製が送信される。レプリカデータ処理ノード230−1〜−3の少なくとも1つは、フィンガーテーブル224の複製を保持している。従って、マスターデータ処理ノード220が障害を起こして動作不能となっても、データ書込/検索要求ノード210による保存データの検索をレプリカデータ処理ノード230−1〜−3の1つが代行することによって、分散データから保存データを復元することが可能となる。なお、マスターデータ処理ノードの障害時に、データ書込/検索要求ノードによる保存データの検索を代行するレプリカデータ処理ノードを、以下、他のレプリカデータ処理ノードと区別するため「障害支援ノード」とも呼ぶ。
【0027】
《本実施形態に係る情報処理システムの動作》
以下、図3〜図10を参照して、図2の情報処理システムにおける動作手順を具体的に説明する。なお、図2において、データ書込/検索要求ノード210として動作した情報処理装置は、図3〜図10においては、同じ情報処理装置がデータ書込要求ノード210として動作したりデータ検索要求ノードとして動作したりする。
【0028】
(保存データの書込)
図3は、保存データの書込300を示す図である。なお。以下明細書の(n)は図3、図5、図6及び図8の丸数字に対応する。
【0029】
データ検索要求ノード210のデータ書込要求に従って、マスターデータ処理ノード220は(1)及び(2)の処理を行う。すなわち、マスターデータ処理ノード220が全てのデータを自ノードに保存すると共に、それぞれのレプリカデータ処理ノード230−1〜−4にデータを分散配置する。データの分散配置にはマスターデータ処理ノード220のフィンガーテーブルを用いる。図3には、保存データが4つの部分に分割されて、4つのレプリカデータ処理ノード230−1〜−4にその1つ1つが分散配置される様子を示している。マスターデータ処理ノード220が分散データの分散配置に使用したフィンガーテーブルは分散配置するレプリカデータ処理ノード230−1〜−4に配置される。
【0030】
(保存データ書込のシーケンス)
図4は、図3のような保存データの書込の手順400を示すシーケンス図である。
【0031】
データ書込要求ノード210のデータ書込要求処理(S411)によるデータ書込要求を、マスターデータ処理ノード220は、データ受信処理(S421)により受信する。マスターデータ処理ノード220は、マスターデータの書込要求に対応して、マスターデータ書込処理(S422)によりDBに保存データとして書き込む。マスターデータ処理ノード220は、正常に書き込まれた場合、書込結果送信処理(S423)によりデータ書込要求ノード210に正常に書き込まれたことを通知する。なお、マスターデータ書込処理(S422)で正常に書き込めなかった場合、書込結果送信処理(S423)により正常に書き込めなかった旨のメッセージをデータ書込要求ノード210に通知する。
【0032】
データ書込要求ノード210は、書込結果受信処理(S413)において書込結果を受信すると、マスターデータ書込結果判定処理(S415)においてマスターデータ書込結果を判定する。マスターデータ書込完了処理(S417)においては、判定結果からマスターデータを正常に書込めた場合、データ書込要求ノード210が格納していたマスターデータ処理ノード220に書き込む内容を消去し、マスターデータ書込み処理を完了させる。また、正常に書き込めなかった場合には、マスターデータ書込完了処理(S417)において、正常に書込めなかった旨のメッセージを通知する。
【0033】
なお、どこに正常に書込めなかった旨のメッセージを通知するかはシステム設計による。例えば、データ書込要求ノード210自身で通知しても、データ書込要求ノード210に書込を指示した依頼元に通知してもよい。さらに、正常に書き込めなかった場合、データ書込み要求ノード210が保持するマスターデータ処理ノード220に書き込む内容を保持するか/消去するかもシステム設計による。さらに、データ書込み要求ノード210が保持するマスターデータ処理ノード220に書き込む内容を再度マスターデータ処理ノード220に書き込むように要求するかもシステム設計による。
【0034】
次に、マスターデータ処理ノード220は、フィンガーテーブル確認処理(S424)において、フィンガーテーブルを確認して、どのノードにレプリカを分散すれば良いのか決定する。分散先ノードの決定後、フィンガーテーブル確認処理(S424)からデータ分散処理(S425)に対して、どのノードにレプリカを分散すれば良いのかを通知する。マスターデータ処理ノード220は、データ分散処理(S425)において、フィンガーテーブル確認処理(S424)から通知されたノードに分散するように、保存したマスターデータを所定数(図3の例では4つ)に分散する。そして、各分散データのハッシュ値を算出して、分散データ及びハッシュ値を振り分ける。振り分けた分散データは、データ分散処理(S425)から分散データ送信処理(S426)に渡される。マスターデータ処理ノード220は、分散データ送信処理(S426)において、渡された分散データ及びハッシュ値をフィンガーテーブル上のノードに対して送信する。図3の例では、レプリカデータ処理ノード230−1〜−4の4つのノードに分散データ及びハッシュ値を送信する。なお、分散データの送信先は、フィンガーテーブルによって設定される。
【0035】
レプリカデータ処理ノード230−1〜−4は、データ受信処理(S431)において、送信された分散データ及びハッシュ値を受信する。以下、レプリカデータ処理ノード230−1〜−4の処理は同様なので、1つのレプリカデータ処理ノード230−1の処理について説明する。レプリカデータ処理ノード230−1は、データ書込処理及びフィンガーテーブル登録処理(S433)において、DBに分散データとハッシュ値を書込み、フィンガーテーブルを登録する。なお、フィンガーテーブルの登録は、システム設計に対応して、分散データの分散先の全てのレプリカデータ処理ノードに登録してもよいし、予め決められたレプリカデータ処理ノードへの送信でもよい。例えば、図3において、マスターデータ処理ノード220の時計回りの次のレプリカデータ処理ノード230−1が、マスターデータ処理ノード220の障害時にデータ検索の代行をする設計であれば、レプリカデータ処理ノード230−1に送信すればよい。しかしながら、どのレプリカデータ処理ノードでも障害時にデータ検索の代行ができるように設計すれば、全レプリカデータ処理ノード230−1〜−4に送信することになる。そして、書き込みが完了したことが、データ書込処理及びフィンガーテーブル登録処理(S433)からデータ書込完了通知処理(S435)に通知される。レプリカデータ処理ノード230−1のDBに分散データが書き込まれなかった場合には、書き込まれなかったことが、データ書込処理及びフィンガーテーブル登録処理(S433)からデータ書込完了通知処理(S435)に通知される。レプリカデータ処理ノード230−1は、データ書込完了通知処理(S435)によって、書込完了あるいは書込未了の通知を、マスターデータ処理ノード220に通知する。
【0036】
マスターデータ処理ノード220は、データ書込み完了通知受信処理(S427)において、レプリカデータ処理ノード230−1〜−4からの書込完了あるいは書込未了の通知を受信する。そして、書込完了あるいは書込未了の通知は、データ書込み完了通知受信処理(S427)から分散データ書込結果判定処理(S428)に通知される。マスターデータ処理ノード220は、分散データ書込結果判定処理(S428)において、分散データが全ての分散先に正常に書き込まれたか否かを判定する。マスターデータ処理ノード220は、判定結果から分散データを正常に書込めた場合には、分散データ書込完了処理(S429)において、マスターデータ処理ノード220が格納していた分散データを消去し、分散データのレプリカデータ処理ノード230−1〜−4への書込みを完了させる。
【0037】
一方、分散データが少なくとも1つのレプリカデータ処理ノードに対して正常に書き込めなかった場合には、正常に書込めなかった旨のメッセージを通知する。どこに通知するかはシステムの設計による。例えば、マスターデータ処理ノード220自身で通知を受けて、他のフィンガーテーブルによる再分散を試みてもよいし、書込を失敗したレプリカデータ処理ノードを他のレプリカデータ処理ノードで代行して再分散を試みてもよい。あるいは、データ書込要求ノード210に通知してもよいし、データ書込要求ノード210を介してデータ書込要求を行なったシステム外部の他のシステムや装置でもよい。さらに、レプリカデータ処理ノードに通知して、他のレプリカデータ処理ノードで分散データの書込が失敗したことを通知して、DBに書き込んだ分散データを削除するようにしてもよい。また、分散データが正常に書き込めなかった場合、マスターデータ処理ノード220が保存したマスターデータの保持を継続するか/消去するかも、システムの設計による。更に、マスターデータ処理ノード220が保存したマスターデータの分散データの保持を再度レプリカデータ処理ノードに要求するかも、システムの設計による。
【0038】
(保存データの正常検索)
次に、検索処理について説明する。
【0039】
図5は、一般的に行われている検索方法において、保存データの正常検索500を示す図である。
【0040】
マスターデータ処理ノード220に障害がなく正常検索を行なわれた場合は、図5の(1)−(2)の順序で、保存データの検索が完了する。なお、本実施形態において、保存データの検索はハッシュテーブルのハッシュ値との比較に基づいて行われる。
【0041】
(保存データ障害時の分散データ検索の一例)
図6は、保存データ障害時の分散データ検索の一例600を示す図である。図6の例では、データの検索中に障害が発生したマスターデータ処理ノードの検索処理を代行するレプリカデータ処理ノードが、自分に分散データを集めてデータ復元のためのマージ(merge:併合)を行なって、データ検索要求ノードに送信する。
【0042】
図6の例では、(1)のように、マスターデータ処理ノード220に障害が発生した場合、次のように処理する。まず、(2)のように、障害が発生したマスターデータ処理ノード220から図6において右回り(時計回り)に次のレプリカデータ処理ノード230−1に、データ検索要求ノード210から検索要求を行う。なお、障害が発生したマスターデータ処理ノード220の代行は、図6のように右回り(時計回り)の次のレプリカデータ処理ノード230−1に限定する必要はなく、システムの設計による。検索要求を受けたレプリカデータ処理ノード230−2は、故障したマスターデータ処理ノード220の代わり(3)のように検索処理を実行する。(3)の処理では、検索要求を受けた各レプリカデータ処理ノード230−2〜−4が検索要求元のレプリカデータ処理ノード230−1に検索結果を返す。自ノード以外のレプリカデータ処理ノード230−2〜−4から検索した分散データが返送されると、(4)のように、要求元のレプリカデータ処理ノード230−1は、自ノードに保持している分散データと他のレプリカデータ処理ノード230−2〜−4からの分散データとをマージする。そして、レプリカデータ処理ノード230−1は、マージして復元したマスターデータの複製をデータ検索要求ノード210に検索結果として送信する。このようにして、データ検索要求ノード210は保存したマスターデータを得ることができる。
【0043】
(保存データ障害時の分散データ検索のシーケンス)
図7は、保存データ障害時の分散データ検索の一例の手順700を示すシーケンス図である。
【0044】
データ検索要求ノード210のデータ検索要求処理(S711)によるデータ検索要求を、レプリカデータ処理ノード230−1は検索データ受信処理(S721)により受信する。レプリカデータ処理ノード230−1は、フィンガーテーブル確認処理(S722)において、図4のS432で登録した検索データに対応するフィンガーテーブルを見付ける。そして、フィンガーテーブル確認処理(S722)から検索する分散データ問い合わせ処理(S723)に対して見付けたフィンガーテーブルの情報を渡す。レプリカデータ処理ノード230−1は、検索する分散データ問い合わせ処理(S723)において、フィンガーテーブルの情報を基に検索要求を行うレプリカデータ処理ノードを特定する。図6の例では、レプリカデータ処理ノード230−2〜−4を特定する。そして、検索する分散データ問い合わせ処理(S723)から、特定したレプリカデータ処理ノード230−2〜−4の情報と検索する分散データを特定可能なハッシュ値とを、分散データ内容送信処理(S724)に渡す。ハッシュ値送信処理(S724)において各分散データを検索する検索キーとなるハッシュ値を送信することにより、特定されたレプリカデータ処理ノード230−2〜−4に対して分散データの検索要求を行う。なお、本例ではハッシュ値を分散データの検索として送信するが、他の検索キーを使うシステム設計であってもよい。ただし、検索キー割当の容易性や秘匿性からハッシュ値が望ましい。また、S724の括弧内の「分散データ返信先」は、返信先が検索要求元のレプリカデータ処理ノード230−1とする設計であれば必要ない。しかし、次の例で示すように、返信先を選択できる設計とするのであれば必要であり、本例では、レプリカデータ処理ノード230−1が返信元に指定される。
【0045】
検索要求を受けたレプリカデータ処理ノード230−2〜−4は、ハッシュ値受信処理(S731)において、分散データ検索要求として分散データのハッシュ値を受信する。なお、括弧内の「分散データの返信先」の役割については前述した。なお、レプリカデータ処理ノード230−2〜−4の処理は同様なので、以下、レプリカデータ処理ノード230−2を代表させて説明する。レプリカデータ処理ノード230−2は、要求を受けた検索を実施するため、ハッシュ値受信処理(S731)からデータ検索処理(S733)に検索内容を渡すよう制御する。データ検索処理(S733)において、ハッシュ値を基にデータ検索を行う。そして、検索された分散データ及び検索結果の情報等が、データ検索処理(S733)から検索データ及び検索結果取得処理(S735)に渡される。さらに、これらの結果が、検索データ及び検索結果取得処理(S735)から検索データ送信処理(S737)に渡され、検索データ送信処理(S737)は検索された分散データ及び検索結果の情報等をレプリカデータ処理ノード230−1に返信する。
【0046】
レプリカデータ処理ノード230−1は、検索データ及び検索結果受信処理(S727)において、各レプリカデータ処理ノード230−2〜−4の検索データ送信処理(S737)からの分散データ及び検索結果の情報等を受信する。受信した情報は、検索データ及び検索結果受信処理(S727)から検索データマージ処理(S728)に渡される。一方、レプリカデータ処理ノード230−1は、他のレプリカデータ処理ノード230−2〜−4への分散データの検索要請と並行して、データ検索処理(S725)以降の処理を検索する分散データ問い合わせ処理(S723)の実行完了後に実行する。すなわち、検索データ受信処理(S721)において受信した検索内容から、レプリカデータ処理ノード230−1自身に対する検索を実行する。この検索結果は、検索データ及び検索結果取得処理(S726)に渡され、他の分散データと共に検索データマージ処理(S728)に渡される。レプリカデータ処理ノード230−1は、検索データマージ処理(S728)において、検索データ及び検索結果取得処理(S726)で得られたレプリカデータ処理ノード230−1が保持した分散データと検索データ及び検索結果取得処理(S727)で得られたレプリカデータ処理ノード230−2〜−4の分散データとをマージする。そして、マージ結果のマスターデータの複製は、検索データ送信処理(S729)に渡される。レプリカデータ処理ノード230−1は、検索データ送信処理(S729)により、この結果をデータ検索要求ノード210に送信する。
【0047】
データ検索要求ノード210は、レプリカデータ処理ノード230−1が検索データ送信処理(S729)により送信した検索結果を、検索データ受信処理(S713)において受信する。そして、検索データ判定処理(S715)において、検索結果の検索データは自分が検索要求したデータであることを判定する。
【0048】
(保存データ障害時の分散データ検索の他例)
図8は、保存データ障害時の分散データ検索の他例800を示す図である。
【0049】
図8の他例800では、図6の例と分散データをマージするところが異なる。すなわち、図8においては(4)のように、データ検索を代行したレプリカデータ処理ノード230−1が、自ノードに保持されている分散データと、分散データの検索要求をしたレプリカデータ処理ノード230−2〜−4を示すフィンガーテーブルとを、データ検索要求ノード210に送信する。そして、(5)のように、それぞれのレプリカデータ処理ノード230−2〜−4が、検索した分散データをデータ検索要求ノード210に返信する。データ検索要求ノード210が、フィンガーテーブルを使って対応するレプリカデータ処理ノード230−2〜−4から受信した分散データをマージして、データ書込要求したデータを複製して分散した分散データから復元する。なお、レプリカデータ処理ノード230−2〜−4の検索した分散データの返信先は、図7の括弧内に記載した「分散データ返信先」を分散データの検索依頼時にレプリカデータ処理ノード230−1からレプリカデータ処理ノード230−2〜−4に送信することで実現する。本他例によれば、データの移動量が少ない(レプリカデータ処理ノード230−1を経由しない)ため効率的であることから、ファイアウォール等の問題がない場合には、図8の方法を用いるのが望ましい。
【0050】
(保存データ障害時の分散データ検索の他のシーケンス)
図9は、保存データ障害時の分散データ検索の他例の手順900を示す図である。
【0051】
図9の図7との相違は、フィンガーテーブルのレプリカデータ処理ノード230−1からデータ検索要求ノード210への送信と、検索した分散データのマージをデータ検索要求ノード210が行うことである。従って、以下、図7との相違点について説明し、図7と同様処理の手順には図7と同じ参照番号を付与している。
【0052】
最初の図7との相違点では、レプリカデータ処理ノード230−1は、ハッシュ値/分散データ返信先送信処理(S924)において、検索キーであるハッシュ値と共に、分散データ返信先を、レプリカデータ処理ノード230−2〜−4に送信する。本例では、データ検索要求ノード210を分散データ返信先に指定する。各レプリカデータ処理ノード230−1は、ハッシュ値/分散データ返信先受信処理(S931)において、検索キーであるハッシュ値と共に、分散データ返信先を受信する。
【0053】
次の図7との相違点では、レプリカデータ処理ノード230−1は、フィンガーテーブル送信処理(S927)において、フィンガーテーブル確認処理(S722)及び検索する分散データ問い合わせ処理(S723)で問い合わせ先を決定するために使用したフィンガーテーブルを、障害支援中にデータ検索要求ノード210に送信する。データ検索要求ノード210は、フィンガーテーブル受信処理(S917)において、レプリカデータ処理ノード230−1が送信したフィンガーテーブルを受信し、検索した分散データのマージのために使用する。すなわち、分散させた全ての分散データが返信されたかをこのフィンガーテーブルにより確認することになる。
【0054】
最後の図7との相違点では、レプリカデータ処理ノード230−1は、検索データ及び検索結果取得処理(S726)で取得した自ノードの分散データのみを直接、検索データ送信処理(S928)によりデータ検索要求ノード210に送信する。そして、データ検索要求ノード210は、検索データ受信処理(S713)において受信した全ての分散データを、検索データマージ処理(S919)においてマージして保存したデータを復元し、検索データ判定処理(S715)に渡す。以上の処理では、データ検索要求ノード210は、レプリカデータ処理ノード230−1から受信したフィンガーテーブルに記載されているレプリカデータ処理ノードからの分散データの返信を待ち、全ての分散データを受信した場合には検索成功とみなす。なお、レプリカデータ処理ノードのいずれかから分散データが送信されなかった場合のタイムアウトやその後の処理については、システムの設計により種々の設定が可能である。
【0055】
《各ノードとして動作する情報処理装置のハードウェア構成》
図10は、本実施形態に係る各ノードとして動作する情報処理装置1000のハードウェア構成を示すブロック図である。
【0056】
図10で、CPU1010は演算制御用のプロセッサであり、プログラムを実行することで図2の各機能構成部を実現する。ROM1020は、初期データ及びプログラムなどの固定データ及びプログラムを記憶する。通信制御部1030は、ネットワークを介して他のノードと通信する。あるいは、通信制御部1030は、本P2P方式のネットワークの外部にある他のネットワークや装置との通信をしてもよい。また、上記2つの機能をそれぞれ別個に有する複数の通信制御部で構成してもよい。通信は無線でも有線でもよい。
【0057】
RAM1040は、CPU1010が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM1040には、本実施形態の実現に必要なデータを記憶する領域が確保されている。領域は、大きく分けて、受信メッセージ1041用と、送信メッセージ1046用と、本例では対象としない情報処理データとを含む。
【0058】
受信メッセージ1041の内、1042は、書込/検索する受信データである。受信データには分散データも含まれる。1043は、受信データから算出されるハッシュ値である。1044は、例えば、データ書込/検索要求ノード210が障害支援ノードとなったレプリカデータ処理ノードから受信するフィンガーテーブルや、レプリカデータ処理ノードがマスターデータ処理ノード220から受信するフィンガーテーブルである。1045は、図8及び図9の場合における、分散データを送信する検索データ送信先である。
【0059】
送信メッセージ1046の内、1047は、書込/検索する送信データである。送信データには分散データも含まれる。1048は、送信データから算出されるハッシュ値である。1049は、例えば、障害支援ノードとなったレプリカデータ処理ノードからデータ書込/検索要求ノード210に送信するフィンガーテーブルや、マスターデータ処理ノード220からレプリカデータ処理ノードに送信するフィンガーテーブルである。
【0060】
なお、受信メッセージ1041及び送信メッセージ1046については、本実施形態に重要な一部のデータ要素を示したのみであり、他のデータ要素も随時に使用される(図15参照)。
【0061】
ストレージ1050は、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータ又はプログラムが記憶されている。1051は、データ書込/検索要求ノードがデータの書込/検索を行なう先を、そのデータの内容や形式に対応して設定するためのマスターデータ処理ノードテーブルである。1052は、予め保持する、あるいは他ノードから送信されたフィンガーテーブルを保持するフィンガーテーブル保持部である。1053は、保存あるいは保持したデータを検索するための検索キーとして、データに対応付けられて記憶するハッシュテーブルである。1054は、保存あるいは保持したデータを検索可能に蓄積する保存データDBであり、分散データも含まれる。ストレージ1050には、以下のプログラムが格納される。1055は、全体の処理を実行させる本例の書込/検索以外の処理も含む情報処理を行なう情報処理プログラムである(図16参照)。1056は、情報処理プログラム1055において、情報処理装置1000がデータ書込/検索要求ノードとして動作する場合に実行されるデータ書込/検索要求ノード実行モジュールである。1057は、情報処理プログラム1055において、情報処理装置1000がマスターデータ処理ノードとして動作する場合に実行されるマスターデータ処理ノード実行モジュールである。1058は、情報処理プログラム1055において、情報処理装置1000がレプリカデータ処理ノードとして動作する場合に実行されるレプリカデータ処理ノード実行モジュールである。
【0062】
なお、図10には、本実施形態に必須なデータやプログラムのみが示されており、OSなどの汎用のデータやプログラムは図示されていない。
【0063】
(マスターデータ処理ノードテーブル)
図11は、マスターデータ処理ノードテーブル1051の構成を示す図である。
【0064】
かかるマスターデータ処理ノードテーブル1051は、データ書込/検索要求ノードがデータファイルの内容や形式などから、マスターデータ処理ノードを決定するために使用する。図3〜図9に示した例では、マスターデータ処理ノード220は固定したノードのように示されていたが、実際には、データ書込/検索要求ノード210がデータファイルの内容や形式などから決定する。なぜなら、マスターデータのDBなどの作成に当たっては、同種あるいは同形式のデータを管理するのが効率的である。さらに、1つのノードをマスターデータ処理ノード専用にするのではなく、全てのノードがマスターデータを分散管理することで、ノードへの負荷を分散することができる。
【0065】
図11において、マスターデータ処理ノードを決める条件として、ファイル内容1101やファイル形式1102のそれぞれ又はその組合せに対応付けて、マスターデータ処理ノードとなるノードのノードIDが記憶されている。なお、図11においては、理解を容易にするため、ノードIDは図3〜図9に示した参照番号を援用した。
【0066】
(フィンガーテーブル及びフィンガーテーブル格納部)
図12は、フィンガーテーブル1044及びフィンガーテーブル格納部1052の構成を示す図である。
【0067】
図12のフィンガーテーブル1044は、分散データ書込元ノードID1211に対応して分散データ書込先ノードID1212のセットが記憶されている。図12においては、各ノードIDは図3〜図9の参照番号を援用している。なお、フィンガーテーブルについては、図12の構成に限定することはなく、分散データの書込元と書込先との関連が記述されていればよい。フィンガーテーブルの例については、非特許文献1を参照されたい。
【0068】
図12のフィンガーテーブル格納部1052は、上記構成のフィンガーテーブルのどれを分散データの分散書込に使用したかを、ファイル名に対応付けて記録する。各データのファイル名1221に対応付けて使用したフィンガーテーブル1222が記憶される。もし、ノードによって使用するフィンガーテーブルが固定であるなら、書込元ノードIDに対応付けてフィンガーテーブルを記憶することになる。
【0069】
(検索データの送信先)
図13は、検索データ送信先情報1045の構成を示す図である。
【0070】
検索データ送信先情報1045は、マスターデータ処理ノードに障害が発生した場合に代替して分散データを検索するレプリカデータ処理ノードからの検索要請に対して、各レプリカデータ処理ノードが分散データを何処に送信するかの送信先を記憶する。図13においては、書込/検索するデータのファイル名1301に対応付けて検索した分散データの送信先ノードID1302が記憶されている。なお、送信先ノードID1302は、図3〜図10の参照番号を援用した。図13においては、図6の場合(送信先ノードID1302はレプリカデータ処理ノード230−1)と、図7の場合(送信先ノードID1302はデータ書込/検索要求ノード210)との、送信先を示している。
【0071】
なお、図13は、ファイル名に対応付けて送信先を設定しているが、例えば、マスターデータ処理ノードがどれか、代替のレプリカデータ処理ノードがどれか、データ書込/検索要求ノードがどれか、などに対応付けてもよい。さらに、システムの設計に従った対応付けが可能である。
【0072】
(ハッシュテーブル及び保存データ)
図14は、ハッシュテーブル1053及び保存データ1054の構成を示す図である。
【0073】
図14のハッシュテーブル1053は、ハッシュ値の比較によりデータを検索し、ハッシュ値が一致したデータファイルを検索データとするための検索キーテーブルである。データファイルに対して別途にIDなどの検索キーを付すのではなく、データの内容から算出されたハッシュ値を検索キーとすることで、容易に検索キーを付すことができると共に、秘匿性が優れている。
【0074】
ハッシュテーブル1053は、ハッシュ値1411に対応付けられてファイル名が記憶されている。各ノードは、検索を要請されたデータファイルのハッシュ値により一致するハッシュ値のファイルを探し出し、保存データDBからそのファイルを読み出すことができる。ハッシュテーブルの詳細については、その一例が特許文献2に記載されているので、参照されたい。
【0075】
(各ノード間の送信メッセージ)
図15は、各ノード間の送信メッセージ1046の構成を示す図である。
【0076】
図15の送信メッセージ1510は、データ書込/検索要求ノードから送信される送信メッセージである。1511は、マスターデータ処理ノードへの書込要求の送信メッセージの構成を示している。ここで、括弧で示した「分散データ送信先」は、データ書込/検索要求ノードが主導して分散データ報告先を指定する場合に使用されるが、マスターデータ処理ノードが予め保持している場合や、データ内容やデータ形式から決定される場合は、使用されない。1512は、マスターデータ処理ノードや障害時にレプリカデータ処理ノードの1つである障害支援ノードに送信される検索要求の送信メッセージである。検索要求がいずれによるかに対応して、マスターデータ処理ノードへの正常な検索要求であるか/障害支援ノードへの障害支援の検索要求であるかを示すデータ以外は共通である。なお、括弧で示した「分散データ送信先」は、書込要求と同様である。
【0077】
図15の送信メッセージ1520は、マスターデータ処理ノードから送信される送信メッセージである。1521は、データ保存後にレプリカデータ処理ノードに送信される分散データ書込要求の送信メッセージである。なお、ここでは、フィンガーテーブルも分散データと共に送信される。
【0078】
図15の送信メッセージ1530は、レプリカデータ処理ノードの1つである障害支援ノーから送信される送信メッセージである。1531は、フィンガーテーブルにより確定した他のレプリカデータ処理ノードへの分散データ検索要求の送信メッセージである。なお、括弧で示した「分散データ送信先」は、図8のように分散データの送信先が要求元と異なる場合に使用される。分散データの送信先が要求元と同じ場合は、使用しなくてもよい。1532は、図8のように分散データの送信先が要求元と異なり、データ書込/検索要求ノードである場合のフィンガーテーブルの送信メッセージである。
【0079】
《各ノードとして動作する情報処理装置の処理手順》
図16は、情報処理プログラムの処理手順を示すフローチャートである。以下、図16〜図19に示すフローチャートは、図10のCPU1010が、RAM1040を使用しながら実行し、図2〜図9に図示された各機能構成部及びその処理を実現する。
【0080】
まず、ステップS1610において、自装置内部からあるいは外部装置からデータをシステム内に書き込む指示があったか/データを検索する指示があったかを判定する。データ書込またはデータ検索の指示があればステップS1612に進んで、情報処理装置1000はデータ書込/検索要求ノードとして動作する(図17参照)。次に、ステップS1620において、他のノードからデータを書き込む指示があったか/データを検索する指示があったかを判定する。データ書込またはデータ検索の指示があればステップS1622に進んで、情報処理装置1000はマスターデータ処理ノードとして動作する(図18参照)。次に、ステップS1630において、他のノードから分散データを書き込む指示があったか/分散データを検索する指示があったかを判定する。分散データ書込または分散データ検索の指示があればステップS1632に進んで、情報処理装置1000はレプリカデータ処理ノードとして動作する(図19参照)。
【0081】
(データ検索要求ノード実行モジュール)
図17は、データ検索要求ノードとして動作する場合(S1612)の処理手順を示すフローチャートである。
【0082】
まず、ステップS1710において、自装置内部からあるいは外部装置からデータをシステム内に書き込む指示があったかを判定する。データ書込の指示があればステップS1712に進んで、送信データを含む送信メッセージを予め決まったマスターデータ処理ノード、あるいは選択したマスターデータ処理ノードに送信する。なお、送信メッセージは図15の送信メッセージ1511のフォーマットを有する。次に、ステップS1714において、送信エラーであるか否かを判断する。送信エラーが無ければ処理を終了する。送信エラーが有ればステップS1716に進んで、エラーを報知する。なお、エラー報知は自装置から行なっても、あるいはデータ書込を指示した外部装置から行なってもよい。
【0083】
次に、ステップS1720において、自装置内部からあるいは外部装置からデータをシステム内から検索する指示があったかを判定する。データ検索の指示があればステップS1722に進んで、検索するデータを書き込んだマスターデータ処理ノードにデータ検索要求の送信メッセージを送信する。なお、送信メッセージは、図15の送信メッセージ1512のフォーマットを有する。次に、ステップS1724において、送信エラーがあったか否かを判断する。送信エラーが無ければ処理を終了する。送信エラーが有ればステップS1726に進んで、障害支援ノードに対してデータ検索要求の送信メッセージを送信する。なお、送信メッセージは、図15の送信メッセージ1512のフォーマットである。次に、ステップS1728において、障害支援ノードからフィンガーテーブルの送信があれば受信する。このステップS1728は図8の場合の処理であり、障害支援ノードからフィンガーテーブルの送信がなければ、スキップして処理を終了する。
【0084】
次に、ステップS1730において、検索したデータを受信したか否かを判定する。データの受信であればステップS1732において、マスターデータ処理ノードからの受信であるかを判断する。マスターデータ処理ノードからのデータ受信であれば、データの検索が正常に完了したと考えられるので、ステップS1738において検索データとして記憶する。一方、マスターデータ処理ノードからのデータでなければステップS1734に進んで、障害支援ノードからの受信であるかを判断する。障害支援ノードからのデータ受信であれば、分散データの検索とマージとが障害支援ノードで完了したと考えられるので、ステップS1738において検索データとして記憶する。一方、障害支援ノードからのデータでなければ、分散データの検索が指示された他のレプリカデータ処理ノードからのデータと判断する。従って、ステップS1736に進んで、フィンガーテーブルに基づいて全分散データが検索され送信されたのを待って、それをマージする。そして、ステップS1738においてマージした復元データを検索データとして記憶する。
【0085】
(マスターデータ処理ノード実行モジュール)
図18は、マスターデータ処理ノードとして動作する場合(S1622)の処理手順を示すフローチャートである。
【0086】
まず、ステップS1810において、データ書込/検索要求ノードからデータ書込要求があったかを判定する。データ書込要求があればステップS1812に進んで、受信データを書き込んで保存する。次に、ステップS1814において、保存データの複製の分散データの送信先を決定するためにフィンガーテーブルを参照する。そして、フィンガーテーブルに基づいて決定された送信先へ分散データ及び使用したフィンガーテーブルを送信する。
【0087】
次に、ステップS1820において、データ書込/検索要求ノードからデータ検索要求があったかを判定する。データ検索要求があればステップS1822に進んで、ハッシュ値を検索キーとして要求データを検索する。前述の実施形態においては、次に、ステップS1824に進んで、検索したデータをデータ書込/検索ノードへ返信する。
【0088】
図18のステップS1830とS1832とは、オプションとしての処理である。上述の実施形態では、障害支援ノードに分散データの検索を要求するのはデータ書込/検索ノードであった。このステップS1830とS1832では、マスターデータ処理ノードが動作可能であるが検索エラーが発生した場合の処理として、ステップS1832において、マスターデータ処理ノードから障害支援ノードに分散データの検索を依頼する。このオプションによれば、データ書込/検索要求ノードの負荷や通信負荷の軽減につながる。
【0089】
(レプリカデータ処理ノード実行モジュール)
図19は、レプリカデータ処理ノードとして動作する場合(S1632)の処理手順を示すフローチャートである。
【0090】
まず、ステップS1910において、障害支援ノードから分散データの書込要求があったかを判定する。分散データ書込要求があればステップS1912に進んで、分散データを受信する。そして、ステップS1914において、分散データを記憶して保持する。
【0091】
次に、ステップS1920において、障害支援ノードから分散データの検索要求があったかを判定する。分散データ検索要求があればステップS1922に進んで、ハッシュ値を検索キーとして要求された分散データを検索する。ステップS1924においては、返信先の指定があるか否かが判断される。返信先の指定がなければステップS1926に進んで、検索した分散データを直接の検索指示元のマスターデータ処理ノードへ返信する。一方、返信先の指定があればステップS1928に進んで、検索した分散データを指定された返信元へ返信する。図8のように、データを要求しているデータ書込/検索要求ノードに直接、検索した分散データを返信する場合は、返信先としてデータ書込/検索要求ノードが指定される。
【0092】
[第3実施形態]
第2実施形態においては、マスターデータ処理ノードが使用するフィンガーテーブルは、自ノードが持っているフィンガーテーブルであった。しかしながら、データ検索を行なうデータ書込/検索要求ノードとしては、自ノードに都合の良い(出来るだけ近い:特に、分散データの返信先が直接である場合など)フィンガーテーブルを使用したい場合もあり得る。本実施形態においては、データ書込/検索要求ノードがデータ書込要求時にマスターデータ処理ノードが使用するフィンガーテーブルを送信メッセージで指定する。本実施形態によれば、マスターデータ処理ノードの置かれたシステム内の環境によらず、データ書込/検索要求ノードのシステム内の環境に対応した分散データの保持が可能になる。
【0093】
なお、第3実施形態の第2実施形態との相違点は、データ書込/検索要求ノードがデータ書込要求時にマスターデータ処理ノードに送信する送信メッセージのフォーマットである。従って、第3実施形態の他の構成及び動作は第2実施形態と同様であるので、説明は省略する。
【0094】
(データ書込/検索要求ノードからマスターデータ処理ノードへの送信メッセージ)
図20は、データ書込/検索要求ノードからマスターデータ処理ノードへの送信メッセージ2010の構成を示す図である。
【0095】
図20の送信メッセージ2011では、図15の送信メッセージ1511に比較して、フィンガーテーブル2012が追加されている。このフィンガーテーブル2012は、データ書込/検索要求ノードが分散データを分散してほしいノードを指定している。
【0096】
[第4実施形態]
第2実施形態においては、マスターデータ処理ノードの障害時には、図示したシステムでマスターデータ処理ノードの右回り(時計回り)で次のレプリカデータ処理ノードと、暗黙の了解があった。しかしながら、各ノードの負荷のバランスを考えると、データ書込/検索要求ノードが障害支援ノードを選択可能であるのが望ましい。本実施形態においては、データ書込/検索要求ノードが任意のレプリカ処理ノードを障害支援ノードとして選択できる。本実施形態によれば、各ノードの負荷のバランスをさらに平均化することができる。
【0097】
なお、第4実施形態の第2実施形態との違いは、データ書込/検索要求ノードが任意のレプリカ処理ノードを障害支援ノードとして選択できる仕組みであり、特に構成及び動作の変更は必要無い。従って、構成及び動作の説明は第2実施形態の説明を援用する。
【0098】
(保存データ障害時の分散データ検索)
図21は、保存データ障害時の分散データ検索2100を示す図である。
【0099】
図21の分散データ検索2100では、第2実施形態の図6の例や図8の例と、障害が発生したマスターデータ処理ノードの代行をする障害支援ノードが異なる。すなわち、図21においては(2)のように、データ書込/検索要求ノード210は、レプリカデータ処理ノード230−2を、データ検索を代行する障害支援ノードとして分散データの検索を要求する。その結果、レプリカデータ処理ノード230−2がフィンガーテーブルを使って分散ノード検索を指示し、返信された分散データをマージしてデータ書込/検索要求ノード210に送信する。
【0100】
なお、データ書込/検索要求ノード210による障害支援ノードの選択を、例えば、データ内容やデータ形式などにより選択する場合には、データ書込/検索要求ノード210が図11に類似したテーブルを設けて、障害支援ノードとすべきノードIDを記憶すればよい。
【0101】
[第5実施形態]
第2乃至第4実施形態では、分散データのマージをするのは、障害支援ノードまたはデータ書込/検索要求ノードであった。しかしながら、システム内のノードの負荷の均一化を考慮すると、データ書込/検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できるのが望ましい。本実施形態においては、データ書込/検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できる構成を有する。本実施形態によれば、さらに、システム内のノードの負荷を自在に制御可能になる。
【0102】
なお、第5実施形態の第2実施形態との違いは、データ書込/検索要求ノードと、分散データの検索を指示する障害支援ノードと、分散データを受信してマージする分散データマージノードとが、独立に選択できる仕組みであり、特に構成及び動作の変更は必要無い。第2実施形態の図13に示す検索データ送信先情報を、検索データ送信先及び復元データ送信先の情報に変更するのみで実現可能である。従って、他の構成及び動作の説明は第2実施形態の説明を援用する。
【0103】
(保存データ障害時の分散データ検索)
図22は、保存データ障害時の分散データ検索2200を示す図である。
【0104】
図22の分散データ検索2200では、第2実施形態の図6の例や図8の例と異なり、障害が発生したマスターデータ処理ノードの代行をする障害支援ノードと、分散データをマージする分散データマージノードとが異なるノードである。すなわち、図21においては(4)のように、データ書込/検索要求ノード210は、レプリカデータ処理ノード230−1を、データ検索を代行する障害支援ノードとして選択し、一方、返信された分散データをマージするノードとしてはレプリカデータ処理ノード230−2を選択する。
【0105】
なお、かかる選択は、データ書込/検索要求ノード210で行なっても、マスターデータ処理ノードで行なってもよい。
【0106】
(検索データ送信先及び復元データ送信先の情報)
図23は、検索データ送信先及び復元データ送信先情報2345の構成を示す図である。この情報は、図13の検索データ送信先情報1045に復元データの送信先ノードID2303を追加したものである。
【0107】
図23においては、その一行目に、図22のように動作するために、障害支援ノードがレプリカデータ処理ノード230−1とした場合に、分散データの送信先がレプリカデータ処理ノード230−2であり、ここでマージされた復元データの送信先がデータ書込/検索要求ノード210と指定されている。
【0108】
なお、図23を図11のマスターデータ処理ノードテーブルと組み合わせれば、さらに、多様なノードの負荷の平均化も可能である。また、図23のデータを、システム内のノードが共有すれば、どの段階でどのノードが送信先を指定するかについても融通性が生まれる。
【0109】
[第6実施形態]
第2乃至第5実施形態は、1つのDHT型P2P方式のネットワークに注目して、その動作を説明した。しかし、複数のDHT型P2P方式のネットワークが上位のネットワークで接続され、その上位のネットワークを介して上位の情報処理システムが複数のDHT型P2P方式のネットワークを管理するようなシステムも可能である。本実施形態によれば、負荷を均一にしようとする各DHT型P2P方式のネットワークと、各DHT型P2P方式のネットワークをデータプール媒体と見なして、全体のデータ管理を一元的に行なうシステムが実現できる。
【0110】
《本実施形態に係る複数の情報処理システムが接続したシステムの構成》
図24は、本実施形態に係る複数の情報処理システムが接続したシステム2400の構成を示すブロック図である。
【0111】
図24において、200−1〜200−3は、それぞれが上記第2乃至第5実施形態で示した1つのDHT型P2P方式のネットワークである。この3つのDHT型P2P方式のネットワーク200−1〜200−3がネットワーク2420を介して、少なくとも1つのノード間で接続されている。ネットワーク2420には、さらに、上位の情報処理システム2410が接続されている。この上位の情報処理システム2410は、各DHT型P2P方式のネットワーク200−1〜200−3を1つのデータプール媒体(データ記憶媒体あるいはサーバ)と見なして制御する。
【0112】
[他の実施形態]
以上、本発明の実施形態について詳述したが、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステム又は装置も、本発明の範疇に含まれる。
【0113】
また、本発明は、複数の機器から構成されるシステムに適用されても良いし、単体の装置に適用されても良い。さらに、本発明は、実施形態の機能を実現する制御プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされる制御プログラム、あるいはその制御プログラムを格納した媒体、その制御プログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。
【0114】
[実施形態の他の表現]
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0115】
(付記1)
P2P方式のネットワークに接続された複数のノードを含み、データを複製して2重に保持する情報処理システムであって、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信手段と、
を有することを特徴とする情報処理システム。
(付記2)
前記第1ノードは、
前記第2ノードに障害が発生した場合に、前記複数の第3ノードの少なくとも1つに対して、前記複数の第3ノードに分散保持させた前記データの読出しを指示する指示手段を有することを特徴とする付記1に記載の情報処理システム。
(付記3)
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して返信するように依頼する依頼手段と、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第2ノードに保存した前記データを復元する復元手段と、
前記復元されたデータを前記第1ノードに送信する送信手段とを有することを特徴とする付記1又は2に記載の情報処理システム。
(付記4)
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して前記第1ノードに返信するように依頼する依頼手段と、
前記分散識別情報を前記第1ノードに通知する通知手段と、
自ノードに分散保持されたデータを前記第1ノードに送信する送信手段とを有し、
前記第1ノードは、前記分散識別情報に基づいて前記複数の第3ノードから返信されたデータをマージして、前記第2ノードに保存した前記データを復元する復元手段を有することを特徴とする付記1又は2に記載の情報処理システム。
(付記5)
前記第1ノードは、前記P2P方式のネットワークに接続された複数のノードから前記保存するデータに対応して前記第2ノードを選択する選択手段をさらに有することを特徴とする付記1乃至4のいずれか1項に記載の情報処理システム。
(付記6)
前記第2ノードは、前記分散識別情報にしたがって、前記P2P方式のネットワークに接続された複数のノードから前記データを分散保持させる前記複数の第3ノードを選択する選択手段をさらに有することを特徴とする付記1乃至5のいずれか1項に記載の情報処理システム。
(付記7)
前記分散識別情報はフィンガーテーブルであることを特徴とする付記1乃至6のいずれか1項に記載の情報処理システム。
(付記8)
前記分散保持されたデータの検索は、分散ハッシュテーブル(DHT)を用いて行なわれることを特徴とする付記1乃至7のいずれか1項に記載の情報処理システム。
(付記9)
複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信ステップとを含むことを特徴とする情報処理システムのバックアップ方法。
(付記10)
付記1乃至8の何れかに記載の情報処理システムにおける、前記第1ノード、前記第2ノード、及び前記第3ノードの少なくとも何れか一つのノードとして機能することを特徴とする情報処理装置。
(付記11)
他のノードに対してデータの書込及び検索を要求する場合に、前記第1ノードとして機能することを特徴とする付記10に記載の情報処理装置。
(付記12)
他のノードからの指示にしたがってデータの書込及び検索を行なう場合に、前記第2ノードとして機能することを特徴とする付記10又は11に記載の情報処理装置。
(付記13)
前記第2ノードに障害がある場合に、前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして機能することを特徴とする付記10乃至12の何れかに記載の情報処理装置。
(付記14)
前記第3ノードとして機能する場合に、前記第2ノードから通知された前記分散識別情報に基づいて、自ノードのデータと他の第3ノードから返信されたデータとをマージして、前記第2ノードに保存した前記データを復元することを特徴とする付記13に記載の情報処理装置。
(付記15)
前記第2ノードからデータの分散保持の指示があった場合に、データの分散保持を行なう前記第3ノードとして機能することを特徴とする付記10乃至14の何れかに記載の情報処理装置。
(付記16)
付記10乃至15の何れかに記載の情報処理装置の制御方法であって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする情報処理装置の制御方法。
(付記17)
付記10乃至15の何れかに記載の情報処理装置の制御プログラムであって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
【特許請求の範囲】
【請求項1】
P2P方式のネットワークに接続された複数のノードを含み、データを複製して2重に保持する情報処理システムであって、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信手段と、
を有することを特徴とする情報処理システム。
【請求項2】
前記第1ノードは、
前記第2ノードに障害が発生した場合に、前記複数の第3ノードの少なくとも1つに対して、前記複数の第3ノードに分散保持させた前記データの読出しを指示する指示手段を有することを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して返信するように依頼する依頼手段と、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第2ノードに保存した前記データを復元する復元手段と、
前記復元されたデータを前記第1ノードに送信する送信手段とを有することを特徴とする請求項1又は2に記載の情報処理システム。
【請求項4】
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して前記第1ノードに返信するように依頼する依頼手段と、
前記分散識別情報を前記第1ノードに通知する通知手段と、
自ノードに分散保持されたデータを前記第1ノードに送信する送信手段とを有し、
前記第1ノードは、前記分散識別情報に基づいて前記複数の第3ノードから返信されたデータをマージして、前記第2ノードに保存した前記データを復元する復元手段を有することを特徴とする請求項1又は2に記載の情報処理システム。
【請求項5】
前記第1ノードは、前記P2P方式のネットワークに接続された複数のノードから前記保存するデータに対応して前記第2ノードを選択する選択手段をさらに有することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理システム。
【請求項6】
前記第2ノードは、前記分散識別情報にしたがって、前記P2P方式のネットワークに接続された複数のノードから前記データを分散保持させる前記複数の第3ノードを選択する選択手段をさらに有することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理システム。
【請求項7】
複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信ステップとを含むことを特徴とする情報処理システムのバックアップ方法。
【請求項8】
請求項1乃至6の何れか1項に記載の情報処理システムにおける、前記第1ノード、前記第2ノード、及び前記第3ノードの少なくとも何れか一つのノードとして機能することを特徴とする情報処理装置。
【請求項9】
請求項8に記載の情報処理装置の制御方法であって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項10】
請求項8に記載の情報処理装置の制御プログラムであって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
【請求項1】
P2P方式のネットワークに接続された複数のノードを含み、データを複製して2重に保持する情報処理システムであって、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存手段と、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信手段と、
を有することを特徴とする情報処理システム。
【請求項2】
前記第1ノードは、
前記第2ノードに障害が発生した場合に、前記複数の第3ノードの少なくとも1つに対して、前記複数の第3ノードに分散保持させた前記データの読出しを指示する指示手段を有することを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して返信するように依頼する依頼手段と、
前記分散識別情報に基づいて自ノードのデータと返信されたデータとをマージして前記第2ノードに保存した前記データを復元する復元手段と、
前記復元されたデータを前記第1ノードに送信する送信手段とを有することを特徴とする請求項1又は2に記載の情報処理システム。
【請求項4】
前記複数の第3ノードの少なくとも1つは、
前記分散識別情報に基づいて、残りの前記複数の第3ノードに分散保持させたデータを検索して前記第1ノードに返信するように依頼する依頼手段と、
前記分散識別情報を前記第1ノードに通知する通知手段と、
自ノードに分散保持されたデータを前記第1ノードに送信する送信手段とを有し、
前記第1ノードは、前記分散識別情報に基づいて前記複数の第3ノードから返信されたデータをマージして、前記第2ノードに保存した前記データを復元する復元手段を有することを特徴とする請求項1又は2に記載の情報処理システム。
【請求項5】
前記第1ノードは、前記P2P方式のネットワークに接続された複数のノードから前記保存するデータに対応して前記第2ノードを選択する選択手段をさらに有することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理システム。
【請求項6】
前記第2ノードは、前記分散識別情報にしたがって、前記P2P方式のネットワークに接続された複数のノードから前記データを分散保持させる前記複数の第3ノードを選択する選択手段をさらに有することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理システム。
【請求項7】
複数のノードがP2P方式のネットワークに接続され、データを複製して2重に保持する情報処理システムのバックアップ方法であって、
前記情報処理システムが、
データの書込及び検索を指示する第1ノードと、
前記第1ノードに書込を指示されたデータを保存し、前記第1ノードの検索の指示にしたがって該データを読出す第2ノードと、
前記第2ノードに保存されたデータを複製して保持する第3ノードと、を含み、
前記第2ノードは、
自ノードへ前記第1ノードにより書込を指示されたデータを保存する保存ステップと、
前記保存したデータを分割して、複数の前記第3ノードに対して送信して分散保持させると共に、前記保存したデータを分散保持させた前記複数の第3ノードを識別可能な分散識別情報を前記複数の第3ノードの少なくとも1つに送信する送信ステップとを含むことを特徴とする情報処理システムのバックアップ方法。
【請求項8】
請求項1乃至6の何れか1項に記載の情報処理システムにおける、前記第1ノード、前記第2ノード、及び前記第3ノードの少なくとも何れか一つのノードとして機能することを特徴とする情報処理装置。
【請求項9】
請求項8に記載の情報処理装置の制御方法であって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項10】
請求項8に記載の情報処理装置の制御プログラムであって、
前記情報処理装置が前記第1ノードとして機能する場合に、データの書込及び検索を他のノードに指示し、データの検索中に前記データが保存された前記他のノードに障害がある場合に、さらに他のノードに検索を指示する指示ステップと、
前記情報処理装置が前記第1ノードとして機能する場合に、前記指示ステップにおける指示に応答して前記他のノード又は前記さらに他のノードで検索されたデータを、受信する受信ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、書込を指示されたデータを保存する共に、前記データを分散するノードを識別する分散識別情報にしたがって複数のノードに前記保存されたデータの複製を分割して分散保持させ、前記分散識別情報を他のノードに保持させるデータ保存ステップと、
前記情報処理装置が前記第2ノードとして機能する場合に、検索の指示にしたがって前記保存されたデータを読出す読出ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードの指示にしたがって、前記分散識別情報を保持する分散識別情報保持ステップと、
障害がある前記第2ノードの代わりに前記データの読出しを行なう前記第3ノードとして前記情報処理装置が機能する場合に、書込/検索要求ノードからの検索指示に応答して、前記分散識別情報に対応する複数のノードから保存されたデータの複製の一部を集めてマージし、保存したデータを復元するデータ復元ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、他のノードに保存されたデータの複製の一部を保持するデータ保持ステップと、
前記第2ノードからのデータの分散保持の指示に応じてデータの分散保持を行なう前記第3ノードとして前記情報処理装置が機能する場合に、前記データを保存する他のノードからの指示に応答して、前記データの複製の一部を検索して返信する検索ステップと、
をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2012−178015(P2012−178015A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−40115(P2011−40115)
【出願日】平成23年2月25日(2011.2.25)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願日】平成23年2月25日(2011.2.25)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]