(57)【要約】      （修正有）【課題】データファイルの保存制御の際にかかる負荷を複数のノード装置に分散させた分散保存システムを提供する。【解決手段】ネットワークを介して互いに通信可能な複数のノード装置間で送受信されるデータファイルを分散して保存する複数のノード装置から構成される分散保存システムであり、各ノード装置のノード番号よりも小さいノード装置における記憶容量の総和を示す第１記憶容量と、記憶容量の総和を示す総和記憶容量の比を記憶比率として決定する手段と、総数と記憶比率とから、所定のデータファイル識別番号の位置を決定する手段と、各ノード装置の記憶容量と総和記憶容量とから、各ノード装置が担当するデータファイル識別番号の担当数を決定する手段と、位置と担当数とから、各ノード装置が保存するデータファイル識別番号を決定する手段と、識別番号に対応するデータファイルを各ノード装置に記憶させる記憶制御手段と、を備える。【選択図】図４
2010271933.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）、通信カラオケ装置、或いは、ＴＶ受信機等が適用可能である。
【００９０】
記憶部１２には、ノードＮｎ自身のアドレス情報が記憶されている。
【００９１】
また、ノードＮｎが、分散保存システムＳに接続した後は、記憶部１２には、ノードＮｎ自身のノード番号の情報と、ノードＮｎ自身のノード番号よりも小さいノード番号であるノードＮｎのＨＤの記憶容量の総和（第１記憶容量）の情報と、分散保存システムＳに接続している全ノードＮｎの記憶容量の総和（総和記憶容量）の情報が記憶される。
【００９２】
また、記憶部１２には、データファイルを記憶するためのＨＤの記憶容量の情報と、ノードＩＤを決定後、決定されたノードＮｎ自身のノードＩＤ及び記憶担当範囲のファイルＩＤの情報も記憶されている。なお、データファイルを記憶するためのＨＤの記憶容量の情報は、後述するノードＮｎの処理において、必要となったときに取得される情報である。
【００９３】
更に、記憶部１２には、管理テーブルが記憶されている。管理テーブルには、記憶部１２に記憶しているデータファイルに関する情報（タイトル、ファイルＩＤ、公開期間等）が登録されている。
【００９４】
更に、記憶部１２には、インデックス情報が記憶されている。インデックス情報は、ノードＮｎ自身が所在を管理するデータファイル保持ノードであるノードＮｎのノード情報と、データファイルのファイルＩＤの組が含まれる情報である。制御部１１が、ユーザーノードからのクエリを受信すると、インデックス情報を参照する。そして、制御部１１が、クエリに含まれるリクエストに該当するデータファイル保持ノードのノード情報を、ユーザーノードに返信する。
【００９５】
このような構成において、制御部１１は、ＣＰＵが記憶部１２等に記憶されたプログラムを読み出して実行することにより、全体を統括制御する。ノードＮｎが分散保存システムＳへ接続して、プログラムが実行されることで、上述したユーザーノード、中継ノード、ルートノード、データファイル保持ノードの少なくとも何れか一つのノードとしての処理を行なうようになっている。
【００９６】
また、制御部１１は、本発明のノード処理プログラムを実行することにより、本発明における記憶手段、総数取得手段、ノード番号取得手段、記憶容量取得手段、記憶比率決定手段、位置決定手段、担当決定手段、保存データファイル決定手段、記憶制御手段、離脱メッセージ受信手段、参加メッセージ受信手段、参加メッセージ送信手段、保存完了メッセージ送信手段、保存完了メッセージ受信手段、削除手段等として機能する。なお、上記ノード処理プログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしてもよいし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしても良い。
【００９７】
３．ノードＮｎの処理
ノードＮｎにおける処理を、図を参照して、詳しく説明する。
【００９８】
３−１．新規ノードＮｎ接続時の各ノードＮｎの処理フロー
図６は、新規ノードＮｎが分散保存システムＳに接続する際の処理フローである。図６の（Ａ）は、新規ノードＮｎにおける制御部１１の処理である。図６の（Ｂ）は、既に分散保存システムＳに接続しているノードＮｎにおける制御部１１の処理である。
【００９９】
図６の（Ａ）を参照して新規ノードＮｎの処理から説明する。
【０１００】
先ず、新規ノードＮｎの制御部１１は、新規ノードＮｎ自身のノード番号を設定する（ステップＳ１０）。具体的には、新規ノードＮｎが分散保存システムＳに接続する前の、ノードＮｎの数に１を加算した数が、新規ノードＮｎ自身のノード番号として設定される。設定されたノード番号の情報は記憶部１２に記憶される。なお、分散保存システムＳに接続しているノードＮｎの数の情報は、新規ノードＮｎが管理サーバ等に問い合わせるか、或いは、カタログ情報に記述しておき、新規ノードＮｎがカタログ情報を参照して取得すればよい。
【０１０１】
次いで、制御部１１は、記憶容量取得手段として機能し、新規ノードＮｎのＨＤの記憶容量の情報を取得する（ステップＳ１１）。具体的には、記憶部１２のデータファイルを記憶するためのＨＤの記憶容量の情報が取得される。
【０１０２】
そして、制御部１１は、参加メッセージ送信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎに参加メッセージを送信する（ステップＳ１２）。制御部１１は、参加メッセージに、新規ノードＮｎ自身のノード番号の情報と、ステップＳ１１で取得した新規ノードＮｎ自身のＨＤの記憶容量の情報を含ませる。
【０１０３】
次に、制御部１１は、記憶容量取得手段として機能し、分散保存システムＳに接続している他の全ノードＮｎからＨＤの記憶容量の情報を受信する（ステップＳ１３）。ここで、制御部１１は、他の全ノードＮｎからＨＤの記憶容量の情報を受信するまで待機する。なお、所定時間経過しても他の全ノードＮｎからＨＤの記憶容量の情報を受信できなかった場合には、制御部１１が管理サーバに問い合わせて他の全ノードＮｎのＨＤの記憶容量の情報を取得する。
【０１０４】
続いて、制御部１１は、第１記憶容量と総和記憶容量を決定して、決定結果を記憶部１２に記憶する（ステップＳ１４）。なお、本実施形態では、新規ノードＮｎが分散保存システムＳに接続する前の参加ノードＮｎの数に１を加算した数を、新規ノードＮｎ自身のノード番号として設定している。そのため、他の全てのノードＮｎが新規ノードＮｎ自身のノード番号よりもノード番号が小さいノードとなる。
【０１０５】
そして、制御部１１は、記憶比率決定手段及び位置決定手段として機能する。具体的には、制御部１１は、記憶部１２に記憶された第１記憶容量と総和記憶容量、及び、ＩＤ空間の総数（例えば、１００００）に基づいて、ＩＤ空間の総数の中の位置を決定する。次いで、制御部１１は、決定した位置を新規ノードＮｎ自身のノードＩＤとして決定する（ステップＳ１５）。
【０１０６】
次に、制御部１１は、担当決定手段、保存データファイル決定手段及び記憶制御手段として機能する。
【０１０７】
先ず、制御部１１は、記憶部１２のデータファイルを記憶するためのＨＤの記憶容量と、総和記憶容量と、ステップＳ１５にて決定されたノードＮｎ自身のノードＩＤと、に基づいて記憶担当範囲を決定する。そして、制御部１１は、記憶担当範囲のファイルＩＤに対応するデータファイルを取得して記憶部１２に記憶する（ステップＳ１６）。具体的には、各データファイルの記憶担当を示すノード情報がカタログ情報に記述されている場合には、制御部１１は、カタログ情報を参照する。そして、制御部１１は、記憶担当のノードＮｎのノード情報を取得する。そして、制御部１１は、取得されたノード情報に含まれるアドレス情報に従って、記憶担当のノードＮｎに対して取得を所望するデータファイルのファイルＩＤを含むデータファイル要求メッセージを送信する。そして、制御部１１は、記憶担当のノードＮｎからデータファイルを取得する。一方、データファイルの記憶担当のノードＮｎのノード情報がカタログ情報に記述されていない場合には、データファイルＩＤを含むクエリをルートノードに向けて送信してデータファイルを取得すればよい。なお、記憶担当範囲のデータファイルのうち、既に記憶部１２に記憶しているデータファイルが有る場合には、記憶していないデータファイルのみを他のノードＮｎから取得して記憶部１２に記憶する。重複記憶を防ぐためである。
【０１０８】
そして、記憶担当範囲となった全てのデータファイルを記憶部１２に記憶させると、制御部１１は、保存完了メッセージ送信手段として機能し、記憶（保存）を完了したことを知らせる。記憶が完了したことを示す保存完了メッセージを分散保存システムＳに接続している他の全ノードＮｎに、制御部１１が送信する（ステップＳ１７）。例えば、ステップＳ１７で送信された保存完了メッセージは、後述するステップＳ２４の処理にて受信されることとなる。
【０１０９】
次に、制御部１１は、保存完了メッセージ受信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信する（ステップＳ１８）。このとき、制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信するまで待機する。
【０１１０】
そして、制御部１１は、全ノードＮｎから保存完了メッセージを受信すると、削除手段として機能し、ノードＮｎ自身の記憶担当範囲外のデータファイルが記憶部１２に記憶されている場合には、その記憶担当範囲外のデータファイルを記憶部１２から削除して（ステップＳ１９）、処理を終了する。
【０１１１】
続いて、図６（Ｂ）を参照して、分散保存システムＳに接続しているノードＮｎにおける制御部１１の処理を説明する。分散保存システムＳに既に接続しているノードＮｎにおける制御部１１の処理は、制御部１１が参加メッセージ受信手段として機能し、新規ノードＮｎから参加メッセージを受信したことにより開始される。
【０１１２】
先ず、制御部１１は、新規ノードＮｎに記憶部１２のＨＤの記憶容量の情報を返信する（ステップＳ２０）。このとき送信された記憶部１２のＨＤの記憶容量の情報は、新規ノードＮｎが上記ステップＳ１３にて受信することとなる。
【０１１３】
次に、制御部１１は、参加メッセージに含まれる新規ノードＮｎのＨＤの記憶容量の情報に基づいて、記憶部１２に記憶している総和記憶容量を更新する。更に、制御部１１は、ノードＮｎ自身のノードＩＤを再計算する（ステップＳ２１）。具体的には、制御部１１は、記憶部１２に記憶している総和記憶容量に、新規ノードＮｎのＨＤの記憶容量を加算して更新する。制御部１１は、更新後のノードＩＤを再び記憶部１２に記憶する。ステップＳ２１では、ステップＳ１４と同じ処理を行う。
【０１１４】
次に、制御部１１は、再計算されたノードＩＤに基づき、記憶担当範囲となったデータファイルを他のノードＮｎから取得して記憶部１２に記憶する（ステップＳ２２）。具体的には、例えば、各データファイルの記憶担当のノード情報がカタログ情報に記述されている場合には、制御部１１は、カタログ情報を参照して、記憶担当のノードＮｎのノード情報を取得する。
【０１１５】
そして、制御部１１は、取得されたノード情報に含まれるアドレス情報に従って、記憶担当のノードＮｎに対して取得を所望するデータファイルのファイルＩＤを含むデータファイル要求メッセージを送信する。そして、制御部１１は、記憶担当のノードＮｎからデータファイルを取得する。データファイルの記憶担当のノードＮｎのノード情報がカタログ情報に記述されていない場合には、制御部１１は、データファイルＩＤを含むクエリをルートノードに向けて送信してデータファイルを取得すればよい。なお、記憶担当範囲のデータファイルのうち、既に記憶部１２に記憶しているデータファイルが有る場合には、重複記憶を防ぐため、制御部１１は、記憶していないデータファイルのみを他のノードＮｎから取得して記憶部１２に記憶する。
【０１１６】
そして、制御部１１は、記憶担当範囲となった全てのデータファイルを記憶部１２に記憶させると、保存完了メッセージを分散保存システムＳに接続している他の全ノードＮｎに送信する（ステップＳ２３）。このとき送信された保存完了メッセージは、新規ノードＮｎが上記ステップＳ１８にて受信することとなる。なお、ステップＳ２３で送信された保存完了メッセージは、他のノードＮｎがそれぞれ実行する図６（Ｂ）の処理フローのステップＳ２４においても受信される。
【０１１７】
次に、制御部１１は、保存完了メッセージ受信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信する（ステップＳ２４）。このとき、制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信するまで待機する。
【０１１８】
そして、制御部１１は、全ノードＮｎから保存完了メッセージを受信すると、削除手段として機能し、担当範囲の変更により、記憶担当範囲外となったデータファイルを記憶部１２から削除して（ステップＳ２５）、処理を終了する。
【０１１９】
なお、ステップＳ１６及びステップＳ２２にて、他のノードＮｎから担当するデータファイルを取得できない場合には、制御部１１は、データファイルの配信を管理するデータファイル投入サーバ等からデータファイルを取得してもよい。他のノードＮｎから取得できない場合は、カタログ情報に記憶担当のノードＮｎの記述が無い場合や、他のノードＮｎにクエリを送信してもデータファイル保持ノードが見つからない場合や応答が無い場合などである。
【０１２０】
ステップＳ１０にて、分散保存システムＳに接続しているノードＮｎの数に「１」を加算した数を、新規ノードＮｎのノード番号としたが、新規ノードＮｎのノード番号を「１」としてもよい。新規ノードＮｎのノード番号を「１」とした場合には、分散保存システムＳに接続している各ノードＮｎは、各ノードＮｎ自身のノード番号を「１」づつ繰り上げてノード番号を更新するよう構成してもよい。
【０１２１】
この場合、新規ノードＮｎは、設定したノードＮｎ自身のノード番号を他のノードＮｎに通知し、各ノードＮｎは１以上、参加ノード数以下の範囲で他のノードＮｎと重複しないよう各ノード番号を設定する。そして、各ノードＮｎは設定後のノード番号をＨＤの記憶容量と共に送信すればよい。そして、各ノードＮｎにて第１記憶容量、総和記憶容量、記憶比率等を決定し、各ノードＮｎにて各ノードＮｎ自身の担当範囲を夫々決定する。
【０１２２】
３−２．ノード離脱時の処理フロー
図７は、分散保存システムＳからノードＮｎが離脱する際の処理フローである。図７の（Ａ）は分散保存システムＳから離脱するノードである離脱ノードにおける制御部１１の処理である。図７の（Ｂ）は離脱ノードＮｎ以外のノードＮｎにおける制御部１１の処理である。
【０１２３】
図７の（Ａ）を参照して離脱ノードの処理から説明する。
【０１２４】
先ず、離脱ノードの制御部１１は、記憶容量取得手段として機能し、離脱ノードのＨＤの記憶容量の情報を取得する（ステップＳ３０）。具体的には、制御部１１は、記憶部１２のデータファイルを記憶するためのＨＤの記憶容量の情報を取得する。
【０１２５】
そして、制御部１１は、離脱メッセージ送信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎに離脱メッセージを送信する（ステップＳ３１）。制御部１１は、離脱メッセージに、離脱ノード自身のノード番号の情報と、ステップＳ３０で取得した離脱ノード自身のＨＤの記憶容量の情報を含ませる。
【０１２６】
次に、制御部１１は、保存完了メッセージ受信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信する（ステップＳ３２）。制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信するまで待機する。
【０１２７】
そして、制御部１１は、全ノードＮｎから保存完了メッセージを受信すると、分散保存システムＳから離脱し（ステップＳ３３）、処理を終了する。
【０１２８】
なお、離脱の際には、制御部１１は、記憶部１２に記憶しているノード番号の情報やノードＩＤの情報等の削除処理を行なう。また、制御部１１が、分散保存システムＳにて取得したカタログ情報やデータファイルを記憶部１２から削除するよう構成してもよい。
【０１２９】
上述したように、全てのノードＮｎから保存完了メッセージを受信した後に、ステップＳ３３で離脱するよう構成した。これにより、ノードＮｎが離脱する場合でも、分散保存システムＳ内で行なわれているデータファイルのやり取りに影響を与えることなく、データファイルの記憶担当ノードを確実かつ円滑に変更することができる。
【０１３０】
続いて、図７（Ｂ）を参照して、離脱ノード以外のノードＮｎにおける制御部１１の処理を説明する。離脱ノード以外のノードＮｎにおける制御部１１の処理は、制御部１１が離脱メッセージ受信手段として機能し、離脱ノードから離脱メッセージを受信したことにより開始される。
【０１３１】
先ず、制御部１１は、離脱メッセージに含まれる離脱ノードＮｎのノード番号が記憶部１２に記憶しているノード番号よりも小さいか否かを判定する（ステップＳ４１）。判定の結果、離脱ノードＮｎのノード番号が、記憶部１２に記憶しているノード番号よりも小さい場合には、記憶部１２に記憶しているノード番号を１デクリメント（減算）して更新する（ステップＳ４２）。そして、離脱メッセージに含まれる離脱ノードＮｎのＨＤの記憶容量の情報に基づいて、記憶部１２に記憶している第１記憶容量を更新する（ステップＳ４３）。具体的には、第１記憶容量から離脱ノードＮｎのＨＤの記憶容量を減算して更新する。
【０１３２】
続いて、制御部１１は、離脱メッセージに含まれる離脱ノードＮｎのＨＤの記憶容量の情報に基づいて、記憶部１２に記憶している総和記憶容量を更新し、更に、ノードＮｎ自身のノードＩＤを再計算する（ステップＳ４４）。具体的には、記憶部１２に記憶している総和記憶容量から離脱ノードＮｎのＨＤの記憶容量を減算して更新する。
【０１３３】
そして、制御部１１は、再計算されたノードＩＤに基づき、記憶担当範囲となったデータファイルを他のノードＮｎから取得して記憶部１２に記憶する（ステップＳ４５）。
【０１３４】
記憶担当範囲となった全てのデータファイルを記憶部１２に記憶させると、制御部１１は、保存完了メッセージ送信手段として機能し、記憶を完了したことを知らせる保存完了メッセージを分散保存システムＳに接続している他の全ノードＮｎに送信する（ステップＳ４６）。例えば、このとき送信された保存完了メッセージは、離脱ノードＮｎが上記ステップＳ３２にて受信することとなる。
【０１３５】
次に、制御部１１は、保存完了メッセージ受信手段として機能し、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信する（ステップＳ４７）。制御部１１は、分散保存システムＳに接続している他の全ノードＮｎから保存完了メッセージを受信するまで待機する。
【０１３６】
そして、制御部１１は、全ノードＮｎから保存完了メッセージを受信すると、削除手段として機能し、ノードＩＤの更新により、言い換えれば、担当範囲の変更により、担当範囲外となったデータファイルを記憶部１２から削除して（ステップＳ４８）、処理を終了する。
【０１３７】
このような構成により、例えば各ノードＮｎにおける記憶部１２の使用率が所定の閾値以上となった場合に、管理サーバ等が使用率が０のノードＮｎを分散保存システムＳに新たに投入することにより、各ノードＮｎの記憶部１２の使用率を下げ、負荷を低減させることができる。なお、使用率が０のノードＮｎとは、記憶部１２に何もデータファイルが記憶されていないノードＮｎである。
【０１３８】
なお、上述した実施形態では、記憶担当外となったデータファイルを削除するよう構成したが、記憶部１２の使用率が所定値未満である場合など、記憶部１２に余裕がある場合には、削除せず記憶しておいてもよい。
【０１３９】
また、上述した実施形態では、ステップＳ１２、Ｓ１３、Ｓ２０、Ｓ３１等において、各ノードＮｎのノード番号の情報やＨＤの記憶容量の情報をノードＮｎ間で互いに送受信するよう構成したが、これらの情報をカタログ情報に記述してもよい。この場合、各ノードＮｎは、必要に応じてカタログ情報を参照し、各ノードＮｎのノード番号やＨＤの記憶容量の情報を取得すればよい。
【０１４０】
例えば、カタログ情報に各ノードＮｎのＨＤの記憶容量の情報が記述されている場合には、離脱ノードＮｎはノードＩＤやノード番号を含む離脱メッセージを分散保存システムＳに接続している全ノードＮｎに送信する。そして、離脱メッセージを受信したノードＮｎは、カタログ情報を参照して離脱ノードＮｎのノードＩＤやノード番号に対応付けられたＨＤの記憶容量を、離脱ノードＮｎのＨＤの記憶容量の情報として取得する。また、新規ノードＮｎはノードＩＤやノード番号を含む参加メッセージを分散保存システムＳに接続している全ノードＮｎに送信する。そして、参加メッセージを受信したノードＮｎは、カタログ情報を参照して新規ノードＮｎのノードＩＤやノード番号に対応付けられたＨＤの記憶容量をカタログ情報から取得する。この場合、各ノードＮｎは分散保存システムＳに接続する前に、カタログ情報を管理する管理サーバ等に、ノードＮｎ自身のノード番号やＨＤの記憶容量の情報を送信しておく。また、ノードＮｎがＨＤを増設した場合には、増設後のＨＤの記憶容量の情報を管理サーバに送信し、カタログ情報には常に最新のＨＤの記憶容量が記述されるよう構成することが望ましい。
【０１４１】
なお、データファイルを複数の分割データファイルによって構成されたメタデータファイルである場合にも本発明を適用することができる。このとき、複数の分割データファイルのデータ容量が均一となるように分割される。そして、分割された各分割データファイルの夫々にファイルＩＤが付与される。複数の分割データファイルのデータ容量を均一に構成することにより、各ノードＮｎのＨＤの使用率を確率的に均一にすることができる。
【０１４２】
なお、上記分散保存システムＳは、ＤＨＴを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。
【符号の説明】
【０１４３】
３  ＩＸ
４ａ、４ｂ  ＩＳＰ
５ａ、５ｂ  ＤＳＬ回線業者
６  ＦＴＴＨ回線業者
７  通信回線
８  ネットワーク
９  オーバーレイネットワーク（Ｐ２Ｐネットワーク）
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
２０  通信部
２１  入力部
２２  バス
Ｎｎ  ノード
【図１】
2010271933.tif 000003
【図２】
2010271933.tif 000004
【図３】
2010271933.tif 000005
【図４】
2010271933.tif 000006
【図５】
2010271933.tif 000007
【図６】
2010271933.tif 000008
【図７】
2010271933.tif 000009