説明

サーバー支援型及びピア・ツー・ピアの同期

集中型の同期システム及び通信接続形態並びに分散型の同期システム及び通信接続形態の要素を使用して端点間のデータを同期させるシステム及び方法が開示される。そのようなシステム及び方法はある場合にはデータのある部分集合を集中型の端点と同期させてもよい一方、データの別の部分集合は分散型の方法で他の端点と直接的に動機される。そのようなシステム及び方法は、端点間のデータの同期を助けるために様々な協同の機能を含んでもよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバー支援型(server-assisted)及びピア・ツー・ピアの同期に関する。
【背景技術】
【0002】
データは、異なる計算装置間などの異なる端点(endpoints)の間で、多種多様の方法で、及び多様な接続形態を使用して同期させることができる。例えば、計算サーバーなどの単一(又は複数)の集中型の(centralized)端点と同期させるために、いくつかのシステム又は技術は端点に依存し得る。他のシステム又は技術において、端点は、1つ以上の分散型の(decentralized)又はピア・ツー・ピアの接続形態(topology)を含む様々な方法で互いに直接的に通信し得る。
【0003】
端点の異なる配置及び異なる通信接続形態は各々が自身の長所及び短所を有している。単に1つの例として、端点が互いに直接的にデータを同期させるシステムは、おそらくは集中型の又は「サーバー」端点を使用することなく、様々な長所を持ち得る。例えば、そのようなシステムにおいては、端点が、同期している端点より遠くに位置する中央サーバーとデータを最初に(又はおそらく常に)同期させるよう要求されることなしに物理的又は論理的に「近接した」他の端点とデータを通信し、同期させることができるかもしれない。別の例として、端点が様々な他の端点と通信することができる場合−集中型のサーバー端点が必要な場合に存在し得る−単一の障害発生点は、除去することができる。別の例として、いくつかの実施例では、例えば、設定が、他の端点からのサービス要求に対して常に利用可能である必要があったり、追加の容量を提供するために拡大することができる等の特定の要件を有する1つ以上のサーバーを構成することを必要としない場合には、少なくともピア・ツー・ピア同期システムは、設定したり構成したりすることがより簡単かもしれない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、分散型のシステムはまた、ある場合には1つ以上の集中型の端点を使用する接続形態中で修正されたり提供されてもよいような、少なくともいくつかの欠点を含む欠点を有し得る。例えば、ピア・ツー・ピアの端点は、(「常に利用可能であるように」構成され得る少なくともいくつかの「サーバー」端点とは対照的に)、データを同期させるのに必ずしも利用可能でないか又は必ずしも同期させることができないかもしれない。また、利用可能な端点の不足は、特定の端点が利用可能となるまで又は利用可能とならない限り、データが同期されないことをしばしば意味する。別の潜在的な欠点は、おそらくは任意の接続形態において接続された端点の組の間で、特に大きなデータ量を効率的に同期させる方法を決定することに関係する。少なくともいくつかの場合には、どの端点がとの他の端点と同期するべきか、どのようなデータを同期させるべきか等を決定することは、瑣末な問題ではなく、解決策は、(必要なものよりも多くのデータを転送する等の問題につながるような)発見するために計算上集約的なものとなり得るし、最適なものに近いものとなるかもしれない。分散型のシステムの別の潜在的な欠点は、端点のシステムに関する情報−端点の特性、特定の又はすべての端点により通信されたデータについての全体的な視野(holistic view)等−は、いかなる端点もしくはいかなる端点のサブセット(部分集合)も必ずしも同期しないか、又は同期されたデータのすべてもしくは少なくともかなりの量に必ずしもアクセスしない場合には、集めるのがより難しくなり得るということである。さらに別の潜在的な欠点は、如何なるピア・マシンも必ずしも完全に信頼することができることなく、セキュリティー・ポリシー又は他のセキュリティ関連の機能を適用することに関連する;少なくともそのようなセキュリティ問題のうちのいくつかは、いくつかの実施例例において、1つ以上の集中型のおそらくは信頼された端点の存在により改善することができる。
【課題を解決するための手段】
【0005】
以下において、読み手に基本的理解を与えるために本開示の単純化された概要を示す。この概要は本開示の広範囲に及ぶ概観でなく、本発明の重要な点や重大な要素を識別するものではなく、また本発明の範囲を表現するものではない。唯一の目的は、後に示されるより詳細な説明の前置きとして単純化された形式で本明細書に示されたいくつかの概念を示すことである。
【0006】
集中型の同期システム及び通信接続形態並びに分散型の同期システム及び通信接続形態の要素を使用して、端点間でデータを同期させるための様々な技法及び技術が本明細書に記載される。少なくともいくつかの実施例では、同期されたデータのある部分集合(サブセット)が集中型の端点へ通信されてもよい一方、同期されたデータの別の部分集合が分散型またはピア・ツー・ピアの手法により他の端点と直接的に通信されてもよい。さらに、いくつかの実施例では、端点間のデータの同期を助けるために、様々な協調的で潜在的に有益な機能が、集中型の端点上を含む特定の端点上で実施されてもよい。
【図面の簡単な説明】
【0007】
【図1】データが集中型の接続形態及びピア・ツー・ピアの接続形態の両方において同期され共有され得る例示的なシステムを示す図である。
【図2】同期されるデータを変更し、そのような変更を他の端点にとって利用可能にする場合に、装置端点を含む端点によって実行され得る各種の動作を含む例示的な一般化された動作フローを示す図である。
【図3】別の端点からのデータを同期させる場合に、装置端点を含む端点によって実行され得る各種の動作を含む例示的な一般化された動作フローを示す図である。
【図4】ブロブ(blob)を検索又はダウンロードするために行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図5】メタデータを保持及び提供する場合に行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図6】メタデータにより参照されるブロブに関連した位置及びロケーター(locator)を格納及び提供する場合に行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図7】キャッシュにブロブを格納しキャッシュからブロブを提供する場合に行われる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図8】クラウド・ストレージ(cloud storage)にブロブを格納しクラウド・ストレージからブロブを提供する場合に行われる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図9】十分なメタデータ又は例示的なサーバー端点によって提供される機能の少なくとも一部を使用することなくブロブを検索する場合に行なわれる各種の動作を含む例示的な一般化された動作フローを示す図である。
【図10】本明細書に記載した様々な技術を実施することのできる例示的なコンピューター環境を示す図である。
【発明を実施するための形態】
【0008】
集中型の同期システム及び通信接続形態並びに分散型の同期システム及び通信接続形態の要素を使用して、端点間でデータを同期させるための様々な技法及び技術が本明細書に記載される。より具体的には、少なくともいくつかの実施例において、同期されたデータのある部分集合(サブセット、subset)は集中型の端点へ通信されてもよい一方、同期されたデータの別の部分集合は分散型又はピア・ツー・ピアの方式で他の端点と直接的に通信されてもよい。さらに、いくつかの実施例では、端点間のデータの同期を助けるために、様々な協調的で潜在的に有益な機能は集中型の端点上を含む特定の端点上で実施されてもよい。
【0009】
図1を参照すると、データが集中型の接続形態及びピア・ツー・ピアの接続形態の両方において同期され共有される、例示的なシステム100が示されている。例示的なシステム100は、サーバー端点110、装置端点A160、装置端点B170及び装置端点C180を含んでいる。例示的なサーバー端点110は、ストレージ・サービス120、ブロブ検索サービス125、ブロブ・キャッシュ・サービス130、クラウド・ストレージ・サービス135、通知サービス140、知識格納モジュール145及びブロブ・ダウンロード・モジュール150を含んでいるものとして示される。例示的な装置端点A160はブロブ・ダウンロード・モジュール162を含むものとして示されている。図1のこの説明は、他の図に関連してなされてもよい。しかし、図1に関して記載された要素が他の図に関連して記載された要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図1における例示的な図は特定の素子を示しているが、いくつかの実施例では、これらの素子のすべてが存在するとは限らず、いくつかの実施例では、追加の素子が存在してもよい。
【0010】
一般に、少なくともいくつかの実施例で、データは任意の2つ以上の端点の間で同期されてもよい。例えば、図1に示されるように、データは、装置端点A160とサーバー端点110との間で同期されてもよいが、これに限定されるものではない。その後、同じ又は他のデータが、サーバー端点と装置端点B170との間で同期されてもよい。その後、装置端点Bはある場合には装置端点C180とデータを同期させてもよい。いくつかの実施例では、特定の端点が特定の他の端点と同期するのみでもよいが、他の実施例においては、他のすべての端点を備えるいくつかの実施例において含まれる多種多様の端点との間で端点が同期してもよい。
【0011】
多種多様の同期技術が存在し使用され得るが、少なくともいくつかの実施例では、少なくともあるデータは、シンプル・シェアリング・エクステンション(Simple Sharing Extensions、SSE)のような技術を使用して、端点間で同期されてもよい。SSEは、RSS(Really Simple Syndication又はRich Site Summary)又はAtom文書のようなフィード文書への(比較的)単純なデータの追加を使用して、端点間でデータを共有し同期させるためのデータ・フォーマット及びプロセスを包含するものとして一般に説明されてもよい。ある場合には、SSE情報を含むフィードが「SSEフィード」と呼ばれてもよい。
【0012】
そのような実施例、又は少なくとも他のいくつかの実施例によると、端点は、SSE情報及び同期されたデータの少なくとも一部の両方を含むフィード文書の提供により、同期のためにデータを他の端点にとって利用可能としてもよい。情報が同期されている当該端点は、フィード文書を得て、他の技術のうちから、フィードからの情報を1つ以上のデータ格納部内の情報とマージ(merge、統合)するSSE処理を使用して、そのコンテンツを解釈してもよい。このプロセスの一部として、情報が同期される当該端点は、一般に、それ自身のコピー又は同期されたデータのバージョンを更新し、それによって、第1の端点から第2の端点までのデータの同期を完了してもよい。単に1つの特定の例として、装置端点A160は、サーバー端点110に利用可能なSSE情報を含むRSSフィードを作成し、その結果装置端点Aによって保持又はアクセスされる情報はサーバー端点に対して同期させることができる。サーバー端点は、フィードを得て、おそらくはSSEマージ(SSE マージ)を使用してフィードのコンテンツをサーバー端点によって保持されたデータとマージさせてもよい。そのようなマージの後、装置端点Aによって提供されるデータの少なくともいくつかは、サーバー端点によって保持されたデータに組み入れられてもよい。更に、装置端点A上で作成されるデータに対する追加の変更もまた、同様の方法でサーバー端点に対して同期されてもよく、当該追加の変更は装置端点A上で作成されてもよい。装置端点Aは、追加の変更を含むようにその提供されるフィードを更新してもよく、その後、サーバー端点は更新されたフィードを処理し、追加の変更を組み込んてもよい。
【0013】
上記の説明は、データ及び変更が、第1の端点から第2の端点まで、1つの方向においてどのように同期されるかを記載するものであった。SSEを含む様々な同期技術はまた、変更が「他の方向」−すなわち、この例における第2の端点から第1の端点−において同期されることを可能にする。例えば、装置端点A160及びサーバー端点110を備えた以前の例におけるようにSSEが使用される場合、サーバー端点はまた、装置端点Aにより提供される同一の情報を(最初に少なくとも)含む当該サーバー端点自身のフィードを利用可能としてもよい。その後、当該フィードによって包含された情報のうちのいくらかがサーバー端点上で更新される場合、今度はサーバー端点が、変更又は更新されたデータとフィード内のSSE情報に対する対応する更新の両方を含むように自身のフィードを更新してもよい。その後、装置端点Aを含むサーバー端点からのこの情報を同期させる別の端点は、フィードを得て、(おそらくは装置端点Aからの変更を組み入れるためにサーバー端点により行われるものと同一又は同様のマージ処理を実行して)変更をマージしてもよい。要約すると、いくつかの同期技術により、2つの端点は互いに同じデータを同期させることができ、その結果、どちらか一方の端点は、例えば、各々がデータを利用可能にし、他の端点により提供されるデータが変化する場合に各々が自身のローカル・データを更新することによって、データに変更を行ってもよい。
【0014】
更に、複数の端点は、SSEを含む少なくともいくつかの同期技術によって記述されるような技術を使用して、単一(又は複数)の端点と同期させることができる。例えば、装置端点B170は、装置端点A160とサーバー端点110との間で同期されるのと同じ(又はある他の)データを同期させてもよい。SSEフィードが使用される場合、装置端点は、サーバー端点によって提供されるフィード(ある場合には装置端点Aによって検索されるのと同じフィードを含む)を検索し、当該フィードにより表されるデータ又は変更を組み入れることにより、同一のデータを同期させてもよい。サーバー端点が装置端点Bによってデータに対してなされた変更を含むことができるように、装置端点Bはまた、フィードをサーバー端点にとって利用可能にしてもよい。
【0015】
例えば装置端点A160によって行なわれた変更がサーバー端点110を介して装置端点B170に対して同期されるような以前の例示的な記載におけるように、いくつかの場合においてはデータが別の端点を介してデバイス間で同期されてもよいが、少なくともいくつかの場合においては、また少なくとも特定の同期技術を使用する場合には、他の同期接続形態もまた利用可能である。例えば、ある場合には、SSEを含む同期技術又はプロトコルは、おそらくはサーバー端点110のような集中型のサーバーを介して同期させる能力及び他の端点と直接的に同期させる能力を提供してもよい。例えば、装置端点Aは、いくつかの実施例においては、サーバー端点110を介して同期することにより、又は(図1において点線によって示されるように 装置端点Aと装置端点Bとの間で)装置端点Bと直接的に同期させることにより、装置端点Bに対してデータを同期させることができる。同一の又は他の実施例では、装置端点Bは、装置端点C180とデータを直接的に同期させてもよい。例えば、そのような直接的な同期は、SSEフィード文書の交換及び交換されたフィードに含まれるデータのマージにより、装置端点Aと装置端点Bとの間で実施されるか、又は装置端点Bと装置端点Cとの間で実施される。更に、いくつかの実施例では、サーバー端点の存在は必要ですらないかもしれない。例えば、いくつかの実施例では、メタデータとブロブのデータは、ある場合には、1つ以上のサーバー端点の介在又は1つ以上のサーバー端点により提供される助けなしに他の装置端点の位置を知っている装置端点間で直接的に通信され得る。
【0016】
少なくともいくつかの実施例では、多種多様の種類のデータが端点間で同期されてもよい。例えば、2つの端点が、種々の情報を含むテキスト情報を同期させてもよいし、オーディオファイルもしくはビデオファイル又はコンパイルされた実行可能コードのような「バイナリーの」情報を同期させてもよいし、又は、任意の他の種類又はデータフォーマットを同期させてもよい。
【0017】
同期されるデータは多種多様の方法で表わされてもよい。いくつかの実施例では、そのようなデータは、前述のようなステップの使用を通じて同期された情報を含む端点間で同期される情報に含まれていてもよい。例えば、SSEを使用する実施例では、そのようなデータは、端点間で交換されるSSEフィードに含まれていてもよい。しかしながら、同一又は他の実施例では、端点間で通信される情報は、最終的に端点間で同期されてもよいし通信されてもよいデータのすべてを含んでいるとは限らないかもしれない。そのような場合のうちのいくつかでは、端点間で通信される情報は、その代わりに又はさらに、同期されるべき他のデータへの参照を含んでもよい。そのような参照は、おそらくはリソースを参照するURLを含むRSS又はAtomフィード中の「エンクロージャー」素子の使用を介するなどのように様々な方法で提供されてもよい。その後、参照によって識別されたデータは、様々な手段を使用してアクセスされてもよいし格納されてもよい。
【0018】
本明細書にて使用されるように、用語「メタデータ」は、同期され又は通信されるデータを識別する(また、いくつかの実施例では、当該データを含む)、端点間で通信される情報を指すものと解釈されてもよい。例えば、いくつかの実施例では、メタデータは、同期されたデータの各部分の「項目」を含んでいる文書又はフィードによって具体化されてもよい。いくつかの例示的な実施例において、各項目は次に、「同期データ(sync data)」部分及び「項目データ(item data)」部分を含んでもよい。そのような場合、項目データが同期されるべき情報に関連付けられる一方、同期データは、特定の項目の同期に関する情報に関連付けられてもよい。例えば、同期データが、当該項目に関連付けられたそのようなバージョン番号及び当該項目がどのように又はいつ更新されたかについての履歴等の情報を含む一方、項目データが、項目自体、又は少なくとも当該項目に関連付けられた情報を含んでもよい。
【0019】
ある場合には、項目データのすべてがメタデータに含まれていてもよい一方、他の場合には、メタデータは、項目データのすべてを含むのではなく、その代わりに、項目データへの1つ以上の参照を含んでいてもよい。大量の項目データがある場合には特に、参照の使用によってメタデータを比較的小さなままとすることができるかもしれない。例えば、大きなオーディオファイル又はビデオファイルをすべてメタデータ自体の項目データ部分に含めるのではなく、項目データ要素は、その代わりに、大きなオーディオファイル又はビデオファイルを参照し、識別し又はその検索の助けとなるある種の参照又は識別子を含んでもよい。メタデータによって参照されるようなそのような情報又はデータは、メタデータとは別々に格納又はアクセスされてもよいし、ある場合には、データの「ブロブ」、単に「ブロブ」又は「エンクロージャー」と呼ばれてもよい。(ある場合には、同期データの少なくとも一部がメタデータに含まれず、その代わりにメタデータから参照されることも可能かもしれない。)
SSEを使用する実施例では、ある場合にはメタデータはSSEフィードによって具体化されてもよい。例えば、SSE情報を含むRSSフィードは、データの各部分の「項目」素子のような共通のRSS XML素子を含むXML文書として具体化されてもよい。各「項目」要素は、続いて、少なくともいくつかの実施例で、「シンク」という名のXML要素によって具体化される同期データを含み、少なくともいくつかの実施例で、「項目」という名のXML要素によって具体化される項目データを含み、項目に関する情報又は項目自体を含んでもよい。
【0020】
一般に、項目データ又は項目データ要素は任意の種類のデータを含み得る。RSS文書を備えた単純な事例では、項目データは、「タイトル」及び「記述」のような標準RSS素子を含んでいるかもしれない。同一又は他の場合には、項目データは、例えば、おそらくはhCardのようなフォーマットを使用してコード化されたコンタクト情報、又は他のデータを含んでもよい。さらに他の又は同一の実施例において、項目データは、メタデータ又はRSSフィードに含まれていない情報を含む、他の場所に位置する情報への1つ以上の参照を含んでもよい。メタデータがRSSを使用する場合、そのような参照はRSS「エンクロージャー」要素のように要素を使用して具体化されるかもしれない。
【0021】
少なくともいくつかの場合では、同期される情報をメタデータがすべて含んでもよいことは注目されるべきである。すなわち、端点間で同期されたメタデータは他の情報を必ずしも参照しなくてもよいし識別しなくてもよい。例えば、メタデータが例えば、接触(contact)に関連した情報のすべてを含んでいる場合、接触情報を含んでいる同期されたデータ(フィード又は文書を含む)は、なお一般にはメタデータと呼ばれてもよい。
【0022】
多くの同期技術が、転送されるべきデータに関する情報(すなわちメタデータ)及びメタデータによって参照されるデータのブロブを含む情報自体の両方を、ともに同時に又は同一の端点を使用して転送するが、本明細書に記載された技術のうち少なくともいくつかのものによりなされるように、メタデータとブロブを別々に処理することにはいくつかの利点がある。少なくともいくつかの実施例では、例えば、メタデータの量は、参照されるデータ又はブロブデータの量ほど大きくないかもしれず、したがって、別の方法で及びおそらくは異なる端点の組の間でブロブデータを通信している間に、1つの方法で及び特定の端点間でメタデータを通信することは有利かもしれない。1つのそのような配置において、メタデータはサーバー端点110の使用を通じてサーバー端点へ通信されてもよいし、その一方で少なくともいくつかの場合にはブロブデータは装置端点間で直接的に通信されてもよい。更に、メタデータのうちのいくつか又はすべてはデータを同期させるすべての端点間で転送されてもよいが、ブロブデータはすべての端点間で必ずしも通信されなくてもよい。例えば、そのブロブが特に要求されるか必要な場合のみ、当該ブロブは端点間で通信されてもよい。
【0023】
更に、いくつかの実施例では、ブロブデータの1つ以上の代替表現が様々な特性に依存して端点間で生成され通信されてもよい。例えば、情報を比較的低速に通信する通信機構を使用して、単に1つ以上の他の端点に接続される端点は、いくつかの場合に少なくとも他のいくつかの端点によって検索され得るブロブより小さなブロブを所望し検索するかもしれない。1つの具体例では、比較的低い帯域幅のデータ網を使用して接続される携帯電話は、画像又は動画がより小さな大きさのスペースの中で表わされるように(おそらくは、より積極的な圧縮設定などの使用による画像のサイズなどの縮小により)、別コードに変換された画像ファイル又は動画ファイルを得てもよい。他の種類の代替表現もまた可能かもしれないし、又は少なくともいくつかの実施例により裏付けられてもよい。例えば、いくつかの端点は、例えばオーディオファイル又はビデオファイルの全体などではなくオーディオファイル又はビデオファイルのクリップを検索するかもしれない。
【0024】
少なくともそのような実施例のうちのいくつかにおいては、1つ以上の特定の端点は、特定の代替表現を生成又は提供する能力を持っていてもよい。例えば、いくつかの実施例では、「代替表現サービス」又は「トランスコーディング・サービス」が、サーバー端点110(図1に図示されない)に存在してもよいし、サーバー端点又は他の端点上に格納されたブロブの少なくともいくつかの代替表現の生成に参加してもよい。同一又は他の実施例では、1つ以上の装置端点のような少なくともいくつかの特定の他の端点は、さらにブロブの代替表現を提供する能力を有していてもよいし、当該能力を代わりに有していてもよい。さらに本明細書に別記されるように、代替表現の生成及び提供に関連する追加モジュール、サービス及びプロセスが存在する。
【0025】
サーバー端点の例示的な実施は、例示的なサーバー端点110の一部であるものとして図1に示されたサービス及びモジュールの1つ以上を含む様々な機能を含み得る。前述のように、すべてのサーバー端点が説明されたモジュール及びサービスをすべて含んでいるとは限らないかもしれないが、その一方で他のサーバー端点は追加モジュールとサービスを含んでいてもよい。更に、モジュールとサービスのうちのいくつかは特定の方法で互いに通信するものと説明されていてもよいが、一般に、多くのモジュール及びサービスが、他の端点にもサーバー端点にも位置するモジュール及びサービスを含む他のモジュール又はサービスと通信してもよく、そのような通信が特に記述されないモジュール及びサービスを含む他のモジュール又はサービスと通信してもよい。例えば、知識格納モジュール145は、例えば、1つ以上の特定の方法でブロブ・キャッシュ・サービス130とともに使用されるものとして説明されてもよいが、そのような説明は、知識格納モジュールを、通信が特に記述されるような、ブロブ・キャッシュ・サービス又は他のモジュールもしくはサービスと単に通信することに限定するものではない。少なくともいくつかの実施例で、知識格納モジュールは、さらに、様々な他のモジュール又はサービスと通信してもよい。更に、図1には示されていないが、いくつかの実施例では、1つより多くのサーバー端点が存在してもよい。そのような実施例のうちの少なくともいくつかでは、少なくともいくつかのサーバー端点は他のサーバー端点と通信し、異なる端点間のデータの同期に参加してもよい。そのような複数サーバー端点の各々は、図1に示される例示的なサービス及びモジュールのうちのいくつかのみ又はおそらくはすべてを、例示的なサーバー端点110の一部であるものとして含んでもよい。
【0026】
例示的なストレージ・サービス120は、一般にメタデータを格納し、他の端点がサーバー端点110とメタデータを同期させるための能力を提供してもよい。例示的な装置端点A160は、例えば、ローカルな変更を行い、メタデータが変更を含むようにそれが保持するメタデータを更新し、次に、更新されたメタデータをストレージ・サービスに通信してもよい。その後、ストレージ・サービスは、装置端点Aから通信されるメタデータの変化をストレージ・サービスによって管理される同じメタデータについてのある表現とマージしてもよい。ストレージ・サービスは、次に、それ自身のマージされたメタデータ又は更新されたメタデータを他の端点に対して利用可能にしてもよい(続いて、他の端点がストレージ・サービスによって提供されるメタデータを検索し、装置端点Aによって最初に行なわれた変更を組み込むことを可能にする)。ストレージ・サービスは、少なくともいくつかの実施例において、複数のSSEフィードなどの複数の別個のメタデータを格納し提供してもよく、各メタデータは、異なる(又は同一の)データの組を識別してもよい。例示的なストレージ・サービス120によって行なわれる動作のうちの少なくともいくつかは、特に図5に関連して、以下により詳細に説明される。
【0027】
SSEを使用するものを含むいくつかの実施例では、ストレージ・サービスは、他の端点によって利用可能になったSSEフィードを受け入れてもよい(又は、ある方法で検索もしくは取得してもよい)。その後、ストレージ・サービスは、得られたフィードの変更を、データベース中の記録などとして、ファイル自体として含む様々な方法によりストレージ・サービスが格納又はアクセスし得るフィードのローカルの表現とマージしてもよい。その後、ストレージ・サービスは、他の端点に対して更新されたフィードを積極的に通信することにより、おそらくウェブ又はファイル・サーバーを使用することで、さらに他の端点によってアクセス可能なファイルとして含む様々な方法で、マージ動作の結果である更新されたフィードを、少なくともいくつかの端点にとって利用可能としてもよい。
【0028】
いくつかの実施例で、例示的なブロブ検索サービス125は、ブロブ識別子などのブロブを識別するあるデータを受け取ってもよく、また、ブロブを取得又は検索するために端点が使用し得る1つ以上の「ロケーター」を提供してもよい。例えば、メタデータ及びブロブが異なって又は別個に通信又は同期され得るものを含む実施例において、1つ以上の端点が、ブロブ検索サービスに、特定のブロブが検索され得る位置を含む情報を提供してもよい。いくつかの実施例では、そのような位置は、装置端点、ブロブ・キャッシュ・サービス130又はクラウド・ストレージ・サービス135を含み得る。ブロブ検索サービスは、その後しばらくして、ブロブを取得することを望む別の端点にこれらの位置の1つ以上を提供してもよい。例示的なブロブ検索サービスによって実行され得る少なくともいくつかの動作は、特に図4及び図6に関連して、より詳細に以下に説明される。
【0029】
ブロブ識別子は、一般に、ブロブを識別するあるデータであってもよい。いくつかの実施例では、ブロブ識別子は、ブロブ自体が通信されることを要求することなくブロブを特に識別するために、様々な装置及びサーバー機能によって使用されてもよい。したがって、例えば、ストレージ・サービス及び他の端点はメタデータ中でブロブ識別子を使用してもよく、ブロブ検索サービスはブロブ識別子を使用して位置を格納又は提供してもよく、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスは、関連付けられたブロブ識別子を使用してインデックスを付けられるか又は検索されてもよい。いくつかの実施例では、単一のブロブ識別子がブロブを識別するために様々なモジュール又は機能によって使用されてもよい一方、同一又は他の実施例においては、おそらくは異なるモジュール又は機能により、特定の単一のブロブを識別するために、異なるブロブ識別子が使用されてもよい。
【0030】
ブロブ識別子は様々な方法で実施され、様々な形式をとり得る。少なくとも1つの実施例では、ブロブ識別子は、「ABCl23」、「ABCDEFGH」、「123456」などの文字列、英数字の組又は他の文字にすぎないものであってもよい。別の実施例では、ブロブ識別子は、例えばおそらくは「http://www.els.live.com/ABC123」、「http://www.els.live.com/ABCDEFGH」、「http://www.els.live.com/123456」などのようなユニフォーム・リソース・ロケーター(URL)又はユニフォーム・リソース識別子(URI)の形式をとってもよい。そのような例において、識別子の「http://www.els.live.com/」部分に続く文字列は、実際にブロブを識別してもよい。ある場合には、識別子の「http://www.els.live.com/」部分が、ブロブ識別子をユーザーが親しんでいる識別子のように見せることや、又は図9に特に関連して以下に述べられる例示的な実施例に含まれる少なくともいくつかの特定の場合には、実際にさらにブロブを見つけることを含む様々な他の目的に使用されてもよい。
【0031】
例示的なブロブ・キャッシュ・サービス130は、一時的なブロブ又はファイルのために記憶位置を提供してもよい。ある場合にはそのような位置は端点間のブロブの転送に役立つ。例えば、装置端点A160がサーバー端点110とメタデータを同期させ、そのメタデータが、装置端点Aから利用可能なブロブを識別すると仮定する。さらに当該ブロブがサーバー端点へ通信されず、代わりに、装置端点A上での検索に利用可能のままであると仮定する。その後装置端点Aはオフラインで動作するか又はサーバー端点及び装置端点B170の1つ又は両方に対して利用不能になると仮定する。ここで、装置端点Bがサーバー端点からのメタデータを同期させて、それが装置端点Aからブロブを検索することを所望すると決定する場合、そのようにすることはできない。というのは、ブロブの単なるコピーを有する装置端点Aがオンラインでなく利用可能ではないからである。そのような問題は、ブロブ・キャッシュ・サービスの使用を介することを含む様々な手段によって解決される。1つのそのような実施例では、装置端点Aが利用不可能になる前に、装置端点Aによって提供されるメタデータに関連付けられたブロブは、ブロブ・キャッシュ・サービスに格納され、次に、装置端点Bは、装置端点Aからの代わりにブロブ・キャッシュ・サービスからブロブを検索してもよい。
【0032】
キャッシュとして、例示的なブロブ・キャッシュ・サービスは一時的なデータとしてブロブを格納してもよい。すなわち、おそらくは以下に述べるクラウド・ストレージ・サービス135とは対照的に、ブロブ・キャッシュ・サービスによって格納されたブロブは、制限された期間の間格納されるにすぎず、ある場合にはブロブ・キャッシュ・サービス自体又は他のあるモジュールもしくはサービスによって制御される様々な時間において削除される。例えば、いくつかの実施例では、ブロブ・キャッシュ・サービスは、いつブロブを削除するか、又は、現在格納されているブロブを新たなブロブにいつ取り替えるかを決定するために1つ以上のキャッシュ・アルゴリズムを使用してもよい。例えば、少なくとも1つの実施例では、ブロブ・キャッシュ・サービスは、その利用可能な記憶スペースを最初に満たし又は占有し、次に、新たなブロブが格納されることになる場合、最近使用されていない1つ以上のブロブを見つけて削除し且つ新たなブロブデータのために利用できるスペースを作るために「最近最も用いられていない」(又はLRU)アルゴリズムのようなアルゴリズムを使用してもよい。ある場合には、少なくとも、ブロブ・キャッシュ・サービスに関連した機能を実施することは、おそらくは以下に述べるクラウド・ストレージ・サービス135を含む持続的な格納部に関連付けられた機能を実施することよりも、金銭的、動作的又はその他のリソースをより必要としない。例えば、ブロブ・キャッシュ・サービスに関連した情報が確実に又は無制限に格納されることは保証されなくてもよいので、ブロブ・キャッシュ・サービスは、少なくとも他のある一時的でないデータを保持するように設計された格納部によって要求され得る冗長なデータ記憶機能について同じレベル又は種類を必要としない。
【0033】
例示的なブロブ・キャッシュ・サービス130によって行なわれ得る少なくともいくつかの動作は、特に図7に関連して、より詳細に以下に述べられる。
【0034】
例示的なクラウド・ストレージ・サービス135は、一般に、一時的でないデータのために「クラウド中の」記憶を提供してもよい。すなわち、ブロブを格納し、クラウド・ストレージ・サービスが、例えば、「常にオン状態にある」又は「常にアクセス可能である」として、及び、「信頼できる」記憶を提供するものとして、ユーザー及び端点から見なされるという点において、クラウド・ストレージ・サービスはブロブ・キャッシュ・サービスのようにいくつかの方法で動作し得る。端点は、例えば装置端点上にブロブデータを格納する代わりに、いくつかの場合において含む様々な場合において、クラウド・ストレージ・サービスを使用してブロブデータを格納してもよい。例示的なクラウド・ストレージ・サービスによって行なわれ得る少なくともいくつかの動作は、特に図8に関連して、より詳細に以下に説明される。
【0035】
いくつかの実施例では、ブロブデータのために記憶を提供し、ブロブ・キャッシュ・サービス130とは別に動作する、1つ以上の追加的なサービス又はモジュール、又は、クラウド・ストレージ・サービス135は、例示的なサーバー端点110の一部であってもよい。例えば、1つの実施例では、そのような異なるブロブ・データ・ストレージ・サービスは、ブロブ・キャッシュ・サービスによって提供されるものより比較的持続的であるが、(少なくとも、これら例示的なサービスが上記に導入された場合には、)クラウド・ストレージ・サービスによって提供されるものほど比較的持続的でない記憶を提供するかもしれない。そのようなサービスは、例えば、ブロブが格納され得る他の端点又はブロブが利用可能となり得る他の端点についての知識を使用して、いつブロブを格納するかを決定することによりそうするかもしれない。例えば、比較的高度に利用可能であると知られているいくつかの他の端点上にブロブが既に格納されていることをある知識が示す場合、そのようなブロブ・データ・ストレージ・サービスはブロブを格納しないかもしれない。1つの具体的な例において、例えば通常ほとんどの時間又はすべての時間にネットワーク存在するか又はネットワークに接続されている4つの端点に特定のブロブが格納されていることをブロブ・データ・ストレージ・サービスにアクセス可能な知識が示す場合、要求を行う端点が当該4つの他の端点の少なくとも1つからブロブを検索する可能性が高いので、例示的なブロブ・データ・ストレージ・サービスはブロブを格納することができないかもしれない。少なくともいくつかの実施例では、ある新たな種類のブロブ・データ・ストレージ・サービスにおいてそのような異なる機構は必ずしも実施される必要がないことはさらに注目されるべきであり、代わりに、そのような機構はブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスの一部であるかこれらに含まれ得るということもまた注目されるべきである。
【0036】
特定のメタデータを同期させる端点は、一般に、そのようなメタデータが1つ以上の他の端点上でいつ更新されたかを知ろうとしてもよく、その結果、例えば、端点は、おそらく、メタデータの自身のコピーを更新することができるほか、おそらく任意の所望のブロブデータを検索することができる。時に非効率的な一つの実施例において、端点は、おそらくはサーバー端点110により提供されるものを含む1つ以上の利用可能なメタデータを「ポーリング」又は周期的にチェックし、他方のメタデータが変化した場合に同期するための変更が存在することを決定する。代替的に、端点は、例示的な通知サービス140によって提供される機能を使用するかもしれない。通知サービスは、端点が特定のメタデータに対する関心を登録又は示すための能力を提供してもよく、その後、特定のメタデータが変更する場合に、興味を持っていた端点又は登録された端点に通知を供給してもよい。その結果、端点は、変更のためのポーリングを回避することができ、又は少なくともそれほど頻繁にポーリングしなくてもよく、メタデータが変更される場合にはなお、ある対策をとることができてもよい。通知は、様々なネットワーキング又は他の通信機構によって提供される2地点間又はブロードキャスト機能の使用を介することを含む様々な方法で実施されてもよい。同一又は他の実施例では、例示的な通知モジュールはまた、メタデータへの変更に加えて他のイベントに関する通知を提供してもよい。例えば、いくつかの実施例では、通知モジュールは、更新又は変更されたロケーター(そのようなロケーターは例示的なブロブ検索サービスによって管理されてもよい)に関する情報を含む通知を端点に周期的に提供してもよい。ブロブを検索する際に更新されたロケーターを使用することにより、ブロブを検索する方法及びしたがっておそらくはブロブをより効率的に検索する方法を端点が変更したり、端点がネットワーク又は他の条件の変更に適合したりするなどすることを可能にする。
【0037】
例示的な知識格納モジュール145は、サーバー端点110により提供されるインタラクション又は機能を介して獲得され得る「知識」のための記憶又は当該「知識」へのアクセスを提供してもよい。その後、そのような知識は、ある場合には、データの同期を制御又は最適化することを含む様々な目的に使用されてもよい。知識がどのように集められ使用されるかについてのより多くの例が本明細書の他の場所に記載され得るが、ある場合には、知識は、サーバー端点と通信するか又は他の端点と通信する端点に関連付けられる特性などのデータに一般に関連してもよい。知識格納モジュールによって格納又は使用される特性は一般に「知識特性(knowledge characteristics)」と呼ばれてもよい。例えば、いくつかの例示的な知識特性は、接続の速度、接続の利用可能な帯域幅、接続に関連した任意のコストなどのような、装置端点がサーバー端点に一般に接続する方法に関する情報を含んでもよい。例えば、接続は、高速データネットワーク又は比較的遅い携帯電話ネットワークを介してもよいし、接続は、その日の特定の時間において空いているがその日の別の時間には使用されている帯域幅を有していてもよい、といった具合である。知識特性はまた、端点がいつ共通してオンラインとなるのか又は利用可能となるのかに関する情報を含む、端点に関する他の情報を含み得る−装置はラップトップ又は携帯電話かもしれないし、断続的に接続されるかもしれず、「常に」接続される「常時オン状態の」デスクトップコンピューターかもしれないし、また他の場合もある。別の例として、知識モジュールは、特定のブロブがどれくらい頻繁に要求されるか、どの端点からブロブが要求されるかなどの、端点とサーバー端点とのインタラクションから生じる情報を格納してもよい。知識がどのように又はどこで取得されるかにかかわらず、知識は、その後、データが同期される方法を制御又は最適化することの一部として含む様々な方法で、サーバー端点又はおそらくは他の端点により提供及び使用される。
【0038】
さらに別の例において、接続特性もしくは装置の他の特性又は他の知識などの知識は、要求されたブロブの1つ以上の代替表現を識別又は提供するべきかどうかを決定するために使用されてもよい。例えば前述のように、画像が低速な接続機構を使用して接続される端点によって要求される場合又はブロブが比較的により制限された記憶スペースを有する端点に格納される場合、代替表現は、例えば、そうでなければ大きな画像のより小さな別コードに変換されたバージョンを含んでもよい。同一又は別の例において、知識は、特定の端点が特定のブロブの特定の代替表現を有するか否か、及び/又は(おそらくは特定の端点において代替表現を生成したり、他のある端点から代替的なバージョンを検索したりすることにより)特定の端点が特定の代替表現を使用して表わされるブロブを生成又は提供する能力を有するか否かを含む。
【0039】
最後に、サーバー端点110の一部であるブロブ・ダウンロード・モジュール150又は装置端点A160の一部であるブロブ・ダウンロード・モジュール162などの例示的なブロブ・ダウンロード・モジュールは、ある場合には、他の端点を含む様々な他の位置からブロブをダウンロード又は検索してもよい。一般に、ブロブ・ダウンロード・モジュールは、ブロブのある一部又は全体を検索するために1つ以上のブロブ検索機構を使用してもよく、「ブロブ検索機構」は、例えば、ブロブが配置されてもよい1つ以上の方法及び/又はブロブが検索されてもよい1つ以上の方法を指定してもよい。おそらくは比較的単純な1つのブロブ・ダウンロード・モジュールは、例えば、HTTP、FTP又は様々な他のファイル共有プロトコルなどのプロトコルを使用する単一のブロブ検索機構を使用して、ブロブを検索することができるのみであってもよい。別のブロブ・ダウンロード・モジュールは、そのようなブロブ検索機構のうちの任意のもののほかに他のブロブ検索機構を使用して、ファイルを検索することができてもよい。例えば、いくつかのブロブ・ダウンロード・モジュールは、ビット・トレント(BitTorrent)プロトコルのようなプロトコルによって記述された機構などの、様々な端点から数個の同じブロブを「同時に」検索し得る機構を使用することができるかもしれない。同一又は他のブロブ・ダウンロード・モジュールはまた、より効率的にブロブを検索するために例えば「差分圧縮」などの他の機能を使用してもよく、ブロブの実に小さな一部が変更されるたびにブロブ全体が通信される必要がないように、変更されたブロブの部分のみが通信される。いくつかのブロブ・ダウンロード・モジュールは、ある場合には、いくつかの実施例において前述の例示的なブロブ検索サービス125と同一又は類似であるブロブ検索サービスを使用して、ブロブを見つけてもよいが、同一又は他の実施例において、ブロブ・ダウンロード・モジュールがブロブ検索機能の使用又はブロブ検索サービスの使用をすることなくブロブを見つけたり検索したりしてもよい。
【0040】
更に、ある場合には、ブロブ・ダウンロード・モジュールは、ブロブ・ダウンロード・モジュールによって使用されるブロブ検索機構(又はこのコンテキストにおける「ドライバー」)を組織するために「プラグ着脱可能な」アーキテクチャを使用してもよい。例えば、1つのブロブ検索機構又はドライバーは、例示的なブロブ・キャッシュ・サービスからのブロブの検索を可能にしてもよく、別のドライバーは、ブロブを提供することができ、(ある場合には1つより多くの端点によりビット・トレントのような機構の使用を介することを含んで)そのような端点の1つ以上からブロブを検索することができる1組の端点を検索するためにブロブ検索サービスを使用してもよいし、さらに別のドライバーは、ブロブ検索サービスを使用せず、様々な他の機構の1つ以上を使用してブロブを検索する1つ以上の端点を識別してもよい。プラグ着脱可能なアーキテクチャにより、ブロブ・ダウンロード・モジュール又はブロブ・ダウンロード・モジュールを含む端点の全面的な構成や実施を必ずしも変更することなしにブロブ・ダウンロード・モジュールが展開されたか既に使用された後を含む様々な時において、追加のブロブ検索機構を加えることができてもよい。そのような機能は、中核のブロブ・ダウンロード・モジュール又は端点自体を変更せずに、新たなブロブ検索機構の後の追加を可能にし得る。
【0041】
この例における各端点が、デスクトップコンピューター、サーバーコンピューター、ラップトップ・コンピューター、ワークステーション・コンピューター、モバイル又は携帯電話、携帯情報端末(PDA)などを含む、任意の数の汎用又は専用のコンピューターを表すことは注目されるべきである。更に、特定の例示的な端点は「装置」又は「サーバー」端点であるとして記載されていてもよいが、そのような指定は必ずしも計算ハードウェアの性質や端点の種類を制限しない。サーバー端点又は装置端点は、少なくともいくつかの実施例において、デスクトップコンピューター、サーバーコンピューター、ラップトップ・コンピューター、ワークステーション・コンピューター、モバイル又は、携帯電話、PDAなどを含む任意の種類の計算ハードウェア上で実施されてもよい。一般に、端点が装置端点と考えられるかサーバー端点と考えられるかは、他の特性のなかで、例えば端点が実施される計算ハードウェアの性質によってではなく端点によって提供される機能によって決定され得る。例えば、例示的なサーバー端点110に関連付けられるものとして前述されたサービス及びモジュールの1つ以上を使用してサーバー機能を提供する端点は、たとえ端点が例えばラップトップコンピューター上で実施されても、サーバー端点と考えることができる。端点は、同一又は他の時に装置端点又は他の種類の端点として動作する一方、特定の時にはサーバー機能を提供し、そのためサーバー端点と考えられるかもしれないことはさらに注目されるべきである。さらに、いくつかの実施例では、特定又は単一の計算装置は複数の端点をホストしてもよいし含んでいてもよい。これら又は他の実施例では、端点間の情報の通信は、少なくとも幾つかの場合には、特定の単一の計算装置上で実行される実行可能コード間の単なる通信を含んでもよい。
【0042】
端点並びに端点内のモジュール及びサービスさえもが様々なネットワーキング又は他の接続手段を使用して接続されてもよい。そのような通信手段は、イーサネット(登録商標)、Wi−Fi、携帯電話又はデータ網などの任意の種類のネットワークを含む、データを送信できる任意の手段を含んでもよく、少なくともいくつかの場合には、コンパクトディスク(CD)又はフラッシュ・メモリー・ドライブのような、物理媒体の転送を含む他の種類の転送を含んでもよい。
【0043】
図2に移ると、同期されるデータを変更し、そのような変更を他の端点に利用可能にする場合に、装置端点を含む端点によって行なわれ得る各種の動作を含む例示的な一般化された動作フロー200が示される。図2の以下の説明は、他の図に関してなされてもよい。しかし、図2に関して記載される動作フローがこれらの他の図に関して記載された要素と共に使用されることに制限されるようには意図されないことが理解されよう。さらに、図2の例示的な動作フローは、特定の実行の順序を示すが、1つ以上の他の実施例において、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかが同時に組み合わせられてもよいし実行されてもよく、同一又は他の実施例において、いくつかのステップが実行されなくてもよいことは理解されるべきである。
【0044】
動作210の例示的な実施例では、変更は、おそらくは以前に図1に関して紹介された装置端点A160などの端点上のローカルデータに対して行なわれる。例えば、ユーザーは、新たなデータを作成するか又は既存データを修正もしくは削除するためにアプリケーションを使用するかもしれない。修正されたデータは、例えば、接触、カレンダー項目、オーディオクリップ、ビデオクリップ、ワードプロセシング又はスプレッドシートのファイル、他のファイルなどの多種多様の種類のデータの1つ以上を含んでもよいがこれらに限定されない。
【0045】
その後、そのような変更は、端点間で同期されるメタデータ又はブロブのデータへの1つ以上の変更をもたらすかもしれない。例えば、ユーザーが、例えば、ビデオ編集アプリケーションを使用して新たなビデオファイルを作成し、新たなファイルが少なくとも1つの他の端点と同期されるデータの一部であると仮定する。動作210の一部又は別の動作の一部として、メタデータが新たなビデオファイルに関連した項目を含むように、変更が行なわれた端点によって保持されたメタデータが更新されてもよい。そのような新たな項目は、少なくともいくつかの実施例において、例えばおそらくはビデオの名前、ビデオについてのテキスト記述、及び(ビデオデータ又はコンテンツがメタデータ・フィード自体に含まれていない場合には)実際のビデオデータ又はコンテンツを識別する参照など、項目自体に関する情報と同様に、項目の同期に関するデータ(おそらくは項目がいつ作成されたか又はその後いつ更新されたかに関するバージョン情報又はデータなど)を含んでもよい。既存の項目が修正される場合、メタデータ及びおそらくブロブデータは同様に更新されてもよい。既存の項目が削除される場合、メタデータは修正され、その結果、例えば、項目が削除されたものとして特徴付けられ、任意の関連するブロブデータも削除されてもよい(又は、少なくともいくつかの実施例においては、利用可能にしておかれてもよい)。
【0046】
動作215の例示的な実施例において、動作210の一部として更新されたメタデータは、おそらくは、少なくともある場合には図1に関連して以前に説明された例示的なサーバー端点110のようなものであるサーバー端点などのサーバー端点へ通信されてもよい。そのような通信は、例えば、メタデータがどのように表わされ、変更を行った端点もしくは受信側端点に利用可能な端点にとって利用可能なネットワーキング又は他の通信機能に依存する多種多様の方法で実行されてもよい。例えば、メタデータがXML文書で具体化される実施例では、メタデータは、おそらくは、XML文書を含んでおりサーバー端点において実行されているかもしくはサーバー端点に関連付けられるHTTPサーバーに提出されるHTTP POST要求を使用して、サーバー端点へ通信される。別の実施例では、変更を行った端点は、更新されたメタデータを特定の位置で、例えば、ネットワーク・シェア上で又は端点自体に関連したHTTPサーバーを介して利用可能にしてもよく、サーバー端点はその位置からメタデータを検索してもよい。
【0047】
少なくともいくつかの実施例では、メタデータ変更に関連付けられたブロブデータは、サーバー端点に通信されなくてもよい。代わりに、ブロブデータは、例えば、変更が行なわれた端点上で(少なくともある期間の間)保持されてもよいが、これに限定されるものではない。例えば、ブロブデータが端点に作成されたビデオデータを含む場合、動作215の実施例が完了した後、ビデオデータは端点上にのみ存在してもよい。ある場合には、そのようなブロブデータがある後の時点で別の端点によって検索又は取得されてもよい。
【0048】
いくつかの実施例では、ブロブ検索サービスがメタデータの変更に関連したブロブデータについて位置情報を含むように、ブロブ検索サービスは動作215の実施例の一部として更新されてもよい。その後、別の端点は端点からブロブデータを検索することの一部としてブロブ検索サービスを使用してもよい。同一又は他の実施例では、別の端点に伝えられたメタデータを別の端点がマージ又は処理する場合、ブロブ検索サービスは更新されてもよい。そのような動作は、少なくとも図5に関して以下に述べられる動作525のような動作によって、いくつかの例において、実施されてもよい。
【0049】
最後に、動作215のいくつかの実施例においては更新されたメタデータがサーバー端点に通信されてもよい一方、同一又は他の実施例においては、更新されたメタデータは、代わりに、又はさらに、両方とも図1に関連して前述される装置端点B170及び/又は装置端点C180などの、他のサーバー端点又は他の装置端点を含む1つ以上の他の端点に通信されてもよい。例えば、メタデータがSSE情報を含んでいるか使用する実施例においては、そのためメタデータは、任意の(及び時にはサーバーではない)端点間で通信され同期されてもよく、動作215の少なくともいくつかの実施例では、様々な他の端点へ更新されたメタデータを通信してもよい。
【0050】
動作220の例示的な実施例では、変更が行なわれた端点は、以前にサーバー(又は他の)端点に通信されたメタデータに対する将来の更新を通知されるように、予約又は登録されてもよい。そのような予約又は登録の後、その後、端点は、少なくともいくつかの場合には、更新されたメタデータが以前に通信されたサーバー端点などの他のある端点上でメタデータが変更される場合に、(様々な方法で具体化又は実施された)通知を受け取ってもよい。以前に述べたように、端点はこれによって、データの変更について端点が積極的にポーリング又はチェックすることを要することなく、関係のあるデータへの他の変更に気づくことができる。
【0051】
動作220の実行の一部として、ある場合には予約又は登録がなされてもよいが、同じ(又は異なる)予約又は登録が、別の時になされてもよいし、全くなされなくてもよい。
【0052】
動作225の例示的な実施例では、端点は、例えば要求者にブロブを提供することにより、メタデータの変更に関連付けられるブロブを求める要求に応えてもよい。すなわち、例えば、ブロブを参照するか又はブロブに関連付けられるメタデータの変更が1つ以上の他の端点によって受信又は処理された後のある時点において、それら1つ以上の他の端点は(又は別の端点)は、ブロブによって含まれるデータを必要とするか又は所望することを決定してもよい。ブロブデータがメタデータの一部として通信されない場合を含むいくつかの実施例において、その後、他のそのような端点は、ブロブが存在する別の端点からのブロブを要求することによりブロブを検索してもよい。ブロブが要求者に提供される方法と同様にブロブが要求される方法も、より詳細に以下に述べるものと同様に、例えばブロブ検索サービス及びブロブ・ダウンロード・モジュールに関して以前に紹介されたもののうちのいくつかを含む多種多様の方法で実施されてもよい。
【0053】
図3に移ると、別の端点からのデータを同期させる場合に、装置端点を含む端点によって行なわれ得る各種の動作を含む例示的な一般化された動作フロー300が示される。図3についての以下の説明は他の図に関してなされてもよい。しかし、図3に関して述べられる動作フローは、これらの他の図に関して述べる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図3の例示的な動作フローは特定の実行の順序を示しているが、1つ以上の代替的な実施例において、動作は異なった順序でなされてもよい。更に、例示的な動作フローが複数のステップを含んでいるが、いくつかの実施例においてはこれらの動作のうちの少なくともいくつかが同時に組み合わせられてもよいし、同時に実行されてもよく、また、同一又は他の実施例においては、いくつかのステップは実行されなくてもよいことが理解されるべきである。
【0054】
動作310の例示的な実施例では、端点は、端点が関心を持つメタデータが変更されたことを決定してもよい。例えば、端点は、おそらくは図2に関して以前に述べたような方法で、以前に同じメタデータを更新しており、将来の変更について通知を受けるように登録しているかもしれない。この場合、又は他の場合において、そのような端点は、メタデータのコピーを保持するサーバー端点を含む他のある端点から通知を受け取ってもよい。別の実施例では、端点は周期的にある位置をポーリングし、その位置でのメタデータが変更されたことをポーリングの動作を通じて決定してもよい。さらに他の実施例では、この動作は行なわれなくてもよい。そのような実施例では、端点は、メタデータが変わったかどうかにかかわらず、メタデータを得てメタデータをマージするなど、例示的な動作フロー300の他の動作のうちの少なくともいくつかを周期的に実行してもよい。(この動作フローに関連付けられた記述は、ある場合には、問題となっているメタデータに変更が存在すると仮定してもよい−変更が実際には存在しない場合、様々な動作が異なったように実行されてもよいし、おそらくは全く実行されなくてもよい。)。
【0055】
動作315の少なくともいくつかの実施例では、端点は、様々な手段を介して変更を含み得るメタデータを得てもよい。例えば、図1に関して以前に述べた装置端点A160のような装置端点をおそらくは含む端点は、図1に関して以前に述べたサーバー端点110のようなサーバー端点の一部であるか又はこれに関連付けられるウェブサーバーへのHTTP GET要求を開始してもよく、またそれに応じて1つ以上の変更を含むメタデータを受け取る。他の実施例では、メタデータは、別の端点によって積極的に通信されてもよいし、又は様々な他の方法で得られてもよい。いくつかの実施例では、得られたメタデータは、特定のメタデータによって表わされ得る項目をすべて含んでいるかもしれない一方、同一又は他の実施例では、少なくともいくつかの場合において、メタデータは、例えば、変更された項目のみを含む項目の部分集合を含むにすぎなくてもよい。
【0056】
動作320の例示的な実施例では、得られたメタデータは、ローカルに保持されたメタデータのコピーとマージされてもよい。そのようなマージ動作は、動作フロー300を実行する端点によって保持又は修正されるメタデータの別のコピーの中へ、得られたメタデータ中に具体化された変更を組み込んでもよい。そのようなメタデータのローカルのコピー又はローカルのメタデータの格納は、(少なくともいくつかの実施例で)ファイルシステム内で1つ以上のファイルに存在し得るXMLフィード(又は他の)文書のコピーとして、データベース中で列又は記録として含む、様々な方法で保持されてもよい。
【0057】
メタデータがSSE情報を含んでいる実施例においては、そのようなマージ動作はSSEマージを使用して実行されてもよい。SSEマージを実施する1つの方法の単純化された記述において、この例において得られたメタデータによって具体化される「異質の(foreign)」項目を、ローカルに保持されるか、メタデータをマージする端点に関連付けられる「ローカルの」項目と比較する、SSEによって指定されたプロセスに続いてもよい。ローカルのメタデータ格納部に存在しない新たな異質な項目は、ローカルのメタデータ格納部に一般には組み込まれ、それによって、新たなローカル項目を作成する。おそらくは両方の項目が同じSSE識別子を有するので、異質な項目がローカルの項目に対応する場合において、マージプロセスは、より最近に更新された項目であるべき得ている項目(winning item)を選択することによるなど、1つ以上の手段を使用して、「得ている項目」及び「失っている項目(losing item)」を選択してもよい。最後に、ローカルの項目が得ている項目でない場合、それが得ている項目によって具体化されたデータを組込むように、ローカルの項目が更新されてもよい。
【0058】
動作325の少なくともいくつかの実施例では、情報を同期させておりメタデータを得た端点が、メタデータによって参照又は識別された1つ以上のブロブをさらに要求又は所望するかどうかが決定されてもよい。例えば、メタデータがメタデータに関連した少なくともある情報を含んでおらず、その代わりに、例えば、別の場所に格納されたデータのブロブへの1つ以上の参照を含み得るような実施例では、この動作は、それらのブロブの1つ以上が所望又は要求されることを決定してもよい。単に1つの例において、動作フロー300の目的の少なくとも一部が、動作フロー300を実行している端点に対してメタデータ及び関連するブロブデータの両方を同期させることである場合、そのようなことになりうる。ブロブが必要な場合、例示的な動作フローは動作330に進んでもよい。ブロブが必要でない場合、例示的な動作フローは終了してもよい。
【0059】
動作330の例示的な実施例では、得られたメタデータによって識別又は参照される1つ以上のブロブが検索されてもよい。検索するためのブロブは、様々な方法で識別されてもよい。例えば、ある場合には、変更されたメタデータ項目に関連した任意のブロブが検索されてもよい。他の実施例では、変更されたブロブの部分集合だけが検索されてもよい−おそらく、特定のサイズ以下のブロブだけが検索されるかもしれず、又は、他のいくつかの基準が検索するためのブロブをフィルタリング又は決定するために使用されてもよい。いくつかの実施例では、単一のメタデータ項目は単一のブロブを識別するが、同一又は他の実施例では、単一のメタデータ項目は複数のブロブを識別してもよい。その後、識別された各ブロブは、1つ以上の異なる方法で検索されてもよい。いくつかの実施例では、識別されたブロブの1つ以上の代替表現、特定のファイル(画像、ビデオ又はオーディオファイルなど)の別コードに変換されたバージョンなどが検索されてもよい。最後に、いくつかの実施例では、ブロブは、図4に関して以下に述べる動作と同一又は類似する動作を使用して検索されてもよい。他の実施例では、ブロブは1つ以上の異なる方法で検索されてもよい。
【0060】
図4に移ると、ブロブを検索又はダウンロードするために行なわれ得る各種の動作を含む例示的な一般化された動作フロー400が示されている。図4の以下の説明は他の図に関してなされてもよい。しかし、図4に関して述べられる動作フローは、これらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図4の例示的な動作フローが特定の実行の順序を示している一方、1つ以上の他の実施例においては、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかが同時に組み合わせられてもよいし実行されてもよく、同一又は他の実施例において、いくつかのステップは実行されなくてもよいことは理解されるべきである。
【0061】
動作410の例示的な実施例では、ブロブ検索サービス(又はBLS)がブロブを検索することの一部として使用されるか否かが決定されてもよい。例えば、いくつかの実施例では、端点がブロブ検索サービスを使用せずに(又は使用することによって)ブロブを最初に検索することを試みてもよいので、この決定は少なくとも部分的になされてもよい。そのような実施例では、ブロブ検索サービスは、例えば、ブロブ検索サービスを使用せずにブロブを検索する最初の試みがなされた後にのみ使用されるかもしれない。そのような最初の試みが失敗する場合、ブロブ検索サービスが使用されてもよい。別の実施例では、ブロブ検索サービスは利用可能ではないかもしれず、又は、決定は様々な他の方法でなされてもよい。ブロブ検索サービスが使用される場合、動作フロー400は動作415に進んでもよい。ブロブ検索サービスが使用されない場合、動作フローは動作435に進んでもよい。
【0062】
ブロブ検索サービスが使用される場合、動作フロー400は動作415に進んでもよく、その場合、例示的な実施例において、端点は所望のブロブに関連した1つ以上のロケーターについてブロブ検索サービスに質問してもよいし、問い合わせてもよい。そのような問合せは、様々な通信機構又は手段を使用して、ブロブ検索サービスに伝えられてもよい。いくつかの実施例では、追加情報もまた要求に含まれていてもよい。例えば、いくつかの実施例では、端点はまた、特定のブロブが1つ以上の代替表現で提供されることを要求してもよい。例えば、携帯電話は、比較的より小さな大きさのスペースを占めるブロブの表現を要求するかもしれない(その結果、潜在的に低速のネットワーク接続を介して転送するのがより容易になったり、制限された格納スペースをもつ装置上に格納することがより容易になったりする)。
【0063】
そのような要求に応答して、ブロブ検索サービスは、1つ以上の「ロケーター」を提供してもよく、ロケーターは、ブロブの少なくとも一部を提供することができる端点の識別を一般に含み得る。例えば、1つの実施例において、ブロブ検索サービスは、要求されるブロブの少なくとも一部を提供することができるとブロブ検索サービスが決定した1つ以上の端点を指定するドメインネーム又はIPアドレスを各々が順に含む1つ以上のロケーターを提供してもよい。
【0064】
他の実施例と同様に、(必ずしもすべての実施例においてではないが)そのような実施例のうちの少なくともいくつかにおいては、ブロブ検索サービスによって提供される1つ以上のロケーターはまた、他の情報を含んでもよい。例えば、いくつかの場合においては、ロケーターは、ロケーターにより識別される端点とコンタクトをとるべき方法又はブロブが検索されるべき方法を決定するために少なくとも部分的に使用される情報を含んでもよい。例えば、ロケーターは、ある種類のピア・ツー・ピアもしくは分散されたデータ転送機構、HTTP、FTPなどのような、使用され得るサポートされるプロトコルについてのある指示を含んでもよい。同一又は他の場合では、1つ以上のロケーターは、特定のロケーターを好まれているものとして識別し得る好み又は順序についてのある指示を含んでもよく、例えば、そのような好まれるロケーターが、他のロケーターが使用される前に最初に使用されてもよい。
【0065】
同一又は他の実施例では、特定のブロブの一部又は部分のみが特定の端点から利用可能であってもよい。例えば、特定のブロブの最初の50%は特定の端点を使用してアクセス可能である一方、同じブロブの最後の50%は別の端点を使用してアクセス可能であってもよい。そのような実施例では、ロケーターは、ある場合には、ブロブのどの一部が、ロケーターに関連付けられる特定の端点によって提供され得るのかを示す情報を含んでもよい。
【0066】
同一又はさらに他の実施例では、ロケーターは、図1に関して以前に述べた、例示的な知識格納モジュール145によって利用可能とされた知識などのある種類の知識によって導出又は提供される情報を含んでもよい。そのような知識は、例えば、(おそらくはそれらのロケーターが、より速い接続をしていたり、ロケーターを要求する端点に物理的に又は論理的により近接していたりする端点を識別するので)1つ以上のロケーターを提供するブロブ検索サービスが特定のロケーターの使用に対する好みを示すことを可能にするか、又は、様々な他の方法で提供するロケーターをブロブ検索サービスが修正又は変更することを可能にし得る。
【0067】
ロケーターは、以前に述べたように追加情報を含んでいてもよいが、同一の場合又は実施例のいくつかにおいて、提供されるロケーターが追加情報を含まなくてもよいことはさらに注目されるべきである。そのような場合、及び他の場合において、図示されないものを含む他の動作は、使用する通信プロトコル又は転送プロトコルを決定するなどのためにロケーターにおいて識別された端点による交渉プロセスなどの他の手段によってブロブを検索する方法を決定してもよい。
【0068】
動作420の少なくともいくつかの実施例では、提供されるロケーターをブロブを検索するために使用することができるかどうかが決定されてもよい。例えば、ロケーターにおいて識別された端点は問い合わせられてもよく、また、ブロブ検索を開始するためにブロブを検索するための要求が送信されてもよく、ブロブの状態又は利用可能性をチェックするための要求が送信されてもよい、といった具合である。ブロブが検索できないという決定がなされる場合−おそらくはロケーターがオフラインの端点を識別し、例えば、又はブロブが他のある理由で検索することができない場合−少なくともいくつかの実施例において、動作フロー400は動作430に進んでもよい。ブロブを検索するためにロケーターの1つ以上を使用することができる場合、動作フローは動作425に進んでもよい。
【0069】
動作425の例示的な実施例では、ロケーターはブロブを検索するために使用されてもよい。この動作は、ロケーターにおいて提供される情報、サポートされるか又は利用可能な通信プロトコル又はファイル転送プロトコルなどを含むがこれらに限定されない様々な特性に依存する多種多様な方法で実行されてもよい。いくつかの実施例では、ブロブの検索は、少なくとも部分的には、図1に関連して以前に述べたブロブ・ダウンロード・モジュール150及びブロブ・ダウンロード・モジュール162に類似した又はこれらと同一のブロブ・ダウンロード・モジュールの使用を通じて実施されてもよい。
【0070】
例えば、例示的なブロブ・ダウンロード・モジュールを使用する実施例では、端点はブロブ・ダウンロード・モジュールにロケーターを提供してもよく、ブロブ・ダウンロード・モジュールは、次にロケーターの情報を評価し、要求されたブロブを検索又はダウンロードするための1つ以上の方法を決定するために当該情報を使用してもよい。比較的単純な例では、端点又はブロブ・ダウンロード・モジュールは、ブロブを有する別の端点を見つけて、おそらくはHTTP GETやファイルシステムのファイル検索要求などのある種類のネットワーク通信を識別された他の端点へと送り、それに応じて要求されたブロブを受信するために単に単一のロケーターを使用してもよい。そのような実施例及び他の実施例において、そのような要求が成功しないか、(例えば、おそらくは接続が遅いといった)ある理由で好ましくないと決定される場合、1つ以上の他のロケーターがさらに又は代わりに使用されてもよい。
【0071】
別の実施例では、端点又はブロブ・ダウンロード・サービスは、単一のブロブの異なる(又は同じ)部分を求めるおそらくは別個の要求を含む、異なる端点への複数の要求を開始するために複数のロケーターを使用してもよい。いくつかの場合において、複数の端点から同じブロブの異なる一部を得ることは、より速く、又は、任意の特定の単一の端点に対してより影響を与えずに、ブロブの検索を完了することを可能にするか、又は他の長所を有し得る。
【0072】
少なくともいくつかのブロブ検索の実行又は動作において、転送されるべきデータの量を最小化するか又はブロブの検索をさらに最適化するために1つ以上の技術が使用されてもよい。例えば、いくつかの実施例は、より少ないデータを検索するために、ZIP又は他の圧縮技術などのデータ圧縮を使用してもよい。同一又は他の実施例では、要求を行う端点に既に存在し得るブロブのコピーから変更されたブロブの一部のみが、1つ以上の他の端点から要求又は通信されてもよい。変更されたデータが存在するブロブが比較的大きい場合でさえ、そのような「差分圧縮」は小さなデータ量のみが通信されることを可能にし得る。
【0073】
いくつかの実施例では、端点はブロブの検索又はダウンロードの状態に関して別のサービス又は端点に通知してもよい。例えば、端点は、ブロブ検索サービスが特定のブロブのうちのいくらか又はすべてを検索したとブロブ検索サービスに通知してもよい。そのような情報を使用して、ブロブ検索サービスは、同じブロブを求める他のある要求を処理することの一部として端点を識別するロケーターを提供することができてもよい。ある場合には、ブロブが完全に検索される場合に限り、この情報を提供する端点はそのようにしてもよいが、他の場合又は実施例においては、ブロブが検索されるときに端点は情報を周期的に提供してもよく、その結果、例えば、ブロブの25%が検索された場合、ブロブの50%が検索された場合などに、ブロブ検索サービスは更新される。同一又は他の実施例において、別の端点に伝えられた情報は、ブロブのどの部分が検索されたか−例えば、ブロブの最初の50%が検索された、ブロブの最初の10%及び最後の10%が検索されたなど−についての指示を含んでもよく、そのような識別は、今度は他の端点が異なる端点から同じブロブの一部を検索することを可能にするために有益となりうる。
【0074】
ブロブの検索が動作425の実行の間に失敗する場合、ある場合には、動作フローは終了してもよい。他の実施例では、検索の失敗は、以前に説明された動作420の失敗と同様に又は同一の方法で解釈されてもよい。そのような実施例において、ブロブ検索が動作425中に失敗する場合、動作フローは動作430に進んでもよい(そのようなパスは図4の中で破線を使用して示される)。
【0075】
1つ以上の様々な理由によりブロブを検索することができない場合、動作フロー400はある場合には動作430に進んでもよい。動作430を実行するそのような理由は、ブロブ検索サービスによって識別された端点が、おそらくはオンラインでないか利用可能ではないためにブロブを提供することができない場合など、上述されたものを含み得る。動作430の例示的な実施例では、端点は、ブロブ・キャッシュ・サービスが要求されたブロブのコピーを検索しキャッシュに格納することを要求してもよい。いくつかの実施例では、そのようなブロブ・キャッシュ・サービスは少なくとも他のいくつかの端点よりも確実にアクセスされ、したがって、ブロブを検索することを望む端点が他のいくつかの(おそらくは利用不可能な)端点の代わりに使用することができるブロブのための有用な一時的な場所として役立ち得る。
【0076】
そのような実施例のうちのいくつかにおいては、ブロブ・キャッシュ・サービスは、要求を受け入れて、可能な場合にはブロブ自体を検索してもよい。例えば、ブロブ・キャッシュ・サービスは、当初識別された端点が利用可能であるまで待ち、次に当初の端点からブロブを検索してもよい(又はブロブをアップロードするように端点に命じてもよい)。ブロブ・キャッシュ・サービスによって行なわれ得るいくつかの例示的なブロブ・キャッシュ・サービスの実施例及び動作は、特に図1及び図7に関連して本明細書の別の場所に述べられる。
【0077】
いくつかの実施例では、ブロブがブロブ・キャッシュ・サービスによって格納されることを要求する端点は、後に再び動作415を実行し、ブロブを検索するために使用され得るロケーターについてブロブ検索サービスに問い合わせてもよい。例えば、端点は、ブロブ・キャッシュ・サービスが所望のブロブを提供することができるという(おそらくは図1に関して以前に述べた通知サービス140のようなものからの)通知を受け取るかもしれない。ブロブ・キャッシュ・サービスがブロブを格納している場合、それはブロブを有しているとブロブ検索サービスに既に通知しているかもしれず、したがって、ブロブ検索サービスは、ブロブ・キャッシュ・サービスを使用して、利用可能なものとしてブロブを識別するロケーターを、要求を行っている端点に提供してもよい。結局のところ、当初の端点はブロブ・キャッシュ・サービスからブロブを検索してもよい。
【0078】
他の実施例において、おそらくは図1に関して以前に述べたもののようなクラウド・ストレージ・サービスのようなより信頼でき又は利用可能な他の端点を含む他の端点は、端点がブロブを検索し得る位置としてブロブ・キャッシュ・サービスの代わりに使用されてもよい。
【0079】
ブロブ検索サービスが、例えば動作410の一部として使用されないと決定された場合、その後動作フロー400は動作435に進んでもよく、そこで、ブロブは、ブロブ検索サービスを使用しなくてもよい様々な他の機構を使用して検索されてもよい。例えば、いくつかの実施例では、1つ以上の端点が、ブロブ検索サービスに関連付けられていないか又はブロブ検索サービスに知られていないある格納部を使用してブロブを検索することを試みてもよい。そのような場合、又は他の場合において、ブロブは、HTTP、FTP、ピア・ツー・ピア、「ビット・トレント」スタイルの通信、又は他の機構など、以前に述べたものを含む様々な機構のうちの任意のものを使用して検索されてもよい。さらに、ブロブ・キャッシュ・サービス又は他のサーバー機能によって提供される機能のように、他の場所で利用可能になった機能もまた、ブロブ検索サービスを使用しない少なくともいくつかの実施例で使用されてもよい。
【0080】
いくつかの実施例において、図4に関して以前に述べた例示的な動作フローに代えて又はそのような動作フローに加えて、ブロブを検索する他の方法が使用されてもよいことは注目されるべきである。これらの他の方法のうちの少なくともいくつかはまた、図4に関して説明された例示的な動作の1つ以上を実行してもよく、又は、例えば図1に関して説明されたモジュール及びサービスを含む1つ以上の他のモジュール又はサービスを使用してもよい。これらの他の方法のうちの少なくともいくつかはまた、他の命令を実行してもよいし、又は他のモジュール及びサービスを使用してもよい。単に1つの例として、端点は、おそらくは図1に関して以前に述べたブロブ・ダウンロード・モジュール150又はブロブ・ダウンロード・モジュール162のようなブロブ・ダウンロード・モジュールが特定のブロブを得ることを要求してもよい。いくつかの実施例では、ブロブ・ダウンロード・モジュールは、要求されたブロブをおそらくは異なる方法で各々が見つけ及び/又は取得する、1つ以上のプラグ接続可能な「ドライバー」を有してもよい。例えば、あるドライバーは、1組のロケーターを得るためにブロブ検索サービスを使用し、その後、ブロブを検索するために単一のロケーターを使用するかもしれず、別のドライバーはまた、ブロブ検索サービスを使用し、ブロブを検索するためにおそらくは並行して又はビット・トレントもしくは他の同様の種類の機構とともに複数のロケーターを使用するかもしれず、さらに別のドライバーは、ブロブ検索サービスを使用しないかもしれず、様々な他の方法でブロブを見つけ、検索するかもしれない、といった具合である。そのような実施例のうちの少なくともいくつかにおいて、ブロブ・ダウンロード・モジュールは、様々な方法で使用するためにドライバーを決定するかもしれない。例えば、ブロブ・ダウンロード・モジュールは、ドライバーがブロブを検索するのにどれくらいの時間がかかるかの見積もりについて各ドライバーに問い合わせてもよく、各ドライバーは、推測される時間又はおそらくはドライバーがブロブを検索することができないことを示すある値を返してもよい。そのような返されたデータを使用して、ブロブ・ダウンロード・モジュールは、1つの(又はより多くの)ドライバーを選択し、実際にブロブを検索するように選択されたドライバーに命じてもよい。
【0081】
図5に移ると、メタデータを保持及び提供する場合に行なわれ得る各種の動作を含む例示的な一般化された動作フロー500が示されている。図5についての以下の説明は他の図に関してなされてもよい。しかし、図5に関して説明される動作フローは、これらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図5の例示的な動作フローが特定の実行の順序を示す一方、1つ以上の代替的な実施例では、動作は異なったように順序付けられてもよい。更に、例示的な動作フローが複数のステップを含む一方、いくつかの実施例では、これらの動作のうちの少なくともいくつかは同時に組み合わせられ又は実行されてもよく、同一又は他の実施例において、いくつかのステップは実行されなくてもよいことは認識されるべきである。
【0082】
動作510の例示的な実施例では、図1に関して以前に述べたサーバー端点110などの端点は、別の端点からメタデータを得てもよい。例えば、メタデータを得る端点は、いくつかの実施例において、例えば図2の動作215に関して以前に述べたように、他の端点によって通信された変更とともにメタデータを受信するサーバー端点であってもよい。更に、いくつかの実施例では、図1に関して以前に述べたように、動作フロー400に関して本明細書に記載された動作のうちの少なくともいくつかは、例示的なストレージ・サービス120によって実行されてもよい。(この説明のうちのいくらかは、動作フロー400においてメタデータを受け取る端点を「サーバー端点」と呼んでもよいが、メタデータを受け取る端点が必ずしもサーバー端点である必要はなく、必ずしも、明細書の他の場所でおそらくはサーバー端点に関連付けられているように説明された機能のうちの少なくとも幾つか又はすべてを有する必要がないことが理解されるであろう)。
【0083】
メタデータはメタデータを通信するのに適した様々な通信機構のうちの任意のものを使用して得ることができる。例えば、いくつかの実施例では、受信側又は取得側(obtaining)の端点に関連付けられたHTTPサーバーは、あるURLにおいてメタデータを含むHTTP POST要求を受け入れてもよい。同一又は他の実施例では、別の端点は、FTP又は1つ以上のファイル共有プロトコル、電子メールなどのような別のプロトコルを使用してメタデータを通信してもよい。いくつかの実施例では、受信側の端点は、メタデータを提出するために別の端点に依存するのではなく、積極的にメタデータを検索してもよい。例えば、取得側の端点は、他のある端点に対してHTTP GET要求を開始して、その応答においてメタデータを供給されてもよい。
【0084】
動作515の少なくともいくつかの実施例では、得られたメタデータは、サーバー端点によって保持されたメタデータのコピーとマージされてもよい。そのようなマージ動作は、得られたメタデータに具体化された変更を、動作フロー500を実行する端点によって保持及び修正され得るメタデータの別のコピーへ組み入れることに帰着し得る。メタデータのそのようなローカルコピーは、(少なくともいくつかの実施例では)データベース中の列又は記録として、XMLフィード(又は他の)文書のコピーとしてなど、様々な方法で保持されてもよい。SSE情報を含むメタデータを使用する実施例においては、得られたメタデータは、SSEマージ技術を使用して、ローカルのメタデータとマージされてもよい。いくつかの実施例では、そのようなSSEマージ技術は、特に図3の動作320に関して以前に述べたSSE技術と同一であるかこれに類似していてもよい。
【0085】
動作520の例示的な実施例では、問題となっているメタデータが変わるときに通知すべき、以前に登録又は予約された1つ以上の端点は、1つ以上の通知手段を使用して通知されてもよい。(そのような通知を受信した後に、いくつかの実施例において、端点は、サーバー端点から新たに更新されたメタデータを得て、かつ当該新しく更新されたメタデータの変更をその端点自身のローカルのメタデータ格納部とマージするために、動作の実行を始めるかもしれない。そのような動作は、おそらくは、図3に関して以前に述べたもののうちの少なくともいくつかを含んでもよい。)通知を提供しないものを含む他の少なくともいくつかの実施例では、加入者に通知されなくてもよい。
【0086】
動作525のいくつかの実施例では、ブロブ検索サービスは、得られたメタデータによって識別されたブロブについての位置情報で更新されてもよく、その結果、メタデータを取得又は使用する端点は、メタデータにより参照されるか又はメタデータに関連付けられたブロブを検索することができてもよい。すなわち、例えば、得られたメタデータが新たなブロブを参照する新たな項目を含むと仮定する。動作フロー500が実行される場合、サーバー端点への更新されたメタデータを生成し通信した端点にのみ参照されるブロブが存在するということになってもよい。サーバー端点又は他の装置端点を含む任意の端点がブロブを検索することができるためには、ブロブの(最初の)位置は、本明細書の別の場所に述べたブロブ検索サービスのようなブロブ検索サービスを含むブロブ検索サービスによって格納されてもよい。
【0087】
最後に、動作530の例示的な実施例では、マージ動作515の一部として作成される更新されたメタデータは、1つ以上の端点に伝えられてもよい。例えば、メタデータによって表わされるデータを同期させる別の端点は、更新されたメタデータを求めてサーバー端点に要求を出してもよい。他の端点がサーバー端点をポーリングし、メタデータが変わったことを発見する場合など、メタデータが変わったという通知を当該他の端点が受け取った後、そのような要求が出されてもよい。サーバー端点は、HTTP GET要求及び応答もしくはHTTP POST要求及び応答、ファイル共有プロトコル、FTP、電子メール、他のある通信機構の使用を通じてなど、本明細書において以前に他の場所に記載されたものを含む、様々な方法で他の端点にメタデータを提供してもよい。
【0088】
図6に移ると、メタデータによって参照されるブロブに関連付けられた位置及びロケーターを格納及び提供する場合に行なわれ得る各種の動作を含む例示的な一般化された動作フロー600が示されている。図6についての以下の説明は他の図に関してなされてもよい。しかし、図6に関して説明される動作フローがこれらの他の図に関して説明される要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図6の例示的な動作フローが特定の実行の順序を示す一方、1つ以上の代替的な実施例では、動作は異なった順序でなされてもよい。さらに、例示的な動作フローが複数のステップを含む一方、いくつかの実施例ではこれらの動作のうちの少なくともいくつかが同時に組み合わせられ又は実行されてもよいし、同一又は他の実施例において、いくつかのステップは実行されなくてもよいことは認識されるべきである。
【0089】
動作610の例示的な実施例では、端点は、特定のブロブに関連した1つ以上の位置を受け取ってもよい。一般に、特定のブロブの少なくとも一部が検索され得る場合、当該位置は端点を指定してもよい。少なくともいくつかの実施例では、ブロブは1つ以上のブロブ識別子を使用して識別されてもよい。1つ以上の位置を受け取る端点は、図1に関して以前に述べた例示的なサーバー端点110などの少なくともいくつかのサーバー端点を含んでもよい。更に、動作フロー600に関連した動作のうちの少なくともいくつかは、図1に関して以前に述べた例示的なブロブ検索サービス125などのブロブ検索サービスによって少なくともいくつかの実施例において実行されてもよい。動作フロー600の動作のうちのいくつかは、本明細書において、例示的なサーバー端点又は例示的なブロブ検索サービスに関連付けられているとして記載することができるが、動作は必ずしもサーバー端点又はブロブ検索サービスによって実施又は実行される必要はなく、代わりに、様々な端点の1つ以上によって実施又は実行されてもよいし、それらの端点に含まれるモジュール又はサービスによって実施又は実行されてもよいことが理解されるであろう。
【0090】
1つ以上のブロブ位置は様々な他の端点及びプロセスから受け取られてもよいし検索されてもよい。例えば、サーバー端点又はストレージ・サービスが別の端点からのメタデータを処理する場合、この動作には、それが受け取ったメタデータによって識別された1つ以上のブロブに関連付けられた1つ以上の位置を提供してもよい(そのような動作は、例えば、以前に図5に関して説明された動作525に関連付けられるかもしれない。)別の例において、おそらくは、図4に関連して以前に述べた動作の使用を通じることを含めてメタデータ及びメタデータに関連したブロブを同期させることの一部として、端点が1つ以上の他の端点からブロブのいくらか又はすべてを得る場合、その端点はまた、(例えば最初にブロブが作成された端点からブロブを受信することに加えて、)得られたブロブを今また有している端点からのブロブのいくらか又はすべてを他の端点が検索することができるように、その位置によりブロブ検索サービスを更新してもよい。
【0091】
現在ブロブの少なくとも一部を有する端点の位置に加えて、ブロブ検索サービスを更新する端点は、さらに、ブロブ検索サービスに他の情報を提供してもよい。そのような他の情報は、例えば、特定の端点において利用可能なブロブの部分のID(identification)(又はブロブ全体が利用可能であるという指示)、特定の端点がブロブの1つ以上の代替表現を提供することができるというある指示などを含んでもよい。
【0092】
動作615の少なくともいくつかの実施例において、受け取られた位置(及びおそらくは他の受け取られたデータ)は、データベース中の列又は記録として含むなどして、様々な手段又は機構の1つ以上を使用して、ブロブ検索サービスによって格納されてもよい。
【0093】
動作620の例示的な実施例では、ブロブ検索サービスは、1つ以上のブロブに関連付けられたロケーターを求める要求を受信してもよい。そのような要求は、様々な端点、モジュール又はサービスから送信又は通信されてもよい。例えば、装置端点が特定のメタデータによって識別されるブロブを同期させることができるように、装置端点は、特定のブロブについてロケーターを求める要求を出してもよい(その後、装置端点は、実際にブロブを検索するために、任意の返されたロケーターを使用してもよい)。別の例において、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスが1つ以上のブロブを検索することができるように、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスはロケーターを要求してもよい。
【0094】
動作625のいくつかの実施例では、ブロブ検索サービスは、特定の要求されたブロブに関連付けられた1つ以上のロケーターを識別してもよい。いくつかの実施例では、この動作は、(ブロブに関連したブロブ識別子をおそらくは使用して)特定のブロブを調べ、要求されたブロブを提供することができるものとして登録されるすべての端点についてロケーターを識別することにより、少なくとも部分的に実行されてもよい。例えば、要求されたブロブを有しているものとして3つの端点が以前に登録されていた場合、その後この動作は、各々が当該3つの端点に対するものである3つのロケーターを識別してもよい。
【0095】
いくつかの実施例では、識別されたロケーターはまた、ブロブに関連付けられた端点を識別するための単なる手段のほかに追加情報を含んでもよい。例えば、いくつかのロケーターは、ブロブのどの部分が特定の端点から検索され得るかに関する情報を含んでいてもよく、同一又は他のロケーターは、ブロブを検索するために特定の端点と共に使用され得る1つ以上の通信プロトコルに関する情報を含んでもよい、といった具合である。
【0096】
いくつかの実施例において、ブロブ検索サービスは、例えば、特定のブロブを提供し得る各々の又はすべての端点についてロケーターを識別するに過ぎないが、他の実施例においては、ロケーターを識別するプロセスは、例えば、追加の情報又は知識を使用してもよい。例えば、ブロブ検索サービスは、ロケーターをフィルタリングするか、優先順位をつけるか、そうでなければ(おそらく最も適切には)識別するために、メタデータに関する様々な知識、サーバー端点及び装置端点に関する様々な知識などを使用してもよい。いくつかの実施例では、そのような知識は、図1に関して以前に述べた例示的な知識格納モジュール145などの知識格納部によって少なくとも部分的に提供されてもよい。
【0097】
例えば、以前に特定のブロブの一部を提供することができるものとして複数の端点が登録されたと仮定する。さらに、知識格納部が、高速及び高帯域ネットワーク接続を使用してネットワークにしばしば接続されるワークステーション・クラスのデスクトップ・コンピューターによって、提供を行っている端点のうちの1つが実施され;提供を行っている端点の別のものは、異なる接続特性を備えた様々なネットワークを使用して接続するラップトップ・コンピューターであり;第3の提供を行っている端点は、しばしば電源を入れられてネットワークに接続されるが、データ伝送が装置ごとの金銭的なチャージに関連している比較的低速の接続を使用する携帯電話である、という知識を持っていると仮定する。そのような例において、動作625の少なくともいくつかの実施例は、識別されたロケーターをフィルタリングするか又は優先順位をつけるためにおそらくは他の知識と同様にこの知識を使用してもよい。例えば、1つの実施例においては、3つの端点すべてについてロケーターが識別されてもよいが、それらは、デスクトップ・コンピューターが最初に使用されるべきであり、ラップトップ・コンピューターが次に使用されるべきであり、携帯電話は最後の手段として使用されるべきであるにすぎないことを示す優先順位情報を含んでもよいし又は通信してもよい。別の例において、識別されたロケーターは、この例における携帯電話などの特定の端点さえ含まなくてもよく、代わりに、デスクトップ・コンピューター及びラップトップ・コンピュータについてのロケーターのみが識別されてもよい。
【0098】
他の情報又は基準もまた、1つ以上のロケーターを識別し、かつ、おそらくは、すべてのいずれかのロケーターが返されるべきかどうかを決定するために使用されてもよい。例えば、適切ではなく危険であると判断されたか又はある理由で望ましくないと判断されたブロブを参照する項目をメタデータが含むと仮定する−例えば、ブロブが、ウィルスを含む実行可能なコードを含んでいたり、好ましくないコンテンツを備えたビデオデータを含んでいたりするなどの場合である。そのような場合、1つ以上の端点が問題のブロブを提供することができるように登録されていたとしても、動作625の実施例は当該特定のブロブに対するロケーターを識別しなくてもよい。そのような方法で、ブロブ検索サービスは、データを同期させるか又は通信する場合に、送信され得るコンテンツをフィルタリング又は制御するために使用されてもよい。そのような制御は、端点が集中型の端点による潜在的な関与なしにデータを交換し得るような、例えば分散型又はピア・ツー・ピアの同期システム中で実施することは困難であるか又は不可能であるかもしれない。
【0099】
最後に、動作630の例示的な実施例において、例えば動作625において識別されたロケーターは、動作620の一部として受信された要求を行った端点を含む1つ以上の端点に通信されてもよいし提供されてもよい。
【0100】
図7に移ると、キャッシュにブロブを格納し、キャッシュからブロブを提供する場合に実行され得る各種の動作を含む例示的な一般化された動作フロー700が示されている。図7の以下の説明は他の図に関してなされてもよい。しかし、図7に関して述べる動作フローは、これらの他の図に関して述べる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図7の例示的な動作フローは特定の実行の順序を示す一方、1つ以上の代替的な実施例では、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例ではこれらの動作のうちの少なくともいくつかが同時に組み合わせられ又は実行されてもよく、同一又は他の実施例においていくつかのステップは実行されなくてもよいことは認識されるべきである。
【0101】
動作710の例示的な実施例では、端点は、特定のブロブを格納するかキャッシュに格納するための要求を受信してもよい。そのような要求を受け取る端点は、図1に関して以前に述べた例示的なサーバー端点110などの少なくともいくつかのサーバー端点を含んでもよい。更に、動作フロー700に関連した動作のうちの少なくともいくつかは、図1に関して以前に述べた例示的なブロブ・キャッシュ・サービス130などのブロブ・キャッシュ・サービスによって少なくともいくつかの実施例において実行されてもよい。動作フロー700の動作のうちのいくつかは、本明細書において、例示的なサーバー端点又は例示的なブロブ・キャッシュ・サービスに関連するものとして記載されてもよいが、動作は必ずしもサーバー端点又はブロブ・キャッシュ・サービスによって実施又は実行される必要はなく、その代わりに、様々な端点の1つ以上によって実施又は実行されてもよいし、それらの端点に含まれるモジュールやサービスによって実施又は実行されてもよいことは理解されるべきである。
【0102】
特定のブロブをキャッシュに格納する要求は、サーバー端点及び装置端点の両方を含む様々な端点から受け取られてもよい。例えば、1つの例において、(例えば以前に述べたように、2つの装置端点が同時にオンラインではない場合のように)別の端点からブロブ自体を得ることができない場合、装置端点は、ブロブをキャッシュに格納する要求を提出してもよい。別の例において、ストレージ・サービスもしくは他のサービス又はモジュールは、様々な理由の1つ以上により、特定のブロブをキャッシュに格納する要求を提出してもよい。例えば、図1に関して以前に述べた知識格納モジュール145のような知識格納部によって保持された知識をおそらくは使用して、ストレージ・サービスは、特定の端点がしばしば利用不可能であるという知識を有していてもよい。そのような場合、及びおそらくは他の場合において、そのような端点が新たな又は変更されたブロブに関連付けられたメタデータを提供する場合、ストレージ・サービスは、別の端点がブロブを要求する前であっても、特定のブロブがキャッシュに格納されることを積極的に要求してもよい。そのような実施例は、そのようなブロブを検索することを望む装置端点がブロブ自体をキャッシュに格納する要求をすることを不必要にし得る。
【0103】
動作715のいくつかの実施例では、ブロブ・キャッシュ・サービスは要求されたブロブを検索してもよい。ブロブの検索は様々な方法で実施されてもよい。いくつかの実施例では、ブロブ・キャッシュ・サービスは、図4に関して以前に述べたものと同一又は類似する1つ以上の動作を実行してもよい。そのような動作は、例えば、ブロブが利用可能である1つ以上の位置を識別するためにブロブ検索サービスを使用してもよいし、そのような位置からブロブを検索してもよい。
【0104】
同一又は他の実施例では、端点は、周期的にブロブ・キャッシュ・サービスと通信してもよいし、又はブロブ・キャッシュ・サービスとの通信が必要であるとの通知を受信してもよいし、ブロブ・キャッシュ・サービスが要求するブロブを提供又はアップロードしてもよい。例えば、装置端点は、装置端点において利用可能な特定のブロブがブロブ・キャッシュ・サービスによって望まれているという通信又は通知を受信してもよいし、ブロブを、動作715の一部としてブロブ・キャッシュ・サービスによる検索に利用可能にしてもよく、又は動作715の別の実施例の一部としてブロブ・キャッシュ・サービスに対して積極的にブロブをアップロード又は提供してもよい。
【0105】
ブロブ・キャッシュ・サービスは、いくつかの実施例において、図1に関して以前に述べた例示的な知識格納部145などの知識格納部により保持される知識を含む、同期システム、メタデータ、端点などに関する知識を使用して、キャッシュに格納されるべきブロブをより効率的に検索してもよい。単なる1つの例において、ブロブ・キャッシュ・サービスは、他のある端点によって要求されたブロブをキャッシュに格納することを直ちに試みなくてもよい。代わりに、例えばブロブを提供し得る1つ以上の端点にとって利用可能な空いている帯域幅が存在するまで、又は、利用可能な比較的少ない(cheap)帯域幅が存在するまで、又は、要求に対してサービスするために十分な計算能力を有している端点が利用可能となるまで、ブロブ・キャッシュ・サービスは待ってもよい。
【0106】
動作720の実施例では、検索されたブロブは様々なストレージ機構又は手段のうちの任意のものを使用して格納されてもよい。いくつかの実施例では、ブロブはデータベースに格納されてもよいし、又はファイルシステムにファイルとして格納されてもよいし、他のある方法で格納されてもよい。少なくともいくつかの実施例では、ブロブ・キャッシュ・サービスは、例えば、どれくらいの時間特定のブロブを格納すべきかを決定するために様々なキャッシュ格納技術を使用してもよい。例えば、ブロブ・キャッシュ・サービスの1つの実施例は、利用可能なストレージスペースが十分であるまでブロブを格納してもよいし、次に、スペースが追加のブロブにとって利用可能となるようにどのブロブを削除するかを決定するために、LRUアルゴリズムを含む1つ以上のアルゴリズムを使用してもよい。いくつかの実施例では、最近検索されていないブロブが削除されていてもよい一方、最近検索されたかアクセスされたブロブは維持されてもよい。同一又は他の実施例において、ブロブは、どれだけの数の端点がブロブを検索することを望んでいるかを定義する参照カウントと関連付けられてもよく、また、ブロブは、指定された数の端点がブロブを検索した場合、削除されてもよい。同一又はさらに他の実施例では、様々な他の技術及びアルゴリズムはブロブ・キャッシュ・サービスに関連した記憶装置を管理するために使用されてもよい。
【0107】
少なくともいくつかの実施例では、ブロブ・キャッシュ・サービスは、ブロブ・キャッシュ・サービスが特定のブロブの少なくとも一部を格納しており、他の端点にブロブの当該格納された一部を供給することができる場合、ブロブ・キャッシュ・サービスに関連付けられた位置により、例示的なブロブ検索サービスを更新してもよい。そのような位置を使用して、ブロブ検索サービスは、ブロブ・キャッシュ・サービスに関連付けられているロケーターを端点に提供することができてもよく、また、そのような端点はそれによって、ブロブ・キャッシュ・サービスからブロブを検索することができてもよい。いくつかの実施例では、端点はまた、ブロブ検索サービスを使用することなく、ブロブ・キャッシュ・サービスからブロブを検索することができてもよい。
【0108】
動作725の例示的な実施例では、特定のブロブがキャッシュに格納された後、ある点において、ブロブ・キャッシュ・サービスは、キャッシュに格納されたブロブの全部又は一部に対する要求を1つ以上の端点から受信してもよく、また、動作730の例示的な実施例において、要求されたブロブ(又はブロブの一部)を要求者に提供してもよい。キャッシュに格納されたブロブに関連した要求及び応答は、HTTP転送、FTP転送、ビット・トレントスタイルの転送などの本明細書の別の場所に記載の機構を含む様々な通信機構などを使用して、多種多様の方法で実行されてもよい。
【0109】
図8に移ると、クラウド記憶装置にブロブを格納したりクラウド記憶装置からブロブを提供したりする場合に実行され得る各種の動作を含む例示的な一般化された動作フロー800が示されている。図8の以下の説明は他の図に関してなされてもよい。しかし、図8に関して述べられる動作フローがこれらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図8の例示的な動作フローは特定の実行の順序を示している一方、1つ以上の他の実施例では、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかが同時に組み合わせられ又は実行されてもよく、同一又は他の実施例においていくつかのステップは実行されなくてもよいことは認識されるべきである。
【0110】
動作810の例示的な実施例では、端点は、特定のブロブのうちのいくらか又は全てを「クラウド内に」又はクラウド記憶装置に格納する要求を受け入れ又は受信してもよい。ある場合には、この要求を受け取る端点又はモジュール又はサービスは、おそらくはサーバー端点110のようなサーバー端点により実行されてもよく、動作フロー800に関連付けられた動作のうちの少なくともいくつかは例示的なクラウド・ストレージ・モジュール135によって実施又は提供されてもよく、それらの両方は、図1に関して以前に述べられている。動作フロー800の動作のうちのいくつかは、本明細書において、例示的なサーバー端点又は例示的なクラウド・ストレージ・サービスに関連するものとして記載されていてもよいが、動作はサーバー端点又はクラウド・ストレージ・サービスによって必ずしも実施又は実行される必要はなく、実際のところ、様々な端点の1つ以上又はそれら端点に含まれるモジュールもしくはサービスによって実施又は実行されてもよいことが理解されるべきである。
【0111】
動作フロー800中の動作の多くは、ブロブ・キャッシュ・サービスの動作フロー700に述べられたものに類似するように見え得る一方、クラウド・ストレージ・サービスは、ブロブ・キャッシュ・サービスとは異なって使用されてもよい。例えば、ブロブ・キャッシュ・サービスによって提供される一時的な記憶装置とは対照的に、例えば、ユーザーによって具体的に指示されない限り格納されたブロブを削除しないこと、おそらくは離れたディスク・ドライブ又は他の記憶機構に格納されたデータの複数のコピーを保持することなどにより、クラウド・ストレージ・サービスは、ブロブ(及びおそらくは他のデータ)に対して、一時的でない又は「信頼できる」記憶装置を提供し得る。
【0112】
動作815の少なくともいくつかの実施例では、クラウド・ストレージ・サービスは、ある場合には動作810において受信され得る要求に関連付けられるブロブの一部又は全体を含むブロブデータを検索するか又は提供されてもよい。クラウド・ストレージ・サービスは、ある場合には、ブロブ検索サービス、ブロブ・ダウンロード・モジュール又はおそらくは例えば図4に関して以前に述べた動作のいくつかを使用することを含む様々な方法でブロブを検索してもよい。他の実施例では、クラウド・ストレージ・サービスは、様々な他の通信又はファイル転送機構のうちの任意のものを使用して、ブロブを検索するか又は提供されてもよい。少なくともいくつかの実施例で、おそらくは図1に関連して以前に述べた知識格納モジュール145などの例示的な知識格納部に関連付けられた知識を含む、通信システム、メタデータ、ブロブなどについての知識は、要求されたブロブをより効率的に得るために、おそらくはブロブ・キャッシュ・サービスに関して既に述べたものと同様の方法又は他の方法で使用されてもよい。
【0113】
動作820の例示的な実施例では、検索又は提供されるブロブは、クラウド・ストレージ・サービスによって様々な方法で格納されてもよい。例えば、以前に紹介されたように、クラウド・ストレージ・サービスは、複数の冗長な格納部を使用して、ブロブを含むデータを格納してもよい。さらに、ブロブを格納した場合、クラウド・ストレージ・サービスは、ある場合には、例示的なブロブ検索サービスに対して情報を更新してもよいし提供してもよく、その結果、ブロブ検索サービスは、いくつかの実施例で、クラウド・ストレージ・サービスを参照又は識別する他の端点にロケーターを提供してもよく、その後、ある場合には他の端点はクラウド・ストレージ・サービスからブロブを検索してもよい。
【0114】
ある時点では、クラウド・ストレージ・サービスは、動作825の少なくともいくつかの実施例において、格納されたブロブ又は格納されたブロブの一部を提供する要求を受信してもよい。そのような要求に応答して、その後、クラウド・ストレージ・サービスは、おそらくは本明細書の別の場所に記載されたものを含む様々な通信又は転送機構の使用を通じて、動作830の例示的な実施例において、要求されたブロブデータを提供してもよい。
【0115】
図9に移ると、十分なメタデータの使用又は例示的なサーバー端点によって提供される機能のうちの少なくともいくらかの使用なしにブロブを検索する場合に行なわれ得る各種の動作を含む例示的な一般化された動作フロー900が示されている。図9の以下の説明は他の図に関してなされてもよい。しかし、図9に関して述べる動作フローは、これらの他の図に関して述べられる要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図9の例示的な動作フローは特定の実行の順序を示しているが、1つ以上の代替的な実施例においては、動作は異なった順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかは同時に組み合わせられ又は実行されてもよいし、同一又は他の実施例ではいくつかのステップは実行されなくてもよいことは認識されるべきである。
【0116】
本明細書における記載の多くがメタデータの使用によるブロブデータの検索について記載しているが、ブロブを検索する場合、少なくともいくつかの実施例では、メタデータのフルセットの使用は必ずしも必要ではない。代わりに、ある場合には、単なるブロブ識別子などの最小のデータ量のみが、例えばブロブ検索サービス及びおそらくはブロブのすべて又は一部を提供することができる様々な端点を含む様々な端点機能を利用するために必要となり得る。いくつかの環境において、そのような機能を使用することは、端点がより速くより安価に又はある点ではより有効にブロブを検索することを可能にし得る。
【0117】
動作910の例示的な実施例では、端点はある手段を介してブロブ識別子を得てもよい。以前に述べた実施例のうちのいくつかにおいて、ブロブ識別子は、異なる端点間で同期され得るメタデータに含まれている。そのような同期されたメタデータは、端点がブロブ識別子を得る少なくとも1つの機構を提供する。しかし、メタデータなどを同期させない実施例を含む様々な同一又は他の実施例では、ブロブ識別子は様々な他の方法で提供されてもよい。例えば、ユーザーは、おそらくはオーディオもしくはビデオクリップ、ワードプロセシング文書もしくはスプレッドシート、他のあるファイルなどのようなブロブを次に識別するブロブ識別子を含む電子メール又はインスタント・メッセージを別のユーザーへ送信してもよい。
【0118】
動作915の少なくともいくつかの実施例では、ブロブを検索するためにブロブ検索サービスが使用されるべきかどうかが決定されてもよい。例えば、いくつかの端点は、ブロブ検索サービスにアクセスしなくてもよいし、又はブロブ検索サービスについて知らなくてもよい。そのような場合、及びブロブ検索サービスが利用可能であるが使用されない場合を含む他の場合において、当該決定は、ブロブ検索サービスを使用しないようになされてもよく、動作フロー900は動作930に進んでもよい。ブロブ検索サービスを使用してブロブが検索されることになっている場合、動作フロー900は動作920に進んでもよい。
【0119】
ブロブ検索サービスが使用され又は使用されない環境の1つの例として、ウェブ・ブラウザーの例を考える。多くのウェブ・ブラウザーが、HTTPなどのプロトコルを使用して資源のダウンロード又は検索を可能にする実行可能コードを含んでいる。そのようなウェブ・ブラウザーを用いて、HTTP要求は単一のサーバー−又は少なくとも単一のURL−に対してなされてもよく、応答は単一のサーバーから受信されてもよい。しかし、ある場合、例えば大きなブロブを検索する場合には、特定のブロブの異なる部分が複数の異なる端点から検索されるか又はそれらにより供給される、ビット・トレント又はビット・トレントのような転送の実施例のような機構を含む1つ以上の他の機構を使用してブロブをダウンロードするのがより有効で速いかもしれない。
【0120】
しかしながら、ファイル又はブロブをダウンロードするためのそのような機構が望ましい一方で、ウェブ・ブラウザーは元来この種の又は他の種のダウンロードを可能にするための機能を含んでいないかもしれない。ある場合には、例えばウェブ・ブラウザー又はアプリケーションがブロブ検索サービス(及び以下により詳細に述べるように、おそらくはブロブ・ダウンロード・モジュール)の使用をサポートできるようにすることにより、この能力を加える機能をウェブ・ブラウザー又は他のあるアプリケーションに追加することが可能となりうる。例えば、ウェブ・ブラウザーは、ユーザーによって加えられた「プラグ・イン」又は他のコードをサポートするかもしれない。そのような1つのプラグ・インは、ブロブ検索サービスのサポートを実行してもよいし、インストールされると、ウェブ・ブラウザーがブロブ検索サービスを使用する(そして動作930に進む代わりに動作920に進む)ことを可能にしてもよい。
【0121】
動作920の例示的な実施例では、ブロブを検索する端点は、おそらくは、所望のブロブを識別するブロブ識別子のように、ブロブ検索サービスにあるデータを提供することにより、所望のブロブに関連した1つ以上のロケーターについてブロブ検索サービスに問合せてもよいし尋ねてもよい。そのような動作は、例えば図4に関連して以前に述べた動作415が実行される方法に類似した方法又はそれと同一の方法で少なくともいくつかの実施例において実行されてもよい。
【0122】
その後、動作925の例示的な実施例において、1つ以上の得られたロケーター、及びある場合において、ブロブ・ダウンロード・モジュールは、実際にブロブを検索するために使用されてもよい。そのような動作は、例えば図4に関連して以前に述べた動作425が実行される方法と類似した方法又は同一の方法で、少なくともいくつかの実施例で実行されてもよい。
【0123】
いくつかの実施例では、ブロブをダウンロードすることができないか又はブロブの検索が失敗する場合、端点は追加の動作を行ってもよい。例えば、ブロブ検索サービスがロケーターを供給しないか、(ネットワーク条件のため、ロケーターによって識別された端点が利用可能ではないためなどにより)実際にブロブを検索するためには使用することができないロケーターを供給するにすぎない場合、ブロブを検索する端点は、例えば、ブロブ・キャッシュ・サービスがブロブを格納して、その後にブロブ・キャッシュ・サービスからブロブを検索することを試みることを要求してもよい。そのような機構は、例えば図4に関して以前に述べられており、図9においては示されていない。
【0124】
端点が成功裡にブロブを検索する場合には、他の端点が同じブロブを要求する場合にブロブ検索サービスがある場合には端点をブロブの供給源として識別し得るように、当該端点は追加情報でブロブ検索サービスを更新してもよい。そのような実施例によれば、例えば、オフィスにいる1人のユーザーが例えば大きなファイル又はブロブをダウンロード又は検索し、同じオフィス内の他のユーザーに、1つ以上のほかのネットワークのどこかに位置するかもしれない他のある端点から検索するのではなく当該第1のユーザーからブロブを検索させるようにすることが可能となる。そのような例において、第1のユーザーがブロブを検索した後、第1のユーザーに関連した端点は端点を識別する情報をブロブ検索サービスに提供してもよい。第2の又はその後のユーザーがブロブ検索サービスからの同じブロブを要求する場合、ブロブ検索サービスは、第1のユーザーの端点を識別するロケーターを提供してもよい。いくつかの実施例では、ブロブ検索サービスは、第1のユーザーの端点がもとの端点よりおそらく地理的に接近しているとか、もとの端点より速いネットワーク接続を使用して第2の端点に接続されているなどという、知識格納部によって保持及び提供される知識を含む知識の使用により、そのようなロケーターを提供してもよい。
【0125】
ブロブ検索サービスが使用されない場合、動作フロー900は動作930に進んでもよい。動作930の例示的な実施例では、ブロブは、ブロブ検索サービスやブロブ・ダウンロード・モジュールを直接的には使用しない(しかしいくつかの実施例では間接的に使用してもよい)1つ以上のファイル転送機構又はブロブ検索機構を使用して検索されてもよい。そのような機構は、HTTP、FTP、ファイル共有プロトコルもしくはファイル転送プロトコルなどを含み得る。例えば、ブロブ識別子が「http://www.els.live.com/ABCl23」のようなものである場合、端点はブロブ識別子によって具体化されたURLへHTTP要求を開始するにすぎない。いくつかの実施例では、その後、ブロブを求める要求に応えるサーバー端点又はHTTPサーバーは、(「ABCl23」のような)識別子を抽出し且つ要求されたブロブを見つけるために当該識別子を使用することにより、この特定の形式のURLを使用し、且つ、その後に最終的にHTTP応答においてブロブを返すように構成されてもよい(ある場合には、サーバー端点自体が、例えば図4に関して以前に述べたブロブ検索動作と同一又はこれと類似する動作を使用することにより、ブロブを見つけてもよい。同一又は他の実施例では、サーバー端点は、ブロブ・キャッシュ・サービス又はクラウド・ストレージ・サービスなどの具体的なストレージ位置に存在するブロブを返すにすぎない)。
【0126】
例示的な計算環境
図10に移ると、この図及び関連する記載は、本明細書に記載した様々な技術が実施される例示的な計算環境の簡潔且つ一般的な説明を提供することを意図したものである。必ずしも必要なものではないが、コンピューター実行可能命令の一般的な状況において、コントローラー、プロセッサー、パソコン、又は図10に示す計算装置1000などの他の計算装置により実行されるプログラムモジュールなどの技術がここで説明される。
【0127】
一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、ユーザー・インターフェース、データ構造などを含み、これらは特定のタスクを実行し、特定の情報を表示し、又は特定の抽象データ型を実施する。プログラムモジュールによって行なわれる動作は、1つ以上のブロック図及び動作フローチャートを用いて既に説明された。
【0128】
当業者は、コンピューター可読媒体の1つ以上の形式で具体化されるコンピューター実行可能命令の形式の記述、ブロック図及び動作フローを実施することができる。本明細書において使用されるように、コンピューター可読媒体は、コンピューターによってアクセスされ理解することができる形式で符号化された情報を格納又は具体化することができる任意の媒体であってもよい。コンピューター可読媒体の一般的な形式は、揮発性メモリー及び不揮発性メモリーの両方、取り外し可能及び/又は取り外し不能な媒体を含むデータ記憶装置、及び通信媒体を含んでいるが、これらに限定されない。
【0129】
通信媒体は、コンピューター可読情報を、搬送波又は他の移送機構などの変調データ信号に具体化し、任意の情報配信媒体を含む。用語「変調データ信号」は、情報を信号に符号化するような方法で設定又は変更された1つ以上の特性を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接的な有線接続などの有線媒体、並びに、音響、RF、赤外線及び他の無線媒体などの無線媒体を含む。
【0130】
図10に示された計算装置1000は、その最も基本的な構成において、少なくとも1つの処理部1002及びメモリー1004を含んでいる。いくつかの実施例では、計算装置1000は、例えばサーバー端点110、装置端点A160、装置端点B170などの図1に関して以前に述べた端点のうちの1つの少なくとも一部を実施してもよい。いくつかの実施例では、例えばデスクトップ及びラップトップ・コンピューターを含む様々なコンピューターに例えば存在するように、処理部1002は汎用中央処理装置(CPU)であってもよい。計算装置の正確な構成及び種類によって、メモリー1004は、(RAMなどの)揮発性、(ROM、フラッシュ・メモリーなどの)不揮発性、又はこれら2つの組合せであってもよい。この最も基本的な構成は図10において点線1006で示される。さらに、計算装置1000は、追加の特徴及び機能を有してもよい。例えば、計算装置1000は、さらに、磁気もしくは光ディスク又はテープを含むがこれらに限定されない追加の記憶装置(取り外し可能及び/又は取り外し不能)を含んでもよい。そのような追加の記憶装置は図10において取り外し可能な記憶装置1008及び取り外し不能な記憶装置1010により示される。
【0131】
計算装置1000はまた、計算装置1000が他のデバイス及びサービスと通信することを可能にする1つ以上の通信接続1012を含んでもよい。例えば、計算装置は、例えば図1に関して以前に述べた端点への接続又は端点間の接続を含む様々な通信手段又は計算装置に対する1つ以上の接続を有してもよい。計算装置1000はまた、カメラ又はスキャナのような画像入力装置、キーボード、マウス、ペン、マイクロホンアレーを含む音声入力機器、タッチ入力装置などの1つ以上の入力装置1014を有してもよい。ディスプレイ、スピーカー、プリンターなどの1つ以上の出力装置1016も計算装置1000に含まれていてもよい。
【0132】
当業者は、図10において示された計算装置1000以外の計算装置により本明細書に記載された技術が実施され得ることを理解するであろう。例えば、本明細書に記載された技術は、携帯電話及びPDAを含む携帯端末、マルチプロセッサー・システム、マイクロプロセッサーベース又はプログラム可能な家電、ネットワークPC、ミニコンピューター、メインフレーム・コンピューターなどにおいて同様に実施されてもよいが、これらに限定されるものではない。これらの計算装置の各々は図10のシステムによってある程度詳細に記述されてもよいし又は異なったように記述されてもよい。
【0133】
本明細書に記載された技術はまた、通信網を介してリンクされる遠隔処理デバイスによって動作が行なわれる分散計算環境で実施されてもよい。分散計算環境では、プログラムモジュールはローカル装置及びリモート装置の両方に位置してもよい。
【0134】
本明細書においてはソフトウェアで実施されると記載されたが、本明細書に記載された技術は、代替的に、すべて又は部分的に、ハードウェア、ファームウェア又はソフトウェア、ハードウェア及び/又はファームウェアの様々な組合せとして実施されてもよいことはさらに理解されるべきである。
【0135】
方法及びシステムのいくつかの特定の実施例が添付の図面に示され、前述の文章にて説明されたが、示された方法及びシステムは、記述された特定の実施例に限定されるものではなく、添付の特許請求の範囲に記載され定義される精神から逸脱することなしに、多数の再配置、修正及び置換が可能であることが理解されよう。

【特許請求の範囲】
【請求項1】
サーバー端点からメタデータを取得するステップであって、前記メタデータはブロブを識別し、前記ブロブは前記メタデータに含まれない、ステップと、
前記メタデータをローカルのメタデータとマージするステップと、
前記ブロブに関連づけられた少なくとも1つのロケーターを含む組をブロブ検索サービスに要求するステップと、
第1の端点において、前記少なくとも1つのロケーターの前記組内の特定のロケーターにより識別される第2の端点からブロブの一部を検索するステップと
を含む方法。
【請求項2】
前記ブロブの前記一部が最初に検索できない場合に、ブロブ・キャッシュ・サービスが前記ブロブの少なくとも第2の部分を格納することを要求するステップをさらに含む請求項1に記載の方法。
【請求項3】
ブロブの一部を検索する前記ステップは、
前記第2の端点と異なる第3の端点から前記ブロブの前記一部とは異なる前記ブロブの第2の部分を検索するステップをさらに含む請求項1に記載の方法。
【請求項4】
前記検索は、前記ブロブの前記一部を検索するために第1のブロブ検索機構を使用するブロブ・ダウンロード・モジュールにより実行され、前記ブロブ・ダウンロード・モジュールは、前記ブロブの第2の一部及び第2のブロブの一部のうち少なくとも1つを検索するための、前記第1のブロブ検索機構とは異なる第2のブロブ検索機構を使用することができる請求項1に記載の方法。
【請求項5】
前記ブロブの前記一部が検索された後に、前記ブロブの前記一部が前記第1の端点から検索されることを前記ブロブ検索サービスに通知するステップをさらに含む請求項1に記載の方法。
【請求項6】
前記ブロブの前記一部を求める前記第3の端点からの要求に応答して、第3の端点に前記ブロブの前記一部を提供するステップをさらに含む請求項1に記載の方法。
【請求項7】
前記第1の端点において、前記メタデータが前記サーバー端点において更新されたとの通知を受信するステップをさらに含み、前記通知は、取得動作、マージ動作、問合せ動作及び検索動作を開始する請求項1に記載の方法。
【請求項8】
前記ローカルのメタデータに関連付けられたデータに対するローカルの変更を実行するステップと、
更新されたローカルのメタデータを形成するために前記ローカルのメタデータを更新し、前記更新されたローカルのメタデータ及び前記ブロブの第2の部分が前記ローカルの変更を含むように、前記第1の端点において、前記ブロブの前記第2の部分を更新するステップと、
前記更新されたローカルのメタデータを前記サーバー端点に通信するステップと
をさらに含む請求項1に記載の方法。
【請求項9】
サーバー端点において、第1の端点からメタデータを取得するステップであって、前記メタデータはブロブを識別し、前記ブロブは前記メタデータに含まれない、ステップと、
前記メタデータを前記サーバー端点により保持されるサーバー・メタデータとマージするステップと、
前記第1の端点を識別する位置によりブロブ検索サービスを更新するステップと
を含む方法。
【請求項10】
前記第1の端点とは異なる第2の端点に前記サーバー・メタデータを通信するステップをさらに含む請求項9に記載の方法。
【請求項11】
前記ブロブの一部が検索され得る場所を識別するロケーターを求める要求を要求者から受信するステップと、
前記ブロブ検索サービスを使用して前記ロケーターを識別するステップと、
前記要求者に前記ロケーターを通信するステップと
をさらに含む請求項9に記載の方法。
【請求項12】
前記ロケーターは、前記第1の端点に関連付けられた第1の知識特性を使用して前記ブロブ検索サービスによって識別され、第2の端点に関連付けられ前記ブロブの第2の部分が検索され得る位置を識別する第2の端点は、前記第2の端点に関連付けられる第2の知識特性が前記第1の知識特性よりも好ましくないために識別されない、請求項11に記載の方法。
【請求項13】
前記ブロブの第2の部分を格納する第2の端点を識別する第2の位置を受信するステップであって、前記ブロブの前記第2の部分は前記第2の端点から検索され得る、ステップと、
前記ブロブが検索され得る場所を識別する少なくとも1つのロケーターを求める要求を受信するステップと、
前記位置に関連付けられた第1のロケーター及び前記第2の位置に関連付けられた第2のロケーターを識別するステップと、
前記要求に応答して前記第1のロケーター及び前記第2のロケーターを通信するステップと
をさらに含む請求項9に記載の方法。
【請求項14】
前記ブロブの一部をキャッシュに格納する要求を受け入れるステップと、
前記ブロブの前記一部を検索するステップと、
前記ブロブの前記一部をブロブキャッシュに格納するステップと、
前記ブロブキャッシュを識別する第2の位置により前記ブロブ検索サービスを更新するステップと
をさらに含む請求項9に記載の方法。
【請求項15】
提供する側の端点が、前記提供する側の端点に関連付けられた知識特性を使用して識別され、前記ブロブの前記一部は前記提供する側の端点から検索される請求項14に記載の方法。
【請求項16】
前記ブロブの一部を一時的でないクラウド・ストレージ・データ格納部に格納する要求を受け入れるステップと、
前記ブロブの前記一部を検索するステップと、
前記クラウド・ストレージ・データ格納部に前記ブロブの前記一部を格納するステップと
をさらに含む請求項9に記載の方法。
【請求項17】
前記マージ後に、前記サーバー・メタデータが修正されたことを予約する側の端点に通知するステップと、
前記予約する側の端点に前記サーバー・メタデータを通信するステップと
を含む請求項9に記載の方法。
【請求項18】
前記検索は、前記ブロブの前記一部を検索するために第1のブロブ検索機構を使用するブロブ・ダウンロード・モジュールにより実行され、前記ブロブ・ダウンロード・モジュールは、前記ブロブの第2の一部及び第2のブロブの一部のうち少なくとも1つを検索するための、前記第1のブロブ検索機構とは異なる第2のブロブ検索機構を使用することができる請求項14に記載の方法。
【請求項19】
前記ブロブの前記一部を前記第1の端点とは異なる第2の端点へ前記ブロブキャッシュから通信するステップをさらに含む請求項14に記載の方法。
【請求項20】
ブロブ検索サービスと、
ストレージ・サービスであって、
第1の端点からメタデータを取得し、前記メタデータがブロブを識別し、前記ブロブがメタデータに含まれず、
前記メタデータを前記ストレージ・サービスによって保持されるサーバー・メタデータとマージさせ、
前記第1の端点を識別する位置により前記ブロブ検索サービスを更新する
ように構成されたストレージ・サービスと、
ブロブ・キャッシュ・サービスであって、
前記ブロブの一部をキャッシュに格納する要求を受け入れ、
前記第1の端点から前記ブロブの前記一部を検索し、
前記ブロブ・キャッシュ・サービスに関連付けられた記憶装置を使用して、前記ブロブの前記一部を格納し、
前記ブロブ・キャッシュ・サービスを識別する第2の位置によりブロブ検索サービスを更新する
ように構成されたブロブ・キャッシュ・サービスと
を含むシステム。

【図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


【公表番号】特表2010−531026(P2010−531026A)
【公表日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2010−513440(P2010−513440)
【出願日】平成20年6月20日(2008.6.20)
【国際出願番号】PCT/US2008/067636
【国際公開番号】WO2009/002831
【国際公開日】平成20年12月31日(2008.12.31)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】