(57)【要約】      （修正有）【課題】ユーザがネットワーク上で特定のソースを捜したり識別したりしなくてもデータベースからユーザにデータを伝送できる。【解決手段】多くのサイロは、自動的にネットワークを介してブロードキャストされるデータリクエストおよびデータ自身を監視する。データリクエストが受け取られると、各サイロはリクエストされたデータの全てまたは部分を有しているか否かを確かめ、データを有している場合にはリクエストに対して応答する。データのリクエストは、要求されたデータファイルの暗号ハッシュデータ識別子をブロードキャストすることによって実施される。データ識別子は、どのデータを受け取り、格納すべきかを決定するためにサイロによって用いられる。【選択図】図２
2007012077.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュータ及び第２のコンピュータを含むコンピュータシステムにおいて、前記第１のコンピュータによるディジタルアセットの格納を管理する方法であって、
前記第１のコンピュータにより行われ、
（Ａ）  前記第１のコンピュータにおいて前記ディジタルアセットを含む通信を受信する動作、
（Ｂ）  前記ディジタルアセットが前記第１のコンピュータにより格納されているかどうかを判定する動作、
（Ｃ）  前記ディジタルアセットが前記第１のコンピュータにより格納されていないと判定されたとき、前記ディジタルアセットのコピーを格納する動作を備える方法。
【請求項２】
請求項１に記載の方法であって、
前記第１のコンピュータにより行われ、
（Ｄ）前記ディジタルアセットが前記第１のコンピュータにより格納されていると判定されたとき、前記動作（Ａ）における通信の受信に応答して前記第１のコンピュータが前記ディジタルアセットの複製を格納することを見送る動作を更に備える方法。
【請求項３】
請求項１に記載の方法において、前記第１のコンピュータはネットワークを介して前記第２のコンピュータに接続され、前記動作（Ａ）は、前記ディジタルアセットを含む通信について前記ネットワークを監視する動作を含む、方法。
【請求項４】
請求項１に記載の方法において、前記第１のコンピュータは、コンテンツをアドレス可能なストレージを提供する、方法。
【請求項５】
請求項４に記載の方法において、前記通信は、前記ディジタルアセットのコンテンツに少なくとも部分的に基づくディジタルアセット識別子を含み、前記動作（Ｂ）は、前記アセット識別子と前記第１のコンピュータにより格納されたディジタルアセットの組を特定するアセット識別子の組とを比較する動作を含む、方法。
【請求項６】
請求項１に記載の方法において、前記第１のコンピュータはサイロである、方法。
【請求項７】
請求項１に記載の方法において、前記第１のコンピュータは前記第２のコンピュータに接続され、前記動作（Ａ）は前記第２のコンピュータから通信を受信する動作を含む、方法。
【請求項８】
請求項１に記載の方法において、前記第１のコンピュータはファイルサーバである、方法。
【請求項９】
請求項１に記載の方法において、前記第１のコンピュータは記憶装置である、方法。
【請求項１０】
請求項１に記載の方法において、前記コンピュータシステムは前記第１及び第２のコンピュータに加えて複数のコンピュータを含み、前記複数のコンピュータは少なくとも一つのネットワークにより相互接続され、前記複数のコンピュータの各々は一以上のディジタルアセットの格納を管理する、方法。
【請求項１１】
請求項１に記載の方法において、前記第１及び第２のコンピュータは少なくとも一つのネットワークにより接続されたピア・コンピュータである、方法。
【請求項１２】
請求項１に記載の方法において、前記動作（Ｃ）は前記ディジタルアセットを前記第１のコンピュータに格納する動作を含む、方法。
【請求項１３】
請求項１に記載の方法において、前記動作（Ｃ）は前記ディジタルアセットを前記第１のコンピュータによって管理された記憶装置に格納する動作を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、ネットワーク上において、コンテンツをアドレス可能なデータへのアクセスを容易にするための、方法および装置に関する。本発明は特に、ネットワーク上をブロードキャストされるデータリクエストを監視し、リクエストされたデータをブロードキャストして返信する、デジタル情報記憶装置に関する。
【背景技術】
【０００２】
典型的なネットワーク構成において、ファイルは、クライアントのマシンからサーバに対してリクエストされる。インターネットまたはイントラネットは、クライアント／サーバモデルまたは類似の方式に基づいて作動するものがほとんどである。クライアントは、先ず要求ファイルがどこで見つけられるかを知ってから、その要求データを提供できるサーバに対してリクエストを送信しなければならない。クライアントが、クライアント／サーバ環境におけるファイル名および場所を知っている必要があるため、その名または場所が変わった場合や、異なるデータが同名で記憶されている場合などに、問題が生じる。このような方式のもう１つの欠点は、クライアントが、データをどこで見つけられるのかを知っているか、またはデータを何らかの方法で検索してその場所を見つけられなければならないことである。この問題は、デスクトップ、ワークステーション等の各種コンピュータ、ＤＯＳ、ウィンドウズ、ＵＮＩＸ等の各種オペレーティングシステム、ＬＡＮ、ＷＡＮ等のネットワークの間で偏在して見られる。この問題はまた、ファイルとして記憶されない他のディジタルアセットや、ビデオクリップ、画像の断片、データベース記録等の、実体として作成および管理され且つユニークなファイルとして記録されることはないアセットにも及ぶ。場所の参照が必要な場合には、ディジタルアセットの発見、トラッキング、および引き出しがいっそう脆弱となる。
【０００３】
時には、データが１つ以上のサーバから使用可能な場合もある。たとえクライアントが、データを見つけられる場所を知っていたとしても、可能性のあるソースのうちどのソースのデータが最良であるのか決定することは、一般に不可能である。これらの欠点から、クライアントがネットワーク上でデータへのブロードキャスト・リクエストを送信すると、そのネットワーク上で最良なデータソースが自動的にリクエストに応じるような、データアクセス方法の形成が望まれていることがわかる。このようなシステムでは、リクエストを満足するデータソースの決定にデータリクエスト自体を使用するため、データを提供するサーバを探す必要を省くことができる。
【０００４】
従来のクライアント／サーバ環境に見られるもう１つの特徴は、何らかの方法でデータを選択してサーバ上に配置し、クライアントが使用できるようにする必要があることである。多数のクライアントが必要とすると思われるデータを自動的に識別し、クライアントが効率的に使用できるような場所に記憶することが望まれる。
【０００５】
クライアントマシンが続々と追加され膨張を続けるネットワーク環境では、個別のサーバがデータリクエストに圧倒され、満足な応答時間を提供できない状態に至る恐れがある。従来のクライアント／サーバ環境は、既存のサーバからクライアントの一部を取り除き、新たに追加したサーバに割り当て、既存のサーバにかかる負担を軽減する方法を採る。このような環境では、クライアントの接続を一群のサーバのなかから割り当てるために、多くの方法が編み出された。これらの方法は、負担のバランスという点ではある程度の成功をおさめた。クライアントへの最も効率的なデータ伝送の方法次第で、データをリクエストする個別のクライアントに１つ以上のサーバが対応できるようにするためには、異なる複数のサーバが同一のクライアントに提供することができるようなシステムが、編み出されると便利であろう。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上からわかるように、記憶するべきデータをデータベースが自動的に識別でき、ユーザがネットワーク上で特定のソースを捜したり識別したりしなくてもデータベースからユーザにデータを伝送できるような、技術が望ましい。このようなユーザへのデータ伝送は、ネットワーク上をブロードキャストする一般のユーザリクエストに応えて生じることが望ましい。また、特定の状況下のクライアントは、ネットワーク上でなされるデータリクエストに対し、データ競合を生じたりクライアントのローカル処理を不当に妨害したりすることなく応答できることが、さらに望ましい。
【課題を解決するための手段】
【０００７】
したがって、ネットワーク上におけるデータへのアクセスを改良するための、システムおよび方法が開示される。「サイロ」と呼ばれている数多くのデータ・レポジトリは、データリクエストおよびネットワークを介してブロードキャストされたデータそのもの、の双方を自動的に監視する。サイロは、データを選択的に格納する。各サイロは、データがサイロによって先に傍受されたか否かに関わらず、ネットワークを介したデータリクエストのブロードキャストに対して応答することができる。データリクエストが受信されると、各サイロは要求されたデータの全てを有しているか、あるいは、要求されたデータの一部を有しているかを確認し、データを有している場合には、リクエストに対して応答する。
【０００８】
データは、（レコードまたはオブジェクトを表す）バイナリデータの断片、より大きなデータベースレコードまたは（ビデオまたはオーディオクリップ、ディジタルイメージ等の）マルチメディアオブジェクト、および単純なテキストから複雑なデータベースまでの全てを表すファイルを含む非常に多くの形式で出現する。アプリケーションおよびユーザーは、様々な複雑さのレベルでますますデータと相互作用し、これらの個々のアセットは全て重要であると共に有用である。本システムは、任意のバイナリ・シーケンスを有効なデータとして取り扱い、また、ディジタル・アセットあるいは単純にアセットとみなす。アセットは、本発明がアセットを受け取り、アセットをバイナリ形式で人間、アプリケーション、あるいは、ネットワークデバイスのユーザに対してリターンすることができるような方法で取り扱われる。
【０００９】
サイロは先ずネットワークを介して送信されるアセット・リクエストを監視する。これらのリクエストは、要求された各アセットについての各アセットのコンテンツ（バイナリ・シーケンス）から演算されたアセットコンテント識別子を含む。アセットコンテント識別子は、アセットコンテンツの暗号ハッシュを利用して演算されることが好ましい。サイロは、要求アセットのアセットコンテント識別子を、サイロが取得を望むアセットのリストに加える。サイロは、アセットが他のネットワークデバイスから送信された時に、アセットのブロードキャストを受信することによって、あるいは、サイロ上で作動しているインポータ（アセットのコピーを能動的に要求するソフトウェア）を使用するアセットを要求またはインポートすることによって、これらのアセットをネットワークから取得する。
【００１０】
このスキームを利用することにより、全てのクライアントが、データを有する特定のサーバにアクセスする必要なく、データはネットワーク上のクライアントに格納されると共に利用可能とされる。データが選択され、特定のサーバに格納される必要はない。また特定のサーバのアドレスが知らされている必要もない。むしろ、ネットワーク上のサイロは、ネットワークを横断するデータを監視し、どのデータが格納されるべきかを決定し、ネットワーク上のクライアントにとってデータを容易に利用可能にする。既述のスキームは、分散型データストレージを備える真のサーバレスネットワークを提供する。ユニークなアセットコンテント識別子が用いられるので、アセットは任意のロケーションから取得され、また、コンテンツの完全性は、アセットのハッシュを再演算し、サイロ内に格納されているアセットコンテント識別子と比較することによって確実に確認され得る。
【発明を実施するための最良の形態】
【００１１】
本発明の好適な実施例について詳細に説明する。好適な実施例の一例は添付の図面に記載されている。以下に、本発明を好適な実施例を伴って説明するが、かかる好適な実施例に本発明を限定することを意図するものではないことは理解されるべきである。逆に、添付の請求の範囲によって定義される本発明の趣旨および範囲に含まれ得る置換物、改良物、等価物を含むことが意図される。例えば、理解を容易にするために、多くの図面は伝統的なコンピュータファイルを用いて本発明の使用法を説明している。しかしながら、既述のように、本発明は任意のディジタルアセット、あるいは、バイナリシーケンスを用いた使用法に適している。
【００１２】
以下の説明において、本発明の容易な理解を提供するために特定の詳細な記述がなされている。本発明は、これら特定の詳細な記述の全てあるいはいくつかを伴うことなく実施され得る。さらに、本発明を不必要に不明瞭としないために、周知の処理操作については詳細に説明しない。
【００１３】
概観
図１は、任意の数のクライアント１０２〜１１０を含むネットワーク１００を示すブロック図である。「クライアント」の用語は、ネットワークからの情報の要求者であるクライアントの意味で用いられる。デバイスが情報を提供することができると共に情報を要求して受け取ることができる場合には、任意のネットワークデバイスが同時にクライアントおよびサーバとして機能し得ることは理解されるべきである。本明細書中で用いられるように、「クライアント」の用語は、所定の時間にたまたま情報を要求するデバイスを説明するために用いられ、「サーバ」の用語は、所定の時間にたまたま情報を提供するデバイスを説明するために用いられる。
【００１４】
図１に示すアーキテクチャは、従来のサーバを除外したアーキテクチャである。（従来技術における）クライアントによってサーバのアドレスに明確に送信された情報に関するクライアントのリクエストの受け取りおよび実行に専用化されたサーバの代わりに、ネットワーク１００はデータレポジトリサイロ１２０、１２２を有している。サイロは、一般的に、標準的なクライアントマシンとして構成され得る。例えば、サイロは、ユーザのワークステーション上、共有アセットまたは共有プリントサーバシステム上、アプリケーションサーバ上、あるいは、この能力を適用するために特に用意されたシステム上で実施され得る。
【００１５】
サイロ１２０、１２２は、ネットワーク上の情報についてのブロードキャストまたは「マルチキャスト」リクエストを監視すると共に、以下に詳述するスキームの内の１つに従って要求された情報を選択的に格納する。「マルチキャスト」伝送は、ネットワーク上の利用可能な全てのピアに対してアドレスされている１つのピアからの伝送である。同様にして、マルチキャストリクエストは、ネットワーク上の利用可能な全てのピアに対して送られたリクエストである。ピアは、定義済みマルチキャストグループ、特定のネットワークまたはソフトウェアフィルタ設定により区別された選択グループに含まれる任意のデバイスを含み、マルチキャストグループは、データリンク上でアクセス可能な任意のデバイスを含み得る。なお、本明細書中においては、ブロードキャストの用語はマルチキャストを含めて用いられる。
【００１６】
サイロはまた、情報がサイロ上に格納されている場合には、情報のリクエストに対して応答する。以下に詳述するとおり、新規のサイロは、追加の情報ストレージを提供すると共に、シリアル方式またはパラレル方式のいずれか一方にて検索するためにネットワークに加えられ得る。すなわち、サイロは、他のサイロに格納されていない情報を格納するために、あるいは、他のサイロと同一の情報を格納するために加えられ得る。各サイロは情報リクエストに対する応答付加を共有するために構成され得る。
【００１７】
図２は、アセットがｅ−ＣＬＩＰ送信装置２０２から２つの受信装置２１２、２３２に送信されるとき、効率的な方法でサイロ２２２が情報を格納するためにどのように用いられ、情報を転送するためにどのように用いられるかを示すブロック図である。図示の例では、アセット送信装置は、ｅ−ＣＬＩＰ（商標）を用いてアセットを送る。ｅ−ＣＬＩＰは、ディジタル情報の収集のための再生可能で確実なユニークな識別子である。１つの実施例では、ｅ−ＣＬＩＰは数に関する符合である。ｅ−ＣＬＩＰは、アセット、アセットのグループ、アセット識別子のグループ、あるいは、データまたはデータベース情報の他の集合を表し得る。ある実施例では、ｅ−ＣＬＩＰは米国特許出願（代理人整理番号ＷＲＳＨＰ００２）および米国仮出願６０／０７２，３１６に記載されているように実施され得、両米国出願は参照することにより本明細書中に引用される。単一のアセットを表すとき、ｅ−ＣＬＩＰは、アセットのコンテンツに対して暗号化ハッシュ関数を適用することによって生成されるアセットコンテント識別子を含む。
【００１８】
ｅ−ＣＬＩＰはまた、任意の数のアセットを表し得る。ｅ−ＣＬＩＰはまたアセットのリストを識別したか、あるいは、単一のアセットだけを識別したかを表示するフラグを含み得ることに留意すべきである。ｅ−ＣＬＩＰが複数のアセットを表すとき、暗号化ハッシュ関数は、各アセットについてアセットコンテント識別子を生成するためにアセットのそれぞれのコンテンツに適用される。一旦、選択されたアセットのそれぞれについてアセットコンテント識別子が生成されると、記述子ファイル中に他の関連情報と共にアセット・リストが含まれる。記述子ファイルの一例が図５に示されている。記述子に含まれる他のアセット情報には、以下に説明するように、ファイルがどこに位置するかについてのディレクトリ情報、含まれている各ファイルのファイル名、ファイルサイズおよび日付スタンプ、それらファイルの所有権、および他のメタデータが含まれ得る。
【００１９】
記述子ファイルは、初めはファイルでなく、ユニークなファイルを生成するために用いられ得ないバイナリアセットの同様な記述を含み得る。これらアセットは、レコード、エレメント、あるいは、大きなシーケンスまたは集合のクリップであるバイナリシーケンスを表す。これらのアセットは、適当に設計されたバイナリインターフェースを通じて処理するために、ファイルに対するとの同様な方法で取り扱われると共に、それらのユーザに対してリターンされる。
【００２０】
記述子ファイルはまた、ファイルリストのコンテキストまたはインプリケーションに関するデータ、ファイルリストが生成されるための目的、あるいは、他の情報を含み得る。
記述子ファイルは、コンピュータシステムのタイプ、あるいは記述子ファイルが存在する他の環境にとって好適なフォームでディジタルファイルに格納される。そして、格納された記述子ファイルのための暗号ハッシュファイル識別子（アセットコンテント識別子）が演算され、１つの実施例では、それによって収集されたファイルが参照され、発見され、確認され得るｅ−ＣＬＩＰとなる。ファイルの集合を識別するｅ−ＣＬＩＰは、記述子ファイル内で名付けられ、列挙された個々のアセットのためのアセットコンテント識別子を演算するために用いられるアルゴリズムと同一のアルゴリズムによって生成され得ることは認識されるべきである。他の実施例では、記述子ファイルから演算されるアセット識別子は、ｅ−ＣＬＩＰを形成するために、（ファイルロケータ等の）他の情報と組み合わせられる。
【００２１】
このアセット識別システムは、アセットが、実際上、あるアセットコンテント識別子と一致するアセットであることを確認するための信頼性の高い方法を提供する。確認は、アセットコンテンツと独立して変更され得る、ファイル名、日付、位置、あるいは、他の任意のラベルに依存しない。アセットコンテント識別子を生成するために用いられる暗号化ハッシュ関数は、アセットのコンテンツ（あるいは、オリジナルなアセットであると信じられる情報）に対して任意の時間に適用され得、そして、アセットとアセットコンテント識別子間の一致が確認され得る。このアプローチの完全性は、アセットコンテント識別子を生成するために用いられる暗号化ハッシュ関数の強度に基づいている。例えば、好適な実施例で用いられるＭＤ５アルゴリズムは、他のシーケンスとどれほど似ているか、あるいは、どれほど異なっているかに拘わらず、任意のバイナリシーケンスについてユニークなアセットコンテント識別子を事実上保証するために用いられ得る。例えば、同一のＭＤ５ダイジェストを有する２つのアセットは、同一のバイナリシーケンス（コンテンツ）を有すると推測され得、異なるＭＤ５ダイジェストを有する２つのアセットは、異なるバイナリシーケンスを有するもとの推測され得る。
【００２２】
サイロは、最初に監視ファイルリクエストをネットワーク上に送出することによって、このアセットコンテント識別スキームシステムと共に機能するように調整される。これらのリクエストは、要求された各ファイルについてのアセットコンテント識別子を含む（これらのファイルコンテント識別子は上述のようにして演算されたことが好ましい）。サイロは、要求アセットのアセットコンテント識別子を、サイロが取得することを望むアセットのリストに加える。サイロは、他のネットワークデバイスによって転送された時にアセットのブロードキャストを受け取ること、あるいは、サイロ上で動作しているインポータを使用するアセットをリクエストまたはインポートすることのいずれかによって、これらのアセットをネットワークから取得する。インポータは、好ましくはＪＡＶＡプログラム言語、あるいは他の好適な言語でエンコードされた小さなプログラムである。
【００２３】
図示の例では、ｅ−ＣＬＩＰ送信装置２０２は、ｅ−ＣＬＩＰを第１ｅ−ＣＬＩＰ受信装置に送信する。ｅ−ＣＬＩＰは、ユニークに記述子ファイルを識別する記述子ファイル識別子を含み、記述子ファイルは、ｅ−ＣＬＩＰ送信装置が第１ｅ−ＣＬＩＰ送信装置に対して転送すること、あるいは、サイロ内または今後の参照のために複数のサイロ上に格納することを望むディジタルアセット（ファイル、あるいは、データベース・レコード、ビデオクリップ、グラフィックイメージ、オーディオクリップ、または他のディジタルデータといったバイナリシーケンス）のリストを含んでいる。この時点で、ｅ−ＣＬＩＰ受信装置２１２は、記述子ファイルを未だ有しておらず、記述子ファイルをユニークに識別する記述子ファイル識別子のみを有している。記述子ファイル識別子は、記述子ファイルの暗号ハッシュであることが好ましい。ｅ−ＣＬＩＰ（および含まれている記述子ファイル識別子）を受け取ると、第１ｅ−ＣＬＩＰ受信装置は、ｅ−ＣＬＩＰ内に備えられている記述子ファイル識別子を送信することによって、ネットワークを介して記述子ファイルについてのブロードキャスト・リクエストを送信する。一旦、受信装置２１２が記述子ファイルを受け取ると、受信装置は、そのリスト中に列挙されているアセットをリクエストすることができる。記述子ファイルについてのブロードキャスト・リクエストは、ｅ−ＣＬＩＰ送信装置２０２およびサイロ２２２の双方によって受け取られる。
【００２４】
記述子ファイルについてのリクエストを受け取ると、サイロ２２２は未だ記述子ファイル（すなわち、アセット・リストを含む記述子ファイル）を有していないことを決定する。そして、受信記述子ファイル識別子をそのサイロ・リクエスト・リストに加える。記述子ファイル識別子は、記述子ファイルの識別子であることを示すフラグビットを用いて記録されることが好ましい。したがって、サイロは記述子ファイル識別子をそのサイロ・リクエスト・リストに自動的に追加する。ある実施例では、サイロは記述子ファイル識別子をそのサイロ・リクエスト・リストに対して直ちに追加せず、サイロ・リクエスト・リストに追加する前にネットワーク上に一定回数リクエストされた記述子ファイル識別子を確認するまで待機する。これにより、サイロは、共通にリクエストされたアセットまたは記述子ファイルだけを格納することができる。アセットもまた、一定の環境においてのみ格納され得る。例えば、アセット・リクエストは、優先分配、または、重要アセットについてフラグされ得る。
【００２５】
他の実施例では、アセット・リクエストは、要求アセットが記述子ファイルを識別する記述子ファイル識別子を使用することを表すｅ−ＣＬＩＰの形式を採り得る。サイロは、全てのそのような記述子ファイル識別子を自身のサイロ・リクエスト・リストに直ちに追加するように構成され得る。記述子ファイルが取得されると、サイロは、記述子ファイル中に列挙されているアセットコンテント識別子を自身のサイロ・リクエスト・リストに追加する。この方法では、サイロはｅ−ＣＬＩＰを表すアセットを見つけだし、格納するように配置される。
【００２６】
アセットは、削除されるべきアセットについてのアセットコンテント識別子をブロードキャストすることにより、削除のために指定され得ることも重要なことである。一つの実施例では、削除されるべきアセットが列挙されている特別ファイルリストがサイロおよびクライアントに対してブロードキャストされる。この方法では、冗長なアセット、古いアセット、または、置換されたアセットは、削除され得る。ある実施例では、フラグは、削除されるべきアセットを識別するためにブロードキャストアセット・リクエストに含まれ得る。これらのフラグはまた、アセットがコンピュータシステム内で実行されているどのアプリケーションによっても要求されていないかどうかといった一定の条件が満たされた場合にだけ削除されるべきアセットを識別し得る。さらに、アセットは、後の削除のために、特別な順序で、他の従属ファイルの削除を受けて、あるいは、他の条件に基づいてフラグされ得る。
【００２７】
一旦、サイロ２２２が記述子ファイル識別子を自身のサイロ・リクエスト・リストに追加すると、サイロはブロードキャストネットワークトラフィックを監視し、記述子ファイル（または、記述子ファイル識別子に対応する記述子ファイル）の自身のストレージへの追加を試行する。本文脈中におけるストレージは、暗号ハッシュファイルコンテント識別子を利用する瞬時検索を最適化する方法でアセットを格納するために確保されたローカルメモリの領域である。ｅ−ＣＬＩＰを受信した後、および、ｅ−ＣＬＩＰ内で識別されたアセットについての要求を送信した後、第１ｅ−ＣＬＩＰ受信装置もまた、送信されている場合に記述子ファイルを受信するためにブロードキャスト・トラフィックを監視する。記述子ファイルは、ｅ−ＣＬＩＰ送信装置が記述子ファイルについてのリクエストを受信し（受信装置２１２からブロードキャストされた記述子ファイル識別子を経由して）、それに対してネットワークを介して記述子ファイルをブロードキャストすることにより応答するときに送信されることが好ましい。
【００２８】
記述子ファイルがブロードキャストされると、サイロおよび第１ｅ−ＣＬＩＰ受信装置は共に記述子ファイルを受け取る。上述のように、記述子ファイルは、アセットコンテント識別子のリストであり、それぞれは要求ファイルまたは他のディジタルアセットをユニークに識別する。記述子ファイルは、サイロによって以前に確認され、自身のサイロ・リクエスト・リストに追加された記述子ファイル識別子と一致するので、サイロは格納する記述子ファイルを知っている。すなわち、サイロは新たな記述子ファイル識別子を生成するために受信済み記述子ファイルについての暗号化ハッシュ関数を再演算し得る。この新たな識別子が元の記述子ファイル識別子と同一の場合には、肯定的な確認が存在する。
【００２９】
既述の通り、サイロは全ての識別子を自身のサイロ・リクエスト・リストに追加し得ると共に、ある特別の条件に従う識別子だけを追加し得る。条件は、アセットについて確認されたリクエスト数、優先フラグ、受信順序、およびアセットをリクエストするクライアントの識別情報を含む。サイロは、用いられるスキームに従ってリストからの個々のアセットを自身のサイロ・リクエスト・リストに追加するか否かを決定する。この例として、サイロ２２２が受信済みリストから少なくともいくつかのアセットを直ちに自身のサイロ・リクエスト・リストに追加するように構成されていると仮定する。したがって、これらのアセットについてのアセットコンテント識別子は、サイロ・リクエスト・リストに追加される。
【００３０】
アセットコンテント識別子に対指定を含む記述子ファイルを受け取った後、第１ｅ−ＣＬＩＰ受信装置２１２は、アセットコンテント識別子をブロードキャストすることにより、記述子ファイル中のアセットについてのリクエストをネットワークを介してブロードキャストする。ファイルリスト中のアセットについてのリクエストは、サイロおよびｅ−ＣＬＩＰ送信装置の双方によって受け取られる。記述子ファイル中のアセットについてのリクエストを受け取ると、サイロは、アセットまたはアセットの断片を格納済みの場合、リクエストに応答することができる。サイロがアセット・リクエストに対して応答するか否かを決定する過程は図７に詳細に記載されている。
【００３１】
この例示では、サイロは、第１ｅ−ＣＬＩＰ受信装置によってリクエストされたいかなるアセットをも有しておらず、サイロはリクエストに対して応答できないものとする。ブロードキャスト・トラフィックを監視することにより、ｅ−ＣＬＩＰ送信装置は、リクエストがサイロによって返答されなかったと判定することができる。ｅ−ＣＬＩＰ送信装置は、第１ｅ−ＣＬＩＰ受信装置に対して転送されるべきアセットについてのリクエストに対して自身が応答すべきだと決定する。それがアセットを有している場合には、ｅ−ＣＬＩＰ送信装置は、アセットをブロードキャストし、アセットは、サイロおよびｅ−ＣＬＩＰ受信装置の双方によって受け取られる。サイロは、サイロ・リクエスト・リストに含まれているそれらのアセットを自身のストレージに追加する。
【００３２】
アセットが送信装置によってネットワークを介してブロードキャストされるとき、サイロに要求記述子ファイルを傍受させ、記述子ファイル中のアセットを自身のサイロ・リクエスト・リストに追加させ、それらのアセットをメモリ中に格納させることは有益である。特に、（ローカルネットワーク上に存在しないリモートシステム足り得る）ｅ−ＣＬＩＰ送信装置が同一のｅ−ＣＬＩＰを第２ｅ−ＣＬＩＰ受信装置に送信することを決定した場合に有益である。ｅ−ＣＬＩＰ送信装置２０２が同一のｅ−ＣＬＩＰを第２ｅ−ＣＬＩＰ受信装置２３２に対して送信する場合、第２ｅ−ＣＬＩＰ受信装置は、ｅ−ＣＬＩＰ中の識別された記述子ファイル識別子を用いてネットワークを介してリクエストをブロードキャストする。これは、記述子ファイル識別子によってユニークに識別される記述子ファイルについてのリクエストである。
【００３３】
サイロ２２２は、ｅ−ＣＬＩＰ送信装置２０２が実行するようにこのリクエストを受け取る。サイロは既に記述子ファイル識別子に対応する記述子ファイルを格納しているので、サイロは記述子ファイルを用いて第２ｅ−ＣＬＩＰ受信装置に対して応答することができる。ｅ−ＣＬＩＰ送信装置は、サイロがリクエストに対して応答したことを確認し、応答する必要はない。記述子ファイルを受け取ると、第２ｅ−ＣＬＩＰ受信装置は、ネットワークを介して記述子ファイルからアセットコンテント識別子を再度ブロードキャストすることにより、記述子ファイルのリスト上のアセットのリクエストを続行する。サイロおよびｅ−ＣＬＩＰ送信装置は共に、リクエストを受け取る。サイロは、それらのアセットがｅ−ＣＬＩＰ送信装置から第１ｅ−ＣＬＩＰ受信装置に対して送られたとき、それらのアセットを傍受し、格納しているのでそれらのアセットについてのリクエストに応答することができる。
【００３４】
サイロ２２２がアセットについてのリクエストに応答するので、ｅ−ＣＬＩＰ送信装置２０２は、アセットを第２ｅ−ＣＬＩＰ受信装置に送ることによってリクエストに対して応答する必要がない。実際、ｅ−ＣＬＩＰ送信装置が、自身のデータストレージからいくつかのアセットを削除済みであること、および、ｅ−ＣＬＩＰが第２ｅ−ＣＬＩＰ受信装置に送られたときにローカルに利用可能なアセットすら有していないということは起こり得る。あるいは、ｅ−ＣＬＩＰ送信装置は、多量の装置に対して同一データを送るために用いられ得る。記述子ファイル識別子を所有し、それがｅ−ＣＬＩＰ送信装置が第２ｅ−ＣＬＩＰ受信装置に対して送信することを望むアセットに対応することを知るだけで、それらのアセットがネットワーク内のいずれかのサイトに存在する限り、ｅ−ＣＬＩＰ送信装置はそれらのアセットを送信することができる。この構成は、ｅ−ＣＬＩＰ送信装置を、送信するために必要な全てのアセットを永遠に格納しなければならない状態、およびそれらのアセットを自身に送信しなければならない状態から解放する。それはまた、リクエストされたデータのより効率的なローカル配信を提供する。データは、サイロ、そのダウンロードが既に完了している先のｅ−ＣＬＩＰ受信装置、ローカルネットワーク、あるいは、他のより効率的なソースから到達し得る。
【００３５】
このスキームを使用することにより、全てのクライアントがデータを有する特定のサーバに対してアクセスすることを要求することなく、データはネットワーク上のデータを要求するクライアントに対して格納されると共に利用可能となる。そのデータを利用可能にするための予め定めた手順に従って、データが選択されることも特定のサーバ上に格納されることも要求されない。むしろ、クライアントがサーバにアクセスできるように特定のサーバのアドレスが知らされていることが要求される。ネットワーク上のサイロは、ネットワークを通じて送信されるデータを監視すると共に、どのデータがサイロ内に格納されるべきか決定し、この結果、データはネットワーク上のクライアントにとって容易に利用可能とされる。既述のスキームは、分散データストレージを備える真のサーバレスネットワークを提供する。以下に説明するように、サイロは、ストレージのためにシリアルにまたはパラレルに追加され得る。暗号ハッシュファイル識別子のようなユニークな識別子が用いられるので、ディジタルアセットはそれが既に格納されている任意の場所から取得され得ると共に、不正確なバージョンのアセットを取得する危険性を伴うことなく、コンテンツの完全性が確認され得る。
【００３６】
図３はネットワーク上のデバイスからのリクエストに応答して、ネットワークを介してアセットコンテント識別子のブロードキャストを受け取り、識別されたアセットを取得し、それらのアセットを提供するために構成されたサイロ２２２のブロック図である。サイロ２２２は、ネットワークに接続されていると共にネットワークを介してブロードキャストまたは二地点間メッセージを送受信することができるネットワークインターフェース３０２を備えている。ネットワークインターフェース３０２は、アセットコレクタ３０４およびアセットサプライヤ３０６と接続されている。アセットコレクタ３０４は、ネットワークを介してデータまたはアセットの断片を受け取ると共に、それらのアセットが何時ストレージに転送されるべきかを決定するために機能する。さらに、アセットコレクタは、必要なアセットを何時リクエストするかを決定し得る。アセットコレクタ３０４は、図６および図７により詳細に記載されている。
【００３７】
アセットサプライヤ３０６は、ストレージ３１２内に含まれているアセットを追跡すると共に、アセット・リクエストに応答してネットワークを介してそれらのアセットが何時受け取られるべきかを決定する。アセットサプライヤ３０６は、図８により詳細に記載されている。アセットコレクタ３０４はサイロ・リクエスト・リスト３０８である暗号ハッシュ記述子アセット識別子の要求リストを使用する。サイロ・リクエスト・リストは、収集または取得されるべきアセットのメモリ内に格納されているリストである。サイロ・リクエスト・リストは、サイロによってネットワークを介して受け取られ、取得されるべきアセットと一致するとサイロが決定したアセット識別子を含む。アセット識別子演算処理装置３１０は、アセットコレクタ３０４によって取得され、アセットストレージ３１２内に格納されたアセットについてのアセット識別子を生成するために用いられる。演算処理装置３１０は、ネットワークから取得されたアセットとサイロ・リクエスト・リストからのアセット識別子との一致を確認するために存在する。アセットは、アセットストレージ内に置かれる前に、アセット識別子演算装置３１０によって検疫され得る。すなわち、演算処理装置３１０は、全アセットをアセットストレージ内に置く前、または、アセットをネットワーク上のリクエスト装置に対して提供する前に、取得済みのアセットについてのアセット識別子が確認されることを要求し得る。アセットコレクタ３０４は、アセットが何時確実に受け取られ、また、そのアセットが何時サイロ・リクエスト・リストから削除されるべきかを決定するためにアセット識別子演算処理装置３１０を使用する。
【００３８】
パラレルおよびシリアルなサイロ
ネットワーク上の複数のサイロは、異なるサイロが同じ情報を格納するようにパラレルに配置され得る。したがって、アセットがクライアントによってリクエストされると、その情報は、偶然にそのアセットを有する任意のサイロによって提供され得る。一つの実施例では、単に、最初に応答することができるサイロが、アセット・リクエストに対して応答することを許容することにより、リクエストに応答するサイロが選択される。この方法では、最も早く情報を与えることができるサイロがそうすることを許容される。同じく情報を有する他のサイロは、リクエストが既に応答されたことを確認し、応答する必要はない。この実施例では、最初に応答するサイロは、アセット・リクエストの遂行を許容される。最も近いこと、その時に抱えているリクエストの負荷が小さいこと、他のいくつかの理由によって、サイロは最初に応答する。他の実施例では、パラレルなサイロ間の負荷を調整する他の方法が用いられ得る。例えば、一定のサイロが一定期間内に応答する機会が与えられ、その時間が経過すると他のサイロが応答を許容される階層構造をサイロは有し得る。パラレルなサイロスキームは、あるリクエストに対してどのサイロが応答するか、どれだけの格納された情報の冗長が提供されるかを決定する際に大きな柔軟性を自身に与える。
【００３９】
サイロはまた、シリアル方式で構成され得る。一つの実施例では、これは、所定のサイロが自身のサイロ・リクエスト・リストに追加し得るアセット識別子についての選択ルールを単に実行することにより達成される。例えば、特定のアセットについてのアセット識別子を表す数は、利用可能なサイロ数を法として除算され得る。モジュロ演算の後の剰余が記録される。各サイロ（またはサイロ群）は、そのアセット・リスト識別子が一定の剰余を残すそれらのアセットだけを自身のサイロ・リクエスト・リストに追加する。
【００４０】
例えば、４つのサイロがシリアルに接続されている場合を考えてみる。一つのサイロは、そのアセット・リスト識別子が４を法として剰余０を計算するアセットを格納するために割り当てられ、他のサイロはそのアセット・リスト識別子が４を法として剰余１を計算するアセットを格納するために割り当てられ、一つのサイロはそのアセット・リスト識別子が４を法として剰余２を計算するアセットを格納するために割り当てられ、他のサイロはそのアセット・リスト識別子が４を法として剰余３を計算するアセットを格納するために割り当てられる。
【００４１】
既述の実施例では、アセット識別子は暗号化ハッシュ関数によって決定されるので、各アセット識別子に対応する剰余は平等に割り当てられるべきである。さらに、１つ以上の剰余を特定のサイロまたはパラレルなサイロ群に割り当てることは可能である、したがって、大きな容量を備えるサイロは、小さなサイロよりもより大きなアセットの部分を格納するために構成され得る。
【００４２】
サイロ・リクエスト・リスト上のアセットの取得
一度、アセット識別子がサイロのリクエストリストに加えられると、サイロは能動的または受動的にアセットを取得する。アセットを能動的に取得するために、サイロは単にサイロ・リクエスト・リスト上の記述子ファイル識別子に対応するファイル断片についてのネットワークのトラフィックを監視する。このような断片が受け取られると、サイロは、セグメントをＢＬＯＢストレージ内に格納し、それがすでに受け取られたことを示す。アクティブモードでは、サイロはサイロ・リクエスト・リストおよび未だ受け取られていないネットワークからのリクエストアセットを介して循環する。例えば、サイロ・リクエスト・リストの下部に加えられたアセット識別子について考えてみる。その上の他のアセットがリクエストされると、その下部アセットのほとんどまたは全てが、他のネットワークからのリクエストの結果として受動的に受け取られ得る。全てのアセットが受け取られ、アセット識別子が確認された場合には、アセット識別子は、上部に到達する前にサイロ・リクエスト・リストから削除され得る。あるいは、アセット識別子は、サイロ・リクエスト・リストの上部に到達し得ると共に、サイロは未だ受け取っていないアセットの全てあるいはアセットの部分を要求し得る。
【００４３】
サイロによって生成されたアクティブなリクエストの割合または数は、ネットワーク上に観察されたブロードキャスト・トラフィックの量に従って調整され得る。したがって、アセットの収集および機能の達成を実現するためにサイロについて割り当てられた帯域幅量は、ネットワーク上の他のトラフィックについての性能が劣化されないように調整され得る。したがって、各サイロは、アセットまたはアセット断片についてのブロードキャスト・リクエストを送信する前に、ブロードキャスト・トラフィックのレベルをチェックし得る。ネットワークが特にビジーの場合には、サイロはネットワークのビジーが改善されるまで自身のリクエストを保持し得る。さらに、先に述べたように、ブロードキャストアセット要求に応答する前にサイロが待機する時間も調整され得る。サイロは他のサイロが応答に失敗した後にだけ応答し得る、あるいは、サイロによって使用されているブロードキャストネットワーク帯域幅量の限度に従って待機し得る。
【００４４】
データ構造
一定のデータ構造はサイロのリクエストおよびアセットの提供を促進するために定義される。図４は不足アセットの部分を取得するためにサイロによって生成されるアセット・リクエストの構造を示すブロック図である。リクエスト４５０は、アセット識別子４５２、連続番号４５４、およびチャンクサイズ４５６を含んでいる。アセット識別子は記述子ファイルから取得される。連続番号は、リクエストするアセット断片のサイズに基づいてインポータによって生成される。アセット断片サイズは、ある実施例においては、インポータによって特定される。他の実施例では、断片サイズはシステムによって特定され、個々のインポータによっては変更され得ないことに留意すべきである。断片を搬送するデータパケット４６０は、アセット識別子４６２、連続番号４６４、およびアセットセグメントを表すデータ４６６を含む。データの長さは、リクエスト４５０中で特定された断片サイズの長さに対応する。したがって、入ってくるアセットの断片は、それらの連続番号に従って処理され得ると共に、アセット内のデータは、一旦アセットの断片の全てが受け取られると、処理されたセグメントから回復され得る。
【００４５】
図５は、記述子ファイル４００の構成を示すブロック図である。図示の特定の記述子ファイルは、アセット自身と共にアセットを含むディレクトリの構造を記述するために、「ハイパーファイル」モデル化言語（ＨＦＭＬ）を使用する。ＨＦＭＬは先に参照した仮特許出願中に記載されている。本発明の説明に用いられるモデル化言語の構文法は、一般的に容認された規格に適合するために、ワールド・ワイド・ウェッブ協会（Ｗ３Ｃ）およびインターネット・エンジニアリング・タスクフォース（ＩＥＴＦ）によって規格化されたエクステンシブル・マークアップ・ランゲッジ（ＸＭＬ）の仕様書から得られる。一般的に、ｅ−ＣＬＩＰの実施は、この構文法によって記載された記述子ファイルに限定されないことは留意されるべきである。容易に分析されると共に記述子中に含まれるアセットおよび鍵のツリー構造ディレクトリを生成するために用いられ得るので、ＸＭＬから得られたＨＦＭＬが用いられることが好ましい。
【００４６】
記述子ファイルの最初の項目はフォルダ４０２である。フォルダ名４０４およびタイムスタンプ４０６がフォルダ４０２内に含まれている。フォルダ４０２は、フォルダ４０２の末尾を示すエンド・フォルダ・タグ４０８と組合わさる。ネスト化されたフォルダ４０２の内側は、第１ネスト化フォルダ４１２である。フォルダ４１２はフォルダ名４１４およびタイムスタンプ４１６を含む。ファイル４２２は、フォルダ４１２の内側に含まれる。ファイル４２２は、ファイル名４２４、日時スタンプ４２６、サイズ４２８、およびＭＤ５アルゴリズムによって生成され、２７文字列で表される暗号ハッシュアセット識別子４３０を含む。同様に、フォルダ４１２もまたファイル４３２を含んでいる。ファイル４３２は、ファイル名４３４、日時スタンプ４３６、サイズ４３８、およびアセット識別子４４０を含む。フォルダ４１２は、エンド・フォルダ・タグ４１９と組み合わさる。
【００４７】
任意の数のフォルダは、要求に応じて他のフォルダ内に表され得ると共にネストされ得ることは明白であり、したがって、任意のツリー構造ディレクトリは、ディレクトリの各フォルダ内で特定された任意の数のフォルダを用いて特定され得る。すなわち、記述子ファイルの暗号ハッシュ記述子アセット識別子は、鍵箱の鍵として機能する。ボックス内の各鍵は、それ自身が他の鍵箱の鍵足り得る。各アセットは、ファイル名、および要求されたメタデータとアセットのコンテントとに基づいてユニークにアセットを識別する暗号ハッシュアセット識別子を含む。ある実施例では、暗号ハッシュアセット識別子はアセットについての識別子に過ぎず、他の実施例では（適当であれば）コンベンショナルなファイル名もまたアセットに関連づけられる。
【００４８】
したがって、ｅ−ＣＬＩＰによって特定された記述子ファイルが回復されたときには（例えば、コンピュータのクラッシュの後）、完全なファイル名およびｅ−ＣＬＩＰによって特定されたファイルについてのディレクトリ情報が取得される。ｅ−ＣＬＩＰを用いる１つの技術が先に参照した米国特許出願（代理人整理番号ＷＲＳＨＰ００２）に記載されている。
【００４９】
フローチャート
図６は、サイロ２２２内のアセットコレクタ３０４上で実行される、ネットワークを監視すると共に格納されるべきアセット識別子を収集するための処理を示すフローチャートである。ステップ５０２では、サイロはブロードキャスト・トラフィックを監視する状態に入る。アセット識別子が受け取られると、制御はステップ５０４に移行され、アセットコレクタはアセット識別子がすでに確認されたか否かを決定するために既知の識別子のリストをチェックする。識別子が既知の識別子である場合には、制御はステップ５０２に返され、アセットコレクタはブロードキャスト・トラフィックの監視を継続する。識別子が不知の識別子の場合には、制御はステップ５０６に移行され、アセットコレクタは自身の選択ルールを用いてファイル識別子をチェックする（サイロがシリアルに構成されている場合）。あるいは、ステップ５０４および５０６は、逆の順序で実行され得る。
【００５０】
アセット識別子がステップ５０６において選択ルールと一致する場合には、制御はステップ５０８に移行され、アセット識別子はサイロ・リクエスト・リストに追加される。アセット識別子がサイロ・リクエスト・リストに追加された後、アセット識別子はステップ５１０において既知識別子のリストに追加され、アセットコレクタは、ネットワークを介して受け取られたアセットの断片を収集し始める。しかしながら、ステップ５０６において、アセットが選択ルールと一致しない場合には、制御はステップ５０２に返される。この方法では、サイロはネットワークを介して受け取られたアセットを自動的に収集する。
【００５１】
サイロが直列に接続されていない実施例では、選択ルールは用いられ得ない。この場合には、ステップ５０６はスキップされ、あるいは、選択ルールは単に正しい形式の全てのアセット識別子を選択するルールとして定義され得る。さらに、実施例によっては、アセットは一定の回数確認されるまでサイロ・リクエスト・リストに追加されない。この場合、アセット識別子が確認された回数の計数は、維持され、アセットが規定の回数を超えて確認された回数であるか否かを決定するために特別なステップが用いられる。実施例によっては、選択ルールまたはアセット・リスト識別子が確認されるべき回数といった条件に拘わらず、記述子アセットを示す全てのアセット・リスト識別子が自動的にサイロ・リクエスト・リストに追加される。このような記述子ファイル識別子を常に加える意図は、適当な場合にはその中で表されているネストされたアセットがサイロ・リクエスト・リストに追加され得るように、どのアセットが記述子ファイルに含まれているかを決定することができることにある。
【００５２】
ネットワークの監視および自身のサイロ・リクエスト・リストへ追加されるべきアセット識別子の決定に加えて、ファイルコレクタ３０４は、自身のサイロ・リクエスト・リスト中のアセット識別子によって識別されたファイルを取得するためにネットワークトラフィックも監視する。図７はアセットコレクタ３０４によって実行されるネットワークからアセットを受け取るための処理を示すフローチャートである。ステップ６０２では、アセットコレクタは、ネットワーク上のブロードキャスト・トラフィックを傍受する状態に入る。サイロ・リクエスト・リスト上のアセット識別子と一致するアセットセグメントが検出されると、制御はステップ６０４に移行され、アセットの断片が格納される。
【００５３】
ステップ６０６では、アセットの断片に対応するアセットが完全であるか否かが決定される。完全でない場合には、アセットコレクタは、再びブロードキャスト・トラフィックを傍受する。アセットが完全な場合には、制御はステップ６０８に移行され、アセットの暗号ハッシュと一致するアセットが確認される。アセット識別子が確認されない場合には、制御はステップ６１０におけるエラーハンドラに転送される。アセット識別子が確認された場合には、制御はステップ６２０に移行され、アセット識別子はサイロ・リクエスト・リストから削除される。実施例によっては、ステップ６０４の前に、アセットの断片が格納される前に確認されたか否かが決定されることに留意すべきである。他の実施例では、アセットの断片は、単に格納され、先に受け取られて格納された任意のアセットの断片を上書きする。
【００５４】
次に、ステップ６３０では、ファイルコレクタがファイルは記述子ファイルであるか否かをチェックする。ファイルが記述子ファイルの場合には、制御はステップ６３２に移行され、ファイルが読まれる。ファイルが記述子ファイルでない場合には、アセットコレクタはブロードキャスト・トラフィックの監視を継続する。ステップ６３２において記述子ファイルが読まれた後、制御はステップ６３４に移行され、それらのファイルがサイロ上で実行された選択ルールに合致する場合には、記述子ファイル内のファイル名は、サイロ・リクエスト・リストに追加される。
【００５５】
したがって、図７に示す処理は、ファイルコレクタ３０４がネットワークから自身のサイロ・リクエスト・リスト上のアセット識別子によって識別されたアセットと一致するアセットのセグメントを取得することを可能にする。一度、アセットの全ての断片を含むためにアセットが断片毎にアセンブルされると、アセット識別子がチェックされる。一度、アセット識別子がチェックされると、アセットが既に完全な状態で受け取られており、アセットがサイロ・リクエスト・リストから削除され得るという高い確信が存在する。さらに、上述の通り、アセットコレクタは継続的に自身のサイロ・リクエスト・リストを介して循環し、サイロ・リクエスト・リスト中にリクエストされるべきアセットが存在するか否かをチェックする。
【００５６】
リクエストされるべきアセットの決定は、いくつもの方法によって実行され得る。一つの実施例では、決定は、アセットがサイロ・リクエスト・リスト上に一定期間存在した場合に下される。この決定は、ネットワーク上のブロードキャスト・トラフィック量によって影響を受ける。すなわち、ブロードキャスト・トラフィックが低く、帯域幅が容易に得られる場合には、非常に短い時間間隔の後に、あるいは、単にそれらのアセットがサイロ・リクエスト・リストの上部に現れた時に、アセットコレクタはサイロ・リクエスト・リスト上のアセットについてのリクエストをブロードキャストし得る。ネットワーク上のブロードキャスト・トラフィックが重たいときには、アセットコレクタはアセットについてのリクエストのブロードキャストをより多くの帯域幅が利用可能となるまで遅延させる。また、アセットコレクタは、検出されたブロードキャストの量に従って、トラフィック自身のブロードキャスト・リクエストの割合または数を調整し得る。一旦、アセットコレクタが確認済みアセットをファイルストレージ３１２内の置くと、アセットサプライヤ３０６は、ネットワークを介してアセットについてのリクエストに応答することができる。
【００５７】
図８は応答を送信するか否かを決定するため、および応答を送信するためにアセットサプライヤ３０６上で実行する処理を示すフローチャートである。ステップ７０２では、アセットサプライヤは、ネットワークを介したアセットについてのブロードキャストを監視する状態に入る。アセットについてのリクエストが受け取られると、制御はステップ７０４に移行され、アセットサプライヤは、リクエストに対する応答が既に送信されたか否かを決定する。応答が既に送られている場合には、アセットサプライヤはブロードキャスト・トラフィックの監視を再開する。他のソースによってネットワーク上に応答が未だ送られていない場合には、制御は、アセットサプライヤが応答を送信するか否かを決定するステップ７０６に移行される。
【００５８】
応答を送信するか否かの決定は、数多くの要素を含み得る。応答は、少なくともアセットの部分がサイロによって受け取られている場合にだけ送信されるべきである。実施例によっては、サイロは、アセット全体を受け取ったか否か、あるいは、アセット識別子を確認したか否かに拘わらず自身が受け取ったアセットの断片を送信する。より好ましくは、サイロは、全アセットを取得済みであると共にアセットのコンテンツを確認済みであるリクエストに対する応答のみを送信する。また、他のサイロ（あるいは、バックアップサイロ）とパラレルに接続されているサイロは、アセット・リクエストに対する応答を送信開始する前に待機するために特定の遅れ時間を有することが可能であり、したがって、他のサイロがアセットを最初に送信する機会を与える。リクエストしている装置あるいは要求している装置のネットワークの一致といったような他の要素は、応答を送信するか否かを決定する際に考慮さえ得る。応答を送信すると決定された場合には、ステップ７０８にて、アセットサプライヤ３０６によって、リクエストされたアセットがリクエストしている実体に対して送信される。
【００５９】
上述のように、いくつかのサイロはアセット・リクエストに対して応答することが可能であり、応答する最初のサイロは、実際にデータを提供するものとして選択され得ると共に、他のサイロはその応答を確認したときに第１のサイロに従う。複数のサイロを使用する他の実施例では、サイロは当初、アセットを送信することにより、アセット・リクエストに対して応答しない。むしろ、サイロは送信権要求を送信する。送信権要求はサイロの能力またはリクエストに対して応答するための適切さに関連する情報と共に、サイロの識別情報を含む。例えば、サイロの速度、情報のコスト、現在の負荷等が送信され得る。そして、エージェントは、用いるのに最適なサイロを選択し、そのサイロに対して特定のリクエストを送信する。この方法では、マーケットは情報を提供するために設立され、最良のサイロが選択される。
【００６０】
以上、ネットワーク上のネットワーク装置またはクライアントによってリクエストされたアセットを提供するために、サイロ群がどのようにしてネットワーク上に包含されるかを示してきた。サイロは、一定のリクエストに対してのみ応答するように直列に接続されても良く、あるいは、任意のサイロが任意のリクエストに対して応答できるように並列に接続されても良い。さらに、サイロのアセット収集機能は、サイロが、提供すべきアセットを収集するためにネットワーク帯域幅量を過度に使用することのないように調整され得る。サイロによって利用される帯域幅量は、検出されたネットワークトラフィックに従って調整され得る。これは、ネットワークから、エンタープライズマネージメントシステムから、あるいは、システムにおいて用いられているネットワークハードウェアから情報を取得することにより実行され得る。このように、自動的なアセット格納および引き出しのための分散アーキテクチャが開示されてきた。
【００６１】
コンピュータシステムの実施例
図９および図１０は、本発明の実施形態を具現するのに適したコンピュータシステム９００を示した図である。図９は、コンピュータシステムの可能な物理的形態の一例を示したものである。もちろん、コンピュータシステムは、集積回路やプリント回路板、手で持てる小型のデバイスから巨大なスーパーコンピュータに至るまで、広範囲に渡る多くの物理的形態を採ることが可能である。コンピュータシステム９００は、モニタ９０２と、ディスプレイ９０４と、ハウジング９０６と、ディスクドライブ９０８と、キーボード９１０と、マウス９１２とを備える。ディスク９１４は、コンピュータシステム９００との間でデータを転送するのに使用されるコンピュータ読み取り可能媒体である。
【００６２】
図１０は、コンピュータシステム９００のブロック図の一例を示したものである。システムバス９２０には、広範囲に渡る様々なサブシステムが取り付けられている。プロセッサ（または複数のプロセッサ）９２２（中央処理装置またはＣＰＵとも呼ばれる）は、メモリ９２４を含むストレージデバイスに結合されている。メモリ９２４は、ランダムアクセスメモリ（ＲＡＭ）とリードオンリメモリ（ＲＯＭ）とを含む。当業者には周知のように、ＲＯＭは、ＣＰＵに一方向的にデータおよび命令を転送し、ＲＡＭは、データおよび命令を双方向的に転送するのに使用されるのが典型的である。これら２つのタイプのメモリは、いずれも、以下に挙げる任意の適切なコンピュータ読み取り可能媒体を含んで良い。固定ディスク９２６もまた、ＣＰＵ９２２に双方向的に結合されて、追加のデータ記憶容量を提供しており、以下に挙げる任意のコンピュータ読み取り可能媒体を含んで良い。固定ディスク９２６は、プログラム、データ等を記憶するのに使用されて良く、プライマリストレージよりも低速な、セカンダリストレージ媒体（ハードディスク等）であるのが典型的である。ここで、固定ディスク９２６に保持されている情報が、適切な場合において、スタンダードな方式によりメモリ９２４内に仮想メモリとして組み込まれる点が重要である。リムーバブルディスク９１４は、以下に挙げるコンピュータ読み取り可能媒体のいずれの形を採っても良い。
【００６３】
ＣＰＵ９２２もまた、ディスプレイ９０４、キーボード９１０、マウス９１２、スピーカ９３０等の、各種入出力デバイスに結合されている。入出力デバイスは一般に、ビデオディスプレイ、トラックボール、マウス、キーボード、マイクロフォン、タッチディスプレイ、トランスデューサカードリーダ、磁気もしくは紙のテープリーダ、タブレット、スタイラス、音声もしくは筆跡レコグナイザ、バイオメトリックリーダ、または他のコンピュータのいずれであっても良い。ＣＰＵ９２２は、ネットワークインターフェース９４０を使用して、別のコンピュータまたは通信網に選択的に結合されていても良い。このようなネットワークインターフェースにより、ＣＰＵは、上述した方法の各ステップを実施するに当たって、ネットワークとの間で情報を送受信することができると考えられる。さらにまた、本発明の方法の実施形態は、ＣＰＵ９２２のみを対象として実行されても良いし、処理を部分的に共有する遠隔ＣＰＵと関連させてインターネット等のネットワークを通じて実行されても良い。
【００６４】
また、本発明の実施形態はさらに、コンピュータで具現される様々な演算を実施する目的でコンピュータコードを搭載している、コンピュータ読み取り可能媒体を有したコンピュータストレージ製品に関する。この媒体およびコンピュータコードは、本発明の目的のために特別に設計および構築されたものでも良いし、コンピュータソフトウェア技術の当業者にとって周知および使用可能なタイプのものでも良い。コンピュータ読み取り可能媒体の例は、ハードディスク、フロッピィディスク、磁気テープ等の磁気媒体と、ＣＤ−ＲＯＭ、ホログラムデバイス等の光学媒体と、光フロッピィディスク等の光磁気媒体と、特定用途向け集積回路（ＡＳＩＣｓ）、プログラム可能型論理デバイス（ＰＬＤｓ）、ＲＯＭ−ＲＡＭデバイス等の、プログラムコードを記憶および実行するために特別に構成されたハードウェアデバイスを含み、これらに限定されない。コンピュータコードの例は、コンパイラにより作成されたマシンコード、インタープリタを使用してコンピュータにより実行される高水準コードを含んだファイル等を含む。
【００６５】
以上、理解を明確にするために詳細に本発明を説明してきたが、一定の変更、改良が本発明の特許請求の範囲内で実施され得ることは明らかである。例えば、任意の数のサイロがネットワーク上に現れ得ると共に異なる方法で構成され得る。サイロは任意の好適な計算装置上で実現され得る。ｅ−ＣＬＩＰは、アセットまたはアセットのリストのユニークな表示を送信するために用いられ得、あるいは、他の任意の好適でユニークな識別子が用いられ得る。ネットワーク上の受信装置またはクライアントもまたサイロとして機能し得る。サイロは多くの方法で実現され得ると共に記載されたとおりである必要はない。サイロ・リクエスト・リストの実行、およびそのアセットの優先順位は、異なる方法で実行され得る。記述子ファイルは、説明した形式以外の他の形式を取り得ると共に、アセット識別子だけを含むことができ、あるいは、メタデータを含み得る。したがって、本発明の実施例は、説明として考慮されるべきであって、限定として考慮されるべきでなく、本発明は、本明細書中の細目に限定されるべきでなく、特許請求の範囲の範囲内で改良され得ると共に、その等価物を含み得る。
【図面の簡単な説明】
【００６６】
【図１】任意の数のクライアント、および任意の数のデータレポジトリまたはサイロを含むネットワークを示すブロック図である。
【図２】ネットワーク上における情報送信装置、サイロ、および２つの情報受信装置間における相互作用を示すブロック図である。
【図３】ネットワークを介してアセットコンテント識別子のブロードキャストを受信し、識別されたアセットを取得し、ネットワーク上の装置からのアセット・リクエストに対応してアセットを提供するように構成された図２のサイロのブロック図である。
【図４】サイロによって生成されたアセット・リクエストの構造、およびアセットデータの断片を含むデータパケットの構造のブロック図である。
【図５】記述子ファイルの構造を示す説明図である。
【図６】ネットワークを監視すると共に格納されるべきアセット識別子を収集するために、サイロのアセットコレクタ上で実行する処理を示すフローチャートである。
【図７】サイロのアセットコレクタによって実行される、ネットワークからアセットを受け取るための処理を示すフローチャートである。
【図８】応答を送信すべきか決定するために、および、応答を送信するために、サイロのアセットサプライヤ上で実行される処理を示すフローチャートである。
【図９】本発明の実施例を実行するために好適なコンピュータシステム９００を示す説明図である。
【図１０】本発明の実施例を実行するために好適なコンピュータシステム９００を示す説明図である。
【図１】
2007012077.tif 000003
【図２】
2007012077.tif 000004
【図３】
2007012077.tif 000005
【図４】
2007012077.tif 000006
【図５】
2007012077.tif 000007
【図６】
2007012077.tif 000008
【図７】
2007012077.tif 000009
【図８】
2007012077.tif 000010
【図９】
2007012077.tif 000011
【図１０】
2007012077.tif 000012