以下、本発明の最良の実施形態を図面に基づいて説明する。
[1.コンテンツ分散保存システムの構成等]
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムの概要構成等について説明する。
図1は、本実施形態に係るコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a、4b、DSL(Digital Subscriber Line)回線事業者(の装置)5a、5b、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界の通信ネットワーク)8が構築されている。なお、図1の例におけるネットワーク8には、データ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
このようなネットワーク8には、複数のノード装置(以下、「ノード」という)Nn(n=1,2,3・・・の何れか)がルータを介して接続されている。また、各ノードNnには、固有の製造番号およびIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するP2Pネットワーク(オーバーレイネットワーク、論理的なネットワーク)9である。かかるP2Pネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。
そして、コンテンツ分散保存システムS(言い換えれば、P2Pネットワーク9)に参加している各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。また、当該ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化した値(例えば、bit長が160bit)であり、一つのID空間に偏りなく分散して配置されることになる。
更に、コンテンツ分散保存システムSは、新しいコンテンツをコンテンツ分散保存システムS内に投入する本発明の保存指示装置の一例としてのコンテンツ投入サーバCSと、各ノードNnのコンテンツデータ(コンテンツの複製データであって、以下、「レプリカ」と言う)を記録し保存(格納)するためのコンテンツ記録手段であるHD(Hard Disk)等から構成される記憶部の空き記録容量を収集して、各ノードNnのIPアドレス、各ノードNnのノードIDと対応付けてノード情報として管理保存するログ管理装置の一例としてのログ収集サーバLSを備える。
なお、コンテンツ分散保存システムSへの参加は、参加していないノードNn(例えば、ノードN25)が、該システムSへの参加許可を受けるべく、ネットワーク8を介して図示しない認証サーバに対して自己のIPアドレス情報やノードIDと共にシステム利用登録を要求(登録要求)し、当該認証サーバがコンテンツ分散保存システムSへの登録の認証処理を行なうことによって行われる。
そして、参加が許可された新規参加ノードNnは、既に当該システムSへ参加している任意のノードNn(例えば、当該システムSに常時参加しているコンタクトノード)に対して自己がシステムSへ参加したことを示す参加メッセージを送信してコンテンツ分散保存システムSへ参加する。
コンテンツ分散保存システムSに参加している各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。そこで、新規参加ノードNnから参加メッセージを受けたノードNn(コンタクトノード等)は、自己が保持するルーティングテーブルをコピーして新規参加ノードNnへ送付する。
このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定しており、具体的には、ID空間内で適度に離れたノードNnのノードID、IPアドレス、ポート番号等を含むノード情報が複数登録されている。なお、IPアドレス及びポート番号は、ネットワークアドレス情報の一例である。
コンテンツ分散保存システムSに参加している1台のノードNnは、該システムSに参加している全てのノードNnのうち、必要最低限のノードNnのノード情報をルーティングテーブルに登録しておき、ノード情報を知らない(記憶していない)ノードNnについては、各ノードNn間で互いに各種メッセージを転送し合って届けてもらうようになっている。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
次に、各ノードNnにて利用されるコンテンツについて説明する。
コンテンツ分散保存システムSでは、内容の異なる様々なコンテンツ(例えば、映画や音楽等)のレプリカが所定のファイル形式で複数のノードNnが有する記憶部に分散して保存されており、各ノードNn間で当該レプリカを利用可能になっている。例えば、ノードN5の記憶部には、タイトルがXXXの映画のコンテンツのレプリカが保存されており、一方、ノードN3の記憶部には、タイトルがYYYの映画のコンテンツのレプリカが保存されるというように、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存されている。
また、これらのコンテンツのレプリカには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有の識別情報)等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値(或いは、コンテンツデータの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される(ノードIDと同一のID空間に配置)。或いは、システム管理者が、コンテンツ毎に一意のID値(ノードIDと同一ビット長)を付与しても良い。この場合は、コンテンツ名とそのコンテンツIDの対応が書かれたカタログがシステム管理者によってコンテンツ分散保存システムSに参加する全ノードNnに配布される。
そして、コンテンツ投入サーバCSによって、コンテンツ分散保存システムSに新たにコンテンツを投入する際には、記憶部の空き記録容量がより大きいと推定されるノードNnに対して、新規コンテンツのレプリカの保存が指示される。
図2に図示するように、コンテンツ分散保存システムS(P2Pネットワーク9)に参加する各ノードNnは、ログ収集サーバLSに対して、自己の記憶部の空き記録容量を特定するための情報(空き記録容量特定情報)を定期的(例えば、1日1回等、所定期間毎)に送信する。
なお、空き記録容量特定情報は、ノードNnの記憶部の空き記録容量を特定できる情報であれば、記憶部の空き記録容量そのもののほか、例えば、ノードNnの装置としての総稼働時間を示す情報、又は、ノードNnが過去にレプリカを取得した回数(ダウンロード回数)を示す情報、又は、ノードNnが取得したレプリカを再生した回数(視聴回数)を示す情報又は、ノードNnが過去に他のノードNn又はコンテンツ投入サーバCSから受けた保存指示の回数(事前配布回数)を示す情報、又は、ノードNnがレプリカを他のノードNnに利用可能とした回数(公開回数)を示す情報・・・・などでもよい。上述した総稼働時間は少ないほうが記憶部の空き記録容量が大きいと特定でき、ダウンロード回数、視聴回数・・・等の回数はいずれも少ないほうが記憶部の空き記録容量が大きいものと特定することができる。
ログ収集サーバLSは、各ノードNnから空き記録容量特定情報を受信し、各ノードNnのノードID、IPアドレスと対応付けてノード情報として保存する。
そして、図3に図示するように、コンテンツ投入サーバCSは、コンテンツ分散保存システムSに新しいコンテンツのレプリカを投入する際、つまり、コンテンツ分散保存システムSに参加するノードNnに分散して保存させる際には、ログ収集サーバLSに対して記憶部の空き記録容量がより大きい第2所定数(例えば、10個、100個など)のノード情報(ノード情報Nx_n)が掲載された保存先候補リストを要求して(図3[1]参照)、ログ収集サーバLSから保存先候補リストを取得する(取得手段)(図3[2]参照)。そして、取得した保存先候補リストをコンテンツ投入サーバCSの記憶部に保存し(ノード情報記憶手段)、当該保存先候補リストに掲載されたノード情報のうち、例えばランダムに1つ(第1所定数の一例)のノード情報を選択し(選択手段)、当該ノード情報に対応するノードNnに対して新規コンテンツのレプリカの保存を指示する(図3[3]参照)。例えば、保存先候補リストに掲載されたノード情報のうち、ノード情報Nx_1を選択した場合には、当該ノード情報Nx_1が示すノードN1に対して新規コンテンツのレプリカの保存を指示する(保存指示手段)。コンテンツ投入サーバCSからコンテンツの保存指示を受けたノードNnは、コンテンツのレプリカと保存先候補リストをコンテンツ投入サーバCSから受信して自己の記憶部に保存(記録)する。なお、上記図2及び図3ではコンテンツ分散保存システムS(P2Pネットワーク9)に参加しているノードNnをノードN5、N8、N10、、、等のみ示し、図を簡略化している。
そして、保存指示を受けたノードNnに保存された新規コンテンツは、公開日時がくると、当該コンテンツの情報がシステム運営者が配布するカタログリストに掲載され、コンテンツのレプリカのダウンロードが可能(コンテンツ分散保存システムSに参加する複数のノードNn間で共用可能)になる。そして、当該コンテンツの視聴を所望する各ノードNnは、(i)当該コンテンツを検索して(ii)当該コンテンツを保存するノードNnからコンテンツをダウンロードして取得して視聴する。
また、このように分散保存されているレプリカの所在、つまり、当該レプリカを保存したノードNnのノード情報(ノードIDやIPアドレス等)と当該コンテンツのレプリカに対応するコンテンツID等の組が含まれるインデックス情報が、当該コンテンツのレプリカの所在を管理しているノードNn(以下、「ルートノード」、又は「コンテンツデータ(コンテンツID)のルートノード」という)等により記憶(インデックスキャッシュに記憶)、管理されるようになっている。
つまり、コンテンツのレプリカを保存しているコンテンツ保持ノードのノード情報は、他のノードNnからの問い合わせに応じて提供可能なようにルートノードにより管理されている。
例えば、タイトルがXXXの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN4により管理され、タイトルがYYYの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードNnであるように定められる。
そして、あるノードNnのユーザが、所望するコンテンツのレプリカを取得したい場合、当該レプリカの取得を望むノードNn(以下、「ユーザノード」という)は、当該ユーザにより選択されたコンテンツのコンテンツID及び自己のIPアドレス等を含むコンテンツ所在問合せ(検索)メッセージ(クエリ)を生成し、これを自己のDHTを用いたルーティングテーブルにしたがって他のノードNnに対して送出する。つまり、ユーザノードは、コンテンツ所在問合せ(検索)メッセージを、ルートノードに向けて(ルートノード宛に)送出する(つまり、ルートノードにコンテンツのレプリカの所在を問い合わせる)。これにより、コンテンツ所在問合せ(検索)メッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
なお、各ノードNnにおいてユーザにより選択されるべきコンテンツのコンテンツ名及びコンテンツID等の属性情報は、コンテンツカタログリストに記述されている。また、上記コンテンツ所在問合せ(検索)メッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
上記コンテンツ所在問合せ(検索)メッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得して、当該インデックス情報を、該コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信する。こうしてインデックス情報を取得したユーザノードは、当該インデックス情報に含まれるあるコンテンツ保持ノードのIPアドレス等に基づいて当該コンテンツ保持ノードに接続して、コンテンツ送信要求メッセージを送信し、そこからコンテンツのレプリカを取得することが可能になる。なお、当該インデックス情報には、例えば複数のコンテンツ保持ノードのノード情報が含まれていることもある(同一のコンテンツのレプリカが複数のコンテンツ保持ノードに保存されている場合)。かかる場合、ユーザノードは、当該複数のコンテンツ保持ノードのうち一つのコンテンツ保持ノードを選択し、選択したコンテンツ保持ノードに接続してコンテンツのレプリカを取得することができる。
なお、ルートノードは、当該インデックス情報に含まれるIPアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカを取得することもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
コンテンツ投入サーバ又は他のノードNnから保存指示を受け、新たにコンテンツのレプリカを保存したノードNnは、レプリカを保存したことを当該コンテンツを管理するルートノードに知らせるために(言い換えれば、該システムSに参加している他のノードNnに対して公開するために)、当該レプリカのコンテンツID及び自己のノード情報(ノードID、IPアドレス等)が含まれるパブリッシュメッセージを生成し、該パブリッシュメッセージを、そのルートノードに向けて(ルートノード宛に)送出する。
これにより、パブリッシュメッセージは、コンテンツ所在問合せ(検索)メッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、該ルートノードは、受信したパブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)することになる。こうして、保存指示を受けたノードNnは、新たに、上記コンテンツのレプリカを保持するコンテンツ事前保持ノードとなる。
なお、上記パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報は、ルートノードに至るまでの転送経路におけるキャッシュノードにおいても登録(キャッシュ)される。
また、所望のレプリカを、コンテンツ保持ノードから取得して保存したユーザノードも、当該レプリカを保存したことをそのルートノードに知らせるために上述したパブリッシュメッセージをそのルートノードに向けて(ルートノード宛に)送出し、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
以上説明したコンテンツ分散保存システムSにおいては、新たに投入されるコンテンツのレプリカが、該システムSにおいて利用可能となる前に(公開前に)、保存指示装置の一例としてのコンテンツ投入サーバCSから何れかのノードNnに送信され、更に当該ノードNnが保存指示装置として機能して他のノードNnにレプリカを転送して保存指示することにより、一部のノードNn(コンテンツ事前保持ノード)に分散して保存させるようになっている。これは、新たに投入されるコンテンツの公開後に、当該コンテンツのレプリカにアクセスが集中するのを回避するためである。
このとき、コンテンツ投入サーバCSは、コンテンツ分散保存システムSに参加している全てのノードNnから記憶部の空き記録容量特定情報を定期的に収集して管理しているログ収集サーバLSから、記憶部の空き記録容量特定情報で示される空き記録容量がより大きい第2所定数のノード情報が掲載された保存先候補リストを取得して、これに基づいて、第1所定数(第1所定数<第2所定数)のノードNnをランダムに選択して当該選択されたノードNnに対して新規コンテンツのレプリカを保存するよう指示する。更に、保存を指示されたノードNnも、自己が保存指示装置となりコンテンツ投入サーバCSから受信した保存先候補リストに基づいてレプリカを保存(記録)するための記憶部の空き記録容量がより大きいノードNnを選択して、新たに投入されるコンテンツのレプリカの保存を指示するよう構成する。
これにより、レプリカを保存(記録)するための記憶部の空き記録容量が大きいノードNnを、コンテンツ事前保持ノードとすることができる。
[2.各装置の構成及び機能]
[2−1.ノードNnの構成及び機能]
次に、図4を参照して、ノードNnの構成及び機能について説明する。
図4は、ノードNnの概要構成例を示す図である。
各ノードNnは、図4に示すように、演算機能を有するCPU,作業用RAM,各種データおよびプログラムを記憶するROM等から構成されたコンピュータとしての制御部11と、各種データ(例えば、コンテンツデータのレプリカ、保存先候補リスト、インデックス情報、DHT等)及び各種プログラム等を記憶保存(格納)するためのハードディスク等から構成されたコンテンツ記録手段及びノード情報記憶手段としての記憶部12と、受信されたコンテンツデータのレプリカ等を一時蓄積するバッファメモリ13と、コンテンツデータのレプリカに含まれるエンコードされたビデオデータ(映像情報)およびオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部14と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部15と、当該映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部16と、上記デコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部17と、当該音声処理部17から出力されたオーディオ信号を音波として出力するスピーカ18と、ネットワーク8を通じて他のノードNn、コンテンツ投入サーバCS、ログ収集サーバLS等間の情報の通信制御を行なうための通信部20と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス、或いは、操作パネル等)21と、を備えて構成され、制御部11、記憶部12、バッファメモリ13、デコーダ部14、通信部20、及び入力部21はバス22を介して相互に接続されている。なお、ノードNnとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
また、コンテンツ分散保存システムSが、当該システムSに参加する際のアクセス先となるコンタクトノードを備えている場合には、記憶部12には当該コンタクトノードのIPアドレス及びポート番号等が記憶されている。更に、記憶部12には、保存(記録)しているコンテンツのレプリカに関する情報(タイトル、コンテンツID等)を登録するための保存コンテンツ管理テーブルが記憶されている。
このような構成において、制御部11は、CPUが記憶部12等に記憶されたプログラム(本発明の保存指示処理プログラム、ノード処理プログラムを含む)を読み出して実行することにより、全体を統括制御し、コンテンツ分散保存システムSへの参加により上述したユーザノード、中継ノード、ルートノード、キャッシュノード、コンテンツ保持ノード、及びコンテンツ事前保持ノードの少なくとも何れか一つのノードとしての処理を行なうようになっている。
また、保存指示装置としての処理を行なう制御部11は、本発明における取得手段、ノード情報記憶手段、選択手段、保存指示手段、識別情報生成手段、判定手段、分割ノード情報生成手段、保存指示情報受信手段、更新手段及び公開日時情報取得手段として機能する。なお、上記保存指示処理プログラム及びノード処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
制御部11は、定期的に記憶部12の空き記録容量を取得する。例えば、記憶部12のレプリカが記録されるハードディスクのキャッシュ領域の全容量と、既に使用している記録容量(使用容量)を求め、全容量から使用容量を減算して求めればよい(空き記録容量=全容量−使用容量)。そして、取得した空き記録容量に基づいて空き記録容量特定情報を生成してログ収集サーバLSに送信する。
また、制御部11は、コンテンツ投入サーバCS又は他のノードNnから、新たにコンテンツ分散保存システムSに投入すべきコンテンツのレプリカの保存指示を受けると、当該レプリカを記憶部12に記憶する。そして、保存指示と共に受信した保存先候補リストも一旦記憶部12に記憶する。そして、当該リストを送信用と保存用に分割し、保存用の保存先候補リストから第1所定数のノードNnを選択し、選択したノードNnに対してレプリカと送信用の保存先候補リストを送信してレプリカの保存を指示する。なお、保存先候補リストの分割については、後に詳細に説明する。
[2−2.ログ収集サーバLSの構成及び機能]
続いて、ログ収集サーバLSの概略構成について図5を用いて説明する。なお、図5は実施形態に係るログ収集サーバLSの概略構成を示すブロック図である。
図5に示すように、実施形態に係るコンテンツ分散保存システムSに含まれるログ収集サーバLSは、演算機能を有するCPU、作業用RAM(Random Access Memory)、各種データ及びプログラムを記録するROM(Read Only Memory)等から構成された制御部201と、各ノードNnから収集した各ノードNnの記憶部の空き記録容量、ノードID、IPアドレスを含むノード情報が記憶保存(格納)されたログデータベース202aを備え、各種データ及びプログラム等を記憶保存(格納)するためのHD等から構成された記憶部202と、ネットワークを通じて各ノードNn、コンテンツ投入サーバCS等、他の装置との間の情報の通信制御を行なうための通信部203と、当該ログ収集サーバLSを操作する操作者からの指示を受け付け当該指示に応じた指示信号を制御部201に出力する入力部(例えば、キーボード、マウス或いは、操作パネル等)204と、を備えて構成され、制御部201、記憶部202、通信部203及び入力部204、はバス205を介して相互にデータの授受が可能に接続されている。
そして、制御部201におけるCPUが記憶部202等に記録された各種プログラムを実行することにより、制御部201が、実施形態に係るログ収集サーバLSとしての全体動作を統括制御する。
図6に記憶部202に備えたログデータベース202aに記憶保存されたノード情報の一例を示す。
制御部201は、各ノードNnから定期的に空き記録容量特定情報を受信すると、ログデータベース202aに各ノードNnのノードID及びIPアドレスと対応付けて記憶する。このノードIDとIPアドレスは、空き記録容量特定情報と共に定期的に各ノードNnから受信してもよく、或いは各ノードNnがコンテンツ分散保存システムSに参加後、初めて(初回)ログ収集サーバLSに対して空き記録容量特定情報を送信する場合にだけ各ノードNnがノードID及びIPアドレスを空き記録容量特定情報と共にログ収集サーバLSに送信し、ログ収集サーバLSがこれをログデータベース202aに対応付けて保存し、各ノードNnは、2回目以降は、ノードIDと空き記録容量特定情報のみを送信し、ログ収集サーバLSは、受信したノードIDをキーとして共に受信した空き記録容量特定情報をログデータベース202aに対応付けて保存するよう構成すればよい。
以上の手順に従い、ログデータベース202aには、コンテンツ分散保存システムSに参加する全てのノードNnの記憶部の空き記録容量(Nx_n)、ノードID(Nx_n)、及びIPアドレス(Nx_n)が夫々対応付けられてノード情報Nx_1、ノード情報Nx_2、ノード情報Nx_3、、、ノード情報Nx_nとして登録(格納)されている。
そして、制御部201は、コンテンツ投入サーバCSからの要求に応じて、ログデータベース202aから、空き記録容量が大きいノード情報を要求された数(第2所定数)だけ抽出して保存先候補リストを生成してコンテンツ投入サーバCSに送信する。
[2−3.コンテンツ投入サーバCSの構成及び機能]
続いて、コンテンツ投入サーバCSの概略構成について図7を用いて説明する。なお、図7は実施形態に係るコンテンツ投入サーバCSの概略構成を示すブロック図である。
図7に示すように、実施形態に係るコンテンツ分散保存システムSに含まれるコンテンツ投入サーバCSは、演算機能を有するCPU、作業用RAM(Random Access Memory)、各種データ及びプログラムを記録するROM(Read Only Memory)等から構成された制御部301と、投入するコンテンツデータや投入済みのコンテンツデータ、ログ収集サーバLSから取得した保存先候補リスト及びその他の必要なプログラム等を記録保存(格納)するためのHD等から構成されたノード情報記憶手段としての記憶部302と、ネットワーク8を通じて各ノードNn、ログ収集サーバLS等、他の装置との間の情報の通信制御を行なうための通信部303と、当該コンテンツ投入サーバCSを操作する操作者からの指示を受け付け当該指示に応じた指示信号を制御部301に出力する入力部(例えば、キーボード、マウス或いは、操作パネル等)304と、を備えて構成され、制御部301、記憶部302、通信部303及び入力部304は、バス305を介して相互にデータの授受が可能に接続されている。
そして、制御部301におけるCPUが記憶部302等に記録されたプログラム(本発明の保存指示処理プログラムを含む)を読み出して実行することにより、全体動作を統括制御し、上記各構成部材と協動して当該コンテンツ投入サーバCSを本発明における保存指示装置として機能させる。そして、保存指示装置としての処理を行なう制御部301は、本発明における取得手段、ノード情報記憶手段、選択手段、保存指示手段、判定手段及び識別情報生成手段として機能する。なお、上記保存指示処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
制御部301は、新たにコンテンツ分散保存システムSに投入するコンテンツのレプリカを、記憶部302に保存した保存先候補リストから第1所定数のノードNnを選択し、選択したノードNnに対してレプリカと保存先候補リストを送信してレプリカの保存を指示する。
なお、本実施形態では、コンテンツ投入サーバCSの制御部301がコンテンツのレプリカの保存を指示する際には、当該指示と共にコンテンツのレプリカが保存先のノードNnに共に送信される、いわゆる「プッシュ式」のコンテンツ保存が行なわれるよう構成する。そして、コンテンツのレプリカの保存を指示されたノードNnは、レプリカを自己の記憶部12のキャッシュ領域に記録してコンテンツ事前保持ノードとなると共に、当該レプリカを保存したことをそのルートノードに知らせるために(言い換えれば、該システムSに参加している他のノードNnに対して公開するために)、当該レプリカのコンテンツID及び自己のノード情報が含まれるパブリッシュメッセージを、そのルートノードに向けて(ルートノード宛に)送出する。これにより、パブリッシュメッセージは、上述したコンテンツ所在問合せ(検索)メッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。
また、コンテンツ投入サーバCSは、ノード情報Nx_1からノード情報Nx_10の10個のノード情報が掲載された保存先候補リストをログ収集サーバLSから取得しているが、コンテンツ投入サーバCSが、新たなコンテンツをシステム内に保存させる数(保存数)を当該コンテンツの人気度等に応じて決定し、当該保存数に応じて、ログ収集サーバLSに要求するノード情報の数(第2所定数)を適宜変更すればよく、例えば、人気が高く公開後に多数のレプリカ配信要求が予測される場合には、保存数を多く決定し、少なくとも決定した保存数以上の数をノード情報を要求する等のように構成すればよい。なお、コンテンツの人気度とは、例えば、コンテンツが映画であって、既に劇場公開されているような場合、その観客動員数に応じて決定したり、或いは、コンテスト等の受賞履歴等に基づいて決定したり、或いは、コンテンツが音楽である場合には、そのアーティストの過去の作品の売り上げ等を考慮して決定すればよい。
そして、コンテンツのレプリカが他のノードNn間で共用可能となる日時である公開日時を示す情報(公開日時情報)を、保存指示情報又はコンテンツのレプリカに含んで、選択したノードNnに対して送信するよう構成する。保存指示情報を受信してレプリカの保存指示を受けたノードNnは、当該レプリカをコンテンツIDと対応付けて自己の記憶部12のキャッシュ領域に記憶して、登録処理(パブリッシュメッセージの送信)を行なう。
その後、保存指示情報又はコンテンツのレプリカに含んで取得した公開時刻情報が示す公開日時に至ると、コンテンツの情報(コンテンツID,タイトルなど)がシステム運営者が配布するカタログリストに掲載されて、コンテンツ分散保存システムSに参加する他のノードNnは、カタログリストに掲載されたコンテンツのコンテンツIDに基づいて所望のレプリカの所在を問い合わせるコンテンツ所在問い合わせメッセージ(クエリ)を生成してルートノードに向けて送出し、レプリカを保持するノードNnを知り、当該レプリカを保持するノードNnから当該レプリカのダウンロードすることが可能となる。
また、コンテンツ投入サーバCSがログ収集サーバLSに要求するノード情報の数(第2所定数)は、保存指示を受けたノードNnが選択するノードNnの数(第1所定数)よりも大きい値とする。
また、コンテンツ投入サーバCSからレプリカの保存指示を受けたノードNnは、コンテンツ分散保存システムSに参加する他のノードNnに対してコンテンツのレプリカの保存を指示する。すなわち、コンテンツ投入サーバCSからレプリカの保存指示を受けたノードNnが保存指示装置として機能することとなる。そして、この保存指示を受けた他のノードNnも同様にコンテンツ分散保存システムSに参加する他のノードNnに対してコンテンツのレプリカの保存を指示する。このように、保存指示装置として機能するコンテンツ投入サーバCSまたはシステムSに参加するノードNnは、公開日時に至るまでシステムSに参加するノードNnに対してレプリカの保存指示を繰り返し行なうことにより、新規コンテンツのレプリカをシステムS内に公開前に事前に分散保存させることができるようになっている。
[3.保存先候補リスト]
続いて、レプリカの保存指示を行なう際に各ノードNn間で送受信される保存先候補リストの分割について説明する。
コンテンツ投入サーバCSから保存指示情報を受信したノードNnは(保存指示情報受信手段)、コンテンツ投入サーバCSから取得した保存先候補リストを、保存用の保存先候補リストと送信用の保存先候補リストに分割する。図8は、コンテンツ投入サーバCSから受信した保存先候補リストを、ノード情報が半数ずつになるよう2分割した例である。
コンテンツ投入サーバCSから例えば10個(第2所定数)のノード情報が掲載された保存先候補リスト(ノード情報Nx_1〜Nx_10)を取得し(取得手段)、自己の記憶部12に保存する(ノード情報記憶手段)。その後、保存した保存先候補リスト(ノード情報Nx_1〜Nx_10)から5個(第3所定数の一例)のノード情報を抽出して分割して、分割ノード情報としての保存先候補リスト(ノード情報Nx_6〜Nx_10)を生成する(分割ノード情報生成手段)。
そして、自己の記憶部12に記憶している保存先候補リスト(ノード情報Nx_1〜Nx_10)を、分割(抽出)したノード情報Nx_6〜Nx_10を除いた、保存用の保存先候補リスト(ノード情報Nx_1〜Nx_5)に更新し(更新手段)、記憶部12に記憶した保存先候補リスト(ノード情報Nx_1〜Nx_5)の中から、保存指示をするノードNnを選択し(選択手段)、選択したノードNnに対して抽出したノード情報を送信用の保存先候補リスト(ノード情報Nx_6〜Nx_10)としてレプリカと共に送信し、保存を指示する(保存指示手段)。
以下、ログ収集サーバLSからコンテンツ投入サーバCSを経て各ノードNnへと送信される保存先候補リストについて図9乃至図11を用いて説明する。
図9は、ログ収集サーバLS、コンテンツ投入サーバCS、及びノードN5、N1間において授受される保存先候補リストの様子を示す図であり、図10は、ノードN1、N7、N8間において授受される保存先候補リストの様子を示す図である。
ログ収集サーバLSはログデータベース202aから、最大の空き記録容量を有するノード情報から第2所定数(コンテンツ投入サーバCSからの要求された数)分のノード情報を抽出し、当該ノード情報が掲載された保存先候補リスト(ノード情報Nx_1〜Nx_10)を生成してコンテンツ投入サーバCSに送信する。
コンテンツ投入サーバCSは、受信した保存先候補リスト(ノード情報Nx_1〜Nx_10)を自己の記憶部302に記憶し、記憶した保存先候補リスト(ノード情報Nx_1〜Nx_10)からレプリカの保存を指示するノードNnをランダムに1つ選択する。同図ではノードN5を選択し、選択したノードN5に対して保存先候補リスト(ノード情報Nx_1〜Nx_10)と共にレプリカの保存を指示する。
ノードN5は、コンテンツ投入サーバCSから保存先候補リスト(ノード情報Nx_1〜Nx_10)を受信してレプリカの保存の指示を受けると、保存先候補リスト(ノード情報Nx_1〜Nx_10)から第3所定数のノード情報を抽出(分割)して、抽出したノード情報を除いた保存用の保存先候補リスト(ノード情報Nx_1〜Nx_5)を自己の記憶部12に記憶する。この自己の記憶部12に記憶した保存先候補リスト(ノード情報Nx_1〜Nx_5)からレプリカの保存を指示するノードをランダムに1つ選択する。同図ではノードN1を選択し、選択したノードN1に対して抽出したノード情報からなる送信用の保存先候補リスト(ノード情報Nx_6〜Nx_10)と共にレプリカの保存を指示する。
次いで、ノードN1は、ノードN5から5つ(第2所定数)のノード情報(Nx_6〜Nx_10)が掲載された保存先候補リストを受信してレプリカの保存の指示を受けると、保存先候補リスト(ノード情報Nx_6〜Nx_10)から第3所定数のノード情報を抽出(分割)して、抽出したノード情報を除いた保存用の保存先候補リスト(ノード情報Nx_6〜Nx_7)を自己の記憶部12に記憶する。この自己の記憶部12に記憶した保存先候補リスト(ノード情報Nx_6〜Nx_7)からレプリカの保存を指示するノードをランダムに1つ(第1所定数)選択する。同図ではノードN7を選択し、選択したノードN7に対して抽出したノード情報からなる送信用の保存先候補リスト(ノード情報Nx_8〜Nx_10)と共にレプリカの保存を指示する。
また、ノードN5は、ノードN1に対してレプリカの保存を指示した後、図11に示すように、保存を指示したノードN1の情報を自己の記憶部12に記憶した保存先候補リストから削除して更新し、更新後の保存先候補リスト(ノード情報Nx_2〜Nx_5)から更に第3所定数のノード情報を抽出(分割)して、抽出したノード情報を除いた保存用の保存先候補リスト(ノード情報Nx_2〜Nx_3)を自己の記憶部12に記憶する。そして、この自己の記憶部12に記憶した保存先候補リスト(ノード情報Nx_2〜Nx_3)からレプリカの保存を指示するノードをランダムに1つ選択する。同図ではノードN3を選択し、選択したノードN3に対して抽出したノード情報からなる送信用の保存先候補リスト(ノード情報Nx_4〜Nx_5)と共にレプリカの保存を指示する。
そして、ノードN3も同様にしてノードN1から受信した保存先候補リスト(ノード情報Nx_4〜Nx_5)を保存用と送信用に分割し、保存用の保存先候補リストから選択したノードN4に対してレプリカの保存を指示する。
なお、図11に示す例では、ノードN4がノードN5のノード情報のみが掲載された保存先候補リストを受信しており、ノードN4はノードN5に対して保存を指示することとなる。しかし、上述したようにノードN5は既にコンテンツ投入サーバCSからの保存指示に従ってレプリカを保存しているため、このままではノードN5に対して保存指示が重複してしまう。このような場合に備えて、コンテンツ投入サーバCSが、保存先候補リストをノードN5に送付する際には、当該ノードN5のノード情報を保存先候補リストから削除して送信するよう構成してもよい。
以上説明したように、コンテンツ投入サーバCSから保存指示を受けたノードNnが、保存指示装置として機能し、保存先候補リストに掲載された記憶部の空き記録容量が比較的大きいノードNnに対してレプリカの保存を指示し、保存指示を受けたノードNnがレプリカを保存すると共に、保存指示を受けたノードNnが更に保存先候補リストに基づいて他のノードNnにレプリカの保存を指示していく。そしてこのようなコンテンツのレプリカの保存指示と当該指示に基づく保存が、保存指示元であるコンテンツ投入サーバCS又は他のノードNnから保存指示情報又はコンテンツのレプリカに含んで受信した公開日時情報が示すコンテンツ公開日時まで繰り返し行なわれることとなる。
ところで、保存先候補リストは、各ノードNnにおいて保存指示をする度に分割され更新されるので、公開日時前に保存先候補リストに掲載されたノード情報がなくなってしまうことが想定される。また、コンテンツ投入サーバCSがログ収集サーバLSから保存先候補リストを取得できない場合や、コンテンツ投入サーバCSから保存指示を受けたノードNnが、コンテンツ投入サーバCSから保存先候補リストを受信できなかった場合も想定される。このような場合、例えば、コンテンツ投入サーバCSがログ収集サーバLSから保存先候補リストを取得できなかった場合には、コンテンツ投入サーバCSの制御部301が識別情報生成手段として機能し、当該コンテンツ投入サーバCSにおいて、第1所定数のノードIDを生成し、生成したノードIDに向けて保存指示メッセージを送出するよう構成する。また、コンテンツ投入サーバCSから保存指示を受けたノードNnが、コンテンツ投入サーバCSから保存先候補リストを受信できなかった場合にも、制御部11が各ノードNnにおいて第1所定数のノードIDを生成し、生成したノードIDに向けて保存指示メッセージを送出する。
そして、送出された保存指示メッセージは、生成したノードIDと同一のノードIDを有するノードNn、或いは当該生成したノードIDに近いノードIDを有するノードNnに到達し、この保存指示メッセージの最終到達先であるノードNnがレプリカを保存することとなる。なお、この場合、保存指示メッセージとレプリカとを共に送出してレプリカを「プッシュ式」で送信する構成のほか、保存指示メッセージのみを送信し、保存指示メッセージの最終到達先であるノードNnがメッセージに含まれる保存指示元のノード情報(ノードID、IPアドレス等)に基づいて保存指示元(コンテンツ投入サーバ、又はノードNn)に対して保存すべきレプリカを要求してレプリカを取得するよう構成してもよい。
[4.各装置の処理]
以上の動作において、ログ収集サーバLS、コンテンツ投入サーバCS、及び各ノードNnにおける処理を、図を参照して、詳しく説明する。
[4−1.ノードNnの空き記録容量特定情報送信処理]
図12は、コンテンツ分散保存システムSに参加している任意のノード装置Nnが、空き記録容量特定情報をログ収集サーバ12に送信する際の制御部11の処理を示すフローチャートであり、1日1回など、所定期間毎に定期的に処理が開始される。
先ず、制御部11は、記憶部12の空き記録容量を取得する(ステップS21)。
次に、取得した空き記録容量に基づいて空き記録容量特定情報を生成し(ステップS22)、ノードIDと共に空き記録容量特定情報をログ収集サーバLSに送信して(ステップS23)処理を終了する。なお、空き記録容量特定情報の最初の送信の場合には、自己のIPアドレスも共にログ収集サーバLSに送信する。
[4−2.ログ収集サーバLSの処理]
図13は、ログ収集サーバLSにおける制御部201の処理を示すフローチャートであり、例えば、システム管理者等が入力部204を介して操作して当該処理の実行を指示した場合(或いは通信部203を介してシステム管理者が操作する他の装置から処理の実行を指示する旨の情報を受信した場合)に開始する。
先ず、制御部201は、ログ収集サーバLSの電源がオフとされたか否かを判定し(ステップS30)、オフとされていなければ(ステップS30:No)、コンテンツ分散保存システムSに参加するノードNnから空き記録容量特定情報を受信したか否かを判定する(ステップS31)。
判定の結果、空き記録容量特定情報を受信した場合(ステップS31:Yes)には、受信した空き記録容量特定情報が示す空き記録容量を、共に受信したノードIDをキーとして当該ノードIDに対応付けてログデータベース202aに保存する(ステップS32)。このノードNnからの初回の受信であれば、共に受信したIPアドレスも対応付けて保存し、2回目以降の受信であれば、保存している空き記録容量を新たに受信した空き記録容量特定情報に基づいて更新する。
一方、空き記録容量特定情報を受信していない場合(ステップS31:No)には、ステップS33へ移行する。
次いで、コンテンツ投入サーバCSから保存先候補リストの送信を要求されたか否かを判定する(ステップS33)。
判定の結果、保存先候補リストの送信を要求されていない場合(ステップS33:No)には、ステップS30へ移行し、保存先候補リストの送信を要求された場合(ステップS33:Yes)には、ログデータベース202aに登録されているノード情報のうち、より大きい空き記録容量を有するノード情報を、要求された個数分リスト化して保存先候補リストを生成する(ステップS34)。つまり、10個要求された場合には、最大の空き記録容量を有するノード情報から10番目に大きい空き記録容量を有するノード情報までの10個のノード情報からなる保存先候補リストを生成する。そして、生成した保存先候補リストをコンテンツ投入サーバCSに送信し(ステップS35)、ステップS30の処理へ移行し、電源がオフとなるまでステップS30からステップS35の処理を繰り返し行なう。
そして、電源がオフとなった場合に(ステップS30:Yes)、処理を終了する。
[4−3.コンテンツ投入サーバCSの処理]
図14は、コンテンツ投入サーバCSにおける制御部301の処理を示すフローチャートであり、例えば、システム管理者等が入力部304を介して操作して当該処理の実行を指示した場合(或いは通信部303を介してシステム管理者が操作する他の装置から処理の実行を指示する旨の情報を受信した場合)に本発明の保存指示処理プログラムが読み出され処理を開始する。
先ず、制御部301は、コンテンツ投入サーバCSの電源がオフとされたか否かを判定し(ステップS40)、オフとされていなければ(ステップS40:No)、新たにコンテンツ分散保存システムSに投入すべきコンテンツがあるか否かを判定する(ステップS41)。
判定の結果、投入するコンテンツがない場合(ステップS41:No)には、ステップS40へ移行し、投入するコンテンツがある場合(ステップS41:Yes)には、当該コンテンツの人気度等に基づいてノード情報の個数(第2所定数)を指定してログ収集サーバLSに対して保存先候補リストを要求する(ステップS42)。
続いて、ログ収集サーバLSから保存先候補リストを取得できたか否かを判定し(ステップS43)、取得できた場合(ステップS43:Yes)には、取得した保存先候補リストから第1所定数(例えば1個)のノードNnを選択し(ステップS44)、選択したノードNnに対して保存先候補リストを送信してコンテンツのレプリカの保存を指示(保存指示情報を送信)する(ステップS45)。
一方、ログ収集サーバLSから保存先候補リストを取得できなかった場合(ステップS43:No)には、制御部303は第1所定数のノードIDを生成し(ステップS46)、生成したノードIDのノードNnに向けてコンテンツのレプリカの保存を指示する保存指示メッセージ(保存指示情報)を送出する(ステップS47)。
その後、ステップS45又はステップS47にて保存を指示した後に、ステップS40の処理へ移行し、電源がオフとなるまでステップS40からステップS47の処理を繰り返し行なう。
そして、電源がオフとなった場合に(ステップS40:Yes)、処理を終了する。
[4−4.ノードNnのメイン処理]
図15は、コンテンツ分散保存システムSに参加している任意のノードNnにおける制御部11のメイン処理を示すフローチャートであり、コンテンツ分散保存システムSへの参加後(例えば、コンタクトノードへのアクセスの後)に本発明の保存指示処理プログラム及びノード処理プログラムが読み出され処理が開始する。なお、上述した「4−1.空き記録容量特定情報送信処理」が実行されている場合には、空き記録容量特定情報送信処理と並行して行なわれることとなる。
先ず、制御部11は、ノードNn自身の電源がオフとされたか否かを判定し(ステップS60)、オフとされていなければ(ステップS60:No)、コンテンツ投入サーバCSまたは他のノードNnからコンテンツのレプリカの保存が指示されたか否かを判定する(ステップS61)。
判定の結果、レプリカの保存が指示された場合には保存指示されたコンテンツのレプリカを自己の記憶部12に保存可能か否かを判定する(ステップS62)。具体的には、記憶部12の空き記録容量と保存指示されたレプリカのデータ容量等に基づいて、保存指示されたレプリカを保存可能か否かを判断することができる。なお、既に記憶しているレプリカの重要性と保存指示されたレプリカの重要性(例えば人気度が高いほうを優先して保存しておく等)を比較して、比較の結果、既に記憶しているレプリカを記憶部12から削除して空き記録容量を確保するよう構成してもよい。
判定の結果、保存指示されたコンテンツのレプリカを自己の記憶部12に保存可能である場合(ステップS62:Yes)、保存指示元(コンテンツ投入サーバCSまたは他のノードNn)からコンテンツのレプリカと保存先候補リストを受信して(ステップS63)、コンテンツのレプリカを自己の記憶部12に保存する(ステップS64)。また、保存先候補リストは記憶部12に記憶する。
一方、レプリカの保存が指示されていない場合(ステップS61:No)、及び保存指示されたレプリカの保存が可能でない場合(ステップS62:No)には、ステップS60へ移行する。
そして、レプリカの保存(ステップS64)後、自身が保存指示装置として機能し(ステップS65)、保存先候補リストのノード情報に基づいて他のノードNnにレプリカの保存指示を行なう。
先ず、記憶部12に保存先候補リストがあるか否かを判定し(ステップS66)、保存先候補リストがある場合(ステップS66:Yes)には、保存先候補リストを送信用の保存先候補リストと保存用の保存先候補リストに分割する(ステップS67)。具体的には、記憶部12に記憶した保存先候補リストから第3所定数のノード情報を抽出して送信用の保存先候補リストを生成し、記憶部12に記憶した保存先候補リストを、当該抽出したノード情報を除いた保存先候補リストに更新する。
次いで、記憶部12に記憶した(保存用の)保存先候補リストから、第1所定数のノードNnをランダムに選択し(ステップS68)、選択したノードNnに、生成した保存先候補リストとコンテンツのレプリカを送信して、レプリカの保存を指示(保存指示情報を送信)し、当該ノードNnを記憶部12の保存先候補リストから削除する(ステップS69)。
一方、記憶部12に保存先候補リストがない場合(ステップS66:No)には、制御部11は第1所定数のノードIDを生成し(ステップS70)、生成したノードIDのノードNnに向けてコンテンツのレプリカの保存を指示する保存指示メッセージ(保存指示情報)を送出する(ステップS71)。
そして、コンテンツのレプリカの公開日時まで上記ステップS66からS69のループ処理を行ない、公開日時に至るとループ処理を終了する(ステップS72)。
その後、ステップS60に移行し、電源がオフとなった場合に(ステップS60:Yes)、処理を終了する。
以上説明したように、コンテンツ分散保存システムSに新たなコンテンツのレプリカを投入する際に、コンテンツ投入サーバCS(又はノードNn)は、記録部12の空き記録容量が比較的大きいノードNnが掲載された保存先候補リストから第1所定数のノードNnを選択し、選択したノードNnに対して保存を指示するため、各ノードNnの記録部12の記録容量をバランスよく有効に利用することが可能なコンテンツ分散保存システムSを実現することができる。
また、ステップS68で第1所定数のノードNnをランダムに選択するよう構成したので、最も空き記録容量が大きいノードNnに保存指示が集中してしまうことを防止することができる。
なお、上述した実施形態では、第1所定数を「1」とし、保存先候補リストから1つのノードNnを選択するよう構成したが、これに限定されず、複数のノードNnを選択するよう構成してもよい。複数のノードNnを選択する場合(第1所定数が2以上)には、保存先候補リストを、保存指示先として選択した各ノードNnに送信する分(第1所定数)と、自己が保存する分(1)である「第1所定数+1」に分割すればよい。例えば、1万個(第2所定数)のノード情報が掲載された保存先候補リストを取得し、この保存先候補リストから第1所定数として100個のノードNnを選択してレプリカの保存を指示するよう構成してもよい。第1所定数は、第2所定数に応じて、或いは、公開日時までの期間(例えば、公開日時まで時間が無い場合には第1所定数を大きくしてできるだけ早く多数のノードNnにレプリカの事前配布を完了させる等)等を考慮して適宜変更すればよい。
また、コンテンツ投入サーバCSが、保存指示をすべき第1所定数のノードNnを選択できない場合には、ステップS46及びS47にあるように、第1所定数のノードIDを生成し、生成したノードIDのノードNnに向けてレプリカの保存を指示する保存指示メッセージを送出するよう構成したので、ログ収集サーバLSから保存先候補リストを取得できなかった場合でも、コンテンツ分散保存システムS内のノードNnに対してレプリカの保存指示を確実に行なうことができる。
更に、ノードNnが、保存指示をすべき第1所定数のノードNnを選択できない場合にも、ステップS70及びS71にあるように、第1所定数のノードIDを生成し、生成したノードIDのノードNnに向けてレプリカの保存を指示する保存指示メッセージを送出するよう構成したので、保存指示や保存指示において保存先候補リストの分割が繰り返し行なわれたことによって公開日時前に保存先候補リストのノード情報が無くなってしまい、第1所定数のノードNnを選択できない場合であっても、公開日時まで他のノードNnに対するレプリカの保存指示を滞らせることなく円滑に遂行することができる。また、各ノードNn(及びコンテンツ投入サーバCS)が保存指示をすべき第1所定数のノードNnを選択できない場合の他の変形例として、ログ収集サーバLSにアクセスして、保存先候補リストを要求するよう構成してもよい。この場合、少なくとも第1所定数以上のノード情報が掲載された保存先候補リストをログ収集サーバLSに要求し取得すればよい。これによれば、各ノードNnは最新のノード情報からなる保存先候補リストを取得することができる。
また、保存指示を受けたノードNnは、他のノードNnに対して保存指示を行なう際に、自己の保存先候補リストを分割して生成した送信用の保存先候補リストを保存指示先のノードNnに送信するよう構成したので、保存指示を受けたノードNnも、保存先候補リストに基づいて更にレプリカの保存指示を送信することができる。
また、保存を指示したノードNnは、生成した送信用の保存先候補リストのノード情報を除いて自己の保存先候補リストを更新し、更新後の保存先候補リストに基づいて、ノードNnの選択と、選択したノードNnに対するレプリカの保存指示を行なうよう構成したので、各ノードNn間でレプリカの保存指示処理を分担しあうことができる。
更に、レプリカの保存を指示したノードNnのノード情報を記憶部12に記憶した保存先候補リストから削除するよう構成したので、同じノードNnに重複してレプリカの保存指示を行なうことを防止することができる。
なお、ノードNnは、レプリカの保存を指示したノードNnにレプリカが確実に保存できたことを確認した後に、当該ノードNnのノード情報を保存先候補リストから削除するよう構成してもよい。この場合、保存指示を受けたノードNn(保存指示先)は、レプリカを保存した後に保存指示元であるノードNnに対して保存完了の報告等を通知するよう構成すればよい。そして、保存指示元のノードNnは、保存指示先のノードNnから保存完了の報告が通知されてこない場合には、保存指示先のノードNnを保存先候補リストから削除すると共に、保存指示先のノードNnのノード情報に掲載されたノードIDに向けてレプリカの保存を指示する保存指示メッセージを送出するよう構成すればよい。このメッセージは、当該ノードIDと近いノードIDを有するノードNnに到達することとなり、到達したノードNnがレプリカの保存指示を受け、レプリカを保存することとなる。
更に、ステップS62にて保存指示されたコンテンツのレプリカが保存不可能であると判断された場合には、保存指示元のノードNnに対して、保存指示不可報告を通知するよう構成すればよい。そしてこれを受けた保存指示元のノードNnは、上記と同様に、通知をしてきた保存指示元のノードNnのノードIDに向けてレプリカの保存を指示するよう構成すればよい。
なお、上記実施形態におけるコンテンツ分散保存システムSは、DHTを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。