JP2018536207A - デジタルコンテンツアイテムのマルチプレミスホスティングのための同期プロトコル - Google Patents

デジタルコンテンツアイテムのマルチプレミスホスティングのための同期プロトコル Download PDF

Info

Publication number
JP2018536207A
JP2018536207A JP2018504709A JP2018504709A JP2018536207A JP 2018536207 A JP2018536207 A JP 2018536207A JP 2018504709 A JP2018504709 A JP 2018504709A JP 2018504709 A JP2018504709 A JP 2018504709A JP 2018536207 A JP2018536207 A JP 2018536207A
Authority
JP
Japan
Prior art keywords
content item
server
block
item block
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018504709A
Other languages
English (en)
Other versions
JP6603791B2 (ja
Inventor
ニプン コオラパティ,
ニプン コオラパティ,
クリストファー ルード,
クリストファー ルード,
ミューレン, マルシオ フォン
ミューレン, マルシオ フォン
ニルス ブンガー,
ニルス ブンガー,
Original Assignee
ドロップボックス, インコーポレイテッド
ドロップボックス, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ドロップボックス, インコーポレイテッド, ドロップボックス, インコーポレイテッド filed Critical ドロップボックス, インコーポレイテッド
Publication of JP2018536207A publication Critical patent/JP2018536207A/ja
Application granted granted Critical
Publication of JP6603791B2 publication Critical patent/JP6603791B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

デジタルコンテンツアイテムのマルチプレミスホスティングのための同期プロトコル。ある実施の形態では、例えば、方法は、コンテンツアイテムの生成または変更を検出することと、前記コンテンツアイテムが属するコンテンツアイテム名前空間を決定することと、前記コンテンツアイテム名前空間が割り当てられている先の複数のブロックサーバの複数の識別子を取得することと、複数のブロックサーバのうちのひとつの、ターゲットブロックサーバとしての選択をなすことと、ターゲットブロックサーバにまだ保持されていないコンテンツアイテムのコンテンツアイテムブロックをターゲットブロックサーバにアップロードすることと、を含む。【選択図】図1

Description

本願はデジタルコンテンツアイテムの管理に関する。特に、下記の本発明の例示的な実施の形態は、オンラインコンテンツ管理サービスでホストされるデジタルコンテンツアイテムの管理に関する。
伝統的に、企業は自身が所有し運用するネットワークファイルサーバにデジタルコンテンツアイテム(例えば、ドキュメント、ファイル、および他のデジタル情報)を格納してきた。そのようなファイルサーバは、多くの場合、ネットワークファイヤウォールの後ろのオンプレミスに位置している。ネットワークファイヤウォールはファイルサーバへの認証されていないネットワークアクセスを防ぐ。この構成は、ファイルサーバへのネットワークアクセスの大半または全てがネットワークファイヤウォールの後ろにあるコンピュータ、例えばファイルサーバと同じローカルエリアネットワーク(LAN)に接続されたコンピュータ、によるものである場合に、上手く働く。ある場合には、ファイヤウォールの外側からの(例えば、インターネットを介した)ファイルサーバへのネットワークアクセスは仮想プライベートネットワーク(VPN)によって促進される。VPNは実効的に、ファイヤウォールの外側のコンピュータを、ファイルサーバから見て、あたかもファイヤウォールの後ろにいるかのように見せる。
しかしながら、今日、労働力はよりグローバルでよりモバイルとなっている。このことは、ブロードバンドインタ−ネット接続の広い可用性と、比較的低料金で、そのうえ強力な、例えば、携帯電話、ラップトップコンピュータ及びタブレットコンピュータなどのポータブル個人用計算デバイスの可用性とによって広く拍車がかかっている。その結果、従業員は仮想的にどこでも仕事をすることができ、仕事を終わらせるためにオフィスに物理的に存在する必要がない(例えば遠隔で仕事をすることができる)。
最近、オンラインコンテンツ管理サービスは、従業員がインターネット又は他のネットワーク上でアクセス可能な「オンラインに」コンテンツアイテムを格納することが可能になった。企業はオンラインコンテンツ管理サービスを用いて、そのサービスによって動作するサーバ上に企業のコンテンツアイテムを「ホスト」することができる。オンラインコンテンツ管理サービスの例には、カリフォルニア州サンフランシスコのDropbox,Inc.により提供されている「ドロップボックス」サービスがある。
コンテンツアイテムのオンラインストレージは、企業やその従業員等に多くの利益をもたらす。ドロップボックス(Dropbox)は、例えば、ホストしたコンテンツアイテムを、複数のデバイスとユーザに同期及び共有する機能を提供する。このエンドユーザとドロップボックスの両方にコンテンツアイテムを格納することに起因する柔軟性は、種々の異なるオンサイト及び遠隔の就労形態をサポートし、従業員には利便性を、そして雇用者には増大した従業員の生産性を提供する。
企業によって生成されるデジタル情報の量が増加すれば、オンラインコンテンツ管理サービスを用いた企業のコンテンツアイテムのホスティングは増加することのみが期待される。しかしながら、いくつかのホストした情報のデリケートな性質により、企業ユーザを含むそのようなサービスのユーザは、サービスを用いてホストするコンテンツアイテムに対してより高いレベルのコントロールを提供するサービスへの改善を理解するだろう。加えて、今日の企業においてブロードバントインターネット接続が普及する一方で、インターネットを介したコンテンツアイテムのアップロード及びダウンロードは、未だにユーザが期待する又は望むよりもより長い時間を要し得る。
このセクションで説明したアプローチは、さらに追及されうるアプローチであって、既に着想され、追及されたアプローチではない。したがって、特に示唆しない限り、ここで説明した任意のアプローチが、ここに組み込まれることにより単に先行技術として認識されることが想定されるべきではない。
本発明の実施例は例示目的で説明されるものであり、参照番号等が類似の要素を参照するような、以下に示す添付の図面の図における限定による方法で説明されるものではない。
本発明のいくつかの例示的な実施の形態が実施されるシステム環境例を示すブロック図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバへアップロードするためのプロセスのフロー図である。
本発明のいくつかの例示的な実施の形態に係る、ユーザアカウントとコンテンツアイテム名前空間のメタデータのブロック図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムサーバジャーナルのブロック図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオフプレミスブロックサーバへアップロードするためのインタラクション図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオンプレミスブロックサーバへアップロードするためのインタラクション図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセスのフロー図である。
本発明のいくつかの例示的な実施の形態に係る、リンクされたデバイスメタデータのブロック図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをブロックサーバからダウンロードするインタラクション図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバへアップロードするためのプロセスのフロー図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムサーバジャーナルのブロック図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオフプレミスブロックサーバへアップロードするためのインタラクション図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオンプレミスブロックサーバへアップロードするためのインタラクション図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセスのフロー図である。
本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするインタラクション図である。
本発明の例示的な実施の形態が実施され得る計算デバイスの非常に一般的なブロック図である。
計算デバイスの動作を制御する基本的なソフトウエアシステムのブロック図である。
以下の説明では、本発明の実施例の十分な理解を提供するために、説明の目的で多くの特定事例を明らかにする。しかしながら、本実施例がそれらの特定事例なしに実施されうることは明らかであろう。他の例では、本実施例を不必要に不明りょうにすることを避けるために、既知の構成やデバイスがブロック図の形式で示される。
例示的な実施の形態は以下の概要に従って説明される。
1.0 説明例
2.0 システム環境の例
3.0 第1の例示的な同期プロトコル動作
3.1 コンテンツアイテムのアップロード
3.1.1 ユーザアカウントおよびコンテンツアイテム名前空間メタデータ
3.1.2 コンテンツアイテム名前空間マウント情報
3.1.3 コンテンツアイテムサーバジャーナル
3.1.4 例示的なアップロードインタラクション
3.2 コンテンツアイテムのダウンロード
3.2.1 リンクされたデバイスメタデータ
3.2.2 例示的なダウンロードインタラクション
4.0 第2の例示的な同期プロトコル動作
4.1 アップロードプロセス
4.1.1 コンテンツアイテムサーバジャーナル
4.1.2 例示的なアップロードインタラクション
4.2 ダウンロードプロセス
4.2.1 例示的なダウンロードインタラクション
5.0 ストリーミングダウンロード最適化
5.1 第1の例示的な同期プロトコル
5.2 第2の例示的な同期プロトコル
6.0 オンプレミスコンテンツ管理サービス
7.0 基本的な計算ハードウエアとソフトウエア
7.1 基本的な計算デバイス
7.2 基本的なソフトウエアシステム
8.0 拡張及び代替
−−−−
1.0 説明例
本発明の実施例は、オンラインコンテンツ管理サービスのユーザに、そのようなサービスを用いてホストされるユーザのコンテンツアイテムにわたる、より高いコントロールを提供する。以下では、多くの、コンピュータに実装されるプロセス及びネットワークのやり取りが記載される。これらのプロセス及びネットワークのやり取りの記載において役立つように、これから何人かの説明例のユーザが用いられる。これらの例は、本発明のいくつかの実施例の特徴を説明するために用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。これらの例は限定を意図するものではなく、単に説明として提供されるものである。
第1のユーザ例は、以下、「アルファ会社」として参照される。第1の例として、アルファ会社は多数の従業員を有し、従業員は、オンラインコンテンツ管理サービスを用いて、彼らの業務コンピュータに格納されたコンテンツアイテムを、当該サービスによって運用されるインターネット上のサーバに格納されるコンテンツアイテムと同期する。アルファ会社は、コンテンツアイテムが彼らの業務コンピュータに格納されているため、従業員の業務コンピュータがインターネットに接続していない場合に当該コンテンツアイテムへのアクセスを有する、ということを好む。同時に、アルファ会社は、コンテンツアイテムがオンラインコンテンツ管理サービスのサーバと、バックアップ及び共有の目的で同期される、ということも好む。アルファ会社はまた、可能な場合に、従業員の業務コンピュータ間のコンテンツアイテムの変更を同期するための必要な時間を削減することを好む。
第2の例として、アルファ会社の従業員は地理的に分散化され得る。例えば、アルファ会社の本社はサンフランシスコにあり得るが、サテライトオフィスをニューヨーク、オースティン及びシアトルにも有し得る。会社アルファのチームも地理的に分散され得る。例えば、サンフランシスコとオースティンのオフィスの従業員がプロジェクトで共同し得る。アルファ会社は、チームで共同したコンテンツアイテムへの変更がサンフランシスコとオースティンのオフィスのコンピュータ間で素早く同期されることを好むだろう。
第3の例として、サンフランシスコとオースティンのアルファ会社の従業員が共同するプロジェクトは非常にデリケート(例えば機密)であり得る。この場合、アルファ会社は、プロジェクトに関するコンテンツアイテムに渡る、より多くのコントロールと監視を保持することを望み得る。例えば、アルファ会社は、プロジェクトのコンテンツアイテムがオンプレミスに格納され、オンラインコンテンツ管理サービスによって動作するサーバには格納されないことを好み得る。
本発明の特徴を用いることにより、アルファ会社のようなユーザ及び他のユーザは、オンラインコンテンツ管理サービスによって管理される彼らのコンテンツアイテムがどこにホストされるのかをコントロールすることができる。特に、実施例は、オンプレミスにのみ、オフプレミスにのみ、又は、オンプレミスとオフプレミスとの両方に、ユーザがコンテンツアイテムをホストすることを可能にする。オンプレミスにコンテンツアイテムをホストする場合、ユーザは、(いくつかの実施例はオンラインコンテンツ管理サービスがオンプレミスのコンテンツアイテムのストレージハードウエアを提供することを含むが)彼ら自身のコンテンツアイテムのストレージハードウエアを用いることができる。実施例は、エンドユーザデバイスが、エンドユーザデバイスにおいて成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、へ同期することを可能にする。実施例はまた、エンドユーザデバイスが、他のエンドユーザデバイスによって成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、から同期することを可能にする。
これらの説明の例は、以降の記載のいくつかと共に用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。
2.0 システム環境の例
本発明のいくつかの実施例の特徴が、図1を参照して今から記載される。図1は、本発明のいくつかの実施例が実施されるシステム環境100の例に係るブロック図である。図示されるように、ユーザ(例えば102−1)は、個人用計算デバイス(例えば110−1)を有する又は用いることができる。個人用計算デバイスはローカルストレージ(例えば112−1)とコンテンツアイテム同期エージェント(例えば114−1)とを有することができる。個人用計算デバイスのローカルストレージは、1つ以上のコンテンツアイテム113を格納することができる。オンプレミスブロックサーバ120は、ブロックサービス122、ブロックストレージ124、及びブロック管理エージェント126から構成されることができる。ブロックストレージ124は、1つ以上のコンテンツアイテムブロック125を格納することができる。オンラインコンテンツ管理サービスは、コントロールプレーン、ストレージプレーン、及びデータプレーンから構成されることができる。コントロールプレーンは通知サーバ140、メタデータサーバ150、及びウェブサイト170を含むことができる。ストレージプレーンはオフプレミスブロックサーバ130を含むことができる。オフプレミスブロックサーバ130は、ブロックサービス132、及びブロックストレージ134から構成されることができる。オフプレミスブロックサーバ130のブロックストレージ124は、1つ以上のコンテンツアイテムブロック125を格納することができる。バックエンドデータバスは、計算デバイス、ネットワーク、及びネットワークデバイスの集合から構成されることができ、ネットワークデバイスは、ネットワーク通信と、サーバ130、140、150及び170のものを含む、コントロールプレーンとストレージプレーンとの間やその内部のデータの移動とを容易にする。バックエンドデータバスはまた、サーバ130、140、150及び170のものを含む、コントロールプレーンとストレージプレーンとによってメタデータプレーン180へのアクセスを容易にすることができる。データプレーン180は、1つ以上の揮発性又は不揮発性メモリをベースとした、分散可能な、データを検索及び格納するデータベースシステム(例えばメムキャッシュ(memcache)、RDBMS、分散キー・バリューストア等)から構成されることができる。
図1の例では、システム環境100は、個人用計算デバイス110−1及び個人用計算デバイス110−2をそれぞれ有する又は使用するユーザ102−1及び102−2を含む。個人用計算デバイス110−1は、ローカルストレージ112−1とコンテンツアイテム同期エージェント114−1とを有する。個人用計算デバイス110−2も、ローカルストレージ112−2とコンテンツアイテム同期エージェント114−2とを有する。図1は、明示的な例を提供する目的で、システム環境100における2人のユーザ(102−1及び102−2)と2つの個人用計算デバイス(110−1及び110−2)のみを示しているが、システム環境100は、2人以上のユーザと、それぞれがローカルストレージ及びコンテンツアイテム同期エージェントを有する2つ以上の個人用計算デバイスとを含んでよいことは理解されるべきである。例えば、システム環境100は、数百又は数千又は数百万又はそれ以上のユーザと、数百又は数千又は数百万又はそれ以上の個人用計算デバイスを有してよい。更に、ユーザと個人用計算デバイスとの間に一対一の対応は要求されない。例えば、単一の個人用計算デバイスは複数のユーザによって使用されてもよく、単一のユーザは複数の個人用計算デバイスを有し又は使用してもよい。
本発明のいくつかの実施例に従って、ユーザ102−1は、個人用計算デバイス110−1を用いて、個人用計算デバイス110−1のローカルストレージ112−1にコンテンツアイテム113を追加し又は変更することができる。その後、個人用計算デバイス110−1におけるコンテンツアイテム同期エージェント114−1は、ローカルストレージ112−1へのコンテンツアイテム113の追加又は変更を自動的に検出し、このコンテンツアイテム113をオンプレミスブロックサーバ120又はオフプレミスブロックサーバ130にアップロードする。いくつかの実施例によれば、アップロードは、以降でより詳細に説明される実施例のコンテンツアイテム同期プロトコルに従う、コンテンツアイテム同期エージェント114−1とメタデータサーバ150との間のネットワーク通信によって促進される。
本発明のいくつかの実施例に従って、他の個人用計算デバイス110−2は、個人用計算デバイス112−2のローカルストレージ112−2に追加された又は変更されたコンテンツアイテム113を自動的にダウンロードすることができる。初めに、通知サーバ140は、個人用計算デバイス112−2におけるコンテンツアイテム同期エージェント114−2に、コンテンツアイテム113の新たなバージョンが利用可能であることを通知する。その後、コンテンツアイテム同期プロトコルに従った同期エージェント114−2とメタデータサーバ150との間のネットワーク通信による指示の通りに、コンテンツアイテム同期エージェント114−2は、コンテンツアイテム113の新たなバージョンを、オンプレミスブロックサーバ120又はオフプレミスブロックサーバ130からダウンロードする。ダウンロードの後に、コンテンツアイテム113の新たなバージョンはローカルストレージ112−2におけるユーザ102−2に利用可能となる。
個人用計算デバイス(例えば110−1又は110−2)は据え置き用又は携帯用計算デバイスであることができる。例えば、個人用計算デバイスは、デスクトップコンピュータ、ワークステーションコンピュータ、携帯電話、ラップトップコンピュータ、タブレットコンピュータ、又は他の据え置き用又は携帯用計算デバイスであることができる。個人用計算デバイスは、例えば、図16との関連で後述する基本的な計算デバイス1600のもののような、1以上のハードウエア要素から構成されてもよい。個人用計算デバイスはまた、例えば、図17との関連で後述するソフトウエアシステム1700のような、基本的なソフトウエアシステムを用いて構成されてもよい。
ローカルストレージ(例えば112−1又は112−2)は、物理ホストインタフェース(例えば、シリアルアタッチドSCIS(SerialAttachedSCIS)、シリアルATA、PCIエクスプレス、ファイバチャネル(FibreChannel)、USBなど)によって個人用計算デバイス110のバスに接続される、電子的、磁気的又は光学的なデータストレージ機構であり得る。例えば、個人用計算デバイスの、データストレージ機構は、ハードディスク、ソリッドステートドライブ、又は光学ドライブであり得る。代替的に、ローカルストレージは、個人用計算デバイス上に「マウント」される、例えば、ローカルエリアネットワーク(LAN)上のネットワークデータストレージのような、ネットワークドライブであり得る。ネットワークドライブをマウントすることにより、ネットワークドライブに格納されるデータは、ネットワークドライブがデバイスとは別個にネットワークを跨いで物理的に置かれても、ユーザと、個人用計算デバイス(例えばデバイスの物理ドライブ上)に格納される個人用計算デバイス上で実行されるアプリケーションとから見えるようになる。ひとたびマウントされると、個人用計算デバイスは、典型的に、例えば、UNIX用のネットワークファイルシステム(NFS)プロトコル、又は、ウインドウズ(WINDOWS)用のサーバメッセージブロック(SMB)プロトコルのようなネットワークファイルシステムプロトコルに従って、ネットワークドライブから及びネットワークドライブへ読み書きする。
個人用計算デバイスのローカルストレージは、コンテンツアイテム113を格納してもよい。「コンテンツアイテム」はデジタル情報の集合である。ローカルストレージに格納される場合、コンテンツアイテムはファイルシステムのファイルに対応し得る。例えば、コンテンツアイテムは、文書ファイル(例えばワードプロセッシング文書、プレゼンテーション文書、スプレッドシート文書又は他の種別の文書)、画像ファイル(例えば、jpg,tiff,gif又は他の種別の画像ファイル)、音声ファイル(例えば、 mp3,aiff,m4a,wav又は他の種別の音声ファイル)、映像ファイル(例えば、mov,mp4,m4v又は他の種別の映像ファイル)、ウェブページファイル(例えば、htm,html又は他の種別のウェブページファイル)、テキスト又はリッチテキストファイル(例えば、txt,rtf又は他の種別のテキスト又はリッチテキストファイル)、又は他の種別のファイルであり得る。ローカルストレージに格納される場合、コンテンツアイテムは,ファイルシステムのファイル・フォルダ階層内のファイルシステムパスを有し得る。例えば、ローカルストレージに格納されるコンテンツアイテムに対するファイルシステムパスは、文字列として「C:¥folder1¥folder2¥my.file」と表されてよい。ここで、「C:¥」はファイルシステムのルートを参照し、「folder1」はファイルシステムのルートにおけるファイルシステムフォルダを参照し、「folder2」は「folder1」ファイルシステムフォルダを用いてファイルシステムフォルダを参照し、「my.file」はコンテンツアイテムに対応する「folder2」ファイルシステムフォルダ内のファイルを参照する。「¥」文字は、文字列表現内の異なるファイルシステムフォルダとファイル参照とを線引きするために文字列表現内で用いられる。
個人用計算デバイス110−1及び110−2とオンプレミスブロックサーバ120とは、ローカルエリアネットワーク(LAN)160に接続され得る。例えば、LAN160は、これに限らないがIEEE 802.3又はIEEE 802.11ベースのネットワークを含むIEEE 802ベースのネットワーク、又は、複数のこのようなネットワークの組み合わせであり得る。LAN160は、ネットワークファイアウォールによってワイドエリアネットワーク(WAN)190から保護されてよい。実施例では、WAN190はインターネット又は他の公衆ネットワークである。特に、ネットワークファイアウォールは、サーバ130、140、150及び170を含むWAN190に接続するデバイスが、個人用計算デバイス110−1及び110−2とオンプレミスブロックサーバ120とを含むLAN160に接続するデバイスと、ネットワーク接続の確立を開始することを防止する。しかしながら、ネットワークファイアウォールは、サーバ130、140、150及び170を含むWAN190に接続するデバイスと確立するための、個人用計算デバイス110−1及び110−2とオンプレミスブロックサーバ120とを含むLAN160に接続するデバイスを発信元とする特定の種別のネットワーク接続を許可するように構成され得る。典型的に、LAN160は、WAN190と比較した場合により低いネットワークレイテンシとより高いネットワーク帯域とを有するが、所与の実装がそうでなければならないという要求があるわけではない。
オンプレミスブロックサーバ120、オフプレミスブロックサーバ130、通知サーバ140、メタデータサーバ150、ウェブサイト170及びメタデータプレーン180のいくつか又は全ては、1つ以上のサーバ計算デバイスによって実装されてよい。これらのそれぞれは、例えば、図16との関連で後述する基本的な計算デバイス1600のもののような、1以上のハードウエア要素から構成されてよく、これらのそれぞれはまた、例えば、図17との関連で後述するソフトウエアシステム1700のような、基本的なソフトウエアシステムを用いて構成されてもよい。2以上のサーバ計算デバイスによって実装される場合、サーバ計算デバイスは、ロードバランスされ、クラスタ化され、又は他の分散コンピューティングアレンジメントで構成されてもよい。
コンテンツアイテム同期エージェント、ブロックサービス122、ブロックエージェント126、ブロックサービス132、通知サーバ140、メタデータサーバ150、ウェブサイト170及びメタデータプレーン180のそれぞれの機能は、1つ以上の計算デバイスによって実行されるとその機能を果たす命令を有する1つ以上のコンピュータプログラムとして実装されてよい。しかしながら、この機能は、目下の特定の実装の要件に従って、ハードウエア(例えば、1つ以上の特定用途向け集積回路(ASICS)又は1つ以上のフィールドプログラマブルゲートアレイ(FPGA))、又はハードウエアとソフトウエアの組み合わせで実装され得る。
明りょうな例を提供する目的のため、図1は単一のオンプレミスブロックサーバ120のみを示しているが、システム環境100は、オンラインコンテンツ管理サービスのユーザの関連するグループの数に応じて、数百又は数千又は数百万又はそれ以上のオンプレミスブロックサーバを含んでよい。例えば、オンラインコンテンツ管理サービスは、様々な異なる組織、業種、企業、学校、大学及び他のグループに属す数十億又はそれ以上のユーザをサポートしてもよい。これらの組織、業種、企業、学校、大学及び他のグループのそれぞれは、1以上のオンプレミスブロックサーバを有し又は使用してもよい。
以下で使用される「オンプレミス(on−premises)」の語は、1つ以上の個人用計算デバイス及びオンラインコンテンツ管理サービスと、特に、オンラインコンテンツ管理サービスのオフプレミスブロックサーバ130とが相対的であることが意図される。オンプレミスブロックサーバ(例えば120)は、個人用計算デバイスとして同一の設備又は同一のビルディングに置かれてよいが、このように要求されるものではない。オンプレミスブロックサーバが個人用計算デバイスとして同一のローカルエリアネットワーク(例えば160)に接続されてもよいが、そのように要求されるものでもない。従って、ここでの「オンプレミス」ブロックサーバに対する参照は、所定の個人用計算デバイスに対して、ブロックサーバが、地理的及び/又はネットワーク的に、当該所定の個人用計算デバイスに対するオフプレミスブロックサーバ130よりも近いことを意味する。個人用計算デバイスは、個人用計算デバイスをオンプレミスブロックサーバに接続するネットワークが、個人用計算デバイスをオフプレミスブロックサーバ130に接続するネットワークよりも、より低いネットワークレイテンシ及び/又はより高いネットワーク帯域可用性を提供する場合、ネットワーク上のオフプレミスブロックサーバ130よりもオンプレミスブロックサーバに近くてよい。
個人用計算デバイスは、例えば、オンプレミスブロックサーバ120、オフプレミスブロックサーバ130、メタデータサーバ150及びウェブサイト170を含む、様々なサーバのネットワーク要求或いは単に「要求」を生成してもよい。そして、サーバ120、130、150及び170は、ネットワーク応答或いは単に「応答」を、個人用計算デバイスからの要求に対して返してよい。要求は典型的にはヘッダとペイロードとを含む。この要求ヘッダは典型的に、要求を受信するサーバへの要求ペイロードに対するコンテクストを提供する。要求に対する応答はまた、典型的にはヘッダとペイロードとを含む。応答のヘッダは典型的に、応答を受信する個人用計算デバイスへの応答ペイロードに対するコンテクストを提供する。個人用計算デバイスからの要求と、サーバによって返信されるその応答とは、1つ以上のネットワーク(例えば160及び190)を介して送信されてよく、例えば、ハイパーテキスト伝送プロトコル(HTTP)のような要求‐応答ネットワーキングプロトコルに従って生成されてよい。要求とその応答は、例えば、伝送制御プロトコル(TCP)などのコネクション指向ネットワーキングプロトコルに従って個人用計算デバイスとサーバとによって確立されたネットワーク接続を介して、送信されてよい。ネットワーク接続は、2以上の要求と応答のペアがそのネットワーク接続を介して送信されるという意味において永続的であってよい。ネットワーク接続はまた、例えば、トランスポートレイヤセキュリティ(TLS)又はセキュアソケットレイヤ(SSL)暗号ネットワーキングプロトコルに従って暗号化されてもよい。しかしながら、特定のネットワーキングプロトコル又はネットワーキングプロトコルの特定のセットが実施例によって要求されるものではなく、HTTP、TCP、TLS又はSSL以外のプロトコルが、目下の特定の実装の要求に従って用いられてもよい。
3.0 第1の例示的な同期プロトコル動作
コンテンツアイテム同期プロトコルの第1の例示的動作は、図2−9を参照して以下に説明される。特に、第1の例に係る同期プロトコルの動作は、コンテンツアイテムをオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130にアップロードする例、およびコンテンツアイテムをオンプレミスブロックサーバまたはオフプレミスブロックサーバからダウンロードする例で説明される。
3.1コンテンツアイテムのアップロード
図2を参照すると、本発明のいくつかの例示的な実施の形態に係る、新たなまたは変更されたコンテンツアイテムをパーソナル計算デバイス110−1から「ターゲット」ブロックサーバ(例えば、オンプレミスブロックサーバ120またはオフプレミスブロックサーバ130)へアップロードするためのプロセス200を説明するフロー図である。以下にステップを図2に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
ステップ202で、ユーザ102−1はパーソナル計算デバイス110−1のローカルストレージ112−1において「新たな」コンテンツアイテムを追加するか変更する。例えば、ユーザ102−1はローカルストレージ112−1においてファイルを生成するか変更し、またはローカルストレージ112−1においてファイルをコピーするかダウンロードするか編集する。追加または変更されたコンテンツアイテムは、追加や変更がコンテンツアイテムの「新たな」バージョンを生み出すという意味で、「新しい」ものとされてもよい。追加の場合、新たなバージョンはコンテンツアイテムの最初または初期バージョンであってもよい。変更の場合、新たなバージョンはコンテンツアイテムの既存バージョンに基づいてもよい。以降、「新たな」コンテンツアイテムと称する。そのような称呼は、コンテンツアイテムの最初のバージョンの生成やコンテンツアイテムの既存バージョンの変更から生じるコンテンツアイテムの新しいバージョンを包含すべきものである。
ステップ204で、パーソナル計算デバイス110−1のコンテンツアイテム同期エージェント114−1は、ローカルストレージ112−1内の新たなコンテンツアイテムを検出する。例えば、コンテンツアイテム同期エージェント114−1はパーソナル計算デバイス110−1のオペレーティングシステムによって提供されるアプリケーションプログラミングインタフェース(API)を用いて、ローカルストレージ112−1のファイルシステムに対する変更を監視してもよく、またはそれについて通知を受けてもよい。ファイルシステムに新たなファイルが追加されたりファイルシステムの既存ファイルが変更または削除された場合のようにファイルシステムに対する変更がなされた場合、オペレーティングシステムはAPIを介してコンテンツアイテム同期エージェント114−1に通知してもよい。
ステップ206で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれを決定する。本明細書において、「コンテンツアイテム名前空間」は総じて、オンラインコンテンツ管理サービスの管理下にあり、かつ、オンラインコンテンツ管理サービスにより維持されているユーザアカウントおよびコンテンツアイテム名前空間メタデータにしたがいひとつ以上のユーザがアクセスを有するひとつ以上のコンテンツアイテムの集合を指す。特定のコンテンツアイテムが所属するコンテンツアイテム名前空間を、本明細書において、特定のコンテンツアイテムの「所属(owning)」コンテンツアイテム名前空間と称す場合がある。コンテンツアイテム同期エージェントがコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれをどのように決定するかを説明する前に、メタデータプレーン180に保持されるユーザアカウントおよびコンテンツアイテム名前空間メタデータのある背景が提供される。
3.1.1 ユーザアカウント及びコンテンツアイテム名前空間のメタデータ
図2に戻る前に図3を少し見ると、図3は、メタデータプレーン180に格納されるユーザアカウントとコンテンツアイテム名前空間メタデータ300とを表す。特に、メタデータプレーン180は、オンラインコンテンツ管理サービスに保持される1つ以上のユーザアカウントに対応する、ユーザアカウントレコード310を格納し得る。いくつかの実施例では、メタデータプレーン180は数百、数千、数百万又はそれ以上のユーザアカウントレコード310を格納する。他の情報のうち、ユーザアカウントレコード310は、ユーザアカウント識別子312と1つ以上の認証済コンテンツアイテム名前空間識別子314とを有し得る。
ユーザアカウントレコード310のユーザアカウント識別子312は、メタデータプレーン180のユーザアカウントレコード310を識別する。いくつかの実施例では、ユーザアカウント識別子312は128ビットの値である。特別なセキュリティのため、ユーザアカウントレコード310のユーザアカウント識別子312は、時々と変更(例えば循環)されてもよい。従って、ユーザアカウントレコード310のユーザアカウント識別子314は、ユーザアカウントレコード310の存続期間に渡って変化してよい。しかしながら、ユーザアカウント識別子312が時々変更されることを要求するものではなく、ユーザアカウントレコード310は、ユーザアカウントの存続に対して同一のユーザアカウント識別子312を有しても良い。
ユーザアカウントレコード310の認証済コンテンツアイテム識別子314は、ユーザアカウントレコード310のユーザアカウント識別子312を所有するユーザがアクセスする認証を受けた、コンテンツアイテム名前空間を識別する。従って、オンラインコンテンツ管理サービスにユーザアカウントを保持するユーザは、ユーザアカウントに関連付けられた1つ以上のコンテンツアイテム名前空間へのアクセスを有し得る。更に、複数のユーザは、同一のコンテンツアイテム名前空間へのアクセスを有してもよい。そのようなコンテンツアイテム名前空間はしばしば「共有」コンテンツアイテム名前空間、或いはより口語的に「共有フォルダ」として参照され、これは、コンテンツアイテム名前空間が2以上のユーザアカウントによってアクセス可能であることによる。しかしながら、コンテンツアイテム名前空間を単一のユーザアカウントによってのみアクセス可能にすることも可能である。
ユーザは、ユーザアカウント識別子312に関連付けられる有効な認証クレデンシャル(例えば、有効なユーザ名とパスワード)を提供することにより、ユーザアカウント識別子312の所有を得ることができる。例えば、ユーザは、ウェブサイト170によってパーソナル計算デバイスに供給されるウェブページを介して、ウェブサイト170に認証クレデンシャルを提供してもよい。ユーザによって提供される認証クレデンシャルの有効性は、オンラインコンテンツ管理サービス又は第三者の認証サービス又は他の識別プロバイダによって確認されてもよい。
ひとたび認証クレデンシャルが確認されると、ユーザアカウント識別子312はユーザのパーソナル計算デバイスに提供され、例えばローカルストレージ内にローカルに格納される。ローカルに格納される場合、ユーザアカウント識別子312は特別なセキュリティのために暗号化されてよい。パーソナル計算デバイスにおけるコンテンツアイテム同期エージェントと他のアプリケーション(例えば、ウェブブラウザアプリケーション)は、様々なサーバ120、130、140、150及び170へ送信されるネットワーク要求内に、ローカルに格納されたユーザアカウント識別子312を含めてもよく、これによって、要求を行う特定のユーザアカウントを識別する。
3.1.2 コンテンツアイテム名前空間のマウント情報
図2に戻り、ステップ206で、コンテンツアイテム同期エージェント114−1は、ユーザアカウントレコード310の情報へのローカルアクセスを有してもよい。例えば、ユーザ102−1が、ユーザアカウントレコード310のユーザアカウント識別子312に関連付けられた有効な認証クレデンシャルを提供した後には、ユーザアカウントレコード310の情報が、パーソナル計算デバイス110−1へ(例えばメタデータサーバ150又はウェブサイト170から)ダウンロードされ、ローカルストレージ112−1に格納されてよい。ここで、ローカルストレージ112−1は、コンテンツアイテム同期エージェント114−1がローカルにアクセス可能である。このようなダウンロードされた情報は、ユーザアカウント識別子312と、ユーザアカウントレコード310の認証済コンテンツアイテム名前空間識別子314とを含んでよい。ローカルストレージ112−1に格納された場合、ダウンロードされた情報は追加セキュリティのために暗号化されてよい。
いくつかの実施例によれば、コンテンツアイテム同期エージェント114−1による、ステップ202で追加または変更された新たなコンテンツアイテムの所属コンテンツアイテム名前空間の判定は、ローカルストレージ112−1の階層的ファイルシステムにおける新たなコンテンツアイテムへのファイルシステムパスに基づく。特に、コンテンツアイテム同期エージェント114−1は、コンテンツアイテム名前空間マウント情報へのローカルアクセスを有してもよい。コンテンツアイテム名前空間マウント情報は、ファイルシステムに「マウントされた」1つ以上の認証済コンテンツアイテム名前空間のそれぞれに対して、コンテンツアイテム名前空間「マウントポイント」フォルダへのファイルシステムパスを識別してもよい。ここで、コンテンツアイテム名前空間「マウントポイント」フォルダは、認証済コンテンツアイテム名前空間がマウントされる。従って、認証済コンテンツアイテム名前空間は、パーソナル計算デバイスのファイルシステム内に、コンテンツアイテム名前空間マウントポイントフォルダが認証済コンテンツアイテム名前空間に対して存在する場合、パーソナル計算デバイスに「マウントされた」ものとして考慮されてよい。コンテンツアイテム名前空間に対するコンテンツアイテム名前空間マウントポイントフォルダが、コンテンツアイテム名前空間がマウントされる全てのパーソナル計算デバイスにおいて同一であることを要求するものではなく、同一のコンテンツアイテム名前空間が、異なるパーソナル計算デバイスにおける異なるコンテンツアイテム名前空間マウントポイントフォルダにマウントされる、ことに注意すべきである。例えば、パーソナル計算デバイス110−1に格納されたコンテンツアイテム名前空間マウント情報は以下を示しうる。
識別子「ABC123」を有するコンテンツアイテム名前空間が「C:¥MyWorkContentitems¥」にマウントされること。
識別子「DEF456」を有する他のコンテンツアイテム名前空間が「C:¥MyWorkContentItems¥MySharedItems¥」にマウントされること。
識別子「GHI789」を有する他のコンテンツアイテム名前空間が「C:¥MyContentItems¥MyPersonalContentItems¥」にマウントされること。
いくつかの実施例によれば、コンテンツアイテム同期エージェント114−1は、新たなコンテンツアイテムが属す最もネストされたコンテンツアイテム名前空間マウントポイントフォルダのファイルシステムパスを、ローカルに格納されたコンテンツアイテム名前空間マウント情報内で識別することにより、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。上記例に続いて、新たなコンテンツアイテムへの階層的ファイルシステム内のファイルシステムパスが「C:¥MyContentItems¥MyPersonalContentItems¥Photos¥photo_of_me_hiking.jpg」である場合、コンテンツアイテム同期エージェント114−1は、新たなコンテンツアイテムがコンテンツアイテム名前空間「GHI789」に属すと判定する。一方、新たなコンテンツアイテムへのファイルシステムパスが「C:¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc」である場合、そのときは、コンテンツアイテム同期114−1は、新たなコンテンツアイテムが、コンテンツアイテム名前空間「ABC123」とは対照的に、コンテンツアイテム名前空間「DEF456」に属すと判定する。これは、フォルダ「C:¥MyWorkContentItems¥MySharedItems¥」がフォルダ「C:¥MyWorkContentItems¥」内でネストされていることによる。
上記例において、コンテンツアイテム名前空間マウント情報が完全に要件を満たした又は絶対的なファイルシステムパスを含んでいたが、コンテンツアイテム名前空間マウント情報は、他の実施例において相対的なファイルシステムパスを含んでもよい。他のこれらの実施例では、パーソナル計算デバイスにおけるコンテンツアイテム同期エージェントは、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を、新たなコンテンツアイテムへの相対的なファイルシステムパスと、パーソナル計算デバイスにおいて全てのコンテンツアイテム名前空間マウントポイントフォルダに共通な親のマウントポイントフォルダへのファイルシステムパスとに基づいて判定することができる。例えば、パーソナル計算デバイス110−1におけるコンテンツアイテム名前空間マウント情報は以下を示しうる。
識別子「ABC123」を有するコンテンツアイテム名前空間が「¥MyWorkContentitems¥」にマウントされること。
識別子「DEF456」を有する他のコンテンツアイテム名前空間が「¥MyWorkContentItems¥MySharedItems¥」にマウントされること。
識別子「GHI789」を有するコンテンツアイテム名前空間が「¥MyPersonalContentItems¥」にマウントされること。
上記例では、親のマウントポイントフォルダは、例えば、「C:¥MyContentItems¥」であってよい。この場合、新たなコンテンツアイテムへの完全に要件を満たす又は絶対システムファイルパスが「C:¥MyContentItems¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc」である場合、コンテンツアイテム同期エージェント114−1は、フォルダ「¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc’」の新たなコンテンツアイテムへの相対的ファイルシステムパスに基づいて、新たなコンテンツアイテムがコンテンツアイテム名前空間「DEF456」に属すと決定する。
ステップ208で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。特に、新たなコンテンツアイテムは、ひとつ以上のコンテンツアイテムブロックに断片化され、新たなコンテンツアイテムの暗号化ハッシュが計算される。
追加されたコンテンツアイテムはコンテンツアイテムの最初のバージョンであるため、コンテンツアイテムが変更された場合よりも、コンテンツアイテムが追加された場合において、新たなコンテンツアイテムの全てのコンテンツアイテムブロックが新しいものである蓋然性がより高い。コンテンツアイテムが変更された場合、コンテンツアイテムの全てのまたは全部よりは少ない数のコンテンツアイテムブロックが新しいものである可能性がある。追加であれ変更であれいずれの場合においても、各コンテンツアイテムブロックは、最大の所定のサイズ(例えば4MB)を有してよい。しかしながら、新たなコンテンツアイテムのトータルサイズが最大の所定のサイズのちょうど複数個分でない場合、最後(又は最初)のコンテンツアイテムブロック又は新たなコンテンツアイテムのコンテンツアイテムブロックのみが、当該最大の所定のサイズより小さいサイズになり得る。
暗号化ハッシュ関数は、例えば、コンテンツアイテムブロックに適用した場合にほぼ固有な固定サイズのハッシュ(例えば256ビットハッシュ)を生成するセキュアハッシュアルゴリズム(SHA)であり得る。他のハッシュ関数が使用されてもよく、実施例はSHA−256ハッシュ関数に限定されない。しかしながら、一般に、ハッシュ関数は、管理下における所与の固有のコンテンツアイテムブロックの数において衝突が稀であるように、十分なビット深度(例えば256ビット又はそれ以上)であるべきである。従って、新たなコンテンツアイテムは、新たなコンテンツアイテムを構成するコンテンツアイテムブロックから計算される1つ以上のコンテンツアイテムブロックハッシュのリストとして表され得る。この種のリストはまた、以降において一般に「コンテンツアイテムブロックリスト」として参照され、或いは、特定のコンテンツアイテムに対するコンテンツアイテムブロックリストを参照する場合、「特定のコンテンツアイテムのブロックリスト」として参照される。変更されたコンテンツアイテムについて、コンテンツアイテム同期エージェントは、変更されたコンテンツアイテムのどのコンテンツアイテムブロックが、コンテンツアイテムの以前のバージョンに対して変更され又は新しいのかを効率的に判定するために、ローリングチェックサムアプローチ(rollingchecksumapproach)を用いてよい。この場合、コンテンツアイテムブロックハッシュは、新規又は変更されたコンテンツアイテムブロックに対してのみ計算され、変更されていないブロックに対して以前に計算されたコンテンツアイテムブロックハッシュは、変更されたコンテンツアイテムのブロックリストにおいて再利用される。
ステップ210で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックをアップロードする先の「ターゲット」コンテンツアイテムブロックサーバを決定する。いくつかの例示的な実施の形態によると、この決定は新たなコンテンツアイテムの所属コンテンツアイテム名前空間に基づきなされる。この決定をなすために、コンテンツアイテム同期エージェント114−1は、パーソナル計算デバイス110−1に設けられた認証コンテンツアイテム名前空間に対する名前空間対ブロックサーバ割り当てへのアクセスを有してもよい。名前空間対ブロックサーバ割り当ては、パーソナル計算デバイスにローカルで保持されてもよい。例えば、名前空間対ブロックサーバ割り当てはローカルストレージ112−1に保持されてもよい。名前空間対ブロックサーバ割り当ては、パーソナル計算デバイスに設けられた認証コンテンツアイテム名前空間の全てまたはいくつかについて、コンテンツアイテム名前空間が割り当てられているブロックサーバを指定することができる。例えば、パーソナル計算デバイス110−1における名前空間対ブロックサーバ割り当ては以下の情報を適切なデータフォーマットで示してもよい:
コンテンツアイテム名前空間識別子「ABC123」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「JKL101」を伴うブロックサーバに割り当てられる。
コンテンツアイテム名前空間識別子「DEF456」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「JKL101」を伴うブロックサーバに割り当てられる。
コンテンツアイテム名前空間識別子「GHI789」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「MNO112」を伴うブロックサーバに割り当てられる。
例えば、オンプレミスブロックサーバ120はブロックサーバ識別子「JKL101」を伴うブロックサーバであり、オフプレミスブロックサーバ130はブロックサーバ識別子「MNO112」を伴うブロックサーバであってもよい。ブロックサーバ識別子はブロックサーバを特定する。ブロックサーバ識別子はブロックサーバのホスト名(例えば、解決可能DNSホスト名)やネットワークアドレス(例えば、IPv4やIPv6ネットワークアドレス)であってもよいし、それに関連付け(例えば、マッピングや設定ファイルや連想配列等を介して)られてもよい。コンテンツアイテム同期エージェントはブロックサーバ識別子を用いることで、ブロックサーバとのネットワーク接続を確立することができる。あるいはまた、ブロックサーバ識別子自身がブロックサーバのホスト名やネットワークアドレスであってもよいし、またはそれを含んでもよい。
本明細書で提供される例示的な識別子が、それは例示的なブロックサーバ識別子および例示的なコンテンツアイテム名前空間識別子を含むが、単に説明を目的として提供されているのであって発明の実装において用いられうる識別子のタイプやフォーマットを限定することを意図したものではないことは、理解されなければならない。
パーソナル計算デバイスに保持される名前空間対ブロックサーバ割り当てはメタデータプレーン180に保持される情報に基づいてもよい。特に、メタデータプレーンは、オンラインコンテンツ管理サービスの管理下にあるコンテンツアイテム名前空間の全てまたはいくつかについての名前空間対ブロックサーバ割り当てを保持してもよい。これらの割り当ては、ユーザがウェブサイト170にアクセスすることによって(例えば、パーソナル計算デバイスにおけるウェブブラウザまたはモバイルアプリケーションを用いることによって)、メタデータプレーン180内に生成されてもよい。例えば、ウェブサイト170にアクセスすることによって、特定のコンテンツアイテム名前空間への認証アクセスを有するユーザは、特定のコンテンツアイテム名前空間を特定のブロックサーバ(例えば、オンプレミスブロックサーバ120やオフプレミスブロックサーバ130)に割り当てることができる。例えば、ユーザは特定のコンテンツアイテム名前空間のアドミニストレータであってもよいし、そうでなければ、特定のコンテンツアイテム名前空間は、ユーザが特定のコンテンツアイテム名前空間をブロックサーバに割り当てることを可能とする適切なパーミッションを伴うユーザのアカウントレコード310に関連付けられてもよい。
パーソナル計算デバイスのコンテンツアイテム同期エージェントは名前空間対ブロックサーバ割り当てを、メタデータサーバ150またはオンラインコンテンツ管理サーバの他のサーバ(例えば、ウェブサイト170)からダウンロードしてもよい。例えば、コンテンツアイテム同期エージェント114−1はネットワーク要求でユーザアカウント識別子312をメタデータサーバ150に提供してもよい。メタデータサーバ150は次いで要求内で受信したユーザアカウント識別子312によって特定されるユーザアカウントレコード310を参照し、そのユーザアカウントによるアクセスが認証されている認証コンテンツアイテム名前空間の識別子314を決定してもよい。その識別子314を用いて、メタデータサーバ150はメタデータプレーン180に保持される名前空間対ブロックサーバ割り当てを参照し、認証コンテンツアイテム名前空間の割り当てを決定してもよい。その割り当ては次いでコンテンツアイテム同期エージェント114−1に返され、該エージェントはその割り当てを後のアクセスのためにローカルで(例えば、ローカルストレージ112−1に)保持してもよい。
ある例示的な実施の形態では、名前空間対ブロックサーバ割り当ては最初メタデータプレーン180で生成され、次いでメタデータサーバ150またはウェブサイト170によって、コンテンツアイテム名前空間が設けられているパーソナル計算デバイスのコンテンツアイテム同期エージェントに提供されるが、代わりに、名前空間対ブロックサーバ割り当ては最初パーソナル計算デバイス(例えば、パーソナル計算デバイスのコンテンツアイテム同期エージェントによって駆動されるユーザインタフェースを通じて)で生成され、次いでメタデータプレーン180への格納のためにメタデータサーバ150またはウェブサイト170にアップロードされてもよい。したがって、名前空間対ブロックサーバ割り当てがウェブサイト170を通じて生成されるか、または最初メタデータプレーン180で生成されるかについて、なんの制約もない。
ある例示的な実施の形態では、メタデータプレーン180はオンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間についての名前空間対ブロックサーバ割り当てを保持するが、他の例示的な実施の形態では、メタデータプレーン180は管理下にある全てのコンテンツアイテム名前空間の部分集合のみについての名前空間対ブロックサーバ割り当てを保持する。例えば、メタデータプレーン180は、オンプレミスブロックサーバ(例えば、120)に割り当てられた管理下のコンテンツアイテム名前空間のみについての名前空間対ブロックサーバ割り当てを保持し、オフプレミスブロックサーバ130に割り当てられたコンテンツアイテム名前空間についての名前空間対ブロックサーバ割り当ては保持しなくてもよい。したがって、これらの実施の形態では、メタデータプレーン180において、または、パーソナル計算デバイスにおいて、特定のコンテンツアイテム名前空間についての明示的な名前空間対ブロックサーバ割り当てが存在しない場合、その特定のコンテンツアイテム名前空間はオフプレミスブロックサーバ130に割り当てられていると仮定できる。
例えば、ステップ202で追加された新たなコンテンツアイテムがコンテンツアイテム名前空間識別子「DEF456」を伴う認証コンテンツアイテム名前空間に属し、パーソナル計算デバイス110−1に保持される名前空間対ブロックサーバ割り当てが、コンテンツアイテム名前空間「DEF456」がブロックサーバ識別子「JKL101」を伴うオンプレミスブロックサーバ120に割り当てられていることを指定する場合、ステップ210で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムをオンプレミスブロックサーバ120にアップロードすると決める。以降、図2に関して、所属コンテンツアイテム名前空間が割り当てられているブロックサーバを「ターゲット」ブロックサーバと称す。一般に、所属コンテンツアイテム名前空間が割り当てられているブロックサーバに依存して、ターゲットブロックサーバはオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130でありうる。
プロセス200のこの時点で、コンテンツアイテム同期エージェント114−1は、所属コンテンツアイテム名前空間の識別子(例えば「DEF456」)を決定し(ステップ206)、新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出し(ステップ208)、ターゲットブロックサーバの識別子(例えば、「JKL101」)を決定(ステップ210)した。今や、ステップ212で、コンテンツアイテム同期エージェント114−1は「委託(commit)」要求をこの情報を提供するメタデータサーバ150に送信する。特に、委託要求は、ユーザアカウント識別子および/またはパーソナル計算デバイス110−1の識別子に加えて、以下の情報の全て、またはその下位集合あるいは上位集合を含んでもよい。
所属コンテンツアイテム名前空間の識別子(例えば、「DEF456」);
ターゲットブロックサーバの識別子(例えば、「JKL101」);
所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダに対する新たなコンテンツアイテムの相対ファイルシステムパス。例えば、パーソナル計算デバイス110−1における新たなコンテンツアイテムの完全に要件を満たす又は絶対ファイルシステムパスが「C:¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc」である場合、かつ、所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダへのファイルシステムパスが「C:¥MyWorkContentItems¥MySharedItems¥」である場合、委託要求に含まれる相対ファイルシステムパスは「¥Presentations¥sales_preso.doc」となろう。
新規コンテンツアイテムに対するコンテンツアイテムブロックリスト。
さらなる安全性のため、委託要求は、トランスポートレイヤセキュリティ(TLS)やセキュアソケットレイヤ(SSL)で保護されたネットワーク接続などの暗号化ネットワーク接続を介して、LAN160およびWAN190を通じて送られてもよい。
ステップ214で、メタデータサーバ150はコンテンツアイテム同期エージェント114−1から受信した委託要求を認証する。この認証は、委託要求で指定される所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子が、委託要求内のユーザアカウント識別子に対応するメタデータプレーン180内のユーザアカウントレコード310の認証コンテンツアイテム名前空間識別子314のうちのひとつであるか検証することを含んでもよい。そうでなければ、メタデータサーバ150は委託要求を拒否し、コンテンツアイテム同期エージェント114−1に適切なエラーメッセージを返してもよい。
委託要求を認証することの一部として、メタデータサーバ150は、委託要求内で指定されるターゲットブロックサーバが所属コンテンツアイテム名前空間が現在割り当てられているブロックサーバであるかを検証してもよい。この検証は、メタデータプレーン180内の名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。所属コンテンツアイテム名前空間がターゲットブロックサーバに現在割り当てられていない場合、メタデータサーバ150は委託要求を拒否し、コンテンツアイテム同期エージェント114−1に適切なエラーメッセージを返してもよい。
しかしながら、ある例示的な実施の形態では、所属コンテンツアイテム名前空間が委託要求内で指定されるターゲットブロックサーバに現在割り当てられていない場合にエラーメッセージを返す代わりに、メタデータサーバ150は、メタデータプレーン180内の名前空間対ブロックサーバ割り当てにしたがい、コンテンツアイテム名前空間が現在割り当てられているブロックサーバの識別子を返す。そうすることによって、コンテンツアイテム同期エージェント114−1は委託要求を再試行し、その回では新たなターゲットブロックサーバを指定することができる。これはまた、メタデータサーバ150が、コンテンツアイテム同期エージェント114−1に、コンテンツアイテム名前空間のブロックサーバへの割り当てが変わったときにそのことを知らせるためのメカニズムを提供する。これはまた、コンテンツアイテム同期エージェント114−1が、コンテンツアイテム名前空間のブロックサーバへの新たな割り当てを知らされたときに、そのローカルの名前空間対ブロックサーバ割り当てを更新することを可能とする。
ステップ216で、委託要求が認証された前提で、メタデータサーバ150は、委託要求内の新たなコンテンツアイテムのコンテンツアイテムブロックリストに少なくとも部分的に基づいて、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれがまだターゲットブロックサーバに保持されていないかを決定する。これを行うために、メタデータサーバ150はメタデータプレーン180内のターゲットブロックサーバのコンテンツアイテムブロックリストを参照してもよい。ブロックサーバのコンテンツアイテムブロックリスト、または単に「ブロックリスト」、は、コンテンツアイテムブロックのコンテンツアイテムブロックハッシュによって、特定のブロックサーバに保持されるコンテンツアイテムブロックを特定する。コンテンツアイテムブロックが格納される先の各オンプレミスブロックサーバ(例えば、120)について、メタデータプレーン180内にブロックサーバブロックリストがあってもよい。オフプレミスブロックサーバ130について、メタデータプレーン180内にブロックサーバブロックリストがあってもよい。したがって、メタデータプレーン180には何百何千またはそれ以上のブロックサーバブロックリストが格納されうる。本明細書においてブロックサーバブロック「リスト」と称されてはいるが、ブロックサーバブロックリストのコンテンツアイテムブロックハッシュはリストデータ構造で、またはリストデータ構造以外のデータ構造で、保持されてもよい。例えば、ブロックサーバブロックリストはBツリーデータ構造または他のツリーベースのデータ構造として実装されてもよい。さらに、ブロックサーバブロックリストが複数のデータ構造により実装されることもまた可能である。例えば、第1データ構造はブロックサーバブロックリストにおいて所与のコンテンツアイテムブロックハッシュを探すのに最適化されていてもよく、第2データ構造はブロックサーバブロックリストに新たなコンテンツアイテムブロックハッシュを追加するのに最適化されていてもよい。
新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれがまだターゲットブロックサーバに保持されていないかを決定するために、メタデータサーバ150はメタデータプレーン180内のターゲットブロックサーバのブロックリストを参照する。メタデータサーバ150は、ターゲットブロックサーバのブロックサーバ識別子に基づいて、メタデータプレーン180においてターゲットブロックサーバのブロックリストを特定してもよい。委託要求における新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかの各コンテンツアイテムブロックハッシュについて、メタデータサーバ150は、そのコンテンツアイテムブロックハッシュがターゲットブロックサーバのブロックリストにあるか否かを判定する。もしなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックがターゲットブロックサーバから欠落していると決定する。そうでなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックがターゲットブロックサーバに既に保持されていると決定する。
ステップ218で、メタデータサーバ150は「必要コンテンツアイテムブロックリスト」応答で第1委託要求に応答する。必要コンテンツアイテムブロックリスト応答は、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュを含み、そのコンテンツアイテムブロックはステップ216においてメタデータサーバ150がターゲットブロックサーバのブロックリストから欠落していると決定したものである。したがって、必要コンテンツアイテムブロックリスト応答は、ターゲットブロックサーバにおいてどのコンテンツアイテムブロックが欠落しているかに依存して、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュの全てまたは部分集合を指定してもよい。
ステップ220で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの欠落しているコンテンツアイテムブロックをターゲットブロックサーバに格納する。これは、コンテンツアイテム同期エージェント114−1がターゲットブロックサーバにひとつ以上の「格納」要求を行うことを含んでもよい。そのような格納要求のそれぞれは、ひとつ以上の欠落しているコンテンツアイテムブロックと、そのひとつ以上の欠落しているコンテンツアイテムブロックのそれぞれのコンテンツアイテムブロックハッシュと、を含んでもよい。コンテンツアイテム同期エージェント114−1は、欠落しているコンテンツアイテムブロックのトータルサイズがかなり大きい場合、複数の格納要求を行ってもよい。例えば、ターゲットブロックサーバは、単一の格納要求でアップロードできるコンテンツアイテムブロックデータの量を8メガバイト(MB)までのみ(例えば、ブロック当たり4MBのコンテンツアイテムブロックを二つまで)許すようにしてもよい。この場合、新たなコンテンツアイテムのサイズが16MBである場合、例えば、少なくとも二つの格納要求が必要となろう。
ある例示的な実施の形態によると、ひとつの格納要求の中に欠落しているコンテンツアイテムブロック全体を含める代わりに、ターゲットブロックサーバに既に格納されているコンテンツアイテムブロックと欠落しているコンテンツアイテムブロックとの間の差分のみを格納要求に含めてもよい。これは、ネットワーク帯域幅や他の計算リソースの消費の節約に資する。差分は、既知のrsyncアルゴリズムにより用いられるデルタ符号化アプローチなどのデルタ符号化アプローチにしたがい計算されてもよい。したがって、本明細書におけるコンテンツアイテムブロックをブロックサーバにアップロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバにアップロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとのデルタだけをブロックサーバにアップロードすることと、の両方を包含する。デルタは二つのコンテンツアイテムブロックの間の実際のデータ差分であってもよいし、実際のデータ差分の表現(符号化)であってもよいし、あるいは実際のデータ差分と実際のデータ差分の表現(符号化)との組み合わせであってもよい。
ステップ222で、ターゲットブロックサーバ(例えば、120や130)のブロックサービス(例えば、122や132)は欠落しているコンテンツアイテムブロックをターゲットブロックサーバのブロックストレージ(例えば、124や134)に格納する。ターゲットブロックサーバのブロックストレージの実装は、ターゲットブロックサーバがオンプレミスブロックサーバ(例えば、120)であるかまたはオフプレミスブロックサーバ130であるかに依存して変わりうる。
ある例示的な実施の形態では、オンプレミスブロックサーバは、オンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間の部分集合に属するコンテンツアイテムのコンテンツアイテムブロックを格納するのに十分なデータストレージ容量を有してもよい。部分集合は、全てが同じ機関や同じ企業の従業員や同じ学校の生徒などに属するコンテンツアイテム名前空間の集合であってもよい。一方で、オフプレミスブロックサーバ130は、オンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間のコンテンツアイテムブロックを格納するのに十分なデータストレージ容量を有してもよい。データストレージ要件の差違が、オンプレミスブロックストレージ(例えば、124)において、オフプレミスブロックストレージ134とは異なる実装を促してもよい。例えば、オンプレミスブロックストレージは、1テラバイトから数テラバイトまでのデータストレージもしくはそれ以上を提供するひとつまたは数台の機器に収納されたストレージデバイス(例えば、ディスクドライブ)のアレイとして実装されてもよい。一方、オフプレミスブロックストレージ134は、数ゼタバイトまでのデータストレージまたはそれ以上を提供するひとつ以上のデータセンタ施設に収納された分散計算システムとして実装されてもよい。
ステップ224で、ターゲットブロックサーバは、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン180内のターゲットブロックサーバのブロックサーバブロックリストを更新する。更新の態様は、ターゲットブロックサーバがオンプレミスブロックサーバ120であるかまたはオフプレミスブロックサーバ130であるかに依存して変わりうる。
オフプレミスブロックサーバ130の場合、ブロックストレージ134への格納が成功したアップロードされたコンテンツアイテムブロックのそれぞれについて、ブロックサービス132は、メタデータプレーン180内のオフプレミスブロックサーバ130についてのブロックリストを更新する。そのような更新は、オフプレミスブロックサーバ130のブロックリストに、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュを追加することを含んでもよい。アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュでブロックリストを更新する前に、ブロックサービス132は、自身でアップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュを算出し、それをコンテンツアイテム同期エージェントからの格納要求内で受信したアップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュと比べてもよい。コンテンツアイテムブロックハッシュが一致しない場合、ブロックサービス132は格納要求を拒否し、アップロードされたコンテンツアイテムブロックをブロックストレージ134に格納せず、メタデータプレーン180内のオフプレミスブロックサーバ130のブロックリストを更新しなくてもよい。ある例示的な実施の形態によると、ブロックサービス132は、格納要求で指定されたアップロードされたコンテンツアイテムブロックをブロックストレージ134に格納する前に、格納要求が正しいユーザアカウント識別子312を含むことを要求してもよい。
オンプレミスブロックサーバ(例えば、120)の場合、オンプレミスブロックストレージ(例えば、124)への格納が成功したアップロードされたコンテンツアイテムブロックについて、オンプレミスブロックサーバのブロックサービス(例えば、122)はメタデータサーバ150に、ひとつ以上の「コンテンツアイテムブロック有り」要求を送信してもよい。ブロックサービスは、アップロードされたコンテンツアイテムブロックのそれぞれのブロックストレージへの格納が成功した後に、コンテンツアイテムブロック有り要求を送信してもよい。あるいはまた、ブロックサービスは、複数のアップロードされたコンテンツアイテムブロックのブロックストレージへの格納が成功した後に、コンテンツアイテムブロック有り要求を送信してもよい。コンテンツアイテムブロック有り要求は以下の情報の全てを含んでもよく、またはそれの上位集合または下位集合を含んでもよい:
ユーザアカウント識別子312。これは、格納要求においてオンプレミスブロックサーバに対して指定されたユーザアカウント識別子312であってもよい。あるいはまた、これは、オンプレミスブロックサーバのユーザアカウントなどの他のユーザアカウントのユーザアカウント識別子312であってもよい。
オンプレミスブロックサーバのブロックサーバ識別子。
ブロックストレージへの格納が成功したひとつ以上のアップロードされたコンテンツアイテムブロックのひとつ以上のコンテンツアイテムブロックハッシュ。
オンプレミスブロックサーバからコンテンツアイテムブロック有り要求を受信すると、メタデータサーバ150は、オンプレミスブロックサーバが、コンテンツアイテムブロック有り要求内のユーザアカウント識別子312によって特定されるユーザアカウントがアクセス可能なコンテンツアイテム名前空間314に割り当てられたブロックサーバのうちのひとつであることを検証することによって、コンテンツアイテムブロック有り要求を認証してもよい。要求が認証されると、メタデータサーバ150は、メタデータプレーン180内のオンプレミスブロックサーバのブロックリストを更新して、アップロードされたコンテンツアイテムブロックがオンプレミスブロックサーバのローカルブロックストレージに今や格納されたことを示すようにしてもよい。メタデータプレーン180内のブロックリストを更新した後、メタデータサーバ150はコンテンツアイテムブロック有り要求に対して、要求の処理が成功したと応答してもよい。
この時点で、ターゲットブロックサーバがオンプレミスブロックサーバ(例えば、120)であれオフプレミスブロックサーバ130であれ、ターゲットブロックサーバにおいて欠落していた新たなコンテンツアイテムのコンテンツアイテムブロックは今やコンテンツアイテム同期エージェント114−1によってターゲットブロックサーバにアップロードされた。加えて、メタデータプレーン180内のターゲットサーバのブロックリストは、新たなコンテンツアイテムの全てのコンテンツアイテムブロックが今やターゲットブロックサーバに格納されていることを示すよう更新された。
ステップ226で、コンテンツアイテム同期エージェント114−1はステップ212の委託要求を試行する。この第2委託要求は、第1委託要求で渡されたパラメータと同じパラメータを渡してもよく、それは所属コンテンツアイテム名前空間識別子とターゲットブロックサーバ識別子と新たなコンテンツアイテムに対する相対パスと新たなコンテンツアイテムのブロックリストとを含む。
ステップ228で、メタデータサーバ150は、ステップ214で第1委託要求について行ったように、この第2委託要求を認証する。
ステップ230で、第2委託要求が認証された前提で、メタデータサーバ150は、メタデータプレーン180内のターゲットブロックサーバのブロックリストにしたがい、新たなコンテンツアイテムのブロックリストで特定されるコンテンツアイテムブロックのなかにターゲットブロックサーバから欠落しているものがあるか否かを判定する。このとき、第1委託要求の後、欠落していたコンテンツアイテムブロックはターゲットブロックサーバにアップロードされてしまっているので、メタデータサーバ150は、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバで欠落しているものはないと判定すべきである。
3.1.3 コンテンツアイテムサーバジャーナル
ステップ232で、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、メタデータサーバ150は、メタデータプレーン180内のターゲットブロックサーバのコンテンツアイテムジャーナルまたは単に「サーバジャーナル」に新たなエントリを追加する。ある例示的な実施の形態によると、新たなエントリを追加することは、新たなコンテンツアイテムをオンラインコンテンツ管理サービスに「委託」する。サーバジャーナルは、特定のブロックサーバに委ねられたコンテンツアイテムのバージョンを追跡するために用いられる。オフプレミスブロックサーバ130用のサーバジャーナルおよびオンプレミスブロックサーバのそれぞれ用のサーバジャーナルが存在してもよい。したがって、メタデータプレーン180には何百何千またはそれ以上のサーバジャーナルが格納されうる。
いったん図4を参照すると、それはひとつ以上のサーバジャーナルからなるサーバジャーナル410のブロック図である。サーバジャーナル410はメタデータプレーン180に保持されてもよい。サーバジャーナル410は複数のサーバジャーナルエントリ412を含む。コンテンツアイテムの新たなバージョン(新たなコンテンツアイテムの最初のバージョンを含む)のブロックサーバへのアップロードが成功し、完了すると、サーバジャーナル410に新たなサーバジャーナルエントリ412が追加(例えば、追記)される。例えば、メタデータサーバ150は、コンテンツアイテム同期エージェント114−1から第2委託要求を受信することに応じて新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、サーバジャーナル410に、新たなサーバジャーナルエントリ412を追加してもよい。サーバジャーナル410に新たなサーバジャーナルエントリ412を追加することは、新たなコンテンツアイテムをオンラインコンテンツ管理サービスに委ねる。
サーバジャーナル410内の各サーバジャーナルエントリ412はコンテンツアイテムのバージョンに対応する。各サーバジャーナルエントリ412は、ブロックサーバ識別子413と、コンテンツアイテム名前空間識別子414と、パス415と、コンテンツアイテムブロックリスト416と、サーバジャーナルカーソル値417と、を含んでもよい。ブロックサーバ識別子413は、コンテンツアイテムの対応する新しいバージョンがアップロードされた先のブロックサーバを特定する。コンテンツアイテム名前空間識別子414は、コンテンツアイテムの対応する新しいバージョンが所属する先のコンテンツアイテム名前空間(すなわち、所属コンテンツアイテム名前空間)を特定する。パス415は、コンテンツアイテムの対応する新しいバージョンの、コンテンツアイテムが所属する先のコンテンツアイテム名前空間のマウントポイントに対する、相対ファイルシステムパスを指定する。コンテンツアイテムブロックリスト416は、コンテンツアイテムの対応する新しいバージョンを構成するひとつ以上のコンテンツアイテムブロックを特定するひとつ以上のコンテンツアイテムブロックハッシュを含む。
サーバジャーナルエントリ412のサーバジャーナルカーソル値417はコンテンツアイテム名前空間およびブロックサーバに特有のものである。特に、メタデータサーバ150は、コンテンツアイテム名前空間とブロックサーバとの一意の組み合わせのそれぞれについて、別個のサーバジャーナルカーソルを維持してもよい。対応するコンテンツアイテム名前空間と対応するブロックサーバとに対するサーバジャーナルカーソルは、対応するコンテンツアイテム名前空間に属する新たなコンテンツアイテムの対応するブロックサーバへのアップロードが成功したときにインクリメントされてもよい。例えば、対応するコンテンツアイテム名前空間と対応するブロックサーバとに対するサーバジャーナルカーソルは単調増加する値であってもよい。
例えば、コンテンツアイテム名前空間「DEF456」とブロックサーバ「JKL101」とに対する直近で追加されたサーバジャーナルエントリ412のサーバジャーナルカーソル値417が「17」である場合、ステップ232で追加される、同じコンテンツアイテム名前空間に属し同じブロックサーバにアップロードされたコンテンツアイテムの新たなバージョンの新たなサーバジャーナルエントリ412はサーバジャーナルカーソル値417として「18」を有するであろう。
サーバジャーナル410は、複数のブロックサーバのサーバジャーナルを保持してもよい。特に、同じブロックサーバ識別子413を有するサーバジャーナル410内のサーバジャーナルエントリ412の全てはブロックサーバのサーバジャーナルと考えられてもよい。ある代替的な実施の形態では、メタデータプレーン180内に、各ブロックサーバについて、物理的に別個のサーバジャーナルが保持されてもよい。メタデータプレーン180の複数のサーバ計算デバイスに亘ってサーバジャーナル410をパーティション化または分割することを含む他のストレージ構成も可能である。この場合、ブロックサーバ識別子413、コンテンツアイテム名前空間識別子414、またはブロックサーバ識別子413とコンテンツアイテム名前空間識別子414との組み合わせが、パーティション化のキーまたは分割のキーとして用いられてもよい。
ステップ234で、サーバジャーナル410へ新たなコンテンツアイテム113の新たなサーバジャーナルエントリ412を追加することに成功した後、メタデータサーバ150は第2委託要求に応答する。特に、メタデータサーバ150は、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したことをコンテンツアイテム同期エージェント114−1に対して示す応答を送信する。応答は、ブロックサーバ識別子413、コンテンツアイテム名前空間識別子414、または追加されたエントリ412のサーバジャーナルカーソル値417のうちのひとつ以上を含んでもよい。
ステップ236で、コンテンツアイテム同期エージェント114−1は、将来の参照のため、第2委託要求に対する応答内で受信したサーバジャーナルカーソル値をローカルに(例えば、ローカルストレージ112に)格納してもよい。ローカルで格納する際、コンテンツアイテム同期114−1は、サーバジャーナルカーソル値を、サーバジャーナルカーソル値が関係する所属コンテンツアイテム名前空間識別子およびターゲットブロックサーバ識別子に関連付けてもよい。加えて、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したので、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを更新してもよい。
コンテンツアイテムの委託状態インジケータは、パーソナル計算デバイスのオペレーティングシステムにより提供されるものなどのファイルシステムブラウザインタフェースにおいてコンテンツアイテムをファイルとして見るときに、ユーザに見えるものであってもよい。例えば、委託状態インジケータは、ファイルシステムブラウザやファイルシステムにおいてファイルをブラウズし検索し発見するための他のグラフィカルユーザインタフェースに表れる際、ファイル名の上やコンテンツアイテムのファイルタイプを表すアイコンの上に表示されるグラフィックであってもよい。
ある例示的な実施の形態によると、コンテンツアイテムの委託状態インジケータは、少なくとも四つの状態を有してもよい:(1)未委託、(2)委託中、(3)オフプレミスブロックサーバに委託済み、および(4)オンプレミスブロックサーバに委託済み。未委託状態では、委託状態インジケータは表示されない。あるいはまた、コンテンツアイテムがどのブロックサーバにも委託されていないことを示す委託状態インジケータが表示されてもよい。委託中状態では、委託状態インジケータは、コンテンツアイテムが現在ターゲットブロックサーバに委託されようとしている途中であることを示すかそうでなければアニメ化されてもよい。例えば、委託中状態にあるとき、コンテンツアイテムのコンテンツアイテムブロックが現在ターゲットブロックサーバにアップロードされていることを示すよう、委託状態インジケータが連続ループでアニメ化されてもよい。ブロックサーバに委託されると、委託されたコンテンツアイテムの委託状態インジケータは、コンテンツアイテムがオフプレミスブロックサーバ130に委託されたかオンプレミスブロックサーバ(例えば、120)に委託されたかによって異なる外観を有してもよい。例えば、委託状態インジケータは、コンテンツアイテムがオフプレミスブロックサーバ130に委託されたかオンプレミスブロックサーバに委託されたかによって異なる色または異なる像を有してもよい。異なる外観の理由は、委託状態インジケータを見ているユーザに、コンテンツアイテムがどのブロックサーバに委託されたかを知らせるためである。
ある例示的な実施の形態では、コンテンツアイテムの委託状態インジケータがそのコンテンツアイテムが委託されたことを示すために、そのコンテンツアイテムは少なくとも二つのブロックサーバに委託されなければならない。例えば、コンテンツアイテムがブロックサーバ130およびブロックサーバ120の両方に委託された場合にのみ、または、コンテンツアイテムが少なくとも二つのオンプレミスブロックサーバに委託された場合にのみ、委託済みの委託状態インジケータ(例えば、緑色のチェックマークグラフィック)が表示されてもよい。ある例示的な実施の形態によると、ブロックサーバに委託されたとは、少なくとも、サーバコンテンツアイテムジャーナル(例えば、410)へのエントリ(例えば、412−2)の追加を指し、これは、コンテンツアイテムの全てのコンテンツアイテムブロック(例えば、ジャーナルエントリ412−2のコンテンツアイテムブロックリスト416によって指定されるもの)が委託の時点でブロックサーバに格納されたことを示す。このコンテキストで、オンプレミスブロックサーバへ委託済み状態とオフプレミスブロックサーバへ委託済み状態とで委託状態インジケータが別個とならなくてもよい。代わりに、コンテンツアイテムが少なくとも二つのブロックサーバに委託されたときのコンテンツアイテムの委託済み状態を表す単一の委託状態インジケータ(例えば、緑色のチェックマーク)があってもよい。
ある例示的な実施の形態では、コンテンツアイテムが委託済みとみなされる(したがって、そのことを示す委託状態インジケータで表示される)ためにそのコンテンツアイテムが委託されなければならないブロックサーバの数(例えば、1、2、3等)またはそのようなブロックサーバがどれであるかは、コンテンツアイテム名前空間ごとベースで設定される。例えば、コンテンツアイテム名前空間識別子と関連付けて、コンテンツアイテムが委託済みとみなされるためにそのコンテンツアイテム名前空間に属するコンテンツアイテムが委託されなければならないブロックサーバの数またはそのようなブロックサーバがどれであるかを指定する(例えば、ブロックサーバ識別子によって)メタデータを保持してもよい。
3.1.4 例示的なアップロードインタラクション
図5を参照すると、本発明のある例示的な実施の形態に係る、図2のプロセス200が行われオフプレミスブロックサーバ130に新たなコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス110−1とメタデータサーバ150とオフプレミスブロックサーバ130とメタデータプレーン180との間の種々のインタラクションを示すインタラクション図500である。
ステップ202で、ユーザ102−1はパーソナル計算デバイス110−1でコンテンツアイテムを生成または変更する。ステップ204で、パーソナル計算デバイスのコンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムを検出する。ステップ206で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ208で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ210で、コンテンツアイテム同期エージェント114−1はオフプレミスブロックサーバ130がターゲットブロックサーバであることを決定する。ステップ212で、コンテンツアイテム同期エージェント114−1は第1委託要求をメタデータサーバ150に送信する。
ステップ214で、メタデータサーバ150は第1委託要求を認証する。ステップ216で、メタデータサーバ150はオフプレミスブロックサーバ130で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ218で、メタデータサーバ150は欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第1委託要求に応答する。
ステップ220で、コンテンツアイテム同期エージェント114−1は欠落しているコンテンツアイテムブロックをオフプレミスブロックサーバ130にアップロードする。
ステップ222で、オフプレミスブロックサーバ130はアップロードされたコンテンツアイテムブロックをブロックストレージ134に格納する。ステップ224で、オフプレミスブロックサーバ130は、オフプレミスブロックサーバ130のメタデータプレーン180のブロックリストを、欠落しているコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。
ステップ226で、コンテンツアイテム同期エージェント114−1は第2委託要求を送信する。
ステップ228で、メタデータサーバ150は第2委託要求を認証する。ステップ230で、メタデータサーバ150はオフプレミスブロックサーバ130で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ232で、欠落しているコンテンツアイテムブロックがないと判定されると、メタデータサーバ150は新たなコンテンツアイテムのサーバジャーナル410に新たなサーバジャーナルエントリ412を追加する。新たなサーバジャーナルエントリ412は所属コンテンツアイテム名前空間とオフプレミスブロックサーバ130とを特定する。ステップ234で、メタデータサーバ150は委託が成功したことの確認で第2委託要求に応答する。その応答は、所属コンテンツアイテム名前空間とオフプレミスブロックサーバ130とに専用のサーバジャーナルカーソル値417を含んでもよい。
ステップ236で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがオフプレミスブロックサーバ130に委託されたことを示すよう更新する。
図6を参照すると、本発明のある例示的な実施の形態に係る、図2のプロセス200が行われオンプレミスブロックサーバ120にコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス110−1とメタデータサーバ150とオンプレミスブロックサーバ120とメタデータプレーン180との間の種々のインタラクションを示すインタラクション図600である。ダイアグラム600に示されるインタラクションはダイアグラム500に示されるインタラクションと同様である。しかしながら、ターゲットブロックサーバがオフプレミスブロックサーバ130ではなくオンプレミスブロックサーバであることに関する差分がある。
ステップ202で、ユーザ102−1はパーソナル計算デバイス110−1でコンテンツアイテムを生成または変更する。ステップ204で、パーソナル計算デバイスのコンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムを検出する。ステップ206で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ208で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ210で、コンテンツアイテム同期エージェント114−1はオンプレミスブロックサーバ120がターゲットブロックサーバであることを決定する。ステップ212で、コンテンツアイテム同期エージェント114−1は第1委託要求をメタデータサーバ150に送信する。
ステップ214で、メタデータサーバ150は第1委託要求を認証する。ステップ216で、メタデータサーバ150はオンプレミスブロックサーバ120で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ218で、メタデータサーバ150は欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第1委託要求に応答する。
ステップ220で、コンテンツアイテム同期エージェント114−1は欠落しているコンテンツアイテムブロックをオンプレミスブロックサーバ120にアップロードする。
ステップ222で、オンプレミスブロックサーバ120はアップロードされたコンテンツアイテムブロックをオンプレミスブロックサーバ120のブロックストレージ124に格納する。ステップ224で、オンプレミスブロックサーバ120は、ブロックストレージ124への格納が成功した欠落コンテンツアイテムブロックについて、メタデータサーバ150に、ひとつ以上のコンテンツアイテムブロック有り要求を送信する。ステップ224で、メタデータサーバ150は、オンプレミスブロックサーバ120についてのメタデータプレーン180内のブロックリストを、コンテンツアイテムブロック有り要求で指定される欠落しているコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。
ステップ226で、コンテンツアイテム同期エージェント114−1は第2委託要求を送信する。
ステップ228で、メタデータサーバ150は第2委託要求を認証する。ステップ230で、メタデータサーバ150はオンプレミスブロックサーバ120で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ232で、欠落しているコンテンツアイテムブロックがないと判定されると、メタデータサーバ150は新たなコンテンツアイテムのサーバジャーナル410に新たなサーバジャーナルエントリ412を追加する。新たなサーバジャーナルエントリ412は所属コンテンツアイテム名前空間とオンプレミスブロックサーバ120とを特定する。ステップ234で、メタデータサーバ150は委託が成功したことの確認で第2委託要求に応答する。その応答は、所属コンテンツアイテム名前空間とオンプレミスブロックサーバ120とに専用のサーバジャーナルカーソル値を含んでもよい。
ステップ236で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがオンプレミスブロックサーバ120に委託されたことを示すよう更新する。
3.2 コンテンツアイテムのダウンロード
図7を参照すると、ターゲットブロックサーバからコンテンツアイテムをダウンロードするプロセス700のフローチャートである。所属コンテンツアイテム名前空間が現在割り当てられているブロックサーバに依存して、ターゲットブロックサーバはオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130でありうる。以下にステップを図7に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
ステップ702で、サーバジャーナル410に追加された新たなサーバジャーナルエントリ412が検出される。そのような検出は、例えばメタデータサーバ150や通知サーバ140を含むオンラインコンテンツ管理サービスの種々のコンポーネントによって行われてもよい。例えば、サーバジャーナル410に新たなサーバジャーナルエントリ412が追加されたとき、メタデータプレーン180によってネットワークメッセージが生成され、バックエンドデータバスによりメタデータサーバ150および/または通知サーバ140へ運ばれてもよい。新たなサーバジャーナルエントリ412の追加は、所属コンテンツアイテム名前空間に属する新たなコンテンツアイテムがブロックサーバにアップロードされたことを表す。新たなサーバジャーナルエントリ412は、新たなエントリ412のブロックサーバ識別子413を介して、新たなコンテンツアイテムがアップロードされた先のブロックサーバを特定し、新たなエントリ412のコンテンツアイテム名前空間識別子414を介して、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を特定する。
ステップ704で、通知サーバ140は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間が設けられているパーソナル計算デバイス(例えば、パーソナル計算デバイス110−2)に通知を行う。特定のコンテンツアイテム名前空間が設けられているパーソナル計算デバイスを決定するために、メタデータプレーン180は「リンクされたデバイス」についての情報を保持してもよい。一般に、「リンクされたデバイス」は、それが正当なユーザアカウント識別子312を「所持する」ものであることをオンラインコンテンツ管理サービスに示したパーソナル計算デバイス(例えば、110−2)である。パーソナル計算デバイスは、ユーザアカウント識別子312に関連付けられた正当な認証資格情報(例えば、正しいユーザ名およびパスワード)を、オンラインコンテンツ管理サービス(例えば、メタデータサーバ150またはウェブサイト170)またはオンラインコンテンツ管理サービスに認証サービスを提供するアイデンティティプロバイダに、パーソナル計算デバイスから、提供することによって、それが正当なユーザアカウント識別子312を所持するものであることを示すことができる。
3.2.1 リンクされたデバイスメタデータ
図7に戻る前に図8を参照すると、図8は、本発明のいくつかの実施例に従う、メタデータプレーン180に格納された、リンクされたデバイスメタデータ800のブロック図である。リンクされたデバイスメタデータ800は、1つ以上のリンクデバイスレコード810を含む。リンクデバイスレコード810のそれぞれは、リンクされたパーソナル計算デバイスを識別するデバイス識別子812を有し得る。デバイスレコード810のそれぞれはまた、ユーザアカウントレコード310を識別するユーザアカウント識別子312を有し得る。例えば、同一のユーザが複数のパーソナル計算デバイスを用いてオンラインコンテンツ管理サービスとやりとりする場合、同一のユーザアカウント識別子312を有する、複数のリンクデバイスレコード810が存在してもよい。しかしながら、所与のユーザアカウント識別子312を有する、単一のリンクデバイスレコード810のみが存在するようにすることも可能である。リンクされたデバイスレコード810は、デバイス識別子812とユーザアカウント識別子312とに加えて、他の情報を含んでよい。例えば、リンクデバイスレコード810は、リンクされたデバイスの種別、リンクされたデバイスにインストールされたオペレーティングシステムの種別、リンクされたデバイスにインストールされたコンテンツアイテム同期エージェントのバージョン、他のデバイス固有の情報についての情報を含んでよい。
いくつかの実施例によれば、リンクデバイスレコード810は、パーソナル計算デバイスにおいて実行されるクライアントアプリケーションが、ユーザアカウント識別子312に関連付けられた有効なユーザ認証クレデンシャルを提供するウェブサイト170へ要求を送信したことに応じて、パーソナル計算デバイスに対して、メタデータプレーン180に生成される。例えば、クライアントアプリケーションは、ユーザが有効なユーザ認証クレデンシャルを提供するパーソナル計算デバイスにおいて実行されるウェブブラウザであり得る。要求に応じて、ウェブサイト170は、新規のリンクされたデバイスレコード180を、パーソナル計算デバイスと有効なユーザアカウント識別子312とを識別するデバイス識別子812と共に生成してもよい。
図7に戻り、ステップ704で、コンテンツアイテム同期114−2は通知サーバ140との長期ポーリング接続を維持してもよい。例えば、長期ポーリング接続はHTTPまたはHTTPS長期ポーリング接続であってもよい。パーソナル計算デバイスとの間で維持される長期ポーリング接続のそれぞれについて、通知サーバ140はパーソナル計算デバイスのデバイス識別子812をその接続と関連付けてもよい。ステップ702で新たなサーバジャーナルエントリ412が検出された場合、新たなサーバジャーナルエントリ412のコンテンツアイテム名前空間識別子414を用いて、メタデータプレーン180において、そのコンテンツアイテム名前空間識別子414を認証コンテンツアイテム名前空間314として有するユーザアカウントレコード310を特定してもよい。そのように特定されたユーザアカウントレコード310のそれぞれについて、通知対象のパーソナル計算デバイスのリンクデバイスレコード810は、特定されたユーザアカウントレコード310のユーザアカウント識別子312に基づいて特定されてもよい。通知サーバ140は次いで、通知を要すると決定されたパーソナル計算デバイスのデバイス識別子812に関連付けられた長期ポーリング接続のそれぞれを介して、「ピン(ping)」メッセージを送る。ピンメッセージは、パーソナル計算デバイスに設けられたひとつ以上のコンテンツアイテム名前空間のひとつ以上のコンテンツアイテムに対する更新が利用可能であることを、パーソナル計算デバイスのコンテンツアイテム同期エージェントに知らせる役割を果たす。
ステップ706で、通知サーバ140からのピンメッセージを受信することに応じて、パーソナル計算デバイス110−2のコンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2に設けられたコンテンツアイテム名前空間に対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を決定する。同期プロトコルの第1の例示的な動作にしたがうと、クライアントジャーナルカーソル値はコンテンツアイテム名前空間およびブロックサーバに特有のものであってもよい。したがって、コンテンツアイテム名前空間およびブロックサーバに対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、そのコンテンツアイテム名前空間およびそのブロックサーバに委託されたコンテンツアイテム変更に対してパーソナル計算デバイス110−2がどの程度最新かを反映する。パーソナル計算デバイス110−2は、パーソナル計算デバイス110−2に設けられた各コンテンツアイテム名前空間の少なくともひとつの現在のクライアントジャーナルカーソル値をローカルに保持してもよい。コンテンツアイテム同期エージェント114−2は、コンテンツアイテム名前空間およびブロックサーバに対する現在のクライアントジャーナルカーソル値を、そのコンテンツアイテム名前空間およびそのブロックサーバに属する新たなコンテンツアイテムのダウンロードに成功した後に、更新してもよい。
ステップ708で、コンテンツアイテム同期エージェント114−2は「リスト」要求をメタデータサーバ150に送信する。ユーザアカウント識別子312およびデバイス識別子812に加えて、リスト要求は、パーソナル計算デバイス110−2に設けられたひとつ以上のコンテンツアイテム名前空間のそれぞれについて、コンテンツアイテム名前空間に対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を特定してもよい。パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値はブロックサーバにも特有のものであるから、リスト要求は、コンテンツアイテム名前空間識別子に加えて、現在のクライアントジャーナルカーソル値が関連する先のブロックサーバのブロックサーバ識別子を特定してもよい。したがって、リスト要求は、潜在的な他の情報に加えて、パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値と、それらの現在のクライアントジャーナルカーソル値のそれぞれについて、コンテンツアイテム名前空間識別子と、現在のクライアントジャーナルカーソル値に関連付けられたブロックサーバ識別子と、のうちのひとつ以上を特定してもよい。
ステップ710で、メタデータサーバ150はリスト要求を受信し、それを処理する。リスト要求を処理することは、メタデータプレーン180のサーバジャーナル410を参照することを含む。特に、リスト要求で提供されるパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値のそれぞれについて、メタデータサーバ150は、リスト要求で提供されるクライアントジャーナルカーソル値よりも「新しい」サーバジャーナルエントリ412があるかを決定する。より新しいサーバジャーナルエントリ412は、エントリのサーバジャーナルカーソル値417がパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値よりも数値的に大きく、かつ、エントリ412のブロックサーバ識別子413およびコンテンツアイテム名前空間識別子414がそれぞれリスト要求内のパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値に関連付けられたブロックサーバ識別子およびコンテンツアイテム名前空間識別子とマッチするようなものであってもよい。メタデータサーバ150は、リスト要求内で指定されたパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値のそれぞれについて、ひとつ以上のより新しいサーバジャーナルエントリ412を決定してもよい。
ステップ712で、メタデータサーバ150はリスト要求に応答する。応答は、ステップ710で特定されたより新しいサーバジャーナルエントリ412のそれぞれからの情報を含んでもよい。特に、応答は、より新しいサーバジャーナルエントリ412のそれぞれについての以下の情報の全て、下位集合または上位集合を含んでもよい。
より新しいサーバジャーナルエントリ412のブロックサーバ識別子413。
より新しいサーバジャーナルエントリ412のコンテンツアイテム名前空間識別子414。
より新しいサーバジャーナルエントリ412のコンテンツアイテム相対パス415。
より新しいサーバジャーナルエントリ412のコンテンツアイテムブロックリスト416。
より新しいサーバジャーナルエントリ412のサーバジャーナルカーソル値417。
ステップ710で特定される複数のより新しいサーバジャーナルエントリ412が同じコンテンツアイテムに関する場合、その複数のより新しいサーバジャーナルエントリ412のうちの最新のもののみがリスト要求に対する応答で返されるであろう。複数のより新しいサーバジャーナルエントリ412は、それらがブロックサーバ識別子413フィールド、コンテンツアイテム名前空間識別子414フィールド、および相対パス415フィールドについて同じ値を有するが、異なるサーバジャーナルカーソル値417を有する場合、同じコンテンツアイテムに関すると見なされてもよい。例えば、直近の同期動作以来、同じコンテンツアイテムに二つの更新がなされたとしよう。この場合、複数のより新しいサーバジャーナルエントリ412のなかで最も高い(最も新しい)サーバジャーナルカーソル値417を伴うより新しいサーバジャーナルエントリ412が、複数のより新しいサーバジャーナルエントリ412のうちの他のものに取って代わる。最も高い(最も新しい)サーバジャーナルカーソル値417を伴うそのより新しいサーバジャーナルエントリ412はリスト要求に対する応答内で返され、他のものは返されない。
ステップ714で、コンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2のローカルストレージ112−2から欠落しているコンテンツアイテムブロックを決定する。この決定は、ステップ712でメタデータサーバ150からリスト要求に対する応答で受信したより新しいエントリまたはより新しいサーバジャーナルエントリ412のコンテンツアイテムブロックリスト416に基づいてもよい。この決定はまた、コンテンツアイテムクライアントジャーナルまたは単に「クライアントジャーナル」に基づいてもよい。このクライアントジャーナルは、パーソナル計算デバイス110−2のローカルストレージ112−2に保持されるコンテンツアイテムブロックを追跡するために、コンテンツアイテム同期エージェント114−2がローカルで(例えば、ローカルストレージ112−2に)維持するものである。特に、クライアントジャーナルは、ローカルストレージ112−2に保持される設置コンテンツアイテム名前空間に属する各コンテンツアイテムの現在のバージョンのそれぞれに対するコンテンツアイテムブロックリストを保持してもよい。コンテンツアイテムの現在のバージョンに対するコンテンツアイテムブロックリストは、現在のバージョンのコンテンツアイテムブロックを特定する。クライアントジャーナル内の各ブロックリストは、クライアントジャーナルにおいて、所属コンテンツアイテム名前空間の識別子およびコンテンツアイテムへの相対パスに関連付けられてもよい。リスト要求に応じてメタデータサーバ150から受信した所与のより新しいサーバジャーナルエントリ412について、コンテンツアイテム同期エージェント114−2は、より新しいサーバジャーナルエントリ412のブロックリスト416と、より新しいサーバジャーナルエントリ412のコンテンツアイテム名前空間識別子414とより新しいサーバジャーナルエントリ412のコンテンツアイテム相対パス415とにクライアントジャーナル内で関連付けられたクライアントジャーナルのブロックリストと、を比較してもよい。より新しいサーバジャーナルエントリ412のブロックリスト416内のコンテンツアイテムブロックハッシュのうち、クライアントジャーナル内の対応するブロックリストに無いものは、パーソナル計算デバイス110−2のローカルストレージ112−2内に保持される対応するコンテンツアイテムの現在のバージョンから欠落しているコンテンツアイテムブロックに対応する。
ステップ716で、コンテンツアイテム同期エージェント114−2はステップ714で特定された欠落しているコンテンツアイテムブロックをダウンロードする。欠落しているコンテンツアイテムブロックは、リスト要求への応答内で指定されるように、異なるブロックサーバに、または全てが同じブロックサーバに、格納されてもよい。ひとつ以上の欠落コンテンツアイテムブロックをブロックサーバからダウンロードするために、コンテンツアイテム同期エージェント114−2はブロックサーバに「取得」要求を送信し、取得要求内で欠落コンテンツアイテムブロックのコンテンツアイテムブロックハッシュを特定する。
ステップ716で、コンテンツアイテム同期エージェント114−2は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、コンテンツアイテム同期エージェント114−2からの取得要求を受信する各ブロックサーバは、取得要求に対する応答を返し、該応答は、取得要求において特定されたコンテンツアイテムブロックハッシュに対応するコンテンツアイテムブロックを含む。ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、既知のrsyncアルゴリズムにより用いられるものなどのデルタ符号化スキームにしたがい行われてもよい。この場合、ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、ブロックサーバに保持されるコンテンツアイテムブロックとパーソナル計算デバイス110−2に既に保持されているコンテンツアイテムブロックとの間のデルタのみをダウンロードすることを含んでもよい。したがって、コンテンツアイテムブロックをブロックサーバからダウンロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバからダウンロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとの間のデルタだけをブロックサーバからダウンロードすることと、の両方を包含する。
ステップ718で、コンテンツアイテム同期エージェント114−2は、ローカルストレージ112−2のファイルシステムに保持されるひとつ以上のファイルとして、またはその一部として、ダウンロードされたコンテンツアイテムブロックを格納する。この格納は、ファイルシステムに新たなファイルを生成すること、および/またはファイルシステムの既存のファイルをダウンロードされたコンテンツアイテムブロックに基づき更新すること、を含んでもよい。例えば、リスト要求に応じて受信されたより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムについての、ブロックサーバからダウンロードされた所与のコンテンツアイテムブロックについて、コンテンツアイテム同期エージェント114−2は、より新しいサーバジャーナルエントリ412で特定されるコンテンツアイテム名前空間414のパーソナル計算デバイス110−2でのコンテンツアイテムマウントポイントフォルダ、および、より新しいサーバジャーナルエントリ412内の相対パス415に基づいて、所与のコンテンツアイテムブロックで更新するか生成するように、ファイルシステム内のファイルを決定することができる。
ある例示的な実施の形態では、所与のコンテンツアイテム名前空間のひとつ以上のより新しいサーバジャーナルエントリ412に基づいてステップ718で生成または更新されたコンテンツアイテムは、より新しいサーバジャーナルエントリ412のサーバジャーナルカーソル値417のシーケンスまたは順番で生成または更新される。例えば、ステップ708において、コンテンツアイテム同期エージェント114−2が、コンテンツアイテム名前空間「ABC123」とブロックサーバ「JKL101」とについて現在のクライアントジャーナルカーソル値「17」を指定するリスト要求を送信したとする。さらに、リスト要求に応じて、コンテンツアイテム同期エージェント114−2がステップ712においてリスト要求に応じて、コンテンツアイテム名前空間「ABC123」とブロックサーバ「JKL101」とについての三つのより新しいサーバジャーナルエントリ412であってそれぞれがサーバジャーナルカーソル値「18」、「19」、「20」を有するサーバジャーナルエントリ412を受信したとする。次いで、ブロックサーバ「JKL101」から三つの新たなサーバジャーナルエントリ412に対応する欠落コンテンツアイテムブロックをダウンロードした後、コンテンツアイテム同期エージェント114−2は、まず、サーバジャーナルカーソル値「18」を有するより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムを生成または更新し、次にサーバジャーナルカーソル値「19」を有するより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムを生成または更新し、最後にサーバジャーナルカーソル値「20」を有するより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムを生成または更新してもよい。
ステップ720で、コンテンツアイテム同期エージェント114−2は、ステップ716および718においてダウンロードおよび格納に成功したコンテンツアイテムブロックに基づくローカルストレージ112−2内での生成または更新に成功したコンテンツアイテムについて、パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を更新する。特に、リスト要求に応じて受信された対応するより新しいサーバジャーナルエントリ412に基づいてローカルストレージ112−2において生成または更新された所与のコンテンツアイテムについて、その対応するより新しいサーバジャーナルエントリ412で特定されるコンテンツアイテム名前空間414およびブロックサーバ413についてのパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、それがその対応するより新しいサーバジャーナルエントリ412のサーバジャーナルカーソル値417と一致するように更新される。上述の通り、所与のコンテンツアイテム名前空間のひとつ以上のより新しいサーバジャーナルエントリ412に基づいてステップ720で生成または更新されたコンテンツアイテムは、より新しいサーバジャーナルエントリ412のジャーナルカーソル値417のシーケンスまたは順番で生成または更新されてもよい。同様に、所与のコンテンツアイテム名前空間についてのパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、ステップ722で、より新しいサーバジャーナルエントリ412のジャーナルカーソル値417のシーケンスまたは順番で、インクリメントされてもよい。
3.2.2 例示的なダウンロードインタラクション
図9を参照すると、本発明のある例示的な実施の形態に係る、図7のプロセス700が行われオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130からコンテンツアイテムをダウンロードするときの、パーソナル計算デバイス110−2と通知サーバ140とメタデータサーバ150とターゲットブロックサーバとメタデータプレーン180との間の種々のインタラクションを示すインタラクション図900である。
ステップ704にあるように、通知サーバ140はパーソナル計算デバイス110−2のコンテンツアイテム同期エージェント114−2にピンメッセージを送信する。
ステップ706にあるように、コンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2に設けられているひとつ以上のコンテンツアイテム名前空間の現在のクライアントジャーナルカーソル値を決定する。そのような現在のクライアントジャーナルカーソル値のそれぞれは、対応するブロックサーバにアップロードされたコンテンツアイテム名前空間に対する変更に関してパーソナル計算デバイス110−2がどの程度最新かを反映する。ステップ708にあるように、コンテンツアイテム同期エージェント114−2はリスト要求をメタデータサーバ150に送信する。
ステップ710にあるように、メタデータサーバ150は、リスト要求で指定される現在のクライアントジャーナルカーソル値のそれぞれについて、サーバジャーナル410内により新しいジャーナルエントリ412があるか決定する。ステップ712にあるように、メタデータサーバ150は、より新しいジャーナルエントリ412のリストをデバイス110−2に送信する。
ステップ714にあるように、コンテンツアイテム同期エージェント114−2は、より新しいジャーナルエントリ412で指定されるコンテンツアイテムブロックのなかに、デバイス110−2にまだ格納されていないものがあるか判定する。この判定は、より新しいジャーナルエントリ412のコンテンツアイテムブロックリスト416と、パーソナル計算デバイス110−2に既に格納されたコンテンツアイテムブロックの既知のコンテンツアイテムブロックハッシュのコンテンツブロックリストと、を比較することに基づいてもよい。ステップ716にあるように、コンテンツアイテム同期エージェント114−2は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、パーソナル計算デバイス110−2においてより新しいジャーナルエントリ412についてのひとつ以上のコンテンツアイテムブロックが欠落している場合、そのより新しいジャーナルエントリ412のそれぞれについて、コンテンツアイテム同期エージェント114−2は、エントリ412で特定されるブロックサーバ413からの欠落コンテンツアイテムブロックのダウンロードを試行する。ステップ718にあるように、コンテンツアイテム同期エージェント114−2は、ダウンロードされたコンテンツアイテムブロックに基づいて、パーソナル計算デバイス110−2のローカルファイルシステムにおいてひとつ以上のコンテンツアイテムを生成または更新する。ステップ720にあるように、コンテンツアイテム同期エージェント114−2は、より新しいジャーナルエントリ412の処理が成功したとき、現在のクライアントジャーナルカーソル値を更新する。
4.0 第2の例示的同期プロトコル動作
上述の第1の例示的同期プロトコル動作の変形例において、クライアントおよびサーバジャーナルカーソル値はコンテンツアイテム名前空間にのみ特有であって、上述の第1の例示的同期プロトコル動作のときのようにコンテンツアイテム名前空間とブロックサーバとの組み合わせに特有ではない。この第2の変形例において、メタデータサーバ150は、コンテンツアイテム同期エージェントからの委託要求に応答することができ、その際にはコンテンツアイテム同期エージェントが欠落コンテンツアイテムブロックをアップロードできる先のひとつ以上のブロックサーバについて複数のオプションがある。また、この変形例において、メタデータサーバ150は、コンテンツアイテム同期エージェントからのリスト要求に応答することができ、その際には欠落コンテンツアイテムブロックがダウンロードされる元のひとつ以上の計算デバイスについて複数のオプションがある。リスト要求への応答の場合、計算デバイスオプションは、ブロックサーバ(例えば、120や130)に加えてまたはその代わりに、他のパーソナル計算デバイス(例えば、110−1、110−2)を含むことができ、それによりピアツーピア動作が促進される。
図2および図7に関して上述したアップロードおよびダウンロードプロセスと変形例との差分に重きを置いて、同期プロトコルの変形例を以下に説明する。
4.1 アップロードプロセス
図10を参照すると、本発明のいくつかの例示的な実施の形態に係る、新たなコンテンツアイテムをパーソナル計算デバイス110−1から「ターゲット」ブロックサーバへアップロードするためのプロセス1000を説明するフロー図である。ターゲットブロックはオンプレミスブロックサーバ(例えば、102)またはオフプレミスブロックサーバ130であってもよい。以下にステップを図10に示される所定の順番で説明するが、そうでないと明記されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
ステップ1002で、図2に関連して説明されたステップ202と同様に、ユーザ102−1はパーソナル計算デバイス110−1のローカルストレージ112−1において「新たな」コンテンツアイテムを追加するか変更する。
ステップ1004で、図2に関連して説明されたステップ204と同様に、パーソナル計算デバイス110−1のコンテンツアイテム同期エージェント114−1は、ローカルストレージ112−1内の新たなコンテンツアイテムを検出する。
ステップ1006で、図2に関連して説明されたステップ206と同様に、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれを決定する。
ステップ1008で、図2に関連して説明されたステップ208と同様に、コンテンツアイテム同期114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。
プロセス1000のこの時点で、コンテンツアイテム同期エージェント114−1は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間の識別子(例えば「DEF456」)を決定し(ステップ1006)、新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出(ステップ1008)した。プロセス1000において、図2に関して上述されたステップ210などのステップを実行する必要はないが、されてもよい。特に、アップロードプロセス1000について、名前空間対ブロックサーバ割り当てがパーソナル計算デバイス110−1に保持される必要はないが、保持されてもよい。
ステップ1010で、コンテンツアイテム同期エージェント114−1は第1「委託」要求をメタデータサーバ150に送信する。特に、第1委託要求は、ユーザアカウント識別子312およびデバイス識別子812に加えて、以下の情報の全て、またはその下位集合あるいは上位集合を含んでもよい。
所属コンテンツアイテム名前空間の識別子(例えば、「DEF456」);
パーソナル計算デバイス110−1における所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダに対する新たなコンテンツアイテムの相対ファイルシステムパス。
新規コンテンツアイテムに対するコンテンツアイテムブロックリスト。
さらなる安全性のため、ステップ1010で送信される委託要求は、トランスポートレイヤセキュリティ(TLS)やセキュアソケットレイヤ(SSL)で保護されたネットワーク接続などの暗号化ネットワーク接続を介して、LAN160およびWAN190を通じて送られてもよい。
ステップ1012で、メタデータサーバ150はコンテンツアイテム同期エージェント114−1から受信した第1委託要求を認証する。この認証は、第1委託要求で指定される所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子314が、第1委託要求で指定されるユーザアカウント識別子312に対応するメタデータプレーン180内のユーザアカウントレコード310の認証コンテンツアイテム名前空間識別子314のうちのひとつであるか検証することを含んでもよい。そうでなければ、メタデータサーバ150は第1委託要求を拒否し、コンテンツアイテム同期エージェント114−1に適切なエラーメッセージを返してもよい。
ステップ1014で、メタデータサーバ150は、第1委託要求で指定される所属コンテンツアイテム名前空間が割り当てられる先のひとつ以上の「候補」ブロックサーバを決定する。この決定は、メタデータプレーン180内に保持される名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。所属コンテンツアイテム名前空間は、オフプレミスブロックサーバ130にのみ、ひとつのオンプレミスブロックサーバ(例えば、120)にのみ、複数のオンプレミスブロックサーバに、またはひとつ以上のオンプレミスブロックサーバおよびオフプレミスブロックサーバ130に、割り当てられてもよい。
ステップ1016で、メタデータサーバ150は、ひとつ以上の候補ブロックサーバのそれぞれについて、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれが候補ブロックサーバにまだ格納されていないかを判定する。これを行うために、メタデータサーバ150はメタデータプレーン180内の候補ブロックサーバのブロックリストを参照してもよい。メタデータサーバ150は、候補ブロックサーバのブロックサーバ識別子に基づいて、メタデータプレーン180において候補ブロックサーバのブロックリストを特定してもよい。第1委託要求における新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかの各コンテンツアイテムブロックハッシュについて、メタデータサーバ150は、そのコンテンツアイテムブロックハッシュが候補ブロックサーバのブロックリストにあるか否かを判定する。もしなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックが候補ブロックサーバから欠落していると決定する。そうでなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックが候補ブロックサーバに既に保持されていると決定する。
ステップ1018で、メタデータサーバ150はひとつ以上の必要コンテンツアイテムブロックリストを指定する応答で第1委託要求に応答する。応答は、各候補ブロックサーバについてひとつの必要コンテンツアイテムブロックリストを含んでもよい。候補ブロックサーバについての必要コンテンツアイテムブロックリストは、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュを含み、そのコンテンツアイテムブロックはステップ1016においてメタデータサーバ150が候補ブロックサーバのブロックリストから欠落していると決定したものである。したがって、候補ブロックサーバについての必要コンテンツアイテムブロックリストは、候補ブロックサーバにおいてどのコンテンツアイテムブロックが欠落しているかに依存して、第1委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュの全てまたは部分集合を指定してもよい。
ステップ1020で、コンテンツアイテム同期エージェント114は、新たなコンテンツアイテムをアップロードする先のターゲットブロックサーバを選択する。選択は、メタデータサーバ150から受信した、委託要求に対する応答の中の情報に基づいてもよい。特に、応答は、ひとつ以上の候補ブロックサーバの識別子と、そのような識別子のそれぞれに関連付けられた必要コンテンツアイテムブロックリストと、を含んでもよい。応答は、候補ブロックサーバがオンプレミスブロックサーバ(例えば、120)であるかまたはオフプレミスブロックサーバ130であるかなどの、候補ブロックサーバ識別子に関連付けられた他の情報を含んでもよい。他の情報はまた、ネットワークパフォーマンス情報およびブロックサーバ負荷情報を含んでもよい。ネットワークパフォーマンス情報は、候補ブロックサーバが接続される先のネットワークの現在のパフォーマンスまたはパフォーマンスの履歴の定性的または定量的評価を含んでもよい。ブロックサーバ負荷情報は、候補ブロックサーバの計算リソース(例えば、CPU、メモリ、ストレージ等)に対する現在の負荷または負荷の履歴の定性的または定量的評価を含んでもよい。コンテンツアイテム同期114−1は、種々のブロックサーバについてのネットワークパフォーマンス情報およびブロックサーバパフォーマンス情報をローカルで(例えば、ローカルストレージ112に)維持してもよい。特に、ブロックサーバのパフォーマンス情報は、過去にブロックサーバにアップロードされたコンテンツアイテムブロックのアップロード時間に基づいてもよい。例えば、コンテンツアイテム同期エージェント114−1がひとつ以上のコンテンツアイテムブロックを含むブロックサーバに格納要求を行うとき、コンテンツアイテム同期エージェント114−1は格納要求が送信された時とブロックサーバから格納要求に対する応答を受信した時との間のクロック時間を測定してもよい。これらのクロック時間に基づいて、コンテンツアイテム同期エージェント114−1は平均アップロード時間および/または平均スループット(例えば、毎秒メガビットの単位で)を算出することができる。これらの平均は、パーソナル計算デバイス110−1をブロックサーバに接続するネットワークのパフォーマンスを反映する。
以下の情報の全てまたはその下位集合または上位集合に基づいて、コンテンツアイテム同期エージェント114−1はひとつ以上の候補ブロックサーバのなかからひとつを、新たなコンテンツアイテムをアップロードする先のターゲットブロックサーバとして選択する:
候補ブロックサーバの数。例えば、ただひとつの候補ブロックサーバが利用可能である場合、その候補ブロックサーバがターゲットブロックサーバとして選択されてもよい。
新たなコンテンツアイテムのコンテンツアイテムブロックのうち、各候補ブロックサーバから欠落しているものの数。例えば、複数の候補ブロックサーバが利用可能である場合、複数の候補ブロックサーバの全てのなかからアップロードしなければならないコンテンツアイテムブロックの数が最小となる候補ブロックサーバをターゲットブロックサーバとして選択してもよい。
第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のネットワークパフォーマンス情報。
第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のサーバ負荷情報。
候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロード時間。
候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロードスループット。
ある例示的な実施の形態によると、コンテンツアイテム同期エージェント114−1は、候補ブロックサーバにアップロードする新たなコンテンツアイテムのコンテンツアイテムブロックの数と、候補ブロックサーバに関するひとつ以上のネットワークパフォーマンス測度と、に基づいて、各候補ブロックサーバについての予想アップロード時間を算出する。種々の異なるネットワークパフォーマンス測度が可能である。例えば、ネットワークパフォーマンス測度は、候補ブロックサーバについての履歴的平均コンテンツアイテムブロックアップロード時間、または候補ブロックサーバについての履歴的平均コンテンツアイテムブロックアップロードスループットであってもよい。例えば、トータルサイズにして410624バイトの百一(101)のコンテンツアイテムブロックが候補オンプレミスブロックサーバ(例えば、120)から欠落しており、トータルサイズにして205824バイトの五十一(51)のコンテンツアイテムブロックが候補オフプレミスブロックサーバ130から欠落しているとする。さらに、候補オンプレミスブロックサーバについての履歴的平均コンテンツアイテムブロックアップロードスループットが20Mbit/秒であり、候補オフプレミスブロックサーバ130についての履歴的平均コンテンツアイテムブロックアップロードスループットが3Mbit/秒であるとすると、コンテンツアイテム同期エージェント114−1は、より多くのバイトを候補オンプレミスブロックサーバにアップロードすべきではあるものの、候補オンプレミスブロックサーバをターゲットサーバとして選択してもよい。この選択がなされるのは、候補オンプレミスブロックサーバへの予想トータルアップロード時間が候補オフプレミスブロックサーバ130への予想トータルアップロード時間の三分の一(1/3)より少ないからであってもよい。
ある例示的な実施の形態によると、候補ブロックサーバに優先度を付け、コンテンツアイテム同期エージェント114−1は対応する優先度に基づいて、候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する。例えば、メタデータサーバ150により同期エージェント114−1に提供される、第1委託要求に対する応答は、各候補ブロックサーバ識別子に関連付けられた優先度を含んでもよい。優先度は、候補ブロックサーバの全てがその優先度にしたがい順序付けられるような数値であってもよい。優先度はユーザ特定的であってもよい。例えば、ウェブサイト170とやりとりすることでコンテンツアイテム名前空間を複数のブロックサーバに割り当てる際、ユーザは複数のブロックサーバに対して優先順位を指定してもよい。例えば、ユーザは所与のコンテンツアイテム名前空間について、オフプレミスブロックサーバ130よりもオンプレミスブロックサーバ(例えば、120)を好ましいとするよう指定してもよく、あるいはまた、第2オンプレミスブロックサーバよりも第1オンプレミスブロックサーバをより好ましいとしつつ、それらの両方をオフプレミスブロックサーバ130よりも好ましいとするよう指定してもよい。複数の候補ブロックサーバが選択可能である場合、最高のまたは最良の優先度に関連付けられた候補ブロックサーバがターゲットブロックサーバとして選択されてもよい。複数の候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する前に、複数の候補ブロックサーバに関連付けられた優先度をまず重み付けしてもよい。優先度の重み付けはコンテンツアイテム同期エージェント114−1に利用可能な他の情報に基づいてもよい。そのような他の情報は例えば、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、各候補ブロックサーバから欠落しているものの数、第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のネットワークパフォーマンス情報、第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のサーバ負荷情報、候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロード時間、および/または、候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロードスループットを含む。
ステップ1022で、図2に関連して上述されたステップ220と同様に、コンテンツアイテム同期エージェント114−2は新たなコンテンツアイテムの欠落コンテンツアイテムブロックをターゲットブロックサーバにアップロードする。
ステップ1024で、図2に関連して上述されたステップ222と同様に、ターゲットブロックサーバ(例えば、120や130)のブロックサービス(例えば、122や132)は欠落しているコンテンツアイテムブロックをターゲットブロックサーバのブロックストレージ(例えば、124や134)に格納する。
ステップ1026で、図2に関連して上述されたステップ224と同様に、ターゲットブロックサーバは、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン180内のターゲットブロックサーバのブロックサーバブロックリストを更新する。
ステップ1028で、コンテンツアイテム同期エージェント114は第2委託要求をメタデータサーバ150に送信する。第2委託要求は、上述のステップ1010で第1委託要求においてメタデータサーバ150に送信された情報と同じ情報を含んでもよい。加えて、第2委託要求は、上述のステップ1020で選択されたターゲットブロックサーバのブロックサーバ識別子を指定してもよい。しかしながら、コンテンツアイテム同期エージェント114−1が、第2委託要求において、選択されたターゲットブロックサーバのブロックサーバ識別子を送信しなくてもよい。
ステップ1030で、メタデータサーバ150は、上述のステップ1012で第1委託要求について行ったように、第2要求を認証してもよい。
ステップ1032で、第2委託要求が認証された前提で、メタデータサーバ150は、メタデータプレーン180内のターゲットブロックサーバのコンテンツアイテムブロックリストにしたがい、新たなコンテンツアイテムのブロックリストで特定されるコンテンツアイテムブロックのなかにターゲットブロックサーバから欠落しているものがあるか否かを判定する。このとき、第1委託要求の後、欠落していたコンテンツアイテムブロックはターゲットブロックサーバにアップロードされてしまっているので、メタデータサーバ150は、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバで欠落しているものはないと判定すべきである。メタデータサーバ150は、第2委託要求においてターゲットブロックサーバのブロックサーバ識別子が指定されている場合に、この判定を行ってもよい。ターゲットブロックサーバの識別子と、新たなコンテンツアイテムのブロックリスト中のコンテンツアイテムブロックハッシュと、を用いることで、メタデータサーバ150はメタデータプレーン180にあるターゲットブロックサーバのコンテンツアイテムブロックリストを参照し、新たなコンテンツアイテムのブロックリスト中のコンテンツアイテムハッシュのなかにターゲットブロックサーバのコンテンツアイテムブロックリストから欠落しているものがあるかを判定することができる。もしあれば、新たなコンテンツアイテムはターゲットブロックサーバにまだアップロードされていないのであるから、第2委託要求は第1委託要求と同じようにメタデータサーバ150によって扱われ、プロセス1000はステップ1014に戻り、そこから続いてもよい。この場合、ステップ1016でのターゲットブロックサーバにおいて欠落しているコンテンツアイテムブロックの決定は、再度行われる必要はない。この決定は既になされているからである。しかしながら、ステップ1016での欠落コンテンツアイテムブロックの決定は、もしあれば他の候補ブロックサーバについてなされてもよい。一方、欠落しているコンテンツアイテムブロックハッシュがない場合、新たなコンテンツアイテムはターゲットブロックサーバに完全にアップロードされたのであるから、プロセス1000はステップ1034へと続き、オンラインコンテンツ管理サービスに新たなコンテンツアイテムを委託する。
一方、第2委託要求においてターゲットブロックサーバのブロックサーバ識別子が指定されていない場合、ステップ1032において、メタデータサーバ150は、第2委託要求において指定される所属コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補ブロックサーバのうち、新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつあるか否かを判定する。この判定は、所属コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補ブロックサーバを決定するステップ1032のサブステップとして上述の1014のようなステップを行うことと、新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつあるか否かを判定するステップ1032のサブステップとして上述の1016のようなステップを行うことと、を含んでもよい。新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつある場合、新たなコンテンツアイテムは少なくともひとつの候補ブロックサーバに完全にアップロードされたのであるから、アップロードプロセス1000はステップ1034へと続き、オンラインコンテンツ管理サービスに新たなコンテンツアイテムを委託する。一方、新たなコンテンツアイテムのコンテンツアイテムブロックの全てを保持する候補ブロックサーバがない場合、新たなコンテンツアイテムは候補ブロックサーバにまだアップロードされていないのであるから、第2委託要求は第1委託要求と同じようにメタデータサーバ150によって扱われ、プロセス1000はステップ1014に戻り、そこから続き、すでになされた決定はスキップする。
4.1.1 コンテンツアイテムサーバジャーナル
ステップ1034で、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバまたは少なくともひとつの候補ブロックサーバから欠落しているものはないと判定した後、メタデータサーバ150は、メタデータプレーン180内のコンテンツアイテムサーバジャーナルまたは単に「サーバジャーナル」に新たなジャーナルエントリを追加する。コンテンツアイテムサーバジャーナルを用いて、コンテンツアイテム名前空間ごとベースで、オンラインコンテンツ管理サービスに委託されたコンテンツアイテムのバージョンを追跡できる。
いったん図11を参照すると、それはサーバジャーナル1110のブロック図である。サーバジャーナル1110はメタデータプレーン180に保持されてもよい。サーバジャーナル1110は複数のジャーナルエントリ1112を含む。新たなコンテンツアイテムがブロックサーバに完全にアップロードされると、サーバジャーナル1110に新たなジャーナルエントリ1112が追加(例えば、追記)される。例えば、メタデータサーバ150は、コンテンツアイテム同期エージェント114から第2委託要求を受信することに応じて新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、サーバジャーナル1110に、新たなジャーナルエントリ1112を追加してもよい。
サーバジャーナル1110の各ジャーナルエントリ1112は、コンテンツアイテム名前空間識別子1114と、相対コンテンツアイテムパス1115と、コンテンツアイテムブロックリスト1116と、サーバジャーナルカーソル値1117と、を含んでもよい。コンテンツアイテム名前空間識別子1114は、新たなコンテンツアイテムが所属する先のコンテンツアイテム名前空間(すなわち、所属コンテンツアイテム名前空間)を特定する。パス1115は、新たなコンテンツアイテムの、新たなコンテンツアイテムが所属する先のコンテンツアイテム名前空間のマウントポイントに対する、相対ファイルシステムパスを指定する。コンテンツアイテムブロックリスト1116は、新たなコンテンツアイテムを構成するひとつ以上のコンテンツアイテムブロックを特定するひとつ以上のコンテンツアイテムブロックハッシュを含む。サーバジャーナルカーソル値1117はコンテンツアイテム名前空間特定的である。特に、メタデータサーバ150は、オンラインコンテンツ管理サービスの管理下にある一意のコンテンツアイテム名前空間のそれぞれについて、別個のサーバジャーナルカーソルを維持してもよい。コンテンツアイテム名前空間に対するサーバジャーナルカーソルは、コンテンツアイテム名前空間の新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されたときに増やされ(例えば、インクリメントされ)る。例えば、コンテンツアイテム名前空間に対するサーバジャーナルカーソルは単調増加する値であってもよい。
例えば、コンテンツアイテム名前空間「DEF456」に対する直近で追加されたジャーナルエントリ1112のサーバジャーナルカーソル値1117が「17」である場合、ステップ1034で追加される、同じコンテンツアイテム名前空間に属する新たなコンテンツアイテムの新たなサーバジャーナルエントリ1112はサーバジャーナルカーソル値として「18」を有するであろう。異なるコンテンツアイテム名前空間に属する新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されるとき、異なるコンテンツアイテム名前空間のサーバジャーナルカーソルは互いに独立にインクリメントされてもよい。
サーバジャーナル1110は、複数のコンテンツアイテム名前空間のサーバジャーナルを保持してもよい。特に、同じコンテンツアイテム名前空間識別子1114を有するサーバジャーナル1110内のエントリ1112の全てはそのコンテンツアイテム名前空間のサーバジャーナルと考えられてもよい。ある代替的な実施の形態では、メタデータプレーン180内に、管理下の各コンテンツアイテム名前空間について、物理的に別個のサーバジャーナルが保持されてもよい。メタデータプレーン180の複数のサーバ計算デバイスに亘ってサーバジャーナル1110をパーティション化または分割することを含む他のストレージ構成も可能である。この場合、コンテンツアイテム名前空間識別子1114はパーティション化のキーまたは分割のキーとして用いられてもよい。
ステップ1036で、新たなジャーナルエントリ1112がサーバジャーナル1110に追加された後、メタデータサーバ150はコンテンツアイテム同期エージェント114−1からの第2委託要求に応答する。特に、メタデータサーバ150は、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したことをコンテンツアイテム同期エージェント114−1に対して示す応答を送信する。加えて、その応答は、追加された新たなサーバジャーナルエントリ1112からの所属コンテンツアイテム名前空間に対するジャーナルカーソル値1117を含んでもよい。
ステップ1038で、コンテンツアイテム同期エージェント114−1は、将来の参照のため、サーバジャーナルカーソル値1117をローカルに(例えば、ローカルストレージ112に)格納してもよい。ローカルで格納する際、コンテンツアイテム同期114−1は、サーバジャーナルカーソル値1117を、サーバジャーナルカーソル値1117が関係する所属コンテンツアイテム名前空間識別子に関連付けてもよい。加えて、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したので、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを更新してもよく、その更新はアップロードプロセス200のステップ236に関して上述されたように、新たなコンテンツアイテムの欠落コンテンツアイテムブロックがどのターゲットブロックサーバ(例えば、120や130)にアップロードされたかに依存する。
4.1.2 例示的なアップロードインタラクション
図12は、本発明のある例示的な実施の形態に係る、図10のアップロードプロセス1000が行われターゲットブロックサーバに新たなコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス110−1とメタデータサーバ150とオフプレミスブロックサーバ130とメタデータプレーン180との間の種々のインタラクションを示すインタラクション図1200を提供する。インタラクション図1200は、ターゲットブロックサーバがオフプレミスブロックサーバ130であるときのアップロードプロセス1000を表す。図13は、本発明のいくつかの例示的な実施の形態に係る、ターゲットブロックサーバがオンプレミスブロックサーバ120であるときの、アップロードプロセス1000を表すインタラクション図1300である。
ステップ1002で、ユーザ102−1はパーソナル計算デバイス110−1でコンテンツアイテムを生成または変更する。ステップ1004で、パーソナル計算デバイスのコンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムを検出する。ステップ1006で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ1008で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ1010で、コンテンツアイテム同期エージェント114−1は第1委託要求をメタデータサーバ150に送信する。
ステップ1012で、メタデータサーバ150は第1委託要求を認証する。ステップ1014で、メタデータサーバ150は、第1委託要求で指定される所属コンテンツアイテム名前空間のひとつ以上の候補ブロックサーバを決定する。ステップ1016で、メタデータサーバ150はステップ1014で決定された候補ブロックサーバのそれぞれで欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ1018で、メタデータサーバ150は候補ブロックサーバのそれぞれで欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第1委託要求に応答する。
ステップ1020で、コンテンツアイテム同期エージェント114−1は、上述されたものなどの種々のファクタに基づいて、候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する。ステップ1022で、コンテンツアイテム同期エージェント114−1は欠落しているコンテンツアイテムブロックをターゲットブロックサーバにアップロードする。
ステップ1024で、ターゲットブロックサーバがオフプレミスブロックサーバ130である場合、オフプレミスブロックサーバ130はアップロードされたコンテンツアイテムブロックをブロックストレージ134に格納し、ステップ1026でオフプレミスブロックサーバ130は、メタデータプレーン180にあるオフプレミスブロックサーバ130のためのブロックリストを、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。
インタラクション図1200はターゲットブロックサーバがオフプレミスブロックサーバ130であるときのアップロードプロセス1000を表すが、ターゲットブロックサーバがオンプレミスブロックサーバ120である場合には、図13のインタラクション図1300に示されるように、ステップ1024でオンプレミスブロックサーバ120はアップロードされたコンテンツアイテムブロックをブロックストレージ124に格納し、ステップ1026でメタデータサーバ150にひとつ以上のコンテンツアイテムブロック有り要求を送信する。また、ステップ1026で、ターゲットブロックサーバがオンプレミスブロックサーバ120である場合、メタデータサーバ150は、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン180にあるオンプレミスブロックサーバ120のためのブロックリストを更新する。
ステップ1028で、コンテンツアイテム同期エージェント114−1は第2委託要求を送信する。第2委託要求は、ステップ1020で選択されたターゲットブロックサーバの識別子を指定してもよい。
ステップ1030で、メタデータサーバ150は第2委託要求を認証する。ステップ1032で、メタデータサーバ150は、ターゲットブロックサーバが第2委託要求において指定されている場合、そのターゲットブロックサーバで欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ターゲットブロックサーバが第2委託要求において指定されていない場合、メタデータサーバ150は、ステップ104にあるように所属コンテンツアイテム名前空間についてのひとつ以上の候補ブロックサーバを決定し、候補ブロックサーバのなかに、新たなコンテンツアイテムのコンテンツアイテムブロックの欠落が全くないものが少なくともひとつあるか確かめる。ステップ1034で、ターゲットブロックサーバまたは少なくともひとつの候補ブロックサーバから新たなコンテンツアイテムのコンテンツアイテムブロックが欠落していないと確認されると、メタデータサーバ150は新たなコンテンツアイテムのサーバジャーナル1110に新たなサーバジャーナルエントリ1112を追加する。ステップ1036で、メタデータサーバ150は委託が成功したことの確認で第2委託要求に応答する。その応答は、所属コンテンツアイテム名前空間に専用のサーバジャーナルカーソル値1117を含んでもよい。
ステップ1038で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがターゲットブロックサーバに委託されたことを示すよう更新する。
4.2 ダウンロードプロセス
図14を参照すると、本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセス1400のフローチャートである。以下にステップを図14に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
ステップ1402で、サーバジャーナル1110に追加された新たなサーバジャーナルエントリ1112が検出される。そのような検出は、例えばメタデータサーバ150や通知サーバ140を含むオンラインコンテンツ管理サービスの種々のコンポーネントによって行われてもよい。例えば、サーバジャーナル1110に新たなサーバジャーナルエントリ1112が追加されたとき、メタデータプレーン180によってネットワークメッセージが生成され、バックエンドデータバスによりメタデータサーバ150および/または通知サーバ140へ運ばれてもよい。新たなサーバジャーナルエントリ1112の追加は、所属コンテンツアイテム名前空間に属する新たなコンテンツアイテムがオンラインコンテンツ管理サービスに最近委託されたことを表す。新たなサーバジャーナルエントリ1112は、新たなサーバジャーナルエントリ1112のコンテンツアイテム名前空間識別子1114を介して、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を特定する。
ステップ1404で、通知サーバ140は、図7に関連して上述されたダウンロードプロセス700のステップ704にあるように、所属コンテンツアイテム名前空間が設けられているパーソナル計算デバイス110−2に通知を行う。
ステップ1406で、通知サーバ140からのピンメッセージを受信することに応じて、パーソナル計算デバイス110−2のコンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2に設けられたコンテンツアイテム名前空間に対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を決定する。同期プロトコルのこの変形例では、クライアントジャーナルカーソル値はコンテンツアイテム名前空間特定的であってもよい。したがって、コンテンツアイテム名前空間に対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、そのコンテンツアイテム名前空間およびオンラインコンテンツ管理サービスに委託されたコンテンツアイテム変更に対してパーソナル計算デバイス110−2がどの程度最新かを反映する。パーソナル計算デバイス110−2は、パーソナル計算デバイス110−2に設けられた各コンテンツアイテム名前空間の現在のクライアントジャーナルカーソル値をローカルに保持してもよい。コンテンツアイテム同期エージェント114−2は、設置コンテンツアイテム名前空間に対する現在のクライアントジャーナルカーソル値を、ブロックサーバからの新たなコンテンツアイテムのダウンロードに成功した後に、更新してもよい。
ステップ1408で、コンテンツアイテム同期エージェント114−2は「リスト」要求をメタデータサーバ150に送信する。ユーザアカウント識別子312およびデバイス識別子812に加えて、リスト要求は、パーソナル計算デバイス110−2に設けられたひとつ以上のコンテンツアイテム名前空間のそれぞれについて、コンテンツアイテム名前空間に対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を特定してもよい。パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値はコンテンツアイテム名前空間に特有のものであるから、リスト要求は、現在のクライアントジャーナルカーソル値が関連する先のコンテンツアイテム名前空間のコンテンツアイテム名前空間識別子を特定してもよい。したがって、リスト要求は、パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値と、それらの現在のクライアントジャーナルカーソル値のそれぞれについて、コンテンツアイテム名前空間識別子と、のうちのひとつ以上を特定してもよい。
ステップ1410で、メタデータサーバ150はリスト要求を受信し、リスト要求内の情報に基づいて、サーバジャーナル1110においてより新しいサーバジャーナルエントリ1112を特定する。より新しいサーバジャーナルエントリ1112は、エントリのサーバジャーナルカーソル値1117がパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値よりも数値的に大きく、かつ、エントリ1112のコンテンツアイテム名前空間識別子1114がリスト要求内のパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値に関連付けられたコンテンツアイテム名前空間識別子とマッチするようなものであってもよい。メタデータサーバ150は、リスト要求内で指定されたパーソナル計算デバイス110−2のクライアントジャーナルカーソル値のそれぞれについて、ひとつ以上のより新しいサーバジャーナルエントリ1112を決定してもよい。これは、所与のクライアントジャーナルカーソル値について、サーバジャーナル1110に、より新しいサーバジャーナルエントリ1112が存在することを前提とする。
ステップ1412で、メタデータサーバ150は、リスト要求で指定される各コンテンツアイテム名前空間について、そのコンテンツアイテム名前空間が割り当てられる先のひとつ以上の候補ブロックサーバを決定する。この決定は、指定されたコンテンツアイテム名前空間のそれぞれについて、メタデータプレーン180内に保持される名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。コンテンツアイテム名前空間のそれぞれは、オフプレミスブロックサーバ130にのみ、ひとつのオンプレミスブロックサーバ(例えば、120)にのみ、複数のオンプレミスブロックサーバに、またはひとつ以上のオンプレミスブロックサーバおよびオフプレミスブロックサーバ130に、割り当てられてもよい。
ステップ1414で、メタデータサーバ150はリスト要求への応答を返す。応答は、ステップ1410で特定されたより新しいサーバジャーナルエントリ1112のそれぞれからの情報と、ステップ1412で決定された名前空間対ブロックサーバ割り当てについての情報と、を含んでもよい。特に、応答は、より新しいサーバジャーナルエントリ1112のそれぞれについての以下の情報の全て、下位集合または上位集合を含んでもよい。
より新しいサーバジャーナルエントリ1112のコンテンツアイテム名前空間識別子1114。
より新しいサーバジャーナルエントリ1112のコンテンツアイテム相対パス1115。
より新しいサーバジャーナルエントリ1112のコンテンツアイテムブロックリスト1116。
より新しいサーバジャーナルエントリ1112のサーバジャーナルカーソル値1117。
ステップ1412で特定される複数のより新しいサーバジャーナルエントリ1112が同じコンテンツアイテムに関する場合、その複数のより新しいサーバジャーナルエントリ1112のうちの最新のもののみがリスト要求に対する応答で返されるであろう。複数のより新しいサーバジャーナルエントリ1112は、それらがコンテンツアイテム名前空間識別子1114フィールドおよび相対パス1115フィールドについて同じ値を有するが、異なるサーバジャーナルカーソル値1117を有する場合、同じコンテンツアイテムに関してもよい。例えば、直近の同期動作以来、同じコンテンツアイテムに二つの更新がなされたとしよう。この場合、複数のより新しいサーバジャーナルエントリ1112のなかで最も高い(最も新しい)サーバジャーナルカーソル値1117を伴うより新しいサーバジャーナルエントリ1112が、複数のより新しいサーバジャーナルエントリ1112のうちの他のものに取って代わる。最も高い(最も新しい)サーバジャーナルカーソル値1117を伴うそのより新しいサーバジャーナルエントリ1112はリスト要求に対する応答内で返され、他のものは返されない。
加えて、リスト要求に対する応答は、リスト要求で指定される各コンテンツアイテム名前空間について、コンテンツアイテム名前空間が現在割り当てられている先のひとつ以上のブロックサーバのブロックサーバ識別子を含んでもよい。名前空間対ブロックサーバ割り当ては、そのような割り当てをなす適切な権限を有するユーザによりウェブサイト170を通じて提供されるユーザ入力に基づいてもよい。権限はコンテンツアイテム名前空間に特有であってもよい。例えば、ユーザは、ブロックサーバに、ユーザのアカウントレコード310の認証済コンテンツアイテム名前空間314のみを割り当てることができてもよい。
ある例示的な実施の形態によると、各より新しいサーバジャーナルエントリ1112についてリスト要求に対する応答内で返される情報はひとつ以上の候補ブロックサーバを特定し、より新しいサーバジャーナルエントリ1112のコンテンツアイテムブロックリスト1116により特定される全てのコンテンツアイテムブロックがそのひとつ以上の候補ブロックサーバからダウンロード可能である。この決定をなすため、メタデータサーバ150は、より新しいサーバジャーナルエントリ1112で特定されるコンテンツアイテム名前空間1114に割り当てられた各候補ブロックサーバについて、より新しいサーバジャーナルエントリ1112のコンテンツアイテムブロックリスト1116のコンテンツアイテムブロックハッシュの全てがメタデータプレーン180に保持されている候補ブロックサーバのブロックリストにあるかを検証してもよい。もしそうなら、より新しいサーバジャーナルエントリ1112のコンテンツアイテムブロックリスト1116により特定されるコンテンツアイテムブロックの全てをその候補ブロックサーバからダウンロードすることができる。
ステップ1416で、コンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2のローカルストレージ112−2から欠落しているコンテンツアイテムブロックを決定する。この決定は、ステップ1414でメタデータサーバ150からリスト要求に対する応答で受信したより新しいエントリまたはより新しいエントリ1112のコンテンツアイテムブロックリスト1116に基づいてもよい。この決定はまた、コンテンツアイテムクライアントジャーナルまたは単に「クライアントジャーナル」に基づいてもよい。このクライアントジャーナルは、パーソナル計算デバイス110−2のローカルストレージ112−2に保持されるコンテンツアイテムブロックを追跡するために、コンテンツアイテム同期エージェント114−2がローカルで(例えば、ローカルストレージ112−2に)維持するものである。特に、クライアントジャーナルは、ローカルストレージ112−2に保持される設置コンテンツアイテム名前空間に属する各コンテンツアイテムの現在のバージョンのそれぞれに対するコンテンツアイテムブロックリストを保持してもよい。クライアントジャーナル内の各ブロックリストは、クライアントジャーナルにおいて、所属コンテンツアイテム名前空間の識別子およびコンテンツアイテムへの相対パスに関連付けられてもよい。リスト要求に応じてメタデータサーバ150から受信した所与のより新しいエントリ1112について、コンテンツアイテム同期エージェント114−2は、より新しいエントリ1112のブロックリスト1116と、より新しいエントリ1112のコンテンツアイテム名前空間識別子1114とより新しいエントリ1112のコンテンツアイテム相対パス1115とにクライアントジャーナル内で関連付けられたクライアントジャーナルのブロックリストと、を比較してもよい。より新しいエントリ1112のブロックリスト1116内のコンテンツアイテムブロックハッシュのうち、クライアントジャーナル内の対応するブロックリストに無いものは、パーソナル計算デバイス110−2のローカルストレージ112−2内に保持される対応するコンテンツアイテムの現在のバージョンから欠落しているコンテンツアイテムブロックに対応する。
ステップ1418で、コンテンツアイテム同期エージェント114−2はステップ1416で特定された欠落しているコンテンツアイテムブロックをダウンロードする。欠落しているコンテンツアイテムブロックは、リスト要求への応答内で示されるように、異なるブロックサーバに、または全てが同じブロックサーバに、格納されてもよい。加えて、所与のコンテンツアイテムについて欠落しているコンテンツアイテムブロックは複数の候補ブロックサーバにおいて利用可能であってもよい。この場合、コンテンツアイテム同期エージェント114−2は、候補ブロックサーバのうちのひとつを、その欠落しているブロックのダウンロード元として選択してもよい。この選択は、アップロード目的でのターゲットブロックサーバの選択に関して上述した基準と同様の基準に基づいてもよい。しかしながら、ネットワークパフォーマンス基準は、過去のブロックアップロード時間の代わりに過去のブロックダウンロード時間に基づいてもよい。
ひとつ以上の欠落コンテンツアイテムブロックをブロックサーバからダウンロードするために、コンテンツアイテム同期エージェント114−2はブロックサーバに「取得」要求を送信し、取得要求内で欠落コンテンツアイテムブロックのコンテンツアイテムブロックハッシュを特定する。ステップ1418で、コンテンツアイテム同期エージェント114−2は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、コンテンツアイテム同期エージェント114−2からの取得要求を受信する各ブロックサーバは、取得要求に対する応答を返し、該応答は、取得要求において特定されたコンテンツアイテムブロックハッシュに対応するコンテンツアイテムブロックを含む。ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、既知のrsyncアルゴリズムにより用いられるものなどのデルタ符号化スキームにしたがい行われてもよい。この場合、ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、ブロックサーバに保持されるコンテンツアイテムブロックとパーソナル計算デバイス110−2に既に保持されているコンテンツアイテムブロックとの間のデルタのみをダウンロードすることを含んでもよい。したがって、コンテンツアイテムブロックをブロックサーバからダウンロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバからダウンロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとの間のデルタだけをブロックサーバからダウンロードすることと、の両方を包含する。
ステップ1420で、コンテンツアイテム同期エージェント114−2は、ローカルストレージ112−2のファイルシステムに保持されるひとつ以上のコンテンツアイテムとして、またはその一部として、ダウンロードされたコンテンツアイテムブロックを格納する。この格納は、ファイルシステムに新たなファイルを生成すること、および/またはファイルシステムの既存のファイルをダウンロードされたコンテンツアイテムブロックに基づき更新すること、を含んでもよい。例えば、リスト要求に応じて受信されたより新しいサーバジャーナルエントリ1112に対応するコンテンツアイテムについての、ブロックサーバからダウンロードされた所与のコンテンツアイテムブロックについて、コンテンツアイテム同期エージェント114−2は、より新しいエントリ1112で特定されるコンテンツアイテム名前空間1114のパーソナル計算デバイス110−2でのコンテンツアイテムマウントポイントフォルダ、および、より新しいエントリ1112内の相対パス1115に基づいて、所与のコンテンツアイテムブロックで更新するか生成するように、ファイルシステム内のファイルを決定することができる。
ある例示的な実施の形態では、所与のコンテンツアイテム名前空間のひとつ以上のより新しいエントリ1112に基づいてステップ1420で生成または更新されたコンテンツアイテムの全ては、より新しいエントリ1112のジャーナルカーソル値1117のシーケンスまたは順番で生成または更新される。
ステップ1422で、コンテンツアイテム同期エージェント114−2は、ステップ1418および1420においてダウンロードおよび格納に成功したコンテンツアイテムブロックに基づくローカルストレージ112−2内での生成または更新に成功したコンテンツアイテムについて、パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を更新する。特に、リスト要求に応じて受信された対応するより新しいエントリ1112に基づいてローカルストレージ112−2において生成または更新された所与のコンテンツアイテムについて、その対応するより新しいエントリ1112で特定されるコンテンツアイテム名前空間1114についてのパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、それがその対応するより新しいエントリ1112のサーバジャーナルカーソル値1117と一致するように更新される。上述の通り、所与のコンテンツアイテム名前空間のひとつ以上のより新しいエントリ1112に基づいてステップ1420で生成または更新されたコンテンツアイテムは、より新しいエントリ1112のジャーナルカーソル値1117のシーケンスまたは順番で生成または更新されてもよい。同様に、所与のコンテンツアイテム名前空間についてのパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、ステップ1422で、所与のコンテンツアイテム名前空間についてのひとつ以上のより新しいエントリ1112のジャーナルカーソル値1417のシーケンスまたは順番で、インクリメントされてもよい。
4.2.1 例示的なダウンロードインタラクション
図15を参照すると、本発明のある例示的な実施の形態に係る、図14のプロセス1400が行われオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130からコンテンツアイテムをダウンロードするときの、パーソナル計算デバイス110−2と通知サーバ140とメタデータサーバ150とブロックサーバ120または130とメタデータプレーン180との間の種々のインタラクションを示すインタラクション図1500である。
ステップ1404にあるように、通知サーバ140はパーソナル計算デバイス110−2のコンテンツアイテム同期エージェント114−2にピンメッセージを送信する。
ステップ1406にあるように、コンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2に設けられているひとつ以上のコンテンツアイテム名前空間の現在のクライアントジャーナルカーソル値を決定する。そのような現在のクライアントジャーナルカーソル値のそれぞれは、オンラインコンテンツ管理サービスに委託されたコンテンツアイテム名前空間に対する変更に関してパーソナル計算デバイス110−2がどの程度最新かを反映する。ステップ1408にあるように、コンテンツアイテム同期エージェント114−2はリスト要求をメタデータサーバ150に送信する。
ステップ1410にあるように、メタデータサーバ150は、リスト要求で指定される現在のクライアントジャーナルカーソル値のそれぞれについて、ジャーナル1110内により新しいジャーナルエントリ1112があるか決定する。ステップ1412にあるように、メタデータサーバ150は、より新しいジャーナルエントリ1112のコンテンツアイテムブロックのダウンロード元となりうるひとつ以上の候補ブロックサーバを決定する。ステップ1414にあるように、メタデータサーバ150は、より新しいジャーナルエントリ1112のリストの関連情報をデバイス110−2に送信する。
ステップ1416にあるように、コンテンツアイテム同期エージェント114−2は、より新しいジャーナルエントリ1112で指定されるコンテンツアイテムブロックのなかに、デバイス110−2にまだ格納されていないものがあるか判定する。この判定は、より新しいジャーナルエントリ1112のコンテンツアイテムブロックリスト1116と、パーソナル計算デバイス110−2に既に格納されたコンテンツアイテムブロックの既知のコンテンツアイテムブロックハッシュのコンテンツブロックリストと、を比較することに基づいてもよい。ステップ1418にあるように、コンテンツアイテム同期エージェント114−2は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、パーソナル計算デバイス110−2においてより新しいジャーナルエントリ1112についてのひとつ以上のコンテンツアイテムブロックが欠落している場合、そのより新しいジャーナルエントリ412のそれぞれについて、コンテンツアイテム同期エージェント114−2は、欠落ブロックが利用可能であるブロックサーバからの欠落コンテンツアイテムブロックのダウンロードを試行する。ステップ1420にあるように、コンテンツアイテム同期エージェント114−2は、ダウンロードされたコンテンツアイテムブロックに基づいて、パーソナル計算デバイス110−2のローカルファイルシステムにおいてひとつ以上のコンテンツアイテムを生成または更新する。ステップ1422にあるように、コンテンツアイテム同期エージェント114−2は、より新しいジャーナルエントリ1112の処理が成功したとき、現在のクライアントジャーナルカーソル値を更新する。
5.0 ストリーミングダウンロード最適化
上述の例示的な同期プロトコル動作では、新たなコンテンツアイテムがターゲットブロックサーバに完全にアップロードされた後、パーソナル計算デバイス110−2は通知サーバ140によってピンメッセージを介して新たなコンテンツアイテムについての通知を受ける。その結果、パーソナル計算デバイス110−2は、新たなコンテンツアイテムの全てのコンテンツアイテムブロックがターゲットブロックサーバにアップロードされたかそうでなければターゲットブロックサーバで利用可能とならないと、ターゲットブロックサーバからの新たなコンテンツアイテムの欠落ブロックのダウンロードを開始しない。
ある例示的な実施の形態によると、パーソナル計算デバイス110−2は、新たなコンテンツアイテムがターゲットブロックサーバに完全にアップロードされる前に、ターゲットブロックサーバからの新たなコンテンツアイテムの欠落ブロックのダウンロードを開始することができる。このストリーミングダウンロード最適化を促進するために、同期プロトコルに対するある最適化が実装される。これは、図2および7と第1の例示的な同期プロトコル動作と図10および14と第2の例示的な同期プロトコル動作とに関して説明される。
5.1 第1の例示的同期プロトコル
変更された同期プロトコルにおいて、ステップ202,204,206,208,210,212,および214は、第1の例示的な同期プロトコル動作に関して上述されたように進んでもよい。しかしながら、ストリーミングダウンロード最適化によると、メタデータサーバ150はメタデータプレーン180において委託前サーバジャーナルを維持する。メタデータサーバ150は、コンテンツアイテム同期エージェントからの「失敗した」委託要求の後、委託前サーバジャーナルにエントリを追加してもよい。「失敗した」委託要求は、新たなコンテンツアイテムの少なくともひとつのコンテンツアイテムブロックがターゲットブロックサーバから欠落しているようなものであってもよい。特に、変更されたアップロードプロセス200のステップ216で、新たなコンテンツアイテムのひとつ以上のコンテンツアイテムブロックがターゲットブロックサーバから欠落しているとメタデータサーバ150が判定した後、メタデータサーバ150は委託前サーバジャーナルに新たなエントリを追加してもよい。新たな委託前サーバジャーナルエントリは、ブロックサーバ識別子と、コンテンツアイテム名前空間識別子と、相対パスと、コンテンツアイテムブロックリストと、を含んでもよい。新たな委託前サーバジャーナルエントリはサーバジャーナルカーソル値を有する必要はないが、有してもよい。委託前サーバジャーナルエントリのブロックサーバ識別子は、新たなコンテンツアイテムについてのターゲットブロックサーバを特定し、それはオンプレミスブロックサーバ(例えば、120)やオフプレミスブロックサーバ130であってもよい。新たな委託前サーバジャーナルエントリのコンテンツアイテム名前空間識別子は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を特定する。相対パスは、所属コンテンツアイテム名前空間のマウントポイントに対する、新たなコンテンツアイテムへのパスを特定する。コンテンツアイテムブロックリストは、新たなコンテンツアイテムのひとつ以上のコンテンツアイテムブロックに対応するひとつ以上のコンテンツアイテムブロックハッシュを含む。
変更されたアップロードプロセス200のステップ230で、新たなコンテンツアイテムのコンテンツアイテムブロックのうちターゲットブロックサーバから欠落しているものはないと判定した後、メタデータサーバ150は、委託前サーバジャーナルから委託前サーバジャーナルエントリを除去してもよい。ある例示的な実施の形態によると、委託前サーバジャーナルに委託前サーバジャーナルエントリを追加してからある期間が経過した後、委託前サーバジャーナルエントリを委託前サーバジャーナルから自動的に除去(すなわち、期限切れ)する。変更されたアップロードプロセス200が失敗し第2委託要求がなされることがないような場合に備えて、委託前サーバジャーナルエントリは自動的に失効するよう設定される。新たなコンテンツアイテムについて委託前サーバジャーナルに委託前サーバジャーナルエントリが存在することは、ストリーミングダウンロード最適化のために新たなコンテンツアイテムが利用可能であることのシグナルとして作用する。変更されたアップロードプロセス200の残りのステップは、第1の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
ある例によると、委託前サーバジャーナルはメタデータプレーン180の揮発性メモリのみに維持される。委託前サーバジャーナルのエントリが揮発性メモリから消去され、退避されまたは期限切れとなったとしても、同期プロトコルは依然としてストリーミングダウンロード最適化なしで適切に動作しうるからである。例えば、委託前サーバジャーナルはメムキャッシュ(memcache)などの分散メモリキャッシングシステムに維持されてもよい。
変更されたダウンロードプロセス700のステップ702で、新たなコンテンツアイテムの新たな委託前サーバジャーナルエントリが委託前サーバジャーナルに追加されたことが検出される。
変更されたダウンロードプロセス700のステップ704で、新たな委託前サーバジャーナルエントリの検出に応じて、通知サーバ140は、所属コンテンツアイテム名前空間が設けられている先のパーソナル計算デバイス110−2にピンメッセージを送信する。
変更されたアップロードプロセス700のステップ706および708は、第1の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
変更されたダウンロードプロセス700のステップ710で、メタデータサーバ150はリスト要求を処理する際、上述のようにサーバジャーナル410に新たなサーバジャーナルエントリ412があるかを判定することに加えて、委託前サーバジャーナルに関連する委託前サーバジャーナルエントリがあるかを判定してもよい。特に、リスト要求内の現在のクライアントジャーナルカーソル値に関連付けられたコンテンツアイテム名前空間とブロックサーバとの組のそれぞれについて、メタデータサーバ150は、委託前サーバジャーナルにおいて、マッチするコンテンツアイテム名前空間識別子とブロックサーバ識別子とを有するひとつ以上の委託前サーバジャーナルエントリを決定してもよい。そのような委託前サーバジャーナルエントリのそれぞれの情報は、変更されたダウンロードプロセス700のステップ712で、リスト要求に対する応答内で返されてもよい。リスト要求応答内で返される委託前サーバジャーナルエントリは、それとリスト要求応答内で返されるより新しいサーバジャーナルエントリ412とを区別するために、そのようなものとして特定されてもよい。例えば、応答内で返される委託前サーバジャーナルエントリはジャーナルカーソル値に関連付けられない一方、応答内で返されるより新しいサーバジャーナルエントリ412はより新しいサーバジャーナルエントリ412のサーバジャーナルカーソル値417に関連付けられてもよい。
変更されたダウンロードプロセス700のステップ714で、第1の同期プロトコル動作に関連して上述したように、コンテンツアイテム同期エージェント114−2は、より新しいサーバジャーナルエントリ412のコンテンツアイテムブロックリスト416によって特定されるコンテンツアイテムブロックであってパーソナル計算デバイス110−2のローカルストレージ112−2から欠落しているコンテンツアイテムブロックを決定する。加えて、コンテンツアイテム同期エージェント114−2は、コンテンツアイテムブロックのプリフェッチキャッシュをローカルストレージ112−2で維持してもよい。プリフェッチキャッシュは、ストリーミングダウンロード最適化の一部としてブロックサーバからダウンロードされたコンテンツアイテムブロックを保持するよう設計されたローカルストレージ112−2のエリア(例えば、特定のファイルシステムフォルダ)であってもよい。特に、変更されたダウンロードプロセス700のステップ712でコンテンツアイテム同期エージェント114−2によって受信された委託前サーバジャーナルエントリについて、コンテンツアイテム同期エージェント114−2は、変更されたダウンロードプロセス700のステップ714の一部として、委託前サーバジャーナルエントリ内の対応するコンテンツアイテムブロックハッシュによって特定される新たなコンテンツアイテムのコンテンツアイテムブロックのなかにパーソナル計算デバイス110−2で欠落しているものがあるかを判定してもよい。変更されたダウンロードプロセス700のステップ716の一部で、コンテンツアイテム同期エージェント114−2は、委託前サーバジャーナルエントリで特定されたターゲットブロックサーバから、パーソナル計算デバイス110−2へと、そのような欠落コンテンツアイテムブロックをダウンロードし、ローカルストレージ112−2のプリフェッチキャッシュエリアに格納してもよい。
変更されたダウンロードプロセス700のステップ712で受信された委託前サーバジャーナルエントリに対応する所与の新たなコンテンツアイテムについて、パーソナル計算デバイス(例えば、110−2)のコンテンツアイテム同期エージェント(例えば、114−2)が、変更されたダウンロードプロセス700のステップ716でターゲットブロックサーバから新たなコンテンツアイテムのコンテンツアイテムブロックをダウンロードしている間に、別のパーソナル計算デバイス(例えば、110−1)の別のコンテンツアイテム同期エージェント(例えば、114−1)が変更されたアップロードプロセス200のステップ220で新たなコンテンツアイテムの異なるコンテンツアイテムブロックをターゲットブロックサーバにアップロードしていてもよい。例えば、新たなコンテンツアイテムがコンテンツアイテムブロックハッシュ「A」、「B」および「C」を伴う三つのコンテンツアイテムブロックからなるとする。ストリーミングダウンロード最適化の一部として、コンテンツアイテム同期エージェント114−2は、コンテンツアイテム同期エージェント114−1がコンテンツアイテムブロック「B」のターゲットブロックサーバへのアップロードを始める(または終わる)かコンテンツアイテムブロック「C」のターゲットブロックサーバへのアップロードを始める(または終わる)前に、ターゲットブロックサーバからのコンテンツアイテムブロック「A」のダウンロードを開始してもよい。
変更されたダウンロードプロセス700のステップ712で受信されたより新しいサーバジャーナルエントリ412に対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、第1の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス700のステップ718および720がそのより新しいコンテンツアイテムについて実行されてもよい。
変更されたダウンロードプロセス700のステップ712で受信された委託前サーバジャーナルエントリに対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、変更されたダウンロードプロセス700のステップ718および720は、新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託された後に変更されたダウンロードプロセス700のステップ702にあるように別のピンメッセージをコンテンツアイテム同期114−2が受信するまで、その新しいコンテンツアイテムについて延期されてもよい。この場合、コンテンツアイテム同期エージェント114−2は、ピンメッセージを受け取った後、変更されたダウンロードプロセス700のステップ708で実行されるリスト要求に応じて、変更されたダウンロードプロセス700のステップ712において、いまや委託済みのコンテンツアイテムのより新しいサーバジャーナルエントリ412を受信するであろう。今や、変更されたダウンロードプロセス700のステップ714で、コンテンツアイテム同期エージェント114−2は、新しいコンテンツアイテムの欠落コンテンツアイテムブロックをプリフェッチキャッシュの中に見つけることができる。それらはストリーミングダウンロード最適化にしたがい過去にダウンロードされているからである。したがって、コンテンツアイテム同期エージェント114−2は、変更されたダウンロードプロセス700のステップ716で、新しいコンテンツアイテムのコンテンツアイテムブロックをダウンロードする必要はない。第1の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス700のステップ718および720はより新しいコンテンツアイテムについて実行されてもよく、これは変更されたダウンロードプロセス700のステップ718で新たなコンテンツアイテムの一部として欠落コンテンツアイテムブロックを格納する際に、プリフェッチキャッシュで利用可能なそのような欠落コンテンツアイテムブロックを用いることで行われる。
5.2 第2の例示的同期プロトコル
ストリーミングダウンロード最適化を実装するための第2の例示的な同期プロトコルに対する最適化について、メタデータサーバ150は、変更されたアップロードプロセス1000のステップ1016で、第1委託要求で指定される新たなコンテンツアイテムの全てのコンテンツアイテムブロックを有する候補ブロックサーバがないと判定した後に、委託前サーバジャーナルに新しい委託前サーバジャーナルエントリを追加してもよい。しかしながら、第2の例示的な同期プロトコルでは、コンテンツアイテム同期エージェント114−2が第1委託要求が送られるときまでにターゲットブロックサーバを選択しなかった場合、コンテンツアイテム同期エージェント114−2によってターゲットブロックサーバが指定されないかもしれない。第1委託要求においてターゲットブロックサーバが指定された場合、新たな委託前サーバジャーナルエントリはターゲットブロックサーバのブロックサーバ識別子を指定してもよい。しかしながら、第1委託要求においてコンテンツアイテム同期エージェント114−2によってターゲットブロックサーバが指定されない場合、新しい委託前サーバジャーナルエントリは空の値またはNULL値またはターゲットブロックサーバがまだ選択されていないことを示すブロックサーバ識別子の他の値を有してもよい。代替として、第1委託要求においてターゲットブロックサーバが指定されない場合、変更されたアップロードプロセス1000のステップ1016でメタデータサーバ150によって委託前サーバジャーナルに新しい委託前サーバジャーナルエントリが追加されることはなく、それは後にコンテンツアイテム同期エージェント114−2によってターゲットブロックサーバが選択された後に追加されてもよい。
変更されたアップロードプロセス1000のステップ1020で、ターゲットブロックサーバを選択した後、コンテンツアイテム同期114−2は、ターゲットブロックサーバが選択されたことを指定して、メタデータサーバ150に「委託前」要求を送信してもよい。委託前要求は、所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子や新たなコンテンツアイテムの相対パスや、新たなコンテンツアイテムのコンテンツアイテムブロックリストなどの他の関連情報を含んでもよい。委託前要求を受信することに応じて、メタデータサーバ150は、第1委託要求に応じて委託前サーバジャーナルに追加された委託前サーバジャーナルエントリを、ターゲットブロックサーバのブロックサーバ識別子で、更新することができる。あるいはまた、第1委託要求に応じて委託前サーバジャーナルに委託前サーバジャーナルエントリが追加されていなかった場合、委託前要求を受信することに応じて、メタデータサーバ150は、委託前サーバジャーナルに新たな委託前サーバジャーナルエントリを追加することができる。このエントリは、ターゲットブロックサーバのブロックサーバ識別子と、所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子と、新たなコンテンツアイテムの相対パスと、新たなコンテンツアイテムのコンテンツアイテムブロックリストと、を指定する。
変更されたアップロードプロセス1000のステップ1032で、新たなコンテンツアイテムのコンテンツアイテムブロックのうちターゲットブロックサーバから欠落しているものはないと判定した後、メタデータサーバ150は、委託前サーバジャーナルから新たなコンテンツアイテムの委託前サーバジャーナルエントリを除去してもよい。あるいはまた、第2委託要求においてターゲットブロックサーバの識別子が指定されていない場合、メタデータサーバ150は、少なくともひとつの候補ブロックサーバが新たなコンテンツアイテムの全てのコンテンツアイテムブロックを保持していると判定した後に、委託前サーバジャーナルエントリを削除してもよい。ある例示的な実施の形態によると、委託前サーバジャーナルに委託前サーバジャーナルエントリを追加してからある期間が経過した後、委託前サーバジャーナルエントリを委託前サーバジャーナルから自動的に除去(すなわち、期限切れ)する。これは、変更されたアップロードプロセス1000が失敗し第2委託要求がなされることがないような場合に備えて行われる。新たなコンテンツアイテムについて委託前サーバジャーナルに委託前サーバジャーナルエントリが、ターゲットブロックサーバを特定する正当なブロックサーバ識別子を伴って存在することは、ターゲットブロックサーバからのストリーミングダウンロード最適化のために新たなコンテンツアイテムが利用可能であることのシグナルとして作用する。変更されたアップロードプロセス1000の残りのステップは、第2の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
変更されたダウンロードプロセス1400のステップ1402で、ターゲットブロックサーバを特定する正当なブロックサーバ識別子を伴う、委託前サーバジャーナルの委託前サーバジャーナルエントリが検出される。検出は、委託前サーバジャーナルエントリが正当なブロックサーバ識別子を伴って委託前サーバジャーナルに追加されたことに応じて、または、委託前サーバジャーナルエントリが正当なブロックサーバ識別子を指定すべく委託前サーバジャーナルにおいて変更されたことに応じて、なされてもよい。
変更されたダウンロードプロセス1400のステップ1404で、新たな委託前サーバジャーナルエントリの検出に応じて、通知サーバ140は、所属コンテンツアイテム名前空間が設けられている先のパーソナル計算デバイス110−2にピンメッセージを送信する。
変更されたアップロードプロセス1400のステップ1406および1408は、第2の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
変更されたダウンロードプロセス1400のステップ1410で、メタデータサーバ150はリスト要求を処理する際、上述のようにサーバジャーナル1110に新たなサーバジャーナルエントリ1112があるかを判定することに加えて、委託前サーバジャーナルに関連する委託前サーバジャーナルエントリがあるかを判定してもよい。特に、リスト要求内の現在のクライアントジャーナルカーソル値に関連付けられたコンテンツアイテムのそれぞれについて、メタデータサーバ150は、委託前サーバジャーナルにおいて、マッチするコンテンツアイテム名前空間識別子を有するひとつ以上の委託前サーバジャーナルエントリを決定してもよい。そのような委託前サーバジャーナルエントリのそれぞれの情報は、変更されたダウンロードプロセス1400のステップ1414で、リスト要求に対する応答内で返されてもよい。リスト要求応答内で返される委託前サーバジャーナルエントリは、それとリスト要求応答内で返されるより新しいサーバジャーナルエントリ1112とを区別するために、そのようなものとして特定されてもよい。例えば、応答内で返される委託前サーバジャーナルエントリはジャーナルカーソル値に関連付けられない一方、応答内で返されるより新しいサーバジャーナルエントリ1112はより新しいサーバジャーナルエントリ1112のサーバジャーナルカーソル値1117に関連付けられてもよい。
変更されたダウンロードプロセス1400のステップ1416で、第2の同期プロトコル動作に関連して上述したように、コンテンツアイテム同期エージェント114−2は、より新しいサーバジャーナルエントリ1112のコンテンツアイテムブロックリスト1116によって特定されるコンテンツアイテムブロックであってパーソナル計算デバイス110−2のローカルストレージ112−2から欠落しているコンテンツアイテムブロックを決定する。加えて、変更されたダウンロードプロセス1400のステップ1414でコンテンツアイテム同期エージェント114−2によって受信された委託前サーバジャーナルエントリについて、コンテンツアイテム同期エージェント114−2は、変更されたダウンロードプロセス1400のステップ1416の一部として、委託前サーバジャーナルエントリ内の対応するコンテンツアイテムブロックハッシュによって特定される新たなコンテンツアイテムのコンテンツアイテムブロックのなかにパーソナル計算デバイス110−2で欠落しているものがあるかを判定してもよい。
変更されたダウンロードプロセス1400のステップ1418の一部で、コンテンツアイテム同期エージェント114−2は、委託前サーバジャーナルエントリで特定されたターゲットブロックサーバから、パーソナル計算デバイス110−2へと、そのような欠落コンテンツアイテムブロックをダウンロードし、ローカルストレージ112−2のプリフェッチキャッシュエリアに格納してもよい。
変更されたダウンロードプロセス1400のステップ1414で受信された委託前サーバジャーナルエントリに対応する所与の新たなコンテンツアイテムについて、パーソナル計算デバイス(例えば、110−2)のコンテンツアイテム同期エージェント(例えば、114−2)が、変更されたダウンロードプロセス1400のステップ1418でターゲットブロックサーバから新たなコンテンツアイテムのコンテンツアイテムブロックをダウンロードしている間に、別のパーソナル計算デバイス(例えば、110−1)の別のコンテンツアイテム同期エージェント(例えば、114−1)が変更されたアップロードプロセス1000のステップ1022で新たなコンテンツアイテムの異なるコンテンツアイテムブロックをターゲットブロックサーバにアップロードしていてもよい。例えば、新たなコンテンツアイテムがコンテンツアイテムブロックハッシュ「A」、「B」および「C」を伴う三つのコンテンツアイテムブロックからなるとする。ストリーミングダウンロード最適化の一部として、コンテンツアイテム同期エージェント114−2は、コンテンツアイテム同期エージェント114−1がコンテンツアイテムブロック「B」のターゲットブロックサーバへのアップロードを始める(または終わる)かコンテンツアイテムブロック「C」のターゲットブロックサーバへのアップロードを始める(または終わる)前に、ターゲットブロックサーバからのコンテンツアイテムブロック「A」のダウンロードを開始してもよい。
変更されたダウンロードプロセス1400のステップ1414で受信されたより新しいサーバジャーナルエントリ1112に対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、第1の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス1400のステップ1420および1422がそのより新しいコンテンツアイテムについて実行されてもよい。
変更されたダウンロードプロセス1400のステップ1414で受信された委託前サーバジャーナルエントリに対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、変更されたダウンロードプロセス1400のステップ1420および1422は、新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託された後に変更されたダウンロードプロセス1400のステップ1402にあるように別のピンメッセージをコンテンツアイテム同期114−2が受信するまで、その新しいコンテンツアイテムについて延期されてもよい。この場合、コンテンツアイテム同期エージェント114−2は、ピンメッセージを受け取った後、変更されたダウンロードプロセス1400のステップ1408で実行されるリスト要求に応じて、変更されたダウンロードプロセス1400のステップ1414において、いまや委託済みのコンテンツアイテムのより新しいサーバジャーナルエントリ1412を受信するであろう。今や、変更されたダウンロードプロセス1400のステップ1416で、コンテンツアイテム同期エージェント114−2は、新しいコンテンツアイテムの欠落コンテンツアイテムブロックをプリフェッチキャッシュの中に見つけることができる。それらはストリーミングダウンロード最適化にしたがい過去にダウンロードされているからである。したがって、コンテンツアイテム同期エージェント114−2は、変更されたダウンロードプロセス1400のステップ1418で、新しいコンテンツアイテムのコンテンツアイテムブロックをダウンロードする必要はない。第2の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス1400のステップ1420および1422はより新しいコンテンツアイテムについて実行されてもよく、これは変更されたダウンロードプロセス1400のステップ1420で新たなコンテンツアイテムの一部として欠落コンテンツアイテムブロックを格納する際に、プリフェッチキャッシュで利用可能なそのような欠落コンテンツアイテムブロックを用いることで行われる。
6.0 オンプレミスコンテンツ管理サービス
いくつかの実施例では、オンラインコンテンツ管理サービスのコントロールプレーンとメタデータプレーンの機能は、オンプレミスで提供される。特に、(例えば140のような)通知サーバ、(例えば150のような)メタデータサーバ、及び(例えば170のような)ウェブサイト170を含むオンプレミスのコントロールプレーンは、バックエンドのデータバスによって、オンプレミスブロックサーバ(例えば120)と(例えば180のような)オンプレミスのメタデータプレーンとに接続されてよい。この場合、以下に説明する同期プロトコルの動作は、オンプレミスブロックサーバにコミット(commit)されたコンテンツアイテムのためのオンプレミスコンテンツ管理サービスに対して実行されてよい。
例えば、上述の第1の例示的な同期プロトコル動作にしたがうアップロードプロセスおよびダウンロードプロセスは、オンプレミス通知サーバ、オンプレミスメタデータサーバ、オンプレミスメタデータサーバ、およびオンプレミスブロックサーバを用いて行われてもよい。例えば、一般性を失うことなく、図5のインタラクション図500、図6の600、図9の900、図12の1200、図13の1300および図15の1500において、メタデータサーバ150はオンプレミスメタデータサーバに置き換えられてもよく、通知サーバ140はオンプレミス通知サーバに置き換えられてもよく、メタデータプレーン180はオンプレミスメタデータプレーンに置き換えられてもよく、それら全てはオンプレミスバックエンドデータバスによって互いに接続されてもよい。オンプレミスコントロールプレーン及び/又はメタデータプレーンが使用される場合、オフプレミスブロックサーバ130と比較したときのオンプレミスブロックサーバにコミットされたコンテンツアイテムの数に応じて、オンプレミス要素の実装は、オフプレミスコンテンツ管理サービスのコントロールプレーンとメタデータプレーンとを実装するために必要なコンピューティング資源よりも少ないコンピューティング資源(例えばサーバ)を必要とし得る。
いくつかの例示的な実施の形態では、オフプレミスメタデータサーバ150のみがサーバコンテンツアイテムジャーナルを維持する一方、他の例示的な実施の形態では、オンプレミスメタデータサーバがサーバコンテンツアイテムジャーナルを維持する。例えば、オンプレミスメタデータサーバが用いられる場合、オンプレミスメタデータサーバは、オンプレミスメタデータサーバに関連付けられたオンプレミスブロックサーバに委託されたコンテンツアイテムについて、オンプレミスメタデータプレーンに、サーバコンテンツアイテムジャーナルを維持してもよい。例えば、オンプレミスメタデータサーバは、図4のジャーナル410や図11のジャーナル1110や図22のジャーナル2210などのサーバコンテンツアイテムジャーナルを維持してもよい。
いくつかの実施例では、オフプレミスメタデータプレーン180のみがユーザアカウントレコード(例えば310)を格納する一方で、他のいくつかの実施例では、オンプレミスメタデータプレーンがユーザアカウントレコードを格納しても良い。例えば、オンプレミスメタデータプレーンは、(例えば、オンプレミスのバックエンドデータバスを介して)オンプレミスメタデータプレーンに関連付けられたオンプレミスブロックサーバを用いる、ユーザのためのユーザアカウントレコードを格納して、それらのコンテンツアイテムをホストしてもよい。オフプレミスメタデータプレーン180がユーザアカウントレコードを格納する場合にのみ、オンプレミスメタデータサーバは、ユーザアカウントレコード又はそれらの情報に、オフプレミスメタデータサーバ150を介してアクセスしてもよい。
いくつかの実施例では、オフプレミスメタデータプレーン180のみがリンクされたデバイスレコード(例えば810)を格納する一方で、他のいくつかの実施例では、オンプレミスメタデータプレーンがリンクされたデバイスレコードを維持しても良い。例えば、オンプレミスメタデータプレーンは、(例えば、オンプレミスのバックエンドデータバスを介して)オンプレミスメタデータプレーンに関連付けられたオンプレミスブロックサーバを用いる、デバイスのためのリンクされたデバイスレコードを維持して、それらのコンテンツアイテムブロックを格納及び検索してもよい。オフプレミスメタデータプレーン180がリンクされたデバイスレコードを格納する場合にのみ、オンプレミスメタデータサーバは、ユーザアカウントレコード又はそれらの情報に、オフプレミスメタデータサーバ150を介してアクセスしてもよい。
7.0 基本的なコンピューティングハードウェア及びソフトウェア
7.1 基本的なコンピューティングデバイス
ここで図16を参照すると、図16は、本発明の実施例が実施され得る基本的なコンピューティングデバイス1600を示すブロック図である。コンピューティングデバイス1600と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のコンピューティングデバイスは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
コンピューティングデバイス1600は、バス1602、又はメインメモリ1606のアドレス解決を行い、かつ、コンピューティングデバイス1600の種々のコンポーネント間で及び種々のコンポーネントの中でデータを転送するための他の通信機構を含み得る。
コンピューティングデバイス1600はまた、情報を処理するための、バス1602と結合した1つ以上のハードウェアプロセッサ1604を含み得る。ハードウェアプロセッサ1604は、汎用マイクロプロセッサ、システム・オン・チップ(SoC)、又は他のプロセッサであり得る。
ランダムアクセスメモリ(RAM)又は他の動的ストレージデバイスなどのメインメモリ1606はまた、情報やプロセッサ1604によって実行されるソフトウェア命令を格納するためにバス1602に結合され得る。メインメモリ1606はまた、プロセッサ1604によって実行されるソフトウェア命令の実行中に一時変数又は他の中間情報を格納するために使用され得る。
ソフトウェア命令は、プロセッサ1604へアクセス可能な記憶媒体に格納される場合、ソフトウェア命令で特定される動作を実行するように、コンピュータデバイス1600を、カスタマイズされた特定用途のコンピューティングデバイスにする。「ソフトウェア」、「ソフトウェア命令」、「コンピュータプログラム」、「コンピュータ実行可能命令」及び「プロセッサ実行可能命令」の語は、人間が読取り可能であるかどうかを問わず、特定の動作を実行するためにコンピューティングデバイスを指示する任意の機械可読情報を含むものと広く解釈されるべきであり、これらに限定されないが、アプリケーションソフトウェア、デスクトップアプリケーション、スクリプト、バイナリ、オペレーティングシステム、デバイスドライバ、ブートローダ、シェル、ユーティリティ、システムソフトウェア、ジャバスクリプト、ウェブページ、ウェブアプリケーション、プラグイン、組み込みソフトウェア、マイクロコード、コンパイラ、デバッガ、インタプリタ、バーチャルマシン、リンカ、テキストエディタを含む。
コンピューティングデバイス1600はまた、静的情報及びプロセッサ1604のためのソフトウェア命令を格納するための、バス1602に結合された読み取り専用メモリ(ROM)1608又は他の静的ストレージデバイスを含み得る。
1つ以上の大容量ストレージデバイス1610は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は他の利用可能な大容量ストレージ技術などの固定又は取り外し可能な媒体に、情報及びソフトウェア命令を永続的に格納するために、バス1602に接続され得る。大容量ストレージは、ネットワーク上で共有され得、又は、専用の大容量ストレージであり得る。通常、大容量ストレージデバイス1610(例えば、デバイスに対するメインハードディスク)の少なくとも1つは、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピューティングデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
コンピューティングデバイス1600は、バス1602を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ(LCD)又は他の電子的な視覚ディスプレイなどのディスプレイ1612と接続され得る。いくつかの構成では、(例えば、抵抗性、容量性等の)タッチ検知技術を組み込んだタッチ感知表面は、タッチジェスチャ(例えば指又はスタイラス)入力をプロセッサ1604へ通信するために、タッチ検知ディスプレイを形成するようにディスプレイ1612に重畳され得る。
アルファベットキー及び他のキーを含む入力デバイス1614は、情報及びコマンドの選択をプロセッサ1604へ通信するためにバス1602へ接続され得る。アルファベットキー及び他のキーに加えて又は代わりに、インプットデバイス1614は、例えばパワー(オン/オフ)ボタン、「ホーム」ボタン、ボリュームコントロールボタン等の、1つ以上の物理的なボタン又はスイッチを含み得る。
ユーザ入力デバイスの他の種別は、プロセッサ1604へ方向情報やコマンドの選択を通信するため、及び、ディスプレイ1612上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御1616であり得る。当該入力デバイスは、通常、デバイスが平面上の位置を特定できるようにする第1軸(例えば、x)と第2軸(例えば、y)の二軸の2つの自由度を有する。
図16に図示された構成のような、1つ以上のディスプレイ1612、入力デバイス1614、及びカーソルコントロール1616が、コンピューティングデバイス1600の外部コンポーネント(すなわち周辺デバイス)であるいくつかの構成に対し、他の構成において、ディスプレイ1612のいくつか又は全て、入力デバイス1614及びカーソルコントロール1616は、コンピューティングデバイス1600の形成因子の一部として統合される。
ここで開示されるシステム、方法、及びモジュールの機能は、メインメモリ1606に含まれる1以上のソフトウェア命令の1以上のプログラムをプロセッサ1604が実行することに応じて、コンピューティングデバイス1600によって実行され得る。そのようなソフトウェア命令は、ストレージデバイス1610などの他の記憶媒体からメインメモリ1606へと読み込まれ得る。メインメモリ1606に含まれるソフトウェア命令の実行は、プロセッサ1604に実施例の機能を発揮させる。
実施例の機能及び動作がコンピューティングデバイス1600のソフトウェア命令を用いて全体的に実施される一方、ハードワイヤード又はプログラマブル回路(例えばASIC、FPGA等)が、目下の特定の実装の要件に従って、他の実施形態において適所で又は機能を発揮するためのソフトウェア命令との組み合わせで用いられ得る。
ここで使用される”記憶媒体”の語は、コンピューティングデバイスを特定の様式で動作させるデータ及びソフトウェア命令の少なくとも1つを格納する非一時的な媒体として参照される。そのような記憶媒体は、不揮発性の媒体及び/又は揮発性の媒体を備えてもよい。不揮発性媒体は、ストレージデバイス1610などの、例えば、不揮発性ランダムアクセスメモリ(NVRAM)、フラッシュメモリ、光学ディスク、磁性ディスク、又は半導体ドライブを含む。揮発性媒体はメインメモリ1606などの動的メモリを含む。記憶媒体の共通の形式は、例えば、フロッピーディスク、フレキシブル・ディスク、ハードディスク、半導体ドライブ、磁性テープ若しくは任意の他の磁性データ記憶媒体、CD−ROM、任意の他の光学データ記憶媒体、ホールのパターン(空孔)を複数有する任意の物理的な媒体、RAM、PROM及びEPROM、フラッシュEPROM、NVRAM、フラッシュメモリ、任意の他のメモリチップ、又はカートリッジを含む。
記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用され得る。送信媒体は、記憶媒体間で情報を転送することに使用される。例えば、送信媒体は、バス1602を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
媒体の種々の形態は、実行のためにプロセッサ1604への1以上のソフトウェア命令の1以上のシーケンスの伝達に用いられ得る。例えば、ソフトウェア命令は、リモートコンピュータの磁性ディスク又は半導体ドライブ上でまず伝達され得る。リモートコンピュータは、その動的メモリへソフトウェア命令をロードし、モデムを用いて電話線を介してソフトウェア命令を送信し得る。コンピューティングデバイス1600のローカルなモデムは、電話回線でデータを受信し、データを赤外線信号に変換するための赤外線送信機を用い得る。赤外線検出機は赤外線信号で運搬されたデータを受信することができ、適切な回路がそのデータをバス1602に乗せる。バス1602は、プロセッサ1604がソフトウェア命令を読み出して実行するメインメモリ1606にデータを運搬する。メインメモリ1606によって受信されるソフトウェア命令は、プロセッサ1604によって実行される前又は実行された後の何れかにストレージデバイス1610に選択的に格納され得る。
コンピューティングデバイス1600はまた、バス1602へ接続される通信インタフェース1618を含み得る。通信インタフェース1618は、ローカルネットワーク1622(例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Bluetooth無線ネットワーク等)へ接続された、有線又は無線のネットワークリンク1620へ接続する双方向データ通信を提供する。通信インタフェース1618は、種々の種別の情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース1618は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム(例えば、ISDN、DSL、又はケーブルモデム)であり得る。
ネットワークリンク1620は、通常、1以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク1620は、ローカルネットワーク1622を通じて、ホストコンピュータ1624への又はインターネットサービスプロバイダ(ISP)1626によって運用されるデータ装置への接続を提供し得る。ISP1626は順に、「インターネット」1628として通常参照されるワールド・ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク1622及びInternet1628は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピューティングデバイス1600への及びコンピューティングデバイス1600からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク1620上の、及び通信インタフェース1618を通じた信号は、送信媒体の例示の形式である。
コンピュータシステム1600は、ネットワーク、ネットワークリンク1620、及び通信インターフェース1618を通じて、プログラムコードを含む、メッセージを送信し、データを受信し得る。例えば、サーバ1630は、インターネット1628、ISP1626、ローカルネットワーク1622、及び通信インターフェース1618を通じて、アプリケーションプログラムに対して要求されるコードを送信してもよい。
受信コードは、受信した際にプロセッサ1604によって実行されてもよく、及び、後の実行のためにストレージデバイス1610又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われ得る。
7.2 基本的なソフトウェアシステム
図17は、コンピューティングデバイス1600の動作を制御する、採用され得る基本的なソフトウェアシステム1700のブロック図である。ソフトウェアシステム1700と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のソフトウェアシステムは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
ソフトウェアシステム1700は、コンピューティングデバイス1600の動作を方向付けるために提供される。システムメモリ(RAM)1606及び固定ストレージ(例えば、ハードディスク)1610に格納され得るソフトウェアシステム1700はカーネル又はオペレーティングシステム(OS)1710を含む。
OS1710は、プロセス、メモリ配置、ファイル入力及び出力(I/O)、及びデバイスI/Oの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。1702A、1702B、1702C・・・1702Nとして表される1以上のアプリケーションプログラムは、システム1700による実行のために”ロードされ”うる(例えば、固定ストレージ1610からメモリ1606へ転送される)。アプリケーション又はデバイス1700上での使用を意図した他のソフトウェアはまた、ダウンロード可能なコンピュータで実行可能な命令のセットとして、例えば、インターネット上の場所(例えば、ウェブサーバ、アップストア又はオンラインサービス)からダウンロード及びインストールするために格納され得る。
ソフトウェアシステム1700は、グラフィカルな(例えば、「ポイント・アンド・クリック」又は「タッチジェスチャ」)形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース(GUI)1715を含む。これらの入力は順に、オペレーティングシステム1710及びアプリケーションプログラム1702の少なくとも1つからの命令に従ってシステム1700によって作動され得る。GUI1715はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする(例えば、ログオフする)とすぐに、OS1710及びアプリケーション1702からの動作結果を表示するように務める。
OS1710は、デバイス1600のベアハードウェア1720(例えば、プロセッサ1604)上で直接的に実行し得る。代替的に、ハイパーバイザ又は仮想マシンモニタ(VMM)1730は、ベアハードウェア1720及びOS1710の間に割り込んで設けられ得る。この構成において、VMM1730はデバイス1600のOS1710及びベアハードウェア1720の間のソフトウェア”クッション”又は仮想レイヤとして作動する。
VMM1730は、1つ以上の仮想マシンインスタンス(「ゲストマシン」)をインスタンス化し実行する。各ゲストマシンは、OS1710などの「ゲスト」オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーション1702などの1つ以上のアプリケーションとを含む。VMM1730は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提供し、ゲストオペレーティングシステムの実行を管理する。
いくつかの例において、VMM1730は、デバイス1600のベアハードウェア1720上で直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容し得る。これらの例において、ベアハードウェア1720上で直接的に実行するように構成されたゲストオペレーティングシステムの同一のバージョンはまた、修正又は再構成なしにVMM1730上で実行され得る。すなわち、VMM1730は、いくつかの例において、ゲストオペレーティングシステムに対する完全なハードウェアとCPU仮想化とを提供し得る。
他の例において、ゲストオペレーティングシステムは、効率的にVMM1730上で実行されるように特別に設計されるか、又は、構成されてもよい。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ上で実行する「気付かれるもの」である。すなわち、VMM1730は、いくつかの例において、ゲストオペレーティングシステムに対して準仮想化を提供することができる。
上述の基本的なコンピュータハードウェア及びソフトウェアは、実施例を実施するために採用されうる基本的な下層のコンピュータコンポーネントを示す目的で提示される。しかしながら、実施例は、任意の特定のコンピューティング環境又はコンピューティングデバイス構成に限定される必要はない。代わりに、実施例は、この開示の観点で当業者がここで提示された実施例の特徴又は機能を支持することが可能なものとして理解しうる任意の種別のシステムアーキテクチャ又はプロセッシング環境で実施され得る。
8.0 拡張及び代替例
前述した明細書において、本発明の実施例について多数の特定の詳細を参照して説明した。しかしながら、詳細は手近な特定の実装に対する要求に従って実装ごとに変化し得る。実施例は、従って、限定的な意味というよりはむしろ例示とみなされるものである。

Claims (31)

  1. コンテンツアイテムブロックの識別子を決定することであって、コンテンツアイテムが前記コンテンツアイテムブロックからなる、決定することと、
    コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補コンテンツアイテムブロックサーバの識別子を、メタデータサーバから、受信することであって、前記コンテンツアイテムが前記コンテンツアイテム名前空間に属する、受信することと、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつをターゲットコンテンツアイテムブロックサーバとして選択することと、
    前記コンテンツアイテムブロックのうち前記ターゲットコンテンツアイテムブロックサーバに保持されていなかったひとつ以上のコンテンツアイテムブロックを、前記ターゲットコンテンツアイテムブロックサーバにアップロードすることと、を含む方法。
  2. 前記コンテンツアイテムの生成または変更を検出することと、
    前記コンテンツアイテム名前空間の識別子を前記メタデータサーバに送信することと、をさらに含み、
    前記コンテンツアイテム名前空間が割り当てられている先の前記ひとつ以上の候補コンテンツアイテムブロックサーバの前記識別子を受信することは、前記コンテンツアイテム名前空間識別子を前記メタデータサーバに送信することに少なくとも部分的に基づく請求項1に記載の方法。
  3. 前記コンテンツアイテムの生成または変更を検出することは、前記コンテンツアイテムに対応するファイルが生成または変更されたときを検出することであって、前記生成または変更されたファイルは前記コンテンツアイテム名前空間がマウントされている先のファイルシステムによって保持される、検出することに少なくとも部分的に基づく請求項2に記載の方法。
  4. 前記コンテンツアイテムが属する前記コンテンツアイテム名前空間を、a)前記コンテンツアイテムに対応するファイルへのファイルシステムパスと、b)前記ひとつ以上のアップロードされたコンテンツアイテムブロックを保持する計算システムにローカル的に存在するファイルシステムにおける、前記コンテンツアイテム名前空間のマウントポイントへのファイルシステムパスと、に少なくとも部分的に基づいて、特定することをさらに含む請求項2に記載の方法。
  5. 前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていない前記コンテンツアイテムブロックの数を決定することをさらに含み、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていない前記コンテンツアイテムブロックの前記数に少なくとも部分的に基づく請求項1に記載の方法。
  6. 前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたネットワークパフォーマンス測度を決定することをさらに含み、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記ネットワークパフォーマンス測度に少なくとも部分的に基づく請求項1に記載の方法。
  7. 前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたサーバ負荷測度を決定することをさらに含み、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記サーバ負荷測度に少なくとも部分的に基づく請求項1に記載の方法。
  8. 前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロード時間を決定することをさらに含み、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記コンテンツアイテムブロックアップロード時間に少なくとも部分的に基づく請求項1に記載の方法。
  9. 前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバのそれぞれについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロードレートを決定することをさらに含み、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記コンテンツアイテムブロックアップロードレートに少なくとも部分的に基づく請求項1に記載の方法。
  10. 前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバのそれぞれについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた優先度を決定することをさらに含み、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記優先度に少なくとも部分的に基づく請求項1に記載の方法。
  11. 前記優先度は、前記少なくともひとつの候補コンテンツアイテムブロックサーバについて決定された以下のもののうちの少なくともひとつに少なくとも部分的に基づいて重み付けされる請求項10に記載の方法。
    前記コンテンツアイテムを構成するコンテンツアイテムブロックのうち、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていないものの数、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたネットワークパフォーマンス測度、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたサーバ負荷測度、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロード時間、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロードレート。
  12. 前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、(A)前記少なくともひとつの候補コンテンツアイテムブロックサーバと(B)前記コンテンツアイテム名前空間とに関連付けられた優先度を決定することをさらに含み、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記少なくともひとつの候補コンテンツアイテムブロックサーバおよび前記コンテンツアイテム名前空間に関連付けられた前記優先度に少なくとも部分的に基づく請求項1に記載の方法。
  13. 前記優先度は、前記少なくともひとつの候補コンテンツアイテムブロックサーバについて決定された以下のもののうちの少なくともひとつに少なくとも部分的に基づいて重み付けされる請求項12に記載の方法。
    前記コンテンツアイテムを構成するコンテンツアイテムブロックのうち、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていないものの数、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたネットワークパフォーマンス測度、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたサーバ負荷測度、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロード時間、
    前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロードレート。
  14. 前記ターゲットコンテンツアイテムブロックサーバはオンプレミスブロックサーバであり、
    前記方法はさらに、
    前記アップロードすることに少なくとも部分的に基づいて、前記メタデータサーバから、前記コンテンツアイテムが前記オンプレミスブロックサーバに委託されたことを示すものを受信することと、
    前記コンテンツアイテムが前記オンプレミスブロックサーバに委託されたことを示すものを受信したことに少なくとも部分的に基づいて、ファイルシステムにおける、前記コンテンツアイテムに対応するファイルの委託状態インジケータを変更することで、前記コンテンツアイテムがオフプレミスブロックサーバではなく前記オンプレミスブロックサーバに委託されたことを可視化することと、を含む請求項1に記載の方法。
  15. 前記コンテンツアイテムは第1コンテンツアイテムであり、前記ターゲットコンテンツアイテムブロックサーバは第1ターゲットコンテンツアイテムブロックサーバであり、
    前記方法はさらに、
    コンテンツアイテムブロック識別子の第1集合を前記メタデータサーバから受信することであって、各コンテンツアイテムブロック識別子が複数のブロックのなかから第2コンテンツアイテムのブロックを特定する、受信することと、
    サーバ識別子の第2集合を前記メタデータサーバから受信することであって、各サーバ識別子が複数の候補コンテンツアイテムブロックサーバのうちのひとつを特定し、前記候補コンテンツアイテムブロックサーバのそれぞれが前記第2コンテンツアイテムに関連付けられた特定のコンテンツアイテム名前空間を含むひとつ以上のコンテンツアイテム名前空間に割り当てられている、受信することと、
    コンテンツアイテムブロック識別子の前記受信された第1集合に少なくとも部分的に基づいて、前記第2コンテンツアイテムの前記複数のブロックのなかから、計算システムによってローカルで保持されていないひとつ以上のコンテンツアイテムブロックを決定することと、
    サーバ識別子の前記受信された第2集合に少なくとも部分的に基づいて、前記候補コンテンツアイテムブロックサーバのうちのひとつを、ダウンロード元の第2ターゲットコンテンツアイテムブロックサーバとして選択することと、
    前記第2コンテンツアイテムの前記複数のブロックのなかで前記計算システムによってローカルで保持されていなかった少なくともひとつのコンテンツアイテムブロックを、前記第2ターゲットコンテンツアイテムブロックサーバから、ダウンロードすることと、を含む請求項1に記載の方法。
  16. 前記コンテンツアイテム名前空間は第1コンテンツアイテム名前空間であり、
    前記方法はさらに、
    第2コンテンツアイテム名前空間の識別子と複数のコンテンツアイテムブロックの識別子の集合とをクライアントから受信することであって、前記少なくともひとつのコンテンツアイテムブロックのそれぞれが特定のコンテンツアイテムの一部を構成し、前記特定のコンテンツアイテムが前記第2コンテンツアイテム名前空間に属する、受信することと、
    前記第2コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補コンテンツアイテムブロックサーバを決定することと、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのなかから選択された少なくともひとつの候補コンテンツアイテムブロックサーバについて、識別子の前記集合に少なくとも部分的に基づいて、前記複数のコンテンツアイテムブロックのなかから、前記選択された候補コンテンツアイテムブロックサーバに保持されていないひとつ以上のコンテンツアイテムブロックを決定することと、
    (A)前記決定されたひとつ以上のコンテンツアイテムブロックと、(B)前記選択された候補コンテンツアイテムブロックサーバと、を示すものを前記クライアントに送信することと、を含む請求項1に記載の方法。
  17. 前記コンテンツアイテム名前空間は第1コンテンツアイテム名前空間であり、
    前記方法はさらに、
    第2コンテンツアイテム名前空間に属する新たなコンテンツアイテムを検出することと、
    前記第2コンテンツアイテム名前空間がマウントされるクライアントを決定することと、
    前記第2コンテンツアイテム名前空間に対する更新が利用可能であることを前記クライアントに通知することと、
    現在のクライアントジャーナルカーソル値を前記クライアントから受信することであって、前記現在のクライアントジャーナルカーソル値が前記第2コンテンツアイテム名前空間に関連付けられる、受信することと、
    前記受信した現在のクライアントジャーナルカーソル値に少なくとも部分的に基づいて、前記クライアントに保持されていない前記新たなコンテンツアイテムのコンテンツアイテムブロックの識別子の集合を決定することと、
    前記第2コンテンツアイテム名前空間が割り当てられている先の候補コンテンツアイテムブロックサーバを決定することと、
    前記クライアントに保持されていない前記新たなコンテンツアイテムの前記コンテンツアイテムブロックの識別子の前記集合と、前記第2コンテンツアイテム名前空間が割り当てられている先の前記候補コンテンツアイテムブロックサーバの識別子と、を前記クライアントに送信することと、を含む請求項1に記載の方法。
  18. 計算システムによって実行される方法であって、
    コンテンツアイテムブロック識別子の第1集合をメタデータサーバから受信することであって、各コンテンツアイテムブロック識別子が複数のブロックのなかからコンテンツアイテムのブロックを特定する、受信することと、
    サーバ識別子の第2集合を前記メタデータサーバから受信することであって、各サーバ識別子が複数の候補コンテンツアイテムブロックサーバのうちのひとつを特定し、前記候補コンテンツアイテムブロックサーバのそれぞれが前記コンテンツアイテムに関連付けられた特定のコンテンツアイテム名前空間を含むひとつ以上のコンテンツアイテム名前空間に割り当てられている、受信することと、
    コンテンツアイテムブロック識別子の前記受信された第1集合に少なくとも部分的に基づいて、前記コンテンツアイテムの前記複数のブロックのなかから、前記計算システムによってローカルで保持されていないひとつ以上のコンテンツアイテムブロックを決定することと、
    サーバ識別子の前記受信された第2集合に少なくとも部分的に基づいて、前記候補コンテンツアイテムブロックサーバのうちのひとつを、ダウンロード元のターゲットコンテンツアイテムブロックサーバとして選択することと、
    前記コンテンツアイテムの前記複数のブロックのなかで前記計算システムによってローカルで保持されていなかった少なくともひとつのコンテンツアイテムブロックを、前記ターゲットコンテンツアイテムブロックサーバから、ダウンロードすることと、を含む方法。
  19. 前記候補コンテンツアイテムブロックサーバのうちの他の少なくともひとつを、ダウンロード元の別のターゲットコンテンツアイテムブロックサーバとして選択することと、
    前記コンテンツアイテムの前記複数のブロックのなかで前記計算システムによってローカルで保持されていなかった少なくともひとつの他のコンテンツアイテムブロックを、前記別のターゲットコンテンツアイテムブロックサーバから、ダウンロードすることと、をさらに含む請求項18に記載の方法。
  20. 前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたネットワークパフォーマンス測度を決定することをさらに含み、
    前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記ネットワークパフォーマンス測度に少なくとも部分的に基づく請求項18に記載の方法。
  21. 前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたサーバ負荷測度を決定することをさらに含み、
    前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記サーバ負荷測度に少なくとも部分的に基づく請求項18に記載の方法。
  22. 前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックダウンロード時間を決定することをさらに含み、
    前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記コンテンツアイテムブロックダウンロード時間に少なくとも部分的に基づく請求項18に記載の方法。
  23. 前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックダウンロードレートを決定することをさらに含み、
    前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記コンテンツアイテムブロックダウンロードレートに少なくとも部分的に基づく請求項18に記載の方法。
  24. 前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた優先度を決定することをさらに含み、
    前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記優先度に少なくとも部分的に基づく請求項18に記載の方法。
  25. 前記優先度は、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつについて決定された以下のもののうちの少なくともひとつに少なくとも部分的に基づいて重み付けされる請求項24に記載の方法。
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたネットワークパフォーマンス測度、
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたサーバ負荷測度、
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロード時間、
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロードレート。
  26. 前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつおよび前記コンテンツアイテム名前空間に関連付けられた優先度を決定することをさらに含み、
    前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつおよび前記コンテンツアイテム名前空間に関連付けられた前記優先度に少なくとも部分的に基づくむ請求項18に記載の方法。
  27. 前記優先度は、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつについて決定された以下のもののうちの少なくともひとつに少なくとも部分的に基づいて重み付けされる請求項26に記載の方法。
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたネットワークパフォーマンス測度、
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたサーバ負荷測度、
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロード時間、
    前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロードレート。
  28. コンテンツアイテム名前空間の識別子と複数のコンテンツアイテムブロックの識別子の集合とをクライアントから受信することであって、前記少なくともひとつのコンテンツアイテムブロックのそれぞれが特定のコンテンツアイテムの一部を構成し、前記特定のコンテンツアイテムが前記コンテンツアイテム名前空間に属する、受信することと、
    前記コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補コンテンツアイテムブロックサーバを決定することと、
    前記ひとつ以上の候補コンテンツアイテムブロックサーバのなかから選択された少なくともひとつの候補コンテンツアイテムブロックサーバについて、識別子の前記集合に少なくとも部分的に基づいて、前記複数のコンテンツアイテムブロックのなかから、前記選択された候補コンテンツアイテムブロックサーバに保持されていないひとつ以上のコンテンツアイテムブロックを決定することと、
    (A)前記決定されたひとつ以上のコンテンツアイテムブロックと、(B)前記選択された候補コンテンツアイテムブロックサーバと、を示すものを前記クライアントに送信することと、を含む方法。
  29. コンテンツアイテム名前空間に属する新たなコンテンツアイテムを検出することと、
    前記コンテンツアイテム名前空間がマウントされるクライアントを決定することと、
    前記コンテンツアイテム名前空間に対する更新が利用可能であることを前記クライアントに通知することと、
    現在のクライアントジャーナルカーソル値を前記クライアントから受信することであって、前記現在のクライアントジャーナルカーソル値が前記コンテンツアイテム名前空間に関連付けられる、受信することと、
    前記受信した現在のクライアントジャーナルカーソル値に少なくとも部分的に基づいて、前記クライアントに保持されていない前記新たなコンテンツアイテムのコンテンツアイテムブロックの識別子の集合を決定することと、
    前記コンテンツアイテム名前空間が割り当てられている先の候補コンテンツアイテムブロックサーバを決定することと、
    コンテンツアイテムブロックの識別子の前記集合と、前記コンテンツアイテム名前空間が割り当てられている先の前記候補コンテンツアイテムブロックサーバの識別子と、を前記クライアントに送信することと、を含む方法。
  30. 1つ以上のプロセッサによって実行されると、請求項1から29のいずれか一項に記載の方法を実行させる命令を格納する1つ以上の記憶媒体。
  31. 1つ以上のプロセッサと、
    前記ひとつ以上のプロセッサによって実行された場合、請求項1から29のいずれか一項に記載の方法を実行させるインストラクションを保持するひとつ以上の保持媒体と、を備えるシステム。
JP2018504709A 2015-10-29 2016-10-11 デジタルコンテンツアイテムのマルチプレミスホスティングのための同期プロトコル Active JP6603791B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562248085P 2015-10-29 2015-10-29
US62/248,085 2015-10-29
US14/979,252 2015-12-22
US14/979,252 US10691718B2 (en) 2015-10-29 2015-12-22 Synchronization protocol for multi-premises hosting of digital content items
PCT/US2016/056346 WO2017074697A1 (en) 2015-10-29 2016-10-11 Synchronization protocol for multi-premises hosting of digital content items

Publications (2)

Publication Number Publication Date
JP2018536207A true JP2018536207A (ja) 2018-12-06
JP6603791B2 JP6603791B2 (ja) 2019-11-06

Family

ID=57233843

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018504709A Active JP6603791B2 (ja) 2015-10-29 2016-10-11 デジタルコンテンツアイテムのマルチプレミスホスティングのための同期プロトコル

Country Status (5)

Country Link
US (1) US10691718B2 (ja)
EP (2) EP3779716A1 (ja)
JP (1) JP6603791B2 (ja)
AU (1) AU2016346892C1 (ja)
WO (1) WO2017074697A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5988447B2 (ja) * 2014-08-28 2016-09-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ログメッセージのフォーマットを推定する方法、並びに、その為のコンピュータ及びコンピュータ・プログラム
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10962780B2 (en) * 2015-10-26 2021-03-30 Microsoft Technology Licensing, Llc Remote rendering for virtual images
US9571573B1 (en) 2015-10-29 2017-02-14 Dropbox, Inc. Peer-to-peer synchronization protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9537952B1 (en) * 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
GB201604070D0 (en) 2016-03-09 2016-04-20 Ibm On-premise and off-premise communication
US10402375B2 (en) * 2016-07-18 2019-09-03 Microsoft Technology Licensing, Llc Cloud content states framework
US10594770B2 (en) * 2016-11-01 2020-03-17 International Business Machines Corporation On-premises and off-premises communication
US11245607B2 (en) * 2017-12-07 2022-02-08 Vmware, Inc. Dynamic data movement between cloud and on-premise storages
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US10783012B2 (en) 2018-04-20 2020-09-22 CopyBucket, Inc. Systems and methods for efficient inter-device data exchange
JP7135903B2 (ja) * 2019-02-01 2022-09-13 株式会社デンソー 車両用装置、車両用装置の時刻同期方法
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US11580078B2 (en) * 2020-03-31 2023-02-14 Vmware, Inc. Providing enhanced security for object access in object-based datastores
US11526528B2 (en) 2020-07-07 2022-12-13 Salesforce.Com, Inc. Techniques and architectures for providing atomic transactions across multiple data sources
US11947499B2 (en) * 2020-07-31 2024-04-02 EMC IP Holding Company LLC Peer-to-peer global namespace for storage system metadata federations
US11392554B2 (en) * 2020-10-19 2022-07-19 Dropbox, Inc. Synchronizing an external location
US11449420B2 (en) 2020-10-20 2022-09-20 Citrix Systems, Inc. Content caching
US20220237172A1 (en) * 2021-01-22 2022-07-28 Salesforce.Com, Inc. Techniques and Architectures for Providing Transactional Stateful Data Protection Deletion Functionality
US11652876B2 (en) * 2021-07-22 2023-05-16 Rovi Guides, Inc. Assisted delivery service for networks
US11899685B1 (en) * 2021-12-10 2024-02-13 Amazon Technologies, Inc. Dividing authorization between a control plane and a data plane for sharing database data
US20230216690A1 (en) * 2021-12-30 2023-07-06 Gm Cruise Holdings Llc Data transfer acceleration via content-defined chunking
US11954074B2 (en) * 2022-04-28 2024-04-09 Micro Focus Llc Method and apparatus for efficient file/folder synchronization

Family Cites Families (273)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2507235B2 (ja) 1994-06-24 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション クライアント・サ―バ・コンピュ―タ・システム、及びそのクライアント・コンピュ―タ、サ―バ・コンピュ―タ、並びにオブジェクト更新方法
US6412017B1 (en) 1996-07-01 2002-06-25 Microsoft Corporation Urgent replication facility
US5940394A (en) 1996-08-08 1999-08-17 At&T Corp Transferring messages in networks made up of subnetworks with different namespaces
JPH1063555A (ja) 1996-08-19 1998-03-06 Hitachi Ltd ファイル管理方法
US5893116A (en) 1996-09-30 1999-04-06 Novell, Inc. Accessing network resources using network resource replicator and captured login script for use when the computer is disconnected from the network
US6335927B1 (en) 1996-11-18 2002-01-01 Mci Communications Corporation System and method for providing requested quality of service in a hybrid network
US5907848A (en) 1997-03-14 1999-05-25 Lakeview Technology, Inc. Method and system for defining transactions from a database log
US6061743A (en) 1998-02-19 2000-05-09 Novell, Inc. Method and apparatus for aggregating disparate namespaces
US6065018A (en) 1998-03-04 2000-05-16 International Business Machines Corporation Synchronizing recovery log having time stamp to a remote site for disaster recovery of a primary database having related hierarchial and relational databases
US6108703A (en) 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US6336173B1 (en) 1999-04-01 2002-01-01 International Business Machines Corporation Storing and tracking multiple copies of data in data storage libraries
US6623151B2 (en) 1999-08-04 2003-09-23 911Ep, Inc. LED double light bar and warning light signal
US6834284B2 (en) 1999-08-12 2004-12-21 International Business Machines Corporation Process and system for providing name service scoping behavior in java object-oriented environment
US6728723B1 (en) 1999-10-12 2004-04-27 Cisco Technology, Inc. Method and system for verifying configuration transactions managed by a centralized database
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US7327761B2 (en) 2000-02-03 2008-02-05 Bandwiz Inc. Data streaming
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US7689510B2 (en) 2000-09-07 2010-03-30 Sonic Solutions Methods and system for use in network management of content
US6732125B1 (en) 2000-09-08 2004-05-04 Storage Technology Corporation Self archiving log structured volume with intrinsic data protection
US6560591B1 (en) 2000-09-29 2003-05-06 Intel Corporation System, method, and apparatus for managing multiple data providers
US7660453B2 (en) 2000-10-11 2010-02-09 Imaging Therapeutics, Inc. Methods and devices for analysis of x-ray images
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US7171475B2 (en) 2000-12-01 2007-01-30 Microsoft Corporation Peer networking host framework and hosting API
US20040133606A1 (en) 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
TW561358B (en) 2001-01-11 2003-11-11 Force Corp Z File switch and switched file system
US7383288B2 (en) 2001-01-11 2008-06-03 Attune Systems, Inc. Metadata based file switch and switched file system
US7509322B2 (en) 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US7788335B2 (en) 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
AU2002303126A1 (en) 2001-03-16 2002-10-03 Novell, Inc. Client-server model for synchronization of files
US6912645B2 (en) 2001-07-19 2005-06-28 Lucent Technologies Inc. Method and apparatus for archival data storage
JP2003030026A (ja) 2001-07-19 2003-01-31 Dainippon Printing Co Ltd データ管理装置
US6947940B2 (en) 2002-07-30 2005-09-20 International Business Machines Corporation Uniform name space referrals with location independence
US7051053B2 (en) 2002-09-30 2006-05-23 Dinesh Sinha Method of lazily replicating files and monitoring log in backup file system
US6993714B2 (en) 2002-10-03 2006-01-31 Microsoft Corporation Grouping and nesting hierarchical namespaces
US20040068523A1 (en) 2002-10-07 2004-04-08 Keith Robert Olan Method and system for full asynchronous master-to-master file synchronization
US20040162900A1 (en) 2002-12-17 2004-08-19 Tim Bucher Distributed content management system
US7117303B1 (en) 2003-03-14 2006-10-03 Network Appliance, Inc. Efficient, robust file handle invalidation
US7308545B1 (en) 2003-05-12 2007-12-11 Symantec Operating Corporation Method and system of providing replication
US7577960B2 (en) 2003-06-19 2009-08-18 Microsoft Corporation System and method for managing cached objects using notifications bonds
US7340723B2 (en) 2003-07-02 2008-03-04 Scaleform Corporation Identifier implementation mapping and methods of using namespaces
US7512638B2 (en) 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US7734690B2 (en) 2003-09-05 2010-06-08 Microsoft Corporation Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system
US20050071336A1 (en) 2003-09-30 2005-03-31 Microsoft Corporation Systems and methods for logging and recovering updates to data structures
US7426734B2 (en) 2003-10-24 2008-09-16 Microsoft Corporation Facilitating presentation functionality through a programming interface media namespace
JP4464656B2 (ja) 2003-11-06 2010-05-19 国立大学法人東京工業大学 コンテンツ蓄積システムおよびその方法
US7478381B2 (en) 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7318134B1 (en) 2004-03-16 2008-01-08 Emc Corporation Continuous data backup using distributed journaling
US7395446B2 (en) 2004-05-03 2008-07-01 Microsoft Corporation Systems and methods for the implementation of a peer-to-peer rule-based pull autonomous synchronization system
US7774378B2 (en) 2004-06-04 2010-08-10 Icentera Corporation System and method for providing intelligence centers
JP4490743B2 (ja) 2004-06-24 2010-06-30 株式会社日立製作所 ファイル共有システム、ファイル共有用管理サーバおよびクライアント装置
US20060041844A1 (en) 2004-08-19 2006-02-23 Homiller Daniel P Methods, devices, systems and computer program products for providing availability data associated with data files to users of a presence service
US7702730B2 (en) 2004-09-03 2010-04-20 Open Text Corporation Systems and methods for collaboration
US20060064467A1 (en) 2004-09-17 2006-03-23 Libby Michael L System and method for partial web page caching and cache versioning
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US7844691B2 (en) 2004-12-30 2010-11-30 Xstor Systems, Inc. Scalable distributed storage and delivery
US9361311B2 (en) 2005-01-12 2016-06-07 Wandisco, Inc. Distributed file system using consensus nodes
US7483929B2 (en) 2005-02-08 2009-01-27 Pro Softnet Corporation Systems and methods for storing, backing up and recovering computer data files
US7506010B2 (en) 2005-02-08 2009-03-17 Pro Softnet Corporation Storing and retrieving computer data files using an encrypted network drive file system
US7607582B2 (en) 2005-04-22 2009-10-27 Microsoft Corporation Aggregation and synchronization of nearby media
JP4824085B2 (ja) 2005-04-25 2011-11-24 ネットアップ,インコーポレイテッド ネットワークファイルシステムをキャッシュするシステム、及び方法
EP1900189B1 (en) 2005-06-29 2018-04-18 Cisco Technology, Inc. Parallel filesystem traversal for transparent mirroring of directories and files
CA2615659A1 (en) 2005-07-22 2007-05-10 Yogesh Chunilal Rathod Universal knowledge management and desktop search system
US7571168B2 (en) 2005-07-25 2009-08-04 Parascale, Inc. Asynchronous file replication and migration in a storage network
US20070028215A1 (en) 2005-07-26 2007-02-01 Invensys Systems, Inc. Method and system for hierarchical namespace synchronization
US7401089B2 (en) 2005-08-17 2008-07-15 Microsoft Corporation Storage reports file system scanner
BRPI0520497A2 (pt) 2005-08-26 2009-05-12 Thomson Licensing sistema e método sob demanda que usam programação de transmissão dinámica
US20070055703A1 (en) 2005-09-07 2007-03-08 Eyal Zimran Namespace server using referral protocols
US7574579B2 (en) 2005-09-30 2009-08-11 Cleversafe, Inc. Metadata management system for an information dispersed storage system
US8131689B2 (en) 2005-09-30 2012-03-06 Panagiotis Tsirigotis Accumulating access frequency and file attributes for supporting policy based storage management
US20070088702A1 (en) 2005-10-03 2007-04-19 Fridella Stephen A Intelligent network client for multi-protocol namespace redirection
US8041677B2 (en) 2005-10-12 2011-10-18 Datacastle Corporation Method and system for data backup
US20070100829A1 (en) 2005-10-26 2007-05-03 Allen J V Content manager system and method
EP1974296B8 (en) 2005-12-19 2016-09-21 Commvault Systems, Inc. Systems and methods for performing data replication
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
PL1972092T3 (pl) 2006-01-09 2013-11-29 Thomson Licensing Sposób i system dystrybucji treści multimedialnej
US8015491B2 (en) 2006-02-28 2011-09-06 Maven Networks, Inc. Systems and methods for a single development tool of unified online and offline content providing a similar viewing experience
US20070214497A1 (en) 2006-03-10 2007-09-13 Axalto Inc. System and method for providing a hierarchical role-based access control
US8171251B2 (en) 2006-03-16 2012-05-01 Sandisk Il Ltd. Data storage management method and device
US8281026B2 (en) 2006-03-18 2012-10-02 Metafluent, Llc System and method for integration of streaming and static data
US7890646B2 (en) 2006-04-27 2011-02-15 Microsoft Corporation Synchronization orchestration
US8370423B2 (en) 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US7953785B2 (en) 2006-06-30 2011-05-31 Microsoft Corporation Content synchronization in a file sharing environment
US20080005195A1 (en) 2006-06-30 2008-01-03 Microsoft Corporation Versioning synchronization for mass p2p file sharing
US20080046218A1 (en) 2006-08-16 2008-02-21 Microsoft Corporation Visual summarization of activity data of a computing session
US8082231B1 (en) 2006-09-22 2011-12-20 Emc Corporation Techniques using identifiers and signatures with data operations
US7685171B1 (en) 2006-09-22 2010-03-23 Emc Corporation Techniques for performing a restoration operation using device scanning
DE102006051187A1 (de) 2006-10-30 2008-05-08 Siemens Ag Verteilte Taskflow-Architektur
US8180735B2 (en) 2006-12-29 2012-05-15 Prodea Systems, Inc. Managed file backup and restore at remote storage locations through multi-services gateway at user premises
US7865571B2 (en) 2007-01-08 2011-01-04 Mspot, Inc. Method and apparatus for transferring digital content from a personal computer to a mobile handset
US7937451B2 (en) 2007-01-08 2011-05-03 Mspot, Inc. Method and apparatus for transferring digital content from a computer to a mobile handset
EP1944944A1 (en) 2007-01-12 2008-07-16 Thomson Licensing System and method for combining pull and push modes
US7930270B2 (en) 2007-02-26 2011-04-19 Microsoft Corporation Managing files on multiple computing devices
US8312046B1 (en) 2007-02-28 2012-11-13 Netapp, Inc. System and method for enabling a data container to appear in a plurality of locations in a super-namespace
US7933296B2 (en) 2007-03-02 2011-04-26 Microsoft Corporation Services for data sharing and synchronization
US7937686B2 (en) 2007-04-17 2011-05-03 Microsoft Corporation Name-based identifiers of model elements
US7900203B2 (en) 2007-04-24 2011-03-01 Microsoft Corporation Data sharing and synchronization with relay endpoint and sync data element
WO2008147973A2 (en) 2007-05-25 2008-12-04 Attune Systems, Inc. Remote file virtualization in a switched file system
JP4865642B2 (ja) 2007-06-08 2012-02-01 富士通株式会社 アクセス権設定装置、アクセス権設定方法、及びアクセス権設定プログラム
CN101715650B (zh) 2007-06-28 2012-03-21 纽约市哥伦比亚大学信托人 机顶盒对等端辅助的视频点播
US8180720B1 (en) 2007-07-19 2012-05-15 Akamai Technologies, Inc. Content delivery network (CDN) cold content handling
US8073922B2 (en) 2007-07-27 2011-12-06 Twinstrata, Inc System and method for remote asynchronous data replication
CN101409706B (zh) 2007-10-09 2011-11-23 华为技术有限公司 一种边缘网络中的数据分发方法、数据分发系统及相关设备
US8438611B2 (en) 2007-10-11 2013-05-07 Varonis Systems Inc. Visualization of access permission status
US20090313353A1 (en) 2007-10-15 2009-12-17 University Of Southern California Copyrighted content delivery over p2p file-sharing networks
JP5000457B2 (ja) 2007-10-31 2012-08-15 株式会社日立製作所 ファイル共有システム及びファイル共有方法
FR2924244B1 (fr) 2007-11-22 2010-04-23 Canon Kk Procede et dispositif d'encodage et de decodage d'information
US20090192845A1 (en) 2008-01-30 2009-07-30 Microsoft Corporation Integrated real time collaboration experiences with online workspace
US8301618B2 (en) 2008-02-26 2012-10-30 Microsoft Corporation Techniques to consume content and metadata
US9824333B2 (en) 2008-02-29 2017-11-21 Microsoft Technology Licensing, Llc Collaborative management of activities occurring during the lifecycle of a meeting
US8019900B1 (en) 2008-03-25 2011-09-13 SugarSync, Inc. Opportunistic peer-to-peer synchronization in a synchronization system
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
WO2009132261A1 (en) 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
US8296398B2 (en) 2008-04-29 2012-10-23 Overland Storage, Inc. Peer-to-peer redundant file server system and methods
US8195608B2 (en) 2008-06-02 2012-06-05 International Business Machines Corporation File synchronization between multiple nodes
US8341532B2 (en) 2008-06-10 2012-12-25 Microsoft Corporation Automated set-up of a collaborative workspace
US20090327405A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Enhanced Client And Server Systems for Operating Collaboratively Within Shared Workspaces
JP2010074604A (ja) 2008-09-19 2010-04-02 Nec Corp データアクセスシステム、データアクセス方法およびデータアクセス用プログラム
US8214747B1 (en) 2008-10-10 2012-07-03 Adobe Systems Incorporated Role based state and dynamic feature enablement for collaborative and non-collaborative workspaces and imbeded applications
US8140473B2 (en) 2008-11-07 2012-03-20 International Business Machines Corporation Real-time file synchronization
US9614924B2 (en) 2008-12-22 2017-04-04 Ctera Networks Ltd. Storage device and method thereof for integrating network attached storage with cloud storage services
US9239767B2 (en) 2008-12-22 2016-01-19 Rpx Clearinghouse Llc Selective database replication
US8296338B2 (en) 2009-05-05 2012-10-23 Entangled Media Corp. Method for a cloud-based meta-file system to virtually unify remote and local files across a range of devices' local file systems
US20100293147A1 (en) 2009-05-12 2010-11-18 Harvey Snow System and method for providing automated electronic information backup, storage and recovery
CN101582920B (zh) 2009-06-09 2012-09-05 中兴通讯股份有限公司 一种分布式文件系统中校验和同步数据块的方法及装置
US8285681B2 (en) 2009-06-30 2012-10-09 Commvault Systems, Inc. Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites
US8825597B1 (en) * 2009-08-13 2014-09-02 Dropbox, Inc. Network folder synchronization
US8301874B1 (en) 2009-10-20 2012-10-30 Wanova Technologies, Ltd. Atomic switching of images in desktop streaming over wide area networks
US9684785B2 (en) 2009-12-17 2017-06-20 Red Hat, Inc. Providing multiple isolated execution environments for securely accessing untrusted content
US8503984B2 (en) 2009-12-23 2013-08-06 Amos Winbush, III Mobile communication device user content synchronization with central web-based records and information sharing system
US8527549B2 (en) 2010-02-22 2013-09-03 Sookasa Inc. Cloud based operating and virtual file system
US8458299B2 (en) 2010-03-17 2013-06-04 Hitachi, Ltd. Metadata management method for NAS global namespace design
WO2011117461A1 (en) 2010-03-23 2011-09-29 Nokia Corporation Method and apparatus for managing files in an online account
US9043484B2 (en) 2010-04-02 2015-05-26 Disney Enterprises, Inc. Streaming playback and dynamic ad insertion
US9170892B2 (en) 2010-04-19 2015-10-27 Microsoft Technology Licensing, Llc Server failure recovery
US8799413B2 (en) * 2010-05-03 2014-08-05 Panzura, Inc. Distributing data for a distributed filesystem across multiple cloud storage systems
US9852150B2 (en) 2010-05-03 2017-12-26 Panzura, Inc. Avoiding client timeouts in a distributed filesystem
US8650159B1 (en) 2010-08-26 2014-02-11 Symantec Corporation Systems and methods for managing data in cloud storage using deduplication techniques
JP5328739B2 (ja) 2010-09-30 2013-10-30 ヤフー株式会社 アイコン表示プログラム、方法及びシステム
JP5289407B2 (ja) 2010-09-30 2013-09-11 ヤフー株式会社 ファイル同期システム、方法及びプログラム
JP5677029B2 (ja) 2010-10-26 2015-02-25 キヤノン株式会社 データ移行システム、データ移行方法、プログラム
CN102567042B (zh) 2010-12-14 2015-04-15 国际商业机器公司 利用引导块重定位来管理多个软件镜像的方法和系统
US20120179874A1 (en) 2011-01-07 2012-07-12 International Business Machines Corporation Scalable cloud storage architecture
US8924354B2 (en) 2011-02-01 2014-12-30 Ca, Inc. Block level data replication
US8880538B1 (en) 2011-02-08 2014-11-04 Google Inc. Electronic document encoding
TWI424322B (zh) * 2011-02-08 2014-01-21 Kinghood Technology Co Ltd 提供大量資料流存取的資料流管理系統
US9639540B2 (en) 2011-02-25 2017-05-02 Hewlett Packard Enterprise Development Lp Retention management in a worm storage system
US9721033B2 (en) 2011-02-28 2017-08-01 Micro Focus Software Inc. Social networking content management
JP2012182292A (ja) 2011-03-01 2012-09-20 Mitsubishi Paper Mills Ltd 樹脂開口方法
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US9213709B2 (en) 2012-08-08 2015-12-15 Amazon Technologies, Inc. Archival data identification
US9201742B2 (en) 2011-04-26 2015-12-01 Brian J. Bulkowski Method and system of self-managing nodes of a distributed database cluster with a consensus algorithm
US9021471B2 (en) 2011-05-03 2015-04-28 International Business Machines Corporation Managing change-set delivery
US9357004B2 (en) 2011-05-13 2016-05-31 Simplivity Corp. Reference count propagation
EP2710510A4 (en) 2011-05-14 2015-05-06 Bitcasa Inc CLOUD FILE SYSTEM WITH SERVER DEPLOYMENT OF USER UNKNOWN ENCRYPTED FILES
US9037797B2 (en) 2011-05-24 2015-05-19 International Business Machines Corporation Intelligent caching
GB2503625A (en) 2011-07-08 2014-01-01 Box Inc Collaboration sessions in a workspace on cloud-based content management system
US9652741B2 (en) 2011-07-08 2017-05-16 Box, Inc. Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
US8959607B2 (en) 2011-08-03 2015-02-17 Cisco Technology, Inc. Group key management and authentication schemes for mesh networks
US9710535B2 (en) 2011-08-12 2017-07-18 Nexenta Systems, Inc. Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories
US8533231B2 (en) 2011-08-12 2013-09-10 Nexenta Systems, Inc. Cloud storage system with distributed metadata
US9552367B2 (en) 2011-09-16 2017-01-24 Ca, Inc. System and method for network file system server replication using reverse path lookup
US8301597B1 (en) 2011-09-16 2012-10-30 Ca, Inc. System and method for network file system server replication using reverse path lookup
US9521214B2 (en) 2011-09-20 2016-12-13 Instart Logic, Inc. Application acceleration with partial file caching
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8949208B1 (en) 2011-09-30 2015-02-03 Emc Corporation System and method for bulk data movement between storage tiers
KR20140073588A (ko) 2011-10-13 2014-06-16 인터디지탈 패튼 홀딩스, 인크 콘텐츠 배달 네트워크들 간의 인터페이싱을 제공하는 방법 및 장치
GB2500152A (en) 2011-11-29 2013-09-11 Box Inc Mobile platform file and folder selection functionalities for offline access and synchronization
US20130135608A1 (en) 2011-11-30 2013-05-30 Reflectronics, Inc. Apparatus and method for improved processing of food products
US8813172B2 (en) 2011-12-16 2014-08-19 Microsoft Corporation Protection of data in a mixed use device
US9164997B2 (en) 2012-01-19 2015-10-20 Microsoft Technology Licensing, Llc Recognizing cloud content
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9307009B2 (en) 2012-02-15 2016-04-05 Mobilespan Inc. Presenting execution of a remote application in a mobile device native format
US20130218837A1 (en) 2012-02-16 2013-08-22 Verizon Patent And Licensing Inc. Cloud data synchronization with local data
KR102039028B1 (ko) 2012-02-24 2019-10-31 삼성전자 주식회사 휴대단말기의 데이터 공유 장치 및 방법
JP2013182292A (ja) 2012-02-29 2013-09-12 Keepdata Ltd クラウドシステム
US20140208220A1 (en) 2012-03-01 2014-07-24 Aditya Watal System and Method for Contextual and Collaborative Knowledge Generation and Management Through an Integrated Online-Offline Workspace
US9355120B1 (en) 2012-03-02 2016-05-31 Netapp, Inc. Systems and methods for managing files in a content storage system
US9043567B1 (en) * 2012-03-28 2015-05-26 Netapp, Inc. Methods and systems for replicating an expandable storage volume
US20130268480A1 (en) 2012-04-05 2013-10-10 Box, Inc. Method and apparatus for selective subfolder synchronization in a cloud-based environment
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9307006B2 (en) 2012-04-11 2016-04-05 Salesforce.Com, Inc. System and method for synchronizing data objects in a cloud based social networking environment
US8949179B2 (en) 2012-04-23 2015-02-03 Google, Inc. Sharing and synchronizing electronically stored files
US9479548B2 (en) 2012-05-23 2016-10-25 Haworth, Inc. Collaboration system with whiteboard access to global collaboration data
US9218353B2 (en) 2012-05-25 2015-12-22 Netapp, Inc. Method and system for name space propagation and file caching to remote nodes in a storage system
KR101694288B1 (ko) 2012-06-08 2017-01-09 한국전자통신연구원 비대칭형 클러스터 파일 시스템의 데이터 관리 방법
US9575978B2 (en) 2012-06-26 2017-02-21 International Business Machines Corporation Restoring objects in a client-server environment
CN103533006B (zh) 2012-07-06 2019-09-24 中兴通讯股份有限公司 一种联合云盘客户端、服务器、系统和联合云盘服务方法
US9037856B2 (en) 2012-07-18 2015-05-19 Nexenta Systems, Inc. System and method for distributed deduplication of encrypted chunks
US9547774B2 (en) 2012-07-18 2017-01-17 Nexenta Systems, Inc. System and method for distributed deduplication of encrypted chunks
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
CN103577503A (zh) 2012-08-10 2014-02-12 鸿富锦精密工业(深圳)有限公司 云端文件存储系统及方法
US8984582B2 (en) 2012-08-14 2015-03-17 Confidela Ltd. System and method for secure synchronization of data across multiple computing devices
JP2014038569A (ja) 2012-08-20 2014-02-27 Hitachi Maxell Ltd ディスク記録内容バックアップシステムおよびディスク記録内容バックアップ方法
US9087191B2 (en) 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US9075954B2 (en) 2012-08-29 2015-07-07 Dropbox, Inc. Requesting modification rights to a linked file set
US20140074783A1 (en) 2012-09-09 2014-03-13 Apple Inc. Synchronizing metadata across devices
US20140074663A1 (en) 2012-09-09 2014-03-13 Apple Inc. Integrating purchase history and metadata across devices
US9106721B2 (en) 2012-10-02 2015-08-11 Nextbit Systems Application state synchronization across multiple devices
US20140101310A1 (en) 2012-10-04 2014-04-10 Box, Inc. Seamless access, editing, and creation of files in a web interface or mobile interface to a collaborative cloud platform
CN103181143B (zh) 2012-10-22 2015-07-08 华为终端有限公司 一种播放流媒体文件的方法和装置
US8819587B1 (en) 2012-10-30 2014-08-26 Google Inc. Methods of managing items in a shared workspace
US9400800B2 (en) 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US9037556B2 (en) 2012-12-03 2015-05-19 Vmware, Inc. Distributed, transactional key-value store
US20140172783A1 (en) 2012-12-17 2014-06-19 Prowess Consulting, Llc System and method for providing computing environment delivery service with offline operations
US9143568B2 (en) 2012-12-18 2015-09-22 Microsoft Technology Licensing, Llc. Peer-to-peer sharing of cloud-based content
US9298391B2 (en) 2012-12-19 2016-03-29 Dropbox, Inc. Application programming interfaces for data synchronization with online storage systems
US9253075B2 (en) 2012-12-19 2016-02-02 Palo Alto Research Center Incorporated Dynamic routing protocols using database synchronization
US10198140B2 (en) 2012-12-20 2019-02-05 Dropbox, Inc. Systems and methods for facilitating communication between users of a content management service
US9678978B2 (en) 2012-12-31 2017-06-13 Carbonite, Inc. Systems and methods for automatic synchronization of recently modified data
US9614907B2 (en) 2013-01-04 2017-04-04 Bittorrent, Inc. Expediting content retrieval using peer-to-peer networks
US9294485B2 (en) 2013-01-27 2016-03-22 Dropbox, Inc. Controlling access to shared content in an online content management system
US9310981B2 (en) 2013-02-13 2016-04-12 Dropbox, Inc. Seamless editing and saving of online content items using applications
CN104009926B (zh) 2013-02-26 2017-04-12 杭州华三通信技术有限公司 Evi网络中的组播方法及边缘设备ed
US9020893B2 (en) 2013-03-01 2015-04-28 Datadirect Networks, Inc. Asynchronous namespace maintenance
US9794760B2 (en) 2013-03-14 2017-10-17 Cisco Technology, Inc. Collaborative group and content management utilizing user activated collaboration threads
US10341275B2 (en) 2013-04-03 2019-07-02 Dropbox, Inc. Shared content item commenting
US20140304384A1 (en) 2013-04-04 2014-10-09 Dropbox, Inc. Uploading large content items
KR101451194B1 (ko) 2013-04-11 2014-10-16 (주)씨디네트웍스 콘텐츠 전송 네트워크에서의 거리 계산 방법 및 장치
US9166866B2 (en) 2013-04-30 2015-10-20 Microsoft Technology Licensing, Llc Hydration and dehydration with placeholders
US9218350B2 (en) 2013-04-30 2015-12-22 Microsoft Technology Licensing, Llc Searching and placeholders
US9405767B2 (en) 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
US9189533B2 (en) 2013-05-29 2015-11-17 Microsoft Technology Licensing, Llc Sync framework extensibility
US20140359465A1 (en) 2013-05-31 2014-12-04 Nubo Software Ltd. Method and Apparatus for Annotated Electronic File Sharing
EP3005200A2 (en) 2013-06-03 2016-04-13 Good Start Genetics, Inc. Methods and systems for storing sequence read data
US20140365432A1 (en) 2013-06-10 2014-12-11 Dropbox, Inc. Dropsite for shared content
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US20150006475A1 (en) 2013-06-26 2015-01-01 Katherine H. Guo Data deduplication in a file system
US20150006146A1 (en) 2013-06-28 2015-01-01 Google Inc. Omega names: name generation and derivation
US9282169B1 (en) 2013-07-12 2016-03-08 Oxygen Cloud, Inc. Real-time user interaction-based alterations to the scope of data synchronization between client and remote devices
US20150019432A1 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Mobile payments using proximity-based peer-to-peer communication and an intent-to-pay gesture
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
JP6183092B2 (ja) 2013-09-19 2017-08-23 セイコーエプソン株式会社 画像記録装置
US9098413B2 (en) 2013-10-18 2015-08-04 International Business Machines Corporation Read and write requests to partially cached files
US9692840B2 (en) 2013-11-11 2017-06-27 Dropbox, Inc. Systems and methods for monitoring and applying statistical data related to shareable links associated with content items stored in an online content management service
US9778817B2 (en) 2013-12-31 2017-10-03 Findo, Inc. Tagging of images based on social network tags or comments
US9509747B2 (en) 2014-01-23 2016-11-29 Dropbox, Inc. Content item synchronization by block
US9641488B2 (en) 2014-02-28 2017-05-02 Dropbox, Inc. Advanced security protocol for broadcasting and synchronizing shared folders over local area network
US9547706B2 (en) 2014-03-10 2017-01-17 Dropbox, Inc. Using colocation hints to facilitate accessing a distributed data storage system
US9294558B1 (en) 2014-03-31 2016-03-22 Amazon Technologies, Inc. Connection re-balancing in distributed storage systems
ES2881606T3 (es) 2014-03-31 2021-11-30 Wandisco Inc Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada
US10075521B2 (en) 2014-04-07 2018-09-11 Cisco Technology, Inc. Collection synchronization using equality matched network names
US9473576B2 (en) 2014-04-07 2016-10-18 Palo Alto Research Center Incorporated Service discovery using collection synchronization with exact names
US10831380B2 (en) 2014-05-28 2020-11-10 Hitachi Vantara Llc System and method of collision management in a namespace of a storage system
US10387451B2 (en) 2014-05-30 2019-08-20 Apple Inc. Synchronization system for multiple client devices
US10387449B2 (en) 2014-05-30 2019-08-20 Hitachi Vantara Corporation Metadata favored replication in active topologies
US10523723B2 (en) 2014-06-06 2019-12-31 Koninklijke Kpn N.V. Method, system and various components of such a system for selecting a chunk identifier
US9729616B2 (en) 2014-07-18 2017-08-08 Cisco Technology, Inc. Reputation-based strategy for forwarding and responding to interests over a content centric network
US9729662B2 (en) 2014-08-11 2017-08-08 Cisco Technology, Inc. Probabilistic lazy-forwarding technique without validation in a content centric network
US9503402B2 (en) 2014-08-18 2016-11-22 Dropbox, Inc. Managing drafts of electronic documents across client devices
US9984110B2 (en) 2014-08-21 2018-05-29 Dropbox, Inc. Multi-user search system with methodology for personalized search query autocomplete
US9753955B2 (en) 2014-09-16 2017-09-05 Commvault Systems, Inc. Fast deduplication data verification
US10296163B2 (en) 2014-09-25 2019-05-21 Oracle International Corporation Electronic presentation repository and interface
US9727470B1 (en) 2014-09-30 2017-08-08 EMC IP Holding Company LLC Using a local cache to store, access and modify files tiered to cloud storage
US9286102B1 (en) 2014-11-05 2016-03-15 Vmware, Inc. Desktop image management for hosted hypervisor environments
US9866650B2 (en) 2014-12-03 2018-01-09 Verizon Digital Media Services Inc. Stream monitoring across a distributed platform
US10116732B1 (en) 2014-12-08 2018-10-30 Amazon Technologies, Inc. Automated management of resource attributes across network-based services
US10387794B2 (en) 2015-01-22 2019-08-20 Preferred Networks, Inc. Machine learning with model filtering and model mixing for edge devices in a heterogeneous environment
US9384226B1 (en) 2015-01-30 2016-07-05 Dropbox, Inc. Personal content item searching system and method
US9183303B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Personal content item searching system and method
US9185164B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Idle state triggered constrained synchronization of shared content items
US9413824B1 (en) 2015-01-30 2016-08-09 Dropbox, Inc. Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
US9361349B1 (en) 2015-01-30 2016-06-07 Dropbox, Inc. Storage constrained synchronization of shared content items
US10831715B2 (en) 2015-01-30 2020-11-10 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US11144510B2 (en) 2015-06-11 2021-10-12 Egnyte, Inc. System and method for synchronizing file systems with large namespaces
US9571573B1 (en) 2015-10-29 2017-02-14 Dropbox, Inc. Peer-to-peer synchronization protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9479578B1 (en) 2015-12-31 2016-10-25 Dropbox, Inc. Randomized peer-to-peer synchronization of shared content items
US20170208125A1 (en) 2016-01-19 2017-07-20 Hope Bay Technologies, Inc Method and apparatus for data prefetch in cloud based storage system
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items

Also Published As

Publication number Publication date
AU2016346892B2 (en) 2019-07-18
US10691718B2 (en) 2020-06-23
JP6603791B2 (ja) 2019-11-06
EP3779716A1 (en) 2021-02-17
AU2016346892C1 (en) 2019-10-03
EP3360059B1 (en) 2020-12-02
WO2017074697A1 (en) 2017-05-04
US20170124170A1 (en) 2017-05-04
AU2016346892A1 (en) 2018-02-15
EP3360059A1 (en) 2018-08-15

Similar Documents

Publication Publication Date Title
JP6603791B2 (ja) デジタルコンテンツアイテムのマルチプレミスホスティングのための同期プロトコル
JP6426325B1 (ja) デジタルコンテンツアイテムのマルチプレミスホスティングのための同期プロトコル
US9852147B2 (en) Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180413

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190904

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191011

R150 Certificate of patent or registration of utility model

Ref document number: 6603791

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250