(57)【要約】本発明は、デジタルコンテンツコンテンツにおける複数事項のホスティングのためのコンテンツアイテムブロック複製プロトコルである。一実施形態において、例えば、方法は、サーバから、サーバジャーナルエントリによって表されるコンテンツアイテムの１以上のコンテンツアイテムブロックを識別するサーバジャーナルエントリを受信することと、複製タスクログにおいてサーバジャーナルエントリに対応する複製タスクログエントリを格納することであって、複数のタスクログエントリはサーバジャーナルエントリによって表されるコンテンツアイテムの１以上のコンテンツアイテムブロックを識別し、かつ、ブロックサーバを識別する、ことと、前記複製タスクログエントリにおいて識別される１以上のコンテンツアイテムブロックを前記複製タスクログエントリで識別されるブロックサーバに送信するオファーを行うか、又は、前記複製タスクログエントリで識別される１以上のコンテンツアイテムブロックを前記複製タスクログエントリで識別されるブロックサーバからダウンロードするか何れかを行うことと、を含む。
2019506644.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
複数のコンテンツアイテムブロックの識別子をメタデータサーバから受信することであって、コンテンツアイテムは前記複数のコンテンツアイテムブロックを含む、ことと、
前記受信した識別子の少なくとも一部に基づいて、複製タスクログに複製ログエントリを格納することであって、前記複製タスクログエントリは複数のコンテンツアイテムブロックの前記識別子と、コンテンツアイテムブロックサーバの識別子とを含む、ことと、
前記複製タスクログエントリの処理の少なくとも一部に基づいて、前記複製タスクログエントリにおいて識別される前記コンテンツアイテムブロックサーバへ、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの少なくとも１つのコンテンツアイテムブロックを、前記複製ログエントリにおいて識別される前記コンテンツアイテムブロックサーバへ送信するオファーを送信することと、
前記コンテンツアイテムブロックサーバから、前記少なくとも１つのコンテンツアイテムブロックを送信する前記オファーの承認を受信することと、
前記受信した承認の少なくとも一部に基づいて、前記少なくとも１つのコンテンツアイテムブロックを前記コンテンツアイテムブロックサーバに送信することと
を含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、さらに、
前記複製ログエントリの前記処理の完了の少なくとも一部に基づいて、前記複製ログエントリが完了したことを示すように前記複製ログエントリを更新することを含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てが前記複製ログエントリで識別される前記コンテンツアイテムブロックサーバへオファーされることを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、
前記承認は、送信するために、前記コンテンツアイテムが構成される前記複数のコンテンツアイテムブロックのうち、１以上のコンテンツアイテムブロックを識別し、
前記識別された１以上のコンテンツアイテムブロックは前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てを含むのではなく、
前記方法は、さらに、
前記識別された１以上のコンテンツアイテムブロックを前記コンテンツアイテムブロックサーバへ送信することを含むことを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、
前記コンテンツアイテムブロックサーバは第１のコンテンツアイテムブロックサーバであり、
前記方法は、さらに、
前記複製ログエントリを処理する前に、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの少なくとも１つを、前記第１のコンテンツアイテムブロックサーバではない第２のコンテンツアイテムブロックサーバからダウンロードすることを含むことを特徴とする方法。
【請求項６】
請求項１に記載の方法であって、さらに、
コンテンツアイテムネームスペースに関連付けられる現在のクライアントジャーナルカーソル値を判定することと、
前記現在のクライアントジャーナルカーソル値と、前記関連付けられたコンテンツアイテムネームスペースの識別子とを前記メタデータサーバへ送信することと、を含み、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの前記受信した識別子は、前記送信された現在のクライアントジャーナルカーソル値と、前記コンテンツアイテムネームスペースの識別子との少なくとも一部に基づくことを特徴とする方法。
【請求項７】
請求項１に記載の方法であって、さらに、
コンテンツアイテムネームスペースが前記コンテンツアイテムブロックサーバへ割り当てられるかを判定することであって、前記コンテンツアイテムは前記コンテンツアイテムネームスペースに属する、ことを含み、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの前記少なくとも１つのコンテンツアイテムを前記コンテンツアイテムブロックサーバへ送信する前記オファーは、前記コンテンツアイテムネームスペースが前記コンテンツアイテムブロックサーバに割り当てられるかの判定の少なくとも一部に基づくことを特徴とする方法。
【請求項８】
請求項１に記載の方法であって、
前記コンテンツアイテムブロックサーバは第１のコンテンツアイテムブロックサーバであり、
前記複製ログエントリは、前記第１のコンテンツアイテムブロックサーバではない第２のコンテンツアイテムブロックサーバの識別子を含み、
前記方法は、さらに、
前記複製ログエントリの前記処理の少なくとも一部に基づいて、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの前記少なくとも１つのコンテンツアイテムブロックを前記複製ログエントリで識別される前記第２のコンテンツアイテムブロックサーバに送信することをオファーすることを含むことを特徴とする方法。
【請求項９】
請求項１に記載の方法であって、
前記方法はコンピューティングシステムによって実行され、
前記コンテンツアイテムブロックサーバは第１のコンテンツアイテムブロックサーバであり、
前記コンテンツアイテムはコンテンツアイテムネームスペースに属し、
前記方法は、さらに、
前記コンテンツアイテムネームスペースが割り当てられた前記第１のコンテンツアイテムブロックサーバではない第２のコンテンツアイテムブロックサーバを判定することと、
前記コンピューティングシステムと前記第２のコンテンツアイテムブロックサーバとの間でペアリングの関係が存在しないかを判定することと、
前記ペアリングの関係が存在しないことの判定の少なくとも一部に基づき、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの何れかを、前記第２のコンテンツアイテムブロックサーバへ送信することをオファーしないかを判定することと、を含み、
前記複製ログエントリは前記第２のコンテンツアイテムブロックサーバを識別しないことを特徴とする方法。
【請求項１０】
請求項１に記載の方法であって、
前記方法はコンピューティングシステムによって実行され、
前記方法は、さらに、最長時間未使用の（LRU）基準に従った削除のために、前記コンピューティングシステムにローカルに格納される１以上のコンテンツアイテムブロックを識別することを含み、
前記LRU基準は、コンテンツアイテムブロックのダウンロード時刻、コンテンツアイテムブロックのアップロード時刻、又は、コンテンツアイテムブロックのダウンロード時刻及びコンテンツアイテムブロックのアップロード時刻、に基づくことを特徴とする方法。
【請求項１１】
請求項１に記載の方法であって、
前記メタデータサーバから、前記コンテンツアイテムを構成する複数のコンテンツアイテムの前記識別子を受信することは、前記コンテンツアイテムブロックサーバへの前記コンテンツアイテムネームスペースの割り当てに少なくとも部分的に基づくことを特徴とする方法。
【請求項１２】
方法であって、
複数のコンテンツアイテムブロックの識別子をメタデータサーバから受信することであって、コンテンツアイテムは前記複数のコンテンツアイテムブロックを含む、ことと、
前記受信した識別子の少なくとも一部に基づいて、複製ログに複製ログエントリを格納することであって、前記複製ログのエントリは複数のコンテンツアイテムブロックの前記識別子と、コンテンツ管理サービスの構外コンテンツアイテムブロックサーバの識別子とを含む、ことと、
前記複製ログのエントリの少なくとも一部に基づいて、前記複製ログのエントリにおいて識別される前記構外コンテンツアイテムブロックサーバから、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックのうち少なくとも１つのコンテンツアイテムブロックをダウンロードすることと
を含むことを特徴とする方法。
【請求項１３】
請求項１２に記載の方法であって、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てが前記構外コンテンツアイテムブロックサーバからダウンロードされることを特徴とする方法。
【請求項１４】
請求項１２に記載の方法であって、さらに、
前記複製ログのエントリの前記処理の完了の少なくとも一部に基づき、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てをダウンロードした後に、前記複製ログのエントリが完了したことを示すように更新することをさらに含むことを特徴とする方法。
【請求項１５】
１つ以上のプロセッサによって実行されると、請求項１乃至１４のいずれか１項に記載の方法の動作を行わせる命令を格納した１つ以上の記憶媒体。
【請求項１６】
システムであって、
１以上のプロセッサと、
１つ以上のプロセッサによって実行されると、請求項１乃至１４のいずれか１項に記載の方法の動作を行わせる命令を格納した１つ以上の記憶媒体と
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、デジタルコンテンツアイテムの管理に関するものである。より詳細には、本発明の実施形態は、オンラインコンテンツ管理サービスでホスト（host）されるデジタルコンテンツアイテムの管理に関して以下で説明される。
【背景技術】
【０００２】
[0002]従来、企業において、それらのデジタルコンテンツアイテム（例えば、ドキュメント、ファイル、及び他のデジタル情報）は、自身で所有し運用するネットワークファイルサーバ上に格納されている。そのようなファイルサーバは従来、ファイルサーバへの未認証のネットワークアクセスを防ぐネットワークファイアウォール内の構内に配置される。この配置は、とりわけファイルサーバへのネットワークアクセスが、例えばファイルサーバと同一のローカルエリアネットワーク（LAN）へ接続されるようなネットワークファイアウォール内のコンピュータによる場合に上手く作用する。場合によっては、ファイアウォール外部からのファイルサーバへのネットワークアクセス（例えば、インターネットを介した）は、仮想プライベートネットワーク（VPN）によって容易になる。VPNは実際、ファイアウォール外部のコンピュータがファイアウォール内に存在するかのようにファイルサーバに見える。
【発明の概要】
【０００３】
[0003]しかし、今日では、労働力はよりグローバル化し、よりモバイル化している。これは、ブロードバンドインターネット接続の広範囲での利用と、また比較的に安価で強力な例えばモバイルフォン、ラップトップコンピュータ及びタブレットコンピュータなどの携帯型パーソナルコンピューティングデバイスの利用により、大いに加速している。結果として、従業員は事実上どこでも働くことができ、彼らの仕事を行うオフィスに物理的に存在する必要はない（例えば、彼らは遠隔で働くことができる）。
【０００４】
[0004]最近、オンラインコンテンツ管理サービスは、コンテンツアイテムを、インターネット又は他のネットワークでアクセス可能な”オンライン”で格納することについて利用可能となっている。企業では、サービスにより運用されるサーバ上でそれらのコンテンツアイテムを”ホスト”するのにオンラインコンテンツ管理サービスを使用することができる。オンラインコンテンツ管理サービスの例には、カリフォルニア州、サンフランシスコのDropbox, Inc.により提供されている”Dropbox”サービスがある。
【０００５】
[0005]コンテンツアイテムのオンラインストレージは企業やそれらの従業員に対して同様に多くの利益をもたらすことができる。例えば、Dropboxは、同期の能力をオファーし、複数のデバイス及びユーザの中で、ホストされるコンテンツアイテムを共有する。この柔軟性は、エンドユーザデバイスとDropboxサーバの両方でコンテンツアイテムを保存することに起因し、種々の異なる場所で、かつ、遠隔の勤務形態をサポートし、従業員への利便性と、雇用者に対する向上した従業員生産性とを提供する。
【０００６】
[0006]企業によって生成されるデジタル情報量が増加することを考えると、オンラインコンテンツ管理サービスを利用している企業によるコンテンツアイテムのホスティングは増加するのみと予想されうる。しかしながら、いくつかのホストされる情報の機密性に起因して、ビジネスユーザを含むそのようなサービスのユーザは、サービスによりホストするコンテンツアイテムに対するより大きなレベルの制御を提供するサービスへの改善を評価するであろう。さらに、ブロードバンドインターネット接続が今日の企業間で広がっており、インターネットを介してコンテンツアイテムをアップロードすることやダウンロードすることはユーザが期待又は望むよりもまだ時間の掛かるものである。
【０００７】
[0007]ここで説明した上記アプローチは、さらに追及しうるアプローチであって、既に着想され、追及されたアプローチではない。したがって、特に示唆しない限り、ここで説明した任意のアプローチが、ここに組み込まれることにより単に先行技術として認識されることが想定されるべきではない。
【図面の簡単な説明】
【０００８】
[0008]本発明の例示の実施形態が、限定するのではなく一例として説明され、添付図面の各図において、同様の参照番号は同様の要素を示す。
【図１】[0009]図１は、本発明のいくつかの実施形態が実装される、例示のシステム環境のブロック図である。
【図２】[0010]図2は、本発明のいくつかの実施形態が実装される、例示のシステム環境のブロック図である。
【図３】[0011]図３は、本発明のいくつかの実施形態に係る、コンテンツアイテムブロックの複製メタデータのブロック図である。
【図４】[0012]図４は、本発明のいくつかの実施形態に係る、コンテンツアイテムサーバジャーナルのブロック図である。
【図５】[0013]図５は、本発明のいくつかの実施形態に係る、コンテンツアイテムブロックの複製ログのブロック図である。
【図６】[0014]図６は、本発明のいくつかの実施形態に係る、構内のブロックサーバへコンテンツアイテムブロックの複製タスクを提供するための処理のフローチャートである。
【図７Ａ】、
【図７Ｂ】、
【図７Ｃ】[0015]図７Ａ乃至図７Ｃは、本発明のいくつかの実施形態に係る、構内ブロックサーバに格納される複製ログで特定される複製タスクの処理において、構内ブロックサーバでのブロックエージェントの動作を示す単一のフローチャートである。
【図８】[0016]図８は、本発明のいくつかの実施形態を具現化しうるコンピューティングデバイスのごく一般的なブロック図を示す。
【図９】[0017]図９は、コンピューティングデバイスの動作を制御するための基本的なソフトウェアシステムのブロック図である。
【発明を実施するための形態】
【０００９】
[0018]以下の詳細な説明において、本発明の実施形態の十分な理解を提供するために、説明の目的で多くの特定事例を記載する。しかしながら、本例示の実施形態がそれらの特定事例なしで実行されうるということが明らかであろう。他の例では、本例示の実施形態を不必要に不明りょうにすることを避けるために、既知の構成やデバイスがブロック図の形式で示される。
【００１０】
[0019]本例示の実施形態を以下の概要に従って説明する。
1.0 実施例
2.0 例示のシステム環境
3.0 コンテンツアイテムブロックの複製
3.1 複製メタデータ
3.2 サーバジャーナル
3.3 複製ログ
3.4 複製タスクの提供
3.5 複製タスクの処理
4.0 コンテンツアイテムブロックの削除
5.0 割り当ての際のコンテンツアイテムブロックの複製
6.0 ベーシックコンピューティングハードウェア及びソフトウェア
6.1 ベーシックコンピューティングデバイス
6.2 ベーシックソフトウェアシステム
7.0 拡張及び代替例。
【００１１】
＜1.0 実施例＞
[0020]本発明の例示の実施形態は、オンラインコンテンツ管理サービスのユーザに対して、彼らのコンテンツアイテムがそのようなサービスでホストされる、より詳細な制御を提供する。以下では、多くのコンピュータで実施する処理及びインターネットインタラクションについて説明する。それらの処理及びネットワークインタラクションを説明するために、いくつかの例示のユーザを紹介する。本例示は、本発明のいくつかの実施形態の特徴を説明するために使用され、本発明のいくつかの実施形態の所定の特徴を説明するために使用される。本例示は、限定することを意図しておらず、単に説明のために提供されるものである。
【００１２】
[0021]第１の例示のユーザは、”Corporation Alpha”として参照される。第１例として、Corporation Alphaは、彼らのワークコンピュータに格納されるコンテンツアイテムを、当該サービスによって運用されるインターネット上のサーバに格納されるコンテンツアイテムと同期するオンラインコンテンツ管理サービスを使用する多くの従業員を有している。Corporation Alphaでは、コンテンツアイテムが彼らのワークコンピュータに格納されるため、従業員は、彼らのワークコンピュータがインターネットへ接続していない場合でもコンテンツアイテムへのアクセスを有することが好まれている。同時に、Corporation Alphaではまた、コンテンツアイテムがバックアップと共有目的でオンラインコンテンツ管理サービスのサーバに同期されることが好まれている。Corporation Alphaはまた、可能な場合、従業員のワークコンピュータ間でコンテンツアイテムの変更を同期するために必要とする時間を低減することを望んでいる。
【００１３】
[0022]第２例として、Corporation Alphaの従業員は地理的に分散してもよい。例えば、Corporation Alphaの本部は、サンフランシスコにあってもよいが、ニューヨーク、オースティン、及びシアトルのサテライトオフィスを有してもよい。Corporation Alpha内のチームはまた、地理的に分散してもよい。例えば、サンフランシスコの従業員とオースティンのオフィスとがプロジェクトを共に協働して行ってもよい。Corporation Alphaは、チームが協働するコンテンツアイテムへの変更がサンフランシスコとオースティンのオフィスのコンピュータ間で素早く同期されることを望むであろう。
【００１４】
[0023]第３の例として、サンフランシスコとオースティンのCorporation Alphaの従業員が協働して行うプロジェクトが非常に機密性（例えば、コンフィデンシャル）の高いものであってもよい。この場合、Corporation Alphaは、プロジェクトに関連付けられるコンテンツアイテム上でより高い制御と監視を維持することを望んでもよい。例えば、Corporation Alphaは、プロジェクトのコンテンツアイテムが構内にのみ格納され、オンラインコンテンツ管理サービスによって運用されるサーバ上には格納されないことを望んでもよい。
【００１５】
[0024]本発明の特徴を利用すると、Corporation Alphaなどのユーザや他のユーザは、オンラインコンテンツ管理サービスによって管理されるコンテンツアイテムがどこでホストされるかを制御することができる。特に、例示の実施形態は、ユーザが、彼らのコンテンツアイテムを構内でのみ、構外でのみ、又は、構内及び構内の両方でホストすることを許容する。構内でコンテンツアイテムをホストする場合、ユーザは彼ら自身のストレージハードウェアを使用することができる（いくつかの例示の実施形態では構内でのコンテンツアイテムのストレージハードウェアを提供するオンラインコンテンツ管理サービスを含むが）。例示の実施形態は、エンドユーザのデバイスが、エンドユーザのデバイスで行われたコンテンツアイテムへの変更を構内のストレージに、構外のストレージに、又は、構内のストレージ及び構外のストレージの両方に、同期することを許容する。例示の実施形態はまた、エンドユーザのデバイスが、他のエンドユーザのデバイスによって行われたコンテンツアイテムへの変更を、構内のストレージから、構外のストレージから、又は、構内のストレージ及び構外のストレージの両方から、同期することを許容する。
【００１６】
[0025]これらの実施例は、本発明のいくつかの実施形態の特徴を説明するために以下の説明の一部と関連して利用される。
【００１７】
＜2.0 例示のシステム環境＞
[0026]本発明のいくつかの実施形態の特徴について、本発明の例示の実施形態が実施される例示のシステム環境１００のブロック図である図１を参照して説明する。図示するように、ユーザ（例えば、１０２−１）は、パーソナルコンピューティングデバイス（例えば、１１０−１）を有するか又は使用しうる。パーソナルコンピューティングデバイスは、ローカルストレージ（例えば、１１２−１）とコンテンツアイテム同期エージェント（例えば、１１４−１）とを有しうる。パーソナルコンピューティングデバイスのローカルストレージは１以上のコンテンツアイテム１１３を格納しうる。構内のブロックサーバ１２０は、ブロックサービス１２２、ブロックストレージ１２４、及びブロック管理エージェント１２６から構成されうる。ブロックストレージ１２４は複数のコンテンツアイテムブロック１２５を格納しうる。オンラインコンテンツ管理サービスは制御プレーン、ストレージプレーン、及びデータプレーンから構成されうる。制御プレーンは通知サーバ１４０、メタデータサーバ１５０、及びウェブサイト１７０を含みうる。ストレージプレーンは構内のブロックサーバ１３０を含みうる。構内のブロックサーバ１３０は、ブロックサービス１３２、及びブロックストレージ１３４から構成されうる。構内のブロックサーバ１３０のブロックストレージ１２４は１以上のコンテンツアイテムブロック１２５を格納しうる。バックエンドデータバスは、サーバ１３０、１４０、１５０、１７０を含む制御プレーン及びストレージプレーン内で、及び、制御プレーンとストレージプレーンとの間でのデータのネットワーク通信及び移動を容易にする、コンピューティングデバイス、ネットワーク、及びネットワークデバイスの集合から構成されうる。バックエンドデータバスはまた、サーバ１３０、１４０、１５０、１７０を含む制御プレーン及びストレージプレーンによって、メタデータプレーン１８０へのアクセスを容易にすることができる。データプレーン１８０は、データを読み出したり格納したりするための、１以上の揮発性又は不揮発性メモリベースの分散型のデータシステムを含んで構成されうる（例えば、memcache、RDBMS、分散key-valueストアなど）。
【００１８】
[0027]図１の例において、システム環境１００は、それぞれパーソナルコンピューティングデバイス１１０−１及びパーソナルコンピューティングデバイス１１０−２を含む又は用いるユーザ１０２−１及びユーザ１０２−２を含む。パーソナルコンピューティングデバイス１１０−１は、ローカルストレージ１１２−１とコンテンツアイテム同期エージェント１１４−１とを有する。パーソナルコンピューティングデバイス１１０−２はまた、ローカルストレージ１１２−２とコンテンツアイテム同期エージェント１１４−２とを有する。図１において簡潔な説明を提供すべく、システム環境１００において二人のユーザ（１０２−１、１０２−２）及び２つのパーソナルコンピューティングデバイス（１１０−１、１１０−２）のみを示しているが、システム環境１００は二人のユーザより多くを含み、及び、それぞれがローカルストレージとコンテンツアイテム同期エージェントを含む二つのパーソナルコンピューティングデバイスより多くを含んでもよいことが理解されるべきである。例えば、システム環境１００は、何百、何千、何百万のユーザ、又は何百、何千、何百万のパーソナルコンピューティングデバイスを含んでもよい。さらに、ユーザとパーソナルコンピューティングデバイスが一対一で対応する必要性はない。例えば、単一のパーソナルコンピューティングデバイスが複数のユーザによって使用されてもよく、単一のユーザが複数のパーソナルコンピューティングデバイスを有するか又は使用してもよい。
【００１９】
[0028]本発明のいくつかの例示の実施形態に従って、ユーザ１０２−１は、パーソナルコンピューティングデバイス１１０−１のローカルストレージ１１２−１にコンテンツアイテム１１３を追加するか又はコンテンツアイテム１１３を変更するために、パーソナルコンピューティングデバイス１１０−１を使用することができる。パーソナルコンピューティングデバイス１１０−１のコンテンツアイテム同期エージェント１１４−１はその後、ローカルストレージ１１２−１へのコンテンツアイテム１１３の追加又は変更を自動的に検出し、構内ブロックサーバ１２０又は構外ブロックサーバ１３０へコンテンツアイテム１１３をアップロードする。いくつかの例示の実施形態によれば、以下でより詳細に説明するように、上記アップロードは、コンテンツアイテム同期プロトコルに従って、コンテンツアイテム同期エージェント１１４−１とメタデータサーバ１５０との間のネットワーク通信によって容易に行われる。
【００２０】
[0029]本発明のいくつかの例示の実施形態に従って、他のパーソナルコンピューティングデバイス１１０−２は、追加又は変更されたコンテンツアイテム１１３を、パーソナルコンピューティングデバイス１１２−２のローカルストレージ１１２−２へ自動的にダウンロードする。最初に、通知サーバ１４０は、パーソナルコンピューティングデバイス１１２−２のコンテンツアイテム同期エージェント１１４−２に対して、コンテンツアイテム１１３の新たなバージョンが利用可能であることを通知する。その後、コンテンツアイテム同期プロトコルに従って同期エージェント１１４−２とメタデータサーバ１５０との間の直接的なネットワーク通信によって、コンテンツアイテム同期エージェント１１４−２は、構内ブロックサーバ１２０又は構外ブロックサーバ１３０からコンテンツアイテム１１３の新たなバージョンをダウンロードする。ダウンロード後、コンテンツアイテム１１３の新たなバージョンは、ローカルストレージ１１２−２においてユーザ１０２−２に利用可能となる。
【００２１】
[0030]パーソナルコンピューティングデバイス（例えば、１１０−１又は１１０−２）は、固定型の又は携帯型のパーソナルコンピューティングデバイスであってもよい。例えば、パーソナルコンピューティングデバイスは、デスクトップコンピュータ、ワークステーションコンピュータ、モバイル電話機、ラップトップコンピュータ、タブレットコンピュータ、又は、他の固定型の若しくは携帯型のパーソナルコンピューティングデバイスであってもよい。パーソナルコンピューティングデバイスは、例えば図８を参照して以下で説明されるベーシックコンピューティングデバイス８００などの１以上のベーシックハードウェアコンポーネントを含んで構成されてもよい。パーソナルコンピューティングデバイスはまた、例えば図９を参照して以下で説明されるソフトウェアシステム９００などの１以上のベーシックソフトウェアシステムで構成されてもよい。
【００２２】
[0031]ローカルストレージ（例えば、１１２−１又は１１２−２）は、物理ホストインタフェース（シリアル接続SCSI、シリアルATA、PCI Express、ファイバーチャネル、USBなど）によってパーソナルコンピューティングデバイス１１０のバスへ接続される電子、磁気又は光学のデータストレージ機構であってもよい。例えば、データストレージ機構は、パーソナルコンピューティングデバイスのハードディスク、半導体ドライブ、又は光学ドライブであってもよい。代替的に、ローカルストレージは、パーソナルコンピューティングデバイス上に”マウントされた”ローカルエリアネットワーク（LAN）上の例えばネットワークデータストレージデバイスなどのネットワークドライブであってもよい。ネットワークドライブをマウントすることによって、ネットワークドライブに格納されたデータは、ネットワークドライブがデバイスから離れてネットワークを介して物理的に配置される場合であっても、ユーザや、パーソナルコンピューティングデバイスに格納されるパーソナルコンピューティングデバイス上で実行するアプリケーションに見えるようになる。一度マウントされると、パーソナルコンピューティングデバイスは、通常、UNIX用のネットワークファイルシステムプロトコル（NFS）又はWINDOWS用のサーバメッセージブロック（SMB）などのネットワークファイルシステムブロックに従ってネットワークドライブからデータを読み出し、ネットワークドライブへデータを書き込む。
【００２３】
[0032]パーソナルコンピューティングデバイスのローカルストレージはコンテンツアイテム１１３を格納してもよい。”コンテンツアイテム”はデジタル情報の集合である。ローカルストレージに格納されると、コンテンツアイテムはファイルシステムのファイルに対応しうる。例えば、コンテンツアイテムは、ドキュメントファイル（例えば、ワード処理ドキュメント、プレゼンテーションドキュメント、スプレッドシートドキュメント、又は他のタイプのドキュメント）、画像ファイル（例えば、．ｊｐｇ、．ｔｉｆｆ、．ｇｉｆ、又は他のタイプの画像ファイル）、音声ファイル（例えば、．ｍｐ３、．ａｉｆｆ、．ｍｐ４、ｗａｖ、又は他のタイプの音声ファイル）、ビデオファイル（例えば、．ｍｏｖ、．ｍｐ４、．ｍ４ｖ、又は他のタイプのビデオファイル）、ウェブページファイル（例えば、．ｈｔｍ、．ｈｔｍｌ、又は他のタイプのウェブページファイル）、テキストファイル又はリッチテキストファイル（例えば、．ｔｘｔ、．ｒｔｆ、又は他のタイプのテキスト若しくはリッチテキストファイル）、又は他のタイプのファイルであってもよい。ローカルストレージに格納されると、コンテンツアイテムは、ファイルシステムのファイルフォルダ階層内のファイルシステムパスを有しうる。例えば、ローカルストレージに格納されるコンテンツアイテムについてのファイルシステムパスは、文字列として”C:\folder1\folder2\my.file”で表され、ここで、“C:\”は、ファイルシステムのルートを示し、“folder1”はファイルシステムのルートでのファイルシステムフォルダを示し、“folder2”はファイルシステムフォルダ“folder1”内のファイルシステムフォルダを示し、“my.file”はコンテンツアイテムに対応するファイルシステムフォルダ“folder2”内のファイルを示す。文字“\”は、異なるファイルシステムフォルダや文字列表現のファイルリファレンスを描く文字列表現において使用される。
【００２４】
[0033]パーソナルコンピューティングデバイス１１０−１及び１１０−２と、構内ブロックサーバ１２０とは、ローカルエリアネットワーク（LAN）１６０へ接続されてもよい。例えば、LAN１６０は、限定はしないが、ＩＥＥＥ８０２．３又はＩＥＥＥ８０２．１１ベースのネットワークを含むＩＥＥＥ８０２ベースのネットワーク、又は複数のそのようなネットワークの組み合わせであってもよい。ＬＡＮ１６０は、ネットワークファイアウォールによってワイドエリアネットワーク（ＷＡＮ）１９０から保護されてもよい。一実施形態において、ＷＡＮ１９０は、インターネット又は他の公衆ネットワークである。特に、ネットワークファイアウォールは、サーバ１３０、１４０、１５０及び１７０を含む、ＷＡＮ１９０へ接続されるデバイスが、パーソナルコンピューティングデバイス１１０−１及び１１０−２と構内ブロックサーバ１２０とを含む、ＬＡＮ１６０へ接続されるデバイスとのネットワーク接続の開始を禁止することができる。しかしながら、ネットワークファイアウォールは、サーバ１３０、１４０、１５０及び１７０を含む、ＷＡＮ１９０へ接続されるデバイスと確立される、パーソナルコンピューティングデバイス１１０−１及び１１０−２と、構内ブロックサーバ１２０とを含む、ＬＡＮ１６０へ接続されるデバイスを起点とする所定のタイプのネットワーク接続を許容するように構成されうる。通常、ＬＡＮ１６０は、ＷＡＮ１９０と比較して、短いネットワーク待ち時間と、広いネットワーク帯域幅とを有するが、所与の実装においてこれが必須である必要はない。
【００２５】
[0034]構内ブロックサーバ１２０、構外ブロックサーバ１３０、通知サーバ１４０、メタデータサーバ１５０、ウェブサイト１７０及びメタデータプレーン１８０の何れか又は全ては、例えば図８を参照して以下で説明するベーシックコンピューティングデバイス８００などの１以上のベーシックハードウェアコンポーネントを含んで構成され、かつ、例えば図９を用いて以下で説明するソフトウェアシステム９００などのベーシックソフトウェアシステムで構成される、１以上のサーバコンピューティングデバイスによって実装されてもよい。複数のサーバコンピューティングデバイスによって実装される場合、それらのサーバコンピューティングデバイスは、負荷分散型、クラスタ型、または他の分散型のコンピューティング構成で構成されてもよい。
【００２６】
[0035]コンテンツアイテム同期エージェント、ブロックサービス１２２、ブロックエージェント１２６、ブロックサービス１３２、通知サーバ１４０、メタデータサーバ１５０、ウェブサイト１７０、及びメタデータプレーン１８０のそれぞれについて、ここで説明する機能は、１以上のコンピューティングデバイスによって実行される際に、当該機能を実行するための命令を含む１以上のコンピュータプログラムとして実装されてもよい。しかしながら、当該機能は、ハードウェア（例えば、１以上の特定用途向け集積回路（ＡＳＩＣＳ）又は１以上のフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡｓ））、又は、手近な特定の実装の要件に応じたハードウェアとソフトウェアの組み合わせで実装されてもよい。
【００２７】
[0036]図１の例示は簡潔な例示を提供する目的で単一の構内ブロックサーバ１２０のみを示しているが、本システム環境１００は、オンラインコンテンツ管理サービスのユーザの関連グループの数に従って、何十、何百、何千、何百万又はそれ以上の構内ブロックサーバを含んでもよい。例えば、オンラインコンテンツ管理サービスは、種々の異なる組織、企業、団体、学校、大学、他のグループに属する何百万又はそれ以上のユーザをサポートしてもよい。それらの組織、企業、団体、学校、大学及び他のグループのそれぞれは、１以上の構内ブロックサーバを有するか、又は使用してもよい。
【００２８】
[0037]ここで使用する用語”構内（on-premises）”は、１以上のパーソナルコンピューティングデバイス及びコンテンツ管理サービス、特に、オンラインコンテンツ管理サービスの構外ブロックサーバ１３０に関連することを意図している。構内ブロックサーバ（例えば、１２０）は、パーソナルコンピューティングデバイスと同じ施設又は同じ建物内に配置されるが、そうである必要はない。また、パーソナルコンピューティングデバイスと同じローカルエリアネットワーク（例えば、１６０）に構内ブロックサーバを接続する必要はないが、そのようにしてもよい。従って、ここでの”構内”ブロックサーバという参照は、構外ブロックサーバ１３０から所定のパーソナルコンピューティングデバイスまでよりも、当該ブロックサーバが地理的な及び／又はネットワークに関して所定のパーソナルコンピューティングデバイスにより近いことを意味する。構内ブロックサーバへのパーソナルコンピューティングデバイスのネットワーク接続が一般的に、構外ブロックサーバ１３０へのパーソナルコンピューティングデバイスのネットワーク接続よりも短いネットワーク待ち時間及び／又は広いネットワーク帯域幅の性能を提供する場合、パーソナルコンピューティングデバイスは、ネットワーク上において構外ブロックサーバ１３０よりも構内ブロックサーバにより近いといえる。
【００２９】
[0038]パーソナルコンピューティングデバイスは、例えば、構内ブロックサーバ１２０、構外ブロックサーバ１３０、メタデータサーバ１５０、及びウェブサイト１７０を含む種々のサーバのネットワーク要求、又は単に”要求”を行うことができる。そして、サーバ１２０、１３０、１５０及び１７０は、パーソナルコンピューティングデバイスからの要求に対して、ネットワーク応答、又は単に”応答”を返すことができる。上記要求は、通常、ヘッダとペイロードを含む。上記要求のヘッダは、通常、当該要求を受信するサーバへ、当該要求のペイロードの内容を提供する。要求への上記応答もまた、通常、ヘッダとペイロードを含む。応答の上記ヘッダは、通常、当該応答を受信するパーソナルコンピューティングデバイスへ、当該応答のペイロードの内容を提供する。パーソナルコンピューティングデバイスからの要求と、サーバによってそれらに返される応答とは、１以上のネットワーク（例えば、１６０及び１９０）を介して送信され、例えばハイパー・テキスト・トランスファープロトコル（HTTP）などの要求−応答ネットワークプロトコルに従って行われてもよい。要求とそれらへの応答とは、例えば、送信制御プロトコル（TCP）などの接続指向ネットワークプロトコルに従ってパーソナルコンピューティングデバイスとサーバとによって確立されたネットワーク接続を介して送信されてもよい。ネットワーク接続は、２以上の要求及び応答のペアが当該ネットワーク接続を介して送信されるという意味で長寿命であってもよい。ネットワーク接続はまた、例えば、トランポート・レイヤ・セキュリティ（TLS）又はセキュア・ソケット・レイヤ（SSL）などの暗号ネットワークプロトコルに従って暗号化されてもよい。しかしながら、特定のネットワークプロトコル又はネットワークプロトコルの特定の組合せが、例示の実施形態によって必要とされず、HTTP、TCP、TLS又はSSL以外のプロトコルが手近な特定の実装の要件に従って使用されてもよい。
【００３０】
＜3.0 コンテンツアイテムブロックの複製＞
[0039]本発明の種々の実施形態によれば、コンテンツアイテムネームスペースは、２つ以上のブロックサーバに割り当てることができる。例えば、コンテンツアイテムネームスペースは、１以上の構内ブロックサーバと構外ブロックサーバ、又は２以上の構内ブロックサーバへ割り当てられてもよい。そのようなコンテンツアイテムネームスペースに属する新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されると、新たなコンテンツアイテムの新たなコンテンツアイテムブロックがコンテンツアイテムネームスペースが割り当てられた１以上のブロックサーバへアップロードされる。しかしながら、パーソナルコンピューティングデバイスのコンテンツアイテム同期エージェントは、新たなコンテンツアイテムブロックがアップロードされたものとは異なる、割り当てられたブロックサーバから新たなコンテンツアイテムの欠落したコンテンツアイテムブロックをダウンロードすることを選択することができる。例えば、コンテンツアイテム同期エージェントは、欠落したコンテンツアイテムブロックがダウンロードされるブロックサーバよりもネットワーク上でより近い、割り当てられたブロックサーバを選択することができる。
【００３１】
[0040]本発明のいくつかの例示の実施形態によれば、コンテンツアイテムネームスペースが割り当てされたブロックサーバにおいてコンテンツアイテムブロックの利用可能性を増大させるために、構内ブロックサーバ（例えば、１２０）のブロックエージェント（例えば、１２６）は、オンラインコンテンツ管理サービスと協働して、コンテンツアイテムブロックの複製プロトコルを実行する。コンテンツアイテムブロックの複製プロトコルによれば、新たなコンテンツアイテムの新たなコンテンツアイテムブロックが構内ブロックサーバへアップロードされると、構内ブロックサーバは、新たなコンテンツアイテムブロックを、新たなコンテンツアイテムが属するコンテンツアイテムネームスペースへ割り当てられた他のブロックサーバに複製することができる。また、コンテンツアイテムブロックの複製プロトコルによれば、新たなコンテンツアイテムの新たなコンテンツアイテムブロックが構外ブロックサーバへアップロードされると、構外ブロックサーバは、新たなコンテンツアイテムブロックを、新たなコンテンツアイテムが属するコンテンツアイテムネームスペースへも割り当てられた任意の構内ブロックサーバに複製することができる。この方法で、ブロックサーバへアップロードされた新たなコンテンツアイテムの新たなコンテンツアイテムブロックは、新たなコンテンツアイテムが属するコンテンツアイテムネームスペースに割り当てられたすべてのブロックサーバで利用可能となる。
【００３２】
[0041]例えば、図２を参照し、所定のコンテンツアイテムネームスペース”ＡＢＣ１２３”が構内ブロックサーバ１２０−１、構内ブロックサーバ１２０−２、及び構外ブロックサーバ１３０に割り当てられていることを想定する。構内ブロックサーバ１２０−１と構内ブロックサーバ１２０−２は、同一のローカルエリアネットワーク又は異なるローカルエリアネットワークへ接続されてもよい。図２の例において、構内ブロックサーバ１２０−１と構内ブロックサーバ１２０−２とは、異なるローカルエリアネットワーク、特に、ＬＡＮ１６０−１及びＬＡＮ１６０−２のそれぞれに接続されてもよい。構内ブロックサーバ１２０−１及び１２０−２と、割り当てられたＬＡＮ１６０−１及び１６０−２は、地理的に分散されてもよく、同一の地理的エリアに存在する必要はない。例えば、構内ブロックサーバ１２０−１とＬＡＮ１６０−１は、会社のサンブランシステムの本部に配置されてもよく、一方で、構内ブロックサーバ１２０−２とＬＡＮ１６０−２は、会社のニューヨークのオフィスに配置されてもよい。代替的に、構内ブロックサーバ１２０−１及び１２０−２と、ＬＡＮ１６０−１及び１６０−２は、異なる企業又は団体によって所有されるか又は運用されてもよい。例えば、コンテンツアイテムネームスペース”ＡＢＣ１２３”は、会社Alphaと会社Betaと協働で使用する共有フォルダを表してもよい。構内ブロックサーバ１２０−１及び１２０−２と、ＬＡＮ１６０−１及び１６０−２が同一の又は異なる会社によって所有又は運用されるかどうかに関わらず、コンテンツアイテムブロックの複製プロトコルについて、パーソナルコンピューティングデバイス１１０−１によって構内ブロックサーバ１２０−１へアップロードされたコンテンツアイテムネームスペース”ＡＢＣ１２３”の新たなコンテンツアイテムについての新たなコンテンツアイテムブロックは、自動的に、構内ブロックサーバ１２０−２及び構外ブロックサーバ１３０からパーソナルコンピューティングデバイス１１０−２によってダウンロード可能となる。同様に、パーソナルコンピューティングデバイス１１０−２によって構内ブロックサーバ１２０−２へアップロードされたコンテンツアイテムネームスペース”ＡＢＣ１２３”の新たなコンテンツアイテムについての新たなコンテンツアイテムブロックは、自動的に、構内ブロックサーバ１２０−１及び構外ブロックサーバ１３０からパーソナルコンピューティングデバイス１１０−１によってダウンロード可能となる。さらに、パーソナルコンピューティングデバイス１１０−１又はパーソナルコンピューティングデバイス１１０−２の何れかによって構外ブロックサーバ１３０へアップロードされたコンテンツアイテムネームスペース”ＡＢＣ１２３”の新たなコンテンツアイテムについての新たなコンテンツアイテムブロックは、自動的に、構内ブロックサーバ１２０−１及び構内ブロックサーバ１２０−２からダウンロード可能となる。
【００３３】
[0042]高レベルでは、コンテンツアイテムブロックの複製プロトコルの動作は、以下のように処理される。各構内ブロックサーバのブロックエージェントは、構内ブロックサーバへ割り当てられた各コンテンツアイテムネームスペースについての現在のクライアントカーソル値を保持する。コンテンツアイテムネームスペースについての現在のクライアントカーソル値は、コンテンツアイテムネームスペースに対する何れのサーバジャーナルエントリを構内ブロックサーバが既に知っているかを表す。コンテンツアイテムネームスペースについての現在のクライアントジャーナルカーソル値は、構内ブロックサーバに格納されたコンテンツアイテムネームスペースにおけるコンテンツアイテムのどのコンテンツアイテムブロックが他のブロックサーバへオファーされるべきかと、構外ブロックサーバに格納されたコンテンツアイテムネームスペースにおけるコンテンツアイテムのどのコンテンツアイテムブロックが構内ブロックサーバへダウンロードされるべきかとを判定するために、構内ブロックサーバのブロックエージェントによって使用される。
【００３４】
[0043]各構内のブロックサーバのブロックエージェントは、オンラインコンテンツ管理サービスの通知サーバ（例えば、１４０）へのロングポーリング接続を維持してもよい。構内ブロックサーバへ割り当てられたコンテンツアイテムネームスペースの新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されると、新たなコンテンツアイテムの新たなコンテンツアイテムブロックが構内ブロックサーバ又は構外ブロックサーバへアップロードされていれば、ロングポーリング接続上でピンメッセージ（ping message）が構内ブロックサーバへ送信されうる。例えば、コンテンツアイテムネームスペース”ABC１２３”に属している新たなコンテンツアイテムの新たなコンテンツアイテムブロックが構内ブロックサーバ１２０−１又は構外ブロックサーバ１３０へアップロードされていれば、構内ブロックサーバ１２０−１は、通知サーバ１４０からピンメッセージを受信してもよい。
【００３５】
[0044]通知サーバからのピンメッセージを受信することに応じて、構内ブロックサーバは、オンラインコンテンツ管理サービスのメタデータサーバ（例えば、１５０）に”ブロックサーバリスト”要求を行ってもよい。ブロックサーバ要求は、構内ブロックサーバへ割り当てられた各コンテンツアイテムネームスペースについての現在のクライアントカーソル値を特定しうる。ブロックサーバリストの要求は、ブロックサーバリストの要求を送信する構内ブロックサーバブロックサーバ識別子などの他の情報を含んでもよい。
【００３６】
[0045]構内ブロックサーバからのブロックサーバの要求を受信したことに応じて、メタデータサーバは、ブロックサーバリストの要求に応じて構内ブロックサーバへ送信する１以上のより新しいサーバジャーナルエントリを判定してもよい。各新しいサーバジャーナルエントリは、構内ブロックサーバに割り当てられ、かつ、ブロックサーバリストの要求に特定されるコンテンツアイテムネームスペースの1つに対応する。コンテンツアイテムネームスペースについての各新しいサーバジャーナルエントリは、ブロックサーバリストの要求のコンテンツアイテムネームスペースについて構内ブロックサーバによって特定された現在のクライアントカーソル値よりも大きいサーバジャーナルカーソル値を有する。コンテンツアイテムネームスペースについての各新しいサーバジャーナルエントリは、ａ）構内ブロックサーバがコンテンツアイテムネームスペースへ割り当てられる他のブロックサーバへオファーすることができるように構内ブロックサーバへアップロードされるコンテンツアイテムブロック、又は、ｂ）構内ブロックサーバが構外ブロックサーバからダウンロードすることができるように構外ブロックサーバへアップロードされるコンテンツアイテムブロックの何れかに対応する。ここでは、新しいサーバジャーナルエントリの前者のタイプａ）は、”オファー”新サーバジャーナルエントリとして参照される。ここでは、新しいサーバジャーナルエントリの後者のタイプｂ）は、”ダウンロード”新サーバジャーナルエントリとして参照される。構内ブロックサーバによる、オファー新サーバジャーナルエントリ及びダウンロード新サーバジャーナルエントリの処理について、以下でより詳細に説明する。
【００３７】
＜3.1 複製メタデータ＞
[0046]次に、図３を参照し、構内ブロックサーバにおけるブロックエージェントによって保持されうるコンテンツアイテムブロックの複製メタデータ３００のブロック図について説明する。メタデータ３００は、１以上の割り当てられたコンテンツアイテムネームスペースエントリ３０２−１、３０２−２、・・・、３０２−Ｎを含んでもよい。各エントリ３０２は、構内ブロックサーバへ割り当てられるコンテンツアイテムネームスペースを表す。
【００３８】
[0047]エントリ３０２は、構内ブロックサーバに割り当てられるコンテンツアイテムネームスペースの識別子３１４を含んでもよい。エントリ３０２はまた、構内ブロックサーバに割り当てられるコンテンツアイテムネームスペースについての現在のクライアントカーソル値３１７を含んでもよい。現在のクライアントカーソル値３１７は、構内ブロックサーバがコンテンツアイテムブロックの複製目的について既に知っている、オンラインコンテンツ管理サービスへ委託されるコンテンツアイテムネームスペースのコンテンツアイテムへの変更を表す。エントリ３０２はまた、１以上の割り当てられたブロックサーバ識別子３１３−１、３１３−２、・・・、３１３−Ｎを含んでもよい。割り当てられるブロックサーバ識別子３１３は、コンテンツアイテムネームスペースへ割り当てられるブロックサーバを識別する。
【００３９】
[0048]構内ブロックサーバのブロックエージェントは、以下で詳細に説明するように、コンテンツアイテムブロックの複製プロトコルの一部として保持されるメタデータ３００を使用してもよい。
【００４０】
＜3.2 サーバジャーナル＞
[0049]次に、図４を参照して、メタデータサーバによってオンラインコンテンツ管理サービスのメタデータプレーンで保持されうるコンテンツアイテムサーバジャーナル４１０のブロック図について説明する。サーバジャーナル４１０は、１以上のサーバジャーナルエントリ４１２−１、４１２−２、・・・、４１２−Ｎを含む。各サーバジャーナルエントリ４１２は、オンラインコンテンツ管理サービスへ委託される新たなコンテンツアイテムを表す。例えば、サーバジャーナルエントリ４１２は、アップロード処理２００及び１０００に関して上述したように、第２の委託要求を受信することに応じて、メタデータサーバ１５０によってコンテンツアイテムサーバジャーナル４１０へ追加されうる。
【００４１】
[0050]サーバジャーナルエントリ４１２は、サーバジャーナルエントリ４１２によって表される新たなコンテンツアイテムが属するコンテンツアイテムネームスペースの識別子４１４を含んでもよい。サーバジャーナルエントリ４１２はまた、新たなコンテンツアイテムの新たなコンテンツアイテムブロックがアップロードされたターゲットブロックサーバの識別子４１３を含んでもよい。ターゲットブロックサーバ識別子４１３は、例えば、アップロード処理２００のステップ２２６、及びアップロード処理１０００のステップ１０２８の一部として、コンテンツアイテムの同期エージェントからの第２の委託要求で特定されてもよい。サーバジャーナルエントリ４１２はまた、新たなコンテンツアイテムについての相対パス４１５を含んでもよい。サーバジャーナルエントリ４１２はまた、新たなコンテンツアイテムを作成するコンテンツアイテムブロックを識別する新たなコンテンツアイテムについてのコンテンツアイテムブロックリストを含んでもよい。サーバジャーナルエントリ４１２はまた、サーバジャーナルカーソル値４１７を含んでもよい。サーバジャーナルカーソル値４１７は、エントリ４１２のコンテンツアイテムネームスペース識別子４１４に特定されうる。或いは、サーバジャーナルカーソル値４１７は、エントリ４１２のコンテンツアイテムネームスペースとターゲットブロックサーバ識別子（それぞれ２２１４、及び４１３）の組み合わせに特定されうる。
【００４２】
＜3.3 複製ログ＞
[0051]本発明のいくつかの実施形態によれば、構内ブロックサーバは、構内ブロックサーバのローカルストレージ（例えば、１２４−１）にコンテンツアイテムブロックの複製ログを保持する。複製ログは、１以上の複製ログエントリを格納する。各ログエントリは、構内ブロックサーバのブロックサーバについての複製タスクを表す。複製タスクは、ａ）１以上の他のブロックサーバへ１以上のコンテンツアイテムブロックの送信をオファーすること、又は、ｂ）構外ブロックサーバから１以上のコンテンツアイテムブロックをダウンロードすることを含むことができる。
【００４３】
[0052]次に、図５を参照し、構内ブロックサーバにローカルに格納されうるコンテンツアイテムブロックの複製ログ５００のブロック図について説明する。複製ログ５００は、１以上の複製ログエントリ５０２を含む。各複製ログエントリ５０２は、メタデータサーバ１５０によって決定される、オファー新サーバジャーナルエントリ、又は、ダウンロード新サーバジャーナルエントリの何れかに対応する。ブロックエージェントは、新しいサーバジャーナルエントリと、メタデータサーバ１５０から受信したダウンロード新ジャーナルエントリとについての複製ログ５００へ複製ログエントリ５０２を追加してもよい。
【００４４】
[0053]複製ログエントリ５０２は、複製ログエントリのタイプ識別子５１８、コンテンツアイテムネームスペース識別子５１４、コンテンツアイテムブロックリスト５１６、及び１以上のブロックサーバタスクエントリ５１９を含んでもよい。複製ログエントリのタイプ識別子５１８は、対応する新サーバジャーナルエントリ４１２がオファータイプの新サーバジャーナルエントリであるか、又はダウンロードタイプの新サーバジャーナルエントリであるかどうかを示す。コンテンツアイテムネームスペースの識別子５１４は、対応する新サーバジャーナルエントリ４１２のコンテンツアイテムネームスペースの識別子４１４に対応する。コンテンツアイテムのブロックリスト５１６は、対応する新サーバジャーナルエントリ４１２のコンテンツアイテムブロックリスト４１６に対応する。各ブロックサーバタスクエントリ５１９は、コンテンツアイテムネームスペースに割り当てられる他のブロックサーバとともに、構内ブロックサーバのブロックエージェントによって実行されるべき複製タスクを表わす。
【００４５】
[0054]ブロックサーバタスクエントリ５１９は、コンテンツアイテムネームスペースに割り当てられる他のブロックサーバを識別することができ（５１３）、タスクエントリ５１９によって表される複製タスクのパフォーマンスに関連するタスクメタデータ５２０を含む。タスクメタデータ５２０は、複製タスクが完了したかどうかを示す。タスクメタデータ５２０は、既に行われている複製タスクの試みの失敗数と、失敗の試みに関連するエラーコード及びエラーメッセージと、複製タスクの実行を反映するログメッセージとなどの他の情報を含んでもよい。
【００４６】
[0055]いくつかの実施形態において構内ブロックサーバのみが複製ログを保持する一方で、構内ブロックサーバが複製ログを保持するのに追加して又は代わりに、他の実施形態において、構外ブロックサーバ１３０が複製ログを保持する。この場合、構外ブロックサーバによって保持される複製ログのログエントリは、ａ）１以上のコンテンツアイテムブロックを１以上の構外ブロックサーバへ送信するようにオファーし、オファーを受け付ける構外ブロックサーバへ１以上のコンテンツアイテムブロックを送信する構外ブロックサーバ１３０における複製タスク、又は、ｂ）構外ブロックサーバから１以上のコンテンツアイテムブロックをダウンロードすることの何れかを表すことができる。
【００４７】
＜3.4 複製タスクの提供＞
[0056]図６は、複製タスクを構内ブロックサーバ（例えば、１２０−１又は１２０−２）へ提供する処理６００のフローチャートである。処理６００の各ステップを以下に示す。ステップ６０２で、構内ブロックサーバのブロックエージェント（例えば、１２６−１又は１２６−２）は、構内ブロックサーバに割り当てられる各コンテンツアイテムネームスペースについての現在のクライアントカーソル値（例えば、３１７）を判定する。前述したように、この情報は、構内ブロックサーバに格納されるコンテンツアイテムブロックの複製メタデータ（例えば、３００）の一部として格納されうる。ステップ６０４で、構内ブロックサーバのブロックエージェントは、オンラインコンテンツ管理サービスのメタデータサーバ（例えば、１５０）へブロックサーバリスト要求を送信する。ブロックサーバリスト要求は、それらが属するコンテンツアイテムネームスペースの識別子（例えば、３１４）に関連して、ステップ６０２で判定された現在のクライアントカーソル値を含む。ブロックサーバリスト要求はまた、認証が成功しているユーザアカウントを識別するユーザアカウント識別子（例えば、３１２）と、ブロックサーバリスト要求を行う構内ブロックサーバを識別するブロックサーバ識別子とを含んでもよい。
【００４８】
[0057]ステップ６０６で、オンラインコンテンツ管理サービスのメタデータサーバは、ブロックサーバリスト要求を受信し、それを認証する。これは、ブロックサーバリスト要求で識別されるユーザアカウントがブロックサーバリスト要求で識別される構内ブロックサーバに対してブロックサーバリスト要求を行うために認証されたことを検証するために、メタデータプレーン（例えば、１８０）のデータにアクセスすることを含んでもよい。そうでない場合、メタデータサーバはブロックサーバリスト要求を否定してもよく、これにより処理６００を終了する。要求を認証することはまた、ブロックサーバリスト要求で識別されるコンテンツアイテムネームスペースが当該要求で識別されるブロックサーバに割り当てられるものであることを検証することを含んでもよい。処理６００の残りの処理に関し、メタデータサーバは、構内ブロックサーバへ現在割り当てられていない、ブロックサーバリスト要求で識別される任意のコンテンツアイテムネームスペースを無視してもよい。
【００４９】
[0058]ステップ６０８において、メタデータサーバは、ブロックサーバリスト要求で識別される各コンテンツアイテムネームスペースについての任意の新しいサーバジャーナルエントリを判定するために、メタデータプレーンのサーバジャーナル（例えば、４１０）にアクセスする。この判定は、全ての”条件を満たす（qualifying）”新しいサーバジャーナルエントリが各コンテンツアイテムネームスペースについて収集されるまで、最新のサーバジャーナルエントリから開始してサーバジャーナルをスキャンし、サーバジャーナルを遡ってスキャンすることを含む。いくつかの実施形態によれば、条件を満たす新しいサーバジャーナルエントリは、以下のプロパティの全て、それらのサブセット（部分集合）、又はスーパーセット（上位集合）を有するものである。
【００５０】
[0059]サーバジャーナルエントリ（例えば、４１２−２）で識別される（例えば、４１４）コンテンツアイテムネームスペースは、ブロックサーバリスト要求で識別されるコンテンツアイテムネームスペースの１つである。
【００５１】
[0060]１以上のブロックサーバがコンテンツアイテムネームスペースへ割り当てられる。
【００５２】
[0061]サーバジャーナルエントリで識別される（例えば、４１３）ブロックサーバは、ブロックサーバリスト要求を行うブロックサーバ、又は、オンラインコンテンツ管理サーバの構外ブロックサーバ（例えば、１３０）を識別する。
【００５３】
[0062]サーバジャーナルエントリのサーバジャーナルカーソル値（例えば、４１７）は、ブロックサーバリスト要求で特定されるコンテンツアイテムネームスペースについての現在のクライアントカーソル値より大きい。
【００５４】
[0063]ステップ６１０で、メタデータサーバは、構内ブロックサーバのブロックエージェントへブロックサーバリスト要求への応答を返す。当該応答は、ステップ６０８で識別したそれぞれ条件を満たす新しいサーバジャーナルエントリからの情報を含んでもよい。特に、それぞれ条件を満たす新しいサーバジャーナルエントリに対して返される情報は、以下の情報、又は、それらのサブセット、又は、スーパーセットを含んでもよい。
【００５５】
[0064]条件を満たす新しいサーバジャーナルエントリのコンテンツアイテムネームスペースの識別子。
【００５６】
[0065]条件を満たす新しいサーバジャーナルエントリのターゲットブロックサーバ識別子に依存して変わるエントリについての複製タスクのタイプ指標。特に、条件を満たすエントリのターゲットブロックサーバの識別子がブロックサーバリスト要求を行ったブロックサーバを識別する場合、その結果、複製タスクのタイプ指標は、エントリについての複製タスクがオファータイプの複製タスクであることを示す。一方、条件を満たすエントリのターゲットブロックサーバの識別子が構外ブロックサーバを識別する場合、その結果、複製タスクのタイプ指標は、エントリについての複製タスクがダウンロードタイプの複製タスクであることを示す。
【００５７】
[0066]条件を満たすエントリのコンテンツアイテムブロックリスト（例えば、４１６）、又は、
[0067]条件を満たすエントリのサーバジャーナルカーソル値。
【００５８】
[0068]ステップ６１２で、構内ブロックサーバのブロックエージェントは、メタデータサーバからのブロックサーバリスト要求への応答を受信し、構内ブロックサーバで複製ログ（例えば、５００）の１以上の複製ログエントリ（例えば、５０２−２）を格納する。特に、当該応答で返されるそれぞれ条件を満たす新しいサーバジャーナルエントリについての情報は、複製ログの対応する複製ログエントリを格納するために使用される。各コンテンツアイテムネームスペースについて、条件を満たす新しいサーバジャーナルエントリについての情報は、それらのサーバジャーナルカーソル値の昇順で処理されうる。それぞれ条件を満たす新しいサーバジャーナルエントリについて、条件を満たす新しいサーバジャーナルエントリについての複製タスクのタイプエントリに基づくログエントリタイプ（例えば、５１８）、条件を満たすエントリのコンテンツアイテムネームスペースの識別子に基づくコンテンツアイテムネーム識別子（例えば、５１４）、条件を満たすエントリのコンテンツアイテムブロックリストであるコンテンツアイテムブロックリスト（例えば、５１６）、１以上のブロックサーバタスクエントリ（例えば、５１９−２）。
【００５９】
[0069]ブロックサーバタスクエントリは、ログエントリで識別されるコンテンツアイテムネームスペースに割り当てられる、他のブロックサーバのそれぞれに対して作成されうる。ダウンロード複製タスクタイプのログエントリの場合、構外ブロックサーバについてのただ１つのブロックサーバタスクエントリであってもよい。オファー複製タスクタイプのログエントリの場合、ブロックサーバタスクエントリは、コンテンツアイテムネームスペースに割り当てられる他のブロックサーバのそれぞれについて作成されてもよい。
【００６０】
[0070]ブロックサーバタスクエントリのタスクメタデータ（例えば、５２０）は、複製タスクがまだ完了していないことを示すように最初に設定される。複製ログエントリが複製ログに追加されると、構内ブロックサーバの対応の割り当てられたコンテンツアイテムネームスペースエントリ（例えば、３０２−２）におけるログエントリのコンテンツアイテムネームスペースについての現在のクライアントカーソル値（例えば、３１７）は、対応の条件を満たすエントリのサーバジャーナルカーソル値と等しくなるように設定される。そうすることにより、ブロックエージェントは、ブロックエージェントによって行われる次のブロックサーバリスト要求に応じて再び条件を満たすエントリについての情報を受信することはない。
【００６１】
＜3.5 複製タスクの処理＞
[0071]図７Ａ乃至図７Ｃは、構内ブロックサーバに格納される（例えば、ストレージ１２４−１に）複製ログ（例えば、５３０）で特定される複製タスクの処理において、構内ブロックサーバ（例えば、１２０−１）のブロックエージェント（例えば、１２６−１）の動作を示すフローチャート７００を含む。ステップ７０２で、ブロックエージェントは、複製ログから複製ログエントリ（例えば、５０２−２）を取得する。例えば、ブロックエージェントは、保留している複製ログエントリについての複製ログを定期的にスキャンしてもよい。
【００６２】
[0072]複製ログエントリは、複製ログエントリのブロックサーバタスクエントリ（例えば、５１９−２）の少なくとも１つが保留されている場合に保留であってもよい。ブロックサーバタスクエントリは、そのタスクメタデータ（例えば、５２０）によってそう示される場合に保留であってもよい。ブロックサーバタスクエントリのタスクメタデータは、ブロックサーバタスクエントリが多くの種々の方法で保留されていることを示してもよい。例えば、タスクメタデータは、ブロックサーバタスクエントリが保留されている、又は完了していないことを示す値、又は値の集合を含んでもよい。いくつかの実施形態によれば、タスクメタデータは、ブロックエージェントがブロックサーバタスクエントリを完了するために既に行った多数の試みを反映する値を含む。当該数値が閾値以下の場合、その結果、ブロックサーバタスクエントリは保留される。当該数値が閾値を超える場合、その結果、ブロックサーバタスクエントリは保留されない。以前の失敗が発生した場合に、ブロックサーバタスクエントリを完了するために複数回試みることによって、より高い復元力（resiliency）と対故障性（fault tolerance）が提供される。
【００６３】
[0073]ステップ７０４で、ブロックエージェントは、保留ログエントリの複製タスクタイプ（例えば、５１８）を判定する。複製タスクタイプは、”ダウンロード”又は”オファー”の１つであってもよい。構内ブロックサーバに格納されない（つまり、構内ブロックサーバで欠落している）、構外ブロックサーバ（例えば、１３０）へアップロードされたコンテンツアイテムブロックをダウンロードするように、ダウンロード複製タスクタイプがブロックエージェントによって実行される。”オファー側（offeror）”の構内ブロックサーバへアップロードされるコンテンツアイテムブロックを、１以上の他の”被オファー側（offeree）”のブロックサーバへ送信するようにオファーし、当該オファーを受け付ける他のブロックサーバへそれらを送信するように、オファー複製タスクタイプが、ブロックエージェントによって実行される。
【００６４】
[0074]構内ブロックサーバは、ピアリング関係を有する他の構内ブロックサーバとのみ、オファー複製タスクを実行することができる。２つの構内ブロックサーバ間のピアリング関係は、２つの構内ブロックサーバのブロックエージェント間でネットワーク接続を確立することが可能な場合に存在する。２つの構内ブロックサーバ間のネットワーク上に介在したネットワークファイアウォールのため、或いは、単に、２つの構内ブロックサーバを接続するネットワークがないため、２つの構内ブロックサーバ間でネットワーク接続を確立できない可能性がある。例えば、図２を簡単に参照すると、ネットワークファイアウォール１６５−１、又はファイアウォール１６５−２は、構内ブロックサーバ１２０−１と構内ブロックサーバ１２０−２とがWAN１６０−３又はインターネット１９０を介してそれらの間のネットワーク接続を確立することを妨げうる。或いは、ネットワークファイアウォール１６５−１及び１６５−２は、ブロックエージェント１２６−１及び１２６−２が、インターネット１９０ではなく、WAN１６０−３を介してそれらの間のネットワーク接続を確立することを許容してもよい。他のネットワークファイアウォールの構成が可能である。例えば、ネットワークファイアウォール１６５−１及び１６５−２は、ブロックエージェント１２６−１及び１２６−２が、WAN１６０−３又はインターネット１９０を介してそれらの間のネットワーク接続を確立することを許容してもよい。構内ブロックサーバのペアの両方が当該構内ブロックサーバ間のネットワーク接続の確立を開始することができる構内ブロックサーバ間のペア間でピアリング関係が存在する必要はないことに注意されるべきである。例えば、ネットワークファイアウォール１６５−１及び１６５−２は、構内ブロックサーバ１２０−１のブロックエージェント１２６−１がWAN１６０−３を介して構内ブロックサーバ１２０−１のブロックエージェント１２６−２とHTTPS接続の確立を開始することを許容してもよいが、その逆はない。
【００６５】
[0075]いくつかの実施形態によれば、構内ブロックサーバAが構内ブロックサーバBとピアリング関係を有していない場合、その結果、構内ブロックサーバAは、複製ログにおけるオファータイプの複製ログエントリを格納する際にその複製ログに、構内ブロックサーバBについてのブロックサーバタスクエントリを格納することができない。これは、ピアリング関係の欠如で、構内ブロックサーバAが、構内ブロックサーバBへ任意のコンテンツアイテムブロックをオファーすることができないためである。オファータイプ複製ログエントリは、複製ログエントリのブロックサーバタスクエントリの全てが構内ブロックサーバAがピアリング関係を有しない構内ブロックサーバに対するものであれば、全体的に複製ログから省略されうる。これは、ピアリングの欠如で、構内ブロックサーバAがピアリング関係を有していない任意の他の構内ブロックサーバへそのコンテンツアイテムブロックのいずれかをオファーすることができないためである。或いは、ピアリング関係の欠如で、ブロックサーバタスクエントリ又は複製ログエントリを省略する代わりに、構内ブロックサーバに対するブロックサーバタスクエントリは、ブロックサーバタスクエントリで識別される構内ブロックサーバとピアリング関係がないことを示すタスクメタデータとともに複製ログエントリの一部として格納されうる。
【００６６】
[0076]ステップ７０４で、保留複製ログエントリがダウンロードタイプ複製ログエントリであるとブロックサーバエージェントが判定すると、その結果、処理７００は、ステップ７０６へ進む（図７Ｂ）。ダウンロードタイプ複製ログエントリは、オンラインコンテンツ管理サービスの構外ブロックサーバを識別する単一のブロックサーバタスクエントリを含んでもよい。ステップ７０６で、ブロックエージェントは、ダウンロードタイプ複製ログエントリで識別される、任意の欠落したコンテンツアイテムブロックを判定する。この判定は、当該エントリのコンテンツアイテムブロックリスト（例えば、５１６）に基づくことができる。ステップ７０８で、ブロックエージェントは、構外ブロックサーバから任意の欠落したコンテンツアイテムブロックをダウンロードする。ステップ７１０で、欠落したコンテンツアイテムブロックのダウンロードが成功したかどうかに従って、ブロックエージェントは、ブロックサーバタスクエントリのタスクメタデータを更新する。例えば、コンテンツアイテムブロックの全てがダウンロードすることができない場合、その結果、ブロックエージェントは、そのように示すタスクメタデータを更新してもよい。例えば、ブロックエージェントは、欠落したコンテンツアイテムブロックの全てをダウンロードすることに成功するために行う試みの回数を追跡する試みカウンタをインクリメントさせてもよい。一方で、ブロックエージェントが欠落したコンテンツアイテムブロックの全てのダウンロードに成功した場合、その結果、タスクメタデータは、ブロックサーバタスクエントリがもう保留されていないことを示すように更新されうる。ステップ７１０の後、処理７００は、次の保留複製ログエントリを処理するためにステップ７０２へ処理を戻してもよい。
【００６７】
[0077]一方、ステップ７０４で、保留複製ログエントリがオファータイプ複製ログエントリであるとブロックサーバエージェントが判定すると、その結果、処理７００は、ステップ７１２へ進む（図７Ｃ）。ステップ７１２で、ブロックエージェントは、保留複製ログエントリで識別されたコンテンツアイテムブロックのうちいずれが構内ブロックサーバが保持している（即ち、構内ブロックサーバに格納されている）かを判定する。この判定は、ログエントリのコンテンツアイテムブロックリストに基づくことができる。ログエントリのコンテンツアイテムブロックリストで識別される全てのコンテンツアイテムブロックは、コンテンツアイテムブロックの一部又は全てが構内ブロックサーバから削除又は移動されていない限り、構内ブロックサーバに格納されるべきである。例えば、コンテンツアイテムブロックは、最近使用されていない方法（例えば、最近ダウンロードされていない又は最近更新されていないこと）に従って、構内ブロックサーバから削除又は移動されてもよい。
【００６８】
[0078]ステップ７１４で、ブロックエージェントは、オファー側の構内ブロックサーバがピアリング関係を有する保留複製ログエントリの保留ブロックサーバタスクエントリで識別される他のブロックサーバのそれぞれへオファー要求を送信する。オファー側構内ブロックサーバが構外ブロックサーバとのピアリング関係を有するいくつかの実施形態が想定されうる。当該オファー要求は、オファーされるコンテンツアイテムブロックを識別することができる。特に、オファー要求は、オファー側構内ブロックサーバが保持する保留複製ログエントリで識別されるコンテンツアイテムブロックのコンテンツアイテムブロックハッシュ値を含んでもよい。オファー要求は、オファー側構内ブロックサーバのブロックエージェントと被オファー側ブロックサーバのブロックエージェントとの間で確立されるネットワーク接続（例えば、HTTPS接続）を介して送信されうる。
【００６９】
[0079]ステップ７１６で、オファー側構内ブロックサーバのブロックエージェントは、オファー側構内ブロックサーバからのオファー要求を受信することに応じて被オファー側ブロックサーバによって送信される任意の受領応答を受信する。被オファー側ブロックサーバからの各受領応答は、被オファー側ブロックサーバで現在格納されていない（即ち、被オファー側ブロックサーバで欠落している）オファーされたコンテンツアイテムブロックの1以上を識別することができる。任意の欠落したコンテンツアイテムブロックは、当該欠落したコンテンツアイテムブロックのコンテンツアイテムブロックハッシュ値によって受領応答において識別されうる。被オファー側ブロックサーバからの受領応答はまた、オファーされたコンテンツアイテムブロックが被オファー側ブロックサーバにおいて欠落していないことを示してもよい。
【００７０】
[0080]ステップ７１８で、オファー側構内ブロックサーバのブロックエージェントは、被オファー側ブロックサーバの任意の欠落したコンテンツアイテムブロックを送信（アップロード）する。特に、被オファー側ブロックサーバからの所定の受領応答に関し、オファー側ブロックサーバのブロックエージェントは、被オファー側ブロックサーバからの受領応答で識別される任意の欠落したコンテンツアイテムブロックを送信（アップロード）する。
【００７１】
[0081]ステップ７２０で、オファー側構内ブロックサーバのブロックエージェントは、保留ログエントリの保留ブロックサーバタスクエントリのタスクメタデータを更新する。特に、受領応答がブロックサーバタスクエントリに対応する被オファー側ブロックサーバから受信された場合、その結果、全ての欠落したコンテンツアイテムブロックの被オファー側ブロックサーバへの送信が成功したかどうかに従って、又は、受領応答が被オファー側ブロックサーバでコンテンツアイテムブロックが欠落していないことを示すがどうかに従って、ブロックサーバタスクエントリのタスクメタデータが更新される。何れかの場合、タスクメタデータは、ブロックサーバタスクエントリがもう保留でないことを示すように更新されうる。一方、受領応答が受信されていない場合、又は、被オファー側ブロックサーバへの欠落したコンテンツアイテムブロックの送信（アップロード）で失敗した場合、その結果、ブロックサーバタスクエントリが保留されている場合には、タスクメタデータの試みカウンタがインクリメントされうる。ステップ７２０の後、処理７００は、次の保留複製ログエントリを処理するためにステップ７０２に処理を戻してもよい。
【００７２】
＜4.0 コンテンツアイテムブロックの削除＞
[0082]一般的に、要件ではないが、構内ブロックサーバ（例えば、１２０）は、構外ブロックサーバ（例えば、１３０）がそのローカルストレージ（例えば、１３４）に有するものよりも非常に少ない、そのローカルストレージ（例えば、１２４）のローカルデータストレージスペースが予測される。例えば、構内ブロックサーバにおけるトータルのローカルストレージが数テラバイトのオーダである一方で、構外ブロックサーバにおけるトータルのローカルストレージはエイト（８）ゼタバイトのオーダとなる場合がある。このように、構外ブロックサーバは、所定の構内ブロックサーバよりも最大で10億倍ものストレージスペースを有する可能性がある。所定の構内ブロックサーバに割り当てられるコンテンツアイテムネームスペースの数が構外ブロックサーバよりも少ない場合であっても、構内ブロックサーバは、構内ブロックサーバに割り当てられる全てのコンテンツアイテムネームスペースに、全てのコンテンツアイテムの全てのコンテンツアイテムブロックを格納するには、依然として十分なローカルストレージを有していないかもしれない。
【００７３】
[0083]いくつかの例示の実施形態において、構内ブロックサーバにローカルに格納されたコンテンツアイテムブロックは、他のコンテンツアイテムブロックに利用可能な構内ブロックサーバのローカルストレージスペースを作り出すために、当該ローカルストレージから削除または移動される。例えば、他のコンテンツアイテムブロックは、アップロード中若しくはアップロード間近である、又は、構内ブロックサーバーにアップロードされる予定のコンテンツアイテムブロックであるかもしれない。
【００７４】
[0084]いずれのコンテンツアイテムブロックを削除又は移動させるかを判定する種々のアプローチが採用されうる。いくつかの例示の実施形態によれば、最も長い時間未使用（ＬＲＵ）のアプローチが採用される。ＬＲＵアプローチによれば、コンテンツアイテムブロックによって私用される構内ブロックサーバのローカルストレージスペースの量が閾値を満足しない場合に、その結果、最も長い時間未使用のコンテンツアイテムブロックがローカルストレージから削除または移動される。当該閾値は、構内ブロックサーバのコンテンツアイテムブロックについてトータルのローカルストレージスペースの割合に基づくものであってもよい。ここで、トータルのローカルストレージスペースは、そのストレージスペースの一部または全てがコンテンツアイテムブロックを記憶するために現在使用されているかどうかにかかわらず、コンテンツアイテムブロックを格納するために利用可能なストレージスペースの現在の最大のトータル量を示す。現在の使用量が上記割合より大きい場合に、その結果、現在の使用量は閾値を満足しない。代わりに、閾値は、ローカルストレージに格納されたコンテンツアイテムブロックによって現在使用されているストレージスペースの量を差し引いた後に残る、現在の最大のローカルストレージスペースの量に基づくこともできる。この場合、現在の使用量を計算した後に残るローカルストレージスペースが閾値量より少ない場合、その結果、現在の使用量は閾値を満足しない。
【００７５】
[0085]現在の使用量が閾値を満足するか否かの判定は、種々の異なる時刻に行われうる。１つの可能性のある時刻は、１以上のコンテンツアイテムブロックが構内ブロックサーバにアップロードされるときである。特に、ローカルストレージに格納されたアップロードされたコンテンツアイテムの現在の使用量が閾値を満足しない場合、その結果、１以上のコンテンツアイテムブロックがＬＲＵアプローチに従ってローカルストレージから削除又は移動されてもよい。
【００７６】
[0086]ローカルストレージに格納されるコンテンツアイテムブロックは、その最近のアップロード時刻、及び／又は、その最近のダウントード時刻に基づいて最も長く使用されていないかが考慮されてもよい。コンテンツアイテムブロックの最近アップロードされた時刻は、コンテンツアイテムが構内ブロックサーバに最近アップロードされた時刻を反映する。例えば、コンテンツアイテムブロックの最近のアップロード時刻に従って、構内ブロックサーバに最も長くアップロードされていなかったローカルストレージに格納されるコンテンツアイテムブロックが削除又は移動されてもよい。コンテンツアイテムブロックの最近ダウンロードされた時刻は、コンテンツアイテムが構内ブロックサーバから最近ダウンロードされた時刻を反映する。例えば、コンテンツアイテムブロックの最近のダウンロード時刻に従って、構内ブロックサーバから最も長くダウンロードされていなかったローカルストレージに格納されるコンテンツアイテムブロックが削除又は移動されてもよい。構内ブロックサーバは、構内ブロックサーバに格納されるコンテンツアイテムブロックについての最近のアップロード時刻及びダウンロード時刻を反映するメタデータを格納して、保持してもよい。
【００７７】
[0087]いくつかの例示の実施形態によれば、制限されたＬＲＵアプローチが使用される。制限されたＬＲＵアプローチによれば、上述したＬＲＵアプローチに従った削除又は移動を制限するコンテンツアイテムブロックは追加の条件が満たされない限り、削除又は移動されない。
【００７８】
[0088]１つの可能性のある追加の条件は、削除又は移動の候補であるコンテンツアイテムブロックが、構外ブロックサーバ、１以上の他の構内ブロックサーバ、又は、１以上の他の構内ブロックサーバ及び構外ブロックサーバの何れかである１以上の他のブロックサーバに格納されることである。候補のコンテンツアイテムブロックが削除又は移動の候補である構内ブロックサーバのみに格納される場合、その結果、コンテンツアイテムブロックは、潜在的に唯一のコンテンツアイテムブロックを保存するために、削除又は移動されない。
【００７９】
[0089]他の可能性のある条件は、削除又は移動の候補となるコンテンツアイテムブロックが、削除の候補であるコンテンツアイテムブロックの構内ブロックサーバに加えて、少なくとも１つの他のブロックサーバに割り当てられたコンテンツアイテムネームスペースに属するコンテンツアイテムに含まれることである。コンテンツアイテムネームスペースが削除又は移動の候補であるコンテンツアイテムブロックの構内ブロックサーバのみに割り当てられている場合、その結果、コンテンツアイテムブロックは、潜在的に唯一のコンテンツアイテムブロックを保存するために、削除又は移動されない。
【００８０】
[0090]他の可能性のある条件は、コンテンツアイテムブロックが”固定された（sticky：スティッキー）”コンテンツアイテムブロックとして特別にマークされている場合である。固定されたコンテンツアイテムブロックは、全ての固定されていないコンテンツアイテムブロックが削除又は移動されるまで、削除又は移動されない。スティッキーとしてコンテンツアイテムブロックを指定することは、重要である、又は、比較的将来ダウンロードされそうなコンテンツアイテムブロックの削除又は移動を防ぐ助けとなりうる。コンテンツアイテムブロックは、関連付けられるコンテンツアイテネームスペースに基づいて、スティッキーとして指定されてもよい。特に、コンテンツアイテムネームスペースは、オンラインコンテンツ管理サービスによって提供されるグラフィカルユーザインタフェースを通じて（例えば、ウェブサイト１７０を介して）、オンラインコンテンツ管理サービスのユーザによってスティッキーとして指定されてもよい。代替的に、コンテンツアイテムネームスペースは、コンテンツアイテムネームスペースの特性及び使用に基づいて、スティッキーとして自動的に指定されてもよい。例えば、コンテンツアイテムネームスペースが多数のユーザ（例えば１０以上）間で共有されている場合、結果、コンテンツアイテムネームスペースはスティッキーとして自動的に指定されうる。これは、多数のユーザ間で供給されるコンテンツアイテムブロックの削除又は移動を防ぐのに有用である。いくつかの例示の実施形態において、共有されるコンテンツアイテムネームスペースは、当該コンテンツアイテムネームスペースでの最近のユーザアクティビティがある場合にのみスティッキーとして指定される。これは、最近使用されていないコンテンツアイテムブロックを保持し続けることを防止するのに有用である。最近のアクティビティは、最近（例えば、過去１日、１週間、１か月又は１年以内）のコンテンツアイテムネームスペースに属するコンテンツアイテムのダウンロード、アップロード、又はアクセスを含んでもよい。最初にスティッキーとして指定されたコンテンツアイテムネームスペースは、当該コンテンツアイテムネームスペースをスティッキーとして指定するための条件がもはや存在しない場合、後の２回目においてはもはやスティッキーとして自動的に指定されなくてもよい。例えば、最初に最近のアクティビティに基づいてスティッキーとしてされたコンテンツアイテムネームスペースが後の２回目においてもはや最近のアクティビティを有していない場合、その後、２回目以降において、当該コンテンツアイテムネームスペースはもはやスティッキーとして指定されなくてもよい。構内ブロックサーバは、ローカルに格納されたコンテンツアイテムブロック、及び／又は、割り当てされたコンテンツアイテムネームスペースがスティッキーとして指定されていることを示すメタデータを格納して保持してもよい。
【００８１】
[0091]いくつかの実施形態によれば、スティッキー性（stickiness）には複数のレベルがあり、スティッキー性のそれらのレベル順に、制限されたLRUアプローチに従って、コンテンツアイテムブロックが削除又は移動される。例えば、スティッキー性Ａ、Ｂ、及びＣの３つのレベルがあり、レベルＣはレベルＢより低く、レベルＢはレベルＡより低い。この場合、レベルＣの最初のコンテンツアイテムブロックが削除又は移動される前に、任意のスティッキー性のレベルが指定されていないコンテンツアイテムブロックが削除又は移動される。レベルＢの最初のコンテンツアイテムブロックが削除又は移動される前に、レベルＣのコンテンツアイテムブロックが削除又は移動される。レベルＡの最初のコンテンツアイテムブロックが削除又は移動される前に、レベルＢのコンテンツアイテムブロックが削除又は移動される。
【００８２】
＜5.0 割り当ての際のコンテンツアイテムブロックの複製＞
[0092]コンテンツアイテムネームスペースは、現在割り当てられていないブロックサーバに割り当てることができる。例えば、コンテンツアイテムネームスペースは、構外ブロックサーバ１３０にのみ割り当てられてもよい。その後、後のタイミングで、当該コンテンツアイテムネームスペースは、構外ブロックサーバ１３０と、構内ブロックサーバ１２０−１に割り当てられてもよい。その後、さらに後のタイミングで、当該コンテンツアイテムネームスペースは、構外ブロックサーバ１３０と、構内ブロックサーバ１２０−１と、構内ブロックサーバ１２０−２に割り当てられてもよい。他の実施形態において、コンテンツアイテムネームスペースは、構内ブロックサーバ１２０−１に割り当てられ、その後、構内ブロックサーバ１２０−１及び構外ブロックサーバ１３０へ割り当てられてもよい。このように、コンテンツアイテムネームスペースにあるときに割り当てられるブロックサーバの組合せは、コンテンツアイテムネームスペースに他のときに割り当てられるブロックサーバの組合せと異なってもよい。
【００８３】
[0093]コンテンツアイテムネームスペースが新たなブロックサーバに割り当てられると、ブロックサーバは、当該コンテンツアイテムネームスペースに属するコンテンツアイテムを構成するコンテンツアイテムの一部のみを格納するか、又は全く格納しなくてもよい。結果として、パーソナルコンピューティングデバイスのコンテンツアイテム同期エージェントは、コンテンツアイテムネームスペースのコンテンツアイテムのコンテンツアイテムブロックを当該ブロックサーバからダウンロードすることができないかもしれない。
【００８４】
[0094]本発明のいくつかの例示の実施形態によれば、コンテンツアイテムネームスペースが当該コンテンツアイテムネームスペースが１以上の他のブロックサーバに現在割り当てられている状況で、新たなブロックサーバに割り当てられる場合、当該コンテンツアイテムネームスペースのコンテンツアイテムのコンテンツアイテムブロックは、当該他のブロックサーバから新たなブロックサーバに複製される。例えば、コンテンツアイテムネームスペース”ＡＢＣ１２３”が構外ブロックサーバ１３０に割り当てられ、その後構内ブロックサーバ１２０−１に割り当てられる場合、結果、構内ブロックサーバ１２０−１は、”ＡＢＣ１２３”のコンテンツアイテムネームスペースのコンテンツアイテムを構成するコンテンツアイテムブロックを構外ブロックサーバ１３０からダウンロードすることができる。他の形態において、コンテンツアイテムネームスペース”ＤＥＦ４５６”が構内ブロックサーバ１２０−１に割り当てられ、その後構内ブロックサーバ１２０−２に割り当てられる場合、結果、構内ブロックサーバ１２０−１は、”ＤＥＦ４５６”のコンテンツアイテムネームスペースのコンテンツアイテムを構成するコンテンツアイテムブロックを構内ブロックサーバ１２０−２へオファーして提供することができる。
【００８５】
[0095]いくつかの例示の実施形態によれば、１以上のブロックサーバに現在割り当てられているコンテンツアイテムネームスペース新たなブロックサーバに割り当てられる場合、コンテンツアイテムブロックは、上述のコンテンツアイテムブロックの複製プロトコルに従って、現在割り当てられているブロックサーバから新たなブロックサーバに複製される。特に、新たなブロックサーバのブロックサーバ識別子が、現在割り当てられている構内ブロックサーバと新たなブロックサーバのそれぞれにおいて保持されるコンテンツアイテムブロックの複製メタデータ３００において、コンテンツアイテムネームスペースにおける割当コンテンツアイテムネームスペースエントリ３０２に、割当ブロックサーバ識別子３１３として追加される。例えば、現在割り当てられている構内ブロックサーバと新たなブロックサーバのそれぞれにおいてブロックエージェントは、メタデータサーバ１５０から受信する情報に基づいて、当該情報をローカルに格納するコンテンツアイテムブロックの複製メタデータ３００に追加してもよい。例えば、現在割り当てられている構内ブロックサーバ及び新たなブロックサーバのブロックエージェントは、ブロックサーバリストの要求に応じて、メタデータサーバ１５０から当該情報を受信してもよい。例えば、コンテンツアイテムネームスペースが新たなブロックサーバに割り当てられた後に、通知サーバ１４０は、ピンメッセージを現在割り当てられている構内ブロックサーバ及び新たなブロックサーバのそれぞれのブロックエージェントに送信してもよい。当該ピンメッセージの受信に応じて、現在割り当てられている構内ブロックサーバ及び新たなブロックサーバのブロックエージェントは、ブロックサーバリストの要求をメタデータサーバ１５０へ送信し、コンテンツアイテムネームスペースが新たなブロックサーバに割り当てられるブロックサーバリストの要求に応答して、メタデータサーバ１５０から受信してもよい。
【００８６】
[0096]現在割り当てられている構内ブロックサーバのそれぞれにおけるブロックエージェントはその後、オファータイプのログエントリ５０２についてのその複製ログ５００を、新たなブロックサーバに新たに割り当てられたコンテンツアイテムネームスペースの識別子と一致するコンテンツアイテムネームスペース識別子５１４と、ダウンロードタイプのログエントリとは対照的にログエントリがオファータイプであることを示すログエントリタイプ５１８とでスキャンすることができる。新たなブロックサーバタスクエントリ５１９は、そのようなオファータイプのログエントリのそれぞれに追加される。新たなブロックサーバタスクエントリは、新たなブロックサーバを識別するブロックサーバ識別子５１３と、複製タスクがまだ完了していないことを示すタスクメタデータ５２０とを有する。現在割り当てられている構内ブロックサーバのそれぞれのブロックエージェントはその後、上述したコンテンツアイテムブロックの複製処理７００に従って、新たなブロックサーバで所有される、当該コンテンツアイテムネームスペースのコンテンツアイテムブロックをオファーすることができる。
【００８７】
[0097]また、新たなブロックサーバのブロックエージェントは、新たなブロックサーバに割り当てられたコンテンツアイテムネームスペースの任意のコンテンツアイテムブロックを、構外ブロックサーバからダウンロードするために、上述したコンテンツアイテムブロックの複製処理６００及び７００を実行する。
【００８８】
＜6.0 ベーシックコンピューティングハードウェア及びソフトウェア＞
＜6.1 ベーシックコンピューティングデバイス＞
[0098]図８は、本発明の例示の実施形態を具現化しうるベーシックコンピューティングデバイス８００を示すブロック図である。コンピューティングデバイス８００、及びそれらの接続、関係、及び機能を含むそのコンポーネントは、単なる一例であって、例示の実施形態の実装に限定する意図はない。例示の実施形態を実施するのに適切な他のコンピューティングデバイスは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを含みうる。
【００８９】
[0099]コンピューティングデバイス８００は、メインメモリ８０６をアドレス解決し、かつ、コンピューティングデバイス８００の種々のコンポーネント間で及び種々のコンポーネントの中でデータを転送するための、バス８０２又は他の通信機構を含みうる。
【００９０】
[0100]コンピューティングデバイス８００はまた、情報を処理するためのバス８０２と結合した１以上のハードウェアプロセッサ８０４を含みうる。ハードウェアプロセッサ８０４は、一般用途マイクロプロセッサ、システム・オン・チップ（ＳｏＣ）、又は他のプロセッサであってもよい。
【００９１】
[0101]ランダムアクセスメモリ（ＲＡＭ）又は他の動的ストレージデバイスなどのメインメモリ８０６はまた、情報やプロセッサ８０４によって実行されるソフトウェア命令を格納するためのバス８０２に結合されうる。メインメモリ８０６はまた、プロセッサ８０４によって実行されるべきソフトウェア命令の実行中に一時変数又は他の中間情報を格納するために使用されうる。
【００９２】
[0102]プロセッサ８０４へアクセス可能な記憶媒体に格納される場合、ソフトウェア命令は、コンピューティングデバイス８００を当該ソフトウェア命令で指定された動作を実行するようにカスタマイズされた特定用途のコンピューティングデバイスへ変換する。用語”ソフトウェア”、”ソフトウェア命令”、”コンピュータプログラム”、”コンピュータで実行可能な命令”、及び”プロセッサで実行可能な命令”は、人間が読取可能かどうかにかかわらず、特定の動作を実行するようにコンピューティングデバイスに命令するための、任意の機械可読情報をカバーするように、広く解釈されるべきであり、限定はしないが、アプリケーションソフトウェア、デスクトップアプリケーション、スクリプト、バイナリ、オペレーティングシステム、デバイスドライバ、ブートローダ、シェル、ユーティリティ、システムソフトウェア、JAVASCRIPT、ウェブページ、ウェブアプリケーション、プラグイン、組み込みソフトウェア、マイクロコード、コンパイラ、デバッガ、インタプリタ、仮想マシン、リンカー、及びテキストエディタを含む。
【００９３】
[0103]コンピューティングデバイス８００はまた、静的情報及びプロセッサ８０４へのソフトウェア命令を格納するためにバス８０２に結合された読み取り専用メモリ（ＲＯＭ）８０８又は他の静的ストレージデバイスを含みうる。
【００９４】
[0104]１以上の大容量ストレージデバイス８１０は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は大容量ストレージ技術を利用可能な他のものなどの固定媒体若しくは取り外し可能な媒体に、情報及びソフトウェア命令を永続的に格納するためのバス８０２に結合されうる。大容量ストレージデバイスは、ネットワーク上で共有されえ、或いは、専用の大容量ストレージでありうる。通常、大容量ストレージデバイス８１０（例えば、デバイスに対するメインハードディスク）の少なくとも１つは、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピュータデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
【００９５】
[0105]コンピューティングデバイス８００は、バス８０２を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ（ＬＣＤ）又は他の電子的な視覚ディスプレイなどのディスプレイ８１２へ結合されうる。いくつかの構成において、タッチ検出技術（例えば、抵抗性、容量性など）を組み込むタッチセンサ式サーフェイスが、プロセッサ８０４へタッチジェスチャ（例えば指又はスタイラス）入力をやり取りするためのタッチセンサー式ディスプレイの形式でディスプレイ８１２上に敷かれてもよい。
【００９６】
[0106]アルファベットキー及び他のキーを含む入力デバイス８１４は、情報及びコマンドの選択をプロセッサ８０４へ通知するためのバス８０２へ結合されうる。英数字キーや他のキーに追加して、或いは、代わりに、入力デバイス８１４は、例えば、電源（On/Off）ボタン、”ホーム”ボタン、音量制御ボタンなどの１以上の物理的なボタン又はスイッチを含むことができる。
【００９７】
[0107]ユーザ入力デバイスの他のタイプは、プロセッサ８０４へ方向情報やコマンドの選択を通知し、ディスプレイ８１２上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御８１６でありうる。当該入力デバイスは、典型的に、デバイスが平面上の位置を特定できるようにする第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の二軸の２つの自由度を有する。
【００９８】
[0108]図８に示される構成などのいくつかの構成において、１以上のディスプレイ８１２、入力デバイス８１４、及びカーソル制御８１６がコンピューティングデバイス８００の外部コンポーネント（即ち、周辺デバイス）である一方で、ディスプレイ８１２、入力デバイス８１４、及びカーソル制御８１６のいくつか又は全ては、他の構成において、コンピューティングデバイス８００のフォームファクタの一部として統合されてもよい。
【００９９】
[0109]開示のシステム、方法及びモジュールの機能は、メインメモリ８０６に含まれる１以上のソフトウェア命令の１以上のプログラムを実行するプロセッサ８０４に応じて、コンピューティングデバイス８００によって実行されうる。そのようなソフトウェア命令は、ストレージデバイス８１０などの他の記憶媒体からメインメモリ８０６へと読み込まれてもよい。メインメモリ８０６に含まれるソフトウェア命令の実行は、プロセッサ８０４に例示の実施形態の機能を実行させる。
【０１００】
[0110]例示の実施形態の機能及び動作がソフトウェア命令で全体的に実装されうる一方で、コンピューティングデバイス８００のハード・ワイヤード又はプログラマブル回路（例えば、ASIC、FPGAなど）は、手近な特定の実装の要件に従って、機能を実行するためにソフトウェア命令の一部として又は組み合わせて他の実施形態において使用されうる。
【０１０１】
[0111]ここで使用される用語“記憶媒体”は、コンピューティングデバイスを特定の様式で動作させるデータ及びソフトウェア命令の少なくとも１つを格納する非一時的な媒体として参照される。そのようなストレージ媒体は、不揮発性の媒体及び／又は揮発性の媒体を備えうる。不揮発性媒体は、ストレージデバイス８１０などの、例えば、不揮発性のランダムアクセスメモリ（NVRAM）、フラッシュメモリ、光学ディスク、磁性ディスク、又は半導体ドライバを含む。揮発性媒体はメインメモリ８０６などの動的メモリを含む。記憶媒体の一般的な形式は、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、半導体ドライブ、磁性テープ、若しくは任意の他の時期的データ記憶媒体、CD-ROM、若しくは穴のパターンを伴う任意の他の光学的データ記憶媒体、RAM、PROM、及びEPROM、FLASH-EPROM、NVRAM、フラッシュメモリ、任意の他のメモリチップ又はカートリッジを含む。
【０１０２】
[0112]記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用されうる。送信媒体は、ストレージ媒体間で情報を転送することに使用されてもよい。例えば、送信媒体は、バス８０２を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
【０１０３】
[0113]媒体の様々な形式は、実行のためにプロセッサ８０４へ１つ以上のソフトウェア命令の１つ以上のシーケンスを運ぶことに含まれうる。例えば、ソフトウェア命令は、リモートコンピュータの磁性ディスク又は半導体ドライバ上でまず実行されうる。リモートコンピュータは、その動的メモリへソフトウェア命令をロードし、モデムを用いて電話線を介してソフトウェア命令を送信することができる。コンピューティングデバイス８００のローカルなモデムは、電話回線でデータを受信し、データを赤外線信号に変換するための赤外線送信機を用いることができる。赤外線検出機は赤外線信号で運搬されたデータを受信することができ、適切な回路がそのデータをバス８０２に乗せる。バス８０２は、プロセッサ８０４がソフトウェア命令を読み出して実行するメインメモリ８０６にデータを運搬する。メインメモリ８０６によって受信される本ソフトウェア命令は、プロセッサ８０４によって実行される前又は実行された後の何れかにストレージデバイス８１０に選択的に格納されうる。
【０１０４】
[0114]コンピューティングデバイス８００はまた、バス８０２へ結合される1以上の通信インタフェース８１８を含みうる。通信インタフェース８１８は、ローカルネットワーク８２２（例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Ｂｌｕｅｔｏｏｔｈ無線ネットワーク、又は同様のもの）へ接続された、有線又は無線のネットワークリンク８２０へ結合する２つの方法のデータ通信を提供する。通信インタフェース８１８は、種々のタイプの情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース８１８は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム（例えば、ＩＳＤＮ、ＤＳＬ、又はケーブルモデム）でありうる。
【０１０５】
[0115]ネットワークリンク８２０は、通常、１以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク８２０は、ローカルネットワーク８２２を通じて、ホストコンピュータ８２４への又はインターネットサービスプロバイダ（ＩＳＰ）８２６によって運用されるデータ装置への接続を提供しうる。ＩＳＰ８２６は順に、”Ｉｎｔｅｒｎｅｔ”８２８として通常参照されるワールド・ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク８２２及びＩｎｔｅｒｎｅｔ８２８は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピューティングデバイス８００への及びコンピューティングデバイス８００からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク８２０上の、及び通信インタフェース８１８を通じた信号は、送信媒体の例示の形式である。
【０１０６】
[0116]コンピューティングデバイス８００は、ネットワーク、ネットワークリンク８２０、及び通信インタフェース８１８を通じて、プログラムコードを含む、メッセージを送信し、データを受信することができる。例えば、サーバ830は、インターネット８２８、ＩＳＰ８２６、ローカルネットワーク８２２、及び通信インタフェース８１８を通じて、アプリケーションプログラムに対して要求されるコードを送信しうる。
【０１０７】
[0117]受信コードは、受信した際にプロセッサ８０４によって実行されえ、及び／又は、後の実行のためにストレージデバイス８１０又は他の不揮発性のストレージに格納されうる。
【０１０８】
＜6.2 ベーシックソフトウェアシステム＞
[0118]図９は、コンピューティングデバイス８００の動作を制御するために使用されうるベーシックソフトウェアシステム９００を示す概略図である。ソフトウェアシステム９００、及びそれらの接続、関係、及び機能を含むそのコンポーネントは、単なる一例であって、例示の実施形態の実装に限定する意図はない。例示の実施形態を実施するのに適切な他のソフトウェアシステムは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを含んでもよい。
【０１０９】
[0119]ソフトウェアシステム９００は、コンピューティングデバイス８００の動作を方向付けるために提供される。システムメモリ（ＲＡＭ）８０６及び固定ストレージ（例えば、ハードディスク、又はフラッシュメモリ）８１０に格納されるソフトウェアシステム９００はカーネル又はオペレーティングシステム（ＯＳ）９１０を含む。
【０１１０】
[0120]ＯＳ９１０は、プロセス、メモリ配置、ファイル入力及び出力（Ｉ／Ｏ）、及びデバイスＩ／Ｏの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。９０２Ａ、９０２Ｂ、９０２C・・・９０２Ｎとして表される、１以上のアプリケーションプログラムは、システム９００による実行のために”ロードされ”うる（例えば、固定ストレージ８１０からメモリ８０６へ転送される）。アプリケーション又はデバイス９００上での使用を意図した他のソフトウェアはまた、ダウンロード可能で、コンピュータで実行可能な命令のトークンのセットとして、例えば、インターネット上の記憶場所から（例えば、ウェブサーバ、アプリストア、又は他のオンラインサービスから）ダウンロード及びインストールするために格納されうる。
【０１１１】
[0121]ソフトウェアシステム９００は、グラフィカルな（例えば、”ポイント・アンド・クリック”又は”タッチジェスチャ”）形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース（ＧＵＩ）９１５を含む。これらの入力は順に、オペレーティングシステム９１０及びアプリケーション９０２の少なくとも１つからの命令に従ってシステム９００によって作動されうる。ＧＵＩ９１５はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする（例えば、ログオフする）とすぐに、ＯＳ９１０及びアプリケーション９０２からの動作結果を表示するように務める。
【０１１２】
[0122]ＯＳ９１０は、デバイス８００のベアハードウェア９２０（例えば、プロセッサ８０４）上で直接的に実行することができる。代替的に、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）９３０は、ベアハードウェア９２０及びＯＳ９１０の間に割り込んで設けられてもよい。この構成において、ＶＭＭ９３０はグデバイス８００のＯＳ９１０及びベアハードウェア９２０の間のソフトウェア”クッション”又は仮想レイヤとして作動する。
【０１１３】
[0123]ＶＭＭ９３０は、1以上の仮想マシンインスタンス（”ゲストマシン”）を作成し実行する。各ゲストマシンは、ＯＳ９１０などの”ゲスト”オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーション９０２などの１以上のアプリケーションを含む。ＶＭＭ９３０は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提示し、ゲストオペレーティングシステムの実行を管理する。
【０１１４】
[0124]いくつかの例において、ＶＭＭ９３０は、デバイス８００のベアハードウェア９２０上で直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容することができる。これらの例において、ベアハードウェア９２０上で実行するように構成されたゲストオペレーティングシステムの同一のバージョンはまた、修正又は再構成なしにＶＭＭ９３０上で実行されうる。言い換えれば、ＶＭＭ９３０は、いくつかの例において、ゲストオペレーティングシステムへ完全なハードウェアと、ＣＰＵ仮想化を提供することができる。
【０１１５】
[0125]他の例において、ゲストオペレーティングシステムは、効率的にＶＭＭ９３０上で実行されるように特別に設計されるか、又は、構成されうる。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ上で実行する”aware”であってもよい。言い換えれば、ＶＭＭ９３０は、いくつかの例において、ゲストオペレーティングシステムへ準仮想化を提供することができる。
【０１１６】
[0126]上述のベーシックコンピュータハードウェア及びソフトウェアは、本実施形態を実施するために採用されうる基本的な下層のコンピュータコンポーネントを示す目的で提示される。しかしながら、例示の実施形態は、任意の特定のコンピューティング環境又はコンピューティングデバイス構成に限定されない。代わりに、実施形態が本開示の分野の当業者がここで提示した実施形態の特徴及び機能をサポートできることができるものとして理解するであろう、任意の種別のシステムアーキテクチャ又は処理環境で実装されうる。
【０１１７】
＜7.0拡張及び代替例＞
[0127]前述の明細書において、本発明の例示の実施形態は、多数の特定の詳細を参照して説明した。しかしながら、これらの詳細は、特定の実装の要件に従って実装ごとに変化することができる。例示の実施形態は、従って、限定的な意味というよりはむしろ例示とみなされるものである。
【図１】
2019506644.tif 000003
【図２】
2019506644.tif 000004
【図３】
2019506644.tif 000005
【図４】
2019506644.tif 000006
【図５】
2019506644.tif 000007
【図６】
2019506644.tif 000008
【図７Ａ】
2019506644.tif 000009
【図７Ｂ】
2019506644.tif 000010
【図７Ｃ】
2019506644.tif 000011
【図８】
2019506644.tif 000012
【図９】
2019506644.tif 000013
【手続補正書】
【提出日】平成30年6月13日(2018.6.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１以上のデータネットワークによって、メタデータサーバ及び第２のコンテンツアイテムブロックサーバと動作可能に連結された第１のコンテンツアイテムブロックサーバによって実行される方法であって、前記第１のコンテンツアイテムブロックサーバは、１以上のプロセッサと、該方法を実行する前記１以上のプロセッサによって実行される命令を格納する記憶媒体とを備え、前記方法は、
複数のコンテンツアイテムブロックの識別子を前記メタデータサーバから受信することであって、コンテンツアイテムは前記複数のコンテンツアイテムブロックを含む、ことと、
前記受信した識別子の少なくとも一部に基づいて、複製タスクログに複製ログエントリを格納することであって、前記複製ログエントリは複数のコンテンツアイテムブロックの前記識別子と、前記第２のコンテンツアイテムブロックサーバの識別子とを含む、ことと、
前記複製ログエントリの処理の少なくとも一部に基づいて、前記複製ログエントリにおいて識別される前記第２のコンテンツアイテムブロックサーバへ、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの少なくとも１つのコンテンツアイテムブロックを、前記複製ログエントリにおいて識別される前記第２のコンテンツアイテムブロックサーバへ送信するオファーを送信することと、
前記第２のコンテンツアイテムブロックサーバから、前記少なくとも１つのコンテンツアイテムブロックを送信する前記オファーの承認を受信することと、
前記受信した承認の少なくとも一部に基づいて、前記少なくとも１つのコンテンツアイテムブロックを前記第２のコンテンツアイテムブロックサーバに送信することと
を含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、さらに、
前記複製ログエントリの前記処理の完了の少なくとも一部に基づいて、前記複製ログエントリが完了したことを示すように前記複製ログエントリを更新することを含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てが前記複製ログエントリで識別される前記第２のコンテンツアイテムブロックサーバへオファーされることを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、
前記承認は、送信するために、前記コンテンツアイテムが構成される前記複数のコンテンツアイテムブロックのうち、１以上のコンテンツアイテムブロックを識別し、
前記識別された１以上のコンテンツアイテムブロックは前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てを含むのではなく、
前記方法は、さらに、
前記識別された１以上のコンテンツアイテムブロックを前記第２のコンテンツアイテムブロックサーバへ送信することを含むことを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、さらに、
前記複製ログエントリを処理する前に、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの少なくとも１つを、前記第２のコンテンツアイテムブロックサーバではない第３のコンテンツアイテムブロックサーバからダウンロードすることを含むことを特徴とする方法。
【請求項６】
請求項１に記載の方法であって、さらに、
コンテンツアイテムネームスペースに関連付けられる現在のクライアントジャーナルカーソル値を判定することと、
前記現在のクライアントジャーナルカーソル値と、前記関連付けられたコンテンツアイテムネームスペースの識別子とを前記メタデータサーバへ送信することと、を含み、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの前記受信した識別子は、前記送信された現在のクライアントジャーナルカーソル値と、前記コンテンツアイテムネームスペースの識別子との少なくとも一部に基づくことを特徴とする方法。
【請求項７】
請求項１に記載の方法であって、さらに、
コンテンツアイテムネームスペースが前記第２のコンテンツアイテムブロックサーバへ割り当てられるかを判定することであって、前記コンテンツアイテムは前記コンテンツアイテムネームスペースに属する、ことを含み、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの前記少なくとも１つのコンテンツアイテムを前記第２のコンテンツアイテムブロックサーバへ送信する前記オファーは、前記コンテンツアイテムネームスペースが前記第２のコンテンツアイテムブロックサーバに割り当てられるかの判定の少なくとも一部に基づくことを特徴とする方法。
【請求項８】
請求項１に記載の方法であって、
前記複製ログエントリは、前記第２のコンテンツアイテムブロックサーバではない第３のコンテンツアイテムブロックサーバの識別子を含み、
前記方法は、さらに、
前記複製ログエントリの前記処理の少なくとも一部に基づいて、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの前記少なくとも１つのコンテンツアイテムブロックを前記複製ログエントリで識別される前記第３のコンテンツアイテムブロックサーバに送信することをオファーすることを含むことを特徴とする方法。
【請求項９】
請求項１に記載の方法であって、
前記コンテンツアイテムはコンテンツアイテムネームスペースに属し、
前記方法は、さらに、
前記コンテンツアイテムネームスペースが割り当てられた前記第２のコンテンツアイテムブロックサーバではない第３のコンテンツアイテムブロックサーバを判定することと、
前記第１のコンテンツアイテムブロックサーバと前記第３のコンテンツアイテムブロックサーバとの間でペアリングの関係が存在しないかを判定することと、
前記ペアリングの関係が存在しないことの判定の少なくとも一部に基づき、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの何れかを、前記第３のコンテンツアイテムブロックサーバへ送信することをオファーしないかを判定することと、を含み、
前記複製ログエントリは前記第３のコンテンツアイテムブロックサーバを識別しないことを特徴とする方法。
【請求項１０】
請求項１に記載の方法であって、
前記方法は、さらに、最長時間未使用の（LRU）基準に従った削除のために、前記第１のコンテンツアイテムブロックサーバにローカルに格納される１以上のコンテンツアイテムブロックを識別することを含み、
前記LRU基準は、コンテンツアイテムブロックのダウンロード時刻、コンテンツアイテムブロックのアップロード時刻、又は、コンテンツアイテムブロックのダウンロード時刻及びコンテンツアイテムブロックのアップロード時刻、に基づくことを特徴とする方法。
【請求項１１】
請求項１に記載の方法であって、
前記メタデータサーバから、前記コンテンツアイテムを構成する複数のコンテンツアイテムの前記識別子を受信することは、前記第２のコンテンツアイテムブロックサーバへのコンテンツアイテムネームスペースの割り当てに少なくとも部分的に基づくことを特徴とする方法。
【請求項１２】
１以上のデータネットワークによって、メタデータサーバ及び構外コンテンツアイテムブロックサーバと動作可能に連結された構内コンテンツアイテムブロックサーバによって実行される方法であって、前記構内コンテンツアイテムブロックサーバは、１以上のプロセッサと、該方法を実行する前記１以上のプロセッサによって実行される命令を格納する記憶媒体とを備え、前記方法は、
複数のコンテンツアイテムブロックの識別子を前記メタデータサーバから受信することであって、コンテンツアイテムは前記複数のコンテンツアイテムブロックを含む、ことと、
前記受信した識別子の少なくとも一部に基づいて、複製ログに複製ログエントリを格納することであって、前記複製ログのエントリは複数のコンテンツアイテムブロックの前記識別子と、コンテンツ管理サービスの前記構外コンテンツアイテムブロックサーバの識別子とを含む、ことと、
前記複製ログのエントリの処理の少なくとも一部に基づいて、前記複製ログのエントリにおいて識別される前記構外コンテンツアイテムブロックサーバから、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックのうち少なくとも１つのコンテンツアイテムブロックをダウンロードすることと
を含むことを特徴とする方法。
【請求項１３】
請求項１２に記載の方法であって、
前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てが前記構外コンテンツアイテムブロックサーバからダウンロードされることを特徴とする方法。
【請求項１４】
請求項１２に記載の方法であって、さらに、
前記複製ログのエントリの前記処理の完了の少なくとも一部に基づき、前記コンテンツアイテムを構成する前記複数のコンテンツアイテムブロックの全てをダウンロードした後に、前記複製ログのエントリが完了したことを示すように更新することをさらに含むことを特徴とする方法。
【請求項１５】
１つ以上のプロセッサによって実行されると、請求項１乃至１４のいずれか１項に記載の方法の動作を行わせる命令を格納した１つ以上のコンピュータで読取可能な記憶媒体。
【請求項１６】
システムであって、
１以上のプロセッサと、
１つ以上のプロセッサによって実行されると、請求項１乃至１４のいずれか１項に記載の方法の動作を行わせる命令を格納した１つ以上の記憶媒体と
を備えることを特徴とするシステム。
【国際調査報告】
2019506644.tif 000014
2019506644.tif 000015