(57)【要約】【課題】情報処理装置へのアクセスを低減し、安定して運用させる。【解決手段】ノード装置において、配信されるコンテンツデータが異なる複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータを、コンテンツカタログに基づき、ネットワークを介して取得する手段と、複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループとは異なる配信グループのコンテンツデータを記憶する手段と、ネットワークを介してコンテンツデータの送信要求を受信したとき、記憶したコンテンツデータを読み出し、送信要求元へネットワークを介して送信する手段とを備えることとした。【選択図】図２
2011008707.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信手段と、
ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得手段と、
前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶する記憶手段と、
前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信手段と、
をそれぞれ有する複数のノード装置と、
各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させる保存手段と、
前記配信グループで配信されるコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログを生成する生成手段と、
前記生成手段で生成したコンテンツカタログを前記ネットワークを介して前記ノード装置へ送信する送信手段と、
を有する情報処理装置と、
を備えた分散保存システム。
【請求項２】
前記ノード装置は、
複数の前記配信グループの中から、配信グループを識別するグループ識別情報を少なくとも１つ取得するグループ情報取得手段と、
前記グループ情報取得手段により取得されたグループ識別情報に基づいて、加入している配信グループを判定するグループ判定手段と、を有し、
前記情報処理装置の前記生成手段は、前記コンテンツデータを識別するためのコンテンツ識別情報と、前記コンテンツデータが再生可能な配信グループを識別するグループ識別情報とを含むコンテンツカタログを生成し、
前記ノード装置の前記取得手段は、前記グループ判定手段により判定された前記グループ識別情報を有するコンテンツ識別情報が示すコンテンツデータの中からコンテンツデータを取得する
ことを特徴とする請求項１に記載の分散保存システム。
【請求項３】
前記情報処理装置は、
各前記ノード装置が加入するグループ識別情報を記憶するグループ記憶手段を備え、
前記情報処理装置の前記生成手段は、前記配信グループ毎に、前記配信グループのコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログを生成し、
前記情報処理装置の前記送信手段は、前記生成手段により生成されたカタログを、前記グループ記憶手段に記憶されたグループ識別情報に基づいてノード装置へ、その加入している配信グループのコンテンツカタログを送信することを備えることを特徴とする請求項１に記載の分散保存システム。
【請求項４】
前記情報処理装置の前記生成手段は、前記配信グループ毎に使用制限がかけられた前記コンテンツカタログを生成し、
前記ノード装置に備えられたグループ情報取得手段は、前記グループ情報と、当該グループ情報に対応する前記使用制限がかけられたコンテンツカタログの使用制限を解除する解除情報とを取得し、
前記ノード装置は、
前記グループ情報取得手段により取得された解除情報に基づいて、前記受信手段により受信されたコンテンツカタログの使用制限を解除する解除手段を備えることを特徴とする請求項２に記載の分散保存システム。
【請求項５】
前記情報処理装置は、
前記複数の配信グループで配信されるコンテンツデータの配信状況を取得する配信情報取得手段と、
前記配信情報取得手段によって取得された前記配信状況に基づいて、前記配信グループの安定度を判定する安定度判定手段と、を備え、
前記情報処理装置の前記送信手段は、前記安定度判定手段により不安定と判定された配信グループのコンテンツデータを、前記複数のノード装置のうち１以上のノード装置へ送信することを特徴とする請求項１〜４のいずれか１項に記載の分散保存システム。
【請求項６】
前記情報処理装置の前記送信手段は、前記安定度判定手段により不安定と判定された配信グループのコンテンツデータを、当該不安定と判定された配信グループとは異なる配信グループに属するノード装置へ送信することを特徴とする請求項５に記載の分散保存システム。
【請求項７】
各前記ノード装置は、
前記記憶手段に新たなコンテンツデータを記憶するときに、前記記憶手段の記憶容量が不足しているか否かを判定する判定手段と、
前記判定手段により、前記記憶手段の記憶容量が不足していると判定すると、当該記憶手段に記憶している１以上のコンテンツデータを削除して、前記新たなコンテンツデータを記憶する領域を確保する記憶制御手段とを備え、
前記記憶制御手段は、前記加入していない配信グループのコンテンツデータを削除すると、当該加入していない配信グループのコンテンツデータが所定容量値以下となる場合には、当該コンテンツデータの削除を行わず、前記加入している配信グループのコンテンツデータを削除することを特徴とする請求項１〜６のいずれか１項に記載の分散保存システム。
【請求項８】
前記情報処理装置は、前記所定容量値を決定する容量値決定手段を備え、
前記情報処理装置の送信手段は、前記容量値決定手段により決定した前記所定容量値の情報を前記ノード装置へ送信し、
前記ノード装置の前記記憶制御手段は、前記情報処理装置から通知された所定容量値の情報に基づいて、前記記憶手段に記憶したコンテンツデータの削除を行うことを特徴とする請求項７に記載の分散保存システム。
【請求項９】
前記情報処理装置の容量値決定手段は、前記配信グループ毎のコンテンツデータの配信状態に基づいて前記配信グループ毎に前記所定容量値を決定することを特徴とする請求項８に記載の分散保存システム。
【請求項１０】
各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させたコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信手段と、
ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得手段と、
前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶する記憶手段と、
前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信手段と、
を備えたことを特徴とするノード装置。
【請求項１１】
ノード装置が、コンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信ステップと、
前記ノード装置が、ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得ステップと、
前記ノード装置が、前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶手段に記憶する記憶ステップと、
前記ノード装置が、前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信ステップと、
情報処理装置が、各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させる保存ステップと、
前記情報処理装置が、前記配信グループで配信されるコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログを生成する生成ステップと、
前記情報処理装置が、前記生成処理ステップで生成したコンテンツカタログを前記ネットワークを介して前記ノード装置へ送信する送信ステップと、
を備えた分散保存方法。
【請求項１２】
各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させたコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信ステップと、
ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得ステップと、
前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶手段に記憶する記憶ステップと、
前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信ステップと、を含むノード装置の処理方法。
【請求項１３】
各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させたコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信ステップと、
ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得ステップと、
前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶手段に記憶する記憶ステップと、
前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信ステップと、
をコンピュータに実現させるためのプログラム。
【請求項１４】
配信グループを識別するためのグループ識別情報とコンテンツデータを識別するためのコンテンツ識別情報とが関連づけられたコンテンツカタログをネットワークを介して受信する受信手段と、
加入している配信グループを識別するための加入グループ情報ネットワークを介して少なくとも１つ取得するグループ情報取得手段と、
前記受信手段により受信したコンテンツカタログに含まれるコンテンツ識別情報のうち、前記グループ情報取得手段で取得した加入グループ情報に対応するグループ識別情報に関連づけられたコンテンツ識別情報を選択し、当該選択したコンテンツ識別情報に応じたコンテンツデータをネットワークを介して取得する取得手段と、
をそれぞれ有する複数のノード装置と、
前記複数の配信グループのコンテンツデータを、前記複数のノード装置へ分散保存させる保存手段と、
前記コンテンツカタログを生成する生成手段と、
前記生成手段で生成したコンテンツカタログを前記ノード装置へ送信する送信手段と、
を有するサーバと、
を備えた分散保存システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散保存システム、ノード装置、並びにその処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、複数のノード装置をインターネット等のネットワークを介して接続して、ノード装置間で双方向での情報通信が可能なオーバーレイネットワークであるＰ２Ｐネットワークを構築するコンテンツ配信システムが知られている。この種のコンテンツ配信システムとして、各ノード装置内のストレージ（記憶手段）に、それぞれ様々なコンテンツデータを記憶させておくことにより、複数のノード装置のストレージ群からなる巨大なストレージを仮想的に構築する分散保存システムがある（例えば、特許文献１参照）。
【０００３】
このような分散保存システムにおいて、当該システムに投入された全てのコンテンツデータを配信可能に保障するためには、各コンテンツデータが当該システムに参加している少なくとも１台のノード装置内に記憶されている必要がある。しかし、この分散保存システムでは、任意のノード装置が任意のタイミングから脱退する。このとき、脱退したノード装置にしか記憶されていないコンテンツデータがあると、当該システムに投入された全てのコンテンツデータを完全に保障することができなくなる。
【０００４】
そこで、ノード装置による分散ストレージとは別に、当該システムに投入した全てのコンテンツデータを記憶し、ノード装置からの要求に応じてコンテンツデータを配信可能なサーバが配置されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１９７４００号公報
【特許文献２】特開２００６−２０９６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般的に、ノード装置の数が少ないＰ２Ｐネットワークは、分散してコンテンツデータを記憶させるノード装置が少ないため、特定のノード装置へコンテンツデータの取得要求が集中することがある。従って、Ｐ２Ｐネットワークの特徴である特定のノード装置への集中負荷の軽減、耐故障性を高めることができない。そのため、安定してシステムを運用することが難しい。
【０００７】
一方、インターネット上にノード装置の数が少ない複数のＰ２Ｐネットワークが存在する場合、複数のＰ２Ｐネットワークを１つのＰ２Ｐネットワークとしてノード装置の数を多くして運用することが考えられる。しかしながら、各ノード装置は、各ノード装置が属するＰ２Ｐネットワークのみからコンテンツデータのダウンロードを行う。結果としてノード装置の数は増えるが、コンテンツデータの保存先となるノード装置が増えることにつながらず、安定してシステムを運用することができなかった。
【０００８】
本発明は、かかる課題に鑑みてなされたものであり、サーバへのアクセスを低減し、安定して運用することができる分散保存システム、ノード装置、並びにその処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、請求項１に記載の発明は、コンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信手段と、ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得手段と、前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶する記憶手段と、前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信手段と、をそれぞれ有する複数のノード装置と、各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させる保存手段と、前記配信グループで配信されるコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログを生成する生成手段と、前記生成手段で生成したコンテンツカタログを前記ネットワークを介して前記ノード装置へ送信する送信手段と、を有する情報処理装置と、を備えた分散保存システムとした。
【００１０】
また、請求項２に記載の発明は、請求項１に記載の分散保存システムにおいて、前記ノード装置は、複数の前記配信グループの中から、配信グループを識別するグループ識別情報を少なくとも１つ取得するグループ情報取得手段と、前記グループ情報取得手段により取得されたグループ識別情報に基づいて、加入している配信グループを判定するグループ判定手段と、を有し、前記情報処理装置の前記生成手段は、前記コンテンツデータを識別するためのコンテンツ識別情報と、前記コンテンツデータが再生可能な配信グループを識別するグループ識別情報とを含むコンテンツカタログを生成し、前記ノード装置の前記取得手段は、前記グループ判定手段により判定された前記グループ識別情報を有するコンテンツ識別情報が示すコンテンツデータの中からコンテンツデータを取得することを特徴とする。
【００１１】
また、請求項３に記載の発明は、請求項１に記載の分散保存システムにおいて、前記情報処理装置は、各前記ノード装置が加入するグループ識別情報を記憶するグループ記憶手段を備え、前記情報処理装置の前記生成手段は、前記配信グループ毎に、前記配信グループのコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログを生成し、前記情報処理装置の前記送信手段は、前記生成手段により生成されたカタログを、前記グループ記憶手段に記憶されたグループ識別情報に基づいてノード装置へ、その加入している配信グループのコンテンツカタログを送信することを備えることを特徴とする。
【００１２】
また、請求項４に記載の発明は、請求項２に記載の分散保存システムにおいて、前記情報処理装置の前記生成手段は、前記配信グループ毎に、使用制限がかけられた前記コンテンツカタログを生成し、前記ノード装置に備えられたグループ情報取得手段は、前記グループ情報と、当該グループ情報に対応する前記使用制限がかけられたコンテンツカタログの使用制限を解除する解除情報とを取得し、前記ノード装置は、前記グループ情報取得手段により取得された解除情報に基づいて、前記受信手段により受信されたコンテンツカタログの使用制限を解除する解除手段を備えることを特徴とする。
【００１３】
また、請求項５に記載の発明は、請求項１〜４のいずれか１項に記載の分散保存システムにおいて、前記情報処理装置は、前記複数の配信グループで配信されるコンテンツデータの配信状況を取得する配信情報取得手段と、前記配信情報取得手段によって取得された前記配信状況に基づいて、前記配信グループの安定度を判定する安定度判定手段と、を備え、前記情報処理装置の前記送信手段は、前記安定度判定手段により不安定と判定された配信グループのコンテンツデータを、前記複数のノード装置のうち１以上のノード装置へ送信することを特徴とする。
【００１４】
また、請求項６に記載の発明は、請求項５に記載の分散保存システムにおいて、前記情報処理装置の前記送信手段は、前記安定度判定手段により不安定と判定された配信グループのコンテンツデータを、当該不安定と判定された配信グループとは異なる配信グループに属するノード装置へ送信することを特徴とする。
【００１５】
また、請求項７に記載の発明は、請求項１〜６のいずれか１項に記載の分散保存システムにおいて、各前記ノード装置は、前記記憶手段に新たなコンテンツデータを記憶するときに、前記記憶手段の記憶容量が不足しているか否かを判定する判定手段と、前記判定手段により、前記記憶手段の記憶容量が不足していると判定すると、当該記憶手段に記憶している１以上のコンテンツデータを削除して、前記新たなコンテンツデータを記憶する領域を確保する記憶制御手段とを備え、前記記憶制御手段は、前記加入していない配信グループのコンテンツデータを削除すると、当該加入していない配信グループのコンテンツデータが所定容量値以下となる場合には、当該コンテンツデータの削除を行わず、前記加入している配信グループのコンテンツデータを削除することを特徴とする。
【００１６】
また、請求項８に記載の発明は、請求項７に記載の分散保存システムにおいて、前記情報処理装置は、前記所定容量値を決定する容量値決定手段を備え、前記情報処理装置の送信手段は、前記容量値決定手段により決定した前記所定容量値の情報を前記ノード装置へ送信し、前記ノード装置の前記記憶制御手段は、前記情報処理装置から通知された所定容量値の情報に基づいて、前記記憶手段に記憶したコンテンツデータの削除を行うことを特徴とする。
【００１７】
また、請求項９に記載の発明は、請求項８に記載の分散保存システムにおいて、前記情報処理装置の容量値決定手段は、前記配信グループ毎のコンテンツデータの配信状態に基づいて前記配信グループ毎に前記所定容量値を決定することを特徴とする。
【００１８】
また、請求項１０に記載の発明は、各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させたコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信手段と、ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得手段と、前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶する記憶手段と、前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信手段と、を備えたことを特徴とするノード装置とした。
【００１９】
また、請求項１１に記載の発明は、  ノード装置が、コンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信ステップと、前記ノード装置が、ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得ステップと、前記ノード装置が、前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶手段に記憶する記憶ステップと、前記ノード装置が、前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信ステップと、情報処理装置が、各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させる保存ステップと、前記情報処理装置が、前記配信グループで配信されるコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログを生成する生成ステップと、前記情報処理装置が、前記生成処理ステップで生成したコンテンツカタログを前記ネットワークを介して前記ノード装置へ送信する送信ステップと、を備えた分散保存方法とした。
【００２０】
また、請求項１２に記載の発明は、各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させたコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信ステップと、ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得ステップと、前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶手段に記憶する記憶ステップと、前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信ステップと、を含むノード装置の処理方法とした。
【００２１】
また、請求項１３に記載の発明は、各前記配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置に加え、異なる配信グループに加入しているノード装置へ分散保存させたコンテンツデータを識別するためのコンテンツ識別情報を含むコンテンツカタログをネットワークを介して受信する受信ステップと、ネットワークを介してコンテンツデータを配信する複数の配信グループごとで再生可能なコンテンツデータの中から加入している配信グループで配信されるコンテンツデータを、前記コンテンツカタログに基づき、前記ネットワークを介して取得する取得ステップと、前記複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶手段に記憶する記憶ステップと、前記ネットワークを介してコンテンツデータの送信要求を受信したとき、前記記憶手段から前記送信要求に対応するコンテンツデータを、前記送信要求元へ前記ネットワークを介して送信する送信ステップと、をコンピュータに実現させるためのプログラムとした。
【００２２】
また、請求項１４に記載の発明は、配信グループを識別するためのグループ識別情報とコンテンツデータを識別するためのコンテンツ識別情報とが関連づけられたコンテンツカタログをネットワークを介して受信する受信手段と、加入している配信グループを識別するための加入グループ情報ネットワークを介して少なくとも１つ取得するグループ情報取得手段と、前記受信手段により受信したコンテンツカタログに含まれるコンテンツ識別情報のうち、前記グループ情報取得手段で取得した加入グループ情報に対応するグループ識別情報に関連づけられたコンテンツ識別情報を選択し、当該選択したコンテンツ識別情報に応じたコンテンツデータをネットワークを介して取得する取得手段と、をそれぞれ有する複数のノード装置と、前記複数の配信グループのコンテンツデータを、前記複数のノード装置へ分散保存させる保存手段と、前記コンテンツカタログを生成する生成手段と、前記生成手段で生成したコンテンツカタログを前記ノード装置へ送信する送信手段と、を有するサーバと、を備えた分散保存システムとした。
【発明の効果】
【００２３】
本発明によれば、ノード装置において、加入する配信グループのコンテンツデータに加え、加入していない配信グループのコンテンツデータを記憶し、加入していない配信グループのコンテンツデータを送信できるようにしたので、サーバへのアクセスを低減し、安定して運用することができる。
【図面の簡単な説明】
【００２４】
【図１】第１実施形態における分散保存システムの各ノード装置及びセンタサーバの接続態様の一例を示す図である。
【図２】分散保存システムの概要動作を説明するための図である。
【図３】ノード装置の第２記憶部へのコンテンツデータの記憶処理の説明図である。
【図４】コンテンツカタログの内容を示す図である。
【図５】ノード装置の具体的構成を示す図である。
【図６】ノード装置のメイン処理フローチャートである。
【図７】ノード装置における再生処理のフローチャートである。
【図８】ノード装置における記憶処理のフローチャートである。
【図９】ノード装置におけるクエリメッセージ処理のフローチャートである。
【図１０】センタサーバの具体的構成を示す図である。
【図１１】センタサーバにおけるメイン処理のフローチャートである。
【図１２】センタサーバにおける配信グループ安定化処理のフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の一実施形態について具体的に説明する。なお、本実施形態では分散ハッシュテーブルを用いたＰ２Ｐ（Peer to Peer）型の分散保存システムを例にとり説明するが、Ｐ２Ｐ型の分散保存システムであればよく、これに限られない。
【００２６】
［１．第１実施形態］
［１．１．分散保存システムＳの構成等］
まず始めに、図１〜図４を参照して、本発明の第１実施形態における分散保存システムの概要について説明する。
【００２７】
図１の下部枠５１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Ｓervice Provider）４、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、及び通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界のネットワーク）８が構築されている。
【００２８】
分散保存システムＳは、図１の上部枠５０内に示すように、ネットワーク８を介して相互に接続された複数のノード装置１ａ１，１ａ２，・・・１ｂ１，１ｂ２，・・・と、センタサーバ２とを備えて構成される。各ノード装置１ａ１，１ａ２，・・・１ｂ１，１ｂ２，・・・とセンタサーバ２とは、それぞれ各装置を示す情報としての固有の製造番号（例えば、ＭＡＣアドレス）及びＩＰ（Internet Protocol）アドレスなどが割り当てられている。また、以下の説明において、ノード装置１ａ１，１ａ２，・・・１ｂ１，１ｂ２，・・・のうち何れかのノード装置又は全てのノード装置を示す場合には、便宜上、ノード装置１という。なお、センタサーバ２は、情報処理装置として、ノード装置１との間で各種情報を送受信する。
【００２９】
本実施形態の分散保存システムＳにおいては、図１の上部枠５０内に示すような、ネットワーク８を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク９が構築される。また、オーバーレイネットワーク９は、複数のノード装置１ａ１，１ａ２，・・・１ｂ１，１ｂ２，・・・から形成されており、Ｐ２Ｐ（Peer to Peer）方式のネットワークである。なお、以下において、オーバーレイネットワーク９上に配置されたノード装置１を、分散保存システムＳに参加しているノード装置１という。
【００３０】
各ノード装置１は、複数の配信グループのうち少なくともいずれか１つの配信グループに加入している。本実施形態においては、図２に示すように、ノード装置１ａ１，１ａ２，・・・が配信グループＡに加入し、ノード装置１ｂ１，１ｂ２，・・・が配信グループＢに加入しているものとする。
【００３１】
各ノード装置１は、加入する配信グループのコンテンツデータを取得し、再生することができるように構成されている。各ノード装置１のユーザは、所望の配信グループに加入することで、所望のコンテンツデータを取得し再生して視聴することができる。例えば、図２に示す例では、ノード装置１ａ１，１ａ２，・・・は配信グループＡのコンテンツデータを取得して再生できる。また、ノード装置１ｂ１，１ｂ２，・・・は配信グループＢのコンテンツデータを取得して再生することができる。
【００３２】
本実施形態においては、配信グループＡと配信グループＢとは、そのサービス主体が異なる。センタサーバ２は、ネットワークを介して配信グループＡのサービス主体のコンピュータ（図示せず）から配信用のコンテンツデータを取得する。センタサーバ２は、この配信用のコンテンツデータに所定の加工処理（例えば、ウィルスチェックなど）を施し、配信グループＡのコンテンツデータとする。同様に、センタサーバ２は、ネットワークを介して配信グループＢのサービス主体のコンピュータ（図示せず）から配信用のコンテンツデータを取得する。センタサーバ２は、この配信用のコンテンツデータに所定の加工処理を施し、配信グループＢのコンテンツデータとする。
【００３３】
センタサーバ２は、配信グループＡのコンテンツデータを配信グループＡに加入する複数のノード装置１の一部に送信する。また、センタサーバ２は、配信グループＢのコンテンツデータを配信グループＢに加入する複数のノード装置１の一部に送信する。これにより、各ノード装置１において、加入する配信グループのコンテンツデータを取得し、再生することが可能となる。
【００３４】
その後、コンテンツデータを取得しようとするノード装置１（以下、「リクエスタ」とも呼ぶ。）が、このコンテンツデータを保持するノード装置１（以下、「コンテンツホルダ」とも呼ぶ。）を探す。その後、リクエスタは、このコンテンツホルダからコンテンツデータを取得することになる。一方、コンテンツホルダがシステムＳから脱退するなどして、コンテンツホルダがシステムＳ内に存在しなくなったとき、リクエスタは、センタサーバ２からコンテンツデータを取得することになる。また、アクセスが集中するなどしてコンテンツホルダがコンテンツデータをリクエスタへ送信できないときも同様に、リクエスタはセンタサーバ２からコンテンツデータを取得することになる。なお、リクエスタは、コンテンツデータを取得すると、その再生を行うと共にその記憶を保持し、その後コンテンツホルダとして機能することになる。
【００３５】
このように、コンテンツホルダがない場合やコンテンツホルダにアクセスが集中している場合には、リクエスタはセンタサーバ２に対してコンテンツデータを要求する。このとき、センタサーバ２へアクセスするリクエスタが多いと、センタサーバ２に負荷がかかり安定してシステムＳを運用することができない恐れがある。
【００３６】
そこで、本実施形態に係る分散保存システムＳでは、異なる配信グループのノード装置１へのコンテンツデータの投入処理を行うようにしている。これにより、センタサーバ２への負荷を軽減し、安定して動作させるようにしている。
【００３７】
すなわち、センタサーバ２は、配信グループＡのコンテンツデータを配信グループＢに加入する複数のノード装置１の一部にも送信する。センタサーバ２は、配信グループＢのコンテンツデータを配信グループＡに加入する複数のノード装置１の一部にも送信する。これにより、各配信グループのコンテンツデータが異なる配信グループに属するノード装置１に記憶されることになる。例えば、ノード装置１ａ１が配信グループＡに加入しているとすると、図３に示すように、ノード装置１ａ１の記憶手段には、配信グループＡで配信されるコンテンツデータに加え、加入していない配信グループＢのコンテンツデータが記憶可能となる。同様に、ノード装置１ｂ１が配信グループＢに加入しているとすると、図３に示すように、ノード装置１ｂ１の記憶手段には、配信グループＢで配信されるコンテンツデータに加え、加入していない配信グループＡのコンテンツデータが記憶可能となる。
【００３８】
そして、各ノード装置１が、各ノード装置１が加入する配信グループのコンテンツデータを、異なる配信グループのノード装置１からも取得できるようにする。例えば、図２に示すように、ノード装置１ａ１が配信グループＡに加入し、ノード装置１ｂ１が配信グループＢに加入しているとする。このとき、配信グループＢのノード装置１ｂ１が配信グループＡのコンテンツデータを記憶しているとき、配信グループＡのノード装置１ａ１はノード装置１ｂ１から配信グループＡのコンテンツデータを取得できるようにする。また、配信グループＡのノード装置１ａ１が配信グループＢのコンテンツデータを記憶しているとき、配信グループＢのノード装置１ｂ１はノード装置１ａ１から配信グループＢのコンテンツデータを取得できるようにする。これにより、リクエスタは、自ノード装置と同一の配信グループに加入している他のノード装置からコンテンツデータを取得できないときであっても、異なる配信グループに加入しているノード装置１からコンテンツデータを取得することができる。特に、ノード装置１の数が少ない配信グループに対して有効である。本実施形態の分散保存システムＳでは、ノード装置１の数が少ない配信グループであっても、他の配信グループのノード装置１に分散してコンテンツデータを記憶させることができるので、コンテンツホルダの数が不十分になることを抑制することができる。そのため、配信グループでのコンテンツデータの配信を安定させることができる。
【００３９】
各ノード装置１は、新しいコンテンツデータを記憶手段に記憶するときに、その記憶手段の空き容量が足りないときには、記憶手段に記憶している複数のコンテンツデータのうち一部を削除することによって、記憶容量を確保する。
【００４０】
このとき、加入する配信グループとは異なる配信グループのコンテンツデータ（「非加入コンテンツデータ」とも呼ぶ。）を削除すると、非加入コンテンツデータが所定の第１容量値（例えば、記憶手段の総記憶容量の３５％）以下となる場合には、非加入コンテンツデータの削除を行わず、加入する配信グループのコンテンツデータ（以下、「加入コンテンツデータ」とも呼ぶ。）を削除する。
【００４１】
このようにすることで、記憶手段に記憶するコンテンツデータの入れ替えを行いつつ、非加入コンテンツデータを最低限の容量は確保することができる。従って、配信グループ間でコンテンツデータを補完して、コンテンツデータの送受信をノード装置１間で行える確率を向上させることができる。
【００４２】
また、加入コンテンツデータを削除すると、加入コンテンツデータが所定の第２容量値（例えば、記憶手段の総記憶容量の５５％）以下となる場合には、加入コンテンツデータの削除を行わず、非加入コンテンツデータを削除する。
【００４３】
このようにすることで、記憶手段に記憶するコンテンツデータの入れ替えを行いつつ、加入コンテンツデータを一定の容量値分は確保することができる。従って、加入する配信グループでのコンテンツデータの送受信をノード装置１間で行える確率を向上させることができる。
【００４４】
また、上述した第１容量値や第２容量値は、配信グループでのコンテンツデータの配信状態に基づいて配信グループ毎に決定するようにしており、具体的には以下のように実行される。
【００４５】
配信グループ毎に、所定のノード装置１がコンテンツデータ毎の配信状況の情報を取得し、センタサーバ２へ送信する。配信状況の情報として、例えば、コンテンツデータのリクエスト履歴やコンテンツホルダの数の情報などが含まれる。センタサーバ２は、ノード装置１から取得した配信状況の情報に基づいて、各配信グループの安定度を判定する。例えば、リクエスタの数に対してコンテンツホルダの数が少なく、センタサーバ２へのアクセス数が所定以上になるコンテンツデータ（以下、「不安定コンテンツデータ」と呼ぶ。）があると判定した配信グループに対しては、不安定な配信グループであると判定する。一方、そうではない場合には、安定した配信グループであると判定する。センタサーバ２は、不安定であると判定した配信グループの記憶容量を増加させるように、第１容量値や第２容量値を決定し、各ノード装置１へ通知する。各ノード装置１は、通知された容量値に基づいて、記憶手段へのコンテンツデータの記憶処理を行う。このようにすることで、不安定な配信グループを安定させることができる。例えば、配信グループＡが不安定であり、配信グループＢが安定しているとき、配信グループＡのノード装置１の第１容量値を例えば３０％とし、第２容量値を例えば６０％とする。一方、配信グループＢのノード装置１の第１容量値を例えば４０％とし、第２容量値を例えば５０％とする。なお、配信グループＡ，Ｂが共に安定しているときには、第１容量値を例えば３５％とし、第２容量値を例えば５５％とする。
【００４６】
さらに、センタサーバ２は、不安定であると判定した配信グループの上述した不安定コンテンツデータを増加させるように、不安定と判定した配信グループの不安定コンテンツデータをノード装置１へ投入する。例えば、配信グループＡが不安定であり、配信グループＢが安定しているとき、配信グループＡの不安定コンテンツデータを、配信グループＡに加入する所定数のノード装置１と配信グループＢに加入する所定数のノード装置１へ投入する。このようにすることで、不安定な配信グループの不安定コンテンツデータを増加させて、安定させることができる。また、不安定と判定された配信グループの不安定コンテンツデータを、安定した配信グループに属するノード装置へ投入するので、例えば、加入しているノード装置１の数が少なく、ノード装置１の脱退が多い配信グループである場合でも、不安定な配信グループでのコンテンツデータの配信を安定させることができる。
【００４７】
このように、センタサーバ２は、コンテンツデータの配信状態に基づいて、配信グループ毎に第１容量値や第２容量値を決定し、各ノード装置１へ通知することで、各配信グループを安定して運用することができる。
【００４８】
ここで、リクエスタがコンテンツホルダからコンテンツデータを取得する手順を説明する。
【００４９】
各ノード装置１及び各コンテンツデータにはそれぞれ固有の識別情報が割り当てられており、この識別情報に基づいて、ノード装置１間でデータの送受信を行う。固有の識別情報として、ノード装置１にはノードＩＤが割り当てられる。また固有の識別情報として、コンテンツデータにはコンテンツＩＤが割り当てられる。ノードＩＤは、例えば、各ノード装置１のＭＡＣアドレス又はＩＰアドレスを所定のハッシュ関数でハッシュ化して生成される。また、コンテンツＩＤは、例えば、各コンテンツデータのタイトル名や内容の情報をノードＩＤの生成で用いたハッシュ関数と同じハッシュ関数でハッシュ化して生成される。本実施形態においては、各ノードＩＤ及び各コンテンツＩＤはｙビット（例えば、ｙ＝８）の数字で規定される。そして、コンテンツＩＤを超えず、このコンテンツＩＤに最も近いノードＩＤを有するノード装置１（以下、「ルートノード」と呼ぶ。）がそのコンテンツＩＤに対応するインデックステーブルを記憶しているものとする。このインデックステーブルは、コンテンツＩＤに対応するコンテンツデータを保持するコンテンツホルダの所在情報（以下、「ホルダ情報」と呼ぶ。）とコンテンツＩＤとを関連づけたテーブルである。なお、ホルダ情報は、例えば、コンテンツホルダのＩＰアドレスである。また、各ノード装置１は、一部のノード装置１のノードＩＤと所在情報とを関連づけたテーブル（以下、「ルーティングテーブル」と呼ぶ。）を記憶している。各ノード装置１は、所在情報を記憶したノード装置１のうち宛先ＩＤに最も近いノードＩＤのノード装置１をルーティングテーブルから選択してメッセージを送信したり、転送したりする。なお、コンテンツＩＤ、ノードＩＤ、インデックステーブル及びルーティングテーブルについては、例えば、特開２００８−２５０５７０号公報等に記載された技術と同様である。
【００５０】
各ノード装置１は、コンテンツデータを取得すると、コンテンツホルダとなる。コンテンツホルダとなったノード装置１は、取得したコンテンツデータのコンテンツＩＤを宛先ＩＤとし、パブリッシュメッセージを送信する。このとき、コンテンツホルダは、パブリッシュメッセージをルーティングテーブルに記憶したノードＩＤのうち、宛先ＩＤに最も近いノードＩＤのノード装置１へ送信する。このパブリッシュメッセージには、取得したコンテンツデータのコンテンツＩＤやホルダ情報である自ノード装置１の所在情報などが含まれる。このパブリッシュメッセージは、他のノード装置１により転送されてルートノードに到達し、ルートノードでパブリッシュメッセージに含まれるホルダ情報が記憶される。
【００５１】
一方、各ノード装置１は、リクエスタとしてコンテンツデータを取得しようとするとき、ホルダ情報を問い合わせるためのクエリメッセージを送信する。このとき、リクエスタは、取得しようとするコンテンツデータのコンテンツＩＤをクエリメッセージの宛先ＩＤとする。そして、リクエスタは、ルーティングテーブルに記憶したノードＩＤのうち、宛先ＩＤに最も近いノードＩＤのノード装置１にクエリメッセージを送信する。このクエリメッセージは、他のノード装置１により転送されてルートノードに到達する。ルートノードは、ホルダ情報をリクエスタへ送信する。これにより、リクエスタは、コンテンツホルダの所在情報を知ることになり、コンテンツホルダにコンテンツデータの取得要求を行って、コンテンツデータを取得する。
【００５２】
ところで、センタサーバ２は、各配信グループで再生できるコンテンツデータのリスト（以下、「コンテンツカタログ」とする。）を生成してノード装置１へ投入する機能などを有している。
【００５３】
このコンテンツカタログは、複数の配信グループＡ，Ｂで共通であり、再生できるコンテンツデータのタイトル名、コンテンツＩＤ及びグループ識別情報を含む。例えば、図４に示すように、コンテンツカタログは、タイトル名、コンテンツＩＤ及びグループ識別情報が互いに関連づけられた情報を有している。
【００５４】
各ノード装置１は、加入している配信グループを識別するための加入グループ情報を記憶手段に記憶している。この加入グループ情報は、各ノード装置１が新規に配信グループに参加するときに、センタサーバ２へ要求して取得するものであるが、各配信グループのコンテンツデータを管理する他のサーバから取得するようにしてもよい。
【００５５】
加入グループ情報は、例えば、配信グループごとの設定ファイル(電子証明書など)であり、各ノード装置１は、記憶手段に記憶している加入グループ情報に基づいて、加入している配信グループを判定する。複数の加入グループ情報を有するノード装置１では、使用する加入グループ情報を切り替えることにより、参加する配信グループを選択する。このようにすることにより、ノード装置１が利用している配信グループを明確にすることができる。なお、複数の加入グループ情報を有する場合には、各加入グループ情報に対応する配信グループの全てに参加するようにしてもよい。
【００５６】
各ノード装置１は、上述のように加入グループ情報に基づいて加入している配信グループを判定する。そして、各ノード装置１は、コンテンツカタログのグループ識別情報に基づき、加入している配信グループのコンテンツデータを再生することができる。一方、各ノード装置１は、加入していない配信グループのコンテンツデータは再生できないように制限される。
従って、各ノード装置１は、記憶手段に非加入コンテンツデータが記憶されているときであっても、その非加入コンテンツデータの再生が規制され、利用が制限される。
【００５７】
例えば、配信グループＡに加入しているノード装置１ａ１は、コンテンツデータを取得して記憶手段に記憶した後、そのコンテンツデータが配信グループＡのコンテンツデータかどうかをコンテンツカタログを参照してチェックする。このとき、取得したコンテンツデータが配信グループＡのコンテンツデータである場合は、コンテンツデータの記憶手段からの読み出しを許可し、コンテンツデータの読み出しを行う。一方、取得したコンテンツデータが配信グループＡのコンテンツデータでない場合は、コンテンツデータの記憶手段からの読み出しを許可しない。
【００５８】
また、センタサーバ２がコンテンツカタログに含まれるコンテンツＩＤを暗号化するようにしてもよい。このとき、各ノード装置１は、加入配信グループのコンテンツＩＤのみ復号化する。このようにすることによっても、各ノード装置１では、非加入配信グループのコンテンツデータを取得できないようにすることができる。具体的には、センタサーバ２の制御部は、配信グループ毎にそれぞれ異なる暗号化キーにより使用制限がかけられたコンテンツＩＤを生成する。そして、センタサーバ２の制御部は、このように生成したコンテンツＩＤを含むコンテンツカタログを生成する。さらに、センタサーバ２の制御部は、各ノード装置１に対し、それぞれが属する配信グループの復号キーを送信する。一方、ノード装置１の制御部は、センタサーバ２から加入配信グループの復号キーを受信する。ノード装置１の制御部は、この復号キーを用いて、暗号化により使用制限がかけられたコンテンツＩＤをコンテンツカタログから読み出して復号化する。また、各ノード装置１は、非加入配信グループの復号キーは取得しておらず、非加入配信グループのコンテンツＩＤは復号化することがでない。
【００５９】
また、センタサーバ２は、各コンテンツＩＤを暗号化するのではなく、コンテンツカタログを暗号化することもできる。このとき、各ノード装置１は、コンテンツカタログを復号化して、加入配信グループのコンテンツＩＤを取得する。具体的には、センタサーバ２の制御部は、単位を配信グループ毎に、例えば、コンテンツＩＤ、コンテンツタイトル、コンテンツ内容などを含むカタログ情報を生成する。そして、センタサーバ２の制御部は、配信グループ毎にそれぞれ異なる暗号化キーにより使用制限がかけられたカタログ情報を生成する。そして、センタサーバ２の制御部は、このように生成したカタログ情報を含むコンテンツカタログを生成する。さらに、センタサーバ２の制御部は、各ノード装置１に対し、それぞれが属する配信グループの復号キーを送信する。一方、ノード装置１の制御部は、センタサーバ２から加入配信グループの復号キーを受信する。ノード装置１の制御部は、この復号キーを用いて、暗号化により使用制限がかけられたコンテンツカタログから加入配信グループのカタログ情報を読み出して復号化する。また、各ノード装置１は、非加入配信グループの復号キーは取得しておらず、非加入配信グループのカタログ情報は復号化することがでない。
【００６０】
また、各ノード装置１は、加入していない配信グループのコンテンツデータを検索するためのクエリメッセージを送信しないようにすることもできる。例えば、配信グループＡに加入しているノード装置１ａ１は、配信グループＢのコンテンツデータを取得するためにクエリメッセージを送信しようとするとき、コンテンツデータに関連づけられたグループ識別情報をコンテンツカタログから取得してチェックする。そのコンテンツデータが、加入している配信グループＡ以外のコンテンツデータであれば、クエリメッセージを送信しないようにすることで、配信グループＡ以外のコンテンツデータを利用できないように制御することができる。
【００６１】
［１．２．ノード装置の具体的構成及び動作の説明］
以下、図面を参照して、ノード装置１の具体的構成及び動作の一例について説明する。
【００６２】
（ノード装置１の構成について）
まず、ノード装置１の構成について説明する。
【００６３】
ノード装置１は、専用のコンピュータの他、一般のパーソナルコンピュータを適用可能であり、図５に示すように、制御部１１、第１記憶部１２、第２記憶部１３、バッファメモリ１４、デコーダ部１５、映像処理部１６、表示部１７、音声処理部１８、スピーカ１９、入力部２０、通信部２１を備えている。なお、制御部１１、第１記憶部１２、第２記憶部１３、バッファメモリ１４、デコーダ部１５、通信部２１は、システムバス２２を介して相互に接続されている。
【００６４】
制御部１１は、ＣＰＵ（Central Processing Unit）、内部メモリから構成される。この内部メモリには、情報処理プログラムが格納されており、ＣＰＵは内部メモリに記憶されている情報処理プログラムを読み出して実行することによって、受信手段、取得手段、送信手段、記憶制御手段、加入グループ判定手段、グループ情報取得手段等として機能する。
【００６５】
なお、この情報処理プログラムは、例えば、ネットワーク８に接続されたサーバ（例えば、センタサーバ２）から、通信部２１を介して、制御部１１の内部メモリにダウンロードされるようにしてもよく、又ＣＤ−ＲＯＭ等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部１１の内部メモリに読み込まれるようにしてもよい。
【００６６】
第１記憶部１２は、ルーティングテーブル、インデックステーブル、第１容量値や第２容量値等を記憶する書き換え可能なメモリである。第２記憶部１３は、センタサーバ２や他のノード装置１から取得したコンテンツデータを記憶する不揮発性メモリである。
【００６７】
バッファメモリ１４は、ネットワーク８を介して取得したコンテンツデータを一時的に記憶するメモリである。デコーダ部１５は、バッファメモリ１４に記憶したコンテンツデータを順次取り出してデコードする。映像処理部１６は、デコーダ部１５によりデコードされたコンテンツデータのうち映像情報を、表示部１７で表示可能な情報に変換処理する。また、音声処理部１８は、デコーダ部１５によりデコードされたコンテンツデータのうち音声情報を、スピーカ１９で音波として出力可能な情報に変換処理する。
【００６８】
（ノード装置１の動作について）
以上のように構成されたノード装置１の動作を図面を参照して具体的に説明する。なお、以下の各処理は、制御部１１のＣＰＵが内部メモリに記憶した情報処理プログラムを実行状態とし、上述した各手段等として機能することによって実行されるものである。
【００６９】
図６に示すように、メイン処理を開始すると、制御部１１は、通信部２１を介してセンタサーバ２に対し、コンテンツＩＤを含むコンテンツカタログを要求する。制御部１１は、この要求に対してセンタサーバ２から送信されるコンテンツカタログを通信部２１を介して取得する（ステップＳ１）。このとき、制御部１１は、取得したコンテンツカタログに含まれるコンテンツデータのタイトル名を表示部１７に表示するようにしてもよい。このように、制御部１１は、配信グループを識別するためのグループ識別情報とコンテンツデータを識別するためのコンテンツ識別情報とが関連づけられたコンテンツカタログをネットワークを介して受信する受信手段として機能する。また、制御部１１は、通信部２１を介してセンタサーバ２に対し、加入配信グループのグループ識別情報を要求する。
【００７０】
次に、制御部１１は、再生指示があるか否かを判定する（ステップＳ２）。この処理において、制御部１１は、例えば、利用者による入力部２０への操作によって、表示部１７に表示されているコンテンツカタログの中からコンテンツデータが選択されたときに、制御部１１は、再生指示があったと判定する。
【００７１】
制御部１１は、再生指示があったと判定すると（ステップＳ２：Ｙｅｓ）、再生処理を開始する（ステップＳ３）。この再生処理は、図７に示すステップＳ２０〜Ｓ２９に示す処理であり、後で詳述する。再生指示がないと判定すると（ステップＳ２：Ｎｏ）、制御部１１は、通信部２１を介して他のノード装置１からクエリメッセージを受信したか否かを判定する（ステップＳ４）。この処理において、クエリメッセージを受信したと判定すると（ステップＳ４：Ｙｅｓ）、制御部１１は、クエリメッセージ処理を開始する（ステップＳ５）。このクエリメッセージ処理は、図９におけるステップＳ４０〜Ｓ４８の処理であり、後で詳述する。
【００７２】
ステップＳ４において、クエリメッセージを受信していないと判定すると（ステップＳ４：Ｎｏ）、制御部１１は、通信部２１を介して他のノード装置１からパブリッシュメッセージを受信したか否かを判定する（ステップＳ６）。この処理において、パブリッシュメッセージを受信したと判定すると（ステップＳ６：Ｙｅｓ）、制御部１１は、パブリッシュメッセージ処理を開始する（ステップＳ７）。このパブリッシュメッセージ処理は、パブリッシュメッセージに含まれるホルダ情報を第１記憶部１２に記憶したインデックステーブルに追加する処理である。なお、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づき、パブリッシュメッセージの宛先ＩＤが自ノード装置１のノードＩＤと最も近いものではないと判定すると、自装置がルートノードではないと判定して、ルーティングテーブルに基づき、パブリッシュメッセージを通信部２１を介して他のノード装置１へ転送する。
【００７３】
ステップＳ６において、パブリッシュメッセージを受信していないと判定すると（ステップＳ６：Ｎｏ）、制御部１１は、通信部２１を介して他のノード装置１からコンテンツデータの送信要求があったか否かを判定する（ステップＳ８）。この処理において、通信部２１を介し、コンテンツデータの送信要求があったと判定すると（ステップＳ８：Ｙｅｓ）、制御部１１は、送信要求に対応するコンテンツデータを第２記憶部１３から読み出し、送信要求元のノード装置１へ通信部２１を介して送信する（ステップＳ９）。このように、制御部１１は、ネットワークを介してコンテンツデータの送信要求を受信したとき、送信要求に対応するコンテンツデータを記憶手段から読み出し、送信要求元へネットワークを介して送信する送信手段として機能する。
【００７４】
ステップＳ８において、コンテンツデータの送信要求がないと判定すると（ステップＳ８：Ｎｏ）、制御部１１は、通信部２１を介してセンタサーバ２からコンテンツデータの保持要求があったか否かを判定する（ステップＳ１０）。この処理において、コンテンツデータの保持要求があったと判定すると（ステップＳ１０：Ｙｅｓ）、制御部１１は、保持要求があったコンテンツデータを、第２記憶部１３に記憶すべき新規コンテンツデータとして記憶処理を開始する（ステップＳ１１）。この記憶処理は、図８におけるステップＳ３０〜Ｓ３６の処理であり、後で詳述する。
【００７５】
ステップＳ１０において、コンテンツデータの保持要求がなかったと判定すると（ステップＳ１０：Ｎｏ）、制御部１１は、容量値情報をセンタサーバ２から通信部２１を介して受信したか否かを判定する（ステップＳ１２）。ここで、容量値情報とは、上述した第１容量値や第２容量値である。この処理において、容量値情報を受信したと判定すると（ステップＳ１２：Ｙｅｓ）、制御部１１は、受信した容量値の情報を第１記憶部１２に記憶する（ステップＳ１３）。このように制御部１１は、センタサーバ２から通知された所定容量値の情報を第１記憶部１２に記憶する記憶制御手段として機能する。
【００７６】
ステップＳ１２において、容量値情報を受信していないと判定すると（ステップＳ１２：Ｎｏ）、制御部１１は、センタサーバ２から通信部２１を介して配信情報リクエストメッセージを受信したかを判定する（ステップＳ１４）。この処理において、配信情報リクエストメッセージを受信したと判定すると（ステップＳ１４：Ｙｅｓ）、制御部１１は、第１記憶部１２に記憶している配信状況の情報を読み出し、通信部２１を介してセンタサーバ２へ送信する（ステップＳ１５）。なお、配信状況の情報として、例えば、コンテンツデータのリクエスト履歴やコンテンツホルダの数の情報などが含まれる。このように、制御部１１は、ネットワークを介して配信状況の情報の送信要求を受信したとき、この配信状況の情報を記憶手段から読み出し、要求元へネットワークを介して送信する送信手段として機能する。
【００７７】
ステップＳ３，Ｓ５，Ｓ７，Ｓ９，Ｓ１１，Ｓ１３，Ｓ１５の処理が終了したとき、又は、配信情報リクエストメッセージを受信していないと判定すると（ステップＳ１４：Ｎｏ）、制御部１１は、終了指示を検知したかを判定する（ステップＳ１６）。例えば、自ノード装置１の電源がＯＦＦ状態へ移行したとき、制御部１１は、終了指示を検知する。制御部１１は、終了指示を検知したと判定すると（ステップＳ１６：Ｙｅｓ）、本メイン処理を終了し、一方、終了指示を検知していないと判定すると（ステップＳ１６：Ｎｏ）、ステップＳ２からの処理を繰り返す。
【００７８】
次に、ステップＳ３で開始される再生処理について図７のフローチャートを参照して具体的に説明する。
【００７９】
図７に示すように、再生処理を開始すると、制御部１１は、再生指示のあったコンテンツデータが第２記憶部１３に記憶されているか否かを判定する（ステップＳ２０）。第２記憶部１３には、コンテンツデータがコンテンツＩＤに関連づけられて記憶されている。制御部１１は、コンテンツＩＤに基づいて第２記憶部１３に再生指示のあったコンテンツデータが記憶されているか否かを判定する。
【００８０】
第２記憶部１３に再生指示のあったコンテンツデータが記憶されていないと判定すると（ステップＳ２０：Ｎｏ）、制御部１１は、再生指示のあったコンテンツデータが加入している配信グループ（以下、「加入配信グループ」とする。）のコンテンツデータであるか否かを判定する（ステップＳ２１）。この処理において、制御部１１は、コンテンツカタログを参照し、再生指示のあったコンテンツデータのコンテンツＩＤに関連づけられたグループ識別情報が加入している配信グループのグループ識別情報と一致するときに、加入配信グループのコンテンツデータであると判定する。上述したように配信グループに加入するときに、制御部１１は、加入する配信グループを識別するための加入グループ情報をセンタサーバ２から通信部２１を介して取得し、第１記憶部１２（加入グループ情報記憶手段の一例に相当）に記憶する。そして、制御部１１は、第１記憶部１２に記憶した加入グループ情報に対応するグループ識別情報を判定する。なお、加入グループ情報をグループ識別情報と同一の情報としてもよい。このように、制御部１１は、加入グループ情報をネットワークを介して少なくとも１つ取得するグループ情報取得手段、第１記憶部１２に記憶した加入グループ情報に基づいて、加入している配信グループを判定する加入グループ判定手段として機能する。
【００８１】
再生指示のあったコンテンツデータが加入配信グループのコンテンツデータではないと判定すると（ステップＳ２１：Ｎｏ）、制御部１１は、表示部１７に表示ができない旨の表示を行い（ステップＳ２９’）、再生処理を終了する。
【００８２】
一方、再生指示のあったコンテンツデータが加入配信グループのコンテンツデータであると判定すると（ステップＳ２１：Ｙｅｓ）、制御部１１は、再生指示のあったコンテンツデータのコンテンツＩＤを宛先ＩＤとしたクエリメッセージを、第１記憶部１２に記憶したルーティングテーブルに基づき、通信部２１を介して送信する（ステップＳ２２）。その後、制御部１１は、ホルダ情報を取得したか否かを判定する（ステップＳ２３）。この処理において、制御部１１は、ステップＳ２２において送信したクエリメッセージに対して他のノード装置１から所定期間内にホルダ情報を通信部２１を介して受信したときに、ホルダ情報を取得したと判定する。
【００８３】
ホルダ情報を受信したと判定すると（ステップＳ２３：Ｙｅｓ）、制御部１１は、このホルダ情報に基づき、他のノード装置１に再生指示のあったコンテンツデータの送信要求を行う（ステップＳ２４）。一方、ホルダ情報を受信できないとき（ステップＳ２３：Ｎｏ）、制御部１１は、再生指示のあったコンテンツデータの送信要求を通信部２１を介してセンタサーバ２に対して行う（ステップＳ２７）。
【００８４】
ステップＳ２４，Ｓ２７の処理が終了すると、制御部１１は、再生指示のあったコンテンツデータを新規コンテンツデータとして記憶処理を開始する（ステップＳ２５）。この記憶処理は、図８におけるステップＳ３０〜Ｓ３６の処理であり、後で詳述する。その後、制御部１１は、取得したコンテンツデータの再生を行う（ステップＳ２６）。バッファメモリ１４に記憶したコンテンツデータをデコーダ部１５により順次取り出してデコードし、その映像情報を表示部１７に表示し、その音声情報をスピーカ１９から出力して、再生処理を終了する。このように、制御部１１は、複数の配信グループのうち、加入している配信グループで配信されるコンテンツデータを、コンテンツカタログに基づき、前記ネットワークを介して取得する取得手段として機能する。より具体的には、制御部１１は、コンテンツカタログに含まれるコンテンツ識別情報のうち、グループ情報取得手段として機能して取得した加入グループ情報に対応するグループ識別情報に関連づけられたコンテンツ識別情報を選択し、この選択したコンテンツ識別情報のコンテンツデータをネットワークを介して取得する取得手段として機能する。
【００８５】
ステップＳ２０において、再生指示のあったコンテンツデータが第２記憶部１３に記憶されていると判定すると（ステップＳ２０：Ｙｅｓ）、制御部１１は、再生指示のあったコンテンツデータが加入配信グループであるか否かを判定する（ステップＳ２８）。この処理において、再生指示のあったコンテンツデータが加入配信グループであると判定すると（ステップＳ２８：Ｙｅｓ）、制御部１１は、再生指示のあったコンテンツデータを第２記憶部１３から順次読み出してデコーダ部１５でデコードし、その映像情報を表示部１７に表示し、その音声情報をスピーカ１９から出力して（ステップＳ２９）、本再生処理を終了する。一方、再生指示のあったコンテンツデータが加入配信グループではないと判定すると（ステップＳ２８：Ｎｏ）、制御部１１は、第２記憶部１３からのコンテンツデータの読み出しを行わずに、表示部１７に表示ができない旨の表示を行い（ステップＳ２９’）、再生処理を終了する。
【００８６】
次に、ステップＳ１１，Ｓ２５で開始される記憶処理について図８のフローチャートを参照して具体的に説明する。
【００８７】
図８に示すように、記憶処理を開始すると、制御部１１は、第２記憶部１３に空き領域があるか否かを判定する（ステップＳ３０）。この処理において、制御部１１は、第２記憶部１３の総記憶領域のうち、コンテンツデータを記憶している記憶領域を除く記憶領域に、新規コンテンツデータ（再生指示のあったコンテンツデータや保持要求があったコンテンツデータ）が記憶できるときに、第２記憶部１３に空き領域があると判定する。
【００８８】
第２記憶部１３に空き領域がないと判定すると（ステップＳ３０：Ｎｏ）、制御部１１は、新規コンテンツデータが加入配信グループのコンテンツデータであるか否かを判定する（ステップＳ３１）。この処理において、制御部１１は、コンテンツカタログを参照し、新規コンテンツデータのコンテンツＩＤに関連づけられたグループ識別情報が加入している配信グループのグループ識別情報と一致するときに、加入配信グループのコンテンツデータであると判定する。
【００８９】
新規コンテンツデータが加入配信グループのコンテンツデータであると判定すると（ステップＳ３１：Ｙｅｓ）、制御部１１は、第１記憶部１２に記憶した第１容量を読み出す。また、制御部１１は、第２記憶部１３の記憶領域のうち、非加入配信グループのコンテンツデータを記憶している領域（以下、「第２領域」とする。）の容量値を検出する。そして、制御部１１は、この第２領域に記憶しているコンテンツデータを削除して新規コンテンツデータを記憶すると第２領域の容量値が第１容量値以下となるか否かを判定する（ステップＳ３２）。この処理において、第２領域の容量値が第１容量値以下になると判定すると（ステップＳ３２：Ｙｅｓ）、加入配信グループのコンテンツデータを記憶している領域（以下、「第１領域」とする。）に記憶しているコンテンツデータを１以上削除する（ステップＳ３３）。これにより、新規コンテンツデータを第２記憶部１３に記憶するための領域を確保することができる。その後、制御部１１は、新規コンテンツデータを第２記憶部１３の第１領域に記憶する（ステップＳ３４）。
【００９０】
一方、第２領域の容量値が第１容量値以下にならないと判定すると（ステップＳ３２：Ｎｏ）、制御部１１は、第２記憶部１３の第２領域に記憶しているコンテンツデータを１以上削除し（ステップＳ３５）、新規コンテンツデータを第２記憶部１３の第２領域に記憶する（ステップＳ３４）。
【００９１】
ステップＳ３１において、新規コンテンツデータが加入配信グループのコンテンツデータはないと判定すると（ステップＳ３１：Ｎｏ）、制御部１１は、第１記憶部１２に記憶した第２容量を読み出す。そして、制御部１１は、第２記憶部１３の第１領域の容量値が、この第１領域に記憶しているコンテンツデータを削除して新規コンテンツデータを記憶すると第２容量値以下となるか否かを判定する（ステップＳ３６）。この処理において、第１領域が第２容量値以下となると判定すると（ステップＳ３６：Ｙｅｓ）、制御部１１は、第２記憶部１３の第２領域に記憶しているコンテンツデータを１以上削除する（ステップＳ３５）。その後、制御部１１は、新規コンテンツデータを第２記憶部１３の第２領域に記憶する（ステップＳ３４）。一方、第１領域が第２容量値以下とならないと判定すると（ステップＳ３６：Ｎｏ）、制御部１１は、第２記憶部１３の第１領域に記憶しているコンテンツデータを１以上削除する（ステップＳ３３）。その後、制御部１１は、新規コンテンツデータを第２記憶部１３の第１領域に記憶する（ステップＳ３４）。
【００９２】
また、ステップＳ３０において、第２記憶部１３に空き領域があると判定すると（ステップＳ３０：Ｙｅｓ）、制御部１１は、第２記憶部１３の空き領域に、新規コンテンツデータを記憶する（ステップＳ３４）。
【００９３】
このように、第２記憶部１３は、加入している配信グループで配信されるコンテンツデータに加え、加入していない配信グループで配信されるコンテンツデータを記憶する記憶手段として機能する。また、制御部１１は、判定手段、記憶制御手段として機能する。すなわち、制御部１１は、第２記憶部１３に新たなコンテンツデータを記憶するときに、第２記憶部１３の記憶容量が不足しているか否かを判定する。また、制御部１１は、第２記憶部１３の記憶容量が不足していると判定すると、この第２記憶部１３に記憶している１以上のコンテンツデータを削除して、新たなコンテンツデータを記憶する領域を確保する。また、制御部１１は、加入していない配信グループのコンテンツデータを削除すると、加入していない配信グループのコンテンツデータが所定の第１容量値以下となるか否かを判定する。このとき、所定の第１容量値以下となる場合には、制御部１１は、加入していない配信グループのコンテンツデータの削除を行わず、加入している配信グループのコンテンツデータを削除する。さらに、制御部１１は、加入している配信グループのコンテンツデータを削除すると、加入している配信グループのコンテンツデータが所定の第２容量値以下となるか否かを判定する。このとき、所定の第２容量値以下となる場合には、制御部１１は、加入している配信グループのコンテンツデータの削除を行わず、加入していない配信グループのコンテンツデータを削除する。
【００９４】
次に、ステップＳ５で開始されるクエリメッセージ処理について図９のフローチャートを参照して具体的に説明する。
【００９５】
図９に示すように、クエリメッセージ処理を開始すると、制御部１１は、クエリメッセージで検索要求されたコンテンツデータのルートノードであるか否かを判定する（ステップＳ４０）。この処理において、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づき、クエリメッセージの宛先ＩＤが自ノード装置１のノードＩＤと最も近いと判定すると、自ノード装置１がルートノードであると判定する。
【００９６】
ルートノードであると判定すると（ステップＳ４０：Ｙｅｓ）、制御部１１は、ホルダ情報を通知済みであるか否かを判定する（ステップＳ４１）。この処理において、制御部１１は、クエリメッセージに含まれるホルダ情報通知済みフラグがセットされているときに、ホルダ情報を通知済みであると判定する。ホルダ情報を通知済みではないと判定すると（ステップＳ４１：Ｎｏ）、制御部１１は、クエリメッセージに対応するホルダ情報を第２記憶部１３のインデックステーブルから抽出して、クエリメッセージの送信元であるノード装置１へ通信部２１を介して送信して通知する（ステップＳ４２）。
【００９７】
ステップＳ４２の処理が終了したとき、又は、ホルダ情報を通知済みであると判定すると（ステップＳ４１：Ｙｅｓ）、制御部１１は、リクエスタ情報とリクエスト日時とを関連づけたリクエスト履歴を配信状況の情報として第１記憶部１２に記憶して（ステップＳ４３）、クエリメッセージ処理を終了する。なお、リクエスタ情報はクエリメッセージを送信したノード装置１のノードＩＤであり、リクエスト日時はクエリメッセージを受信した日時である。
【００９８】
ステップＳ４０において、ルートノードではないと判定すると（ステップＳ４０：Ｎｏ）、制御部１１は、ステップＳ４１と同様に、ホルダ情報を通知済みであるか否かを判定する（ステップＳ４４）。このとき、ホルダ情報を通知済みであると判定すると（ステップＳ４４：Ｙｅｓ）、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づいて、クエリメッセージを他のノード装置１へ転送する（ステップＳ４５）。一方、ホルダ情報を通知済みではないと判定すると（ステップＳ４４：Ｎｏ）、制御部１１は、ホルダ情報を保持しているかを判定する（ステップＳ４６）。この処理において、制御部１１は、クエリメッセージの検索対象であるコンテンツデータを保持するコンテンツホルダのノードＩＤがインデックステーブルにあるときに、ホルダ情報を保持していると判定する。ホルダ情報を保持していると判定すると（ステップＳ４６：Ｙｅｓ）、制御部１１は、ステップＳ４２の処理と同様に、ホルダ情報を通知する（ステップＳ４７）。その後、制御部１１は、クエリメッセージのホルダ情報通知済みフラグをセットする（ステップＳ４８）。
【００９９】
ステップＳ４８の処理が終了したとき、ステップＳ４６においてホルダ情報を保持していないと判定したとき（ステップＳ４６：Ｎｏ）、又は、ステップＳ４４においてホルダ情報を通知済みであると判定したとき（ステップＳ４４：Ｙｅｓ）、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づき、クエリメッセージを転送し（ステップＳ４５）、クエリメッセージ処理を終了する。
【０１００】
［１．６．センタサーバ２の具体的構成及び動作の説明］
次に、センタサーバ２の具体的構成及び動作の一例について説明する。
【０１０１】
（センタサーバ２の具体的構成について）
まず、センタサーバ２の具体的構成について説明する。
【０１０２】
センタサーバ２は、一般のサーバコンピュータを適用可能である。センタサーバ２は、図１０に示すように、制御部３１、記憶部３２、通信部３３を備えており、これらはシステムバス３４を介して相互に接続されている。制御部３１は、センタサーバ２全体を制御する。記憶部３２は、分散保存システムＳに投入されている全てのコンテンツデータの他、コンテンツカタログ等を書き換え可能に記憶する。通信部３３は、ノード装置１と通信するための通信インターフェイスである。
【０１０３】
制御部３１は、ＣＰＵ（Central Processing Unit）、内部メモリなどから構成される。この内部メモリには、情報処理プログラムが格納されており、ＣＰＵは内部メモリに記憶されている情報処理プログラムを読み出して実行することによって、保存手段、生成手段、送信手段、容量値決定手段、配信情報取得手段、安定度判定手段等として機能する。また、ＣＰＵは、内部にタイマを有しており、計時動作を行う。
【０１０４】
なお、この情報処理プログラムは、例えば、ネットワークに接続された他のサーバ（図示せず）から、通信部３３を介して、制御部３１の内部メモリにダウンロードされるようにしてもよい。また、この情報処理プログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部３１の内部メモリに読み込まれるようにしてもよい。
【０１０５】
（センタサーバ２の具体的動作について）
以上のように構成されたセンタサーバ２の動作を図面を参照して具体的に説明する。なお、以下の各処理は、センタサーバ２の制御部３１が上述した各手段等として機能することによって実行される。なお、各配信グループのノード装置１には、センタサーバ２の制御部３１により、すでにコンテンツデータ、コンテンツカタログ（図４参照）及びグループ識別情報が配信されているものとする。
【０１０６】
図１１に示すように、メイン処理を開始すると、制御部３１は、タイマを初期化してタイマのカウントを開始し（ステップＳ５０）、ノード装置１から通信部３３を介してコンテンツデータの送信要求があったか否かを判定する（ステップＳ５１）。この処理において、コンテンツデータの送信要求があると判定すると（ステップＳ５１：Ｙｅｓ）、制御部３１は、送信要求に対応するコンテンツデータを記憶部３２から読み出し、送信要求を行ったノード装置１へ通信部３３を介して送信する（ステップＳ５２）。
【０１０７】
ステップＳ５１の処理が終了したとき、又は、コンテンツデータの送信要求がないと判定すると（ステップＳ５１：Ｎｏ）、制御部３１は、新規のコンテンツデータがあるか否かを判定する（ステップＳ５３）。この処理において、制御部３１は、ネットワークを介して配信グループのサービス主体のコンピュータ（図示せず）から配信用のコンテンツデータを取得したときに、新規のコンテンツデータがあると判定する。
【０１０８】
新規のコンテンツデータがあると判定すると（ステップＳ５３：Ｙｅｓ）、制御部３１は、新規のコンテンツデータの投入を行う（ステップＳ５４）。この処理において、制御部３１は、配信グループのサービス主体のコンピュータから取得したコンテンツデータに、所定の加工処理（例えば、ウィルスチェックなど）を施して配信用のコンテンツデータにする。その後、制御部３１は、どのサービス主体のコンピュータから送信されたコンテンツデータかを判定し、そのサービス主体のコンピュータに対応する配信グループ（以下、「対象配信グループ」と呼ぶ。）に加入しているノード装置１のうち１以上のノード装置１を選択する。そして、制御部３１は、選択したノード装置１に対して配信用のコンテンツデータを通信部３３を介して送信する。さらに、制御部３１は、対象配信グループではない配信グループに加入しているノード装置１のうち１以上のノード装置１を選択する。そして、選択したノード装置１に対して配信用のコンテンツデータを通信部３３を介して送信する。このように、制御部３１は、各配信グループのコンテンツデータを、同一の配信グループに加入しているノード装置１に加え、異なる配信グループに加入しているノード装置１へ分散保存させる保存手段として機能する。
【０１０９】
新規のコンテンツデータの投入を行った後、制御部３１は、新規のコンテンツデータのコンテンツＩＤと配信グループのグループ識別番号とを関連づけたカタログ情報をコンテンツカタログに追加して、コンテンツカタログを更新する。制御部３１は、更新したコンテンツカタログを各配信グループのノード装置１へ送信して配布する（ステップＳ５５）。このように、制御部３１は、共通のコンテンツカタログを生成する生成手段として機能する。共通のコンテンツカタログは、配信グループを識別するためのグループ識別情報と複数の配信グループで配信されるコンテンツデータを識別するためのコンテンツ識別情報とがそれぞれ関連づけられた情報である。また、制御部３１は、コンテンツカタログをネットワークを介してノード装置１へ送信する送信手段として機能する。
【０１１０】
一方、新規のコンテンツデータがないと判定すると（ステップＳ５３：Ｎｏ）、制御部３１は、タイマのカウント値に基づき、設定時間が経過したか否かを判定する（ステップＳ５６）。設定時間が経過したと判定すると（ステップＳ５６：Ｙｅｓ）、制御部３１は、配信グループ安定化処理を行い（ステップＳ５７）、タイマを初期化する（ステップＳ５８）。一方、設定時間が経過していないと判定すると（ステップＳ５６：Ｎｏ）、制御部３１は、処理をステップＳ５１に移行する。なお、配信グループ安定化処理は図１２に示すステップＳ６０〜Ｓ６４までの処理であり、後で詳述する。
【０１１１】
ステップＳ５５，Ｓ５８の処理が終了したとき、制御部３１は、終了指示を検知したかを判定する（ステップＳ５９）。例えば、自センタサーバ２の電源がＯＦＦ状態へ移行したとき、制御部３１は、終了指示を検知する。制御部３１は、終了指示を検知したと判定すると（ステップＳ５９：Ｙｅｓ）、処理を終了し、一方、終了指示を検知していないと判定すると（ステップＳ５９：Ｎｏ）、ステップＳ５１からの処理を繰り返す。
【０１１２】
次に、ステップＳ５７で開始される配信グループ安定化処理について図１２のフローチャートを参照して具体的に説明する。
【０１１３】
図１２に示すように、配信グループ安定化処理を開始すると、制御部３１は、各配信グループの各コンテンツデータのコンテンツＩＤを宛先とした配信情報リクエストメッセージを生成し、通信部３３を介して、任意のノード装置１へ送信する（ステップＳ６０）。この配信情報リクエストメッセージは、各コンテンツデータのルートノードに到達する。各ルートノードは、配信情報リクエストメッセージを受信すると、リクエスト情報とリクエスト日時とが関連づけられたリクエスト履歴やコンテンツホルダの数を配信状況の情報として通信部３３を介して送信する。ルートノードは、上述のように第１記憶部１２にコンテンツＩＤとホルダ情報とが関連づけられたインデックステーブルを記憶している。また、ルートノードは、リクエスタからクエリメッセージを受信する毎に、リクエスト履歴を第１記憶部１２に記憶する。このリクエスト履歴は、配信情報リクエストメッセージの受信日時をリクエスト日時とし、リクエスタのノードＩＤをリクエスト情報とした情報である。配信情報リクエストメッセージを受信するとルートノードは、第１記憶部１２に記憶したからインデックステーブルに含まれるホルダ情報の数をコンテンツホルダの数として読み出し、さらに第１記憶部１２に記憶したリクエスト履歴を読み出す。そして、ルートノードは、このように読み出したコンテンツホルダの数とリクエスト履歴とを配信状況の情報として通信部３３を介して送信する。
【０１１４】
その後、制御部３１は、各ルートノードから配信状況の情報を取得すると（ステップＳ６１）、配信グループ毎にその安定度を判定する（ステップＳ６２）。不安定コンテンツデータがあると判定した配信グループに対しては、不安定な配信グループであると判定する。制御部３１は、例えば、リクエスタの数に対してコンテンツホルダの数が少なく、センタサーバ２へのアクセス数が所定以上になるコンテンツデータを不安定コンテンツデータとする。一方、不安定コンテンツデータがないと判定した場合には、安定した配信グループであると判定する。制御部３１は、不安定と判定した配信グループのノード装置１を１以上選択し、さらに、不安定と判定された配信グループとは異なる配信グループに属するノード装置１を１以上選択する。
【０１１５】
そして、制御部３１は、不安定と判定した配信グループの不安定コンテンツデータを、選択したノード装置１へ通信部３３を介して送信する（ステップＳ６３）。なお、制御部３１は、不安定コンテンツデータが複数ある場合には、これらの不安定コンテンツデータを記憶部３２から読み出し、通信部３３を介してノード装置１へ送信する。不安定コンテンツデータを送信するノード装置１は各不安定コンテンツデータに対して所定数のノード装置１とする。このように、制御部３１は、配信グループ毎にコンテンツデータの配信状況を取得する配信情報取得手段、取得した配信状況に基づいて、各配信グループの安定度を判定する安定度判定手段として機能する。また、制御部３１は、不安定と判定した配信グループのコンテンツデータを、不安定と判定した配信グループのノード装置１と、不安定と判定された配信グループとは異なる配信グループに属するノード装置１とへ送信する送信手段として機能する。なお、不安定と判定された配信グループとは異なる配信グループに属するノード装置１にだけ不安定と判定した配信グループの不安定コンテンツデータを送信するようにしてもよい。
【０１１６】
また、制御部３１は、判定した配信グループの安定度に応じて、容量値の情報を通信部３３を介して送信して（ステップＳ６４）、配信グループ安定化処理を終了する。例えば、不安定と判定した配信グループがあるとき、制御部３１は、不安定と判定した配信グループのノード装置１へ、不安定な配信グループ用の容量値の情報を通信部３３を介して送信する。さらに、制御部３１は、安定と判定した配信グループのノード装置１へ、安定している配信グループ用の容量値の情報を通信部３３を介して送信する。不安定な配信グループ用容量値の情報として、例えば、第１容量を３０％とし、第２容量を６０％とし、安定している配信グループ用容量値の情報として、第１容量を４０％とし、第２容量を５０％とする。また、不安定と判定した配信グループがないとき、制御部３１は、各配信グループのノード装置１へ共通の容量値の情報を送信する。共通の容量値の情報として、例えば、第１容量を３５％とし、第２容量を５５％とする。このように、制御部３１は、各配信グループ毎のコンテンツデータの配信状態に基づいて配信グループ毎に容量値の情報を決定する容量値決定手段、決定した容量値の情報を前記ノード装置へ送信する送信手段として機能する。
【０１１７】
以上のように、本実施形態に係る分散保存システムＳでは、ノード装置１において、加入する配信サーバのコンテンツデータに加え、加入していない配信グループのコンテンツデータを記憶手段に記憶し、加入していない配信グループのコンテンツデータを記憶手段に記憶したコンテンツデータを送信できるようにしたので、サーバへのアクセスを低減し、安定して運用することができる。
【０１１８】
なお、上述では、コンテンツカタログを複数の配信グループに共通のものとして説明したが、センタサーバ２において各配信グループ毎にコンテンツカタログを生成し、ノード装置１へは加入している配信グループのコンテンツカタログのみを送信するようにしてもよい。このようにすることで、ノード装置１では、グループ識別情報を用いて加入している配信グループのコンテンツデータを判定する必要が無く、処理負担を軽減することができる。このように、センタサーバ２の制御部３１は、コンテンツカタログとして、配信グループ毎のコンテンツカタログ、すなわち配信グループ毎に、それぞれ再生できるコンテンツデータの識別情報を含むコンテンツカタログを生成する生成手段として機能させるようにしてもよい。このとき、センタサーバ２の制御部３１は、記憶部３２をグループ記憶手段として機能させる。すなわち、制御部３１は、各ノード装置１の加入配信グループを記憶部３２に記憶する。そして、制御部３１は、各ノード装置１に対して、その加入配信グループのコンテンツカタログを通信部３３を介して送信する。これにより、ノード装置１は、加入配信グループのコンテンツカタログを取得する一方、非加入配信グループのコンテンツカタログは取得できない。従って、各ノード装置１は、グループ識別情報を用いて加入配信グループのコンテンツＩＤを選択する必要がなく、制御部１１で実行する処理が軽減される。
【０１１９】
［２．第２実施形態］
次に、第２実施形態の分散保存システムについて説明する。第１実施形態における分散保存システムＳでは、クエリメッセージの受信を契機に、ルートノードがリクエスト履歴を記憶するようにした。一方、第２実施形態の分散保存システムでは、パブリッシュメッセージの受信を契機に、ルートノードがリクエスト履歴を記憶するようにする。なお、制御部１１による処理が異なる以外は、第１実施形態と同様であるため、符号等は第１実施形態と同一のものを用いて説明する。
【０１２０】
第２実施形態にかかるノード装置１でのパブリッシュメッセージ処理について説明する。
【０１２１】
パブリッシュメッセージ処理を開始すると、制御部１１は、パブリッシュメッセージに含まれるホルダ情報を第１記憶部１２に記憶したインデックステーブルに記憶する。次に、制御部１１は、自ノード装置１がルートノードであるか否かを判定する。この処理において、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づき、パブリッシュメッセージの宛先ＩＤが自ノード装置１のノードＩＤと最も近いときに、ルートノードであると判定する。このとき、自ノード装置１がルートノードではないと判定すると、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づき、パブリッシュメッセージを通信部２１を介して転送して、パブリッシュメッセージ処理を終了する。一方、自ノード装置１がルートノードであると判定すると、制御部１１は、このパブリッシュメッセージに含まれるリクエスタ情報とリクエスト日時とをリクエスト履歴として第１記憶部１２に記憶して、パブリッシュメッセージ処理を終了する。
【０１２２】
なお、制御部１１は、クエリメッセージ処理において、第１実施形態と異なり、リクエスト履歴を記憶せず、ホルダ情報通知済みフラグの処理も行わない。すなわち、ステップＳ４１，Ｓ４４，Ｓ４８の処理は不要となる。
【０１２３】
このように、制御部１１は、パブリッシュメッセージにより配信状態の情報を取得するようにしているため、より精度よく配信状態の情報を取得することができる。例えば、コンテンツホルダがない場合やコンテンツホルダにアクセスが集中している場合において、クエリメッセージにより配信状態の情報を取得しても、コンテンツホルダからコンテンツデータを取得できずに、センタサーバ２からコンテンツデータを取得することになり、精度よく配信状態の情報を取得することができない。一方で、パブリッシュメッセージであれば、コンテンツホルダからコンテンツデータをノード装置１間で送受信した結果の情報であるため、精度よく配信状態の情報を取得することができる。
【０１２４】
［３．第３実施形態］
次に、第３実施形態の分散保存システムについて説明する。第１及び第２実施形態における分散保存システムＳでは、クエリメッセージやパブリッシュメッセージの受信を契機に、ルートノードがリクエスト履歴を記憶するようにした。一方、第３実施形態のコンテンツ通信システムでは、コンテンツデータを取得したリクエスタから配信情報メッセージを送信し、この配信情報メッセージの受信を契機に、ルートノードがリクエスト履歴を記憶するようにする。なお、制御部１１による処理が異なる以外は、第１実施形態と同様であるため、符号等は第１実施形態と同一のものを用いて説明する。
【０１２５】
第３実施形態にかかるノード装置１での配信情報メッセージ処理について説明する。配信情報メッセージは、リクエスタの制御部１１が、コンテンツデータを第２記憶部１３に記憶したときに送信するものである。配信情報メッセージには、配信状況の情報として、例えば、リクエスト履歴やコンテンツホルダの数が含まれる。このリクエスト履歴には、コンテンツデータの記憶した日時であるリクエスト日時、自ノード装置１のノードＩＤであるリクエスト情報が含まれる。
【０１２６】
配信情報メッセージ処理を開始すると、制御部１１は、自ノード装置１がルートノードであるか否かを判定する。この処理において、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づき、配信情報メッセージの宛先ＩＤが自ノード装置１のノードＩＤと最も近いときに、ルートノードであると判定する。自ノード装置１がルートノードではないと判定すると、制御部１１は、第１記憶部１２に記憶したルーティングテーブルに基づき、配信情報メッセージを通信部２１を介して転送する。一方、自ノード装置１がルートノードであると判定すると、制御部１１は、配信情報メッセージに含まれるリクエスタ情報とリクエスト日時とを配信状況の情報として第１記憶部１２に記憶する。
【０１２７】
なお、パブリッシュメッセージ処理は第１実施形態のノード装置１と同様の処理であり、クエリメッセージ処理は第２実施形態のノード装置１と同様の処理である。
【０１２８】
このように、制御部１１は、配信情報メッセージにより配信状態の情報を取得するようにしているため、精度よく配信状態の情報を取得することができる。すなわち、配信情報メッセージであれば、コンテンツホルダからコンテンツデータをノード装置１間で送受信した結果の情報であるため、精度よく配信状態の情報を取得することができる。
【０１２９】
［４．その他の実施形態］
上述の実施形態では、センタサーバ２から異なる配信グループのノード装置１へコンテンツデータの投入を行うようにしているが、異なる配信グループのノード装置１からコンテンツデータの投入を行うようにしてもよい。
【０１３０】
また、上述においては、コンテンツＩＤに最も近いノードＩＤを有するノード装置１がそのコンテンツＩＤに対応するルートノードとしたが、コンテンツＩＤとルートノードとの関係はこの取り決めに限られず、例えば、コンテンツＩＤに基づき、コンテンツホルダを検索してコンテンツデータを取得することができれば任意の取り決めを適用できる。
【０１３１】
なお、配信グループから脱退したとき、ノード装置１の制御部１１は、第２記憶部１３に記憶しているコンテンツデータを削除することによって、効率的に記憶容量を確保することができる。
【符号の説明】
【０１３２】
１  ノード装置
２  センタサーバ（情報処理装置）
８  ネットワーク
１１  ノード装置の制御部
２１  ノード装置の通信部
３１  センタサーバの制御部
３３  センタサーバの通信部
【図１】
2011008707.tif 000003
【図２】
2011008707.tif 000004
【図３】
2011008707.tif 000005
【図４】
2011008707.tif 000006
【図５】
2011008707.tif 000007
【図６】
2011008707.tif 000008
【図７】
2011008707.tif 000009
【図８】
2011008707.tif 000010
【図９】
2011008707.tif 000011
【図１０】
2011008707.tif 000012
【図１１】
2011008707.tif 000013
【図１２】
2011008707.tif 000014