(57)【要約】集中型の同期システム及び通信接続形態並びに分散型の同期システム及び通信接続形態の要素を使用して端点間のデータを同期させるシステム及び方法が開示される。そのようなシステム及び方法はある場合にはデータのある部分集合を集中型の端点と同期させてもよい一方、データの別の部分集合は分散型の方法で他の端点と直接的に動機される。そのようなシステム及び方法は、端点間のデータの同期を助けるために様々な協同の機能を含んでもよい。
2010531026.tif 000002
【特許請求の範囲】
【請求項１】
サーバー端点からメタデータを取得するステップであって、前記メタデータはブロブを識別し、前記ブロブは前記メタデータに含まれない、ステップと、
前記メタデータをローカルのメタデータとマージするステップと、
前記ブロブに関連づけられた少なくとも１つのロケーターを含む組をブロブ検索サービスに要求するステップと、
第１の端点において、前記少なくとも１つのロケーターの前記組内の特定のロケーターにより識別される第２の端点からブロブの一部を検索するステップと
を含む方法。
【請求項２】
前記ブロブの前記一部が最初に検索できない場合に、ブロブ・キャッシュ・サービスが前記ブロブの少なくとも第２の部分を格納することを要求するステップをさらに含む請求項１に記載の方法。
【請求項３】
ブロブの一部を検索する前記ステップは、
前記第２の端点と異なる第３の端点から前記ブロブの前記一部とは異なる前記ブロブの第２の部分を検索するステップをさらに含む請求項１に記載の方法。
【請求項４】
前記検索は、前記ブロブの前記一部を検索するために第１のブロブ検索機構を使用するブロブ・ダウンロード・モジュールにより実行され、前記ブロブ・ダウンロード・モジュールは、前記ブロブの第２の一部及び第２のブロブの一部のうち少なくとも１つを検索するための、前記第１のブロブ検索機構とは異なる第２のブロブ検索機構を使用することができる請求項１に記載の方法。
【請求項５】
前記ブロブの前記一部が検索された後に、前記ブロブの前記一部が前記第１の端点から検索されることを前記ブロブ検索サービスに通知するステップをさらに含む請求項１に記載の方法。
【請求項６】
前記ブロブの前記一部を求める前記第３の端点からの要求に応答して、第３の端点に前記ブロブの前記一部を提供するステップをさらに含む請求項１に記載の方法。
【請求項７】
前記第１の端点において、前記メタデータが前記サーバー端点において更新されたとの通知を受信するステップをさらに含み、前記通知は、取得動作、マージ動作、問合せ動作及び検索動作を開始する請求項１に記載の方法。
【請求項８】
前記ローカルのメタデータに関連付けられたデータに対するローカルの変更を実行するステップと、
更新されたローカルのメタデータを形成するために前記ローカルのメタデータを更新し、前記更新されたローカルのメタデータ及び前記ブロブの第２の部分が前記ローカルの変更を含むように、前記第１の端点において、前記ブロブの前記第２の部分を更新するステップと、
前記更新されたローカルのメタデータを前記サーバー端点に通信するステップと
をさらに含む請求項１に記載の方法。
【請求項９】
サーバー端点において、第１の端点からメタデータを取得するステップであって、前記メタデータはブロブを識別し、前記ブロブは前記メタデータに含まれない、ステップと、
前記メタデータを前記サーバー端点により保持されるサーバー・メタデータとマージするステップと、
前記第１の端点を識別する位置によりブロブ検索サービスを更新するステップと
を含む方法。
【請求項１０】
前記第１の端点とは異なる第２の端点に前記サーバー・メタデータを通信するステップをさらに含む請求項９に記載の方法。
【請求項１１】
前記ブロブの一部が検索され得る場所を識別するロケーターを求める要求を要求者から受信するステップと、
前記ブロブ検索サービスを使用して前記ロケーターを識別するステップと、
前記要求者に前記ロケーターを通信するステップと
をさらに含む請求項９に記載の方法。
【請求項１２】
前記ロケーターは、前記第１の端点に関連付けられた第１の知識特性を使用して前記ブロブ検索サービスによって識別され、第２の端点に関連付けられ前記ブロブの第２の部分が検索され得る位置を識別する第２の端点は、前記第２の端点に関連付けられる第２の知識特性が前記第１の知識特性よりも好ましくないために識別されない、請求項１１に記載の方法。
【請求項１３】
前記ブロブの第２の部分を格納する第２の端点を識別する第２の位置を受信するステップであって、前記ブロブの前記第２の部分は前記第２の端点から検索され得る、ステップと、
前記ブロブが検索され得る場所を識別する少なくとも１つのロケーターを求める要求を受信するステップと、
前記位置に関連付けられた第１のロケーター及び前記第２の位置に関連付けられた第２のロケーターを識別するステップと、
前記要求に応答して前記第１のロケーター及び前記第２のロケーターを通信するステップと
をさらに含む請求項９に記載の方法。
【請求項１４】
前記ブロブの一部をキャッシュに格納する要求を受け入れるステップと、
前記ブロブの前記一部を検索するステップと、
前記ブロブの前記一部をブロブキャッシュに格納するステップと、
前記ブロブキャッシュを識別する第２の位置により前記ブロブ検索サービスを更新するステップと
をさらに含む請求項９に記載の方法。
【請求項１５】
提供する側の端点が、前記提供する側の端点に関連付けられた知識特性を使用して識別され、前記ブロブの前記一部は前記提供する側の端点から検索される請求項１４に記載の方法。
【請求項１６】
前記ブロブの一部を一時的でないクラウド・ストレージ・データ格納部に格納する要求を受け入れるステップと、
前記ブロブの前記一部を検索するステップと、
前記クラウド・ストレージ・データ格納部に前記ブロブの前記一部を格納するステップと
をさらに含む請求項９に記載の方法。
【請求項１７】
前記マージ後に、前記サーバー・メタデータが修正されたことを予約する側の端点に通知するステップと、
前記予約する側の端点に前記サーバー・メタデータを通信するステップと
を含む請求項９に記載の方法。
【請求項１８】
前記検索は、前記ブロブの前記一部を検索するために第１のブロブ検索機構を使用するブロブ・ダウンロード・モジュールにより実行され、前記ブロブ・ダウンロード・モジュールは、前記ブロブの第２の一部及び第２のブロブの一部のうち少なくとも１つを検索するための、前記第１のブロブ検索機構とは異なる第２のブロブ検索機構を使用することができる請求項１４に記載の方法。
【請求項１９】
前記ブロブの前記一部を前記第１の端点とは異なる第２の端点へ前記ブロブキャッシュから通信するステップをさらに含む請求項１４に記載の方法。
【請求項２０】
ブロブ検索サービスと、
ストレージ・サービスであって、
第１の端点からメタデータを取得し、前記メタデータがブロブを識別し、前記ブロブがメタデータに含まれず、
前記メタデータを前記ストレージ・サービスによって保持されるサーバー・メタデータとマージさせ、
前記第１の端点を識別する位置により前記ブロブ検索サービスを更新する
ように構成されたストレージ・サービスと、
ブロブ・キャッシュ・サービスであって、
前記ブロブの一部をキャッシュに格納する要求を受け入れ、
前記第１の端点から前記ブロブの前記一部を検索し、
前記ブロブ・キャッシュ・サービスに関連付けられた記憶装置を使用して、前記ブロブの前記一部を格納し、
前記ブロブ・キャッシュ・サービスを識別する第２の位置によりブロブ検索サービスを更新する
ように構成されたブロブ・キャッシュ・サービスと
を含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバー支援型（server-assisted）及びピア・ツー・ピアの同期に関する。
【背景技術】
【０００２】
データは、異なる計算装置間などの異なる端点（endpoints）の間で、多種多様の方法で、及び多様な接続形態を使用して同期させることができる。例えば、計算サーバーなどの単一（又は複数）の集中型の（centralized）端点と同期させるために、いくつかのシステム又は技術は端点に依存し得る。他のシステム又は技術において、端点は、１つ以上の分散型の（decentralized）又はピア・ツー・ピアの接続形態（topology）を含む様々な方法で互いに直接的に通信し得る。
【０００３】
端点の異なる配置及び異なる通信接続形態は各々が自身の長所及び短所を有している。単に１つの例として、端点が互いに直接的にデータを同期させるシステムは、おそらくは集中型の又は「サーバー」端点を使用することなく、様々な長所を持ち得る。例えば、そのようなシステムにおいては、端点が、同期している端点より遠くに位置する中央サーバーとデータを最初に（又はおそらく常に）同期させるよう要求されることなしに物理的又は論理的に「近接した」他の端点とデータを通信し、同期させることができるかもしれない。別の例として、端点が様々な他の端点と通信することができる場合−集中型のサーバー端点が必要な場合に存在し得る−単一の障害発生点は、除去することができる。別の例として、いくつかの実施例では、例えば、設定が、他の端点からのサービス要求に対して常に利用可能である必要があったり、追加の容量を提供するために拡大することができる等の特定の要件を有する１つ以上のサーバーを構成することを必要としない場合には、少なくともピア・ツー・ピア同期システムは、設定したり構成したりすることがより簡単かもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、分散型のシステムはまた、ある場合には１つ以上の集中型の端点を使用する接続形態中で修正されたり提供されてもよいような、少なくともいくつかの欠点を含む欠点を有し得る。例えば、ピア・ツー・ピアの端点は、（「常に利用可能であるように」構成され得る少なくともいくつかの「サーバー」端点とは対照的に）、データを同期させるのに必ずしも利用可能でないか又は必ずしも同期させることができないかもしれない。また、利用可能な端点の不足は、特定の端点が利用可能となるまで又は利用可能とならない限り、データが同期されないことをしばしば意味する。別の潜在的な欠点は、おそらくは任意の接続形態において接続された端点の組の間で、特に大きなデータ量を効率的に同期させる方法を決定することに関係する。少なくともいくつかの場合には、どの端点がとの他の端点と同期するべきか、どのようなデータを同期させるべきか等を決定することは、瑣末な問題ではなく、解決策は、（必要なものよりも多くのデータを転送する等の問題につながるような）発見するために計算上集約的なものとなり得るし、最適なものに近いものとなるかもしれない。分散型のシステムの別の潜在的な欠点は、端点のシステムに関する情報−端点の特性、特定の又はすべての端点により通信されたデータについての全体的な視野（holistic view）等−は、いかなる端点もしくはいかなる端点のサブセット（部分集合）も必ずしも同期しないか、又は同期されたデータのすべてもしくは少なくともかなりの量に必ずしもアクセスしない場合には、集めるのがより難しくなり得るということである。さらに別の潜在的な欠点は、如何なるピア・マシンも必ずしも完全に信頼することができることなく、セキュリティー・ポリシー又は他のセキュリティ関連の機能を適用することに関連する；少なくともそのようなセキュリティ問題のうちのいくつかは、いくつかの実施例例において、１つ以上の集中型のおそらくは信頼された端点の存在により改善することができる。
【課題を解決するための手段】
【０００５】
以下において、読み手に基本的理解を与えるために本開示の単純化された概要を示す。この概要は本開示の広範囲に及ぶ概観でなく、本発明の重要な点や重大な要素を識別するものではなく、また本発明の範囲を表現するものではない。唯一の目的は、後に示されるより詳細な説明の前置きとして単純化された形式で本明細書に示されたいくつかの概念を示すことである。
【０００６】
集中型の同期システム及び通信接続形態並びに分散型の同期システム及び通信接続形態の要素を使用して、端点間でデータを同期させるための様々な技法及び技術が本明細書に記載される。少なくともいくつかの実施例では、同期されたデータのある部分集合（サブセット）が集中型の端点へ通信されてもよい一方、同期されたデータの別の部分集合が分散型またはピア・ツー・ピアの手法により他の端点と直接的に通信されてもよい。さらに、いくつかの実施例では、端点間のデータの同期を助けるために、様々な協調的で潜在的に有益な機能が、集中型の端点上を含む特定の端点上で実施されてもよい。
【図面の簡単な説明】
【０００７】
【図１】データが集中型の接続形態及びピア・ツー・ピアの接続形態の両方において同期され共有され得る例示的なシステムを示す図である。
【図２】同期されるデータを変更し、そのような変更を他の端点にとって利用可能にする場合に、装置端点を含む端点によって実行され得る各種の動作を含む例示的な一般化された動作フローを示す図である。
【図３】別の端点からのデータを同期させる場合に、装置端点を含む端点によって実行され得る各種の動作を含む例示的な一般化された動作フローを示す図である。
【図４】ブロブ（blob）を検索又はダウンロードするために行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図５】メタデータを保持及び提供する場合に行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図６】メタデータにより参照されるブロブに関連した位置及びロケーター（locator）を格納及び提供する場合に行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図７】キャッシュにブロブを格納しキャッシュからブロブを提供する場合に行われる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図８】クラウド・ストレージ（cloud storage）にブロブを格納しクラウド・ストレージからブロブを提供する場合に行われる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図９】十分なメタデータ又は例示的なサーバー端点によって提供される機能の少なくとも一部を使用することなくブロブを検索する場合に行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図１０】本明細書に記載した様々な技術を実施することのできる例示的なコンピューター環境を示す図である。
【発明を実施するための形態】
【０００８】
集中型の同期システム及び通信接続形態並びに分散型の同期システム及び通信接続形態の要素を使用して、端点間でデータを同期させるための様々な技法及び技術が本明細書に記載される。より具体的には、少なくともいくつかの実施例において、同期されたデータのある部分集合（サブセット、subset）は集中型の端点へ通信されてもよい一方、同期されたデータの別の部分集合は分散型又はピア・ツー・ピアの方式で他の端点と直接的に通信されてもよい。さらに、いくつかの実施例では、端点間のデータの同期を助けるために、様々な協調的で潜在的に有益な機能は集中型の端点上を含む特定の端点上で実施されてもよい。
【０００９】
図１を参照すると、データが集中型の接続形態及びピア・ツー・ピアの接続形態の両方において同期され共有される、例示的なシステム１００が示されている。例示的なシステム１００は、サーバー端点１１０、装置端点Ａ１６０、装置端点Ｂ１７０及び装置端点Ｃ１８０を含んでいる。例示的なサーバー端点１１０は、ストレージ・サービス１２０、ブロブ検索サービス１２５、ブロブ・キャッシュ・サービス１３０、クラウド・ストレージ・サービス１３５、通知サービス１４０、知識格納モジュール１４５及びブロブ・ダウンロード・モジュール１５０を含んでいるものとして示される。例示的な装置端点Ａ１６０はブロブ・ダウンロード・モジュール１６２を含むものとして示されている。図１のこの説明は、他の図に関連してなされてもよい。しかし、図１に関して記載された要素が他の図に関連して記載された要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図１における例示的な図は特定の素子を示しているが、いくつかの実施例では、これらの素子のすべてが存在するとは限らず、いくつかの実施例では、追加の素子が存在してもよい。
【００１０】
一般に、少なくともいくつかの実施例で、データは任意の２つ以上の端点の間で同期されてもよい。例えば、図１に示されるように、データは、装置端点Ａ１６０とサーバー端点１１０との間で同期されてもよいが、これに限定されるものではない。その後、同じ又は他のデータが、サーバー端点と装置端点Ｂ１７０との間で同期されてもよい。その後、装置端点Ｂはある場合には装置端点Ｃ１８０とデータを同期させてもよい。いくつかの実施例では、特定の端点が特定の他の端点と同期するのみでもよいが、他の実施例においては、他のすべての端点を備えるいくつかの実施例において含まれる多種多様の端点との間で端点が同期してもよい。
【００１１】
多種多様の同期技術が存在し使用され得るが、少なくともいくつかの実施例では、少なくともあるデータは、シンプル・シェアリング・エクステンション（Simple Sharing Extensions、ＳＳＥ）のような技術を使用して、端点間で同期されてもよい。ＳＳＥは、ＲＳＳ（Really Simple Syndication又はRich Site Summary）又はＡｔｏｍ文書のようなフィード文書への（比較的）単純なデータの追加を使用して、端点間でデータを共有し同期させるためのデータ・フォーマット及びプロセスを包含するものとして一般に説明されてもよい。ある場合には、ＳＳＥ情報を含むフィードが「ＳＳＥフィード」と呼ばれてもよい。
【００１２】
そのような実施例、又は少なくとも他のいくつかの実施例によると、端点は、ＳＳＥ情報及び同期されたデータの少なくとも一部の両方を含むフィード文書の提供により、同期のためにデータを他の端点にとって利用可能としてもよい。情報が同期されている当該端点は、フィード文書を得て、他の技術のうちから、フィードからの情報を１つ以上のデータ格納部内の情報とマージ（merge、統合）するＳＳＥ処理を使用して、そのコンテンツを解釈してもよい。このプロセスの一部として、情報が同期される当該端点は、一般に、それ自身のコピー又は同期されたデータのバージョンを更新し、それによって、第１の端点から第２の端点までのデータの同期を完了してもよい。単に１つの特定の例として、装置端点Ａ１６０は、サーバー端点１１０に利用可能なＳＳＥ情報を含むＲＳＳフィードを作成し、その結果装置端点Ａによって保持又はアクセスされる情報はサーバー端点に対して同期させることができる。サーバー端点は、フィードを得て、おそらくはＳＳＥマージ（SSE マージ）を使用してフィードのコンテンツをサーバー端点によって保持されたデータとマージさせてもよい。そのようなマージの後、装置端点Ａによって提供されるデータの少なくともいくつかは、サーバー端点によって保持されたデータに組み入れられてもよい。更に、装置端点Ａ上で作成されるデータに対する追加の変更もまた、同様の方法でサーバー端点に対して同期されてもよく、当該追加の変更は装置端点Ａ上で作成されてもよい。装置端点Ａは、追加の変更を含むようにその提供されるフィードを更新してもよく、その後、サーバー端点は更新されたフィードを処理し、追加の変更を組み込んてもよい。
【００１３】
上記の説明は、データ及び変更が、第１の端点から第２の端点まで、１つの方向においてどのように同期されるかを記載するものであった。ＳＳＥを含む様々な同期技術はまた、変更が「他の方向」−すなわち、この例における第２の端点から第１の端点−において同期されることを可能にする。例えば、装置端点Ａ１６０及びサーバー端点１１０を備えた以前の例におけるようにＳＳＥが使用される場合、サーバー端点はまた、装置端点Ａにより提供される同一の情報を（最初に少なくとも）含む当該サーバー端点自身のフィードを利用可能としてもよい。その後、当該フィードによって包含された情報のうちのいくらかがサーバー端点上で更新される場合、今度はサーバー端点が、変更又は更新されたデータとフィード内のＳＳＥ情報に対する対応する更新の両方を含むように自身のフィードを更新してもよい。その後、装置端点Ａを含むサーバー端点からのこの情報を同期させる別の端点は、フィードを得て、（おそらくは装置端点Ａからの変更を組み入れるためにサーバー端点により行われるものと同一又は同様のマージ処理を実行して）変更をマージしてもよい。要約すると、いくつかの同期技術により、２つの端点は互いに同じデータを同期させることができ、その結果、どちらか一方の端点は、例えば、各々がデータを利用可能にし、他の端点により提供されるデータが変化する場合に各々が自身のローカル・データを更新することによって、データに変更を行ってもよい。
【００１４】
更に、複数の端点は、ＳＳＥを含む少なくともいくつかの同期技術によって記述されるような技術を使用して、単一（又は複数）の端点と同期させることができる。例えば、装置端点Ｂ１７０は、装置端点Ａ１６０とサーバー端点１１０との間で同期されるのと同じ（又はある他の）データを同期させてもよい。ＳＳＥフィードが使用される場合、装置端点は、サーバー端点によって提供されるフィード（ある場合には装置端点Ａによって検索されるのと同じフィードを含む）を検索し、当該フィードにより表されるデータ又は変更を組み入れることにより、同一のデータを同期させてもよい。サーバー端点が装置端点Ｂによってデータに対してなされた変更を含むことができるように、装置端点Ｂはまた、フィードをサーバー端点にとって利用可能にしてもよい。
【００１５】
例えば装置端点Ａ１６０によって行なわれた変更がサーバー端点１１０を介して装置端点Ｂ１７０に対して同期されるような以前の例示的な記載におけるように、いくつかの場合においてはデータが別の端点を介してデバイス間で同期されてもよいが、少なくともいくつかの場合においては、また少なくとも特定の同期技術を使用する場合には、他の同期接続形態もまた利用可能である。例えば、ある場合には、ＳＳＥを含む同期技術又はプロトコルは、おそらくはサーバー端点１１０のような集中型のサーバーを介して同期させる能力及び他の端点と直接的に同期させる能力を提供してもよい。例えば、装置端点Ａは、いくつかの実施例においては、サーバー端点１１０を介して同期することにより、又は（図１において点線によって示されるように  装置端点Ａと装置端点Ｂとの間で）装置端点Ｂと直接的に同期させることにより、装置端点Ｂに対してデータを同期させることができる。同一の又は他の実施例では、装置端点Ｂは、装置端点Ｃ１８０とデータを直接的に同期させてもよい。例えば、そのような直接的な同期は、ＳＳＥフィード文書の交換及び交換されたフィードに含まれるデータのマージにより、装置端点Ａと装置端点Ｂとの間で実施されるか、又は装置端点Ｂと装置端点Ｃとの間で実施される。更に、いくつかの実施例では、サーバー端点の存在は必要ですらないかもしれない。例えば、いくつかの実施例では、メタデータとブロブのデータは、ある場合には、１つ以上のサーバー端点の介在又は１つ以上のサーバー端点により提供される助けなしに他の装置端点の位置を知っている装置端点間で直接的に通信され得る。
【００１６】
少なくともいくつかの実施例では、多種多様の種類のデータが端点間で同期されてもよい。例えば、２つの端点が、種々の情報を含むテキスト情報を同期させてもよいし、オーディオファイルもしくはビデオファイル又はコンパイルされた実行可能コードのような「バイナリーの」情報を同期させてもよいし、又は、任意の他の種類又はデータフォーマットを同期させてもよい。
【００１７】
同期されるデータは多種多様の方法で表わされてもよい。いくつかの実施例では、そのようなデータは、前述のようなステップの使用を通じて同期された情報を含む端点間で同期される情報に含まれていてもよい。例えば、ＳＳＥを使用する実施例では、そのようなデータは、端点間で交換されるＳＳＥフィードに含まれていてもよい。しかしながら、同一又は他の実施例では、端点間で通信される情報は、最終的に端点間で同期されてもよいし通信されてもよいデータのすべてを含んでいるとは限らないかもしれない。そのような場合のうちのいくつかでは、端点間で通信される情報は、その代わりに又はさらに、同期されるべき他のデータへの参照を含んでもよい。そのような参照は、おそらくはリソースを参照するＵＲＬを含むＲＳＳ又はＡｔｏｍフィード中の「エンクロージャー」素子の使用を介するなどのように様々な方法で提供されてもよい。その後、参照によって識別されたデータは、様々な手段を使用してアクセスされてもよいし格納されてもよい。
【００１８】
本明細書にて使用されるように、用語「メタデータ」は、同期され又は通信されるデータを識別する（また、いくつかの実施例では、当該データを含む）、端点間で通信される情報を指すものと解釈されてもよい。例えば、いくつかの実施例では、メタデータは、同期されたデータの各部分の「項目」を含んでいる文書又はフィードによって具体化されてもよい。いくつかの例示的な実施例において、各項目は次に、「同期データ（sync data）」部分及び「項目データ（item data）」部分を含んでもよい。そのような場合、項目データが同期されるべき情報に関連付けられる一方、同期データは、特定の項目の同期に関する情報に関連付けられてもよい。例えば、同期データが、当該項目に関連付けられたそのようなバージョン番号及び当該項目がどのように又はいつ更新されたかについての履歴等の情報を含む一方、項目データが、項目自体、又は少なくとも当該項目に関連付けられた情報を含んでもよい。
【００１９】
ある場合には、項目データのすべてがメタデータに含まれていてもよい一方、他の場合には、メタデータは、項目データのすべてを含むのではなく、その代わりに、項目データへの１つ以上の参照を含んでいてもよい。大量の項目データがある場合には特に、参照の使用によってメタデータを比較的小さなままとすることができるかもしれない。例えば、大きなオーディオファイル又はビデオファイルをすべてメタデータ自体の項目データ部分に含めるのではなく、項目データ要素は、その代わりに、大きなオーディオファイル又はビデオファイルを参照し、識別し又はその検索の助けとなるある種の参照又は識別子を含んでもよい。メタデータによって参照されるようなそのような情報又はデータは、メタデータとは別々に格納又はアクセスされてもよいし、ある場合には、データの「ブロブ」、単に「ブロブ」又は「エンクロージャー」と呼ばれてもよい。（ある場合には、同期データの少なくとも一部がメタデータに含まれず、その代わりにメタデータから参照されることも可能かもしれない。）
ＳＳＥを使用する実施例では、ある場合にはメタデータはＳＳＥフィードによって具体化されてもよい。例えば、ＳＳＥ情報を含むＲＳＳフィードは、データの各部分の「項目」素子のような共通のＲＳＳ  ＸＭＬ素子を含むＸＭＬ文書として具体化されてもよい。各「項目」要素は、続いて、少なくともいくつかの実施例で、「シンク」という名のＸＭＬ要素によって具体化される同期データを含み、少なくともいくつかの実施例で、「項目」という名のＸＭＬ要素によって具体化される項目データを含み、項目に関する情報又は項目自体を含んでもよい。
【００２０】
一般に、項目データ又は項目データ要素は任意の種類のデータを含み得る。ＲＳＳ文書を備えた単純な事例では、項目データは、「タイトル」及び「記述」のような標準ＲＳＳ素子を含んでいるかもしれない。同一又は他の場合には、項目データは、例えば、おそらくはｈＣａｒｄのようなフォーマットを使用してコード化されたコンタクト情報、又は他のデータを含んでもよい。さらに他の又は同一の実施例において、項目データは、メタデータ又はＲＳＳフィードに含まれていない情報を含む、他の場所に位置する情報への１つ以上の参照を含んでもよい。メタデータがＲＳＳを使用する場合、そのような参照はＲＳＳ「エンクロージャー」要素のように要素を使用して具体化されるかもしれない。
【００２１】
少なくともいくつかの場合では、同期される情報をメタデータがすべて含んでもよいことは注目されるべきである。すなわち、端点間で同期されたメタデータは他の情報を必ずしも参照しなくてもよいし識別しなくてもよい。例えば、メタデータが例えば、接触（contact）に関連した情報のすべてを含んでいる場合、接触情報を含んでいる同期されたデータ（フィード又は文書を含む）は、なお一般にはメタデータと呼ばれてもよい。
【００２２】
多くの同期技術が、転送されるべきデータに関する情報（すなわちメタデータ）及びメタデータによって参照されるデータのブロブを含む情報自体の両方を、ともに同時に又は同一の端点を使用して転送するが、本明細書に記載された技術のうち少なくともいくつかのものによりなされるように、メタデータとブロブを別々に処理することにはいくつかの利点がある。少なくともいくつかの実施例では、例えば、メタデータの量は、参照されるデータ又はブロブデータの量ほど大きくないかもしれず、したがって、別の方法で及びおそらくは異なる端点の組の間でブロブデータを通信している間に、１つの方法で及び特定の端点間でメタデータを通信することは有利かもしれない。１つのそのような配置において、メタデータはサーバー端点１１０の使用を通じてサーバー端点へ通信されてもよいし、その一方で少なくともいくつかの場合にはブロブデータは装置端点間で直接的に通信されてもよい。更に、メタデータのうちのいくつか又はすべてはデータを同期させるすべての端点間で転送されてもよいが、ブロブデータはすべての端点間で必ずしも通信されなくてもよい。例えば、そのブロブが特に要求されるか必要な場合のみ、当該ブロブは端点間で通信されてもよい。
【００２３】
更に、いくつかの実施例では、ブロブデータの１つ以上の代替表現が様々な特性に依存して端点間で生成され通信されてもよい。例えば、情報を比較的低速に通信する通信機構を使用して、単に１つ以上の他の端点に接続される端点は、いくつかの場合に少なくとも他のいくつかの端点によって検索され得るブロブより小さなブロブを所望し検索するかもしれない。１つの具体例では、比較的低い帯域幅のデータ網を使用して接続される携帯電話は、画像又は動画がより小さな大きさのスペースの中で表わされるように（おそらくは、より積極的な圧縮設定などの使用による画像のサイズなどの縮小により）、別コードに変換された画像ファイル又は動画ファイルを得てもよい。他の種類の代替表現もまた可能かもしれないし、又は少なくともいくつかの実施例により裏付けられてもよい。例えば、いくつかの端点は、例えばオーディオファイル又はビデオファイルの全体などではなくオーディオファイル又はビデオファイルのクリップを検索するかもしれない。
【００２４】
少なくともそのような実施例のうちのいくつかにおいては、１つ以上の特定の端点は、特定の代替表現を生成又は提供する能力を持っていてもよい。例えば、いくつかの実施例では、「代替表現サービス」又は「トランスコーディング・サービス」が、サーバー端点１１０（図１に図示されない）に存在してもよいし、サーバー端点又は他の端点上に格納されたブロブの少なくともいくつかの代替表現の生成に参加してもよい。同一又は他の実施例では、１つ以上の装置端点のような少なくともいくつかの特定の他の端点は、さらにブロブの代替表現を提供する能力を有していてもよいし、当該能力を代わりに有していてもよい。さらに本明細書に別記されるように、代替表現の生成及び提供に関連する追加モジュール、サービス及びプロセスが存在する。
【００２５】
サーバー端点の例示的な実施は、例示的なサーバー端点１１０の一部であるものとして図１に示されたサービス及びモジュールの１つ以上を含む様々な機能を含み得る。前述のように、すべてのサーバー端点が説明されたモジュール及びサービスをすべて含んでいるとは限らないかもしれないが、その一方で他のサーバー端点は追加モジュールとサービスを含んでいてもよい。更に、モジュールとサービスのうちのいくつかは特定の方法で互いに通信するものと説明されていてもよいが、一般に、多くのモジュール及びサービスが、他の端点にもサーバー端点にも位置するモジュール及びサービスを含む他のモジュール又はサービスと通信してもよく、そのような通信が特に記述されないモジュール及びサービスを含む他のモジュール又はサービスと通信してもよい。例えば、知識格納モジュール１４５は、例えば、１つ以上の特定の方法でブロブ・キャッシュ・サービス１３０とともに使用されるものとして説明されてもよいが、そのような説明は、知識格納モジュールを、通信が特に記述されるような、ブロブ・キャッシュ・サービス又は他のモジュールもしくはサービスと単に通信することに限定するものではない。少なくともいくつかの実施例で、知識格納モジュールは、さらに、様々な他のモジュール又はサービスと通信してもよい。更に、図１には示されていないが、いくつかの実施例では、１つより多くのサーバー端点が存在してもよい。そのような実施例のうちの少なくともいくつかでは、少なくともいくつかのサーバー端点は他のサーバー端点と通信し、異なる端点間のデータの同期に参加してもよい。そのような複数サーバー端点の各々は、図１に示される例示的なサービス及びモジュールのうちのいくつかのみ又はおそらくはすべてを、例示的なサーバー端点１１０の一部であるものとして含んでもよい。
【００２６】
例示的なストレージ・サービス１２０は、一般にメタデータを格納し、他の端点がサーバー端点１１０とメタデータを同期させるための能力を提供してもよい。例示的な装置端点Ａ１６０は、例えば、ローカルな変更を行い、メタデータが変更を含むようにそれが保持するメタデータを更新し、次に、更新されたメタデータをストレージ・サービスに通信してもよい。その後、ストレージ・サービスは、装置端点Ａから通信されるメタデータの変化をストレージ・サービスによって管理される同じメタデータについてのある表現とマージしてもよい。ストレージ・サービスは、次に、それ自身のマージされたメタデータ又は更新されたメタデータを他の端点に対して利用可能にしてもよい（続いて、他の端点がストレージ・サービスによって提供されるメタデータを検索し、装置端点Ａによって最初に行なわれた変更を組み込むことを可能にする）。ストレージ・サービスは、少なくともいくつかの実施例において、複数のＳＳＥフィードなどの複数の別個のメタデータを格納し提供してもよく、各メタデータは、異なる（又は同一の）データの組を識別してもよい。例示的なストレージ・サービス１２０によって行なわれる動作のうちの少なくともいくつかは、特に図５に関連して、以下により詳細に説明される。
【００２７】
ＳＳＥを使用するものを含むいくつかの実施例では、ストレージ・サービスは、他の端点によって利用可能になったＳＳＥフィードを受け入れてもよい（又は、ある方法で検索もしくは取得してもよい）。その後、ストレージ・サービスは、得られたフィードの変更を、データベース中の記録などとして、ファイル自体として含む様々な方法によりストレージ・サービスが格納又はアクセスし得るフィードのローカルの表現とマージしてもよい。その後、ストレージ・サービスは、他の端点に対して更新されたフィードを積極的に通信することにより、おそらくウェブ又はファイル・サーバーを使用することで、さらに他の端点によってアクセス可能なファイルとして含む様々な方法で、マージ動作の結果である更新されたフィードを、少なくともいくつかの端点にとって利用可能としてもよい。
【００２８】
いくつかの実施例で、例示的なブロブ検索サービス１２５は、ブロブ識別子などのブロブを識別するあるデータを受け取ってもよく、また、ブロブを取得又は検索するために端点が使用し得る１つ以上の「ロケーター」を提供してもよい。例えば、メタデータ及びブロブが異なって又は別個に通信又は同期され得るものを含む実施例において、１つ以上の端点が、ブロブ検索サービスに、特定のブロブが検索され得る位置を含む情報を提供してもよい。いくつかの実施例では、そのような位置は、装置端点、ブロブ・キャッシュ・サービス１３０又はクラウド・ストレージ・サービス１３５を含み得る。ブロブ検索サービスは、その後しばらくして、ブロブを取得することを望む別の端点にこれらの位置の１つ以上を提供してもよい。例示的なブロブ検索サービスによって実行され得る少なくともいくつかの動作は、特に図４及び図６に関連して、より詳細に以下に説明される。
【００２９】
ブロブ識別子は、一般に、ブロブを識別するあるデータであってもよい。いくつかの実施例では、ブロブ識別子は、ブロブ自体が通信されることを要求することなくブロブを特に識別するために、様々な装置及びサーバー機能によって使用されてもよい。したがって、例えば、ストレージ・サービス及び他の端点はメタデータ中でブロブ識別子を使用してもよく、ブロブ検索サービスはブロブ識別子を使用して位置を格納又は提供してもよく、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスは、関連付けられたブロブ識別子を使用してインデックスを付けられるか又は検索されてもよい。いくつかの実施例では、単一のブロブ識別子がブロブを識別するために様々なモジュール又は機能によって使用されてもよい一方、同一又は他の実施例においては、おそらくは異なるモジュール又は機能により、特定の単一のブロブを識別するために、異なるブロブ識別子が使用されてもよい。
【００３０】
ブロブ識別子は様々な方法で実施され、様々な形式をとり得る。少なくとも１つの実施例では、ブロブ識別子は、「ＡＢＣｌ２３」、「ＡＢＣＤＥＦＧＨ」、「１２３４５６」などの文字列、英数字の組又は他の文字にすぎないものであってもよい。別の実施例では、ブロブ識別子は、例えばおそらくは「ｈｔｔｐ：／／ｗｗｗ．ｅｌｓ．ｌｉｖｅ．ｃｏｍ／ＡＢＣ１２３」、「ｈｔｔｐ：／／ｗｗｗ．ｅｌｓ．ｌｉｖｅ．ｃｏｍ／ＡＢＣＤＥＦＧＨ」、「ｈｔｔｐ：／／ｗｗｗ．ｅｌｓ．ｌｉｖｅ．ｃｏｍ／１２３４５６」などのようなユニフォーム・リソース・ロケーター（ＵＲＬ）又はユニフォーム・リソース識別子（ＵＲＩ）の形式をとってもよい。そのような例において、識別子の「ｈｔｔｐ：／／ｗｗｗ．ｅｌｓ．ｌｉｖｅ．ｃｏｍ／」部分に続く文字列は、実際にブロブを識別してもよい。ある場合には、識別子の「ｈｔｔｐ：／／ｗｗｗ．ｅｌｓ．ｌｉｖｅ．ｃｏｍ／」部分が、ブロブ識別子をユーザーが親しんでいる識別子のように見せることや、又は図９に特に関連して以下に述べられる例示的な実施例に含まれる少なくともいくつかの特定の場合には、実際にさらにブロブを見つけることを含む様々な他の目的に使用されてもよい。
【００３１】
例示的なブロブ・キャッシュ・サービス１３０は、一時的なブロブ又はファイルのために記憶位置を提供してもよい。ある場合にはそのような位置は端点間のブロブの転送に役立つ。例えば、装置端点Ａ１６０がサーバー端点１１０とメタデータを同期させ、そのメタデータが、装置端点Ａから利用可能なブロブを識別すると仮定する。さらに当該ブロブがサーバー端点へ通信されず、代わりに、装置端点Ａ上での検索に利用可能のままであると仮定する。その後装置端点Ａはオフラインで動作するか又はサーバー端点及び装置端点Ｂ１７０の１つ又は両方に対して利用不能になると仮定する。ここで、装置端点Ｂがサーバー端点からのメタデータを同期させて、それが装置端点Ａからブロブを検索することを所望すると決定する場合、そのようにすることはできない。というのは、ブロブの単なるコピーを有する装置端点Ａがオンラインでなく利用可能ではないからである。そのような問題は、ブロブ・キャッシュ・サービスの使用を介することを含む様々な手段によって解決される。１つのそのような実施例では、装置端点Ａが利用不可能になる前に、装置端点Ａによって提供されるメタデータに関連付けられたブロブは、ブロブ・キャッシュ・サービスに格納され、次に、装置端点Ｂは、装置端点Ａからの代わりにブロブ・キャッシュ・サービスからブロブを検索してもよい。
【００３２】
キャッシュとして、例示的なブロブ・キャッシュ・サービスは一時的なデータとしてブロブを格納してもよい。すなわち、おそらくは以下に述べるクラウド・ストレージ・サービス１３５とは対照的に、ブロブ・キャッシュ・サービスによって格納されたブロブは、制限された期間の間格納されるにすぎず、ある場合にはブロブ・キャッシュ・サービス自体又は他のあるモジュールもしくはサービスによって制御される様々な時間において削除される。例えば、いくつかの実施例では、ブロブ・キャッシュ・サービスは、いつブロブを削除するか、又は、現在格納されているブロブを新たなブロブにいつ取り替えるかを決定するために１つ以上のキャッシュ・アルゴリズムを使用してもよい。例えば、少なくとも１つの実施例では、ブロブ・キャッシュ・サービスは、その利用可能な記憶スペースを最初に満たし又は占有し、次に、新たなブロブが格納されることになる場合、最近使用されていない１つ以上のブロブを見つけて削除し且つ新たなブロブデータのために利用できるスペースを作るために「最近最も用いられていない」（又はＬＲＵ）アルゴリズムのようなアルゴリズムを使用してもよい。ある場合には、少なくとも、ブロブ・キャッシュ・サービスに関連した機能を実施することは、おそらくは以下に述べるクラウド・ストレージ・サービス１３５を含む持続的な格納部に関連付けられた機能を実施することよりも、金銭的、動作的又はその他のリソースをより必要としない。例えば、ブロブ・キャッシュ・サービスに関連した情報が確実に又は無制限に格納されることは保証されなくてもよいので、ブロブ・キャッシュ・サービスは、少なくとも他のある一時的でないデータを保持するように設計された格納部によって要求され得る冗長なデータ記憶機能について同じレベル又は種類を必要としない。
【００３３】
例示的なブロブ・キャッシュ・サービス１３０によって行なわれ得る少なくともいくつかの動作は、特に図７に関連して、より詳細に以下に述べられる。
【００３４】
例示的なクラウド・ストレージ・サービス１３５は、一般に、一時的でないデータのために「クラウド中の」記憶を提供してもよい。すなわち、ブロブを格納し、クラウド・ストレージ・サービスが、例えば、「常にオン状態にある」又は「常にアクセス可能である」として、及び、「信頼できる」記憶を提供するものとして、ユーザー及び端点から見なされるという点において、クラウド・ストレージ・サービスはブロブ・キャッシュ・サービスのようにいくつかの方法で動作し得る。端点は、例えば装置端点上にブロブデータを格納する代わりに、いくつかの場合において含む様々な場合において、クラウド・ストレージ・サービスを使用してブロブデータを格納してもよい。例示的なクラウド・ストレージ・サービスによって行なわれ得る少なくともいくつかの動作は、特に図８に関連して、より詳細に以下に説明される。
【００３５】
いくつかの実施例では、ブロブデータのために記憶を提供し、ブロブ・キャッシュ・サービス１３０とは別に動作する、１つ以上の追加的なサービス又はモジュール、又は、クラウド・ストレージ・サービス１３５は、例示的なサーバー端点１１０の一部であってもよい。例えば、１つの実施例では、そのような異なるブロブ・データ・ストレージ・サービスは、ブロブ・キャッシュ・サービスによって提供されるものより比較的持続的であるが、（少なくとも、これら例示的なサービスが上記に導入された場合には、）クラウド・ストレージ・サービスによって提供されるものほど比較的持続的でない記憶を提供するかもしれない。そのようなサービスは、例えば、ブロブが格納され得る他の端点又はブロブが利用可能となり得る他の端点についての知識を使用して、いつブロブを格納するかを決定することによりそうするかもしれない。例えば、比較的高度に利用可能であると知られているいくつかの他の端点上にブロブが既に格納されていることをある知識が示す場合、そのようなブロブ・データ・ストレージ・サービスはブロブを格納しないかもしれない。１つの具体的な例において、例えば通常ほとんどの時間又はすべての時間にネットワーク存在するか又はネットワークに接続されている４つの端点に特定のブロブが格納されていることをブロブ・データ・ストレージ・サービスにアクセス可能な知識が示す場合、要求を行う端点が当該４つの他の端点の少なくとも１つからブロブを検索する可能性が高いので、例示的なブロブ・データ・ストレージ・サービスはブロブを格納することができないかもしれない。少なくともいくつかの実施例では、ある新たな種類のブロブ・データ・ストレージ・サービスにおいてそのような異なる機構は必ずしも実施される必要がないことはさらに注目されるべきであり、代わりに、そのような機構はブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスの一部であるかこれらに含まれ得るということもまた注目されるべきである。
【００３６】
特定のメタデータを同期させる端点は、一般に、そのようなメタデータが１つ以上の他の端点上でいつ更新されたかを知ろうとしてもよく、その結果、例えば、端点は、おそらく、メタデータの自身のコピーを更新することができるほか、おそらく任意の所望のブロブデータを検索することができる。時に非効率的な一つの実施例において、端点は、おそらくはサーバー端点１１０により提供されるものを含む１つ以上の利用可能なメタデータを「ポーリング」又は周期的にチェックし、他方のメタデータが変化した場合に同期するための変更が存在することを決定する。代替的に、端点は、例示的な通知サービス１４０によって提供される機能を使用するかもしれない。通知サービスは、端点が特定のメタデータに対する関心を登録又は示すための能力を提供してもよく、その後、特定のメタデータが変更する場合に、興味を持っていた端点又は登録された端点に通知を供給してもよい。その結果、端点は、変更のためのポーリングを回避することができ、又は少なくともそれほど頻繁にポーリングしなくてもよく、メタデータが変更される場合にはなお、ある対策をとることができてもよい。通知は、様々なネットワーキング又は他の通信機構によって提供される２地点間又はブロードキャスト機能の使用を介することを含む様々な方法で実施されてもよい。同一又は他の実施例では、例示的な通知モジュールはまた、メタデータへの変更に加えて他のイベントに関する通知を提供してもよい。例えば、いくつかの実施例では、通知モジュールは、更新又は変更されたロケーター（そのようなロケーターは例示的なブロブ検索サービスによって管理されてもよい）に関する情報を含む通知を端点に周期的に提供してもよい。ブロブを検索する際に更新されたロケーターを使用することにより、ブロブを検索する方法及びしたがっておそらくはブロブをより効率的に検索する方法を端点が変更したり、端点がネットワーク又は他の条件の変更に適合したりするなどすることを可能にする。
【００３７】
例示的な知識格納モジュール１４５は、サーバー端点１１０により提供されるインタラクション又は機能を介して獲得され得る「知識」のための記憶又は当該「知識」へのアクセスを提供してもよい。その後、そのような知識は、ある場合には、データの同期を制御又は最適化することを含む様々な目的に使用されてもよい。知識がどのように集められ使用されるかについてのより多くの例が本明細書の他の場所に記載され得るが、ある場合には、知識は、サーバー端点と通信するか又は他の端点と通信する端点に関連付けられる特性などのデータに一般に関連してもよい。知識格納モジュールによって格納又は使用される特性は一般に「知識特性（knowledge characteristics）」と呼ばれてもよい。例えば、いくつかの例示的な知識特性は、接続の速度、接続の利用可能な帯域幅、接続に関連した任意のコストなどのような、装置端点がサーバー端点に一般に接続する方法に関する情報を含んでもよい。例えば、接続は、高速データネットワーク又は比較的遅い携帯電話ネットワークを介してもよいし、接続は、その日の特定の時間において空いているがその日の別の時間には使用されている帯域幅を有していてもよい、といった具合である。知識特性はまた、端点がいつ共通してオンラインとなるのか又は利用可能となるのかに関する情報を含む、端点に関する他の情報を含み得る−装置はラップトップ又は携帯電話かもしれないし、断続的に接続されるかもしれず、「常に」接続される「常時オン状態の」デスクトップコンピューターかもしれないし、また他の場合もある。別の例として、知識モジュールは、特定のブロブがどれくらい頻繁に要求されるか、どの端点からブロブが要求されるかなどの、端点とサーバー端点とのインタラクションから生じる情報を格納してもよい。知識がどのように又はどこで取得されるかにかかわらず、知識は、その後、データが同期される方法を制御又は最適化することの一部として含む様々な方法で、サーバー端点又はおそらくは他の端点により提供及び使用される。
【００３８】
さらに別の例において、接続特性もしくは装置の他の特性又は他の知識などの知識は、要求されたブロブの１つ以上の代替表現を識別又は提供するべきかどうかを決定するために使用されてもよい。例えば前述のように、画像が低速な接続機構を使用して接続される端点によって要求される場合又はブロブが比較的により制限された記憶スペースを有する端点に格納される場合、代替表現は、例えば、そうでなければ大きな画像のより小さな別コードに変換されたバージョンを含んでもよい。同一又は別の例において、知識は、特定の端点が特定のブロブの特定の代替表現を有するか否か、及び／又は（おそらくは特定の端点において代替表現を生成したり、他のある端点から代替的なバージョンを検索したりすることにより）特定の端点が特定の代替表現を使用して表わされるブロブを生成又は提供する能力を有するか否かを含む。
【００３９】
最後に、サーバー端点１１０の一部であるブロブ・ダウンロード・モジュール１５０又は装置端点Ａ１６０の一部であるブロブ・ダウンロード・モジュール１６２などの例示的なブロブ・ダウンロード・モジュールは、ある場合には、他の端点を含む様々な他の位置からブロブをダウンロード又は検索してもよい。一般に、ブロブ・ダウンロード・モジュールは、ブロブのある一部又は全体を検索するために１つ以上のブロブ検索機構を使用してもよく、「ブロブ検索機構」は、例えば、ブロブが配置されてもよい１つ以上の方法及び／又はブロブが検索されてもよい１つ以上の方法を指定してもよい。おそらくは比較的単純な１つのブロブ・ダウンロード・モジュールは、例えば、ＨＴＴＰ、ＦＴＰ又は様々な他のファイル共有プロトコルなどのプロトコルを使用する単一のブロブ検索機構を使用して、ブロブを検索することができるのみであってもよい。別のブロブ・ダウンロード・モジュールは、そのようなブロブ検索機構のうちの任意のもののほかに他のブロブ検索機構を使用して、ファイルを検索することができてもよい。例えば、いくつかのブロブ・ダウンロード・モジュールは、ビット・トレント（BitTorrent）プロトコルのようなプロトコルによって記述された機構などの、様々な端点から数個の同じブロブを「同時に」検索し得る機構を使用することができるかもしれない。同一又は他のブロブ・ダウンロード・モジュールはまた、より効率的にブロブを検索するために例えば「差分圧縮」などの他の機能を使用してもよく、ブロブの実に小さな一部が変更されるたびにブロブ全体が通信される必要がないように、変更されたブロブの部分のみが通信される。いくつかのブロブ・ダウンロード・モジュールは、ある場合には、いくつかの実施例において前述の例示的なブロブ検索サービス１２５と同一又は類似であるブロブ検索サービスを使用して、ブロブを見つけてもよいが、同一又は他の実施例において、ブロブ・ダウンロード・モジュールがブロブ検索機能の使用又はブロブ検索サービスの使用をすることなくブロブを見つけたり検索したりしてもよい。
【００４０】
更に、ある場合には、ブロブ・ダウンロード・モジュールは、ブロブ・ダウンロード・モジュールによって使用されるブロブ検索機構（又はこのコンテキストにおける「ドライバー」）を組織するために「プラグ着脱可能な」アーキテクチャを使用してもよい。例えば、１つのブロブ検索機構又はドライバーは、例示的なブロブ・キャッシュ・サービスからのブロブの検索を可能にしてもよく、別のドライバーは、ブロブを提供することができ、（ある場合には１つより多くの端点によりビット・トレントのような機構の使用を介することを含んで）そのような端点の１つ以上からブロブを検索することができる１組の端点を検索するためにブロブ検索サービスを使用してもよいし、さらに別のドライバーは、ブロブ検索サービスを使用せず、様々な他の機構の１つ以上を使用してブロブを検索する１つ以上の端点を識別してもよい。プラグ着脱可能なアーキテクチャにより、ブロブ・ダウンロード・モジュール又はブロブ・ダウンロード・モジュールを含む端点の全面的な構成や実施を必ずしも変更することなしにブロブ・ダウンロード・モジュールが展開されたか既に使用された後を含む様々な時において、追加のブロブ検索機構を加えることができてもよい。そのような機能は、中核のブロブ・ダウンロード・モジュール又は端点自体を変更せずに、新たなブロブ検索機構の後の追加を可能にし得る。
【００４１】
この例における各端点が、デスクトップコンピューター、サーバーコンピューター、ラップトップ・コンピューター、ワークステーション・コンピューター、モバイル又は携帯電話、携帯情報端末（ＰＤＡ）などを含む、任意の数の汎用又は専用のコンピューターを表すことは注目されるべきである。更に、特定の例示的な端点は「装置」又は「サーバー」端点であるとして記載されていてもよいが、そのような指定は必ずしも計算ハードウェアの性質や端点の種類を制限しない。サーバー端点又は装置端点は、少なくともいくつかの実施例において、デスクトップコンピューター、サーバーコンピューター、ラップトップ・コンピューター、ワークステーション・コンピューター、モバイル又は、携帯電話、ＰＤＡなどを含む任意の種類の計算ハードウェア上で実施されてもよい。一般に、端点が装置端点と考えられるかサーバー端点と考えられるかは、他の特性のなかで、例えば端点が実施される計算ハードウェアの性質によってではなく端点によって提供される機能によって決定され得る。例えば、例示的なサーバー端点１１０に関連付けられるものとして前述されたサービス及びモジュールの１つ以上を使用してサーバー機能を提供する端点は、たとえ端点が例えばラップトップコンピューター上で実施されても、サーバー端点と考えることができる。端点は、同一又は他の時に装置端点又は他の種類の端点として動作する一方、特定の時にはサーバー機能を提供し、そのためサーバー端点と考えられるかもしれないことはさらに注目されるべきである。さらに、いくつかの実施例では、特定又は単一の計算装置は複数の端点をホストしてもよいし含んでいてもよい。これら又は他の実施例では、端点間の情報の通信は、少なくとも幾つかの場合には、特定の単一の計算装置上で実行される実行可能コード間の単なる通信を含んでもよい。
【００４２】
端点並びに端点内のモジュール及びサービスさえもが様々なネットワーキング又は他の接続手段を使用して接続されてもよい。そのような通信手段は、イーサネット（登録商標）、Ｗｉ−Ｆｉ、携帯電話又はデータ網などの任意の種類のネットワークを含む、データを送信できる任意の手段を含んでもよく、少なくともいくつかの場合には、コンパクトディスク（ＣＤ）又はフラッシュ・メモリー・ドライブのような、物理媒体の転送を含む他の種類の転送を含んでもよい。
【００４３】
図２に移ると、同期されるデータを変更し、そのような変更を他の端点に利用可能にする場合に、装置端点を含む端点によって行なわれ得る各種の動作を含む例示的な一般化された動作フロー２００が示される。図２の以下の説明は、他の図に関してなされてもよい。しかし、図２に関して記載される動作フローがこれらの他の図に関して記載された要素と共に使用されることに制限されるようには意図されないことが理解されよう。さらに、図２の例示的な動作フローは、特定の実行の順序を示すが、１つ以上の他の実施例において、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかが同時に組み合わせられてもよいし実行されてもよく、同一又は他の実施例において、いくつかのステップが実行されなくてもよいことは理解されるべきである。
【００４４】
動作２１０の例示的な実施例では、変更は、おそらくは以前に図１に関して紹介された装置端点Ａ１６０などの端点上のローカルデータに対して行なわれる。例えば、ユーザーは、新たなデータを作成するか又は既存データを修正もしくは削除するためにアプリケーションを使用するかもしれない。修正されたデータは、例えば、接触、カレンダー項目、オーディオクリップ、ビデオクリップ、ワードプロセシング又はスプレッドシートのファイル、他のファイルなどの多種多様の種類のデータの１つ以上を含んでもよいがこれらに限定されない。
【００４５】
その後、そのような変更は、端点間で同期されるメタデータ又はブロブのデータへの１つ以上の変更をもたらすかもしれない。例えば、ユーザーが、例えば、ビデオ編集アプリケーションを使用して新たなビデオファイルを作成し、新たなファイルが少なくとも１つの他の端点と同期されるデータの一部であると仮定する。動作２１０の一部又は別の動作の一部として、メタデータが新たなビデオファイルに関連した項目を含むように、変更が行なわれた端点によって保持されたメタデータが更新されてもよい。そのような新たな項目は、少なくともいくつかの実施例において、例えばおそらくはビデオの名前、ビデオについてのテキスト記述、及び（ビデオデータ又はコンテンツがメタデータ・フィード自体に含まれていない場合には）実際のビデオデータ又はコンテンツを識別する参照など、項目自体に関する情報と同様に、項目の同期に関するデータ（おそらくは項目がいつ作成されたか又はその後いつ更新されたかに関するバージョン情報又はデータなど）を含んでもよい。既存の項目が修正される場合、メタデータ及びおそらくブロブデータは同様に更新されてもよい。既存の項目が削除される場合、メタデータは修正され、その結果、例えば、項目が削除されたものとして特徴付けられ、任意の関連するブロブデータも削除されてもよい（又は、少なくともいくつかの実施例においては、利用可能にしておかれてもよい）。
【００４６】
動作２１５の例示的な実施例において、動作２１０の一部として更新されたメタデータは、おそらくは、少なくともある場合には図１に関連して以前に説明された例示的なサーバー端点１１０のようなものであるサーバー端点などのサーバー端点へ通信されてもよい。そのような通信は、例えば、メタデータがどのように表わされ、変更を行った端点もしくは受信側端点に利用可能な端点にとって利用可能なネットワーキング又は他の通信機能に依存する多種多様の方法で実行されてもよい。例えば、メタデータがＸＭＬ文書で具体化される実施例では、メタデータは、おそらくは、ＸＭＬ文書を含んでおりサーバー端点において実行されているかもしくはサーバー端点に関連付けられるＨＴＴＰサーバーに提出されるＨＴＴＰ  ＰＯＳＴ要求を使用して、サーバー端点へ通信される。別の実施例では、変更を行った端点は、更新されたメタデータを特定の位置で、例えば、ネットワーク・シェア上で又は端点自体に関連したＨＴＴＰサーバーを介して利用可能にしてもよく、サーバー端点はその位置からメタデータを検索してもよい。
【００４７】
少なくともいくつかの実施例では、メタデータ変更に関連付けられたブロブデータは、サーバー端点に通信されなくてもよい。代わりに、ブロブデータは、例えば、変更が行なわれた端点上で（少なくともある期間の間）保持されてもよいが、これに限定されるものではない。例えば、ブロブデータが端点に作成されたビデオデータを含む場合、動作２１５の実施例が完了した後、ビデオデータは端点上にのみ存在してもよい。ある場合には、そのようなブロブデータがある後の時点で別の端点によって検索又は取得されてもよい。
【００４８】
いくつかの実施例では、ブロブ検索サービスがメタデータの変更に関連したブロブデータについて位置情報を含むように、ブロブ検索サービスは動作２１５の実施例の一部として更新されてもよい。その後、別の端点は端点からブロブデータを検索することの一部としてブロブ検索サービスを使用してもよい。同一又は他の実施例では、別の端点に伝えられたメタデータを別の端点がマージ又は処理する場合、ブロブ検索サービスは更新されてもよい。そのような動作は、少なくとも図５に関して以下に述べられる動作５２５のような動作によって、いくつかの例において、実施されてもよい。
【００４９】
最後に、動作２１５のいくつかの実施例においては更新されたメタデータがサーバー端点に通信されてもよい一方、同一又は他の実施例においては、更新されたメタデータは、代わりに、又はさらに、両方とも図１に関連して前述される装置端点Ｂ１７０及び／又は装置端点Ｃ１８０などの、他のサーバー端点又は他の装置端点を含む１つ以上の他の端点に通信されてもよい。例えば、メタデータがＳＳＥ情報を含んでいるか使用する実施例においては、そのためメタデータは、任意の（及び時にはサーバーではない）端点間で通信され同期されてもよく、動作２１５の少なくともいくつかの実施例では、様々な他の端点へ更新されたメタデータを通信してもよい。
【００５０】
動作２２０の例示的な実施例では、変更が行なわれた端点は、以前にサーバー（又は他の）端点に通信されたメタデータに対する将来の更新を通知されるように、予約又は登録されてもよい。そのような予約又は登録の後、その後、端点は、少なくともいくつかの場合には、更新されたメタデータが以前に通信されたサーバー端点などの他のある端点上でメタデータが変更される場合に、（様々な方法で具体化又は実施された）通知を受け取ってもよい。以前に述べたように、端点はこれによって、データの変更について端点が積極的にポーリング又はチェックすることを要することなく、関係のあるデータへの他の変更に気づくことができる。
【００５１】
動作２２０の実行の一部として、ある場合には予約又は登録がなされてもよいが、同じ（又は異なる）予約又は登録が、別の時になされてもよいし、全くなされなくてもよい。
【００５２】
動作２２５の例示的な実施例では、端点は、例えば要求者にブロブを提供することにより、メタデータの変更に関連付けられるブロブを求める要求に応えてもよい。すなわち、例えば、ブロブを参照するか又はブロブに関連付けられるメタデータの変更が１つ以上の他の端点によって受信又は処理された後のある時点において、それら１つ以上の他の端点は（又は別の端点）は、ブロブによって含まれるデータを必要とするか又は所望することを決定してもよい。ブロブデータがメタデータの一部として通信されない場合を含むいくつかの実施例において、その後、他のそのような端点は、ブロブが存在する別の端点からのブロブを要求することによりブロブを検索してもよい。ブロブが要求者に提供される方法と同様にブロブが要求される方法も、より詳細に以下に述べるものと同様に、例えばブロブ検索サービス及びブロブ・ダウンロード・モジュールに関して以前に紹介されたもののうちのいくつかを含む多種多様の方法で実施されてもよい。
【００５３】
図３に移ると、別の端点からのデータを同期させる場合に、装置端点を含む端点によって行なわれ得る各種の動作を含む例示的な一般化された動作フロー３００が示される。図３についての以下の説明は他の図に関してなされてもよい。しかし、図３に関して述べられる動作フローは、これらの他の図に関して述べる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図３の例示的な動作フローは特定の実行の順序を示しているが、１つ以上の代替的な実施例において、動作は異なった順序でなされてもよい。更に、例示的な動作フローが複数のステップを含んでいるが、いくつかの実施例においてはこれらの動作のうちの少なくともいくつかが同時に組み合わせられてもよいし、同時に実行されてもよく、また、同一又は他の実施例においては、いくつかのステップは実行されなくてもよいことが理解されるべきである。
【００５４】
動作３１０の例示的な実施例では、端点は、端点が関心を持つメタデータが変更されたことを決定してもよい。例えば、端点は、おそらくは図２に関して以前に述べたような方法で、以前に同じメタデータを更新しており、将来の変更について通知を受けるように登録しているかもしれない。この場合、又は他の場合において、そのような端点は、メタデータのコピーを保持するサーバー端点を含む他のある端点から通知を受け取ってもよい。別の実施例では、端点は周期的にある位置をポーリングし、その位置でのメタデータが変更されたことをポーリングの動作を通じて決定してもよい。さらに他の実施例では、この動作は行なわれなくてもよい。そのような実施例では、端点は、メタデータが変わったかどうかにかかわらず、メタデータを得てメタデータをマージするなど、例示的な動作フロー３００の他の動作のうちの少なくともいくつかを周期的に実行してもよい。（この動作フローに関連付けられた記述は、ある場合には、問題となっているメタデータに変更が存在すると仮定してもよい−変更が実際には存在しない場合、様々な動作が異なったように実行されてもよいし、おそらくは全く実行されなくてもよい。）。
【００５５】
動作３１５の少なくともいくつかの実施例では、端点は、様々な手段を介して変更を含み得るメタデータを得てもよい。例えば、図１に関して以前に述べた装置端点Ａ１６０のような装置端点をおそらくは含む端点は、図１に関して以前に述べたサーバー端点１１０のようなサーバー端点の一部であるか又はこれに関連付けられるウェブサーバーへのＨＴＴＰ  ＧＥＴ要求を開始してもよく、またそれに応じて１つ以上の変更を含むメタデータを受け取る。他の実施例では、メタデータは、別の端点によって積極的に通信されてもよいし、又は様々な他の方法で得られてもよい。いくつかの実施例では、得られたメタデータは、特定のメタデータによって表わされ得る項目をすべて含んでいるかもしれない一方、同一又は他の実施例では、少なくともいくつかの場合において、メタデータは、例えば、変更された項目のみを含む項目の部分集合を含むにすぎなくてもよい。
【００５６】
動作３２０の例示的な実施例では、得られたメタデータは、ローカルに保持されたメタデータのコピーとマージされてもよい。そのようなマージ動作は、動作フロー３００を実行する端点によって保持又は修正されるメタデータの別のコピーの中へ、得られたメタデータ中に具体化された変更を組み込んでもよい。そのようなメタデータのローカルのコピー又はローカルのメタデータの格納は、（少なくともいくつかの実施例で）ファイルシステム内で１つ以上のファイルに存在し得るＸＭＬフィード（又は他の）文書のコピーとして、データベース中で列又は記録として含む、様々な方法で保持されてもよい。
【００５７】
メタデータがＳＳＥ情報を含んでいる実施例においては、そのようなマージ動作はＳＳＥマージを使用して実行されてもよい。ＳＳＥマージを実施する１つの方法の単純化された記述において、この例において得られたメタデータによって具体化される「異質の（foreign）」項目を、ローカルに保持されるか、メタデータをマージする端点に関連付けられる「ローカルの」項目と比較する、ＳＳＥによって指定されたプロセスに続いてもよい。ローカルのメタデータ格納部に存在しない新たな異質な項目は、ローカルのメタデータ格納部に一般には組み込まれ、それによって、新たなローカル項目を作成する。おそらくは両方の項目が同じＳＳＥ識別子を有するので、異質な項目がローカルの項目に対応する場合において、マージプロセスは、より最近に更新された項目であるべき得ている項目（winning item）を選択することによるなど、１つ以上の手段を使用して、「得ている項目」及び「失っている項目（losing item）」を選択してもよい。最後に、ローカルの項目が得ている項目でない場合、それが得ている項目によって具体化されたデータを組込むように、ローカルの項目が更新されてもよい。
【００５８】
動作３２５の少なくともいくつかの実施例では、情報を同期させておりメタデータを得た端点が、メタデータによって参照又は識別された１つ以上のブロブをさらに要求又は所望するかどうかが決定されてもよい。例えば、メタデータがメタデータに関連した少なくともある情報を含んでおらず、その代わりに、例えば、別の場所に格納されたデータのブロブへの１つ以上の参照を含み得るような実施例では、この動作は、それらのブロブの１つ以上が所望又は要求されることを決定してもよい。単に１つの例において、動作フロー３００の目的の少なくとも一部が、動作フロー３００を実行している端点に対してメタデータ及び関連するブロブデータの両方を同期させることである場合、そのようなことになりうる。ブロブが必要な場合、例示的な動作フローは動作３３０に進んでもよい。ブロブが必要でない場合、例示的な動作フローは終了してもよい。
【００５９】
動作３３０の例示的な実施例では、得られたメタデータによって識別又は参照される１つ以上のブロブが検索されてもよい。検索するためのブロブは、様々な方法で識別されてもよい。例えば、ある場合には、変更されたメタデータ項目に関連した任意のブロブが検索されてもよい。他の実施例では、変更されたブロブの部分集合だけが検索されてもよい−おそらく、特定のサイズ以下のブロブだけが検索されるかもしれず、又は、他のいくつかの基準が検索するためのブロブをフィルタリング又は決定するために使用されてもよい。いくつかの実施例では、単一のメタデータ項目は単一のブロブを識別するが、同一又は他の実施例では、単一のメタデータ項目は複数のブロブを識別してもよい。その後、識別された各ブロブは、１つ以上の異なる方法で検索されてもよい。いくつかの実施例では、識別されたブロブの１つ以上の代替表現、特定のファイル（画像、ビデオ又はオーディオファイルなど）の別コードに変換されたバージョンなどが検索されてもよい。最後に、いくつかの実施例では、ブロブは、図４に関して以下に述べる動作と同一又は類似する動作を使用して検索されてもよい。他の実施例では、ブロブは１つ以上の異なる方法で検索されてもよい。
【００６０】
図４に移ると、ブロブを検索又はダウンロードするために行なわれ得る各種の動作を含む例示的な一般化された動作フロー４００が示されている。図４の以下の説明は他の図に関してなされてもよい。しかし、図４に関して述べられる動作フローは、これらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図４の例示的な動作フローが特定の実行の順序を示している一方、１つ以上の他の実施例においては、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかが同時に組み合わせられてもよいし実行されてもよく、同一又は他の実施例において、いくつかのステップは実行されなくてもよいことは理解されるべきである。
【００６１】
動作４１０の例示的な実施例では、ブロブ検索サービス（又はＢＬＳ）がブロブを検索することの一部として使用されるか否かが決定されてもよい。例えば、いくつかの実施例では、端点がブロブ検索サービスを使用せずに（又は使用することによって）ブロブを最初に検索することを試みてもよいので、この決定は少なくとも部分的になされてもよい。そのような実施例では、ブロブ検索サービスは、例えば、ブロブ検索サービスを使用せずにブロブを検索する最初の試みがなされた後にのみ使用されるかもしれない。そのような最初の試みが失敗する場合、ブロブ検索サービスが使用されてもよい。別の実施例では、ブロブ検索サービスは利用可能ではないかもしれず、又は、決定は様々な他の方法でなされてもよい。ブロブ検索サービスが使用される場合、動作フロー４００は動作４１５に進んでもよい。ブロブ検索サービスが使用されない場合、動作フローは動作４３５に進んでもよい。
【００６２】
ブロブ検索サービスが使用される場合、動作フロー４００は動作４１５に進んでもよく、その場合、例示的な実施例において、端点は所望のブロブに関連した１つ以上のロケーターについてブロブ検索サービスに質問してもよいし、問い合わせてもよい。そのような問合せは、様々な通信機構又は手段を使用して、ブロブ検索サービスに伝えられてもよい。いくつかの実施例では、追加情報もまた要求に含まれていてもよい。例えば、いくつかの実施例では、端点はまた、特定のブロブが１つ以上の代替表現で提供されることを要求してもよい。例えば、携帯電話は、比較的より小さな大きさのスペースを占めるブロブの表現を要求するかもしれない（その結果、潜在的に低速のネットワーク接続を介して転送するのがより容易になったり、制限された格納スペースをもつ装置上に格納することがより容易になったりする）。
【００６３】
そのような要求に応答して、ブロブ検索サービスは、１つ以上の「ロケーター」を提供してもよく、ロケーターは、ブロブの少なくとも一部を提供することができる端点の識別を一般に含み得る。例えば、１つの実施例において、ブロブ検索サービスは、要求されるブロブの少なくとも一部を提供することができるとブロブ検索サービスが決定した１つ以上の端点を指定するドメインネーム又はＩＰアドレスを各々が順に含む１つ以上のロケーターを提供してもよい。
【００６４】
他の実施例と同様に、（必ずしもすべての実施例においてではないが）そのような実施例のうちの少なくともいくつかにおいては、ブロブ検索サービスによって提供される１つ以上のロケーターはまた、他の情報を含んでもよい。例えば、いくつかの場合においては、ロケーターは、ロケーターにより識別される端点とコンタクトをとるべき方法又はブロブが検索されるべき方法を決定するために少なくとも部分的に使用される情報を含んでもよい。例えば、ロケーターは、ある種類のピア・ツー・ピアもしくは分散されたデータ転送機構、ＨＴＴＰ、ＦＴＰなどのような、使用され得るサポートされるプロトコルについてのある指示を含んでもよい。同一又は他の場合では、１つ以上のロケーターは、特定のロケーターを好まれているものとして識別し得る好み又は順序についてのある指示を含んでもよく、例えば、そのような好まれるロケーターが、他のロケーターが使用される前に最初に使用されてもよい。
【００６５】
同一又は他の実施例では、特定のブロブの一部又は部分のみが特定の端点から利用可能であってもよい。例えば、特定のブロブの最初の５０％は特定の端点を使用してアクセス可能である一方、同じブロブの最後の５０％は別の端点を使用してアクセス可能であってもよい。そのような実施例では、ロケーターは、ある場合には、ブロブのどの一部が、ロケーターに関連付けられる特定の端点によって提供され得るのかを示す情報を含んでもよい。
【００６６】
同一又はさらに他の実施例では、ロケーターは、図１に関して以前に述べた、例示的な知識格納モジュール１４５によって利用可能とされた知識などのある種類の知識によって導出又は提供される情報を含んでもよい。そのような知識は、例えば、（おそらくはそれらのロケーターが、より速い接続をしていたり、ロケーターを要求する端点に物理的に又は論理的により近接していたりする端点を識別するので）１つ以上のロケーターを提供するブロブ検索サービスが特定のロケーターの使用に対する好みを示すことを可能にするか、又は、様々な他の方法で提供するロケーターをブロブ検索サービスが修正又は変更することを可能にし得る。
【００６７】
ロケーターは、以前に述べたように追加情報を含んでいてもよいが、同一の場合又は実施例のいくつかにおいて、提供されるロケーターが追加情報を含まなくてもよいことはさらに注目されるべきである。そのような場合、及び他の場合において、図示されないものを含む他の動作は、使用する通信プロトコル又は転送プロトコルを決定するなどのためにロケーターにおいて識別された端点による交渉プロセスなどの他の手段によってブロブを検索する方法を決定してもよい。
【００６８】
動作４２０の少なくともいくつかの実施例では、提供されるロケーターをブロブを検索するために使用することができるかどうかが決定されてもよい。例えば、ロケーターにおいて識別された端点は問い合わせられてもよく、また、ブロブ検索を開始するためにブロブを検索するための要求が送信されてもよく、ブロブの状態又は利用可能性をチェックするための要求が送信されてもよい、といった具合である。ブロブが検索できないという決定がなされる場合−おそらくはロケーターがオフラインの端点を識別し、例えば、又はブロブが他のある理由で検索することができない場合−少なくともいくつかの実施例において、動作フロー４００は動作４３０に進んでもよい。ブロブを検索するためにロケーターの１つ以上を使用することができる場合、動作フローは動作４２５に進んでもよい。
【００６９】
動作４２５の例示的な実施例では、ロケーターはブロブを検索するために使用されてもよい。この動作は、ロケーターにおいて提供される情報、サポートされるか又は利用可能な通信プロトコル又はファイル転送プロトコルなどを含むがこれらに限定されない様々な特性に依存する多種多様な方法で実行されてもよい。いくつかの実施例では、ブロブの検索は、少なくとも部分的には、図１に関連して以前に述べたブロブ・ダウンロード・モジュール１５０及びブロブ・ダウンロード・モジュール１６２に類似した又はこれらと同一のブロブ・ダウンロード・モジュールの使用を通じて実施されてもよい。
【００７０】
例えば、例示的なブロブ・ダウンロード・モジュールを使用する実施例では、端点はブロブ・ダウンロード・モジュールにロケーターを提供してもよく、ブロブ・ダウンロード・モジュールは、次にロケーターの情報を評価し、要求されたブロブを検索又はダウンロードするための１つ以上の方法を決定するために当該情報を使用してもよい。比較的単純な例では、端点又はブロブ・ダウンロード・モジュールは、ブロブを有する別の端点を見つけて、おそらくはＨＴＴＰ  ＧＥＴやファイルシステムのファイル検索要求などのある種類のネットワーク通信を識別された他の端点へと送り、それに応じて要求されたブロブを受信するために単に単一のロケーターを使用してもよい。そのような実施例及び他の実施例において、そのような要求が成功しないか、（例えば、おそらくは接続が遅いといった）ある理由で好ましくないと決定される場合、１つ以上の他のロケーターがさらに又は代わりに使用されてもよい。
【００７１】
別の実施例では、端点又はブロブ・ダウンロード・サービスは、単一のブロブの異なる（又は同じ）部分を求めるおそらくは別個の要求を含む、異なる端点への複数の要求を開始するために複数のロケーターを使用してもよい。いくつかの場合において、複数の端点から同じブロブの異なる一部を得ることは、より速く、又は、任意の特定の単一の端点に対してより影響を与えずに、ブロブの検索を完了することを可能にするか、又は他の長所を有し得る。
【００７２】
少なくともいくつかのブロブ検索の実行又は動作において、転送されるべきデータの量を最小化するか又はブロブの検索をさらに最適化するために１つ以上の技術が使用されてもよい。例えば、いくつかの実施例は、より少ないデータを検索するために、ＺＩＰ又は他の圧縮技術などのデータ圧縮を使用してもよい。同一又は他の実施例では、要求を行う端点に既に存在し得るブロブのコピーから変更されたブロブの一部のみが、１つ以上の他の端点から要求又は通信されてもよい。変更されたデータが存在するブロブが比較的大きい場合でさえ、そのような「差分圧縮」は小さなデータ量のみが通信されることを可能にし得る。
【００７３】
いくつかの実施例では、端点はブロブの検索又はダウンロードの状態に関して別のサービス又は端点に通知してもよい。例えば、端点は、ブロブ検索サービスが特定のブロブのうちのいくらか又はすべてを検索したとブロブ検索サービスに通知してもよい。そのような情報を使用して、ブロブ検索サービスは、同じブロブを求める他のある要求を処理することの一部として端点を識別するロケーターを提供することができてもよい。ある場合には、ブロブが完全に検索される場合に限り、この情報を提供する端点はそのようにしてもよいが、他の場合又は実施例においては、ブロブが検索されるときに端点は情報を周期的に提供してもよく、その結果、例えば、ブロブの２５％が検索された場合、ブロブの５０％が検索された場合などに、ブロブ検索サービスは更新される。同一又は他の実施例において、別の端点に伝えられた情報は、ブロブのどの部分が検索されたか−例えば、ブロブの最初の５０％が検索された、ブロブの最初の１０％及び最後の１０％が検索されたなど−についての指示を含んでもよく、そのような識別は、今度は他の端点が異なる端点から同じブロブの一部を検索することを可能にするために有益となりうる。
【００７４】
ブロブの検索が動作４２５の実行の間に失敗する場合、ある場合には、動作フローは終了してもよい。他の実施例では、検索の失敗は、以前に説明された動作４２０の失敗と同様に又は同一の方法で解釈されてもよい。そのような実施例において、ブロブ検索が動作４２５中に失敗する場合、動作フローは動作４３０に進んでもよい（そのようなパスは図４の中で破線を使用して示される）。
【００７５】
１つ以上の様々な理由によりブロブを検索することができない場合、動作フロー４００はある場合には動作４３０に進んでもよい。動作４３０を実行するそのような理由は、ブロブ検索サービスによって識別された端点が、おそらくはオンラインでないか利用可能ではないためにブロブを提供することができない場合など、上述されたものを含み得る。動作４３０の例示的な実施例では、端点は、ブロブ・キャッシュ・サービスが要求されたブロブのコピーを検索しキャッシュに格納することを要求してもよい。いくつかの実施例では、そのようなブロブ・キャッシュ・サービスは少なくとも他のいくつかの端点よりも確実にアクセスされ、したがって、ブロブを検索することを望む端点が他のいくつかの（おそらくは利用不可能な）端点の代わりに使用することができるブロブのための有用な一時的な場所として役立ち得る。
【００７６】
そのような実施例のうちのいくつかにおいては、ブロブ・キャッシュ・サービスは、要求を受け入れて、可能な場合にはブロブ自体を検索してもよい。例えば、ブロブ・キャッシュ・サービスは、当初識別された端点が利用可能であるまで待ち、次に当初の端点からブロブを検索してもよい（又はブロブをアップロードするように端点に命じてもよい）。ブロブ・キャッシュ・サービスによって行なわれ得るいくつかの例示的なブロブ・キャッシュ・サービスの実施例及び動作は、特に図１及び図７に関連して本明細書の別の場所に述べられる。
【００７７】
いくつかの実施例では、ブロブがブロブ・キャッシュ・サービスによって格納されることを要求する端点は、後に再び動作４１５を実行し、ブロブを検索するために使用され得るロケーターについてブロブ検索サービスに問い合わせてもよい。例えば、端点は、ブロブ・キャッシュ・サービスが所望のブロブを提供することができるという（おそらくは図１に関して以前に述べた通知サービス１４０のようなものからの）通知を受け取るかもしれない。ブロブ・キャッシュ・サービスがブロブを格納している場合、それはブロブを有しているとブロブ検索サービスに既に通知しているかもしれず、したがって、ブロブ検索サービスは、ブロブ・キャッシュ・サービスを使用して、利用可能なものとしてブロブを識別するロケーターを、要求を行っている端点に提供してもよい。結局のところ、当初の端点はブロブ・キャッシュ・サービスからブロブを検索してもよい。
【００７８】
他の実施例において、おそらくは図１に関して以前に述べたもののようなクラウド・ストレージ・サービスのようなより信頼でき又は利用可能な他の端点を含む他の端点は、端点がブロブを検索し得る位置としてブロブ・キャッシュ・サービスの代わりに使用されてもよい。
【００７９】
ブロブ検索サービスが、例えば動作４１０の一部として使用されないと決定された場合、その後動作フロー４００は動作４３５に進んでもよく、そこで、ブロブは、ブロブ検索サービスを使用しなくてもよい様々な他の機構を使用して検索されてもよい。例えば、いくつかの実施例では、１つ以上の端点が、ブロブ検索サービスに関連付けられていないか又はブロブ検索サービスに知られていないある格納部を使用してブロブを検索することを試みてもよい。そのような場合、又は他の場合において、ブロブは、ＨＴＴＰ、ＦＴＰ、ピア・ツー・ピア、「ビット・トレント」スタイルの通信、又は他の機構など、以前に述べたものを含む様々な機構のうちの任意のものを使用して検索されてもよい。さらに、ブロブ・キャッシュ・サービス又は他のサーバー機能によって提供される機能のように、他の場所で利用可能になった機能もまた、ブロブ検索サービスを使用しない少なくともいくつかの実施例で使用されてもよい。
【００８０】
いくつかの実施例において、図４に関して以前に述べた例示的な動作フローに代えて又はそのような動作フローに加えて、ブロブを検索する他の方法が使用されてもよいことは注目されるべきである。これらの他の方法のうちの少なくともいくつかはまた、図４に関して説明された例示的な動作の１つ以上を実行してもよく、又は、例えば図１に関して説明されたモジュール及びサービスを含む１つ以上の他のモジュール又はサービスを使用してもよい。これらの他の方法のうちの少なくともいくつかはまた、他の命令を実行してもよいし、又は他のモジュール及びサービスを使用してもよい。単に１つの例として、端点は、おそらくは図１に関して以前に述べたブロブ・ダウンロード・モジュール１５０又はブロブ・ダウンロード・モジュール１６２のようなブロブ・ダウンロード・モジュールが特定のブロブを得ることを要求してもよい。いくつかの実施例では、ブロブ・ダウンロード・モジュールは、要求されたブロブをおそらくは異なる方法で各々が見つけ及び／又は取得する、１つ以上のプラグ接続可能な「ドライバー」を有してもよい。例えば、あるドライバーは、１組のロケーターを得るためにブロブ検索サービスを使用し、その後、ブロブを検索するために単一のロケーターを使用するかもしれず、別のドライバーはまた、ブロブ検索サービスを使用し、ブロブを検索するためにおそらくは並行して又はビット・トレントもしくは他の同様の種類の機構とともに複数のロケーターを使用するかもしれず、さらに別のドライバーは、ブロブ検索サービスを使用しないかもしれず、様々な他の方法でブロブを見つけ、検索するかもしれない、といった具合である。そのような実施例のうちの少なくともいくつかにおいて、ブロブ・ダウンロード・モジュールは、様々な方法で使用するためにドライバーを決定するかもしれない。例えば、ブロブ・ダウンロード・モジュールは、ドライバーがブロブを検索するのにどれくらいの時間がかかるかの見積もりについて各ドライバーに問い合わせてもよく、各ドライバーは、推測される時間又はおそらくはドライバーがブロブを検索することができないことを示すある値を返してもよい。そのような返されたデータを使用して、ブロブ・ダウンロード・モジュールは、１つの（又はより多くの）ドライバーを選択し、実際にブロブを検索するように選択されたドライバーに命じてもよい。
【００８１】
図５に移ると、メタデータを保持及び提供する場合に行なわれ得る各種の動作を含む例示的な一般化された動作フロー５００が示されている。図５についての以下の説明は他の図に関してなされてもよい。しかし、図５に関して説明される動作フローは、これらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図５の例示的な動作フローが特定の実行の順序を示す一方、１つ以上の代替的な実施例では、動作は異なったように順序付けられてもよい。更に、例示的な動作フローが複数のステップを含む一方、いくつかの実施例では、これらの動作のうちの少なくともいくつかは同時に組み合わせられ又は実行されてもよく、同一又は他の実施例において、いくつかのステップは実行されなくてもよいことは認識されるべきである。
【００８２】
動作５１０の例示的な実施例では、図１に関して以前に述べたサーバー端点１１０などの端点は、別の端点からメタデータを得てもよい。例えば、メタデータを得る端点は、いくつかの実施例において、例えば図２の動作２１５に関して以前に述べたように、他の端点によって通信された変更とともにメタデータを受信するサーバー端点であってもよい。更に、いくつかの実施例では、図１に関して以前に述べたように、動作フロー４００に関して本明細書に記載された動作のうちの少なくともいくつかは、例示的なストレージ・サービス１２０によって実行されてもよい。（この説明のうちのいくらかは、動作フロー４００においてメタデータを受け取る端点を「サーバー端点」と呼んでもよいが、メタデータを受け取る端点が必ずしもサーバー端点である必要はなく、必ずしも、明細書の他の場所でおそらくはサーバー端点に関連付けられているように説明された機能のうちの少なくとも幾つか又はすべてを有する必要がないことが理解されるであろう）。
【００８３】
メタデータはメタデータを通信するのに適した様々な通信機構のうちの任意のものを使用して得ることができる。例えば、いくつかの実施例では、受信側又は取得側（obtaining）の端点に関連付けられたＨＴＴＰサーバーは、あるＵＲＬにおいてメタデータを含むＨＴＴＰ  ＰＯＳＴ要求を受け入れてもよい。同一又は他の実施例では、別の端点は、ＦＴＰ又は１つ以上のファイル共有プロトコル、電子メールなどのような別のプロトコルを使用してメタデータを通信してもよい。いくつかの実施例では、受信側の端点は、メタデータを提出するために別の端点に依存するのではなく、積極的にメタデータを検索してもよい。例えば、取得側の端点は、他のある端点に対してＨＴＴＰ  ＧＥＴ要求を開始して、その応答においてメタデータを供給されてもよい。
【００８４】
動作５１５の少なくともいくつかの実施例では、得られたメタデータは、サーバー端点によって保持されたメタデータのコピーとマージされてもよい。そのようなマージ動作は、得られたメタデータに具体化された変更を、動作フロー５００を実行する端点によって保持及び修正され得るメタデータの別のコピーへ組み入れることに帰着し得る。メタデータのそのようなローカルコピーは、（少なくともいくつかの実施例では）データベース中の列又は記録として、ＸＭＬフィード（又は他の）文書のコピーとしてなど、様々な方法で保持されてもよい。ＳＳＥ情報を含むメタデータを使用する実施例においては、得られたメタデータは、ＳＳＥマージ技術を使用して、ローカルのメタデータとマージされてもよい。いくつかの実施例では、そのようなＳＳＥマージ技術は、特に図３の動作３２０に関して以前に述べたＳＳＥ技術と同一であるかこれに類似していてもよい。
【００８５】
動作５２０の例示的な実施例では、問題となっているメタデータが変わるときに通知すべき、以前に登録又は予約された１つ以上の端点は、１つ以上の通知手段を使用して通知されてもよい。（そのような通知を受信した後に、いくつかの実施例において、端点は、サーバー端点から新たに更新されたメタデータを得て、かつ当該新しく更新されたメタデータの変更をその端点自身のローカルのメタデータ格納部とマージするために、動作の実行を始めるかもしれない。そのような動作は、おそらくは、図３に関して以前に述べたもののうちの少なくともいくつかを含んでもよい。）通知を提供しないものを含む他の少なくともいくつかの実施例では、加入者に通知されなくてもよい。
【００８６】
動作５２５のいくつかの実施例では、ブロブ検索サービスは、得られたメタデータによって識別されたブロブについての位置情報で更新されてもよく、その結果、メタデータを取得又は使用する端点は、メタデータにより参照されるか又はメタデータに関連付けられたブロブを検索することができてもよい。すなわち、例えば、得られたメタデータが新たなブロブを参照する新たな項目を含むと仮定する。動作フロー５００が実行される場合、サーバー端点への更新されたメタデータを生成し通信した端点にのみ参照されるブロブが存在するということになってもよい。サーバー端点又は他の装置端点を含む任意の端点がブロブを検索することができるためには、ブロブの（最初の）位置は、本明細書の別の場所に述べたブロブ検索サービスのようなブロブ検索サービスを含むブロブ検索サービスによって格納されてもよい。
【００８７】
最後に、動作５３０の例示的な実施例では、マージ動作５１５の一部として作成される更新されたメタデータは、１つ以上の端点に伝えられてもよい。例えば、メタデータによって表わされるデータを同期させる別の端点は、更新されたメタデータを求めてサーバー端点に要求を出してもよい。他の端点がサーバー端点をポーリングし、メタデータが変わったことを発見する場合など、メタデータが変わったという通知を当該他の端点が受け取った後、そのような要求が出されてもよい。サーバー端点は、ＨＴＴＰ  ＧＥＴ要求及び応答もしくはＨＴＴＰ  ＰＯＳＴ要求及び応答、ファイル共有プロトコル、ＦＴＰ、電子メール、他のある通信機構の使用を通じてなど、本明細書において以前に他の場所に記載されたものを含む、様々な方法で他の端点にメタデータを提供してもよい。
【００８８】
図６に移ると、メタデータによって参照されるブロブに関連付けられた位置及びロケーターを格納及び提供する場合に行なわれ得る各種の動作を含む例示的な一般化された動作フロー６００が示されている。図６についての以下の説明は他の図に関してなされてもよい。しかし、図６に関して説明される動作フローがこれらの他の図に関して説明される要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図６の例示的な動作フローが特定の実行の順序を示す一方、１つ以上の代替的な実施例では、動作は異なった順序でなされてもよい。さらに、例示的な動作フローが複数のステップを含む一方、いくつかの実施例ではこれらの動作のうちの少なくともいくつかが同時に組み合わせられ又は実行されてもよいし、同一又は他の実施例において、いくつかのステップは実行されなくてもよいことは認識されるべきである。
【００８９】
動作６１０の例示的な実施例では、端点は、特定のブロブに関連した１つ以上の位置を受け取ってもよい。一般に、特定のブロブの少なくとも一部が検索され得る場合、当該位置は端点を指定してもよい。少なくともいくつかの実施例では、ブロブは１つ以上のブロブ識別子を使用して識別されてもよい。１つ以上の位置を受け取る端点は、図１に関して以前に述べた例示的なサーバー端点１１０などの少なくともいくつかのサーバー端点を含んでもよい。更に、動作フロー６００に関連した動作のうちの少なくともいくつかは、図１に関して以前に述べた例示的なブロブ検索サービス１２５などのブロブ検索サービスによって少なくともいくつかの実施例において実行されてもよい。動作フロー６００の動作のうちのいくつかは、本明細書において、例示的なサーバー端点又は例示的なブロブ検索サービスに関連付けられているとして記載することができるが、動作は必ずしもサーバー端点又はブロブ検索サービスによって実施又は実行される必要はなく、代わりに、様々な端点の１つ以上によって実施又は実行されてもよいし、それらの端点に含まれるモジュール又はサービスによって実施又は実行されてもよいことが理解されるであろう。
【００９０】
１つ以上のブロブ位置は様々な他の端点及びプロセスから受け取られてもよいし検索されてもよい。例えば、サーバー端点又はストレージ・サービスが別の端点からのメタデータを処理する場合、この動作には、それが受け取ったメタデータによって識別された１つ以上のブロブに関連付けられた１つ以上の位置を提供してもよい（そのような動作は、例えば、以前に図５に関して説明された動作５２５に関連付けられるかもしれない。）別の例において、おそらくは、図４に関連して以前に述べた動作の使用を通じることを含めてメタデータ及びメタデータに関連したブロブを同期させることの一部として、端点が１つ以上の他の端点からブロブのいくらか又はすべてを得る場合、その端点はまた、（例えば最初にブロブが作成された端点からブロブを受信することに加えて、）得られたブロブを今また有している端点からのブロブのいくらか又はすべてを他の端点が検索することができるように、その位置によりブロブ検索サービスを更新してもよい。
【００９１】
現在ブロブの少なくとも一部を有する端点の位置に加えて、ブロブ検索サービスを更新する端点は、さらに、ブロブ検索サービスに他の情報を提供してもよい。そのような他の情報は、例えば、特定の端点において利用可能なブロブの部分のＩＤ（identification）（又はブロブ全体が利用可能であるという指示）、特定の端点がブロブの１つ以上の代替表現を提供することができるというある指示などを含んでもよい。
【００９２】
動作６１５の少なくともいくつかの実施例において、受け取られた位置（及びおそらくは他の受け取られたデータ）は、データベース中の列又は記録として含むなどして、様々な手段又は機構の１つ以上を使用して、ブロブ検索サービスによって格納されてもよい。
【００９３】
動作６２０の例示的な実施例では、ブロブ検索サービスは、１つ以上のブロブに関連付けられたロケーターを求める要求を受信してもよい。そのような要求は、様々な端点、モジュール又はサービスから送信又は通信されてもよい。例えば、装置端点が特定のメタデータによって識別されるブロブを同期させることができるように、装置端点は、特定のブロブについてロケーターを求める要求を出してもよい（その後、装置端点は、実際にブロブを検索するために、任意の返されたロケーターを使用してもよい）。別の例において、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスが１つ以上のブロブを検索することができるように、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスはロケーターを要求してもよい。
【００９４】
動作６２５のいくつかの実施例では、ブロブ検索サービスは、特定の要求されたブロブに関連付けられた１つ以上のロケーターを識別してもよい。いくつかの実施例では、この動作は、（ブロブに関連したブロブ識別子をおそらくは使用して）特定のブロブを調べ、要求されたブロブを提供することができるものとして登録されるすべての端点についてロケーターを識別することにより、少なくとも部分的に実行されてもよい。例えば、要求されたブロブを有しているものとして３つの端点が以前に登録されていた場合、その後この動作は、各々が当該３つの端点に対するものである３つのロケーターを識別してもよい。
【００９５】
いくつかの実施例では、識別されたロケーターはまた、ブロブに関連付けられた端点を識別するための単なる手段のほかに追加情報を含んでもよい。例えば、いくつかのロケーターは、ブロブのどの部分が特定の端点から検索され得るかに関する情報を含んでいてもよく、同一又は他のロケーターは、ブロブを検索するために特定の端点と共に使用され得る１つ以上の通信プロトコルに関する情報を含んでもよい、といった具合である。
【００９６】
いくつかの実施例において、ブロブ検索サービスは、例えば、特定のブロブを提供し得る各々の又はすべての端点についてロケーターを識別するに過ぎないが、他の実施例においては、ロケーターを識別するプロセスは、例えば、追加の情報又は知識を使用してもよい。例えば、ブロブ検索サービスは、ロケーターをフィルタリングするか、優先順位をつけるか、そうでなければ（おそらく最も適切には）識別するために、メタデータに関する様々な知識、サーバー端点及び装置端点に関する様々な知識などを使用してもよい。いくつかの実施例では、そのような知識は、図１に関して以前に述べた例示的な知識格納モジュール１４５などの知識格納部によって少なくとも部分的に提供されてもよい。
【００９７】
例えば、以前に特定のブロブの一部を提供することができるものとして複数の端点が登録されたと仮定する。さらに、知識格納部が、高速及び高帯域ネットワーク接続を使用してネットワークにしばしば接続されるワークステーション・クラスのデスクトップ・コンピューターによって、提供を行っている端点のうちの１つが実施され；提供を行っている端点の別のものは、異なる接続特性を備えた様々なネットワークを使用して接続するラップトップ・コンピューターであり；第３の提供を行っている端点は、しばしば電源を入れられてネットワークに接続されるが、データ伝送が装置ごとの金銭的なチャージに関連している比較的低速の接続を使用する携帯電話である、という知識を持っていると仮定する。そのような例において、動作６２５の少なくともいくつかの実施例は、識別されたロケーターをフィルタリングするか又は優先順位をつけるためにおそらくは他の知識と同様にこの知識を使用してもよい。例えば、１つの実施例においては、３つの端点すべてについてロケーターが識別されてもよいが、それらは、デスクトップ・コンピューターが最初に使用されるべきであり、ラップトップ・コンピューターが次に使用されるべきであり、携帯電話は最後の手段として使用されるべきであるにすぎないことを示す優先順位情報を含んでもよいし又は通信してもよい。別の例において、識別されたロケーターは、この例における携帯電話などの特定の端点さえ含まなくてもよく、代わりに、デスクトップ・コンピューター及びラップトップ・コンピュータについてのロケーターのみが識別されてもよい。
【００９８】
他の情報又は基準もまた、１つ以上のロケーターを識別し、かつ、おそらくは、すべてのいずれかのロケーターが返されるべきかどうかを決定するために使用されてもよい。例えば、適切ではなく危険であると判断されたか又はある理由で望ましくないと判断されたブロブを参照する項目をメタデータが含むと仮定する−例えば、ブロブが、ウィルスを含む実行可能なコードを含んでいたり、好ましくないコンテンツを備えたビデオデータを含んでいたりするなどの場合である。そのような場合、１つ以上の端点が問題のブロブを提供することができるように登録されていたとしても、動作６２５の実施例は当該特定のブロブに対するロケーターを識別しなくてもよい。そのような方法で、ブロブ検索サービスは、データを同期させるか又は通信する場合に、送信され得るコンテンツをフィルタリング又は制御するために使用されてもよい。そのような制御は、端点が集中型の端点による潜在的な関与なしにデータを交換し得るような、例えば分散型又はピア・ツー・ピアの同期システム中で実施することは困難であるか又は不可能であるかもしれない。
【００９９】
最後に、動作６３０の例示的な実施例において、例えば動作６２５において識別されたロケーターは、動作６２０の一部として受信された要求を行った端点を含む１つ以上の端点に通信されてもよいし提供されてもよい。
【０１００】
図７に移ると、キャッシュにブロブを格納し、キャッシュからブロブを提供する場合に実行され得る各種の動作を含む例示的な一般化された動作フロー７００が示されている。図７の以下の説明は他の図に関してなされてもよい。しかし、図７に関して述べる動作フローは、これらの他の図に関して述べる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図７の例示的な動作フローは特定の実行の順序を示す一方、１つ以上の代替的な実施例では、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例ではこれらの動作のうちの少なくともいくつかが同時に組み合わせられ又は実行されてもよく、同一又は他の実施例においていくつかのステップは実行されなくてもよいことは認識されるべきである。
【０１０１】
動作７１０の例示的な実施例では、端点は、特定のブロブを格納するかキャッシュに格納するための要求を受信してもよい。そのような要求を受け取る端点は、図１に関して以前に述べた例示的なサーバー端点１１０などの少なくともいくつかのサーバー端点を含んでもよい。更に、動作フロー７００に関連した動作のうちの少なくともいくつかは、図１に関して以前に述べた例示的なブロブ・キャッシュ・サービス１３０などのブロブ・キャッシュ・サービスによって少なくともいくつかの実施例において実行されてもよい。動作フロー７００の動作のうちのいくつかは、本明細書において、例示的なサーバー端点又は例示的なブロブ・キャッシュ・サービスに関連するものとして記載されてもよいが、動作は必ずしもサーバー端点又はブロブ・キャッシュ・サービスによって実施又は実行される必要はなく、その代わりに、様々な端点の１つ以上によって実施又は実行されてもよいし、それらの端点に含まれるモジュールやサービスによって実施又は実行されてもよいことは理解されるべきである。
【０１０２】
特定のブロブをキャッシュに格納する要求は、サーバー端点及び装置端点の両方を含む様々な端点から受け取られてもよい。例えば、１つの例において、（例えば以前に述べたように、２つの装置端点が同時にオンラインではない場合のように）別の端点からブロブ自体を得ることができない場合、装置端点は、ブロブをキャッシュに格納する要求を提出してもよい。別の例において、ストレージ・サービスもしくは他のサービス又はモジュールは、様々な理由の１つ以上により、特定のブロブをキャッシュに格納する要求を提出してもよい。例えば、図１に関して以前に述べた知識格納モジュール１４５のような知識格納部によって保持された知識をおそらくは使用して、ストレージ・サービスは、特定の端点がしばしば利用不可能であるという知識を有していてもよい。そのような場合、及びおそらくは他の場合において、そのような端点が新たな又は変更されたブロブに関連付けられたメタデータを提供する場合、ストレージ・サービスは、別の端点がブロブを要求する前であっても、特定のブロブがキャッシュに格納されることを積極的に要求してもよい。そのような実施例は、そのようなブロブを検索することを望む装置端点がブロブ自体をキャッシュに格納する要求をすることを不必要にし得る。
【０１０３】
動作７１５のいくつかの実施例では、ブロブ・キャッシュ・サービスは要求されたブロブを検索してもよい。ブロブの検索は様々な方法で実施されてもよい。いくつかの実施例では、ブロブ・キャッシュ・サービスは、図４に関して以前に述べたものと同一又は類似する１つ以上の動作を実行してもよい。そのような動作は、例えば、ブロブが利用可能である１つ以上の位置を識別するためにブロブ検索サービスを使用してもよいし、そのような位置からブロブを検索してもよい。
【０１０４】
同一又は他の実施例では、端点は、周期的にブロブ・キャッシュ・サービスと通信してもよいし、又はブロブ・キャッシュ・サービスとの通信が必要であるとの通知を受信してもよいし、ブロブ・キャッシュ・サービスが要求するブロブを提供又はアップロードしてもよい。例えば、装置端点は、装置端点において利用可能な特定のブロブがブロブ・キャッシュ・サービスによって望まれているという通信又は通知を受信してもよいし、ブロブを、動作７１５の一部としてブロブ・キャッシュ・サービスによる検索に利用可能にしてもよく、又は動作７１５の別の実施例の一部としてブロブ・キャッシュ・サービスに対して積極的にブロブをアップロード又は提供してもよい。
【０１０５】
ブロブ・キャッシュ・サービスは、いくつかの実施例において、図１に関して以前に述べた例示的な知識格納部１４５などの知識格納部により保持される知識を含む、同期システム、メタデータ、端点などに関する知識を使用して、キャッシュに格納されるべきブロブをより効率的に検索してもよい。単なる１つの例において、ブロブ・キャッシュ・サービスは、他のある端点によって要求されたブロブをキャッシュに格納することを直ちに試みなくてもよい。代わりに、例えばブロブを提供し得る１つ以上の端点にとって利用可能な空いている帯域幅が存在するまで、又は、利用可能な比較的少ない（cheap）帯域幅が存在するまで、又は、要求に対してサービスするために十分な計算能力を有している端点が利用可能となるまで、ブロブ・キャッシュ・サービスは待ってもよい。
【０１０６】
動作７２０の実施例では、検索されたブロブは様々なストレージ機構又は手段のうちの任意のものを使用して格納されてもよい。いくつかの実施例では、ブロブはデータベースに格納されてもよいし、又はファイルシステムにファイルとして格納されてもよいし、他のある方法で格納されてもよい。少なくともいくつかの実施例では、ブロブ・キャッシュ・サービスは、例えば、どれくらいの時間特定のブロブを格納すべきかを決定するために様々なキャッシュ格納技術を使用してもよい。例えば、ブロブ・キャッシュ・サービスの１つの実施例は、利用可能なストレージスペースが十分であるまでブロブを格納してもよいし、次に、スペースが追加のブロブにとって利用可能となるようにどのブロブを削除するかを決定するために、ＬＲＵアルゴリズムを含む１つ以上のアルゴリズムを使用してもよい。いくつかの実施例では、最近検索されていないブロブが削除されていてもよい一方、最近検索されたかアクセスされたブロブは維持されてもよい。同一又は他の実施例において、ブロブは、どれだけの数の端点がブロブを検索することを望んでいるかを定義する参照カウントと関連付けられてもよく、また、ブロブは、指定された数の端点がブロブを検索した場合、削除されてもよい。同一又はさらに他の実施例では、様々な他の技術及びアルゴリズムはブロブ・キャッシュ・サービスに関連した記憶装置を管理するために使用されてもよい。
【０１０７】
少なくともいくつかの実施例では、ブロブ・キャッシュ・サービスは、ブロブ・キャッシュ・サービスが特定のブロブの少なくとも一部を格納しており、他の端点にブロブの当該格納された一部を供給することができる場合、ブロブ・キャッシュ・サービスに関連付けられた位置により、例示的なブロブ検索サービスを更新してもよい。そのような位置を使用して、ブロブ検索サービスは、ブロブ・キャッシュ・サービスに関連付けられているロケーターを端点に提供することができてもよく、また、そのような端点はそれによって、ブロブ・キャッシュ・サービスからブロブを検索することができてもよい。いくつかの実施例では、端点はまた、ブロブ検索サービスを使用することなく、ブロブ・キャッシュ・サービスからブロブを検索することができてもよい。
【０１０８】
動作７２５の例示的な実施例では、特定のブロブがキャッシュに格納された後、ある点において、ブロブ・キャッシュ・サービスは、キャッシュに格納されたブロブの全部又は一部に対する要求を１つ以上の端点から受信してもよく、また、動作７３０の例示的な実施例において、要求されたブロブ（又はブロブの一部）を要求者に提供してもよい。キャッシュに格納されたブロブに関連した要求及び応答は、ＨＴＴＰ転送、ＦＴＰ転送、ビット・トレントスタイルの転送などの本明細書の別の場所に記載の機構を含む様々な通信機構などを使用して、多種多様の方法で実行されてもよい。
【０１０９】
図８に移ると、クラウド記憶装置にブロブを格納したりクラウド記憶装置からブロブを提供したりする場合に実行され得る各種の動作を含む例示的な一般化された動作フロー８００が示されている。図８の以下の説明は他の図に関してなされてもよい。しかし、図８に関して述べられる動作フローがこれらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図８の例示的な動作フローは特定の実行の順序を示している一方、１つ以上の他の実施例では、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかが同時に組み合わせられ又は実行されてもよく、同一又は他の実施例においていくつかのステップは実行されなくてもよいことは認識されるべきである。
【０１１０】
動作８１０の例示的な実施例では、端点は、特定のブロブのうちのいくらか又は全てを「クラウド内に」又はクラウド記憶装置に格納する要求を受け入れ又は受信してもよい。ある場合には、この要求を受け取る端点又はモジュール又はサービスは、おそらくはサーバー端点１１０のようなサーバー端点により実行されてもよく、動作フロー８００に関連付けられた動作のうちの少なくともいくつかは例示的なクラウド・ストレージ・モジュール１３５によって実施又は提供されてもよく、それらの両方は、図１に関して以前に述べられている。動作フロー８００の動作のうちのいくつかは、本明細書において、例示的なサーバー端点又は例示的なクラウド・ストレージ・サービスに関連するものとして記載されていてもよいが、動作はサーバー端点又はクラウド・ストレージ・サービスによって必ずしも実施又は実行される必要はなく、実際のところ、様々な端点の１つ以上又はそれら端点に含まれるモジュールもしくはサービスによって実施又は実行されてもよいことが理解されるべきである。
【０１１１】
動作フロー８００中の動作の多くは、ブロブ・キャッシュ・サービスの動作フロー７００に述べられたものに類似するように見え得る一方、クラウド・ストレージ・サービスは、ブロブ・キャッシュ・サービスとは異なって使用されてもよい。例えば、ブロブ・キャッシュ・サービスによって提供される一時的な記憶装置とは対照的に、例えば、ユーザーによって具体的に指示されない限り格納されたブロブを削除しないこと、おそらくは離れたディスク・ドライブ又は他の記憶機構に格納されたデータの複数のコピーを保持することなどにより、クラウド・ストレージ・サービスは、ブロブ（及びおそらくは他のデータ）に対して、一時的でない又は「信頼できる」記憶装置を提供し得る。
【０１１２】
動作８１５の少なくともいくつかの実施例では、クラウド・ストレージ・サービスは、ある場合には動作８１０において受信され得る要求に関連付けられるブロブの一部又は全体を含むブロブデータを検索するか又は提供されてもよい。クラウド・ストレージ・サービスは、ある場合には、ブロブ検索サービス、ブロブ・ダウンロード・モジュール又はおそらくは例えば図４に関して以前に述べた動作のいくつかを使用することを含む様々な方法でブロブを検索してもよい。他の実施例では、クラウド・ストレージ・サービスは、様々な他の通信又はファイル転送機構のうちの任意のものを使用して、ブロブを検索するか又は提供されてもよい。少なくともいくつかの実施例で、おそらくは図１に関連して以前に述べた知識格納モジュール１４５などの例示的な知識格納部に関連付けられた知識を含む、通信システム、メタデータ、ブロブなどについての知識は、要求されたブロブをより効率的に得るために、おそらくはブロブ・キャッシュ・サービスに関して既に述べたものと同様の方法又は他の方法で使用されてもよい。
【０１１３】
動作８２０の例示的な実施例では、検索又は提供されるブロブは、クラウド・ストレージ・サービスによって様々な方法で格納されてもよい。例えば、以前に紹介されたように、クラウド・ストレージ・サービスは、複数の冗長な格納部を使用して、ブロブを含むデータを格納してもよい。さらに、ブロブを格納した場合、クラウド・ストレージ・サービスは、ある場合には、例示的なブロブ検索サービスに対して情報を更新してもよいし提供してもよく、その結果、ブロブ検索サービスは、いくつかの実施例で、クラウド・ストレージ・サービスを参照又は識別する他の端点にロケーターを提供してもよく、その後、ある場合には他の端点はクラウド・ストレージ・サービスからブロブを検索してもよい。
【０１１４】
ある時点では、クラウド・ストレージ・サービスは、動作８２５の少なくともいくつかの実施例において、格納されたブロブ又は格納されたブロブの一部を提供する要求を受信してもよい。そのような要求に応答して、その後、クラウド・ストレージ・サービスは、おそらくは本明細書の別の場所に記載されたものを含む様々な通信又は転送機構の使用を通じて、動作８３０の例示的な実施例において、要求されたブロブデータを提供してもよい。
【０１１５】
図９に移ると、十分なメタデータの使用又は例示的なサーバー端点によって提供される機能のうちの少なくともいくらかの使用なしにブロブを検索する場合に行なわれ得る各種の動作を含む例示的な一般化された動作フロー９００が示されている。図９の以下の説明は他の図に関してなされてもよい。しかし、図９に関して述べる動作フローは、これらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図９の例示的な動作フローは特定の実行の順序を示しているが、１つ以上の代替的な実施例においては、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかは同時に組み合わせられ又は実行されてもよいし、同一又は他の実施例ではいくつかのステップは実行されなくてもよいことは認識されるべきである。
【０１１６】
本明細書における記載の多くがメタデータの使用によるブロブデータの検索について記載しているが、ブロブを検索する場合、少なくともいくつかの実施例では、メタデータのフルセットの使用は必ずしも必要ではない。代わりに、ある場合には、単なるブロブ識別子などの最小のデータ量のみが、例えばブロブ検索サービス及びおそらくはブロブのすべて又は一部を提供することができる様々な端点を含む様々な端点機能を利用するために必要となり得る。いくつかの環境において、そのような機能を使用することは、端点がより速くより安価に又はある点ではより有効にブロブを検索することを可能にし得る。
【０１１７】
動作９１０の例示的な実施例では、端点はある手段を介してブロブ識別子を得てもよい。以前に述べた実施例のうちのいくつかにおいて、ブロブ識別子は、異なる端点間で同期され得るメタデータに含まれている。そのような同期されたメタデータは、端点がブロブ識別子を得る少なくとも１つの機構を提供する。しかし、メタデータなどを同期させない実施例を含む様々な同一又は他の実施例では、ブロブ識別子は様々な他の方法で提供されてもよい。例えば、ユーザーは、おそらくはオーディオもしくはビデオクリップ、ワードプロセシング文書もしくはスプレッドシート、他のあるファイルなどのようなブロブを次に識別するブロブ識別子を含む電子メール又はインスタント・メッセージを別のユーザーへ送信してもよい。
【０１１８】
動作９１５の少なくともいくつかの実施例では、ブロブを検索するためにブロブ検索サービスが使用されるべきかどうかが決定されてもよい。例えば、いくつかの端点は、ブロブ検索サービスにアクセスしなくてもよいし、又はブロブ検索サービスについて知らなくてもよい。そのような場合、及びブロブ検索サービスが利用可能であるが使用されない場合を含む他の場合において、当該決定は、ブロブ検索サービスを使用しないようになされてもよく、動作フロー９００は動作９３０に進んでもよい。ブロブ検索サービスを使用してブロブが検索されることになっている場合、動作フロー９００は動作９２０に進んでもよい。
【０１１９】
ブロブ検索サービスが使用され又は使用されない環境の１つの例として、ウェブ・ブラウザーの例を考える。多くのウェブ・ブラウザーが、ＨＴＴＰなどのプロトコルを使用して資源のダウンロード又は検索を可能にする実行可能コードを含んでいる。そのようなウェブ・ブラウザーを用いて、ＨＴＴＰ要求は単一のサーバー−又は少なくとも単一のＵＲＬ−に対してなされてもよく、応答は単一のサーバーから受信されてもよい。しかし、ある場合、例えば大きなブロブを検索する場合には、特定のブロブの異なる部分が複数の異なる端点から検索されるか又はそれらにより供給される、ビット・トレント又はビット・トレントのような転送の実施例のような機構を含む１つ以上の他の機構を使用してブロブをダウンロードするのがより有効で速いかもしれない。
【０１２０】
しかしながら、ファイル又はブロブをダウンロードするためのそのような機構が望ましい一方で、ウェブ・ブラウザーは元来この種の又は他の種のダウンロードを可能にするための機能を含んでいないかもしれない。ある場合には、例えばウェブ・ブラウザー又はアプリケーションがブロブ検索サービス（及び以下により詳細に述べるように、おそらくはブロブ・ダウンロード・モジュール）の使用をサポートできるようにすることにより、この能力を加える機能をウェブ・ブラウザー又は他のあるアプリケーションに追加することが可能となりうる。例えば、ウェブ・ブラウザーは、ユーザーによって加えられた「プラグ・イン」又は他のコードをサポートするかもしれない。そのような１つのプラグ・インは、ブロブ検索サービスのサポートを実行してもよいし、インストールされると、ウェブ・ブラウザーがブロブ検索サービスを使用する（そして動作９３０に進む代わりに動作９２０に進む）ことを可能にしてもよい。
【０１２１】
動作９２０の例示的な実施例では、ブロブを検索する端点は、おそらくは、所望のブロブを識別するブロブ識別子のように、ブロブ検索サービスにあるデータを提供することにより、所望のブロブに関連した１つ以上のロケーターについてブロブ検索サービスに問合せてもよいし尋ねてもよい。そのような動作は、例えば図４に関連して以前に述べた動作４１５が実行される方法に類似した方法又はそれと同一の方法で少なくともいくつかの実施例において実行されてもよい。
【０１２２】
その後、動作９２５の例示的な実施例において、１つ以上の得られたロケーター、及びある場合において、ブロブ・ダウンロード・モジュールは、実際にブロブを検索するために使用されてもよい。そのような動作は、例えば図４に関連して以前に述べた動作４２５が実行される方法と類似した方法又は同一の方法で、少なくともいくつかの実施例で実行されてもよい。
【０１２３】
いくつかの実施例では、ブロブをダウンロードすることができないか又はブロブの検索が失敗する場合、端点は追加の動作を行ってもよい。例えば、ブロブ検索サービスがロケーターを供給しないか、（ネットワーク条件のため、ロケーターによって識別された端点が利用可能ではないためなどにより）実際にブロブを検索するためには使用することができないロケーターを供給するにすぎない場合、ブロブを検索する端点は、例えば、ブロブ・キャッシュ・サービスがブロブを格納して、その後にブロブ・キャッシュ・サービスからブロブを検索することを試みることを要求してもよい。そのような機構は、例えば図４に関して以前に述べられており、図９においては示されていない。
【０１２４】
端点が成功裡にブロブを検索する場合には、他の端点が同じブロブを要求する場合にブロブ検索サービスがある場合には端点をブロブの供給源として識別し得るように、当該端点は追加情報でブロブ検索サービスを更新してもよい。そのような実施例によれば、例えば、オフィスにいる１人のユーザーが例えば大きなファイル又はブロブをダウンロード又は検索し、同じオフィス内の他のユーザーに、１つ以上のほかのネットワークのどこかに位置するかもしれない他のある端点から検索するのではなく当該第１のユーザーからブロブを検索させるようにすることが可能となる。そのような例において、第１のユーザーがブロブを検索した後、第１のユーザーに関連した端点は端点を識別する情報をブロブ検索サービスに提供してもよい。第２の又はその後のユーザーがブロブ検索サービスからの同じブロブを要求する場合、ブロブ検索サービスは、第１のユーザーの端点を識別するロケーターを提供してもよい。いくつかの実施例では、ブロブ検索サービスは、第１のユーザーの端点がもとの端点よりおそらく地理的に接近しているとか、もとの端点より速いネットワーク接続を使用して第２の端点に接続されているなどという、知識格納部によって保持及び提供される知識を含む知識の使用により、そのようなロケーターを提供してもよい。
【０１２５】
ブロブ検索サービスが使用されない場合、動作フロー９００は動作９３０に進んでもよい。動作９３０の例示的な実施例では、ブロブは、ブロブ検索サービスやブロブ・ダウンロード・モジュールを直接的には使用しない（しかしいくつかの実施例では間接的に使用してもよい）１つ以上のファイル転送機構又はブロブ検索機構を使用して検索されてもよい。そのような機構は、ＨＴＴＰ、ＦＴＰ、ファイル共有プロトコルもしくはファイル転送プロトコルなどを含み得る。例えば、ブロブ識別子が「ｈｔｔｐ：／／ｗｗｗ．ｅｌｓ．ｌｉｖｅ．ｃｏｍ／ＡＢＣｌ２３」のようなものである場合、端点はブロブ識別子によって具体化されたＵＲＬへＨＴＴＰ要求を開始するにすぎない。いくつかの実施例では、その後、ブロブを求める要求に応えるサーバー端点又はＨＴＴＰサーバーは、（「ＡＢＣｌ２３」のような）識別子を抽出し且つ要求されたブロブを見つけるために当該識別子を使用することにより、この特定の形式のＵＲＬを使用し、且つ、その後に最終的にＨＴＴＰ応答においてブロブを返すように構成されてもよい（ある場合には、サーバー端点自体が、例えば図４に関して以前に述べたブロブ検索動作と同一又はこれと類似する動作を使用することにより、ブロブを見つけてもよい。同一又は他の実施例では、サーバー端点は、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスなどの具体的なストレージ位置に存在するブロブを返すにすぎない）。
【０１２６】
例示的な計算環境
図１０に移ると、この図及び関連する記載は、本明細書に記載した様々な技術が実施される例示的な計算環境の簡潔且つ一般的な説明を提供することを意図したものである。必ずしも必要なものではないが、コンピューター実行可能命令の一般的な状況において、コントローラー、プロセッサー、パソコン、又は図１０に示す計算装置１０００などの他の計算装置により実行されるプログラムモジュールなどの技術がここで説明される。
【０１２７】
一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、ユーザー・インターフェース、データ構造などを含み、これらは特定のタスクを実行し、特定の情報を表示し、又は特定の抽象データ型を実施する。プログラムモジュールによって行なわれる動作は、１つ以上のブロック図及び動作フローチャートを用いて既に説明された。
【０１２８】
当業者は、コンピューター可読媒体の１つ以上の形式で具体化されるコンピューター実行可能命令の形式の記述、ブロック図及び動作フローを実施することができる。本明細書において使用されるように、コンピューター可読媒体は、コンピューターによってアクセスされ理解することができる形式で符号化された情報を格納又は具体化することができる任意の媒体であってもよい。コンピューター可読媒体の一般的な形式は、揮発性メモリー及び不揮発性メモリーの両方、取り外し可能及び／又は取り外し不能な媒体を含むデータ記憶装置、及び通信媒体を含んでいるが、これらに限定されない。
【０１２９】
通信媒体は、コンピューター可読情報を、搬送波又は他の移送機構などの変調データ信号に具体化し、任意の情報配信媒体を含む。用語「変調データ信号」は、情報を信号に符号化するような方法で設定又は変更された１つ以上の特性を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接的な有線接続などの有線媒体、並びに、音響、ＲＦ、赤外線及び他の無線媒体などの無線媒体を含む。
【０１３０】
図１０に示された計算装置１０００は、その最も基本的な構成において、少なくとも１つの処理部１００２及びメモリー１００４を含んでいる。いくつかの実施例では、計算装置１０００は、例えばサーバー端点１１０、装置端点Ａ１６０、装置端点Ｂ１７０などの図１に関して以前に述べた端点のうちの１つの少なくとも一部を実施してもよい。いくつかの実施例では、例えばデスクトップ及びラップトップ・コンピューターを含む様々なコンピューターに例えば存在するように、処理部１００２は汎用中央処理装置（ＣＰＵ）であってもよい。計算装置の正確な構成及び種類によって、メモリー１００４は、（ＲＡＭなどの）揮発性、（ＲＯＭ、フラッシュ・メモリーなどの）不揮発性、又はこれら２つの組合せであってもよい。この最も基本的な構成は図１０において点線１００６で示される。さらに、計算装置１０００は、追加の特徴及び機能を有してもよい。例えば、計算装置１０００は、さらに、磁気もしくは光ディスク又はテープを含むがこれらに限定されない追加の記憶装置（取り外し可能及び／又は取り外し不能）を含んでもよい。そのような追加の記憶装置は図１０において取り外し可能な記憶装置１００８及び取り外し不能な記憶装置１０１０により示される。
【０１３１】
計算装置１０００はまた、計算装置１０００が他のデバイス及びサービスと通信することを可能にする１つ以上の通信接続１０１２を含んでもよい。例えば、計算装置は、例えば図１に関して以前に述べた端点への接続又は端点間の接続を含む様々な通信手段又は計算装置に対する１つ以上の接続を有してもよい。計算装置１０００はまた、カメラ又はスキャナのような画像入力装置、キーボード、マウス、ペン、マイクロホンアレーを含む音声入力機器、タッチ入力装置などの１つ以上の入力装置１０１４を有してもよい。ディスプレイ、スピーカー、プリンターなどの１つ以上の出力装置１０１６も計算装置１０００に含まれていてもよい。
【０１３２】
当業者は、図１０において示された計算装置１０００以外の計算装置により本明細書に記載された技術が実施され得ることを理解するであろう。例えば、本明細書に記載された技術は、携帯電話及びＰＤＡを含む携帯端末、マルチプロセッサー・システム、マイクロプロセッサーベース又はプログラム可能な家電、ネットワークＰＣ、ミニコンピューター、メインフレーム・コンピューターなどにおいて同様に実施されてもよいが、これらに限定されるものではない。これらの計算装置の各々は図１０のシステムによってある程度詳細に記述されてもよいし又は異なったように記述されてもよい。
【０１３３】
本明細書に記載された技術はまた、通信網を介してリンクされる遠隔処理デバイスによって動作が行なわれる分散計算環境で実施されてもよい。分散計算環境では、プログラムモジュールはローカル装置及びリモート装置の両方に位置してもよい。
【０１３４】
本明細書においてはソフトウェアで実施されると記載されたが、本明細書に記載された技術は、代替的に、すべて又は部分的に、ハードウェア、ファームウェア又はソフトウェア、ハードウェア及び／又はファームウェアの様々な組合せとして実施されてもよいことはさらに理解されるべきである。
【０１３５】
方法及びシステムのいくつかの特定の実施例が添付の図面に示され、前述の文章にて説明されたが、示された方法及びシステムは、記述された特定の実施例に限定されるものではなく、添付の特許請求の範囲に記載され定義される精神から逸脱することなしに、多数の再配置、修正及び置換が可能であることが理解されよう。
【図１】
2010531026.tif 000003
【図２】
2010531026.tif 000004
【図３】
2010531026.tif 000005
【図４】
2010531026.tif 000006
【図５】
2010531026.tif 000007
【図６】
2010531026.tif 000008
【図７】
2010531026.tif 000009
【図８】
2010531026.tif 000010
【図９】
2010531026.tif 000011
【図１０】
2010531026.tif 000012
【国際調査報告】
2010531026.tif 000013
2010531026.tif 000014