(57)【要約】 【課題】データファイルの保存制御の際にかかる負荷を複数のノード装置に分散させたノード装置、処理プログラム、分散保存方法を提供することを課題とする。【解決手段】ネットワークを介して互いに通信可能な複数のノード装置間で送受信可能なデータファイルを、所定の複製数に対応した複製番号が割り当てられるレプリカとして複製し、複製された前記レプリカに対応するデータファイルを識別可能であり、前記データファイルに割り当てられるべき複数の識別情報について、前記複数の識別情報を前記複数のノード装置に分散保存させるために、前記所定の複製数の中の所定の複製番号における前記複数の識別情報の中の一部を記憶担当範囲として決定する第１決定手段と、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせて決定する手段と、決定された記憶担当範囲のレプリカを記憶手段に記憶させる記憶制御手段と、を備える。【選択図】図３
2011008711.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して互いに通信可能な複数のノード装置間で送受信可能なデータファイルを、所定の複製数に対応した複製番号が割り当てられるレプリカとして複製し、
複製された前記レプリカに対応するデータファイルを識別可能であり、前記データファイルに割り当てられるべき複数の識別情報について、
前記複数の識別情報を前記複数のノード装置に分散保存させるために、前記所定の複製数の中の所定の複製番号における前記複数の識別情報の中の一部を記憶担当範囲として決定する第１決定手段と、
前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせて決定する第２決定手段と、
前記第１決定手段と前記第２決定手段とにより決定された記憶担当範囲のレプリカを記憶手段に記憶させる記憶制御手段と、
を備えることを特徴とするノード装置。
【請求項２】
前記複数の識別情報の総数を取得する総数取得手段を備え、
前記第１決定手段は、前記所定の複製番号における記憶担当範囲が前記総数を前記複製数で割った値以下となるように決定し、
前記第２決定手段は、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせ、且つ、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲が、前記総数を各前記複製数で割った値以下となるように決定することを特徴とする請求項１に記載のノード装置。
【請求項３】
前記複数のノード装置の数を示すノード装置数を取得する装置数取得手段を備え、
前記第１決定手段は、前記所定の複製番号における記憶担当範囲が前記総数を前記複製数で割った値以下であり、且つ、前記総数と前記装置数とに基づいて、前記所定の複製番号における前記複数のノード装置ごとの記憶担当範囲が均等になるように決定し、
前記第２決定手段は、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲が、前記総数を前記複製数で割った値以下であり、且つ、前記総数と前記装置数とに基づいて、前記異なる複製番号ごとにおける前記複数のノード装置の記憶担当範囲が均等になるように決定することを特徴とする請求項２に記載のノード装置。
【請求項４】
前記分散保存システムから離脱する離脱ノード装置から当該離脱ノード装置の離脱情報を受信する離脱情報受信手段、又は、前記離脱情報を受信した他の前記ノード装置から前記離脱ノード装置の離脱メッセージを受信する離脱メッセージ受信手段と、
前記離脱情報受信手段を備える場合には前記離脱情報が受信されたときに、又は、前記離脱メッセージ受信手段を備える場合には前記離脱メッセージが受信されたときに、前記離脱情報または前記離脱メッセージに基づいてノード装置数を更新するノード装置数更新手段と、を備え、
前記第１決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記所定の複製番号における前記複数のノード装置ごとの記憶担当範囲が均等になるように再決定し、
前記第２決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記異なる複製番号ごとにおける前記複数のノード装置の記憶担当範囲が均等になるように再決定し、
前記記憶制御手段は、前記第１決定手段と前記第２決定手段により再決定された記憶担当範囲のレプリカを記憶手段に記憶させることを特徴とする請求項３に記載のノード装置。
【請求項５】
前記分散保存システムに新たに参加する新規ノード装置から、前記参加メッセージを受信する参加メッセージ受信手段と、
前記参加メッセージ受信手段により前記参加メッセージが受信されたとき、前記参加メッセージに基づいて前記ノード装置数を更新するノード装置数更新手段と、を備え、
前記第１決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記所定の複製番号における前記複数のノード装置ごとの記憶担当範囲が均等になるように再決定し、
前記第２決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記異なる複製番号ごとにおける前記複数のノード装置の記憶担当範囲が均等になるように再決定し、
前記記憶制御手段は、前記第１決定手段と前記第２決定手段により再決定された記憶担当範囲のレプリカを記憶手段に記憶させることを特徴とする請求項３または請求項４に記載のノード装置。
【請求項６】
ネットワークを介して互いに通信可能な複数のノード装置間で送受信可能なデータファイルを、所定の複製数に対応した複製番号が割り当てられるレプリカとして複製し、
複製された前記レプリカに対応するデータファイルを識別可能であり、前記データファイルに割り当てられるべき複数の識別情報について、
前記複数の識別情報を前記複数のノード装置に分散保存させるために、前記所定の複製数の中の所定の複製番号における前記複数の識別情報の中の一部を記憶担当範囲として決定する第１決定ステップと、
前記第１決定ステップにより決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせて決定する第２決定ステップと、
前記第１決定ステップと前記第２決定ステップとにより決定された記憶担当範囲のレプリカを記憶手段に記憶させる記憶制御ステップと、
をコンピュータに実行させるための処理プログラム。
【請求項７】
ネットワークを介して互いに通信可能な複数のノード装置間で送受信可能なデータファイルを、所定の複製数に対応した複製番号が割り当てられるレプリカとして複製し、
複製された前記レプリカに対応するデータファイルを識別可能であり、前記データファイルに割り当てられるべき複数の識別情報について、
前記ノード装置が、前記複数の識別情報を前記複数のノード装置に分散保存させるために、前記所定の複製数の中の所定の複製番号における前記複数の識別情報の中の一部を記憶担当範囲として決定する第１決定ステップと、
前記ノード装置が、前記第１決定ステップにより決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせて決定する第２決定ステップと、
前記ノード装置が、前記第１決定ステップと前記第２決定ステップとにより決定された記憶担当範囲のレプリカを記憶手段に記憶させる記憶制御ステップと、
を有することを特徴とする分散保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の通信システムの技術分野に関する。
【背景技術】
【０００２】
この種のピアツーピア型の通信システム（Ｐ２Ｐネットワーク）は、複数のデータファイルの複製データファイルを複数のノード装置に分散して保存（配置）させる。各データファイルは、映画及び音楽などの各種コンテンツのデータファイルである。各ノード装置間で上述のデータファイルを利用可能とした分散保存システムが知られている。これにより、対故障性やアクセスの分散性が高められている。このように分散保存されたレプリカの所在は、特許文献１に開示されるような分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用して効率良く検索可能になっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１９７４００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、このような分散保存システムは、一般的に、管理サーバを備える。管理サーバは、複数のデータファイルが保存されている複数のノード装置を示す情報を管理する。具体的には、管理サーバは、ノード装置の故障時には、データファイルがシステムから失われないようデータファイルを再度分散保存させる。また、管理サーバは、新たなノード装置がシステムに参加したときに、データファイルを再分散させる。
【０００５】
この場合、各ノード装置は、定期的に管理サーバへ各ノード装置が保存しているデータファイルを通知する。管理サーバが各ノード装置のデータファイルを把握することで、データファイルの保存制御を行なうことができる。
【０００６】
しかし、このような方法では、管理サーバに過大な処理負担を課すこととなる。分散保存システムにて提供されるデータファイルが増え、分散保存システムに参加するノード装置が増えるほど、管理サーバの処理負担は増大する。
【０００７】
本発明は、以上の問題等に鑑みてなされたものであり、上記データファイルの保存制御の際にかかる負荷を複数のノード装置に分散させたノード装置、処理プログラム、分散保存方法を提供することを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置間で送受信可能なデータファイルを、所定の複製数に対応した複製番号が割り当てられるレプリカとして複製し、複製された前記レプリカに対応するデータファイルを識別可能であり、前記データファイルに割り当てられるべき複数の識別情報について、前記複数の識別情報を前記複数のノード装置に分散保存させるために、前記所定の複製数の中の所定の複製番号における前記複数の識別情報の中の一部を記憶担当範囲として決定する第１決定手段と、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせて決定する第２決定手段と、前記第１決定手段と前記第２決定手段とにより決定された記憶担当範囲のレプリカを記憶手段に記憶させる記憶制御手段と、を備えることを特徴とするノード装置である。
【０００９】
上記課題を解決するために、請求項２に記載の発明は、前記複数の識別情報の総数を取得する総数取得手段を備え、前記第１決定手段は、前記所定の複製番号における記憶担当範囲が前記総数を前記複製数で割った値以下となるように決定し、前記第２決定手段は、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせ、且つ、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲が、前記総数を各前記複製数で割った値以下となるように決定することを特徴とする請求項１に記載のノード装置である。
【００１０】
上記課題を解決するために、請求項３に記載の発明は、前記複数のノード装置の数を示すノード装置数を取得する装置数取得手段を備え、前記第１決定手段は、前記所定の複製番号における記憶担当範囲が前記総数を前記複製数で割った値以下であり、且つ、前記総数と前記装置数とに基づいて、前記所定の複製番号における前記複数のノード装置ごとの記憶担当範囲が均等になるように決定し、前記第２決定手段は、前記第１決定手段により決定された複製番号とは異なる複製番号ごとの記憶担当範囲が、前記総数を前記複製数で割った値以下であり、且つ、前記総数と前記装置数とに基づいて、前記異なる複製番号ごとにおける前記複数のノード装置の記憶担当範囲が均等になるように決定することを特徴とする請求項２に記載のノード装置である。
【００１１】
上記課題を解決するために、請求項４に記載の発明は、前記分散保存システムから離脱する離脱ノード装置から当該離脱ノード装置の離脱情報を受信する離脱情報受信手段、又は、前記離脱情報を受信した他の前記ノード装置から前記離脱ノード装置の離脱メッセージを受信する離脱メッセージ受信手段と、前記離脱情報受信手段を備える場合には前記離脱情報が受信されたときに、又は、前記離脱メッセージ受信手段を備える場合には前記離脱メッセージが受信されたときに、前記離脱情報または前記離脱メッセージに基づいてノード装置数を更新するノード装置数更新手段と、を備え、前記第１決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記所定の複製番号における前記複数のノード装置ごとの記憶担当範囲が均等になるように再決定し、前記第２決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記異なる複製番号ごとにおける前記複数のノード装置の記憶担当範囲が均等になるように再決定し、前記記憶制御手段は、前記第１決定手段と前記第２決定手段により再決定された記憶担当範囲のレプリカを記憶手段に記憶させることを特徴とする請求項３に記載のノード装置である。
【００１２】
上記課題を解決するために、請求項５に記載の発明は、前記分散保存システムに新たに参加する新規ノード装置から、前記参加メッセージを受信する参加メッセージ受信手段と、前記参加メッセージ受信手段により前記参加メッセージが受信されたとき、前記参加メッセージに基づいて前記ノード装置数を更新するノード装置数更新手段と、を備え、前記第１決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記所定の複製番号における前記複数のノード装置ごとの記憶担当範囲が均等になるように再決定し、前記第２決定手段は、前記ノード装置数更新手段により更新されたノード装置数と前記総数とに基づいて、前記異なる複製番号ごとにおける前記複数のノード装置の記憶担当範囲が均等になるように再決定し、前記記憶制御手段は、前記第１決定手段と前記第２決定手段により再決定された記憶担当範囲のレプリカを記憶手段に記憶させることを特徴とする請求項３または請求項４に記載のノード装置である。
【００１３】
上記課題を解決するために、請求項６に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置間で送受信可能なデータファイルを、所定の複製数に対応した複製番号が割り当てられるレプリカとして複製し、複製された前記レプリカに対応するデータファイルを識別可能であり、前記データファイルに割り当てられるべき複数の識別情報について、前記複数の識別情報を前記複数のノード装置に分散保存させるために、前記所定の複製数の中の所定の複製番号における前記複数の識別情報の中の一部を記憶担当範囲として決定する第１決定ステップと、前記第１決定ステップにより決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせて決定する第２決定ステップと、前記第１決定ステップと前記第２決定ステップとにより決定された記憶担当範囲のレプリカを記憶手段に記憶させる記憶制御ステップと、をコンピュータに実行させるための処理プログラムである。
【００１４】
上記課題を解決するために、請求項７に記載の発明は、ネットワークを介して互いに通信可能な複数のノード装置間で送受信可能なデータファイルを、所定の複製数に対応した複製番号が割り当てられるレプリカとして複製し、複製された前記レプリカに対応するデータファイルを識別可能であり、前記データファイルに割り当てられるべき複数の識別情報について、前記ノード装置が、前記複数の識別情報を前記複数のノード装置に分散保存させるために、前記所定の複製数の中の所定の複製番号における前記複数の識別情報の中の一部を記憶担当範囲として決定する第１決定ステップと、前記ノード装置が、前記第１決定ステップにより決定された複製番号とは異なる複製番号ごとの記憶担当範囲を、少なくとも第１決定手段により決定された記憶担当範囲分各前記複製番号ごとで異ならせて決定する第２決定ステップと、前記ノード装置が、前記第１決定ステップと前記第２決定ステップとにより決定された記憶担当範囲のレプリカを記憶手段に記憶させる記憶制御ステップと、を有することを特徴とする分散保存方法である。
【発明の効果】
【００１５】
本発明によれば、各ノード装置が複数のレプリカを重複して記憶することができ、かつ、管理サーバを用いることなく、各ノード装置自身が記憶担当のレプリカの記憶制御を自律的に行なうことができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係る分散保存システムＳにおける各ノード装置の接続態様の一例を示す図である。
【図２】ＩＤ空間におけるノードＩＤとファイルＩＤの説明図である。
【図３】階層数が「２」の場合の各階層における各ノードＮｎの記憶担当範囲の説明図である。（Ａ）は、第１階層における各ノードＮｎの記憶担当範囲の説明図である。（Ｂ）は、第２階層における各ノードＮｎの記憶担当範囲の説明図である。
【図４】（Ａ）は、第１階層（図３（Ａ））における記憶担当範囲の説明図である。（Ｂ）は、第２階層（図３（Ｂ））における記憶担当範囲の説明図である。
【図５】新規ノードＮ５が分散保存システムＳに接続する様態を示す説明図である。
【図６】階層数が「３」の場合の各階層における各ノードＮｎの記憶担当範囲の説明図である。（Ａ）は、第１階層における各ノードＮｎの記憶担当範囲の説明図である。（Ｂ）は、第２階層における各ノードＮｎの記憶担当範囲の説明図である。（Ｃ）は、第３階層における各ノードＮｎの記憶担当範囲の説明図である。
【図７】ノードＮｎの概要構成例を示すブロック図である。
【図８】新規ノードＮｎが分散保存システムＳに接続する際の処理フローであり、（Ａ）は、新規ノードＮｎにおける制御部１１の処理であり、（Ｂ）は、既に分散保存システムＳに接続しているノードＮｎにおける制御部１１の処理である。
【図９】分散保存システムＳから離脱ノードが発生した際の各ノードＮｎの処理フローであり、（Ａ）は、離脱ノードから離脱する旨を示す離脱情報を受けたノードＮｎにおける制御部１１の処理であり、（Ｂ）は、離脱メッセージを受信したノードＮｎにおける制御部１１の処理である。
【図１０】変型例における第２階層の記憶担当範囲の決定方法の説明図であり、（Ａ）は、決定方法１、２、３の第１階層における各ノードＮｎの記憶担当範囲の説明図である。（Ｂ）は、決定方法１の場合の第２階層における各ノードＮｎの記憶担当範囲の説明図である。（Ｃ）は、決定方法２の場合の第２階層における各ノードＮｎの記憶担当範囲の説明図である。（Ｄ）は、決定方法３の場合の第２階層における各ノードＮｎの記憶担当範囲の説明図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態を図面に基づいて説明する。
【００１８】
１．分散保存システムの構成及び動作概要
始めに、図１等を参照して、本実施形態に係る分散保存システムの構成及び動作概要について説明する。
【００１９】
図１は、本実施形態に係る分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
【００２０】
図１の下部枠１０１内に示すように、分散保存システムＳは、複数のノード装置Ｎｎがインターネットを介して接続されることで構成される。また、図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４ａ,４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５ａ、５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、及び通信回線７等によって、ネットワーク８が構築されている。なお、通信回線７は、電話回線や光ケーブル等である。ネットワーク８は、インターネット等の現実世界のネットワークである。図１の例におけるネットワーク８には、データ（パケット）を転送するためのルータが、適宜挿入されているが図示を省略している。
【００２１】
このようなネットワーク８には、複数のノード装置Ｎｎ（ｎ＝１，２，３・・・の何れか）が接続されている。以下、ノード装置は、「ノード」という。また、各ノードＮｎには、固有の製造番号およびＩＰ（Internet Protocol）アドレスが割り当てられている。そして、本実施形態に係る分散保存システムＳは、これらのノードＮｎのうち、図１の上部枠１００内に示すように、何れか複数のノードＮｎの接続により形成されるピアツーピア方式のネットワークシステムとなっている。
【００２２】
なお、図１の上部枠１００内に示すネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク９である。オーバーレイネットワーク９は、論理的なネットワークであり、特定のアルゴリズム、例えば、ＤＨＴを利用したアルゴリズムにより実現される。
【００２３】
分散保存システムＳに接続している、言い換えれば、オーバーレイネットワーク９に接続している各ノードＮｎには、ノードＩＤが割り当てられている。ノードＩＤは、後述するノードＩＤの決定方法によって得られる固有の識別情報である。
【００２４】
また、各ノードＮｎは、夫々、ＤＨＴを用いたルーティングテーブルを保持している。このルーティングテーブルは、分散保存システムＳ上における各種メッセージの転送先を規定している。具体的には、ルーティングテーブルは、ＩＤ空間内で適度に離れたノードＮｎのノードＩＤ及びアドレス情報を含むノード情報を複数登録している。アドレス情報は、ＩＰアドレス及びポート番号等である。各ノードＮｎは、互いに通信しあうことにより、他のノードＮｎを経由して、或いは、管理サーバ等を経由して、互いのノード情報を知ることができるようになっている。
【００２５】
ところで、分散保存システムＳでは、内容の異なる様々なデータファイルの複製データであるレプリカが、所定のファイル形式で複数のノードＮｎに分散して保存（格納）されている。レプリカは、各ノードＮｎ間で利用可能になっている。例えば、ノードＮ５には、レプリカの一例として、タイトルがＸＸＸの映画のデータファイルのレプリカが保存されている。一方、ノードＮ３には、タイトルがＹＹＹの映画のデータファイルのレプリカが保存されている。
【００２６】
また、これらのレプリカには、夫々、ファイルＩＤやデータファイル名等の情報が付加されている。このファイルＩＤは、データファイル毎の固有の識別情報である。
【００２７】
ファイルＩＤは、ＩＤ空間において確率的に均等になるように生成され、各レプリカに割り当てられる。各データファイルのレプリカは、所定の複製数だけ生成される。なお、以下の説明において、複製数を重複数と言う場合がある。同じデータファイルのレプリカには、同じファイルＩＤが割り当てられる。ファイルＩＤは、例えば「データファイル名＋任意の数値」を、ＳＨＡ−１等のハッシュ関数によりハッシュ化されて生成される。また、データファイルを構成するデータ先頭数バイトが、ハッシュ化して生成されてもよい。また、或いは、システム管理者が、データファイル毎に一意のＩＤ値であって、ＩＤ空間において確率的に均等になるようなＩＤ値をランダムに付与しても良い。ファイルＩＤはノードＩＤと同一のＩＤ空間への配置定義されるように、ノードＩＤと同一ビット長とする。ビット長は、例えば１６０ｂｉｔ等とする。例えば、ファイルＩＤ及びノードＩＤは共に１６進数の４桁の数値で表わすこととする。このようなデータファイルのレプリカは、各ファイルＩＤに基づいて記憶担当として所定の規則に基づいて定められた記憶担当のノードＮｎに保存される。
【００２８】
本実施形態では、同じデータファイルのレプリカを複数のノードＮｎに重複させて記憶させるよう構成する。
【００２９】
１−１．ノードＩＤと記憶担当範囲の決定方法
各ノードＮｎのノードＩＤと記憶担当範囲の決定方法について説明する。
【００３０】
図２は、ＩＤ空間におけるノードＩＤとファイルＩＤとの説明図である。同図において、白丸（○）は、ノードＩＤを示し、黒丸（●）は、ファイルＩＤを示す。
【００３１】
図２は、ノードＮ１、ノードＮ２、ノードＮ３及びノードＮ４の４台のノードＮｎが分散保存システムＳに接続している場合の例である。
【００３２】
本実施形態では、各ノードＩＤ及びファイルＩＤは、４桁の１６進数（００００〜ｆｆｆｆ）のＩＤ値を構成するＩＤ空間に配置されることとする。また、ＩＤ空間の総数１００００（∵ｆｆｆｆ＋１）とする。
【００３３】
図２に示す例では、ＩＤ空間の総数１００００を各ノードＮ１〜Ｎ４で均等に区切ってレプリカの記憶担当範囲が定められている。また、各レプリカは、所定の規則に基づいて定められた記憶担当のノードＮｎに保存される。本実施形態では、ノードＩＤがファイルＩＤ以下であって、かつ、ファイルＩＤとノードＩＤとの差が最も小さいノードＩＤを有するノードＮｎに保存されることとする。
【００３４】
図２に示す例では、
ノードＮ１のノードＩＤは「００００」であり、ノードＮ１はＩＤ空間におけるＩＤ（００００〜３ｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。例えば、ファイルＩＤ「２ｆｆｆ」等のレプリカを記憶する。
【００３５】
ノードＮ２のノードＩＤは「４０００」であり、ノードＮ２はＩＤ空間におけるＩＤ（４０００〜７ｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。例えば、ファイルＩＤ「６５００」等のレプリカを記憶する。
【００３６】
ノードＮ３のノードＩＤは「８０００」であり、ノードＮ３はＩＤ空間におけるＩＤ（８０００〜ｂｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。例えば、ファイルＩＤ「９０００」等のレプリカを記憶する。
【００３７】
ノードＮ４のノードＩＤは「ｃ０００」であり、ノードＮ４はＩＤ空間におけるＩＤ（ｃ０００〜ｆｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。例えば、ファイルＩＤ「ｄ０００」等のレプリカを記憶する。
【００３８】
このように、各ノードＮ１〜Ｎ４が、夫々の記憶担当範囲のレプリカを記憶する。
【００３９】
更に、本実施形態では、複数のノードＮｎに同一のデータファイルのレプリカを重複して記憶させるよう、各ノードＮ１〜Ｎ４の記憶担当範囲を複数のＩＤ空間の階層にて定義する。階層数「ｋ」は、２以上の自然数であることを条件とする。また、各ノードＮｎの記憶担当範囲は、階層数分の１以下となることを条件とする。なお、第１階層、第２階層、・・・、第ｋ階層は、本発明における複製番号の一例である。
【００４０】
１−１−１．階層数が「２」の場合
図３は、階層数が「２」の場合の各階層における各ノードＮｎの記憶担当範囲の説明図である。
【００４１】
図３（Ａ）は、第１階層における各ノードＮｎの記憶担当範囲の説明図である。第１階層における各ノードＮｎのノードＩＤ及び記憶担当範囲は、図２と同様であるため説明を省略する。図３（Ｂ）は、第２階層における各ノードＮｎの記憶担当範囲の説明図である。各ノードＮｎには、第１階層とは異なるノードＩＤが付与されており、第１階層とは異なる記憶担当範囲が定められている。
【００４２】
図３（Ｂ）に示す例では、
ノードＮ１のノードＩＤは「８０００」であり、ノードＮ１はＩＤ空間におけるＩＤ（８０００〜ｂｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。
【００４３】
ノードＮ２のノードＩＤは「ｃ０００」であり、ノードＮ２はＩＤ空間におけるＩＤ（ｃ０００〜ｆｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。
【００４４】
ノードＮ３のノードＩＤは「００００」であり、ノードＮ３はＩＤ空間におけるＩＤ（００００〜３ｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。
【００４５】
ノードＮ４のノードＩＤは「４０００」であり、ノードＮ４はＩＤ空間におけるＩＤ（４０００〜７ｆｆｆ）エリアのファイルＩＤを有するレプリカを記憶する。
【００４６】
同図に示す例の場合、４台のノードＮｎでＩＤ空間を均等に割り振っているため、各ノードＮｎにおける記憶担当範囲は「１／４」であり、階層数は「２」である。従って、各ノードＮｎの記憶担当範囲は、階層数分の１以下でなければならないという条件を満たす（∵１／２≧１／４）。
【００４７】
第１階層及び第２階層における各ノードＮｎのノードＩＤは、計算により決定することができる。
【００４８】
第１階層の各ノードＮｎのノードＩＤは、各ノードＮｎ自身のノード番号と、ＩＤ空間の総数と、分散保存システムＳに接続しているノードＮｎの数と、を用いて以下の式（１）に従って決定することができる。なお、「分散保存システムＳに接続しているノードＮｎの数」は、本発明におけるノード装置数の一例であり、以下の説明において「接続ノード数」と言う。
第１階層のノードＩＤ＝[ノード番号−１]×[総数]／[接続ノード数]・・・式（１）
【００４９】
ノード番号は、分散保存システムＳに接続している各ノードＮｎに割り振られた番号である。ノード番号は、１以上接続ノード数以下の値で、かつ、各ノードＮｎで夫々異なるように割り振ればどのように割り振ってもよい。例えば、ノードＮ１のノード番号は「１」、ノードＮ２のノード番号は「２」、ノードＮ３のノード番号は「３」、ノードＮ４のノード番号は「４」である。分散保存システムＳに新たにノードＮｎが接続する場合には、新規ノードＮｎのノード番号を「５」とする。
【００５０】
第ｋ階層の各ノードＮｎのノードＩＤは、各ノードＮｎ自身の第１階層のノードＩＤと、ＩＤ空間の総数と、階層数を用いて以下の式（２）に従って決定することができる。なお、ｋは２以上の自然数である。
第ｋ階層のノードＩＤ＝[第１階層のノードＩＤ]＋（[総数]／[階層数]）×（ｋ−１）・・・式（２）
【００５１】
なお、ノードＩＤが、割り切れない値の場合もある。この場合、割り切れなかった値は切り上げられても、切り捨てられても良い。切り上げるか、切り捨てるかは、どちらかに統一して用いる必要がある。
【００５２】
図４（Ａ）は、第１階層（図３（Ａ））における記憶担当範囲の説明図である。各ノードＮｎのノード番号と、式（１）に従って決定された第１階層のノードＩＤと、ノードＩＤに従って定められた記憶担当範囲と、が夫々対応付けられている。
【００５３】
図４（Ｂ）は、第２階層（図３（Ｂ））における記憶担当範囲の説明図である。式（２）に従って決定された第２階層のノードＩＤと、ノードＩＤに従って定められた記憶担当範囲と、が夫々対応付けられている。
【００５４】
以上のように、各ノードＮｎは、各階層で夫々決定された記憶担当範囲のレプリカを記憶する。例えば、ＩＤ（００００〜３ｆｆｆ）エリアのファイルＩＤを有するレプリカの場合、第１階層ではノードＮ１に記憶され、第２階層ではノードＮ３に記憶される。言い換えれば、ＩＤ（００００〜３ｆｆｆ）エリアのファイルＩＤを有するレプリカは、ノードＮ１とノードＮ３に重複して記憶される。
【００５５】
このように、全てのレプリカが、各階層にて決定された記憶担当のノードＮｎに夫々記憶されるよう構成する。そして、分散保存システムＳに新たなノードＮｎが接続する場合や、分散保存システムＳからノードＮｎが離脱する場合には、各ノードＮｎが自律的に各ノードＮｎ自身のノードＩＤを再決定する。そして、各ノードＮｎの担当範囲が変更される。そのため、離脱ノードまたは新規に接続されたノードによって生じた記憶担当範囲の変更に迅速に対応することができる。なお、第１階層にて各ノードＮｎに割り当てられたノードＩＤを、各ノードＮｎの固有の識別情報とする。例えば、第１階層におけるノードＩＤを、ノードＮｎ間で各種メッセージを送受信する際のルーティングキーとして用いる。
【００５６】
図５は、新規ノードＮ５が分散保存システムＳに接続する様態を示す説明図である。
【００５７】
新規ノードＮｎが分散保存システムＳに接続する前の、接続ノード数に１を加算した数が、新規ノードＮｎのノード番号と決定される。同図に示す例の場合、新規ノードＮ５が分散保存システムＳに接続する前の、接続ノード数「４」に１を加算した数「５」が、新規ノードＮ５のノード番号と決定される。
【００５８】
先ず、新規ノードＮ５は、分散保存システムＳに接続している各ノードＮ１〜Ｎ４に、新規ノードＮ５自身のノード番号を含む参加メッセージを送信する。そして、新規ノードＮ５は、新規ノードＮ５の第１階層におけるノードＩＤと第２階層におけるノードＩＤを夫々計算する。なお、計算に必要な総数や階層数の情報は、新規ノードＮｎが既に接続している各ノードＮ１〜Ｎ４や管理サーバに問い合わせるか、或いは、カタログ情報に記述しておき、新規ノードＮｎがカタログ情報を参照して取得すればよい。
【００５９】
図５に示す例では、新規ノードＮ５の第１階層のノードＩＤは、上記式（１）に従って「ｃｃｃｃ」と決定され、第２階層のノードＩＤは、上記式（２）に従って「４ＣＣＣ」と決定される。
【００６０】
また、各ノードＮ１〜Ｎ４も、新規ノードＮ５が加わったことにより、接続ノード数「４」から「５」に変更になったため、各ノードＮ１〜Ｎ４は、上記式（１）及び式（２）に従って各ノードＮ１〜Ｎ４自身の各階層のノードＩＤを再決定する。図５に示す例では、ノードＮ１の第１階層のノードＩＤは「００００」、第２階層のノードＩＤは「８０００」である。ノードＮ２の第１階層のノードＩＤは「３３３３」、第２階層のノードＩＤは「Ｂ３３３」である。ノードＮ３の第１階層のノードＩＤは「６６６６」、第２階層のノードＩＤは「Ｅ６６６」である。ノードＮ４の第１階層のノードＩＤは「９９９９」、第２階層のノードＩＤは「１９９９」である。
【００６１】
そして、各ノードＮ１〜Ｎ５は、第１階層のノードＩＤに基づいて決定された第１階層の記憶担当範囲のレプリカと、第２階層のノードＩＤに基づいて決定された第２階層の記憶担当範囲のレプリカを夫々取得して、後述する自己の記憶部に記憶する。
【００６２】
そして、全ノードＮ１〜Ｎ５が記憶担当範囲のレプリカを記憶した後に、各ノードＮ１〜Ｎ５は、記憶部に記憶担当範囲外のデータファイルがあれば、記憶担当範囲外のデータファイルを記憶部から削除する。
【００６３】
なお、ノードＮｎが分散保存システムＳから離脱する場合には、離脱ノードＮｎが離脱ノードＮｎ自身のノード番号を含む離脱メッセージを各ノードＮｎに送信する。各ノードＮｎは離脱メッセージを受信すると、離脱メッセージに含まれる離脱ノードＮｎのノード番号に基づいて、各ノードＮｎ自身のノード番号を更新する。なお、離脱ノードＮｎのノード番号によってはノード番号を更新しない場合もある。ノード番号の更新については後に詳述する。
【００６４】
また、離脱ノードＮｎにより、接続ノード数が変更になったため、各ノードＮｎは、上記式（１）及び式（２）に従って各ノードＮｎ自身の各階層のノードＩＤを再決定する。そして、新たに決定された記憶担当範囲のレプリカを記憶する。
【００６５】
このように、新たなノードＮｎが分散保存システムＳに接続する場合や、ノードＮｎが分散保存システムＳから離脱する場合であっても、各ノードＮｎが自律的に各ノードＮｎ自身の各階層のノードＩＤを再決定し、各階層における記憶担当範囲を決定する。つまり、各ノードＮｎ自身が記憶担当のレプリカの記憶制御を行なう。
【００６６】
また、各ノードＮｎは、記憶担当範囲の変更により全ノードＮｎが新たに記憶担当範囲のレプリカを記憶した後に、記憶担当範囲外のレプリカを記憶部から削除するよう構成した。これにより、記憶担当範囲の変更が生じた際にも、分散保存システムＳ内で行われているレプリカのやり取りに影響を与えることなく、記憶担当のノードＮｎへデータファイルを確実に再配置させることができる。
【００６７】
１−１−２．その他の階層数の場合
これまで、階層数が「２」の場合の実施形態について説明してきたが、階層数が「３」以上であっても、上記式（１）及び式（２）に従って、各ノードＮｎの記憶担当範囲を決定できる。ここでは、階層数が「３」の場合の実施形態について説明する。
【００６８】
図６は、階層数が「３」の場合の各階層における各ノードＮｎの記憶担当範囲の説明図である。図６は、ノードＮ１〜Ｎ４の４台のノードＮｎが分散保存システムＳに接続している場合の例である。接続ノード数は「４」である。
【００６９】
同図に示す例の場合、４台のノードＮｎでＩＤ空間を均等に割り振っているため、各ノードＮｎにおける記憶担当範囲は「１／４」であり、階層数は「３」である。従って、各ノードＮｎの記憶担当範囲は、階層数分の１以下でなければならないという条件を満たす（∵１／３≧１／４）。
【００７０】
図６（Ａ）は、第１階層における各ノードＮｎの記憶担当範囲の説明図である。第１階層における各ノードＮｎのノードＩＤ及び記憶担当範囲は、図２と同様であるため説明を省略する。
【００７１】
図６（Ｂ）は、第２階層における各ノードＮｎの記憶担当範囲の説明図である。図６（Ｃ）は、第３階層における各ノードＮｎの記憶担当範囲の説明図である。上記式（２）に従って、各ノードＮ１〜Ｎ４の第２階層におけるノードＩＤと、第３階層におけるノードＩＤが決定される。なお、式（２）において、第２階層におけるノードＩＤを決定する場合には、ｋを「２」とし、第３階層におけるノードＩＤを決定する場合には、ｋを「３」とすればよい。
【００７２】
図６（Ｂ）及び図６（Ｃ）に示す例では、ノードＮ１の第２階層のノードＩＤは「５５５５」、第３階層のノードＩＤは「ａａａａ」である。ノードＮ２の第２階層のノードＩＤは「９５５５」、第３階層のノードＩＤは「ｅａａａ」である。ノードＮ３の第２階層のノードＩＤは「ｄ５５５」、第３階層のノードＩＤは「２ａａａ」である。ノードＮ４の第２階層のノードＩＤは「１５５５」、第３階層のノードＩＤは「６ａａａ」である。
【００７３】
そして、各ノードＮ１〜Ｎ４は、第１階層のノードＩＤに基づいて決定された記憶担当範囲のレプリカと、第２階層のノードＩＤに基づいて決定された記憶担当範囲のレプリカと、第３階層のノードＩＤに基づいて決定された記憶担当範囲のレプリカを夫々取得して記憶部に記憶する。例えば、ファイルＩＤ「３ｃｃｃ」のレプリカは、第１階層で定義された記憶担当のノードＮ１と、第２階層で定義された記憶担当のノードＮ４と、第３階層で定義された記憶担当のノードＮ３の３つのノードにそれぞれ記憶、保存されることになる。
【００７４】
全ての階層において、各ノードＮｎの記憶担当範囲は重複しないことが望ましい。複数の階層において、任意のノードＮｎの記憶担当範囲が一部でも重複した場合、そのノードＮｎが分散保存システムＳから離脱したとき、分散保存システムＳ上のレプリカの数が２以上減少してしまうからである。なお、任意の階層における任意のノードＮｎの記憶担当範囲が「総数／階層数」であれば、全ての階層の記憶担当範囲を合計すると総数と等しくなる{（総数／階層数）×階層数＝総数}。従って、ノードＮｎの各階層における記憶担当範囲を「総数／階層数」以下とすると、あるノード装置における各階層の記憶担当範囲の合計が、総数を超えることがない。上述の記憶担当範囲の合計が総数を超えると、記憶担当範囲が確実に重複するが、記憶担当範囲の合計が総数を超えないため、記憶担当範囲が確実に重複することを防ぐことができる。
【００７５】
１−２．レプリカの投入と取得
分散保存システムＳにて利用可能なデータファイルのレプリカは、管理サーバ、レプリカ投入サーバ、或いは、各ノードＮｎから、投入することができる。投入とは、分散保存システムＳ内で利用可能となるよう、新たなレプリカを分散保存システムＳに接続しているノードＮｎに保存させることである。管理サーバは、分散保存システムＳを管理する。レプリカ投入サーバは、レプリカの配信を管理する。ノードＮｎがレプリカを投入する場合には、上記管理サーバやレプリカ投入サーバ等からレプリカ投入の許可を得たノードＮｎのみがデータファイルを投入できるよう構成してもよい。以下、ノードＮｎがレプリカを投入する場合を例に説明する。
【００７６】
レプリカの投入の際には、先ず、ノードＮｎは、レプリカのファイルＩＤを決定する。ファイルＩＤは、上述したように、ノードＩＤと同一ビット長で、かつ、ＩＤ空間に確率的に均一に分散されるランダム値やハッシュ値等が用いられる。
【００７７】
そして、レプリカを投入するノードＮｎは、所定の規則に基づいて定められた記憶担当のノードＮｎにレプリカを送信する。レプリカを投入するノードＮｎが、分散保存システムＳに接続している各ノードＮｎのノード番号等に基づいて、投入するレプリカの各階層における記憶担当のノードＮｎを知ることができる。なお、各ノードＮｎのノード番号は、レプリカを投入するノードＮｎが、管理サーバに問い合わせるか、或いは、カタログ情報に記述しておき、レプリカを投入するノードＮｎが、カタログ情報を参照して取得すればよい。なお、レプリカを投入するノードＮｎが、分散保存システムＳの全ノードＮｎのアドレス情報を知らない場合があるが、特開２００６−１９７４００号公報等に記載のＤＨＴによるルーティングによりノードＩＤに基づいて各ノードＮｎを経由することにより、他のノードＮｎに問い合わせることができる。
【００７８】
このように、レプリカを投入するノードＮｎが、各階層におけるレプリカの記憶担当のノードＮｎに対して夫々レプリカを送信する。送信されたレプリカは、記憶担当の各ノードＮｎにより受信される。受信されたレプリカは、レプリカを受信した、レプリカの記憶担当である各ノードＮｎの後述する記憶部に記憶される。以上の動作により、レプリカ投入が完了する。
【００７９】
また、各ノードＮｎは、レプリカを他のノードＮｎから取得することができる。
【００８０】
レプリカを取得したいノードＮｎであるユーザーノードは、管理サーバやレプリカ投入サーバ等から各ノードＮｎに配布されたカタログ情報を参照する。そして、ユーザーノードは、カタログ情報の記述から、取得したいレプリカのファイルＩＤを取得する。なお、カタログ情報には、レプリカの属性情報と、各ノードＮｎのノード番号が記載されている。この属性情報としては、例えば、レプリカのファイルＩＤ、データファイルの評価値、レプリカの公開期間、データファイル名、ジャンル、アーティスト名、出演者、監督名等が挙げられる。
【００８１】
その後、ユーザーノードは、各ノードＮｎのノード番号等に基づいて、各ノードＮｎのノードＩＤを計算する。ノードＩＤは上述したように各階層で異なるものである。どの階層のノードＩＤを計算するかは、ユーザーノードが例えばランダムに階層を選択して決定すればよい。そして、所望のレプリカのファイルＩＤと、計算された各ノードＮｎのノードＩＤに基づいて、レプリカを記憶しているノードＮｎに対して、レプリカの送信要求を行なう。なお、ユーザーノードが、分散保存システムＳの全ノードＮｎのアドレス情報を知らない場合があるが、この場合も、特開２００６−１９７４００号公報等に記載のＤＨＴによるルーティングによりノードＩＤに基づいて各ノードＮｎを経由することにより、他のノードＮｎに問い合わせることができる。
【００８２】
なお、複数のレプリカを取得する場合には、ユーザーノードが複数の階層をランダムに選択して、選択された階層における記憶担当のノードＮｎのノードＩＤを夫々求め、複数のノードＮｎから分散してレプリカを取得するよう構成することが好ましい。多数のレプリカを取得する際におけるレプリカの取得に伴う負荷を、複数のノードＮｎで分散することができるからである。この場合には、各階層におけるノードＩＤを、夫々の階層における各ノードＮｎの固有の識別情報として用いる。そして、各階層におけるノードＩＤを、各種メッセージの送受信の際のルーティングキーとして用いる。
【００８３】
このように、各ノードＮｎは、レプリカを分散保存システムＳに投入し、或いは、取得を所望するレプリカを取得することができる。
【００８４】
２．ノードＮｎの構成及び機能
次に、図７を参照して、ノードＮｎの構成及び機能について説明する。
【００８５】
図７は、ノードＮｎの概要構成例を示すブロック図である。
【００８６】
各ノードＮｎは、制御部１１と、記憶部１２と、バッファメモリ１３と、デコーダ部１４と、映像処理部１５と、表示部１６と、音声処理部１７と、スピーカ１８と、通信部２０と、入力部２１とから構成される。制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４、通信部２０、及び入力部２１はバス２２を介して相互に接続されている。
【００８７】
制御部１１は、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データおよびプログラムを記憶するＲＯＭ等から構成される。制御部１１は、本実施形態のコンピュータとして機能する。記憶部１２は、レプリカ、各種データ及び各種プログラム等を記憶保存（格納）するハードディスク（ＨＤ）等から構成される。例えば、記憶部１２は、記憶担当となったレプリカ、ルーティングテーブルを記憶する。バッファメモリ１３は、受信されたレプリカ等を一時蓄積する。デコーダ部１４は、エンコードされたビデオデータ（映像情報）およびオーディオデータ（音声情報）等をデコード（データ伸張や復号化等）する。レプリカが映像や音声を含む場合に、デコーダ部１４は、レプリカに含まれるエンコードされたビデオデータおよびオーディオデータ等をデコードする。映像処理部１５は、デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する。表示部１６は、映像処理部１５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等である。音声処理部１７は、上記デコードされたオーディオデータをアナログオーディオ信号にＤ（Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する。スピーカ１８は、音声処理部１７から出力されたオーディオ信号を音波として出力する通信部２０は、ネットワーク８を通じて他のノードＮｎ等間の情報の通信制御を行なう。入力部２１は、ユーザーからの指示を受け付け、指示に応じた指示信号を制御部１１へ通信する。入力部２１は、例えば、キーボード、マウス、或いは、操作パネル等である。なお、ノードＮｎとしては、パーソナルコンピュータ、ＳＴＢ（Set Top Box）、通信カラオケ装置、或いは、ＴＶ受信機等が適用可能である。
【００８８】
記憶部１２には、ノードＮｎ自身のアドレス情報が記憶されている。
【００８９】
また、ノードＮｎが、分散保存システムＳに接続した後は、記憶部１２には、ノードＮｎ自身のノード番号の情報、接続ノード数の情報、階層数の情報が記憶される。
【００９０】
また、記憶部１２には、ノードＮｎ自身のノードＩＤ及び記憶担当範囲のファイルＩＤの情報も記憶されている。
【００９１】
更に、記憶部１２には、カタログ情報及び管理テーブルが記憶されている。管理テーブルには、記憶部１２に記憶しているレプリカに関する情報（タイトル、ファイルＩＤ、公開期間等）が登録されている。
【００９２】
このような構成において、制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラムを読み出して実行することにより、全体を統括制御する。
【００９３】
また、制御部１１は、本発明の処理プログラムを実行することにより、本発明における第１決定手段、第２決定手段、記憶制御手段、総数取得手段、装置数取得手段、離脱情報受信手段、離脱メッセージ受信手段、ノード装置数更新手段、参加メッセージ受信手段等として機能する。なお、上記処理プログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしてもよいし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしても良い。
【００９４】
３．ノードＮｎの処理
ノードＮｎにおける処理を、図を参照して、詳しく説明する。
【００９５】
３−１．新規ノードＮｎ接続時の各ノードＮｎの処理フロー
図８は、新規ノードＮｎが分散保存システムＳに接続する際の処理フローである。図８（Ａ）は、新規ノードＮｎにおける制御部１１の処理である。図８（Ｂ）は、既に分散保存システムＳに接続しているノードＮｎにおける制御部１１の処理である。
【００９６】
図８（Ａ）を参照して新規ノードＮｎの処理から説明する。
【００９７】
先ず、新規ノードＮｎの制御部１１は、新規ノードＮｎ自身のノード番号を設定する（ステップＳ１０）。具体的には、新規ノードＮｎが分散保存システムＳに接続する前の、ノードＮｎの数に１を加算した数が、新規ノードＮｎ自身のノード番号として設定される。設定されたノード番号の情報は記憶部１２に記憶される。なお、分散保存システムＳに接続しているノードＮｎの数の情報は、新規ノードＮｎが既に接続しているノードＮｎや管理サーバ等に問い合わせる。或いは、カタログ情報に記述しておき、新規ノードＮｎがカタログ情報を参照して取得すればよい。
【００９８】
次いで、制御部１１は、参加メッセージ送信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎに参加メッセージを送信する（ステップＳ１１）。制御部１１は、参加メッセージに、新規ノードＮｎ自身のノード番号の情報を含ませる。
【００９９】
次に、制御部１１は、第１決定手段及び第２決定手段として機能し、新規ノードＮｎ自身の各階層における記憶担当範囲を決定する。先ず、制御部１１は、各階層における新規ノードＮｎ自身のノードＩＤを式（１）式（２）に従って計算し決定する（ステップＳ１２）。制御部１１は、決定結果を記憶部１２に記憶する。
【０１００】
そして、制御部１１は、決定された各階層における新規ノードＮｎ自身のノードＩＤに基づいて、各階層における記憶担当範囲を決定する。そして、制御部１１は、記憶制御手段として機能し、記憶担当範囲のファイルＩＤを有するレプリカを取得して記憶部１２に記憶する（ステップＳ１３）。なお、記憶担当範囲のレプリカのうち、既に記憶部１２に記憶しているレプリカが有る場合には、記憶していないレプリカのみを他のノードＮｎから取得して記憶部１２に記憶する。重複記憶を防ぐためである。
【０１０１】
そして、記憶担当範囲となった全てのレプリカを記憶部１２に記憶させると、制御部１１は、記憶担当となったレプリカの取得（記憶）が完了したことを示す取得完了メッセージを分散保存システムＳに接続している他の全ノードＮｎに、送信する（ステップＳ１４）。例えば、ステップＳ１４で送信された取得完了メッセージは、後述するステップＳ２３の処理にて受信されることとなる。
【０１０２】
次に、制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信する（ステップＳ１５）。このとき、制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信するまで待機する。
なお、ここで受信する取得完了メッセージは、後述する他のノードＮｎが実行する図８（Ｂ）のステップＳ２２にて送信された取得完了メッセージである。制御部は、例えば、接続ノード数から自己のノードＮｎ分「１」を引いた数（接続ノード数−１）だけ取得完了メッセージを受信したときに、他の全ノードＮｎから取得完了メッセージを受信したとして判定すればよい。
【０１０３】
そして、制御部１１は、全ノードＮｎから取得完了メッセージを受信すると、ノードＮｎ自身の記憶担当範囲外のレプリカが記憶部１２に記憶されている場合には、その記憶担当範囲外のレプリカを記憶部１２から削除して（ステップＳ１６）、処理を終了する。
【０１０４】
続いて、図８（Ｂ）を参照して、分散保存システムＳに接続しているノードＮｎにおける制御部１１の処理を説明する。分散保存システムＳに既に接続しているノードＮｎにおける制御部１１の処理は、制御部１１が参加メッセージ受信手段として機能し、新規ノードＮｎから参加メッセージを受信したことにより開始される。
【０１０５】
先ず、制御部１１は、ノード装置数更新手段として機能し、接続ノード数の情報を更新する。また、制御部１１は、各階層におけるノードＮｎ自身のノードＩＤを上記式（１）及び式（２）に従って再決定する（ステップＳ２０）。制御部１１は、更新後の接続ノード数及び再決定したノードＩＤを記憶部１２に記憶する。
【０１０６】
次に、制御部１１は、第１決定手段及び第２決定手段として機能し、再決定されたノードＩＤに基づき新規ノードＮｎ自身の各階層における記憶担当範囲を決定する。そして、制御部１１は、記憶制御手段として機能し、記憶担当範囲のファイルＩＤを有するレプリカを他のノードＮｎから取得して記憶部１２に記憶する（ステップＳ２１）。なお、記憶担当範囲のレプリカのうち、既に記憶部１２に記憶しているレプリカが有る場合には、重複記憶を防ぐため、制御部１１は、記憶していないレプリカのみを他のノードＮｎから取得して記憶部１２に記憶する。
【０１０７】
そして、制御部１１は、記憶担当範囲となった全てのレプリカを記憶部１２に記憶させると、取得完了メッセージを分散保存システムＳに接続している他の全ノードＮｎに送信する（ステップＳ２２）。このとき送信された取得完了メッセージは、新規ノードＮｎが上記ステップＳ１５にて受信することとなる。なお、ステップＳ２２で送信された取得完了メッセージは、他のノードＮｎがそれぞれ実行する図８（Ｂ）の処理フローのステップＳ２３においても受信される。
【０１０８】
次に、制御部１１は、取得完了メッセージ受信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信する（ステップＳ２３）。このとき、制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信するまで待機する。なお、ここで受信する取得完了メッセージは、他のノードＮｎが実行する図８（Ａ）のステップＳ１４又は図８（Ｂ）のステップＳ２２にて送信された取得完了メッセージである。他の全ノードＮｎから取得完了メッセージを受信したか否かの判定は、上記ステップＳ１５にて説明した方法と同様の方法等で判定すればよい。
【０１０９】
そして、制御部１１は、全ノードＮｎから取得完了メッセージを受信すると、担当範囲の変更により、記憶担当範囲外となったレプリカを記憶部１２から削除して（ステップＳ２５）、処理を終了する。
【０１１０】
なお、上記ステップＳ１３及びステップＳ２１にて、他のノードＮｎから担当するレプリカを取得できない場合には、制御部１１は、レプリカの配信を管理するレプリカ投入サーバ等からレプリカを取得してもよい。
【０１１１】
上記ステップＳ１０にて、分散保存システムＳに接続しているノードＮｎの数に「１」を加算した数を、新規ノードＮｎのノード番号としたが、新規ノードＮｎのノード番号を「１」としてもよい。新規ノードＮｎのノード番号を「１」とした場合には、分散保存システムＳに接続している各ノードＮｎは、各ノードＮｎ自身のノード番号を「１」づつ繰り上げてノード番号を更新するよう構成する。この場合、新規ノードＮｎは、設定したノードＮｎ自身のノード番号を他のノードＮｎに通知し、各ノードＮｎは１以上、接続ノード数以下の範囲で他のノードＮｎと重複しないよう各ノード番号を設定する。そして、各ノードＮｎは設定後のノード番号を他のノードＮｎに送信すればよい。
【０１１２】
３−２．ノード離脱時の処理フロー
図９は、分散保存システムＳから離脱ノードが発生した際の各ノードＮｎの処理フローである。図９（Ａ）は、離脱ノードから離脱する旨を示す離脱情報を受信したノードＮｎにおける制御部１１の処理である。図９（Ｂ）は、離脱メッセージを受信したノードＮｎにおける制御部１１の処理である。
【０１１３】
図９（Ａ）を参照して離脱ノードから離脱する旨を示す離脱情報を受けたノードＮｎの処理から説明する。
【０１１４】
先ず、制御部１１は、離脱情報受信手段として離脱ノードから離脱情報を受信すると、離脱メッセージ送信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎに離脱メッセージを送信する（ステップＳ３０）。離脱メッセージは、離脱情報を受信したことを知らせるためのメッセージであり、制御部１１は、離脱メッセージに、離脱ノードのノード番号の情報を含ませる。なお、離脱ノードのノード番号は、離脱情報に含まれているものとする。
【０１１５】
次に、制御部１１は、判定手段として機能し、記憶部１２に記憶しているノードＮｎ自身のノード番号が、離脱ノードのノード番号よりも大きいか否かを判定する（ステップＳ３１）。判定の結果、記憶部１２に記憶しているノードＮｎ自身のノード番号が、離脱ノードのノード番号より小さい場合（ステップＳ３１：Ｎｏ）には、ステップＳ３３に移行する。一方、ステップＳ４１の判定の結果、記憶部１２に記憶しているノードＮｎ自身のノード番号が、離脱ノードのノード番号よりも大きい場合（ステップＳ３１：Ｙｅｓ）には、制御部１１は、ノード番号更新手段として機能し、記憶部１２に記憶しているノード番号を１デクリメント（減算）して更新する（ステップＳ３２）。
【０１１６】
続いて、制御部１１は、ノード装置数更新手段として機能し、接続ノード数を更新し、各階層におけるノードＮｎ自身のノードＩＤを上記式（１）及び式（２）に従って再決定する（ステップＳ３３）。具体的には、記憶部１２に記憶している接続ノード数を１デクリメント（減算）して更新してノードＩＤの再決定を行なう。制御部１１は、更新後の接続ノード数及び再決定したノードＩＤを記憶部１２に記憶する。
【０１１７】
次に、制御部１１は、第１決定手段及び第２決定手段として機能し、再決定されたノードＩＤに基づきノードＮｎ自身の各階層における記憶担当範囲を決定する。そして、制御部１１は、記憶制御手段として機能し、記憶担当範囲のファイルＩＤを有するレプリカを他のノードＮｎから取得して記憶部１２に記憶する（ステップＳ３４）。なお、記憶担当範囲のレプリカのうち、既に記憶部１２に記憶しているレプリカが有る場合には、重複記憶を防ぐため、制御部１１は、記憶していないレプリカのみを他のノードＮｎから取得して記憶部１２に記憶する。
【０１１８】
そして、制御部１１は、記憶担当範囲となった全てのレプリカを記憶部１２に記憶させると、取得完了メッセージを分散保存システムＳに接続している他の全ノードＮｎに送信する（ステップＳ３５）。このとき送信された取得完了メッセージは、他のノードＮｎが後述するステップＳ４６にて受信することとなる。
【０１１９】
次に、制御部１１は、取得完了メッセージ受信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信する（ステップＳ３６）。このとき、制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信するまで待機する。なお、ここで受信する取得完了メッセージは、後述する他のノードＮｎが実行する図９（Ｂ）のステップＳ４５にて送信された取得完了メッセージである。他の全ノードＮｎから取得完了メッセージを受信したか否かの判定は、上記ステップＳ１５にて説明した方法と同様の方法等で判定すればよい。
【０１２０】
そして、制御部１１は、全ノードＮｎから取得完了メッセージを受信すると、担当範囲の変更により、記憶担当範囲外となったレプリカを記憶部１２から削除して（ステップＳ３７）、処理を終了する。
【０１２１】
続いて、図９（Ｂ）を用いて離脱メッセージを受信したノードＮｎにおける制御部１１の処理を説明する。当該処理は、制御部１１が離脱メッセージ受信手段として機能し、離脱メッセージを受信したことにより開始される。
【０１２２】
先ず、制御部１１は、判定手段として機能し、記憶部１２に記憶しているノードＮｎ自身のノード番号が、離脱メッセージに含まれる離脱ノードのノード番号よりも大きいか否かを判定する（ステップＳ４１）。判定の結果、記憶部１２に記憶しているノードＮｎ自身のノード番号が、離脱ノードのノード番号より小さい場合（ステップＳ４１：Ｎｏ）には、ステップＳ４３に移行する。一方、ステップＳ４１の判定の結果、記憶部１２に記憶しているノードＮｎ自身のノード番号が、離脱ノードのノード番号よりも大きい場合（ステップＳ４１：Ｙｅｓ）には、制御部１１は、ノード番号更新手段として機能し、記憶部１２に記憶しているノード番号を１デクリメント（減算）して更新する（ステップＳ４２）。
【０１２３】
続いて、制御部１１は、ノード装置数更新手段として機能し、接続ノード数を更新し、各階層におけるノードＮｎ自身のノードＩＤを上記式（１）及び式（２）に従って再決定する（ステップＳ４３）。具体的には、記憶部１２に記憶している接続ノード数を１デクリメント（減算）して更新してノードＩＤの再決定を行なう。制御部１１は、更新後の接続ノード数及び再決定したノードＩＤを記憶部１２に記憶する。
【０１２４】
次に、制御部１１は、第１決定手段及び第２決定手段として機能し、再決定されたノードＩＤに基づきノードＮｎ自身の各階層における記憶担当範囲を決定する。そして、制御部１１は、記憶制御手段として機能し、記憶担当範囲のファイルＩＤを有するレプリカを他のノードＮｎから取得して記憶部１２に記憶する（ステップＳ４４）。なお、記憶担当範囲のレプリカのうち、既に記憶部１２に記憶しているレプリカが有る場合には、重複記憶を防ぐため、制御部１１は、記憶していないレプリカのみを他のノードＮｎから取得して記憶部１２に記憶する。
【０１２５】
そして、制御部１１は、記憶担当範囲となった全てのレプリカを記憶部１２に記憶させると、取得完了メッセージを分散保存システムＳに接続している他の全ノードＮｎに送信する（ステップＳ４５）。
【０１２６】
次に、制御部１１は、取得完了メッセージ受信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信する（ステップＳ４６）。このとき、制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから取得完了メッセージを受信するまで待機する。なお、ここで受信する取得完了メッセージは、他のノードＮｎが実行する図９（Ａ）のステップＳ３５及び図９（Ｂ）のステップＳ４５にて送信された取得完了メッセージである。他の全ノードＮｎから取得完了メッセージを受信したか否かの判定は、上記ステップＳ１５にて説明した方法と同様の方法等で判定すればよい。
【０１２７】
そして、制御部１１は、全ノードＮｎから取得完了メッセージを受信すると、担当範囲の変更により、記憶担当範囲外となったレプリカを記憶部１２から削除して（ステップＳ４７）、処理を終了する。
【０１２８】
なお、上述した実施形態では、記憶担当外となったデータファイルを削除するよう構成したが、記憶部１２の使用率が所定値未満である場合など、記憶部１２に余裕がある場合には、削除せず記憶しておいてもよい。
【０１２９】
また、上述した実施形態では、ステップＳ１１、Ｓ３０において、各ノードＮｎのノード番号の情報をノードＮｎ間で互いに送受信するよう構成したが、これらの情報をカタログ情報に記述してもよい。この場合、各ノードＮｎは、必要に応じてカタログ情報を参照し、各ノードＮｎのノード番号を取得すればよい。
【０１３０】
以上説明したように、データファイルのレプリカを複数生成し、生成された各レプリカが、複数のノードＮｎに重複して記憶されるよう構成した。各ノードＮｎが各階層で定義された複数の記憶担当範囲を自律的に決定し、決定された記憶担当範囲のレプリカを記憶するよう構成した。具体的には、各ノードＮｎが第１階層の記憶担当範囲に属するレプリカと、第１階層の記憶担当範囲とは異なる記憶担当範囲である第２階層の記憶担当範囲に属するレプリカを、記憶するよう構成した。
【０１３１】
これにより、管理サーバを用いることなく、各ノードＮｎ自身が記憶担当のレプリカの記憶制御を行なうことができる。
【０１３２】
また、記憶担当範囲を、総数や接続ノード数や階層数等に従って上記式（１）及び式（２）に基づいて決定するよう構成した。これにより、新たにノードＮｎが分散保存システムＳに参加する場合や、離脱ノードがある場合であっても、各ノードＮｎが自律的に記憶担当範囲を再決定し、各ノードＮｎ自身が記憶担当のレプリカの記憶制御を行なうことができる。
【０１３３】
また、本実施形態では、各ノードＮｎの記憶担当範囲は、階層数分の１以下となるよう構成したので、各ノードＮｎの記憶担当範囲を各階層にて異ならせることができる。従って、各レプリカは、必ず階層数分の異なるノードＮｎに記憶させることができる。従って、何れかのノードＮｎが離脱した場合であっても、レプリカの重複数は、１しか減少しない。つまり、最大で（階層数−１）台のノードが同時に離脱した場合であっても、少なくとも１つのレプリカは、分散保存システムＳ内に残るよう保障できる。
【０１３４】
また、本実施形態では、各ノードＮｎの各階層における記憶担当範囲は、階層数分の１以下となるよう構成したがこれに限定されるものではない。階層数の中の所定の階層における記憶担当範囲が決定され、所定の階層以外の階層ごとの記憶担当範囲が、上述の所定の階層における記憶担当範囲分各階層で異ならせて決定されればよい。このように構成することで、少なくとも所定の階層以外の階層では、所定の階層と異なる記憶担当範囲が決定される。そのため、少なくとも所定の階層と、所定の階層以外の階層との間で、記憶担当範囲が重複することを防ぐことができる。「少なくとも所定の階層と記憶担当範囲が重複することを防ぐことができる。」に関してさらに説明すれば、各ノードＮｎの記憶担当範囲が階層数分の１より大きいと、所定の階層と記憶担当範囲が一部重複する場合がある。これは例えば、あるノードＮｎの１階層分の担当範囲が全範囲の３分の２である場合は、他のどの階層の担当範囲も少なくとも３分の１は重複することになる。重複を完全に防ぐためには少なくとも各ノードＮｎの記憶担当範囲が階層数分の１以下である必要がある。
【０１３５】
なお、上記分散保存システムＳは、ＤＨＴを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。
【０１３６】
４．変型例
上述した実施形態では、分散保存システムＳに接続する各ノードＮｎの記憶担当範囲を、ＩＤ空間において各ノードＮｎに均等に割り当てたが、均等に割り当てなくともよい。この場合、各ノードＮｎの記憶担当範囲は、階層数分の１以下となるよう構成しなくともよい。
【０１３７】
例えば、各ノードＮｎの記憶部１２のハードディスク（ＨＤ）容量に応じて決定する。例えば、ＨＤ容量が大きいノードＮｎほど、記憶担当範囲を大きくするよう構成し、各ノードＮｎのＨＤ使用率が均一になるよう構成することもできる。なお、各ノードＮｎのＨＤ使用率が均一になるよう構成する場合には、例えば、本願出願人による特許出願第２００９−１２３３６４号に詳細に記載している手法を用いればよい。
【０１３８】
ここでは、第１階層にて、各ノードＮｎの記憶担当範囲を均一に割り当てなかった場合における第２階層の記憶担当範囲の決定方法について説明する。言い換えれば、“記憶担当範囲のずらし方”の変型例である。何れも、ノードＮ１、Ｎ２の２台のノードＮｎが分散保存システムＳに接続している場合の例である。
【０１３９】
図１０は、変型例における第２階層の記憶担当範囲の決定方法の説明図である。
【０１４０】
図１０（Ａ）は、第２階層の決定方法１、２、３に共通する、第１階層における各ノードＮｎの記憶担当範囲の説明図である。第１階層の記憶担当範囲は、上述したように各ノードＮｎのＨＤ容量に応じて決定する等すればよい。図１０（Ａ）に示す例では、ノードＮ１のノードＩＤは「００００」、ノードＮ２の第１階層のノードＩＤは「ａ０００」である。
【０１４１】
４−１．変型例における第２階層の記憶担当範囲の決定方法１
図１０（Ｂ）は、決定方法１の場合の第２階層の各ノードＮｎの記憶担当範囲の説明図である。上記式（２）に従って、各ノードＮ１、Ｎ２の第２階層におけるノードＩＤが決定される。図１０（Ｂ）に示す例では、ノードＮ１のノードＩＤは「８０００」、ノードＮ２のノードＩＤは「２０００」である。
【０１４２】
この構成の場合、記憶担当範囲が階層数分の１以下であるノードＮ２が離脱した場合、レプリカの重複数は１しか減少しない。一方で、記憶担当範囲が階層数分の１を超えているノードＮ１が離脱した場合、レプリカの重複数が１以上減少してしまう。このように、レプリカの重複数が１以上減少してしまう場合もあるが、複数のノードＮｎの記憶担当範囲を決定する方法として有効な構成である。
【０１４３】
４−２．変型例における第２階層の記憶担当範囲の決定方法２
図１０（Ｃ）は、決定方法２の場合の第２階層の各ノードＮｎの記憶担当範囲の説明図である。以下の式（３）に従って、各ノードＮ１、Ｎ２の第２階層におけるノードＩＤが決定される。なお、ｋは２以上の自然数であり、ここではｋは２とする。
第ｋ階層のノードＩＤ＝[第１階層のノードＩＤ]＋[最も記憶担当範囲が大きいノードＮｎの記憶担当範囲]×（ｋ−１）・・・式（３）
【０１４４】
最も記憶担当範囲が大きいノードＮｎは、ノードＮ１であるため、第２階層の各ノードＮｎのノードＩＤは、ノードＮ１の記憶担当範囲分だけずらした値として決定される。図１０（Ｃ）に示す例では、ノードＮ１のノードＩＤは「４０００」、ノードＮ２のノードＩＤは「ａ０００」である。
【０１４５】
この構成の場合、記憶担当範囲が階層数分の１を超えているノードＮｎ（ノードＮ１）があるため、いずれのノードＮｎが離脱した場合にも、レプリカの重複数が１以上減少してしまう可能性がある。しかし、複数のノードＮｎの記憶担当範囲を決定する方法として有効な構成である。
【０１４６】
４−３．変型例における第２階層の記憶担当範囲の決定方法３
図１０（Ｄ）は、決定方法３の場合の第２階層の各ノードＮｎの記憶担当範囲の説明図である。以下の式（４）に従って、各ノードＮ１、Ｎ２の第２階層におけるノードＩＤが決定される。なお、ｋは２以上の自然数であり、ここではｋは２とする。
第ｋ階層のノードＩＤ＝[第１階層のノードＩＤ]＋[最も記憶担当範囲が小さいノードＮｎの記憶担当範囲]×（ｋ−１）・・・式（４）
【０１４７】
最も記憶担当範囲が小さいノードＮｎは、ノードＮ１であるため、第２階層の各ノードＮｎのノードＩＤは、ノードＮ１の記憶担当範囲分だけずらした値として決定される。図１０（Ｄ）に示す例では、ノードＮ１のノードＩＤは「６０００」、ノードＮ２のノードＩＤは「００００」である。
【０１４８】
この構成の場合、いずれのノードＮｎが離脱した場合にも、レプリカの重複数が１以上減少してしまう可能性がある。しかし、複数のノードＮｎの記憶担当範囲を決定する方法として有効な構成である。
【符号の説明】
【０１４９】
３  ＩＸ
４ａ、４ｂ  ＩＳＰ
５ａ、５ｂ  ＤＳＬ回線業者
６  ＦＴＴＨ回線業者
７  通信回線
８  ネットワーク
９  オーバーレイネットワーク（Ｐ２Ｐネットワーク）
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
２０  通信部
２１  入力部
２２  バス
Ｎｎ  ノード
【図１】
2011008711.tif 000003
【図２】
2011008711.tif 000004
【図３】
2011008711.tif 000005
【図４】
2011008711.tif 000006
【図５】
2011008711.tif 000007
【図６】
2011008711.tif 000008
【図７】
2011008711.tif 000009
【図８】
2011008711.tif 000010
【図９】
2011008711.tif 000011
【図１０】
2011008711.tif 000012