以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
[1.コンテンツ分散保存システムの構成等]
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムの概要構成等について説明する。
図1は、本実施形態に係るコンテンツ分散保存システムにおける各ノード装置の接続態様の一例を示す図である。
図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を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9(論理的なネットワーク)である。かかるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。
そして、コンテンツ分散保存システムS(言い換えれば、オーバーレイネットワーク9)に参加している各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。また、当該ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数(例えば、SHA−1等)によりハッシュ化した値(例えば、bit長が160bit)であり、一つのID空間に偏りなく分散して配置されることになる。
なお、コンテンツ分散保存システムSへの参加は、参加していないノードNn(例えば、ノードN8)が、参加している任意のノードNn(例えば、当該システムSに常時参加しているコンタクトノード)に対して参加要求を示す参加メッセージを送信することによって行われる。
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定しており、具体的には、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。
コンテンツ分散保存システムSに参加している1台のノードNnは、該システムSに参加している全てのノードNnのうち、必要最低限のノードNnのノード情報をルーティングテーブルに登録しておき、ノード情報を知らない(記憶していない)ノードNnについては、各ノードNn間で互いに各種メッセージを転送し合って届けてもらうようになっている。
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
ところで、コンテンツ分散保存システムSにおいては、内容の異なる様々なコンテンツ(例えば、映画や音楽等)のレプリカが所定のファイル形式で複数のノードNnに分散して保存(格納)されており、各ノードNn間で当該レプリカを利用可能になっている。例えば、ノードN5には、タイトルがXXXの映画のコンテンツのレプリカが保存されており、一方、ノードN3には、タイトルがYYYの映画のコンテンツのレプリカが保存されるというように、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存されている。
また、これらのコンテンツのレプリカには、夫々、コンテンツ名(タイトル)、コンテンツID(コンテンツ毎に固有の識別情報)、及びコンテンツの評価を表す評価値等の情報が付与されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値(或いは、コンテンツデータの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される(ノードIDと同一のID空間に配置)。或いは、システム管理者が、コンテンツ毎に一意のID値(ノードIDと同一ビット長)を付与しても良い。この場合は、コンテンツ名とそのコンテンツIDの対応が書かれたコンテンツカタログ情報が、全ノードNnに配布される。なお、上記評価値は、例えば、コンテンツの人気度や重要度を表すものであり、例えば人気が高いコンテンツは、その評価値も高く設定されている。また、当該評価値は、レプリカを保存した各ノードNnにより管理されることになる。
また、このように分散保存されているレプリカの所在、つまり、当該レプリカを保存したノードNnのノード情報と当該コンテンツのレプリカに対応するコンテンツID等の組が含まれるインデックス情報が、当該コンテンツのレプリカの所在を管理しているノードNn(以下、「ルートノード」、又は「コンテンツデータ(コンテンツID)のルートノード」という)等により記憶(インデックスキャッシュに記憶)、管理されるようになっている。
つまり、コンテンツのレプリカを保存しているコンテンツ保持ノードのノード情報は、他のノードNnからの問い合わせに応じて提供可能なようにルートノードにより管理されている。
例えば、タイトルがXXXの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN4により管理され、タイトルがYYYの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツ(コンテンツID)のルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近い(例えば、上位桁がより多く一致する)ノードIDを有するノードNnであるように定められる。
そして、あるノードNnのユーザが、所望するコンテンツのレプリカを取得したい場合、当該レプリカの取得を望むノードNn(以下、「ユーザノード」という)は、当該ユーザにより例えばコンテンツカタログ情報から選択されたコンテンツのコンテンツID及び自己のIPアドレス等を含むコンテンツ所在問合せ(検索)メッセージ(クエリ)を生成し、これを自己のDHTを用いたルーティングテーブルにしたがって他のノードNnに対して送出する。つまり、ユーザノードは、コンテンツ所在問合せ(検索)メッセージを、ルートノードに向けて(ルートノード宛に)送出する(つまり、ルートノードにコンテンツのレプリカの所在を問い合わせる)。これにより、コンテンツ所在問合せ(検索)メッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
なお、各ノードNnにおいてユーザにより選択されるべきコンテンツのコンテンツ名、コンテンツID、公開日時等の属性情報は、例えばコンテンツ提供サーバから全てのノードNnに配信されるコンテンツカタログ情報に記述されている。ここで、公開日時は、各ノードNnにおいてコンテンツが利用可能となる日時を示している。例えば、この公開日時は、各ノードNnにおいて取得対象となるコンテンツをコンテンツカタログ情報上で選択可能となる日時である(公開日時までは、コンテンツカタログ情報上で選択できない)。
また、上記コンテンツ所在問合せ(検索)メッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
上記コンテンツ所在問合せ(検索)メッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックスキャッシュから取得して、当該インデックス情報を、該コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信する。こうしてインデックス情報を取得したユーザノードは、当該インデックス情報に含まれるあるコンテンツ保持ノードのIPアドレス等に基づいて当該コンテンツ保持ノードに接続して、コンテンツ送信要求メッセージを送信し、そこからコンテンツのレプリカを取得(ダウンロード)する。
なお、ルートノードは、当該インデックス情報に含まれるIPアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカを取得することもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、当該ルートノードと同じインデックス情報をキャッシュしているキャッシュノードから当該インデックス情報を取得することもできる。
また、以上のようにユーザノードからのコンテンツ要求に応じて自己が保存しているコンテンツのレプリカを提供したコンテンツ保持ノードは、自己が記憶、管理している当該コンテンツの評価値を所定値減算(例えば、当該評価値を半分に減少)することになる。そして更に、当該コンテンツ保持ノードは、減算した分の評価値をそのコンテンツのレプリカの提供を受けたユーザノードに対して与える(移譲する)ことになる。このようにするのは、コンテンツが1つ複製され2つになったため、その分、評価値を分割する趣旨である。また、評価値の低いコンテンツが新たなコンテンツのダウンロードのために削除される際には、当該削除するコンテンツ保持ノードが、同じコンテンツを持っている他のコンテンツ保持ノードに評価値を移譲するようになっている。更に、コンテンツ保持ノードが、ユーザノードに対してコンテンツのレプリカを提供する場合には、当該コンテンツの評価値を少し増やして(例えば1を加算)から、上述したように評価値を所定値減算(例えば、2分割)する。これにより、ダウンロードされればされるほど総評価値は高くなっていくことになる。ただし、評価値は時間が経過することで小さくなる仕組みであるので、どのコンテンツの総評価値も時間が経てば次第に低くなる。
こうして、新たなコンテンツのレプリカの提供を受けたユーザノードは、当該レプリカに係るコンテンツの評価値と、既に保存されているレプリカに係るコンテンツの評価値とを比較(複数保存されている場合、夫々のコンテンツの評価値と比較)し、例えば、最もコンテンツの評価値が低いレプリカを削除する。ここで当該レプリカに係るコンテンツの評価値が最も低くなければ、当該レプリカは新たに保存されることになる。従って、移譲を受けたコンテンツの評価値が高いほど、それだけ、そのレプリカが当該ユーザノードに保存される確率が高くなるので、当該システムSに保存されるレプリカの数も多くなる。
そして、コンテンツ保持ノードから取得したコンテンツのレプリカを保存(例えば、ハードディスクに記録)したユーザノードは、当該レプリカを保存したことをそのルートノードに知らせるために(言い換えれば、該システムSに参加している他のノードNnに対して公開するために)、当該レプリカのコンテンツID及び自己のノード情報が含まれるパブリッシュ(登録通知)メッセージを生成し、該パブリッシュメッセージを、そのルートノードに向けて(ルートノード宛に)送出する。
これにより、パブリッシュメッセージは、コンテンツ所在問合せ(検索)メッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、該ルートノードは、受信したパブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報を登録(インデックスキャッシュ領域に記憶)することになる。こうして、上記ユーザノードは、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
なお、上記パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報は、ルートノードに至るまでの転送経路におけるキャッシュノードにおいても登録(キャッシュ)される。
以上説明したコンテンツ分散保存システムSにおいて、各コンテンツの総評価値が総評価値管理サーバMS(総評価値管理装置の一例)により管理される。ここで、コンテンツの総評価値とは、対象のコンテンツのレプリカを保存している各ノードNnにより管理されているコンテンツの評価値の総和を表すものである。かかる総評価値は、対象のコンテンツのレプリカを保存している全てのノードNnから各評価値を得れば正確に求められるが、この場合、ノードNnの数が多くなると多大な時間とコストがかかる。従って、本実施形態においては、総評価値管理サーバMSが一部のノードNnからコンテンツの評価値を取得することにより当該コンテンツの総評価値を集計(後述する演算式により算出)し、総評価値をコンテンツ毎に管理する構成としている。
[2.総評価値管理サーバMSの構成及び機能等]
次に、図2を参照して、総評価値管理サーバMSの構成及び機能について説明する。
図2は、総評価値管理サーバMSの概要構成例を示す図である。
総評価値管理サーバMSは、図2に示すように、演算機能を有するCPU,作業用RAM,各種データおよびプログラム(本発明の管理処理プログラムを含む)を記憶するROM等から構成されたコンピュータとしての制御部11と、各種データ及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部12と、ネットワーク8を通じてノードNn等間の情報の通信制御を行うための通信部13と、を備えて構成され、これらは、バス14を介して相互に接続されている。なお、上記管理処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
記憶部12には、コンテンツ分散保存システムSに参加している各ノードNnのノード情報を登録するノード管理テーブル(リスト)が記憶されている。なお、ノードNnがコンテンツ分散保存システムSに参加又は脱退する度に、これを示すメッセージが、例えば当該参加又は脱退したノードNnから総評価値管理サーバMSに送信され、上記ノード管理テーブルが更新されることになる。
また、記憶部12には、各コンテンツの総評価値を含む情報を登録する総評価値管理テーブルが記憶されている。図3は、総評価値管理テーブルに登録されている情報の一例を示す図である。図3に示すように、総評価値管理テーブルには、コンテンツID、最新の総評価値に関する情報、総評価値の最大値に関する情報、及び評価値算出履歴情報、がコンテンツ毎に対応付けられて登録されている。ここで、評価値算出履歴情報は、総評価値の平均を後述する演算式(3)により算出する場合に必要であり、演算式(4)により算出する場合は不要(代わりに、コンテンツ毎に評価値調査回数(t)が必要)となる。
また、最新の総評価値に関する情報には、最新の総評価値が含まれている。また、総評価値の最大値に関する情報には、総評価値の最大値、及びその算出時においてコンテンツ分散保存システムSに参加しているノードNnの総数(以下、「総ノード数」という)が含まれている。また、評価値算出履歴情報には、過去に算出された総評価値、及びその算出時における総ノード数が含まれている。
このような構成において、制御部11は、CPUが記憶部12等に記憶されたプログラム(本発明の管理処理プログラムを含む)を読み出して実行することにより、全体を統括制御し、ノード装置選定手段、要求情報送信手段、評価値情報受信手段、総評価値取得手段、総評価値算出手段、総評価値更新手段、総評価最大値算出手段、総評価平均値算出手段、及びランキング決定手段等として機能する。
より具体的には、総評価値の集計(調査)において、先ず、制御部11は、コンテンツ分散保存システムSに参加している複数のノードNnのうちから(上記ノード管理テーブルから)何れかのノードNnを、例えばランダムに一つ選定する。なお、ここで選定されるノードNnの数は、システムの負荷低減と評価値調査精度の向上はトレードオフの関係にあるので、システムの性能や要求される調査精度に応じて決定するのが好ましい。
次に、制御部11は、上記選定されたノードNnのノード情報を用いてこれに接続し、当該ノードNnに対して、コンテンツ(例えば、コンテンツIDで指定)の評価値の要求を示す評価値要求メッセージ(要求情報の一例)を送信する。当該評価値要求メッセージを受信したノードNnは、自己が保存しているレプリカに対応するコンテンツ(1又は互いに異なる複数のコンテンツ)のコンテンツID及びその評価値を示す評価値応答メッセージ(評価値情報の一例)を総評価値管理サーバMSに返信することになる。
そして、制御部11は、当該ノードNnから返信された評価値応答メッセージを受信する。こうして、制御部11は、当該ノードNnで管理されているコンテンツの評価値を取得し、これを用いて当該コンテンツのおおよその総評価値を、例えば、以下の演算式(1)により算出することができる。
ここで、“vt”は今回の総評価値を、“xt”は今回取得された評価値を、“nt”は総ノード数を、夫々表している。
なお、本実施形態においては、対象のコンテンツを保存しているノードNnの総数はわからないという場合を想定している。そのため、“nt”は、現在、コンテンツ分散保存システムSに参加しているノードNnの総数であり、当該ノードNnが持っていないコンテンツに関しては、“xt”が0であるとみなす。従って、何度も調査する必要がある。
仮に、“nt”を対象のコンテンツを保存しているノードNnの総数とすると、総評価値の最大値や総評価値の平均値の算出時には「多くのノードNnが保持しているが各ノードNnにおける評価値は低い状態」で、評価値使用時(ランキング作成時など)には「少数のノードNnしか保持していないが各ノードNnにおける評価値は高い状態」といった場合に対応できなくなる。つまり、この演算式(1)では、当該コンテンツのレプリカを保存しているある一つのノードNnで管理されている評価値は、コンテンツ分散保存システムSに参加している他のノードNnでも同じであることを前提としている。
しかしながら、実際には、当該評価値は、各ノードNn間でばらつきがあるので、実際の総評価値と近い値にならない場合がある。このため、制御部11は、総評価値管理テーブルに登録されている最新の総評価値(前回のコンテンツの総評価値)と、上記取得した評価値(評価値応答メッセージに示される評価値)と、に基づいて、例えば以下の演算式(2)により新たな総評価値を算出する。
ここで、“vt-1”は前回算出された総評価値(総評価値管理テーブルに登録されている最新の総評価値)を、“mt”は今回評価値応答メッセージを送信したノードNnの数(一つずつノードNnが選定される場合は、“1”)を、夫々表している。
つまり、このような演算式(2)により、前回算出された総評価値vt-1を現在の総ノード数ntで除算した評価値(vt-1/nt)と、当該総ノード数ntから今回評価値応答メッセージを送信したノードNnの数mtの数を減算した数(nt−mt)と、が乗算され、当該乗算された値と、今回取得された評価値xtと、が加算されて新たな総評価値vtが算出される。この演算式(2)によれば、上記演算式(1)によりも実際の総評価値に近い値を得ることができる(集計の度に実際の総評価値に近づいていく)。
そして、制御部11は、上記新たに算出されたコンテンツの総評価値vtにより、総評価値管理テーブルに登録されている当該コンテンツの前回の総評価値vt-1を更新する。更に、制御部11は、当該新たに算出されたコンテンツの総評価値、及びその算出時における総ノード数を総評価値管理テーブルに新規登録(評価値算出履歴情報中に登録)する。
以上説明したノードNnの選定から新たな総評価値の算出及び更新までの一連の処理は、所定の時間間隔で(例えば、定期的に)繰り返し実行されることになる。
なお、評価値応答メッセージに示されていないコンテンツIDに対応するコンテンツ、つまり、上記選定されたノードNnにおいて保存されていないコンテンツについては、評価値“0”を取得したものとみなして上記新たな総評価値が算出される。
このような総評価値の集計例は、現時点での総評価値を求める手法である。しかし、公開時の総評価値が高くても、時間が経過するにつれて総評価値が低くなるようなコンテンツも考えられる。例えば、タイトルがXXXの映画のシリーズは、1作目を公開したときの総評価値は非常に高くても、2作目を公開するころには1作目の総評価値は低くなっていることが予想される。そのため、2作目に公開時点での1作目の総評価値を参考にすると十分な総評価値が付けられない可能性がある。この問題を解決するため、現時点での総評価値を求める他に、公開から現在までの総評価値の最大値と、公開後所定期間内の総評価値の平均値と、を求めることとした。
例えば、制御部11は、新たな総評価値vtを算出した場合、当該新たな総評価値vtと前回の総評価値vt-1とを比較して大きい方を総評価値の最大値として求め、当該最大値、及び現在の総ノード数により総評価値管理テーブルに登録されている総評価値の最大値、及びその算出時における総ノード数を更新する。つまり、時系列におけるコンテンツの総評価値の最大値を常に保持しておき、上述した総評価値の集計時に最大値を超えた場合に最大値を更新する。これにより、システム管理者等は、最も人気があったときのコンテンツの総評価値を把握することができる。なお、総評価値の最大値に対応付けてその算出時における総ノード数を登録しておくのは、公開済コンテンツの総評価値を算出した過去の時点と現時点とで総ノード数が異なると、総評価値が高いのか低いのかがわからなくなるので、算出時点の総ノード数を登録しておくことにより、総ノード数の変動による総評価値の違いを補うためである。
また、上述したように、新たなコンテンツの総評価値が算出される度に当該総評価値等は評価値算出履歴情報中に別々に登録されるが、制御部11は、所定期間(例えば、公開後一定期間)内において登録された、特定のコンテンツについての各総評価値の平均値を算出し、例えば総評価値管理テーブルに登録する。これにより、システム管理者等は、上記特定のコンテンツが、例えば公開後一定期間内にどれだけ人気があったかを把握することができる。
上記総評価値の平均は、以下の演算式(3)により算出することができる。
ここで、“vav”は総評価値の平均値を、“vi”はi(iは、1〜t)回目の調査で算出された総評価値を、“t”は総評価値の算出回数(調査回数)を、夫々表している。なお、“vi”は、上述したように、演算式(1)よりも演算式(2)により算出されたものを使用することが望ましい。また、各総評価値viの代わりに、各調査において取得された評価値xiと、そのときの総ノード数niを記憶しておいても良い。
ところで、実際にt回分の総評価値を評価値算出履歴情報として保持しておくのは記憶容量やコストの面において望ましくない場合があるため、制御部11は、ノードNnから評価値を取得する度に以下の演算式(4)により、総評価値の平均を再計算すると良い。
ここで、“vav-1”は、前回算出された総評価値の平均値を表している。この演算式(4)を用いることにより、t回分の総評価値viの代わりに、前回の調査において算出の総評価値vav-1を記憶しておけば足りることになる。
ただし、この演算式(4)では、例えば公開後一定期間内の総ノード数の平均も記憶しておく必要がある。これは、公開済コンテンツの総評価値を算出した時点と現時点とで総ノード数が異なると、総評価値が相対的に高いのか低いのかがわからないためである。算出時点の総ノード数を登録しておくことにより、総ノード数の変動による総評価値の違いを補うことができる。
以上のようにして算出された各コンテンツの総評価値、当該各コンテンツの総評価値の最大値、又は当該各コンテンツの総評価値の平均値は、コンテンツの人気順位を表すランキングの決定に用いられたり、総評価値が未だ与えられていない公開前コンテンツの初期総評価値の決定に用いられる(詳細は後述する)。
[3.ノードNnの構成及び機能等]
次に、図4を参照して、ノードNnの構成及び機能について説明する。
図4は、ノードNnの概要構成例を示す図である。
各ノードNnは、図4に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部21と、各種データ(例えば、コンテンツデータのレプリカ、インデックス情報、DHT等)及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部22と、受信されたコンテンツデータのレプリカ等を一時蓄積するバッファメモリ23と、コンテンツデータのレプリカに含まれるエンコードされたビデオデータ(映像情報)およびオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)するデコーダ部24と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部25と、当該映像処理部25から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部26と、上記デコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部27と、当該音声処理部27から出力されたオーディオ信号を音波として出力するスピーカ28と、ネットワーク8を通じて他のノードNn等間の情報の通信制御を行うための通信部29と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部21に対して与える入力部(例えば、キーボード、マウス、或いは、操作パネル等)30と、を備えて構成され、制御部21、記憶部22、バッファメモリ23、デコーダ部24、通信部29、及び入力部30はバス31を介して相互に接続されている。なお、ノードNnとしては、パーソナルコンピュータ、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
また、記憶部22には、コンテンツ分散保存システムSに参加する際のアクセス先となるコンタクトノードのIPアドレス及びポート番号等が記憶されている。更に、記憶部22に保存されているレプリカに対応するコンテンツID、及びそのコンテンツの評価値等の情報を登録する評価値管理テーブルが記憶部22に記憶されている。
このような構成において、制御部21は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、全体を統括制御し、コンテンツ分散保存システムSへの参加により上述したユーザノード、中継ノード、ルートノード、キャッシュノード、コンテンツ保持ノード、コンテンツ投入ノード、及びコンテンツ事前保持ノードの少なくとも何れか一つのノードとしての処理を行う。
また、上述したように、総評価値管理サーバMSから評価値要求メッセージが受信された場合、制御部21は、記憶部22に保存されているレプリカに対応するコンテンツID及びその評価値を示す評価値応答メッセージを総評価値管理サーバMSに返信する処理を行う。
また、上記評価値要求メッセージが受信された場合、制御部21は、保存されているレプリカに対応するコンテンツの公開日時を調べ、その公開日時が、所定期間(例えば、公開後一定期間)内のコンテンツについてのみ、その評価値を示す評価値応答メッセージを総評価値管理サーバMSに返信するように構成しても良い。これにより、例えば公開後一定期間内のコンテンツについてのみ評価値が総評価値管理サーバMSに返信されるため、ネットワーク8の負荷等を低減することができる。また、総評価値管理サーバMS側も、1度の集計に対する総評価値の更新対象は公開後一定期間以内のコンテンツのみとすることができ、負荷を低減することができる。なお、上記所定期間は、各ノードNnにおいて固定値として設定されていても良いし、総評価値管理サーバMSからの評価値要求メッセージ中で指定されていても良い。
[4.コンテンツ分散保存システムSの動作]
次に、コンテンツ分散保存システムSの動作について説明する。
(4−1.総評価値の算出)
先ず、図5を参照して、総評価値が算出される際の動作について説明する。
図5(A)は、総評価値管理サーバMSにおける制御部11の評価値要求処理を示すフローチャートであり、図5(B)は、総評価値管理サーバMSにおける制御部11の総評価値算出処理を示すフローチャートであり、図5(C)は、ノードNnにおける制御部21の評価値応答処理を示すフローチャートである。
総評価値管理サーバMSにおいて、図5(A)に示す処理は、例えば一定時間毎に繰り返し実行されるものであり、当該時間(例えば、タイマのカウントアップ等)が到来した場合に開始される。当該処理が開始されると、制御部11は、先ず、上記ノード管理テーブルに登録されている複数のノードNnのうちから何れかのノードNnを例えばランダムに一つ選定する(ステップS1)。
次いで、制御部11は、上記選定されたノードNnのノード情報を用いてこれに接続し、当該ノードNnに対して、コンテンツの評価値の要求を示す評価値要求メッセージを送信する(ステップS2)。
一方、ノードNnにおいて、図5(C)に示す処理は、評価値要求メッセージが受信された場合に開始される。当該処理が開始されると、制御部21は、自ノードの記憶部22に保存されているレプリカに対応するコンテンツをリストアップする(ステップS101)。このリストアップでは、例えば、評価値管理テーブルに登録されている全てのコンテンツのコンテンツIDがRAMの所定領域に格納される。なお、このとき、制御部21は、公開日時が所定期間(例えば、公開後一定期間)内のコンテンツのみをリストアップするように構成しても良い。
次いで、制御部21は、上記リストアップしたコンテンツから1つ選択する(ステップS102)。
次いで、制御部21は、上記選択したコンテンツの評価値を評価値管理テーブルから取得してコンテンツIDと共に評価値リストに記述する(ステップS103)。
次いで、制御部21は、上記リストアップした全てのコンテンツについての上記処理が終了したか否かを判別する(ステップS104)。そして、上記リストアップした全てのコンテンツについての上記処理が終了していない場合には(ステップS104:NO)、制御部21は、ステップS102に戻り未だ選択されていないコンテンツを選択して上記と同様の処理を行う。
一方、上記リストアップした全てのコンテンツについての上記処理が終了した場合には(ステップS104:YES)、制御部21は、上記選択されたコンテンツの評価値等が記述された評価値リストを含む評価値応答メッセージを総評価値管理サーバMSに返信し(ステップS105)、図5(C)に示す処理を終了する。
次いで、総評価値管理サーバMSが上記評価値応答メッセージを受信すると、図5(B)に示す処理が開始される。当該処理が開始されると、制御部11は、公開済の全てのコンテンツをリストアップする(ステップS11)。
なお、上記ステップS101で公開日時が所定期間内のコンテンツのみをリストアップするように構成した場合は、ここでも公開日時が所定期間内のコンテンツのみがリストアップされる。
このリストアップでは、例えば、総評価値管理テーブルに登録されている全てのコンテンツのコンテンツIDがRAMの所定領域に格納される。
次いで、制御部11は、上記リストアップしたコンテンツから1つ選択する(ステップS12)。
次いで、制御部11は、上記選択したコンテンツの評価値が、上記評価値応答メッセージに含まれる評価値リストに記述されているか否かを判別し(ステップS13)、当該評価値リストに記述されている場合には(ステップS13:YES)、ステップS14に進み、当該評価値リストに記述されていない場合には(ステップS13:NO)、ステップS15に進む。
ステップS14では、制御部11は、上記選択したコンテンツの評価値を評価値リストから取得する。一方、ステップS15では、制御部11は、上記選択したコンテンツの評価値を評価値リストから取得する代わりに“0”に設定する。
次いで、制御部11は、上記選択したコンテンツの最新の総評価値を総評価値管理テーブルから取得する(ステップS16)。
次いで、制御部11は、ステップS14で取得したコンテンツの評価値(又は、ステップS15で“0”に設定したコンテンツの評価値)と、ステップS16で取得したコンテンツの最新の総評価値と、に基づき、例えば上述した演算式(2)により新たな総評価値を算出する(ステップS17)。
次いで、制御部11は、当該新たに算出されたコンテンツの総評価値により総評価値管理テーブルに登録されている最新の総評価値を更新(上書き)する(ステップS18)。
更に、制御部11は、当該新たに算出されたコンテンツの総評価値、その算出時における総ノード数を総評価値管理テーブルに新規登録(評価値算出履歴情報中に登録)する(総評価値の平均が上記演算式(4)により算出されるのであればこの処理は不要)。
次いで、制御部11は、上記選択したコンテンツの総評価値の最大値を総評価値管理テーブルから取得する(ステップS19)。
次いで、制御部11は、上記ステップS17で算出した新たな総評価値と、上記ステップS19で取得した、今までの総評価値の最大値とを比較し、大きい方を総評価値の最大値として決定する(ステップS20)。
次いで、制御部11は、上記決定した総評価値の最大値、及び現在の総ノード数により総評価値管理テーブルに登録されている総評価値の最大値、その算出時における総ノード数を更新(上書き)する(ステップS21)。
次いで、制御部11は、上記リストアップした全てのコンテンツについての上記処理が終了したか否かを判別する(ステップS22)。そして、上記リストアップした全てのコンテンツについての上記処理が終了していない場合には(ステップS22:NO)、制御部21は、ステップS12に戻り未だ選択されていないコンテンツを選択して上記と同様の処理を行う。
一方、上記リストアップした全てのコンテンツについての上記処理が終了した場合には(ステップS22:YES)、制御部11は、図5(B)に示す処理を終了する。
なお、上記ステップS18とS19との間で、制御部11は、所定期間(例えば、公開後一定期間)内において登録された各総評価値の平均値を算出するように構成しても良い。この場合、制御部11は、当該コンテンツの所定期間(例えば、公開後一定期間)内において登録された各総評価値を総評価値管理テーブル(評価値算出履歴情報)から取得し、それらの総評価値の平均値を例えば上記演算式(3)又は演算式(4)により算出して、例えば総評価値管理テーブルに登録することになる。なお、この場合、上記ステップS11でリストアップされる対象は、公開日時が所定期間(例えば、公開後一定期間)内のコンテンツとしても良い。
以上説明した総評価値の算出方法によれば、ノードNnの数が多くなっても、調査に多大な時間とコストがかかることなく、公開済コンテンツの総評価値を迅速、かつ精度良く(つまり、実際の総評価値に近い値として)求めることができる。また、各コンテンツの現時点での総評価値ばかりでなく、公開から現在までの総評価値の最大値や、公開後所定期間内の総評価値の平均値を求めるように構成したので、様々な観点からコンテンツを評価することができる。
(4−2.ランキングの決定)
次に、図6を参照して、コンテンツの人気順位を表すランキングが決定される際の動作について説明する。このランキングの決定では、各コンテンツの総評価値に基づいて、コンテンツの人気順位を表すランキングが決定される。
図6は、総評価値管理サーバMSにおける制御部11のランキング決定処理を示すフローチャートである。
総評価値管理サーバMSにおいて、図6に示す処理は、例えばシステム管理者等によりより使用される端末からのランキング決定要求により開始される。当該処理が開始されると、制御部11は、先ず、対象とする全てのコンテンツの最新の総評価値を、総評価値管理テーブルにおける最新の総評価値に関する情報から取得する(ステップS31)。なお、最新の総評価値の代わりに、総評価値の最大値又は平均値が取得されるように構成しても良い。
次いで、制御部11は、取得した各コンテンツの最新の総評価値を昇順にソート、つまり、総評価値が高い順に並べてコンテンツの人気順位を表すランキングの決定し(ステップS32)、当該ランキングのデータを記憶する。なお、最新の総評価値の代わりに、総評価値の最大値又は平均値の昇順にソートされるように構成しても良い。
次いで、制御部11は、上記記憶されたランキングを示すデータを、要求があった端末に対して返信し(ステップS33)、当該処理を終了する。
以上説明したランキング決定方法によれば、公開済コンテンツの最新の総評価値、総評価値の最大値、又は総評価値の平均値を利用することにより、コンテンツの人気順位を表すランキングを効率良く決定することができる。例えば、各コンテンツの最新の総評価値を昇順にソートした場合には、現時点での総評価値の高い順にコンテンツのランキングを得ることができ、各コンテンツの総評価値の最大値を昇順にソートした場合には、過去に最も評価値が高かった順にコンテンツのランキングを得ることができ、各コンテンツの総評価値の平均値を昇順にソートした場合には、所定期間内の総評価値の平均が最も評価値が高かった順にコンテンツのランキングを得ることができる。
(4−3.公開前コンテンツの初期総評価値の決定)
次に、公開前コンテンツの初期総評価値が決定される際の動作について、実施例1と実施例2に分けて説明する。この公開前コンテンツの初期総評価値の決定では、総評価値が与えられていない公開前コンテンツのキーワードを少なくとも一つ有し、且つ当該総評価値が与えられている公開済コンテンツの総評価値に基づいて、上記公開前コンテンツの初期総評価値が決定される。
このような公開前コンテンツの初期総評価値の決定の前提として、本コンテンツ分散保存システムSで扱われる各コンテンツには、キーワードが付与されるようになっており、各コンテンツに付与されたキーワードは、コンテンツIDに対応付けられて、例えばキーワード管理データベースに登録され管理される。かかるキーワードとしては、例えば一般的にコンテンツを検索するために付与されるキーワードを用いることができ、当該キーワードの数は任意である。例えば、映画のコンテンツの場合、映画タイトル、ジャンル名、主演者名、及び監督者名等のキーワードが付与され、音楽のコンテンツの場合、音楽タイトル、ジャンル名、アーティスト名、作詞者名、及び作曲者名等のキーワードが付与される。なお、このキーワード管理データベースは、総評価値管理サーバMSに備えられても良いし、総評価値管理サーバMSが接続可能な別のサーバに備えられるようにしても良い。
(4−3−1.実施例1)
先ず、実施例1の動作を、図7及び図8を参照して説明する。
図7は、実施例1において、総評価値管理サーバMSにおける制御部11の初期総評価値決定処理を示すフローチャートである。図8は、実施例1において、公開前コンテンツの初期総評価値が決定されるまでの様子を示す図である。
総評価値管理サーバMSにおいて、図7に示す処理は、例えばシステム管理者等により使用される端末からの公開前コンテンツの初期総評価値決定要求により開始される。当該処理が開始されると、制御部11は、先ず、上記要求に係る公開前コンテンツ(総評価値が与えられていないコンテンツ)を特定する(ステップS41)。
次いで、制御部11は、特定した公開前コンテンツのキーワード(複数)をキーワード管理データベースから取得する(ステップS42)。例えば、公開前コンテンツのキーワードをAとDとする。
次いで、制御部11は、取得した複数のキーワードのうちからキーワードを一つ選択(例えば、ランダム又は登録順に選択)する(ステップS43)。
次いで、制御部11は、キーワード管理データベースを参照して、選択したキーワードを持つ公開済コンテンツを複数特定する(ステップS44)。
次いで、制御部11は、特定した公開済の各コンテンツの最新の総評価値を総評価値管理テーブルにおける最新の総評価値に関する情報から取得し、且つ各コンテンツの全てのキーワードをキーワード管理データベースから取得する(ステップS45)。なお、最新の総評価値の代わりに、総評価値の最大値又は平均値が取得されるように構成しても良い。
次いで、制御部11は、特定した各コンテンツの総評価値に基づき当該コンテンツのキーワードの評価値を決定する(ステップS46)。なお、最新の総評価値の代わりに、総評価値の最大値又は平均値に基づき当該コンテンツのキーワードの評価値が決定されるように構成しても良い。
例えば、図8の例では、上記選択されたキーワードAを持つコンテンツ1の総評価値は「90」であるので、当該総評価値がそのまま当該キーワードAの評価値として決定されている。一方、上記選択されたキーワードAを持つコンテンツ3の総評価値は「60」であるので、当該総評価値がそのまま当該キーワードAの評価値として決定されている。
次いで、制御部11は、複数のコンテンツに跨って、上記評価値が決定されたキーワードの評価値の平均値を算出する(ステップS47)。
例えば、図8の例では、コンテンツ1とコンテンツ3に跨って、キーワードAの評価値の平均値が決定されている。
次いで、制御部11は、上記ステップS42で取得した全てのキーワードについて処理したか否かを判別し(ステップS48)、処理していない場合には(ステップS48:NO)、ステップS43に戻り、未だ選定されていないキーワードを選択し、上記と同様の処理を行う。
例えば、図8の例では、選択されたキーワードDを持つコンテンツ2の総評価値は「40」であるので、当該総評価値がそのまま当該キーワードDの評価値として決定されている。一方、選択されたキーワードDを持つコンテンツ3の総評価値は「60」であるので、当該総評価値がそのまま当該キーワードDの評価値として決定されている。そして、コンテンツ2とコンテンツ3に跨って、キーワードDの評価値の平均値が決定されている。
そして、上記ステップS48で、全てのキーワードについて処理したと判別された場合には(ステップS48:YES)、公開前コンテンツの複数のキーワードの夫々について算出された評価値の平均値のうちの最大値を、公開前コンテンツの初期総評価値として決定する(ステップS49)。
例えば、図8の例では、キーワードAの評価値の平均値と、キーワードDの評価値の平均値のうちの、大きい方のキーワードAの評価値の平均値が、公開前コンテンツの初期総評価値として決定されている。
次いで、制御部11は、上記決定された公開前コンテンツの初期総評価値を、当該公開前コンテンツのコンテンツID等の情報に対応付けて総評価値管理テーブルに登録する(ステップS50)。
次いで、制御部11は、上記決定された公開前コンテンツの初期総評価値を示すデータを、要求があった端末に対して返信し(ステップS51)、当該処理を終了する。
なお、公開前コンテンツの複数のキーワードの夫々について算出された評価値の平均値をさらに平均した値を公開前コンテンツの初期総評価値として決定するように構成しても良い。
(4−3−2.実施例2)
次に、図9及び図10を参照して、実施例2における公開前のコンテンツの評価値算出処理について説明する。
図9は、実施例2において、総評価値管理サーバMSにおける制御部11の初期総評価値決定処理を示すフローチャートである。図10は、実施例2において、公開前コンテンツの初期総評価値が決定されるまでの様子を示す図である。
総評価値管理サーバMSにおいて、図9に示す処理は、例えばシステム管理者等により使用される端末からの公開前コンテンツの初期総評価値決定要求により開始される。当該処理が開始されると、制御部11は、先ず、上記要求に係る公開前コンテンツ(総評価値が与えられていないコンテンツ)を特定する(ステップS71)。
次いで、制御部11は、全てのキーワード(複数)をキーワード管理データベースから取得する(ステップS72)。
次いで、制御部11は、当該処理が初回実行か否かを判別し(ステップS73)、初回実行である場合には(ステップS73:YES)、全てのキーワードの評価値に「1」を設定する(ステップS74)。一方、初回実行でない場合には(ステップS73:NO)、制御部11は、全てのキーワードの評価値をキーワード管理データベースから取得する(ステップS75)。
次いで、制御部11は、公開済の全てのコンテンツを特定し(ステップS76)、特定した公開済の各コンテンツの最新の総評価値を総評価値管理テーブルにおける最新の総評価値に関する情報から取得する(ステップS77)。なお、最新の総評価値の代わりに、総評価値の最大値又は平均値が取得されるように構成しても良い。
次いで、制御部11は、当該特定した公開済コンテンツを一つ選択する(ステップS78)。
次いで、制御部11は、当該選択したコンテンツが有するキーワードを全て選択する(ステップS79)。
次いで、制御部11は、当該選択した各キーワードの評価値を重みとし、当該選択したコンテンツの総評価値を当該各キーワードに分配し(ステップS80)、当該各キーワードの評価値を決定する。なお、最新の総評価値の代わりに、総評価値の最大値又は平均値に基づき当該コンテンツのキーワードの評価値が決定されるように構成しても良い。
例えば、図10(A)の例では、コンテンツ1の総評価値は「90」であり、各キーワードの評価値には上記ステップS74で全て「1」に設定されているので、その重みに従って、当該コンテンツ1の総評価値「90」は3等分され、「30」ずつ、キーワードA,B,Cに分配されてその評価値が決定されている。
次いで、制御部11は、上記特定した全てのコンテンツについて処理したか否かを判別し(ステップS81)、処理していない場合には(ステップS81:NO)、ステップS78に戻り、未だ選定されていないコンテンツを選択し、上記と同様の処理を行う。このようにして、例えば、図10(A)に示すように、コンテンツ2及び3についても、キーワードの評価値が決定されることになる。
そして、上記ステップS81で、全てのコンテンツについて処理したと判別された場合には(ステップS81:YES)には、制御部11は、キーワードを一つ選択する(ステップS82)。
次いで、制御部11は、複数のコンテンツに跨って、上記選択したキーワードの評価値の平均値を算出する(ステップS83)。
例えば、図10(A)の例では、コンテンツ1とコンテンツ3に跨って、キーワードAの評価値の平均値が決定されている。
次いで、制御部11は、上記ステップS72で取得した全てのキーワードについて処理したか否かを判別し(ステップS84)、処理していない場合には(ステップS84:NO)、ステップS82に戻り、未だ選定されていないキーワードを選択し、上記と同様の処理を行う。このようにして、例えば、図10(A)に示すように、キーワードB,C,Dについても平均値が算出されることになる。
そして、上記ステップS84で、全てのキーワードについて処理したと判別された場合には(ステップS84:YES)、制御部11は、予め設定された終了判定基準を満たしているか否かを判別し(ステップS85)、終了判定基準を満たしていない場合には(ステップS85:NO)、ステップS78に戻り、上記と同様の処理を行う。
例えば、図10(B)に示すコンテンツ2を例にとると、直前のステップS83の処理で算出されたキーワードBとDの評価値の平均値「25」と「20」が重みとされ、コンテンツ2の総評価値「40」が、その重みに従って、キーワードB,Dに分配されてその評価値が決定されている。
こうして、終了判定基準が満たされるまでは、ステップS78〜ステップS85の処理が繰り返しループされる。かかる繰り返しループにおいて、制御部11は、直前のステップS83の処理で算出したキーワードの評価値の平均値を重みとして、当該コンテンツの総評価値を当該コンテンツのキーワードにさらに分配することにより当該コンテンツのキーワードの評価値を決定(つまり、前回の評価値から更新)し、且つさらに分配することにより決定された(つまり、更新された)当該コンテンツのキーワードの評価値を、キーワード毎に、複数のコンテンツに跨って、当該キーワードの評価値の平均値を算出するという処理を所定回数繰り返すことにより、最終的なキーワードの評価値の平均値を算出するのである。
ところで、終了判定基準の種類、閾値はユーザにより任意に選択可能である。例えば、更新前後のキーワードの評価値の差が当該キーワードの評価値の平均の数十〜数百(例えば、100)分の1以下か否かが判断され、これ以下ならば終了判定基準を満たすとされる。或いは、予め設定された回数(例えば、100回)、上記ステップS78〜ステップS85の処理がループしたか否かが判断され、当該回数ループしたならば終了判定基準を満たすとされる。或いは、予め設定された時間(例えば、3分)、上記ステップS78〜ステップS85の処理が繰り返し行われたか否かが判断され、当該時間繰り返し行われたならば終了判定基準を満たすとされる。
こうして、終了判定基準を満たした場合には(ステップS85:YES)、制御部11は、公開前コンテンツの複数のキーワードの夫々について上述したように算出された最終的な評価値の平均値を加算し、この加算値を公開前コンテンツの初期総評価値として決定する(ステップS86)。
次いで、制御部11は、上記決定された公開前コンテンツの初期総評価値を、当該公開前コンテンツのコンテンツID等の情報に対応付けて総評価値管理テーブルに登録し、且つ、全てのキーワードの評価値(上述した最終的なキーワードの評価値の平均値)をキーワード管理データベースに登録する(ステップS87)。こうして、登録された全てのキーワードの評価値は、上述したように、ステップS75で取得され、ステップS80で重みとして使用されることになる。
次いで、制御部11は、上記決定された公開前コンテンツの初期総評価値を示すデータを、要求があった端末に対して返信し(ステップS88)、当該処理を終了する。
以上説明した公開前コンテンツの初期総評価値の決定方法(実施例1又は実施例2)によれば、公開済コンテンツの最新の総評価値、総評価値の最大値、又は総評価値の平均値を利用することにより、システム管理者側に手間かけさせずに比較的簡単に公開前コンテンツの人気度を予測(推定)することが可能となり、ひいては、事前に適切な数のレプリカをシステム内に分散保存させることができる。
従って、事前に当該システムS内に分散保存させておくレプリカの数が少なすぎることを回避でき、当該コンテンツの公開後にそのレプリカにアクセスが集中することを防止することができる。よって、コンテンツ保持ノードへのレプリカのダウンロード要求が頻出しても、安定したコンテンツ配信が可能となる。また、当該レプリカの数が多すぎることを回避でき、各ノードNnにおけるレプリカを保存するための記憶領域を無駄に消費してしまうことで当該記憶領域を圧迫することを防止することができる。これにより、ネットワーク負荷の増大を防止することもできる。
(4−4.コンテンツのレプリカが分割され保存されている場合の総評価値の算出)
以上説明したコンテンツ分散保存システムSにおいては、一つのコンテンツのレプリカが複数に分割された各キャッシュ(分割複製データ)が、複数のノードNnに分散して保存される場合がある。かかる場合、あるノードNnが、あるレプリカを構成するキャッシュ全てを保存しているとは限らず、当該レプリカを構成するキャッシュの一部のみを保存していることもある。そして、各キャッシュには、夫々、当該キャッシュに対応するコンテンツ(つまり、当該キャッシュを構成要素とするコンテンツ)の評価を表す評価値が付与されており、当該評価値は、当該キャッシュを保存している各ノードNnにおける上述した評価値管理テーブルに登録され管理されている。なお、当該評価値には、各キャッシュのシリアル番号(例えば、キャッシュのレプリカにおけるデータ位置を示す)に対応つけられている。
このようなコンテンツ分散保存システムSにおいては、キャッシュ毎に総評価値を調査し、それらの平均をコンテンツの総評価値とするのが最も正確な手法である。しかし、この場合、当該キャッシュを保存しているコンテンツ保持ノードは、キャッシュ数分の評価値を総評価値管理サーバMSに送信しなければならないため、分割数が多くなると送信しなければならないデータ量が増え、システムの付加が高くなってしまう。そこで、この場合、当該コンテンツ保持ノードがキャッシュ毎に評価値を送信するのではなく、あるコンテンツを構成する全キャッシュの中で自ノードが保存している各キャッシュに付与された評価値の平均値を当該コンテンツの評価値として総評価値管理サーバMSに送信するように構成する。
以下、図11を参照して、分割されたキャッシュがノードNnに保存される場合の動作について説明する。
図11は、分割されたキャッシュが保存される場合を考慮したノードNnにおける制御部21の評価値応答処理を示すフローチャートであり、上述した図5(C)の処理に置き換わるものである。なお、この場合の総評価値管理サーバMSにおける制御部11の処理は、図5(A)及び図5(B)の処理と同様である。
ノードNnにおいて、図11に示す処理は、総評価値管理サーバMSからの評価値要求メッセージが受信された場合に開始される。当該処理が開始されると、制御部21は、図5(C)に示すステップS101と同様、自ノードの記憶部22に保存されているレプリカ又はキャッシュに対応するコンテンツをリストアップする(ステップS201)。
次いで、制御部21は、上記リストアップしたコンテンツから1つ選択する(ステップS202)。
次いで、制御部21は、上記選択したコンテンツが分割されているか否かを判別し(ステップS203)、分割されていない場合には(ステップS203:NO)、ステップS204に進み、分割されている場合には(ステップS203:YES)、ステップS205に進む。
ステップS204では、制御部21は、上記選択したコンテンツの評価値を評価値管理テーブルから取得してコンテンツIDと共に評価値リストに記述し、ステップS211に進む。
一方、ステップS205では、制御部21は、上記選択したコンテンツのキャッシュの中で、自ノードの記憶部22に保存されているキャッシュをリストアップする。このリストアップでは、例えば、当該キャッシュのシリアル番号がRAMの所定領域に格納される。
次いで、制御部21は、上記リストアップしたキャッシュから1つ選択する(ステップS206)。
次いで、制御部21は、上記選択したキャッシュに付与されている評価値を評価値管理テーブルから取得する(ステップS207)。
次いで、制御部21は、上記リストアップした全てのキャッシュについての上記処理が終了したか否かを判別する(ステップS208)。そして、上記リストアップした全てのキャッシュについての上記処理が終了していない場合には(ステップS208:NO)、制御部21は、ステップS206に戻り未だ選択されていないキャッシュを選択して上記と同様の処理を行う。
一方、上記リストアップした全てのキャッシュについての上記処理が終了した場合には(ステップS208:YES)、制御部21は、上記各キャッシュに付与されている評価値の平均値を算出し当該平均値を当該コンテンツの評価値として決定する(ステップS209)。
図12は、各キャッシュに付与されている評価値の平均値をコンテンツの評価値として決定する様子を示す概念図である。図12に示すノードN1には、コンテンツX(レプリカ)を構成する全キャッシュX1〜X6のうちの一部のキャッシュX1,X3,及びX5が保存されており、かかるキャッシュX1,X3,及びX5に付与された評価値の平均値(30=(30+25+35)/3)が当該コンテンツXの評価値として決定されている。
次いで、制御部21は、上記平均値として求めたコンテンツの評価値をコンテンツIDと共に評価値リストに記述し(ステップS210)、ステップS211に進む。
ステップS211では、制御部21は、上記ステップS201でリストアップした全てのコンテンツについての上記処理が終了したか否かを判別する。そして、上記リストアップした全てのコンテンツについての上記処理が終了していない場合には(ステップS211:NO)、制御部21は、ステップS202に戻り未だ選択されていないコンテンツを選択して上記と同様の処理を行う。
一方、上記リストアップした全てのコンテンツについての上記処理が終了した場合には(ステップS211:YES)、制御部21は、上記コンテンツの評価値等が記述された評価値リストを含む評価値応答メッセージを総評価値管理サーバMSに返信し(ステップS212)、図11に示す処理を終了する。
そして、総評価値管理サーバMSにおいては、図5(B)に示す処理が行われてコンテンツの総評価値が算出され、図6、図7、図9に示す処理についても上記と同様に実行されることになる。
以上説明したコンテンツのレプリカが分割され保存されている場合の総評価値の算出方法によれば、分割キャッシュ数が増えても、システムの負荷を増大させることなく、公開済コンテンツの総評価値を迅速、かつ精度良く求めることができる。
なお、上記実施形態におけるコンテンツ分散保存システムSは、DHTを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。