説明

管理装置、ノード装置、ノードプログラム、ページ情報送信プログラム、及びページ情報送信方法

【課題】コンテンツデータの属性情報等のレコードの改竄を確実に防止することができ、且つ、探索効率を上げることが可能なコンテンツカタログ情報等の管理情報を各ノード装置に送信する。
【解決手段】生成された葉ページから根ページ情報までの節ページ情報と根ページ情報とのシリアル番号及びチェック情報を、葉ページ情報の生成に基づいて更新し、ネットワークを介して、更新されたページ情報をノード装置に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、所望のコンテンツデータを検索する、または、管理するためのデータ構造に関する。具体的には、コンテンツデータの属性情報等のレコードの改竄を確実に防止することができるデータ構造及び検索技術に関する。
【背景技術】
【0002】
この種のコンテンツ分散保存システムにおいて、各ノード装置は、コンテンツデータの属性情報が記述されたコンテンツカタログ情報を用いて、所望のコンテンツデータを、他のノード装置又はコンテンツ管理サーバから取得可能になっている。この属性情報には、コンテンツ名、公開開始時期、公開終了時期、及びコンテンツデータの検索キーワード等の情報が含まれている。そして、コンテンツカタログ情報は、例えばコンテンツ管理サーバにより生成され、各ノード装置に配信される。また、コンテンツ分散保存システムにおいて、新たなコンテンツデータが追加された場合、又はコンテンツデータの利用が終了した場合には、コンテンツカタログ情報はコンテンツ管理サーバにより更新され、各ノード装置に配信される。
【0003】
ところで、コンテンツ分散保存システムにおいて利用可能なコンテンツデータの数が増大すると、コンテンツカタログ情報のデータ量も増大する。このため、1台のノード装置にコンテンツカタログ情報を記憶しきれないという問題があった。この問題を解決するために、特許文献1には、複数に分割されたコンテンツカタログ情報を複数のノード装置が分散して記憶する構成が提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−280303号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したように各ノード装置が分割されたコンテンツカタログ情報を記憶する場合、コンテンツカタログ情報の改竄を防止するため、各コンテンツデータの属性情報毎に電子署名を付与する必要がある。
【0006】
また、コンテンツカタログ情報に、コンテンツデータの属性情報を追加、更新または削除する場合、コンテンツカタログ情報を検索する必要がある。つまり、追加、更新または削除するコンテンツカタログ情報を挿入する位置、または削除する位置を探索する必要がある。従来では、電子署名が施されたコンテンツカタログ情報のリストの中から、所望のコンテンツデータをほぼ全探索するので効率が悪かった。
【0007】
本発明は、以上の問題等に鑑みてなされたものである。コンテンツデータの属性情報等のレコードの改竄を確実に防止することができ、且つ、探索効率を上げることが可能なコンテンツカタログ情報等の管理情報を各ノード装置に送信する管理装置、ノード装置、ノードプログラム、ページ情報送信プログラム、及びページ情報送信方法等を提供することを課題とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、請求項1に記載の発明は、一又は複数のレコードを含み、且つ、木構造における葉に位置する葉ページ情報と、前記木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報と、前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報と、を含む複数のページ情報を木構造として、前記根ページ情報から前記葉ページ情報にかけて関連付けて記憶し、前記根ページ情報のシリアル番号と、前記根ページ情報の改竄防止をチェックするための改竄チェック情報とを含むルートリンク情報であって、当該ルートリンク情報の改竄をチェックするための電子署名と、を含む前記ルートリンク情報を記憶するページ情報記憶手段と、前記葉ページ情報を生成する葉ページ情報生成手段と、前記葉ページ情報生成手段により生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の生成に基づいて更新する更新手段と、複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報を記憶するアドレス情報記憶手段と、前記ネットワークを介して、前記更新手段により更新された前記ページ情報を前記ノード装置に送信するページ情報送信手段と、を備えることを特徴とする。
【0009】
この発明によれば、管理装置が、葉ページ情報を生成し、生成された葉ページから根ページ情報までの節ページ情報と根ページ情報とのシリアル番号及びチェック情報を、葉ページ情報の生成に基づいて更新する。そして、管理装置が、更新されたページ情報をノード装置に送信する。
【0010】
従って、ノード装置は、根ページ情報から葉ページ情報にかけて関連付けられた木構造の情報により、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができる管理情報を各ノード装置へ配布することができる。
【0011】
請求項2に記載の発明は、所定のルールに従ってノード装置毎に定められるページ情報の担当範囲を示す担当範囲情報を記憶する担当範囲情報記憶手段と、前記更新手段により更新されたページ情報の送信対象となるノード装置を前記担当範囲情報記憶手段に記憶された担当範囲情報に基づいて決定する送信先決定手段と、を備え、前記ページ情報送信手段は、前記更新手段により更新されたページ情報を、前記決定されたノード装置に送信することを特徴とする。
【0012】
この発明によれば、管理装置が、更新されたページ情報の送信対象となるノード装置を担当範囲情報に基づいて決定する。そして、管理装置が、更新されたページ情報、決定されたノード装置に送信する。
【0013】
従って、ノード装置毎に定められるページ情報の担当範囲に基づいて、ページ情報の送信対象となるノード装置が決定されるので、各ノード装置の記憶負担を低減しつつ、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができる管理情報を各ノード装置へ配布することができる。
【0014】
請求項3に記載の発明は、前記アドレス情報記憶手段には、各前記ノード装置のアドレス情報に対応付けられて当該各ノード装置に割り当てられた固有の識別情報が記憶されており、前記送信先決定手段は、前記アドレス情報記憶手段にアドレス情報が記憶されたノード装置の前記識別情報と、前記更新手段により更新されたページ情報に含まれるインデックス情報とに基づいて、前記更新されたページ情報を前記担当範囲のページ情報とするノード装置を決定することを特徴とする。
【0015】
この発明によれば、管理装置が、アドレス情報記憶手段にアドレス情報が記憶されたノード装置の識別情報と、更新されたページ情報に含まれるインデックス情報とに基づいて、更新されたページ情報を担当範囲のページ情報とするノード装置を決定する。
【0016】
従って、各ノード装置の識別情報に基づき、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができる管理情報を各ノード装置へ配布することができる。
【0017】
請求項4に記載の発明は、請求項1乃至3の何れか一項に記載の管理装置の前記ページ情報送信手段から送信された前記ページ情報を受信するページ情報受信手段と、前記ページ情報受信手段により受信されたページ情報を記憶するページ情報記憶手段と、複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報と、当該各前記ノード装置に割り当てられた固有の識別情報とを対応付けて記憶するアドレス情報記憶手段と、前記アドレス情報記憶手段にアドレス情報が記憶された前記ノード装置の識別情報と、前記ページ情報受信手段により受信されたページ情報に含まれるインデックス情報に基づいて、前記受信されたページ情報を送信するノード装置を決定する送信先決定手段と、前記ページ情報受信手段により受信されたページ情報を、前記ネットワークを介して、前記送信先決定手段により決定されたノード装置に転送するページ情報転送手段と、を備えることを特徴とする。
【0018】
この発明によれば、ノード装置が、管理装置から送信されたページ情報を受信する。また、ノード装置が、アドレス情報記憶手段にアドレス情報が記憶されたノード装置の識別情報と、受信されたページ情報に含まれるインデックス情報に基づいて、受信されたページ情報を送信するノード装置を決定する。そして、ノード装置が、受信されたページ情報を、ネットワークを介して、決定されたノード装置に転送する。
【0019】
従って、各ノード装置の識別情報に基づき、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができる管理情報を各ノード装置へ配布することができる。
【0020】
請求項5に記載の発明は、所定のルールに従ってノード装置毎に定められるページ情報の担当範囲を示す担当範囲情報を記憶する担当範囲情報記憶手段と、前記ページ情報受信手段により受信されたページ情報が、前記担当範囲情報記憶手段に記憶された担当範囲情報に示される担当範囲内のページ情報であるか否かを判断する担当範囲判断手段と、前記担当範囲判断手段により前記ページ情報が担当範囲内のページ情報であると判断された場合に、前記送信先決定手段は、前記アドレス情報記憶手段にアドレス情報が記憶された前記ノード装置の識別情報と、前記ページ情報受信手段により受信されたページ情報に含まれるインデックス情報に基づいて、前記受信されたページ情報を送信するノード装置を決定し、前記ページ情報転送手段は、前記担当範囲判断手段により前記担当範囲内のページ情報であると判断されたページ情報を、前記ネットワークを介して、前記送信先決定手段により決定されたノード装置に転送することを特徴とする。
【0021】
この発明によれば、ノード装置が、受信されたページ情報が、担当範囲情報に示される担当範囲内のページ情報であるか否かを判断する。また、ノード装置が、担当範囲内のページ情報であるページであると判断された場合に、受信されたページ情報を送信するノード装置を決定する。そして、ノード装置が、担当範囲内のページ情報を、決定されたノード装置に転送する。
【0022】
従って、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができる管理情報を各ノード装置へ配布することができる。
【0023】
請求項6に記載の発明は、一又は複数のレコードを含み、且つ、木構造における葉に位置する葉ページ情報と、前記木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報と、前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報と、を含む複数のページ情報を木構造として、前記根ページ情報から前記葉ページ情報にかけて関連付けて記憶し、前記根ページ情報のシリアル番号と、前記根ページ情報の改竄防止をチェックするための改竄チェック情報とを含むルートリンク情報であって、当該ルートリンク情報の改竄をチェックするための電子署名と、を含む前記ルートリンク情報を記憶するページ情報記憶ステップと、前記葉ページ情報を生成する葉ページ情報生成ステップと、前記葉ページ情報生成ステップにより生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の生成に基づいて更新する更新ステップと、複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報を記憶するアドレス情報記憶ステップと、前記ネットワークを介して、前記更新ステップにより更新された前記ページ情報を前記ノード装置に送信するページ情報送信ステップと、をコンピュータに実現させることを特徴とする。
【0024】
請求項7に記載の発明は、請求項1乃至3の何れか一項に記載の管理装置の前記ページ情報送信手段から送信された前記ページ情報を受信するページ情報受信ステップと、前記ページ情報受信ステップにより受信されたページ情報を記憶するページ情報記憶ステップと、複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報と、当該各前記ノード装置に割り当てられた固有の識別情報とを対応付けて記憶するアドレス情報記憶手段にアドレス情報が記憶された前記ノード装置の識別情報と、前記ページ情報受信ステップにより受信されたページ情報に含まれるインデックス情報に基づいて、前記受信されたページ情報を送信するノード装置を決定する送信先決定ステップと、前記ページ情報受信ステップにより受信されたページ情報を、前記ネットワークを介して、前記送信先決定ステップにより決定されたノード装置に転送するページ情報転送ステップと、をコンピュータに実現させることを特徴とする。
【0025】
請求項8に記載の発明は、一又は複数のレコードを含み、且つ、木構造における葉に位置する葉ページ情報と、前記木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報と、前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報と、を含む複数のページ情報を木構造として、前記根ページ情報から前記葉ページ情報にかけて関連付けて記憶し、前記根ページ情報のシリアル番号と、前記根ページ情報の改竄防止をチェックするための改竄チェック情報とを含むルートリンク情報であって、当該ルートリンク情報の改竄をチェックするための電子署名と、を含む前記ルートリンク情報を記憶するページ情報記憶ステップと、前記葉ページ情報を生成する葉ページ情報生成ステップと、前記葉ページ情報生成ステップにより生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の生成に基づいて更新する更新ステップと、複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報を記憶するアドレス情報記憶ステップと、前記ネットワークを介して、前記更新された前記ページ情報を前記ノード装置に送信するページ情報送信ステップと、を含むことを特徴とする。
【発明の効果】
【0026】
本発明によれば、ノード装置は、根ページ情報から葉ページ情報にかけて関連付けられた木構造の情報により、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができる管理情報を各ノード装置へ配布することができる。
【図面の簡単な説明】
【0027】
【図1】一実施形態に係るコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
【図2】一実施形態に係るコンテンツカタログ情報の構造の一例を示す図である。
【図3】ノードNnのページ情報の担当範囲の一例を示す図である。
【図4】ノードNnがレコードを検索する際にページ情報を取得する様子の一例を示す図である。
【図5】ノードNnがレコードを検索する際にページ情報を取得する様子の一例を示す図である。
【図6】ノードNnがレコードを検索する際にページ情報を取得する様子の一例を示す図である。
【図7】一実施形態に係るセンターサーバSAの概要構成例を示す図である。
【図8】一実施形態に係るノードNnの概要構成例を示す図である。
【図9】一実施形態に係るセンターサーバSAにおける制御部11の処理例を示すフローチャートである。
【図10】一実施形態に係るセンターサーバSAにおける制御部11のページ情報登録処理における処理例を示すフローチャートである。
【図11】一実施形態に係るセンターサーバSAにおける制御部11のレコード追加処理における処理例を示すフローチャートである。
【図12】一実施形態に係るセンターサーバSAにおける制御部11のレコード削除処理における処理例を示すフローチャートである。
【図13】一実施形態に係るセンターサーバSAにおける制御部11のレコード検索処理における処理例を示すフローチャートである。
【図14】一実施形態に係るノードNnにおける制御部21の処理例を示すフローチャートである。
【図15】一実施形態に係るノードNnにおける制御部21の初期化処理における処理例を示すフローチャートである。
【図16】一実施形態に係るノードNnにおける制御部21のページ情報取得処理における処理例を示すフローチャートである。
【図17】一実施形態に係るノードNnにおける制御部21の担当ページ情報取得処理における処理例を示すフローチャートである。
【図18】一実施形態に係るノードNnにおける制御部21の処理例を示すフローチャートである。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【0029】
[第1実施形態]
[1.コンテンツ分散保存システムの構成及び動作概要]
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムの構成及び動作概要について説明する。
【0030】
図1は、本実施形態に係るコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
【0031】
図1の下部枠101内に示すように、分散保存システムSは、複数のノード装置Nnがインターネットを介して接続されることで構成される。また、図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が構築されている。ネットワーク8は、現実世界の通信ネットワークである。なお、図1の例におけるネットワーク8には、データパケットを転送するためのルータが適宜挿入されているが、図1では図示を省略している。なお、通信回線7としては、例えば、電話回線や光ケーブル等が用いられる。
【0032】
このようなネットワーク8には、複数のノード装置Nn(n=1,2,3・・・の何れか)が接続されている。以下、ノード装置は、「ノード」という。また、各ノードNnには、固有の製造番号及びIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの接続により形成されるピアツーピア方式のネットワークシステムとなっている。
【0033】
なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9である。論理的なネットワークであるオーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムSに接続されている各ノードNnには、所定桁数からなる固有の識別情報であるノードIDが割り当てられている。
【0034】
また、ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。ノードIDは、ID空間に偏りなく分散して配置されることになる。ハッシュ関数としては、例えば、SHA−1等が用いられる。また、ハッシュ化した値は、例えば、bit長が160bitとなる。そして、このノードIDは、ID空間に偏りなく分散して配置されることになる。
【0035】
なお、コンテンツ分散保存システムSへの接続は、接続していないノードNn、例えば、ノードN8が、接続している任意のノードNnに対してコンテンツ分散保存システムへの参加要求を示す参加メッセージを送信することによって行われる。コンテンツ分散保存システムSへの参加とは、ノード装置Nnが分散保存システムSに接続され、分散保存システムSからデータを取得可能になることである。任意のノードNnは、例えば、システムSに常時接続しているコンタクトノードである。
【0036】
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ID空間内で適度に離れたノードNnのノードID、IPアドレス及びポート番号を含むノード情報が複数登録されている。
【0037】
コンテンツ分散保存システムSに接続している1台のノードは、必要最低限のノードNnのノード情報をルーティングテーブルとして記憶している。各ノードNn間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードNnについてのノード情報が取得される。
【0038】
このようなDHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0039】
コンテンツ分散保存システムSは、内容の異なる様々なコンテンツデータのレプリカを所定のファイル形式で複数のノードNnに分散して保存する。以下、コンテンツデータは、「コンテンツ」という。そして、各ノードNn間でレプリカが利用可能になっている。各コンテンツのオリジナルはセンターサーバSAに保存されている。例えば、ノードN5には、タイトルがXXXの映画のコンテンツのレプリカが保存されている。一方、ノードN3には、タイトルがYYYの映画のコンテンツのレプリカが保存される。このように、複数のノードNnに分散されて保存されている。以下、コンテンツのレプリカが保存されるノードNは、「コンテンツ保持ノード」という。
【0040】
上述のコンテンツのレプリカには、夫々、コンテンツ名及びコンテンツ毎に固有の識別情報であるコンテンツID等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される。或いは、システム管理者が、コンテンツ毎に一意のID値を付与しても良い。
【0041】
分散保存されているコンテンツのレプリカの所在は、インデックス情報として、コンテンツのレプリカの所在を管理(記憶)しているノードNn等により記憶される。以下、レプリカの所在を管理(記憶)しているノードNnは、「ルートノード」という。インデックス情報は、レプリカを保存したノードNnのノード情報と、コンテンツのコンテンツIDと等の組を含む。このようなルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードNnであるように定められる。コンテンツIDと最も近いノードIDとは、例えば、IDの上位桁が最も多く一致するノードIDである。
【0042】
例えば、タイトルがXXXの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツのルートノードであるノードN4により管理される。また、例えば、タイトルがYYYの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツのルートノードであるノードN7により管理される。また、このようなルートノードは、例えば、コンテンツIDと最も近いノードIDを有するノードNnであるように定められる。コンテンツIDと最も近いノードIDとは、例えば、コンテンツIDと上位桁がより多く一致するノードIDである。
【0043】
そして、あるノードNnのユーザが、所望するコンテンツのレプリカを取得したい場合、このレプリカの取得を望むノードNn(以下、「ユーザノード」という)は、メッセージを生成する。このメッセージは、取得を望むコンテンツのコンテンツID及びユーザノードのIPアドレス等を含むコンテンツ所在問合せメッセージである。コンテンツ所在問合せメッセージは、コンテンツ保持ノードを検索するためのメッセージでもある。上述のコンテンツ所在問合せメッセージが、ユーザノードが取得するDHTのルーティングテーブルに従って、他のノードNnに対して送出される。つまり、ユーザノードは、コンテンツ所在問合せメッセージを、ルートノードに向けて送出する。これにより、コンテンツ所在問合せメッセージは、コンテンツIDをキーとするDHTルーティングによって最終的にルートノードに到着することになる。
【0044】
各ノードNnにおいて、コンテンツのコンテンツ名及びコンテンツID等の属性情報は、コンテンツカタログ情報に記述されている。コンテンツカタログ情報は、センターサーバSAにより、後述するページ情報単位で作成される。このコンテンツカタログ情報の構造、内容及び作成方法等についての詳細は後述する。各ノードNnには、保持するページ情報の担当範囲が夫々ある。そして、各ノードNnは、自分の担当範囲内のページ情報をセンターサーバSA又は他のノードNnから予め取得する。また、各ノードNnは、コンテンツの属性情報を検索する際、必要なページ情報がない場合には、この必要なページ情報をセンターサーバSA又は他のノードNnから取得する。ノードNnのページ情報の担当範囲及び検索の詳細は後述する。
【0045】
また、上記コンテンツ所在問合せメッセージに含まれるコンテンツIDは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、DHTルーティングについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
【0046】
上記コンテンツ所在問合せメッセージを受信したルートノードは、これに含まれるコンテンツIDに対応するインデックス情報をインデックス情報キャッシュから取得する。取得されたインデックス情報は、コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてコンテンツのレプリカをダウンロード(取得)することができる。インデックス情報に含まれるコンテンツ保持ノードのIPアドレス等に基づいて、ユーザノードはコンテンツ保持ノードにアクセスする。アクセスしたコンテンツ保持ノードから、コンテンツのレプリカをダウンロードすることが可能になる。この場合、ユーザノードは、この複数のコンテンツ保持ノードのうち一つのコンテンツ保持ノードを選択する。そして、ユーザノードは、選択したコンテンツ保持ノードに接続してコンテンツのレプリカをダウンロードすることができる。
【0047】
なお、ルートノードは、このインデックス情報に含まれるIPアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカをダウンロードすることもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、このルートノードと同じインデックス情報をキャッシュしているキャッシュノードからこのインデックス情報を取得することもできる。
【0048】
また、ユーザノードは、コンテンツ保持ノードからコンテンツのレプリカを取得して保存したとき、保存したユーザノードは、パブリッシュメッセージを生成する。パブリッシュメッセージは、レプリカを保存したことをルートノードへ知らせるためのメッセージである。パブリッシュメッセージは、レプリカのコンテンツID及びレプリカを保存したノード装置のノード情報を含む。パブリッシュメッセージは、ルートノードに向けて送出される。これにより、パブリッシュメッセージは、コンテンツ所在問合せメッセージと同じように、コンテンツIDをキーとするDHTルーティングによってルートノードに到着することになる。そして、ルートノードは、パブリッシュメッセージを受信する。ルートノードは、パブリッシュメッセージに含まれるノード情報及びコンテンツIDの組を含むインデックス情報をインデックス情報キャッシュ領域に記憶する。こうして、上記ユーザノードは、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
【0049】
[2.コンテンツカタログ情報の構造及び内容等]
次に、コンテンツカタログ情報の構造及び内容等について、図2を用いて説明する。
【0050】
図2は、本実施形態に係るコンテンツカタログ情報の構造の一例を示す図である。なお、コンテンツカタログ情報のことを、今後単にカタログ情報ともいう。
【0051】
カタログ情報は、コンテンツの属性情報を一覧として管理するための情報である。この属性情報の内容はレコードに格納される。また、カタログ情報は、検索キーから一意にコンテンツを特定することができる情報である。コンテンツを特定することができるとは、コンテンツのレコードを探し出すことができることを意味する。検索キーとしては、例えば、対応するレコードやコンテンツ名を共通のハッシュ関数によりハッシュ化した値が用いられる。或いは、検索キーは、コンテンツIDやコンテンツ名等であっても良い。この検索キーはインデックス情報の一例である。
【0052】
本実施形態において用いられるカタログ情報は、コンテンツの属性情報の改竄を防止するため、及び、コンテンツの検索を効率的に行うため、図2に示す探索木の構造を有している。
【0053】
図2に示すように、カタログ情報は、木構造における根に位置するルートページ情報から葉に位置する葉ページ情報にかけて、各ページ情報が関連付けられて構成されている。ルートページ情報は、根ページ情報の一例である。直接関連付けられているページ情報同士は、親子関係を形成している。或るページ情報Xに対してページ情報Yが関連付けられているとする。つまり、ページ情報Xとページ情報Yとで親子関係を形成している。ページ情報Xとページ情報Yとのうち、ページ情報Xの方がルートページ情報からの距離が短い場合、ページ情報Xは、ページ情報Yから見て親に位置する親のページ情報となる。ここで、ルートページ情報からの距離とは、木構造において、根の位置から注目する節点に辿るまでのリンク数に相当する長さである。換言すると、ルートページ情報からの距離とは、ルートページ情報から関連付けを辿って注目するページ情報に至るまでに、注目するページ情報を含めて通過するページ情報の数に相当する。なお、以降の説明においては、親のページ情報を親ページ情報といい、子のページ情報を子ページ情報という。
【0054】
親ページ情報と子ページ情報との関連付けは、リンク情報に示される。リンク情報は、親ページ情報に格納される情報であり、子ページ情報を指す情報である。このリンク情報は、子ページ情報のページ番号と、子ページ情報の改竄をチェックするためのメッセージダイジェストとを含む。
【0055】
ページ番号は、ページ情報に固有に割り当てられたシリアル番号である。リンク情報が指すページ情報というときは、リンク情報に含まれるページ番号が割り当てられているページ情報を意味する。また、詳細は後述するが、或るページ情報が更新される場合にはこのページ情報に対して新たなページ番号が割り当てられる。ここで、本実施形態におけるページ情報の更新とは、元のページ情報の内容が更新されたページ情報を、元のページ情報とは別個のページ情報として新たに作成することを意味する。実際、ページ番号は、例えば、ページ情報がRAMに格納される際の格納アドレスに対応したり、ページ情報の格納位置を示すポインタの格納アドレスであったりする。また、ページ情報がファイルとして保存される際には、ページ番号はファイル名に対応したりする。
【0056】
メッセージダイジェストは、リンク情報が指す子ページ情報又はリンク情報が指す子ページ情報に格納されているレコードの改竄をチェックするための情報である。また、メッセージダイジェストは、改竄をチェックする対象を共通のハッシュ関数によりハッシュ化した値である。このメッセージダイジェストは改竄チェック情報の一例である。
【0057】
カタログ情報は、更にルートリンク情報を有する(符号100)。ルートリンク情報には、ルートページ情報へのリンク情報が格納される(符号1001)。そして、このリンク情報は、ルートページ情報のページ番号(符号1002)及びメッセージダイジェスト(符号1003)を含む。また、ルートリンク情報には、電子署名が格納される(符号1004)。電子署名は、ルートリンク情報の改竄をチェックするための情報である。電子署名には、例えば、署名値、証明書情報等の情報が含まれている。
【0058】
ページ情報は、大別して節ページ情報(符号200)と葉ページ情報(符号300)とがある。
【0059】
節ページ情報は、一つ以上の子ページ情報を持つ。節ページ情報には、セルフリンク情報(符号2001)、子ページ情報へのリンク情報(符号2004)及びインデックス(符号2007)が格納される。セルフリンク情報は、このセルフリンク情報が格納されている節ページ情報自身へのリンク情報である。つまり、セルフリンク情報は、節ページ情報のページ番号(符号2002)及びメッセージダイジェスト(符号2003)を含む。よって、セルフリンク情報は、節ページ情報の親ページ情報に格納されているこの節ページ情報へのリンク情報と同一内容となる。
【0060】
子ページ情報へのリンク情報は、子ページ情報のページ番号(符号2005)及びメッセージダイジェスト(符号2006)を含む。なお、節ページ情報において、単にリンク情報というときは、セルフリンク情報ではなく、子ページ情報へのリンク情報を意味するものとする。節ページ情報には、リンク情報を複数格納することができる。一つあたりの節ページ情報に格納可能なリンク情報の最大数は、カタログ情報の木構造としての次数に一致する。この次数は、一つの親が持ちうる子の最大数を意味する。つまり、次数は、n分探索木のnの値に該当する。
【0061】
インデックスは、探索木の節点が持つ値、キー等と呼ばれている情報と同じ役割を持つ。このインデックスは、コンテンツのレコードが格納されているページ情報を、検索キーを用いて探索するための情報である。なお、図2に示すインデックスは、便宜上十進数で示されている。このインデックスは、インデックス情報及び担当領域情報の一例である。
【0062】
カタログ情報の木構造は、順序性を有している。従って、節ページ情報に格納されているインデックスは、例えばその値の小さい順に配列されている。そして、リンク情報は、インデックスに対応した順序で配列されている。例えば、1番目のリンク情報は、1番目のインデックスの値以下の範囲インデックスが格納される子ページ情報への関連付けを示す。また例えば、2番目のリンク情報は、1番目のインデックスの値より大きく且つ2番目のインデックスの値以下の範囲のインデックスが格納される子ページ情報への関連付けを示す。或る節ページ情報に現在k個のリンク情報が格納されている場合、この節ページ情報にはk−1個のインデックスが格納されている。
【0063】
葉ページ情報は、上述したように、探索木における葉に位置するページ情報である。つまり、葉ページ情報は、子ページ情報を持たない。葉ページ情報には、セルフリンク情報(符号3001)、レコード(符号3004)及びインデックス(符号3005)が格納される。セルフリンク情報は、このセルフリンク情報が格納されている葉ページ情報自身へのリンク情報である。つまり、セルフリンク情報は、葉ページ情報のページ番号(符号3002)及びメッセージダイジェスト(符号3003)を含む。よって、セルフリンク情報は、葉ページ情報の親ページ情報に格納されているこの葉ページ情報へのリンク情報と同一内容となる。
【0064】
レコードとインデックスとは、一対一に対応付けられている。対応付けられているレコードとインデックスとの組は、葉ページ情報に1組又は複数組格納される。一つのレコードには、一つまたは複数のコンテンツの属性情報が設定される。例えば、レコードには、コンテンツID、コンテンツの公開開始日時、公開終了日時、コンテンツ名、キーワード等が設定される。インデックスは、対応するレコードを一意に特定するための情報である。葉ページ情報のインデックスとして用いられる情報の種類は、節ページ情報のインデックスとして用いられる情報の種類と同じである。このインデックスとして、コンテンツIDやコンテンツ名等が用いられる場合、この情報は、レコードの設定内容に含める必要はない。このインデックスは、インデックス情報の一例である。
【0065】
本実施形態においては、上述したようにルートリンク情報に対してのみ電子署名を作成しているが、全てのページ情報に対して電子署名を作成することを排除するものではない。ただし、電子署名は、証明書情報等の情報を設定する等して作成されることで、一般的に電子署名の方がメッセージダイジェストよりもセキュリティが高められている。このセキュリティを高めるための暗号化や改竄チェック時の復号化等の処理による計算量が大きく、また、電子証明書情報等の電子署名に必要なデータ量も大きくなる。そのため、電子署名よりもメッセージダイジェストの方が、計算量及びページ情報のデータ量ともに節約することができる。一方、全てのページ情報に対して電子署名を作成する場合、ルートリンク情報は必須ではない。この場合、ルートページ情報に対する電子署名を保存しておけば良い。
【0066】
なお、本実施形態においては、ページ情報を更新する場合、上述したように新しいページ情報を作成しているが、ページ情報自体の内容を書き換えてもかまわない。
【0067】
以上、図2を用いて説明したカタログ情報の構造は、あくまでも一例である。カタログ情報の構造としては、コンテンツのレコードを探索可能な木構造を有していれば、どのような構造であってもかまわない。
【0068】
例えば、葉ページ情報だけでなく、節ページ情報中にレコードが格納されても良い。また、木構造の次数、つまり、一つの節ページ情報に格納可能なリンク情報の最大数は任意である。また、一つのページ情報に格納可能なレコードの最大数は1個でも複数個でも良い。更に、セルフリンク情報は、必須ではない。
【0069】
また更に、節ページ情報のインデックスは必須ではない。例えば、トライ(trie)木の場合、節ページ情報のインデックスは不要である。つまり、トライ木では、木構造上におけるページ情報の位置がインデックスに対応し、検索キーのビットや文字等の値に従ってルートページ情報から葉ページ情報まで木が辿られる。例えば、ルートページ情報から葉ページ情報に向かって各節ページ情報に検索キーの最上位4ビットから4ビットずつを割り当てたとする。この場合、一つの節ページ情報に、16個のリンク情報を要素として格納する配列がある。そして例えば、検索キーが16進でF3405B9Cである場合、ルートページ情報に関しては、上位一桁目のFが、配列のインデックスとなる。つまり、ルートページ情報における配列の16番目に格納されているリンク情報が、次に参照すべき子ページ情報へのリンク情報となる。次に、ルートページ情報の子ページ情報に関しては、上位から2桁目の3が、配列のインデックスとなる。つまり、この子ページ情報における配列の4番目に格納されているリンク情報が、次に辿るべき子ページ情報へのリンク情報となる。こうして葉ページ情報に辿り着いたところで、検索キー全体とレコードのインデックスとが比較される。このようにして探索が行われる。
【0070】
更にまた、葉ページ情報のインデックスも必須ではない。例えば、トライ木においては、インデックスの値が比較的離れているレコードをまとめることができる。例えば、インデックスが16進でF3405B9CのレコードとF34013A2のレコードがあるとする。この2つのインデックスの上位3桁の値は同じである。この場合、上位3桁の値がF34であるレコードが他に存在せず、且つ、一つの葉ページ情報がレコードを2つ以上格納可能であれば、この2つのレコードを同じ葉ページ情報に格納することができる。つまり、ルートページ情報から、F、3、4と辿って至る葉ページ情報に2つのレコードが格納される。この場合、葉ページ情報に、レコードのインデックスが必要である。一方、例えば、検索キーの上位7桁までは、必ず節ページ情報を作成するようにし、且つ、検索キーの最下位4桁目の値を葉ページ情報に割り当てるとする。この場合、葉ページ情報には、16個のレコードを要素として格納する配列がある。このとき、インデックスがF3405B9Cのレコードは、ルートページ情報から、F、3、4、0、5、B、9と辿って至る葉ページ情報における配列の10番目にレコードが格納される。この場合、葉ページ情報には、レコードのインデックスは不要である。
【0071】
更に、具体例を示して説明する。ここでは、コンテンツのインデックスとして4進数4桁が用いられるものとする。この場合、各節ページには、4つのリンク情報を格納することができる。例えば、ルートページ情報は、インデックスの上位一桁の値が0、1、2及び3に対応するページ情報を夫々指すリンク情報を格納する配列がある。この場合、最上位の桁の値が0に対応する位置に、インデックスの上位一桁の値が0に対応するページ情報へのリンク情報が格納される。また、最上位の桁の値が1に対応する位置に、インデックスの上位一桁の値が1に対応するページ情報へのリンク情報が格納される。また、最上位の桁の値が2に対応する位置に、インデックスの上位一桁の値が2に対応するページ情報へのリンク情報が格納される。また、最上位の桁の値が3に対応する位置に、インデックスの上位一桁の値が3に対応するページ情報へのリンク情報が格納される。
【0072】
次に、例えば、インデックスの上位一桁の値が1に対応するページ情報には、インデックスの上位二桁の値が10、11、12及び13に対応するページ情報を夫々指すリンク情報を格納する配列がある。この場合、最上位から2番目の桁の値が0に対応する位置に、インデックスの上位二桁の値が10に対応するページ情報へのリンク情報が格納される。また、最上位から2番目の桁の値が1に対応する位置に、インデックスの上位二桁の値が11に対応するページ情報へのリンク情報が格納される。また、最上位から2番目の桁の値が2に対応する位置に、インデックスの上位二桁の値が12に対応するページ情報へのリンク情報が格納される。また、最上位から2番目の桁の値が3に対応する位置に、インデックスの上位二桁の値が13に対応するページ情報へのリンク情報が格納される。
【0073】
次に、例えば、インデックスの上位二桁の値が10に対応するページ情報には、インデックスの上位三桁の値が100、101、102及び103に対応するページ情報を夫々指すリンク情報を格納する配列がある。この場合、最上位から3番目の桁の値が0に対応する位置に、インデックスの上位三桁の値が100に対応するページ情報へのリンク情報が格納される。
【0074】
次に、例えば、インデックスの上位三桁の値が102に対応するページ情報は、葉ページ情報となる。インデックスの上位三桁の値が102に対応するページ情報には、インデックスの値が1020、1021、1022及び1023である4つのレコードを格納する配列がある。この場合、最下位の桁の値が0に対応する位置に、インデックスが1020のレコードが格納される。
【0075】
また、木の種類としては、例えばB木、B+木、赤黒木等の平衡木であっても良いし、平衡性のない単純なn分探索木であっても良い。
【0076】
レコードの追加又は削除を行う場合には、カタログ情報の更新、つまり、ページ情報の更新が必要となる。このとき、本実施形態におけるページ情報の更新の原則は以下の通りである。
【0077】
(1)ページ情報を追加するときは勿論のこと、ページ情報を更新するときも、元のページ情報の内容を更新したページ情報を新たに作成する。例えば、ページ情報をRAM上に作成する場合には、元のページ情報が格納されるアドレスとは異なるアドレスに新しいページ情報を作成する。また、ルートリンク情報を更新するときも、内容を更新したルートリンク情報を新たに作成する。
【0078】
(2)ページ情報を新しく作成するときは、作成順にページ番号を割り当てる。
【0079】
(3)ページ情報を新しく作成するときは、新しいページ情報のメッセージダイジェストを計算する。
【0080】
(4)ルートリンク情報を新しく作成するときは、新しいルートリンク情報に対する電子署名を作成する。
【0081】
(5)新しく作成されたページ情報のページ番号及びメッセージダイジェストを、このページ情報への新たなリンク情報として、親ページ情報に設定する。つまり、親ページ情報も更新する必要がある。また、ルートページ情報を新しく作成した場合は、このルートページ情報のページ番号及びメッセージダイジェストを、このページ情報への新たなリンク情報として、ルートリンク情報に設定する。つまり、ルートリンク情報も更新する必要がある。
【0082】
(6)ページ情報の更新は、レコードが追加又は削除されるページ情報から開始し、このページ情報からルートページ情報までのパス(経路)上にあるページ情報を、ルートページ情報からの距離が長いページ情報から順に更新する。つまり、ルートページ情報が上方に、葉ページ情報が下方に位置すると仮定すると、下から順にページ情報を更新する。
【0083】
(1)及び(2)の原則は、古いページ情報がカタログ情報に挿入されないためのものである。また、(3)乃至(5)の原則は、カタログ情報の内容の改竄を防止するためのものである。また、(6)の原則は、カタログ情報の改竄を防止するため、(5)の原則から当然に導き出されるものである。なお、これらの原則は、あくまでも本実施形態における原則である。例えば、前述したように、(1)の原則は本発明において必須ではない。
【0084】
新しいページ情報が作成されることにより、古くなったページ情報、つまり、参照されなくなったページ情報は、参照されなくなった時点で削除しても良いし、削除しなくても良い。また、古くなったページ情報を定期的に削除するようにしても良い。
【0085】
更に、本実施形態においては、各ページ情報に、合計ファイルサイズが設定される。合計ファイルサイズとは、合計ファイルサイズが設定されるページ情報を頂点とするサブツリーに含まれる全てのページ情報のファイルサイズの合計値である。この合計ファイルサイズは、例えば、レコードが追加されたとき、レコードが削除されたとき、ページ情報が生成されたとき、ページ情報が削除されたときに計算されて、ページ情報に設定される。また、各ノードNnにおいても、ページ情報の担当範囲を決定するときに、合計ファイルサイズの計算が行われる。また、適当なタイミングで合計ファイルサイズの計算が行われるようにしても良い。なお、ページ情報の担当範囲についての詳細は後述する。
【0086】
[3.ページ情報の担当範囲及びレコードの検索]
次に、ノードNnのページ情報の担当範囲と、ノードNnによるレコードの検索について、図3乃至図6を用いて説明する。
【0087】
レコードの検索は、センターサーバSAの後述するレコード検索処理において行われる。レコードを検索する場合において、目的のレコードを格納しているページ情報を探索する方法は、木構造における探索方法と同じである。つまり、ページ情報の探索方法は、カタログ情報の木構造に対応する探索アルゴリズムに依存する。また、レコードを追加、削除する場合にも、同様の探索方法が用いられる。
【0088】
各ノードNnは、サーバSAと同様に、カタログ情報からコンテンツのレコードを検索する。従って、この検索の際、最新のページ情報が必要となる。ここで、全ノードNnが、最新のページ情報全てを保持するようにすれば、各ノードNnにて検索は可能である。しかし、登録されたコンテンツが膨大となると、カタログ情報が肥大化し、ページ情報も膨大な数となる。そうすると、一つのノードNnでは、全てのページ情報を保持しきれないおそれが生じる。
【0089】
そこで、本実施形態では、各ノードNnが、自分の担当範囲を決定するようになっている。担当範囲とは、予め保持するページ情報の範囲である。担当範囲は、各ノードNnのノードIDに基づいて決定される。更に、担当範囲は、ファイルキャッシュ容量に基づいて確定する。ファイルキャッシュ容量は、担当範囲とするページ情報を記憶可能な最大容量である。このファイルキャッシュ容量は、全ノードNnに対して同一の値が用いられても良いし、各ノードNnのハードディスクの容量等に応じて個別に決定されるようにしても良い。このファイルキャッシュ容量は、記憶容量の一例である。
【0090】
以下、担当範囲について具体的に説明するが、ここでは一例として、ノードIDが4進数4桁であるものとして説明する。また、コンテンツのインデックス及び検索キーとしては、コンテンツIDが用いられるものとする。また、コンテンツIDも4進数4桁であるものとする。
【0091】
この前提で述べたように、ノードIDとコンテンツIDは、ID空間が一致する。つまり、ノードIDとコンテンツのインデックスも、取り得る値の範囲が一致する。そこで、ノードIDを検索キーとしてカタログ情報に挿入した場合に、その挿入位置からルートページ情報までのパス上にあるページ情報は、必ず担当範囲内となる。更に、ノードIDの挿入位置からルートページ情報までのパス上において、或るページ情報を頂点とするサブツリーに含まれる全てのページ情報の合計ファイルサイズが、ファイルキャッシュ容量以下である場合には、このサブツリーに含まれる全てのページ情報は担当範囲内となる。この合計ファイルサイズは、各ページ情報に設定されている。各ページ情報には、このページ情報を頂点とするサブツリーに含まれる全てのページ情報の合計ファイルサイズが設定されている。例えば、ルートページ情報には、全てのページ情報の合計ファイルサイズが設定されている。また、葉ページ情報には、この葉ページ情報自身のファイルサイズが設定されている。合計ファイルサイズは、総データ量の一例である。なお、サブツリーに含まれるページ情報とは、或るページ情報をサブツリーの頂点とした場合、頂点となるページ情報、及びこのページ情報から葉ページ情報へかけて関連付けられたページ情報である。
【0092】
図3は、ノードNnのページ情報の担当範囲の一例を示す図である。
【0093】
一例として、ノードIDが1102である場合について説明する。ルートリンク情報は、ページ情報を取得するために必ず必要である。従って、ルートリンク情報は、サーバSAから全ノードNnに配信される。また、本実施形態においては、ノードIDがどのような値をとろうとも、ノードIDの挿入位置からルートページ情報までのパス上に、ルートページ情報は必ず含まれる。そこで、本実施形態においては、ルートページ情報は担当範囲に含まれるものとする。図3においては、担当範囲のページ情報は実線で示されている。
【0094】
ルートページ情報に格納されているリンク情報から、ルートページ情報には、例えばインデックスの上位一桁が「0」のページ情報、「1」のページ情報、「2」のページ情報、及び「3」の子ページ情報が存在することが分かる。ルートページ情報を頂点とするサブツリーに含まれる全てのページ情報の合計ファイルサイズが、例えばファイルキャッシュ容量より大きい場合には、サブツリーに含まれる全てのページ情報を担当範囲とすることはできない。そこで、ルートページ情報の子ページ情報の中から、担当範囲とするページ情報が決定される。具体的には、ノードIDの上位一桁が1であるので、このノードIDと上位桁の値同士が一致する「1」のページ情報が担当範囲内となる。一方、「0」のページ情報、「2」のページ情報、及び「3」の子ページ情報は、担当範囲とはならない。図3においては、担当範囲ではないページ情報は破線で示されている。
【0095】
次に、「1」のページ情報に格納されているリンク情報から、「1」のページ情報には、例えばインデックスの上位二桁が「10」のページ情報、「11」のページ情報、「12」のページ情報、及び「13」の子ページ情報が存在することが分かる。「1」のページ情報を頂点とするサブツリーに含まれる全てのページ情報の合計ファイルサイズが、例えばファイルキャッシュ容量より大きい場合には、「1」のページ情報の子ページ情報の中から、担当範囲とするページ情報が決定される。ノードIDの上位一桁が11であるので、このノードIDと上位桁の値同士が一致する「11」のページ情報が担当範囲内となる。一方、「10」のページ情報、「12」のページ情報、及び「13」の子ページ情報は、担当範囲とはならない。
【0096】
次に、「11」のページ情報に格納されているリンク情報から、「11」のページ情報には、例えばインデックスが「1101」のページ情報、「1113」のページ情報、「1122」のページ情報、及び「1130」の子ページ情報が存在することが分かる。これらの子ページ情報は葉ページ情報である。ここで、ノードIDである1101が挿入される位置は、「1101」のページ情報と「1113」のページ情報との間である。「11」のページ情報を頂点とするサブツリーに含まれる全てのページ情報の合計ファイルサイズが、例えばファイルキャッシュ容量以下である場合は、このサブツリーに含まれる全てのページ情報が担当範囲内となる。つまり、「1101」のページ情報、「1113」のページ情報、「1122」のページ情報、及び「1130」のページ情報が担当範囲内となる。
【0097】
以上により、ノードIDが1102のノードNnは、ルートページ情報、「1」、「11」、「1101」、「1113」、「1122」及び「1130」のページ情報が担当範囲となる。ノードIDが1102のノードNnは、この担当範囲のページ情報を、サーバSA又は他のノードNnから取得し保持する。
【0098】
他のノードNnにおいても、これと共通するルールによって担当範囲が決定される。この共通のルールでは、ルートページ情報以外にも、各ノードNn間で担当範囲が重複することもある。
【0099】
次に、ノードNnによるレコードの検索と、検索の際のページ情報の取得方法について説明する。
【0100】
図4乃至図6は、ノードNnがレコードを検索する際にページ情報を取得する様子の一例を示す図である。
【0101】
例えば、ノードIDが1102であるノードN1が、コンテンツIDが2130のレコードを検索するとする。先ず、ルートリンク情報が指すルートページ情報が参照される。ルートページ情報には、「0」、「1」、「2」、及び「3」の子ページ情報が存在する。コンテンツIDの上位一桁は2であるので、次に「2」のページ情報を参照する必要がある。しかし、「2」のページ情報は、ノードN1の担当範囲ではなく、且つ、ノードN1は保持していない。従って、「2」のページ情報を他のノードから取得する必要がある。
【0102】
この場合、ノードN1は、ノードN1が知っているノードNnの中で、「2」のページ情報を担当するのにノードN1自身よりふさわしいノードNnに、「2」のページ情報を要求する(1)。ここで、知っているノードNnとは、ルーティングテーブルにノード情報が登録されているノードNnをいう。また、「2」のページ情報の要求は、ページ情報要求メッセージの送信によって行われる。このページ情報要求メッセージには、例えば、「2」のページ情報のページ番号、検索キーとしてのコンテンツIDである2130等が設定される。また、ページ情報を担当するのにノードN1自身よりふさわしいノードNnとは、例えば、ノードIDが、ノードN1のノードIDよりもコンテンツIDの上位桁の値と多く一致するノードNnである。図4の例では、「2」のページ情報を担当するのにノードN1自身よりふさわしいノードNnとしては、例えば、ノードIDの上位一桁の値がコンテンツIDの上位一桁の値と同じ2であるノードNnが選択される。図4の例では、ノードIDが2301であるノードN2が選択される。もし、「2」のページ情報を担当するのにノードN1自身よりふさわしいノードNnが存在しなかった場合には、サーバSAに要求が行われる。
【0103】
ノードN1から要求を受けたノードN2は、担当範囲内として「2」のページ情報を保持している。従って、ノードN2からノードN1に「2」のページ情報が送信される(2)。そして、図5に示すように、ノードN1において「2」のページ情報が保持される。図5においては、担当範囲ではないが、保持しているページ情報は太い実線で示されている。ここで、ルートページ情報には、「2」のページ情報のメッセージダイジェストが設定されているので、このメッセージダイジェストで「2」のページ情報の改竄チェックを行うことができる。
【0104】
次に、「2」のページ情報には、「20」、「21」、「22」、及び「23」の子ページ情報が存在する。コンテンツIDの上位二桁は21であるので、次に「21」のページ情報を参照する必要がある。この「21」のページ情報は、ノードN1が保持していない。従って、前記と同様に、ノードIDの上位一桁の値がコンテンツIDの上位一桁の値と同じ2であるノードN2に、「21」のページ情報が要求される(3)。
【0105】
ノードN1から要求を受けたノードN2は、「2」のページ情報を担当範囲としておらず、且つ、保持していない。この場合は、要求の転送が行われる。具体的には、ノードN2が知っているノードNnの中で、「21」のページ情報を担当するのにノードN2自身よりふさわしいノードNnに、「21」を要求するためのページ情報要求メッセージを転送する(4)。例えば、ノードIDの上位二桁の値がコンテンツIDの上位二桁の値と同じ21であるノードNnが選択される。図5の例では、ノードIDが2122であるノードN3が選択される。
【0106】
ノードN2から要求の転送を受けたノードN3は、担当範囲内として「21」のページ情報を保持している。従って、ノードN3からノードN2に「21」のページ情報が送信される(5)。そして、ノードN2からノード1に「21」のページ情報が転送される(6)。なお、ノードN3からノードN1に直接ページ情報が送信されるようにしても良い。
【0107】
このように、ページ情報要求メッセージは、要求されたページ情報を保持しているノードNnに辿り着くまで、次々と転送される。また、要求されたページ情報を担当するのに最もふさわしいノードNnが、要求されたページ情報を保持していない場合には、センターサーバSAにページ情報要求メッセージが転送される。
【0108】
以下同様にして、「2130」のページ情報も取得される。このページ情報には、インデックスの値が2130であるレコードが格納されているので、検索が完了する。この結果、図6に示すように、ノードN1は、「2」、「21」及び「2130」を新たに保持する。これら担当範囲ではないページ情報は、検索後、必要な処理が終わったら削除しても良いし、削除しなくても良い。また、担当範囲ではないページ情報を削除する場合は、例えば、LRU(Least Recently Used)アルゴリズムに従って削除しても良い。
【0109】
なお以上においては、ページ情報にインデックスが格納されていない場合について説明したが、ページ情報にインデックスが格納されている場合について補足的に説明する。
【0110】
この場合、先ずルートリンク情報が指すルートページ情報に格納されている1又は複数のインデックスと検索キーとが比較される。このインデックスと検索キーとの大小比較によって、検索キーの値がどのインデックスの値の範囲であるのかが分かる。例えば、インデックスが、数値である場合、数値で表された検索キーと、数値で表されたインデックスとの大小比較が行われる。そこで、このインデックスの範囲に対応してルートページ情報に格納されているリンク情報が参照される。次に、このリンク情報が指すルートページ情報の子ページ情報が参照される。そして、この子ページ情報に関しても、ルートページ情報と同様に、インデックスと検索キーの大小比較が行われる。このようにして、ルートページ情報から葉ページ情報まで探索が行われる。葉ページ情報まで辿り着くと、葉ページ情報にも1又は複数のインデックスが夫々レコードと対応付けて格納されている。そこで、このインデックスと検索キーとが比較される。そして、インデックスの値と検索キーの値とが一致した場合、このときのインデックスに対応するレコードが検索対象のレコードである。
【0111】
[4.ページ情報の配布]
各ノードNnは、上述したように担当範囲内のページ情報を、センターサーバSA又は他のノードNnから取得する。また、各ノードNnは、レコードを検索する際、必要なページ情報をセンターサーバSA又は他のノードNnから取得する。ノードNnがページ情報を取得する場合、取得先として、センターサーバSAよりも他のノードNnが優先される。しかし、ページ情報が更新された場合、更新された最新のページ情報はセンターサーバSAしか保持していない。そうすると、この更新されたページ情報を各ノードNnが取得しようと、センターサーバSAにアクセスが集中するおそれがある。
【0112】
そこで、本実施形態においては、センターサーバSAが、ページ情報を新たに作成すると、作成したページ情報を担当範囲とするノードNnに向けて、作成したページ情報を配布する。
【0113】
例えば、センターサーバSAが、センターサーバSAが知っているノードNnの中で、作成したページ情報を担当していると思われるノードNnにページ情報を送信する。ページ情報を担当していると思われるノードNnとは、例えば、センターサーバSAのルーティングテーブルにノード情報が登録されているノードNnのうち、ページ情報を担当するのに最もふさわしいノードNnである。そして、ページ情報を担当するのに最もふさわしいノードNnとは、例えば、ノードIDの値が、ページ情報のインデックスの値に最も近いノードNnである。
【0114】
ページ情報を受信したノードNnは、自分が知っているノードNnの中で、受信したページ情報を担当するのに自分よりふさわしいノードNnが存在する場合には、受信したページ情報を転送する。このようにして、ページ情報が、このページ情報を担当するノードNnまで転送される。そして、ページ情報が転送される過程において、各ノードNnにおいてページ情報が保持される。
【0115】
これにより、更新された最新のページ情報は、このページ情報を担当するノードNnの少なくとも一つが必ず保持することになる。よって、ページ情報を受信していないノードNnは、このページ情報を担当しているノードNnからページ情報を取得することができる。よって、センターサーバSAへのアクセス集中が低減される。
【0116】
[5.センターサーバSAの構成等]
次に、図7を参照して、センターサーバSAの構成及び機能について説明する。
【0117】
図7は、センターサーバSAの概要構成例を示す図である。
【0118】
センターサーバSAは、図4に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成された制御部11を備えている。また、センターサーバSAは、各種データ及び各種プログラム等を記憶保存するためのHD等から構成された記憶部12を備えている。更に、センターサーバSAは、ネットワーク8等を通じてノードNnとの間の情報の通信制御を行うための通信部13を備えている。また更に、センターサーバSAは、各種情報を表示するCRT,液晶ディスプレイ等の表示部14を備えている。更にまた、センターサーバSAは、オペレータからの指示を受け付けこの指示に応じた指示信号を制御部11に対して与える入力部(例えば、キーボード、マウス等)15と、を備えている。そして、制御部11、記憶部12、通信部13、表示部14、及び入力部15はバス16を介して相互に接続されている。図7ここで、記憶部12は、本発明におけるページ情報記憶手段、担当範囲情報記憶手段及び担当範囲情報記憶手段の一例である。記憶部12は、揮発性のメモリであっても良いし、不揮発性のメモリであっても良い。
【0119】
記憶部12には、DHTを用いたルーティングテーブルが記憶されている。ルーティングテーブルには、コンテンツ分散保存システムSに参加している複数のノードNnのうち少なくとも一部のノードNnのノード情報が登録されている。このノード情報に含まれるノードIDは、担当範囲情報の一例である。また、ノード情報に含まれるIPアドレスは、アドレス情報の一例である。また、記憶部12には、カタログ情報がルートリンク情報及びページ情報単位で登録されるカタログデータベースが構築されている。更に、記憶部12には、カタログデータベースを管理するためのデータベース管理プログラムが記憶されている。データベース管理プログラムは、ページ情報送信プログラムの一例である。
【0120】
制御部11は、CPUが記憶部12等に記憶されたデータベース管理プログラム等のプログラムを読み出して実行することにより、葉ページ情報生成手段、更新手段、ページ情報送信手段及び送信先決定手段として機能する。
【0121】
なお、上記データベース管理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されてこの記録媒体のドライブを介して読み込まれるようにしても良い。
【0122】
[6.ノードNnの構成及び機能等]
次に、図8を参照して、ノードNnの構成及び機能について説明する。
【0123】
図8は、ノードNnの概要構成例を示す図である。
【0124】
各ノードNnは、図5に示すように、演算機能を有するCPU,作業用RAM,各種データ及びプログラムを記憶するROM等から構成されたコンピュータとしての制御部21を備えている。また、各ノードNnは、各種データ及び各種プログラム等を記憶保存するためのHD(ハードディスク)等から構成された記憶部22と、受信されたコンテンツのレプリカ等を一時蓄積するバッファメモリ23とを備えている。更に、各ノードNnは、コンテンツのレプリカに含まれるエンコードされたビデオデータ(映像情報)及びオーディオデータ(音声情報)等をデコードするデコーダ部24を備えている。また更に、各ノードNnは、このデコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部25と、この映像処理部25から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等の表示部26と、を備えている。更にまた、各ノードNnは、上記デコードされたオーディオデータをアナログオーディオ信号にD (Digital)/A(Analog)変換した後これをアンプにより増幅して出力する音声処理部27と、この音声処理部27から出力されたオーディオ信号を音波として出力するスピーカ28と、を備えている。また更に、各ノードNnは、ネットワーク8を通じて他のノードNn等間の情報の通信制御を行うための通信部29を備えている。更にまた、各ノードNnは、ユーザからの指示を受け付けこの指示に応じた指示信号を制御部21に対して与える入力部(例えば、キーボード、マウス、或いは、リモコンや操作パネル等)30を備えている。そして、制御部21、記憶部22、バッファメモリ23、デコーダ部24、通信部29、及び入力部30はバス31を介して相互に接続されている。図8ここで、記憶部12は、本発明におけるページ情報記憶手段、アドレス情報記憶手段及び担当範囲情報記憶手段の一例である。なお、ノードNnとしては、例えば、パーソナルコンピュータ、STB(Set Top Box)等を適用可能である。
【0125】
記憶部22には、DHTを用いたルーティングテーブル、インデックス、並びに、コンテンツ分散保存システムSに参加する際のアクセス先となるコンタクトノードのIPアドレス及びポート番号、及びセンターサーバSAのIPアドレス及びポート番号等が記憶されている。ルーティングテーブルに登録されたIPアドレスは、アドレス情報の一例である。また、記憶部22には、ノードNn自身のノードIDが記憶されている。このノードIDは、担当範囲情報の一例である。また、記憶部22には、他のノードNnから取得したページ情報や、センターサーバSAから配信されてきたページ情報が、ファイルとして記憶される。
【0126】
制御部21は、CPUが記憶部22等に記憶されたプログラム(本発明のノードプログラムを含む)を読み出して実行することにより、ページ情報受信手段、送信先決定手段及びページ情報転送手段として機能する。
【0127】
また、制御部21は、コンテンツのレコードの検索を行う。この検索方法は、基本的にセンターサーバSAにおけるレコードの検索方法と同じである。ただし、必要なページ情報が保持されていない場合、制御部21は、センターサーバSA又は他のノードNnからページ情報を取得する。そして、制御部21は、検索されたレコードの内容に基づいて、必要な処理を行う。例えば、制御部21は、レコードの情報を表示部26に表示させたり、コンテンツが公開されているか否かを判断したり、レコードに含まれているコンテンツIDに基づいて、コンテンツ保持ノードからコンテンツを取得したりする。
【0128】
なお、ノードプログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されてこの記録媒体のドライブを介して読み込まれるようにしても良い。
【0129】
[7.コンテンツ分散保存システムSの動作]
次に、図9乃至図17を参照して、本実施形態に係るコンテンツ分散保存システムSの動作について説明する。
【0130】
以下においては、カタログ情報が一般的なn分探索木の構造を少なくとも有するものとして説明する。木の種類や構造等に特有の処理に関する説明は省略する。また、ページ情報に必須ではないセルフリンク情報に関する処理の説明は省略する。
【0131】
[7.1 センターサーバSAの動作]
図9は、本実施形態に係るセンターサーバSAにおける制御部11の処理例を示すフローチャートである。
【0132】
図9に示す処理は、例えば、データベース管理プログラムが起動されたときに開始される。先ず、制御部11は、ステップS1〜S5の初期化処理を実行する。具体的に、制御部11は、ルートリンク情報を保存したファイルが記憶部12に記憶されているか否かを判定する(ステップS1)。データベース管理プログラムの起動が初めてである場合には、ルートリンク情報は未だ作成されていない。その一方で、データベース管理プログラムの起動が初めてではない場合には、ルートリンク情報は既に作成されてファイルに保存されている。そこで、制御部11は、ルートリンク情報を保存したファイルが記憶部12に記憶されていない場合には(ステップS1:NO)、ルートリンク情報登録処理を実行する(ステップS2)。初期化処理から実行されたルートリンク情報登録処理では、ルートリンク情報とルートページ情報とが新規に作成される。なお、ルートリンク情報登録処理の詳細な説明は省略する。
【0133】
ステップS1において、制御部11は、ルートリンク情報を保存したファイルが記憶部12に記憶されている場合には(ステップS1:YES)、このファイルからルートリンク情報を読み出してRAMに格納する(ステップS3)。
【0134】
次いで、制御部11は、このファイルに保存されている電子署名を用いてルートリンク情報の改竄をチェックする(ステップS4)。例えば、制御部11は、ルートリンク情報、より具体的には、ルートページ情報のシリアル番号及びメッセージダイジェストから、メッセージダイジェストを計算する。このメッセージダイジェストの計算には、電子署名に設定されているハッシュ関数が用いられる。また、制御部11は、電子署名の証明書情報に設定されている公開鍵を用いて電子署名の署名値を復号する。そして、制御部11は、作成されたメッセージダイジェストと復号されたデータとが一致するか否かを判定する。ここで、一致する場合にはルートリンク情報は改竄されていないとされ、一致しない場合には改竄されている。
【0135】
次いで、制御部11は、ルートリンク情報は改竄されているか否かを判定する(ステップS5)。このとき、制御部11は、ルートリンク情報は改竄されている場合には(ステップS5:YES)、エラー終了とさせる。この場合は、例えば、表示部14に、ルートリンク情報が改竄されている旨のエラー表示がなされ、データベース管理プログラムの実行が中断される。
【0136】
ステップS5において、制御部11は、ルートリンク情報は改竄されていない場合(ステップS5:NO)、又は、ステップS2のルートリンク情報登録処理を終えた場合には、メインの処理を開始させる。
【0137】
先ず、制御部11は、オペレータからの終了指示があったか否かを、入力部15からの入力に基づいて判定する(ステップS6)。
【0138】
ステップS6において、制御部11は、終了指示がない場合には(ステップS6:NO)、オペレータからのレコードの追加要求があったか否かを、入力部15からの入力に基づいて判定する(ステップS7)。このとき、制御部11は、レコードの追加要求があった場合には(ステップS7:YES)、レコード追加処理を実行する(ステップS8)。この場合、制御部11は、例えばオペレータ操作によって入力部15から入力された新規レコードを指定する。また、制御部11は、別途検索キーが必要な場合には、新規レコードの検索キーをも指定する。このレコード追加処理では、入力された新規レコードがカタログ情報に追加される。なお、レコード追加処理の詳細については後述する。
【0139】
ステップS7において、制御部11は、レコードの追加要求がなかった場合には(ステップS7:NO)、オペレータからのレコードの削除要求があったか否かを、入力部15からの入力に基づいて判定する(ステップS9)。このとき、制御部11は、レコードの削除要求があった場合には(ステップS9:YES)、レコード削除処理を実行する(ステップS10)。この場合、制御部11は、オペレータ操作によって入力部15から入力された削除対象レコードの検索キーを指定する。このレコード削除処理では、指定された検索キーに対応する削除対象レコードがカタログ情報から削除される。なお、レコード削除処理の詳細については後述する。
【0140】
ステップS9において、制御部11は、レコードの削除要求がなかった場合には(ステップS9:NO)、オペレータからのレコードの検索要求があったか否かを、入力部15からの入力に基づいて判定する(ステップS11)。このとき、制御部11は、レコードの検索要求があった場合には(ステップS11:YES)、レコード検索処理を実行する(ステップS12)。この場合、制御部11は、オペレータ操作によって入力部15から入力された検索キーを指定する。このレコード検索処理では、指定された検索キーに対応するレコードがカタログ情報から検索される。なお、レコード検索処理の詳細については後述する。
【0141】
ステップS11において、制御部11は、レコードの検索要求がなかった場合には(ステップS11:NO)、ルートリンク情報要求メッセージを受信したか否かを判定する(ステップS13)。このとき、制御部11は、ルートリンク情報要求メッセージを受信した場合には(ステップS13:YES)。ルートリンク情報をルートリンク情報メッセージに含ませて、要求元のノードNnに送信する。
【0142】
ステップS13において、制御部11は、ルートリンク情報要求メッセージを受信していない場合には(ステップS13:NO)、ページ情報要求メッセージを受信したか否かを判定する(ステップS15)。このとき、制御部11は、ページ情報要求メッセージを受信した場合には(ステップS15:YES)、ページ情報取得処理を実行する(ステップS16)。このとき、制御部11は、ページ情報要求メッセージに含まれているリンク情報を指定する。このリンク情報は、要求されたページ情報を指している。ページ情報取得処理では、指定されたリンク情報が指すページ情報がファイルから取得され、RAMに格納される。なお、ページ情報取得処理の詳細については後述する。制御部11は、要求されたページ情報を取得すると、このページ情報をページ情報メッセージに含ませて、要求元のノードNnに送信する(ステップS17)。
【0143】
制御部11は、ステップS8、S10、S12、S14又はS17の処理を終えたとき、或いは、ステップS15において、ページ情報要求メッセージを受信していない場合には(ステップS15:NO)、ステップS6に移行する。そして、制御部11は、ステップS6においてオペレータからの終了指示があった場合には(ステップS6:YES)、本処理を終了させる。
【0144】
図10は、本実施形態に係るセンターサーバSAにおける制御部11のページ情報登録処理における処理例を示すフローチャートである。
【0145】
ページ情報登録処理は、例えば、ルートリンク情報登録処理において空のルートページ情報が作成された場合、レコードの追加処理において新たなページ情報が作成された場合、及び、レコード削除処理において新たなページ情報が作成された場合に実行される。ページ情報登録処理が実行される際、新たに作成されたページ情報が指定される。この新たに作成されたページ情報は、例えばRAMに格納されている。
【0146】
先ず、制御部11は、登録対象として指定されたページ情報に、今までに割り当てられていない最新のページ番号を割り当てる(ステップS151)。
【0147】
次いで、制御部11は、登録対象のページ情報を頂点とするサブツリーに含まれるページ情報を全て保存するのに必要なファイルサイズを計算する(ステップS152)。例えば、制御部11は、登録対象のページ情報に格納されているリンク情報から、登録対象のページ情報の子ページ情報を特定する。子ページ情報を特定すると、制御部11は、特定された各子ページ情報に設定されている合計ファイルサイズを取得する。そして、制御部11は、取得した合計ファイルサイズを合算する。最後に、制御部11は、合算したファイルサイズに、登録対象のページ情報のファイルサイズを加算する。
【0148】
次いで、制御部11は、計算されたファイルサイズを、登録対象のページ情報に、合計ファイルサイズとして設定する(ステップS153)。
【0149】
次いで、制御部11は、登録対象のページ情報のメッセージダイジェストを計算する(ステップS154)。
【0150】
次いで、制御部11は、登録対象のページ情報をファイルに保存する(ステップS155)。このとき、ページ情報がどこに保存されているかが特定することができるよう、例えば、ファイル名にページ番号が付加される。
【0151】
次いで、制御部11は、登録したページ情報を担当していると思われるノードNnに、登録したページ情報を含むページ情報配布メッセージを送信する(ステップS156)。具体的に、送信先決定手段としての制御部11は、登録したページ情報の送信先として、登録したページ情報を担当していると思われるノードNnを、ルーティングテーブルに登録されているノードIDに基づいて決定する。ページ情報を担当していると思われるノードNnは、ルーティングテーブルにノード情報が登録されているノードNnの中から選択される。そして、ページ情報送信手段としての制御部11は、登録したページ情報を担当していると思われるノードNnに、ページ情報配布メッセージを送信する。このページ情報配布メッセージには、作成されたページ情報が含まれている。
【0152】
制御部11は、この処理を終えると、ページ情報登録処理を終了させ、割り当てたページ番号と計算したメッセージダイジェストとからなるリンク情報を、呼び出し元の処理に返却する。
【0153】
図11は、本実施形態に係るセンターサーバSAにおける制御部11のレコード追加処理における処理例を示すフローチャートである。
【0154】
先ず、制御部11は、現在のルートリンク情報をRAMから取得する(ステップS201)。次いで、制御部11は、ページ情報取得処理を実行する(ステップS202)。このとき、制御部11は、ルートリンク情報を指定する。ページ情報取得処理では、指定されたリンク情報が指すページ情報がファイルから取得され、RAMに格納される。取得されたページ情報は、現在参照しているページ情報とされる。なお、ページ情報取得処理の詳細については後述する。
【0155】
次いで、制御部11は、取得されたページ情報が新規レコードの担当ページ情報であるか否かを判定する(ステップS203)。この判定方法は、ページ情報の構造に依存する。
【0156】
制御部11は、取得されたページ情報が新規レコードの担当ページ情報ではない場合には(ステップS203:NO)、現在参照しているページ情報から、次のページ情報へのリンク情報を取得する(ステップS204)。この処理は、カタログ情報の探索木の構造に対応した探索アルゴリズムに従って行われる。例えば、制御部11は、指定された検索キーと現在参照しているページ情報に設定されているインデックスとの比較によって、次のページ情報へのリンク情報を特定する。
【0157】
次いで、制御部11は、次のページ情報へのリンク情報が存在するか否かを判定する(ステップS205)。つまり、制御部11は、次のページ情報へのリンク情報を取得することができたか否かを判定する。このとき、制御部11は、次のページ情報へのリンク情報が存在しない場合には(ステップS205:NO)、葉ページ情報生成手段として、ステップS206において、新しい担当ページ情報をRAM上に作成する。そして、制御部11は、作成した担当ページ情報上に新規レコードを追加して設定する。このとき、制御部11は、カタログ情報の構造上必要な場合には、新規レコードの検索キーをインデックスとして、この新規レコードに対応付けて担当ページ情報に追加して設定する。
【0158】
一方、制御部11は、次のページ情報へのリンク情報が存在する場合には(ステップS205:YES)、ステップS202に移行する。このとき、制御部11は、取得したリンク情報を指定して、ページ情報取得処理を実行する。
【0159】
ステップS203において、制御部11は、取得されたページ情報が新規レコードの担当ページ情報である場合には(ステップS203:YES)、担当ページ情報には、格納可能なレコード数の上限まで既にレコードが格納されているか否かを判定する(ステップS207)。このとき、制御部11は、格納可能なレコード数の上限までのレコードは格納されていない場合には(ステップS207:YES)、葉ページ情報生成手段として、ステップS208において、現在の担当ページ情報の内容をコピーした新しい担当ページ情報をRAM上に作成する。そして、制御部11は、新しい担当ページ情報に新規レコードを追加して設定する。このとき、制御部11は、ステップS206と同様に必要に応じて、新規レコードの検索キーをインデックスとして追加設定する。
【0160】
一方、制御部11は、格納可能なレコード数の上限まで既にレコードが格納されている場合には(ステップS207:NO)、葉ページ情報生成手段として、ステップS209において、ページ情報の分割を行う。具体的に、制御部11は、カタログ情報の探索木の構造に対応する分割アルゴリズムに従って、現在の担当ページ情報の内容を分割して複数の新しいページ情報をRAM上に作成する。そして、制御部11は、この新しいページ情報のうち担当ページ情報に、新規レコードを追加して設定する。例えば、担当ページ情報の内容を3つに分割する場合、元の担当ページ情報に格納されているレコードが、そのインデックスの順に、前半、中間及び後半のレコードに分けられる。そして、夫々のレコードを格納するページ情報が作成される。新規レコードをどのページ情報に格納させるかはその検索キーに基づいて判断される。また、制御部11は、ステップS206と同様に必要に応じて、新規レコードの検索キーをインデックスとして追加設定する。
【0161】
制御部11は、ステップS206、S208又はS209において新しい担当ページを作成した後、ページ情報登録処理を実行する(ステップS210)。このとき、制御部11は、新たに作成したページ情報を指定する。ページ情報登録処理では、指定されたページ情報へのリンク情報が生成され、このページ情報がファイルに保存される。これによりページ情報が登録される。なお、ステップS209において、担当ページ情報が複数の新しいページ情報に分割された場合には、この複数のページ情報夫々に対してページ情報登録処理が実行される。
【0162】
次いで、制御部11は、登録されたページ情報の親ページ情報が存在するか否かを判定する(ステップS211)。例えば、ステップS205の判定において次のページ情報へのリンク情報が存在する度に、そのとき参照していたページ情報のページ番号をRAMの所定領域に保存してくと良い。この所定領域を参照することによって、親ページ情報が存在するか、及び、この親ページ情報のページ番号を特定することができる。
【0163】
制御部11は、親ページ情報が存在する場合には(ステップS211:YES)、更新手段として、ステップS212及びS213において、新しい担当ページ情報の親ページ情報からルートページ情報までの各節ページ情報のページ番号及びメッセージダイジェストを更新する。先ず、制御部11は、元の親ページ情報の内容をコピーした新しい親ページ情報をRAM上に作成する(ステップS212)。そして、制御部11は、新しい親ページを現在参照するページ情報とする。
【0164】
次いで、制御部11は、現在参照するページ情報に格納されている古い子ページ情報を指していたリンク情報を、新しい子ページ情報を指すリンク情報に書き換える(ステップS213)。具体的に、制御部11は、ステップS210のページ情報登録処理で生成されたリンク情報を、新しい子ページ情報を指すリンク情報とする。そして、制御部11は、新しい子ページ情報を指すリンク情報を、古い子ページ情報を指していたリンク情報に上書きする。
【0165】
次いで、制御部11は、ステップS210に移行する。このとき、制御部11は、新たに作成した現在参照しているページ情報を指定して、ページ情報登録処理を実行する。これにより、現在参照しているページ情報が登録される。
【0166】
ステップS211において、制御部11は、登録されたページ情報の親ページ情報が存在しない場合、つまり、登録されたページ情報がルートページ情報である場合には(ステップS211)、ルートリンク情報登録処理を実行する(ステップS214)。ルートリンク情報登録処理では、登録された新しいルートページ情報を指すルートリンク情報が作成される。制御部11は、ルートリンク情報登録処理を終えると、レコード追加処理を終了させる。
【0167】
図12は、本実施形態に係るセンターサーバSAにおける制御部11のレコード削除処理における処理例を示すフローチャートである。
【0168】
先ず、制御部11は、ステップS251〜S255の処理を実行する。これらの処理は、レコード追加処理におけるステップS201〜S205の処理と同様である。
【0169】
ステップS255において、制御部11は、次のページ情報へのリンク情報が存在しない場合には(ステップS255:NO)、レコード削除処理を終了させる。つまり、削除対象レコードを格納しているページ情報は存在しないので、レコード削除処理はここで終了する。
【0170】
ステップS253において、制御部11は、取得されたページ情報が削除対象レコードの担当ページ情報である場合には(ステップS253:YES)、担当ページ情報は削除対象レコードを格納しているか否かを判定する(ステップS256)。この判定方法は、カタログ情報の構造に依存する。例えば、レコードとこのレコードのインデックスとが対応付けられページ情報に格納される構造の場合には、指定された検索キーで、担当ページ情報に格納されているインデックスが検索される。そして、指定された検索キーに一致するインデックスが存在する場合には、削除対象レコードは格納されていると判定される。その一方で、指定された検索キーに一致するインデックスが存在しない場合には、削除対象レコードは格納されていないと判定される。制御部11は、担当ページ情報は削除対象レコードを格納していない場合には(ステップS256:NO)、レコード削除処理を終了させる。
【0171】
一方、制御部11は、担当ページ情報は削除対象レコードを格納している場合には(ステップS256:YES)、葉ページ情報生成手段として、ステップS257において、現在の担当ページ情報の内容をコピーした新しい担当ページ情報をRAM上に作成する。そして、制御部11は、新しい担当ページ情報から削除対象レコードを削除する。このとき、制御部11は、担当ページ情報に削除対象レコードのインデックスが設定されている場合には、このインデックスも削除する。
【0172】
次いで、制御部11は、作成した新しいページ情報が格納しているレコードの数とリンク情報の数が何れも0になったか否かを判定する(ステップS258)。つまり、制御部11は、作成した新しいページ情報が空になったか否かを判定する。このとき、制御部11は、作成した新しいページ情報が空になっていない場合には(ステップS258:NO)、このページ情報を指定して、ページ情報登録処理を実行する(ステップS259)。これにより、削除対象レコードが削除された新しいページ情報が登録される。
【0173】
一方、制御部11は、作成した新しいページ情報が空になった場合には(ステップS258:YES)、このページ情報をRAM上から削除する(ステップS260)。
【0174】
制御部11は、ステップS259又はS260の処理を終えると、ステップS261〜S264の処理を実行する。これらの処理は、レコード追加処理におけるステップ211〜S214の処理と基本的には同様である。
【0175】
ここでステップS263において、制御部11は、現在参照するページ情報に格納されている古い子ページ情報を指していたリンク情報を、新しい子ページ情報を指すリンク情報に書き換える。ただし、制御部11は、子ページ情報がステップS260で削除されている場合には、古い子ページ情報を指していたリンク情報を、何も指していない状態に書き換える。例えば、ページ番号及びメッセージダイジェストに無効な値が設定される。
【0176】
図13は、本実施形態に係るセンターサーバSAにおける制御部11のレコード検索処理における処理例を示すフローチャートである。
【0177】
先ず、制御部11は、現在のルートリンク情報をRAMから取得する(ステップS351)。次いで、制御部11は、ページ情報取得処理を実行する(ステップS352)。次いで、制御部11は、取得されたページ情報が、指定された検索キーに対応するレコードの担当ページ情報であるか否かを判定する(ステップS353)。制御部11は、取得されたページ情報が削除対象レコードの担当ページ情報ではない場合には(ステップS353:NO)、現在参照しているページ情報から、次のページ情報へのリンク情報を取得する(ステップS354)。次いで、制御部11は、次のページ情報へのリンク情報が存在するか否かを判定する(ステップS355)。このとき、制御部11は、次のページ情報へのリンク情報が存在しない場合には(ステップS355:NO)、指定された検索キーに対応するレコードが発見されなかった旨をオペレータに提示する(ステップS356)。例えば、発見されなかった旨のメッセージが表示部14に表示される。
【0178】
ステップS353において、制御部11は、取得されたページ情報が検索キーに対応するレコードの担当ページ情報である場合には(ステップS353:YES)、担当ページ情報は検索キーに対応するレコードを格納しているか否かを判定する(ステップS357)。このとき、制御部11は、担当ページ情報は検索キーに対応するレコードを格納していない場合には(ステップS357:NO)、指定された検索キーに対応するレコードが発見されなかった旨をオペレータに提示する(ステップS356)。一方、制御部11は、担当ページ情報は検索キーに対応するレコードを格納している場合には、発見したレコードの情報をオペレータに提示する。例えば、レコードの内容が表示部14に表示される。制御部11は、ステップS356又はステップS358の処理を終えると、レコード検索処理を終了させる。
【0179】
[7.2 ノードNnの動作]
図14は、本実施形態に係るノードNnにおける制御部21の処理例を示すフローチャートである。
【0180】
図14に示す処理は、例えば、ノードNnが、コンテンツ分散保存システムSに参加したときに開始される。先ず、制御部21は、初期化処理を実行する(ステップS501)。この初期化処理では、ルートリンク情報が取得される。なお、初期化処理の詳細は後述する。
【0181】
次いで、制御部21は、ユーザからの終了指示があったか否かを、入力部30からの入力に基づいて判定する(ステップS502)。
【0182】
ステップS2において、制御部21は、終了指示がない場合には(ステップS502:NO)、ユーザからのレコードの検索要求があったか否かを、入力部30からの入力に基づいて判定する(ステップS503)。このとき、制御部21は、レコードの検索要求があった場合には(ステップS503:YES)、レコード検索処理を実行する(ステップS504)。このレコード検索処理では、ユーザにより指定された検索キーに対応するレコードがカタログ情報から検索される。なお、レコード検索処理の内容は、センターサーバSAにおけるレコード検索処理の内容と同様であるので、詳細な説明は省略する。ただし、レコード検索処理から実行されるページ情報取得処理の内容は、センターサーバSAにおけるページ情報取得処理とは異なる。
【0183】
ステップS503において、制御部21は、レコードの検索要求がなかった場合には(ステップS503:NO)、ルートリンク情報要求メッセージを受信したか否かを判定する(ステップS505)。このとき、制御部21は、ルートリンク情報要求メッセージを受信した場合には(ステップS505:YES)、RAMに格納されているルートリンク情報をルートリンク情報メッセージに含ませて、要求元のノードNnに送信する(ステップS506)。
【0184】
ステップS505において、制御部21は、ルートリンク情報要求メッセージを受信していない場合には(ステップS505:NO)、ページ情報要求メッセージを受信したか否かを判定する(ステップS507)。このとき、制御部21は、ページ情報要求メッセージを受信した場合には、ページ情報取得処理を実行する(ステップS508)。このとき、制御部21は、ページ情報要求メッセージに含まれているリンク情報及び検索キーを指定する。ページ情報取得処理では、指定されたリンク情報が指すページ情報がファイルから取得され、RAMに格納される。また、指定されたリンク情報が指すページ情報を保存するファイルがない場合には、センターサーバSA又は他のノードNnからこのページ情報が取得される。なお、ページ情報取得処理の詳細については後述する。制御部21は、要求されたページ情報を取得すると、このページ情報をページ情報メッセージに含ませて、要求元のノードNnに送信する(ステップS509)。
【0185】
ステップS507において、制御部21は、ページ情報要求メッセージを受信していない場合には(ステップS507:NO)、ルートリンク情報メッセージを受信したか否かを判定する(ステップS510)。このとき、制御部21は、ルートリンク情報メッセージを受信した場合には(ステップS510:YES)、このルートリンク情報メッセージに含まれる情報をルートリンク情報としてRAMに設定する(ステップS511)。
【0186】
ステップS510において、制御部21は、ルートリンク情報メッセージを受信していない場合には(ステップS510:NO)、ページ情報メッセージを受信したか否かを判定する(ステップS512)。このとき、制御部21は、ページ情報メッセージを受信した場合には(ステップS512:YES)、このページ情報メッセージに含まれる情報をページ情報としてファイルに保存する(ステップS513)。
【0187】
ステップS512において、制御部21は、ページ情報メッセージを受信していない場合には(ステップS512:NO)、ページ情報受信手段としてページ情報配布メッセージを受信したか否かを判定する(ステップS514)。このとき、制御部21は、ページ情報配布メッセージを受信した場合には(ステップS514:YES)、このページ情報配布メッセージに含まれる情報をページ情報としてファイルに保存する(ステップS515)。
【0188】
次いで、制御部21は、受信したページ情報配布メッセージに含まれるページ情報を担当するのに制御部21自身のノードNnよりふさわしいノードNnが存在するか否かを判定する(ステップS516)。具体的に、制御部21は、送信先決定手段として、ページ情報を担当するのに制御部21自身のノードNnよりふさわしいノードNnが存在するか否かの判断を、ルーティングテーブルに登録されているノードIDと、受信されたページ情報配布メッセージに含まれるページ情報のインデックスに基づいて行う。このとき、制御部21は、ふさわしいノードNnが存在する場合には(ステップS516:YES)、ページ情報転送手段として、受信したページ情報配布メッセージに含まれるページ情報を担当するのに最もふさわしいノードNnに、ページ情報配布メッセージを転送する(ステップS517)。
【0189】
ステップS514において、制御部21は、ページ情報配布メッセージを受信していない場合には(ステップS514:NO)、担当ページ情報取得処理を実行する(ステップS518)。担当ページ情報取得処理では、ノードNnの担当範囲内にあるページ情報がサーバSA又は他のノードNnから取得され、記憶部22に記憶される。
【0190】
制御部21は、ステップS504、S506、S509、S511、S513、S517又はS518の処理を終えたとき、又は、ステップS516において、受信したページ情報配布メッセージに含まれるページ情報を担当するのに制御部21自身のノードNnよりふさわしいノードNnが存在しない場合には、ステップS502に移行する。そして、制御部11は、ステップS502においてユーザからの終了指示があった場合には(ステップS502:YES)、本処理を終了させる。
【0191】
図15は、本実施形態に係るノードNnにおける制御部21の初期化処理における処理例を示すフローチャートである。
【0192】
先ず、制御部21は、コンテンツ分散保存システムSに参加中の他のノードNnに、ルートリンク情報要求メッセージを送信する(ステップS551)。ルートリンク情報要求メッセージの送信先のノードNnとしては、例えば、ルーティングテーブルにノード情報が登録されているノードNnのうち任意のノードNnが選択される。
【0193】
次いで、制御部21は、ルートリンク情報要求メッセージの送信に対応して、送信先のノードNnから送信されてきたルートリンク情報メッセージを受信する(ステップS552)。次いで、制御部21は、受信されたルートリンク情報メッセージから、ルートリンク情報をRAM上に設定する(ステップS553)。次いで、制御部21は、ルートリンク情報メッセージに添付されている電子署名でルートリンク情報の改竄をチェックする(ステップS554)。このチェック方法は、センターサーバSAの初期処理におけるルートリンク情報の改竄チェックと同様である。
【0194】
次いで、制御部21は、ルートリンク情報は改竄されているか否かを判定する(ステップS555)。このとき、制御部21は、ルートリンク情報は改竄されていない場合には(ステップS555:NO)、初期化処理を終了させる。
【0195】
一方、制御部21は、ルートリンク情報は改竄されている場合には(ステップS555:YES)、センターサーバSAにルートリンク情報要求メッセージを送信する(ステップS556)。次いで、ステップS552に移行する。ここで、制御部21は、再度、センターサーバSAからルートリンク情報メッセージを受信し、ルートリンク情報を設定し、改竄チェックを行う(ステップS552〜S554)。
【0196】
そして、ステップS555において、制御部21は、センターサーバSAから受信したルートリンク情報が改竄されていない場合には(ステップS555:NO)、初期化処理を終了させる。
【0197】
図16は、本実施形態に係るノードNnにおける制御部21のページ情報取得処理における処理例を示すフローチャートである。
【0198】
先ず、制御部21は、指定されたリンク情報が有効なページ情報を指しているか否かを判定する(ステップS601)。例えば、リンク情報のページ番号が無効な値に設定される場合、このリンク情報は有効なページ情報を指していない。例えば、ページ番号が1から始まるように定められている場合、ページ番号に1以上の値が設定されているリンク情報は有効であり、ページ番号に0が設定されているリンク情報は無効である。このとき、制御部21は、指定されたリンク情報が有効なページ情報を指していない場合には(ステップS601:NO)、ページ情報取得処理を終了させる。この場合、ページ情報無しという情報が、呼び出し元の処理に返却される。
【0199】
一方、制御部21は、指定されたリンク情報が有効なページ情報を指している場合には(ステップS601:NO)、このリンク情報に含まれるページ番号が指すファイルが記憶部22に記憶されているか否かを判定する(ステップS602)。このとき、制御部21は、指定されたリンク情報に含まれるページ番号が指すファイルが記憶されている場合には(ステップS602:YES)、このリンク情報に含まれるページ番号が指すファイルからページ情報を読み出してRAMに格納する(ステップS603)。
【0200】
次いで、制御部21は、指定されたリンク情報に含まれるメッセージダイジェストを用いて、読み出したページ情報の改竄をチェックする(ステップS604)。このチェック方法は、センターサーバSAのページ情報取得処理におけるページ情報の改竄チェックと同様である。
【0201】
次いで、制御部21は、読み出したルートページ情報は改竄されているか否かを判定する(ステップS605)。このとき、制御部21は、ページ情報は改竄されていない場合には(ステップS605:NO)、読み出したページ情報を呼び出し元の処理に返却し、ページ情報取得処理を終了させる。
【0202】
ステップS602において、制御部21は、指定されたリンク情報に含まれるページ番号が指すファイルが記憶されていない場合には(ステップS602:NO)、リンク情報が指すページ情報を担当するのに制御部21自身のノードNnよりもふさわしいノードNnが存在するか否かを判定する(ステップS606)。リンク情報が指すページ情報を担当するのにふさわしいノードNnが存在するか否かは、ルーティングテーブルにノード情報が登録されているノードNnの範囲内で判断される。また、ページ情報を担当するのに制御部21自身のノードNnよりもふさわしいノードNnとは、例えば、ノードIDが、制御部21自身のノードNnのノードIDよりも、指定された検索キーの上位桁の値と多く一致するノードNnである。
【0203】
制御部21は、リンク情報が指すページ情報を担当するのに制御部21自身のノードNnよりもふさわしいノードNnが存在しない場合(ステップS606:NO)、又は、ステップS605において、ページ情報が改竄されている場合には(ステップS605:YES)、センターサーバSAにページ情報要求メッセージを送信する(ステップS607)。このとき、制御部21は、指定されたリンク情報及び検索キーをページ情報要求メッセージに設定する。
【0204】
一方、制御部21は、リンク情報が指すページ情報を担当するのに制御部21自身のノードNnよりもふさわしいノードNnが存在する場合には、リンク情報が指すページ情報を担当するのに最もふさわしいノードNnにページ情報要求メッセージを送信する(ステップS608)。ページ情報を担当するのに最もふさわしいノードNnとは、例えば、ノードIDが、指定された検索キーの上位桁の値と最も多く一致するノードNnである。
【0205】
制御部21は、ステップS607又はS608において、ページ情報要求メッセージを送信すると、このページ情報要求メッセージの送信に対応してセンターサーバSA又は他のノードNnから送信されてきたページ情報メッセージを受信する(ステップS609)。次いで、制御部21は、受信したページ情報メッセージに含まれる情報をページ情報としてファイルに保存する(ステップS610)。制御部21は、この処理を終えると、ステップS603に移行する。ここで、制御部21は、再度、ページ情報を読み出し、読み出したページ情報の改竄チェックを行う(ステップS603、S604)。そして、ステップS605において、制御部21は、ページ情報は改竄されていない場合には(ステップS605:NO)、ページ情報取得処理を終了させる。
【0206】
図17は、本実施形態に係るノードNnにおける制御部21の担当ページ情報取得処理における処理例を示すフローチャートである。
【0207】
先ず、制御部21は、現在のルートリンク情報をRAMから取得する(ステップS651)。次いで、制御部21は、ページ情報取得処理を実行する(ステップS652)。このとき、制御部21は、取得したルートリンク情報を指定する。また、制御部21は、検索キーとして、制御部21自身のノードNnのノードIDを指定する。ページ情報取得処理において取得されたページ情報は、現在参照しているページ情報とされる。
【0208】
次いで、制御部21は、ページ情報の保存のためのファイルキャッシュ容量が、取得したページ情報に設定されている合計ファイルサイズ以上であるか否かを判定する(ステップS653)。このとき、制御部21は、ファイルキャッシュ容量が、取得したページ情報に設定されている合計ファイルサイズ未満である場合には(ステップS653:NO)、現在参照しているページ情報から、次のページ情報へのリンク情報を取得する(ステップS654)。ここで、次のページ情報とは、現在参照しているページ情報の子ページ情報のうち、担当範囲内にあるページ情報をいう。制御部21は、先ず、制御部21自身のノードNnのノードIDに基づいて担当範囲を決定する。この担当範囲の決定は、カタログ情報の探索木の構造に対応した探索アルゴリズムに従って行われる。一例としては、現在参照しているページ情報がルートページ情報である場合には、インデックスの上位一桁の値がノードIDの上位一桁の値と一致するページ情報が担当範囲となる。また、現在参照しているページ情報がルートページ情報の子ページ情報である場合には、インデックスの上位二桁の値がノードIDの上位二桁の値と一致するページ情報が担当範囲となる。次いで、制御部21は、現在参照しているページ情報の子ページ情報のうちどの子ページ情報が、決定した担当範囲内のページ情報であるか判断する。そして、制御部21は、担当範囲内であると判断したページ情報を指すリンク情報を取得する。
【0209】
次いで、制御部21は、次のページ情報へのリンク情報が存在するか否かを判定する(ステップS655)。つまり、制御部21は、次のページ情報へのリンク情報を取得することができたか否かを判定する。このとき、制御部21は、次のページ情報へのリンク情報が存在する場合には(ステップS655:YES)、ステップS652に移行する。このとき、制御部21は、取得したリンク情報を指定し、且つ、制御部21自身のノードNnのノードIDを検索キーとして指定して、ページ情報取得処理を実行する。
【0210】
ステップS653において、制御部21は、ファイルキャッシュ容量が、取得したページ情報に設定されている合計ファイルサイズ以上である場合には(ステップS653:YES)、取得したページ情報を頂点とするサブツリーに含まれる全てのページ情報を取得する(ステップS656)。ただし、頂点とするページ情報は、既にステップS652のページ情報取得処理で取得されているので、ステップS656における取得対象からは除かれる。ステップS656の処理では、サブツリーに含まれる各ページ情報を取得するために、夫々ページ情報取得処理が実行される。つまり、取得対象のページ情報を保存するファイルが記憶部22に記憶されていない場合に、この取得対象のページ情報が、センターサーバSA又は他のノードNnから取得される。
【0211】
制御部21は、ステップS656の処理を終えたとき、又は、ステップS655において次のページ情報へのリンク情報が存在しない場合には(ステップS655:NO)、担当ページ情報取得処理を終了させる。
【0212】
以上説明したように、本実施形態によれば、センターサーバSAの記憶部12が、一又は複数のレコードが格納された葉ページ情報を記憶する。また、記憶部12が、ルートページ情報の子ページ情報のメッセージダイジェストと、この子ページ情報のページ番号を含むリンク情報が格納されたルートページ情報を記憶する。また、記憶部12が、ルートページ情報以外の節ページ情報の子ページ情報のメッセージダイジェストと、この子ページ情報のページ番号を含むリンク情報が格納された節ページ情報を記憶する。また、記憶部12が、ルートページ情報のメッセージダイジェストと、ルートページ情報のページ番号と、ルートリンク情報の電子署名とが格納されたルートリンク情報を記憶する。また、記憶部12が、コンテンツ分散保存システムSに参加している複数のノードNnのうち少なくとも一部のノードNnのIPアドレスが登録されているルーティングテーブルを記憶する。また、制御部11が、葉ページ情報を新たに生成し、新たに作成した葉ページ情報の親ページ情報からルートページ情報までの各節ページ情報のページ番号及びメッセージダイジェストを更新する。また、制御部11が、更新した節ページ情報を含むページ情報配布メッセージをノードNnに送信する。
【0213】
従って、ノードNnは、ルートページ情報から葉ページ情報にかけて関連付けられた木構造のカタログ情報により、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができるカタログ情報を各ノードNnへ配布することができる。
【0214】
また、センターサーバSAの記憶部12が、ページ情報の担当範囲を示すノードIDが登録されたルーティングテーブルを記憶する。また、制御部11が、ページ情報配布メッセージの送信対象となるノードNnを、ルーティングテーブルに登録されているノードIDに基づいて決定する。そして、制御部11が、決定したノードNnにページ情報配布メッセージを送信する。
【0215】
従って、ノードNn毎に定められるページ情報の担当範囲に基づいて、ページ情報の送信対象となるノードNnが決定されるので、各ノードNnの記憶負担を低減しつつ、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができるカタログ情報を各ノードNnへ配布することができる。
【0216】
また、センターサーバSAの制御部11が、ルーティングテーブルに登録されているノードIDと、更新した節ページ情報に含まれるインデックスとに基づいて、更新した節ページ情報を担当範囲内のページ情報とするノードNnを決定する。
【0217】
従って、各ノードNnのノードIDに基づき、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができるカタログ情報を各ノードNnへ配布することができる。
【0218】
また、ノードNnの記憶部22が、コンテンツ分散保存システムSに参加している複数のノードNnのうち少なくとも一部のノードNnのIPアドレスとノードIDと対応付けて登録されているルーティングテーブルを記憶する。また、制御部21が、センターサーバSAから送信されたページ情報配布メッセージを受信し、記憶部22に記憶させる。また、制御部21が、ルーティングテーブルに登録されているノードIDと、受信したページ情報配布メッセージに含まれるページ情報に含まれるインデックスとに基づいて、節ページ情報の転送先となるノードNnを決定する。そして、制御部21が、決定したノードNnに、ページ情報配布メッセージを転送する。
【0219】
従って、各ノードNnのノードIDに基づき、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができるカタログ情報を各ノードNnへ配布することができる。
【0220】
[第2実施形態]
次に、本発明の第2の実施形態について、図18を用いて説明する。
【0221】
上記説明した第1実施形態においては、受信したページ情報配布メッセージに含まれるページ情報を担当するノードNnは、このページ情報をファイルとして保存するだけであった。以下、受信したページ情報配布メッセージに含まれるページ情報を担当するノードNnを、「担当ノード」という。これに対し、第2実施形態においては、担当ノードは、ページ情報を、自分に近い範囲に存在する一又は複数のノードNnに配布する。これにより、ページ情報は、これを担当するノードNnと、このノードNnに近い範囲に存在する一又は複数のノードNnが保持することとなる。ページ情報を必要とするノード装置から送信されたページ情報要求メッセージは、担当ノードに向けて転送される。ページ情報要求メッセージを受信したノードNnは、要求されたページ情報を担当するノードNnではなかったとしても、要求されたページ情報を保持していれば、このページ情報を要求元に送信することができる。よって、ページ情報の送信の負荷が分散され、担当ノードの負荷が低減される。
【0222】
ここで、担当ノードに近い範囲に存在するノードNnとは、例えば、担当ノードとノードIDの値の差が所定範囲内であるノードNnであったり、担当ノードとノードIDの上位所定数の桁の値が等しいノードNnであったりする。
【0223】
また、ページ情報の配布は、例えば、オーバーレイマルチキャストによって行われても良い。このオーバーレイマルチキャストとしては、例えば、特開2007−053662号公報にて開示されたDHTマルチキャストを適用することができる。この公報に開示されている方法では、ルーティングテーブルにノード情報が登録されているノードNnに情報が転送される。また、転送先のノードNnの範囲を制限する方法として、ターゲットノードIDとIDマスクとが用いられる。本実施形態において、担当ノードがページ情報を配布する場合には、ターゲットノードIDに担当ノード自身のノードIDを設定し、IDマスクに1以上の値を設定する。これにより、ページ情報の配布先を担当ノードに近い範囲に存在するノードNnに限定することができる。
【0224】
なお、コンテンツ分散保存システムS全体の構成及び動作概要、センターサーバSAの構成、及びノードNnの構成については、第1実施形態の場合と同様であるので、説明は省略する。また、センターサーバSAの動作についても、第1実施形態の場合と同様であるので、説明は省略する。更に、ノードNnの動作についても、以下に説明する処理を除いて第1実施形態の場合と同様であるので、説明は省略する。
【0225】
図18は、本実施形態に係るノードNnにおける制御部21の処理例を示すフローチャートである。なお、図18において、図14と同様の要素については同様の符号を付してある。図18に示す処理は、図14に示す処理と、ページ情報配布メッセージを受信した場合における処理のみが異なる。従って、その他の処理についての説明は省略する。
【0226】
ステップS514において、制御部21は、ページ情報配布メッセージを受信した場合には(ステップS514:YES)、このページ情報配布メッセージに含まれる情報をページ情報としてファイルに保存する(ステップS515)。
【0227】
次いで、制御部21は、担当範囲判断手段として、受信したページ情報配布メッセージに含まれるページ情報が制御部21自身のノードNnの担当範囲に含まれるか否かを判定する(ステップS519)。この判定は、例えば、ページ情報に設定されているインデックスと、制御部21自身のノードNnのノードIDとに基づいて行われる。例えば、ノードIDが、ページ情報に設定されている複数のインデックスの最小値から最大値の範囲内にある場合や、インデックスの値と一致する場合に、担当範囲に含まれると判断される。
【0228】
制御部21は、受信したページ情報が制御部21自身のノードNnの担当範囲に含まれる場合には(ステップS519:YES)、制御部21自身のノードNnに近い範囲に存在するノードNnに、保存したページ情報を含むページ情報メッセージを送信する(ステップS520)。具体的に、制御部21は、送信先決定手段として、制御部21自身のノードNnに近い範囲に存在するノードNnをルーティングテーブルから選択する。そして、制御部21は、ページ情報転送手段として、ページ情報メッセージを、選択したノードNnに向けてオーバーレイマルチキャストで配信する。制御部21は、この処理を終えると、ステップS502に移行する。
【0229】
ステップS519において、制御部21は、受信したページ情報が制御部21自身のノードNnの担当範囲に含まれていない場合には(ステップS519:NO)、受信したページ情報配布メッセージに含まれるページ情報を担当するのに制御部21自身のノードNnよりふさわしいノードNnが存在するか否かを判定する(ステップS516)。このとき、制御部21は、ふさわしいノードNnが存在する場合には(ステップS516:YES)、受信したページ情報配布メッセージに含まれるページ情報を担当するのに最もふさわしいノードNnに、ページ情報配布メッセージを転送する(ステップS517)。制御部21は、ステップS517の処理を終えたとき、又は、ステップS516において、受信したページ情報配布メッセージに含まれるページ情報を担当するのに制御部21自身のノードNnよりふさわしいノードNnが存在しない場合には、ステップS502に移行する。
【0230】
以上説明したように、本実施形態によれば、ノードNnの制御部21が、受信したページ情報配布メッセージに含まれるページ情報が制御部21自身のノードNnの担当範囲に含まれるか否かを、記憶部22に記憶されている制御部21自身のノードNnのノードIDに基づいて判断する。また、制御部21が、ルーティングテーブルに登録されているノードIDと、受信したページ情報配布メッセージに含まれるページ情報に含まれるインデックスとに基づいて、ページ情報配布メッセージに含まれるページ情報の送信先となるノードNnを決定する。そして、制御部21が、決定したノードNnに、ページ情報メッセージをオーバーレイマルチキャストで送信する。
【0231】
従って、レコードの改竄チェックもでき、レコードの検索処理の時間を減らすことができるカタログ情報を各ノードNnへ配布することができる。
【0232】
なお、上記各実施形態においては、センターサーバSAは、ページ情報を作成すると、このページ情報を担当すると思われるノードNnに向けてページ情報配布メッセージを送信していたが、配信先はこれだけに限られるものではない。例えば、ルートページ情報からの距離が所定の長さ以下のページ情報については、全ノードNnに配信されるようにしても良い。ここで、ルートページ情報からの距離とは、木構造において、根の位置から注目する節点に辿るまでのリンク数に相当する長さである。ページ情報は、ルートページ情報からの距離が短いページ情報であるほど、レコードを検索する際に参照される頻度が高くなる。従って、参照される頻度が相対的に高いページ情報については、最初から全ノードNnが保持するようにした方が、効率が良い場合がある。また、全ノードNnへ配信する場合、オーバーレイマルチキャストが用いられても良い。
【0233】
また、上記各実施形態においては、ファイルキャッシュ容量に応じて担当範囲が最終的に決まるようになっていたが、ファイルキャッシュ容量を考慮しなくても良い。この場合は、例えば、インデックスの上位所定数の桁の値が、ノードIDの上位所定数の桁の値と一致するページ情報を担当範囲としても良い。
【0234】
また、上記各実施形態においては、ノードNnがレコードを検索する際、ノードNn自身が保持していないページ情報を、コンテンツサーバSA又は他のノードNnから取得し、取得したページ情報を参照して、自らが検索を行うようにしていた。しかし例えば、ノードNnは、ノードIDから必要なページ情報を保持していると思われる他のノードNnにレコードの検索をリクエストしても良い。この場合は、リクエスト先のノードNnが、保持しているページ情報を検索し、検索結果としてのレコードをリクエスト元のノードNnに送信する。また、リクエスト先のノードNnは、必要なページ情報を保持していない場合には、検索のリクエストを更に他のノードNnに転送する。この転送は、ページ情報要求メッセージの転送と同様である。
【0235】
また、上記各実施形態においては、本発明に係る管理装置を、ピアツーピアシステムにおけるサーバ装置に適用していたが、例えば、クライアント−サーバシステムにおけるサーバ装置に適用しても良い。
【0236】
また、本発明は、コンテンツカタログ情報の検索に限定されるものではない。汎用的なデータベースのレコードとインデックスとしても適用可能である。
【符号の説明】
【0237】
3 IX
4a、4b ISP
5a、5b DSL回線業者の装置
6 FTTH回線業者の装置
7 通信回線
8 ネットワーク
9 オーバーレイネットワーク
11 制御部
12 記憶部
13 通信部
14 表示部
15 入力部
16 バス
21 制御部
22 記憶部
23 バッファメモリ
24 デコーダ部
25 映像処理部
26 表示部
27 音声処理部
28 スピーカ
29 通信部
30 入力部
31 バス
Nn ノード
SA センターサーバ
S コンテンツ分散保存システム

【特許請求の範囲】
【請求項1】
一又は複数のレコードを含み、且つ、木構造における葉に位置する葉ページ情報と、
前記木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、 前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報と、
前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報と、
を含む複数のページ情報を木構造として、前記根ページ情報から前記葉ページ情報にかけて関連付けて記憶し、
前記根ページ情報のシリアル番号と、前記根ページ情報の改竄防止をチェックするための改竄チェック情報とを含むルートリンク情報であって、当該ルートリンク情報の改竄をチェックするための電子署名と、を含む前記ルートリンク情報を記憶するページ情報記憶手段と、
前記葉ページ情報を生成する葉ページ情報生成手段と、
前記葉ページ情報生成手段により生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の生成に基づいて更新する更新手段と、
複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報を記憶するアドレス情報記憶手段と、
前記ネットワークを介して、前記更新手段により更新された前記ページ情報を前記ノード装置に送信するページ情報送信手段と、
を備えることを特徴とする管理装置。
【請求項2】
所定のルールに従ってノード装置毎に定められるページ情報の担当範囲を示す担当範囲情報を記憶する担当範囲情報記憶手段と、
前記更新手段により更新されたページ情報の送信対象となるノード装置を前記担当範囲情報記憶手段に記憶された担当範囲情報に基づいて決定する送信先決定手段と、を備え、
前記ページ情報送信手段は、前記更新手段により更新されたページ情報を、前記決定されたノード装置に送信することを特徴とする請求項1に記載の管理装置。
【請求項3】
前記アドレス情報記憶手段には、各前記ノード装置のアドレス情報に対応付けられて当該各ノード装置に割り当てられた固有の識別情報が記憶されており、
前記送信先決定手段は、前記アドレス情報記憶手段にアドレス情報が記憶されたノード装置の前記識別情報と、前記更新手段により更新されたページ情報に含まれるインデックス情報とに基づいて、前記更新されたページ情報を前記担当範囲のページ情報とするノード装置を決定することを特徴とする請求項2に記載の管理装置。
【請求項4】
請求項1乃至3の何れか一項に記載の管理装置の前記ページ情報送信手段から送信された前記ページ情報を受信するページ情報受信手段と、
前記ページ情報受信手段により受信されたページ情報を記憶するページ情報記憶手段と、
複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報と、当該各前記ノード装置に割り当てられた固有の識別情報とを対応付けて記憶するアドレス情報記憶手段と、
前記アドレス情報記憶手段にアドレス情報が記憶された前記ノード装置の識別情報と、前記ページ情報受信手段により受信されたページ情報に含まれるインデックス情報に基づいて、前記受信されたページ情報を送信するノード装置を決定する送信先決定手段と、
前記ページ情報受信手段により受信されたページ情報を、前記ネットワークを介して、前記送信先決定手段により決定されたノード装置に転送するページ情報転送手段と、
を備えることを特徴とするノード装置。
【請求項5】
所定のルールに従ってノード装置毎に定められるページ情報の担当範囲を示す担当範囲情報を記憶する担当範囲情報記憶手段と、
前記ページ情報受信手段により受信されたページ情報が、前記担当範囲情報記憶手段に記憶された担当範囲情報に示される担当範囲内のページ情報であるか否かを判断する担当範囲判断手段と、
前記担当範囲判断手段により前記ページ情報が担当範囲内のページ情報であると判断された場合に、前記送信先決定手段は、前記アドレス情報記憶手段にアドレス情報が記憶された前記ノード装置の識別情報と、前記ページ情報受信手段により受信されたページ情報に含まれるインデックス情報に基づいて、前記受信されたページ情報を送信するノード装置を決定し、
前記ページ情報転送手段は、前記担当範囲判断手段により前記担当範囲内のページ情報であると判断されたページ情報を、前記ネットワークを介して、前記送信先決定手段により決定されたノード装置に転送することを特徴とする請求項4に記載のノード装置。
【請求項6】
一又は複数のレコードを含み、且つ、木構造における葉に位置する葉ページ情報と、
前記木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報と、
前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報と、
を含む複数のページ情報を木構造として、前記根ページ情報から前記葉ページ情報にかけて関連付けて記憶し、
前記根ページ情報のシリアル番号と、前記根ページ情報の改竄防止をチェックするための改竄チェック情報とを含むルートリンク情報であって、当該ルートリンク情報の改竄をチェックするための電子署名と、を含む前記ルートリンク情報を記憶するページ情報記憶ステップと、
前記葉ページ情報を生成する葉ページ情報生成ステップと、
前記葉ページ情報生成ステップにより生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の生成に基づいて更新する更新ステップと、
複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報を記憶するアドレス情報記憶ステップと、
前記ネットワークを介して、前記更新ステップにより更新された前記ページ情報を前記ノード装置に送信するページ情報送信ステップと、
をコンピュータに実現させるためのページ情報送信プログラム。
【請求項7】
請求項1乃至3の何れか一項に記載の管理装置の前記ページ情報送信手段から送信された前記ページ情報を受信するページ情報受信ステップと、
前記ページ情報受信ステップにより受信されたページ情報を記憶するページ情報記憶ステップと、
複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報と、当該各前記ノード装置に割り当てられた固有の識別情報とを対応付けて記憶するアドレス情報記憶手段にアドレス情報が記憶された前記ノード装置の識別情報と、前記ページ情報受信ステップにより受信されたページ情報に含まれるインデックス情報に基づいて、前記受信されたページ情報を送信するノード装置を決定する送信先決定ステップと、
前記ページ情報受信ステップにより受信されたページ情報を、前記ネットワークを介して、前記送信先決定ステップにより決定されたノード装置に転送するページ情報転送ステップと、
をコンピュータに実現させるためのノードプログラム。
【請求項8】
一又は複数のレコードを含み、且つ、木構造における葉に位置する葉ページ情報と、
前記木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、 前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報と、
前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報と、
を含む複数のページ情報を木構造として、前記根ページ情報から前記葉ページ情報にかけて関連付けて記憶し、
前記根ページ情報のシリアル番号と、前記根ページ情報の改竄防止をチェックするための改竄チェック情報とを含むルートリンク情報であって、当該ルートリンク情報の改竄をチェックするための電子署名と、を含む前記ルートリンク情報を記憶するページ情報記憶ステップと、
前記葉ページ情報を生成する葉ページ情報生成ステップと、
前記葉ページ情報生成ステップにより生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の生成に基づいて更新する更新ステップと、
複数のコンテンツデータを、複数のノード装置に分散して保存させ、前記複数のノード装置がネットワークを介してコンテンツデータを送受信可能なコンテンツ分散保存システムを構成する前記複数のノード装置のうち少なくとも一部のノード装置の前記ネットワーク上のアドレス情報を記憶するアドレス情報記憶ステップと、
前記ネットワークを介して、前記更新された前記ページ情報を前記ノード装置に送信するページ情報送信ステップと、
を含むことを特徴とするページ情報送信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2010−262457(P2010−262457A)
【公開日】平成22年11月18日(2010.11.18)
【国際特許分類】
【出願番号】特願2009−112336(P2009−112336)
【出願日】平成21年5月1日(2009.5.1)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】