(57)【特許請求の範囲】
【請求項１】
方法であって、
ローカルストレージと、１つ以上のプロセッサと、前記方法を実行するための前記１つ以上のプロセッサによって実行される１つ以上のコンピュータプログラムを格納する記憶媒体とを有するコンピューティングデバイスにおいて、動作を実行することは、
コンピューティングデバイスによってローカルに格納されるプレイスホルダファイルにアクセスする試みを検知することであって、前記プレイスホルダファイルはコンテンツアイテムと対応する、検知することと、
前記コンテンツアイテムを作り上げるコンテンツアイテムブロックの識別子を取得することと、
前記コンテンツアイテムを作り上げる前記コンテンツアイテムブロックのうちの、前記コンピューティングデバイスの前記ローカルストレージに格納されていない１つ以上のコンテンツアイテムブロックを決定することと、
前記コンピューティングデバイスの前記ローカルストレージにローカルに格納されていなかった前記１つ以上のコンテンツアイテムブロックを、オンプレミスブロックサーバから前記コンピューティングデバイスにダウンロードすることであって、前記コンピューティングデバイスは、前記コンピューティングデバイスの前記ローカルストレージにローカルに格納されていなかった前記１つ以上のコンテンツアイテムブロックが前記オンプレミスブロックサーバからダウンロードされるローカルネットワークによって、前記オンプレミスブロックサーバと接続され、前記オンプレミスブロックサーバは、前記コンピューティングデバイスにローカルに格納されていなかった少なくとも前記１つ以上のコンテンツアイテムブロックをキャッシュする、ダウンロードすることと、
前記コンテンツアイテムを構成する少なくとも前記ダウンロードされた１つ以上のコンテンツアイテムブロックで前記プレイスホルダファイルを満たすことであって、前記コンテンツアイテムを作り上げる前記コンテンツアイテムブロックのコピーはオフプレミスサーバに格納される、満たすことと、を含む、方法。
【請求項２】
請求項１に記載の方法であって、前記プレイスホルダファイルにアクセスする前記試みを検知することの前記動作は、オペレーティングシステムによって提供されるアプリケーションプログラミングインタフェースを介して、前記コンピューティングデバイスの前記オペレーティングシステムからの通知を受信することの前記動作を含む、方法。
【請求項３】
請求項１に記載の方法であって、前記プレイスホルダファイルはゼロバイトのファイルである、方法。
【請求項４】
請求項１に記載の方法であって、前記プレイスホルダファイルにアクセスする前記試みを検知することの前記動作は、前記プレイスホルダファイルを開く試みを検出することの前記動作を含む、方法。
【請求項５】
請求項１に記載の方法であって、前記プレイスホルダファイルにアクセスする前記試みを検知することの前記動作は、前記プレイスホルダファイルから読み出す試みを検出することの前記動作を含む、方法。
【請求項６】
請求項１に記載の方法であって、更に、前記コンテンツアイテムブロックの前記識別子を、前記コンテンツアイテムを表すエントリに格納することを含む、方法。
【請求項７】
請求項１に記載の方法であって、前記ローカルストレージは、コンテンツアイテムブロックプール領域を含み、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのうちの、前記コンピューティングデバイスの前記ローカルストレージに格納されていない前記１つ以上のコンテンツアイテムブロックを決定することは、前記コンテンツアイテムブロックプール領域に格納されていない１つ以上のコンテンツアイテムブロックを決定することに少なくとも部分的に基づく、方法。
【請求項８】
請求項１に記載の方法であって、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのうちの、前記コンピューティングデバイスの前記ローカルストレージに格納されていない前記１つ以上のコンテンツアイテムブロックを決定することは、コンテンツアイテムブロックリストに存在しない１つ以上のコンテンツアイテムブロックの１つ以上の識別子を決定することに少なくとも部分的に基づき、前記コンテンツアイテムブロックリストは、前記コンピューティングデバイスに格納され、かつ前記ローカルストレージに格納されるコンテンツアイテムブロックを識別する、方法。
【請求項９】
請求項１に記載の方法であって、前記コンピューティングデバイスの前記ローカルストレージにローカルに格納されていなかった前記１つ以上のコンテンツアイテムブロックを、オンプレミスブロックサーバから前記コンピューティングデバイスにダウンロードする前記動作は、前記１つ以上のコンピューティングデバイスに、１つ以上のコンテンツアイテムブロックの１つ以上の識別子を提供することに少なくとも部分的に基づく、方法。
【請求項１０】
請求項１に記載の方法であって、前記コンテンツアイテムを構成する少なくとも前記ダウンロードされた１つ以上のコンテンツアイテムブロックで前記プレイスホルダファイルを満たすことの前記動作は、ファイルシステムにおける前記プレイスホルダファイルを、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックを含むファイルで置き換えることの前記動作を含む、方法。
【請求項１１】
１つ以上のプロセッサによって実行されると、請求項１から１０のいずれか１項に記載の方法を実行させる命令を格納する１つ以上の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願はデジタルコンテンツアイテムの管理に関する。具体的には、以下に示す本発明の実施例は、オンラインコンテンツ管理サービスを用いてホストされるデジタルコンテンツアイテムの管理に関する。
【背景技術】
【０００２】
慣例的に、企業は、企業の所有する又は運用するネットワークファイルサーバ上にそのデジタルコンテンツアイテム（例えば、文書、ファイル、及び他のデジタル情報）を格納してきた。そのようなファイルサーバは一般に、ファイルサーバへの認証されていないネットワークアクセスを防ぐネットワークファイアウォールの後ろのオンプレミスに置かれる。この配置は、ファイルサーバへのネットワークアクセスの大多数又は全てが、これもまたネットワークファイアウォールの後ろにあるコンピュータのそばにある場合、例えば、ファイルサーバと同一のローカルエリアネットワーク（ＬＡＮ）に接続しているような場合に、良好に機能する。ある場合には、ファイアウォール（例えばインターネット）の外側からのファイルサーバへのネットワークアクセスは、仮想プライベートネットワーク（ＶＰＮ）によって容易になる。ＶＰＮは、事実上、ファイルサーバに、ファイアウォールの外側のコンピュータがファイアウォールの後ろ側にあるかのように見せる。
【０００３】
しかしながら、今日では、全従業員はよりグローバルでより機動性がある。このことは、ブロードバンドインタネット接続の広い可用性と、比較的低料金で、そのうえ強力な、例えば、モバイル電話、ラップトップコンピュータ及びタブレットコンピュータなどのポータブル個人用コンピューティングデバイスの可用性とによって広く拍車がかかっている。その結果、従業員は仮想的にどこでも仕事をすることができ、仕事を終わらせるためにオフィスに物理的に存在する必要がない（例えば遠隔で仕事をすることができる）。
【０００４】
最近、オンラインコンテンツ管理サービスは、従業員がインターネット又は他のネットワーク上でアクセス可能な「オンラインに」コンテンツアイテムを格納することが可能になった。企業はオンラインコンテンツ管理サービスを用いて、そのサービスによって動作するサーバ上に企業のコンテンツアイテムを「ホスト」することができる。オンラインコンテンツ管理サービスの例には、カリフォルニア州サンフランシスコのDropbox, Inc.により提供されている「ドロップボックス」サービスがある。
【０００５】
コンテンツアイテムのオンラインストレージは、企業やその従業員等に多くの利益をもたらす。ドロップボックス（Dropbox）は、例えば、ホストしたコンテンツアイテムを、複数のデバイスとユーザに同期及び共有する機能を提供する。このエンドユーザとドロップボックスの両方にコンテンツアイテムを格納することに起因する柔軟性は、種々の異なるオンサイト及び遠隔の就労形態をサポートし、従業員には利便性を、そして雇用者には増大した従業員の生産性を提供する。
【０００６】
企業によって生成されるデジタル情報の量が増加すれば、オンラインコンテンツ管理サービスを用いた企業のコンテンツアイテムのホスティングは増加することのみが期待される。しかしながら、いくつかのホストした情報のデリケートな性質により、企業ユーザを含むそのようなサービスのユーザは、サービスを用いてホストするコンテンツアイテムに対してより高いレベルのコントロールを提供するサービスへの改善を理解するだろう。加えて、今日の企業においてブロードバントインターネット接続が普及する一方で、インターネットを介したコンテンツアイテムのアップロード及びダウンロードは、未だにユーザが期待する又は望むよりもより長い時間を要し得る。
【０００７】
このセクションで説明したアプローチは、さらに追及されうるアプローチであって、既に着想され、追及されたアプローチではない。したがって、特に示唆しない限り、ここで説明した任意のアプローチが、ここに組み込まれることにより単に先行技術として認識されることが想定されるべきではない。
【図面の簡単な説明】
【０００８】
本発明の実施例は例示目的で説明されるものであり、参照番号等が類似の要素を参照するような、以下に示す添付の図面の図における限定による方法で説明されるものではない。
【０００９】
【図１】本発明のいくつかの実施例が実施されるシステム環境例を示すブロック図
【００１０】
【図２】本発明のいくつかの実施例に従う、ユーザアカウントとコンテンツアイテムネームスペースのメタデータのブロック図
【００１１】
【図３】本発明のいくつかの実施例に従う、リンクされたデバイスメタデータのブロック図
【００１２】
【図４Ａ】、
【図４Ｂ】、
【図４Ｃ】、
【図４Ｄ】本発明のいくつかの実施例に従う、個人用コンピューティングデバイスにおいて提示されるグラフィカルユーザインタフェース（ＧＵＩ）の例
【００１３】
【図５】本発明のいくつかの実施例に従う、分散ブロックをキャッシングするシステム例のブロック図
【００１４】
【図６】本発明の実施例が実施され得るコンピューティングデバイスの非常に一般的なブロック図
【００１５】
【図７】コンピューティングデバイスの動作を制御する基本的なソフトウェアシステムのブロック図
【発明を実施するための形態】
【００１６】
以下の説明では、本発明の実施例の十分な理解を提供するために、説明の目的で多くの特定事例を明らかにする。しかしながら、本実施例がそれらの特定事例なしに実施されうることは明らかであろう。他の例では、本実施例を不必要に不明りょうにすることを避けるために、既知の構成やデバイスがブロック図の形式で示される。
【００１７】
本実施例は以下の概要に従って説明される。
１．０    説明する例
２．０    システム環境の例
３．０    ユーザアカウント及びコンテンツアイテムネームスペースのメタデータ
４．０    コンテンツアイテムネームスペースのマウント情報
５．０    リンクされたデバイスメタデータ
６．０    オンプレミスのコンテンツ管理サービス
７．０    選択的なコンテンツアイテムの同期
８．０    分散ブロックのキャッシング最適化
９．０    基本的なコンピューティングハードウェアとソフトウェア
９．１    基本的なコンピューティングデバイス
９．２    基本的なソフトウェアシステム
１０．０    拡張及び代替
−−−−
【００１８】
１．０      説明する例
本発明の実施例は、オンラインコンテンツ管理サービスのユーザに、そのようなサービスを用いてホストされるユーザのコンテンツアイテムにわたる、より高いコントロールを提供する。以下では、多くの、コンピュータに実装されるプロセス及びネットワークのやり取りが記載される。これらのプロセス及びネットワークのやり取りの記載において役立つように、これから何人かの説明例のユーザが用いられる。これらの例は、本発明のいくつかの実施例の特徴を説明するために用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。これらの例は限定を意図するものではなく、単に説明として提供されるものである。
【００１９】
第１のユーザ例は、以下、「アルファ会社」として参照される。第１の例として、アルファ会社は多数の従業員を有し、従業員は、オンラインコンテンツ管理サービスを用いて、彼らの業務コンピュータに格納されたコンテンツアイテムを、当該サービスによって運用されるインターネット上のサーバに格納されるコンテンツアイテムと同期する。アルファ会社は、コンテンツアイテムが彼らの業務コンピュータに格納されているため、従業員の業務コンピュータがインターネットに接続していない場合に当該コンテンツアイテムへのアクセスを有する、ということを好む。同時に、アルファ会社は、コンテンツアイテムがオンラインコンテンツ管理サービスのサーバと、バックアップ及び共有の目的で同期される、ということも好む。アルファ会社はまた、可能な場合に、従業員の業務コンピュータ間のコンテンツアイテムの変更を同期するための必要な時間を削減することを好む。
【００２０】
第２の例として、アルファ会社の従業員は地理的に分散化され得る。例えば、アルファ会社の本社はサンフランシスコにあり得るが、サテライトオフィスをニューヨーク、オースティン及びシアトルにも有し得る。会社アルファのチームも地理的に分散され得る。例えば、サンフランシスコとオースティンのオフィスの従業員がプロジェクトで共同し得る。アルファ会社は、チームで共同したコンテンツアイテムへの変更がサンフランシスコとオースティンのオフィスのコンピュータ間で素早く同期されることを好むだろう。
【００２１】
第３の例として、サンフランシスコとオースティンのアルファ会社の従業員が共同するプロジェクトは非常にデリケート（例えば機密）であり得る。この場合、アルファ会社は、プロジェクトに関するコンテンツアイテムに渡る、より多くのコントロールと監視を保持することを望み得る。例えば、アルファ会社は、プロジェクトのコンテンツアイテムがオンプレミスに格納され、オンラインコンテンツ管理サービスによって動作するサーバには格納されないことを好み得る。
【００２２】
本発明の特徴を用いることにより、アルファ会社のようなユーザ及び他のユーザは、オンラインコンテンツ管理サービスによって管理される彼らのコンテンツアイテムがどこにホストされるのかをコントロールすることができる。特に、実施例は、オンプレミスにのみ、オフプレミスにのみ、又は、オンプレミスとオフプレミスとの両方に、ユーザがコンテンツアイテムをホストすることを可能にする。オンプレミスにコンテンツアイテムをホストする場合、ユーザは、（いくつかの実施例はオンラインコンテンツ管理サービスが提供するオンプレミスのコンテンツアイテムのストレージハードウェアを含むが）彼ら自身のコンテンツアイテムのストレージハードウェアを用いることができる。実施例は、エンドユーザデバイスが、エンドユーザデバイスにおいて成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、へ同期することを可能にする。実施例はまた、エンドユーザデバイスが、他のエンドユーザデバイスによって成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、から同期することを可能にする。
【００２３】
これらの説明の例は、以降の記載のいくつかと共に用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。
【００２４】
２．０    システム環境の例
本発明のいくつかの実施例の特徴が、図１を参照して今から記載される。図１は、本発明のいくつかの実施例が実施されるシステム環境１００の例に係るブロック図である。図示されるように、ユーザ（例えば１０２−１）は、個人用コンピューティングデバイス（例えば１１０−１）を有する又は用いることができる。個人用コンピューティングデバイスはローカルストレージ（例えば１１２−１）とコンテンツアイテム同期エージェント（例えば１１４−１）とを有することができる。個人用コンピューティングデバイスのローカルストレージは、１つ以上のコンテンツアイテム１１３を格納することができる。オンプレミスブロックサーバ１２０は、ブロックサービス１２２、ブロックストレージ１２４、及びブロック管理エージェント１２６から構成されることができる。ブロックストレージ１２４は、１つ以上のコンテンツアイテムブロック１２５を格納することができる。オンラインコンテンツ管理サービスは、コントロールプレーン、ストレージプレーン、及びデータプレーンから構成されることができる。コントロールプレーンは通知サーバ１４０、メタデータサーバ１５０、及びウェブサイト１７０を含むことができる。ストレージプレーンはオフプレミスブロックサーバ１３０を含むことができる。オフプレミスブロックサーバ１３０は、ブロックサービス１３２、及びブロックストレージ１３４から構成されることができる。オフプレミスブロックサーバ１３０のブロックストレージ１２４は、１つ以上のコンテンツアイテムブロック１２５を格納することができる。バックエンドデータバスは、コンピューティングデバイス、ネットワーク、及びネットワークデバイスの集合から構成されることができ、ネットワークデバイスは、ネットワーク通信と、サーバ１３０、１４０、１５０及び１７０のものを含む、コントロールプレーンとストレージプレーンとの間やその内部のデータの移動とを容易にする。バックエンドデータバスはまた、サーバ１３０、１４０、１５０及び１７０のものを含む、コントロールプレーンとストレージプレーンとによってメタデータプレーン１８０へのアクセスを容易にすることができる。データプレーン１８０は、１つ以上の揮発性又は不揮発性メモリをベースとした、分散可能な、データを検索及び格納するデータベースシステム（例えばメムキャッシュ（memcache）、ＲＤＢＭＳ、分散キー・バリューストア等）から構成されることができる。
【００２５】
図１の例では、システム環境１００は、個人用コンピューティングデバイス１１０−１及び個人用コンピューティングデバイス１１０−２をそれぞれ有する又は使用するユーザ１０２−１及び１０２−２を含む。個人用コンピューティングデバイス１１０−１は、ローカルストレージ１１２−１とコンテンツアイテム同期エージェント１１４−１とを有する。個人用コンピューティングデバイス１１０−２も、ローカルストレージ１１２−２とコンテンツアイテム同期エージェント１１４−２とを有する。図１は、明示的な例を提供する目的で、システム環境１００における２人のユーザ（１０２−１及び１０２−２）と２つの個人用コンピューティングデバイス（１１０−１及び１１０−２）のみを示しているが、システム環境１００は、２人以上のユーザと、それぞれがローカルストレージ及びコンテンツアイテム同期エージェントを有する２つ以上の個人用コンピューティングデバイスとを含んでよいことは理解されるべきである。例えば、システム環境１００は、数百又は数千又は数百万又はそれ以上のユーザと、数百又は数千又は数百万又はそれ以上の個人用コンピューティングデバイスを有してよい。更に、ユーザと個人用コンピューティングデバイスとの間に一対一の対応は要求されない。例えば、単一の個人用コンピューティングデバイスは複数のユーザによって使用されてもよく、単一のユーザは複数の個人用コンピューティングデバイスを有し又は使用してもよい。
【００２６】
本発明のいくつかの実施例に従って、ユーザ１０２−１は、個人用コンピューティングデバイス１１０−１を用いて、個人用コンピューティングデバイス１１０−１のローカルストレージ１１２−１にコンテンツアイテム１１３を追加し又は変更することができる。その後、個人用コンピューティングデバイス１１０−１におけるコンテンツアイテム同期エージェント１１４−１は、ローカルストレージ１１２−１へのコンテンツアイテム１１３の追加又は変更を自動的に検出し、このコンテンツアイテム１１３をオンプレミスブロックサーバ１２０又はオフプレミスブロックサーバ１３０にアップロードする。いくつかの実施例によれば、アップロードは、以降でより詳細に説明される実施例のコンテンツアイテム同期プロトコルに従う、コンテンツアイテム同期エージェント１１４−１とメタデータサーバ１５０との間のネットワーク通信によって促進される。
【００２７】
本発明のいくつかの実施例に従って、他の個人用コンピューティングデバイス１１０−２は、個人用コンピューティングデバイス１１２−２のローカルストレージ１１２-２に追加された又は変更されたコンテンツアイテム１１３を自動的にダウンロードすることができる。初めに、通知サーバ１４０は、個人用コンピューティングデバイス１１２−２におけるコンテンツアイテム同期エージェント１１４−２に、コンテンツアイテム１１３の新たなバージョンが利用可能であることを通知する。その後、コンテンツアイテム同期プロトコルに従った同期エージェント１１４−２とメタデータサーバ１５０との間のネットワーク通信による指示の通りに、コンテンツアイテム同期エージェント１１４−２は、コンテンツアイテム１１３の新たなバージョンを、オンプレミスブロックサーバ１２０又はオフプレミスブロックサーバ１３０からダウンロードする。ダウンロードの後に、コンテンツアイテム１１３の新たなバージョンはローカルストレージ１１２−２におけるユーザ１０２−２に利用可能となる。
【００２８】
個人用コンピューティングデバイス（例えば１１０−１又は１１０−２）は据え置き用又は携帯用コンピューティングデバイスであることができる。例えば、個人用コンピューティングデバイスは、デスクトップコンピュータ、ワークステーションコンピュータ、携帯電話、ラップトップコンピュータ、タブレットコンピュータ、又は他の据え置き用又は携帯用コンピューティングデバイスであることができる。個人用コンピューティングデバイスは、例えば、図６との関連で後述する基本的なコンピューティングデバイス６００のもののような、１以上のハードウェア要素から構成されてもよい。個人用コンピューティングデバイスはまた、例えば、図７との関連で後述するソフトウェアシステム７００のような、基本的なソフトウェアシステムを用いて構成されてもよい。
【００２９】
ローカルストレージ（例えば１１２−１又は１１２−２）は、物理ホストインタフェース（例えば、シリアルアタッチドＳＣＩＳ（Serial Attached SCIS）、シリアルＡＴＡ、ＰＣＩエクスプレス、ファイバチャネル（Fibre Channel）、ＵＳＢなど）によって個人用コンピューティングデバイス１１０のバスに接続される、電子的、磁気的又は光学的なデータストレージ機構であり得る。例えば、個人用コンピューティングデバイスの、データストレージ機構は、ハードディスク、ソリッドステートドライブ、又は光学ドライブであり得る。代替的に、ローカルストレージは、個人用コンピューティングデバイス上に「マウント」される、例えば、ローカルエリアネットワーク（ＬＡＮ）上のネットワークデータストレージのような、ネットワークドライブであり得る。ネットワークドライブをマウントすることにより、ネットワークドライブに格納されるデータは、ネットワークドライブがデバイスとは別個にネットワークを跨いで物理的に置かれても、ユーザと、個人用コンピューティングデバイス（例えばデバイスの物理ドライブ上）に格納される個人用コンピューティングデバイス上で実行されるアプリケーションとから見えるようになる。ひとたびマウントされると、個人用コンピューティングデバイスは、典型的に、例えば、ＵＮＩＸ用のネットワークファイルシステム(NFS)プロトコル、又は、ウインドウズ（WINDOWS）用のサーバメッセージブロック(SMB)プロトコルのようなネットワークファイルシステムプロトコルに従って、ネットワークドライブから及びネットワークドライブへ読み書きする。
【００３０】
個人用コンピューティングデバイスのローカルストレージは、コンテンツアイテム１１３を格納してもよい。「コンテンツアイテム」はデジタル情報の集合である。ローカルストレージに格納される場合、コンテンツアイテムはファイルシステムのファイルに対応し得る。例えば、コンテンツアイテムは、文書ファイル（例えばワードプロセッシング文書、プレゼンテーション文書、スプレッドシート文書又は他の種別の文書）、画像ファイル（例えば、ｊｐｇ，ｔｉｆｆ，ｇｉｆ又は他の種別の画像ファイル）、音声ファイル（例えば、  ｍｐ３，ａｉｆｆ，ｍ４ａ，ｗａｖ又は他の種別の音声ファイル）、映像ファイル（例えば、ｍｏｖ，ｍｐ４，ｍ４ｖ又は他の種別の映像ファイル）、ウェブページファイル（例えば、ｈｔｍ，ｈｔｍｌ又は他の種別のウェブページファイル）、テキスト又はリッチテキストファイル（例えば、ｔｘｔ，ｒｔｆ又は他の種別のテキスト又はリッチテキストファイル）、又は他の種別のファイルであり得る。ローカルストレージに格納される場合、コンテンツアイテムは，ファイルシステムのファイル・フォルダ階層内のファイルシステムパスを有し得る。例えば、ローカルストレージに格納されるコンテンツアイテムに対するファイルシステムパスは、文字列として「C:\folder1\folder2\my.file」と表されてよい。ここで、「C:\」はファイルシステムのルートを参照し、「folder1」はファイルシステムのルートにおけるファイルシステムフォルダを参照し、「folder2」は「folder1」ファイルシステムフォルダを用いてファイルシステムフォルダを参照し、「my.file」はコンテンツアイテムに対応する「folder2」ファイルシステムフォルダ内のファイルを参照する。「\」文字は、文字列表現内の異なるファイルシステムフォルダとファイル参照とを線引きするために文字列表現内で用いられる。
【００３１】
個人用コンピューティングデバイス１１０−１及び１１０−２とオンプレミスブロックサーバ１２０とは、ローカルエリアネットワーク（ＬＡＮ）１６０に接続され得る。例えば、ＬＡＮ１６０は、これに限らないがＩＥＥＥ  ８０２．３又はＩＥＥＥ  ８０２．１１ベースのネットワークを含むＩＥＥＥ  ８０２ベースのネットワーク、又は、複数のこのようなネットワークの組み合わせであり得る。ＬＡＮ１６０は、ネットワークファイアウォールによってワイドエリアネットワーク（ＷＡＮ）１９０から保護されてよい。実施例では、ＷＡＮ１９０はインターネット又は他の公衆ネットワークである。特に、ネットワークファイアウォールは、サーバ１３０、１４０、１５０及び１７０を含むＷＡＮ１９０に接続するデバイスが、個人用コンピューティングデバイス１１０−１及び１１０−２とオンプレミスブロックサーバ１２０とを含むＬＡＮ１６０に接続するデバイスと、ネットワーク接続の確立を開始することを防止する。しかしながら、ネットワークファイアウォールは、サーバ１３０、１４０、１５０及び１７０を含むＷＡＮ１９０に接続するデバイスと確立するための、個人用コンピューティングデバイス１１０−１及び１１０−２とオンプレミスブロックサーバ１２０とを含むＬＡＮ１６０に接続するデバイスを発信元とする特定の種別のネットワーク接続を許可するように構成され得る。典型的に、ＬＡＮ１６０は、ＷＡＮ１９０と比較した場合により低いネットワークレイテンシとより高いネットワーク帯域とを有するが、所与の実装がそうでなければならないという要求があるわけではない。
【００３２】
オンプレミスブロックサーバ１２０、オフプレミスブロックサーバ１３０、通知サーバ１４０、メタデータサーバ１５０、ウェブサイト１７０及びメタデータプレーン１８０のいくつか又は全ては、１つ以上のサーバコンピューティングデバイスによって実装されてよい。これらのそれぞれは、例えば、図６との関連で後述する基本的なコンピューティングデバイス６００のもののような、１以上のハードウェア要素から構成されてよく、これらのそれぞれはまた、例えば、図７との関連で後述するソフトウェアシステム７００のような、基本的なソフトウェアシステムを用いて構成されてもよい。２以上のサーバコンピューティングデバイスによって実装される場合、サーバコンピューティングデバイスは、ロードバランスされ、クラスタ化され、又は他の分散コンピューティングアレンジメントで構成されてもよい。
【００３３】
コンテンツアイテム同期エージェント、ブロックサービス１２２、ブロックエージェント１２６、ブロックサービス１３２、通知サーバ１４０、メタデータサーバ１５０、ウェブサイト１７０及びメタデータプレーン１８０のそれぞれの機能は、１つ以上のコンピューティングデバイスによって実行されるとその機能を果たす命令を有する１つ以上のコンピュータプログラムとして実装されてよい。しかしながら、この機能は、目下の特定の実装の要件に従って、ハードウェア（例えば、１つ以上の特定用途向け集積回路（ＡＳＩＣＳ）又は１つ以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ））、又はハードウェアとソフトウェアの組み合わせで実装され得る。
【００３４】
明りょうな例を提供する目的のため、図１は単一のオンプレミスブロックサーバ１２０のみを示しているが、システム環境１００は、オンラインコンテンツ管理サービスのユーザの関連するグループの数に応じて、数百又は数千又は数百万又はそれ以上のオンプレミスブロックサーバを含んでよい。例えば、オンラインコンテンツ管理サービスは、様々な異なる組織、業種、企業、学校、大学及び他のグループに属す数十億又はそれ以上のユーザをサポートしてもよい。これらの組織、業種、企業、学校、大学及び他のグループのそれぞれは、１以上のオンプレミスブロックサーバを有し又は使用してもよい。
【００３５】
以下で使用される「オンプレミス（on-premises）」の語は、１つ以上の個人用コンピューティングデバイス及びオンラインコンテンツ管理サービスと、特に、オンラインコンテンツ管理サービスのオフプレミスブロックサーバ１３０とが相対的であることが意図される。オンプレミスブロックサーバ（例えば１２０）は、個人用コンピューティングデバイスとして同一の設備又は同一のビルディングに置かれてよいが、このように要求されるものではない。オンプレミスブロックサーバが個人用コンピューティングデバイスとして同一のローカルエリアネットワーク（例えば１６０）に接続されてもよいが、そのように要求されるものでもない。従って、ここでの「オンプレミス」ブロックサーバに対する参照は、所定の個人用コンピューティングデバイスに対して、ブロックサーバが、地理的及び／又はネットワーク的に、当該所定の個人用コンピューティングデバイスに対するオフプレミスブロックサーバ１３０よりも近いことを意味する。個人用コンピューティングデバイスは、個人用コンピューティングデバイスをオンプレミスブロックサーバに接続するネットワークが、個人用コンピューティングデバイスをオフプレミスブロックサーバ１３０に接続するネットワークよりも、より低いネットワークレイテンシ及び／又はより高いネットワーク帯域可用性を提供する場合、ネットワーク上のオフプレミスブロックサーバ１３０よりもオンプレミスブロックサーバに近くてよい。
【００３６】
個人用コンピューティングデバイスは、例えば、オンプレミスブロックサーバ１２０、オフプレミスブロックサーバ１３０、メタデータサーバ１５０及びウェブサイト１７０を含む、様々なサーバのネットワーク要求或いは単に「要求」を生成してもよい。そして、サーバ１２０、１３０、１５０及び１７０は、ネットワーク応答或いは単に「応答」を、個人用コンピューティングデバイスからの要求に対して返してよい。要求は典型的にはヘッダとペイロードとを含む。この要求ヘッダは典型的に、要求を受信するサーバへの要求ペイロードに対するコンテクストを提供する。要求に対する応答はまた、典型的にはヘッダとペイロードとを含む。応答のヘッダは典型的に、応答を受信する個人用コンピューティングデバイスへの応答ペイロードに対するコンテクストを提供する。個人用コンピューティングデバイスからの要求と、サーバによって返信されるその応答とは、１つ以上のネットワーク（例えば１６０及び１９０）を介して送信されてよく、例えば、ハイパーテキスト伝送プロトコル（ＨＴＴＰ）のような要求‐応答ネットワーキングプロトコルに従って生成されてよい。要求とその応答は、例えば、伝送制御プロトコル（ＴＣＰ）などのコネクション指向ネットワーキングプロトコルに従って個人用コンピューティングデバイスとサーバとによって確立されたネットワーク接続を介して、送信されてよい。ネットワーク接続は、２以上の要求と応答のペアがそのネットワーク接続を介して送信されるという意味において永続的であってよい。ネットワーク接続はまた、例えば、トランスポートレイヤセキュリティ（ＴＬＳ）又はセキュアソケットレイヤ（ＳＳＬ）暗号ネットワーキングプロトコルに従って暗号化されてもよい。しかしながら、特定のネットワーキングプロトコル又はネットワーキングプロトコルの特定のセットが実施例によって要求されるものではなく、ＨＴＴＰ、ＴＣＰ、ＴＬＳ又はＳＳＬ以外のプロトコルが、目下の特定の実装の要求に従って用いられてもよい。
【００３７】
３．０    ユーザアカウント及びコンテンツアイテムネームスペースのメタデータ
図２は、ユーザアカウントと、メタデータプレーン１８０に格納されるコンテンツアイテムネームスペースのメタデータ２００とを表す。特に、メタデータプレーン１８０は、オンラインコンテンツ管理サービスに保持される１つ以上のユーザアカウントに対応する、ユーザアカウントレコード２１０を格納し得る。いくつかの実施例では、メタデータプレーン１８０は数百、数千、数百万又はそれ以上のユーザアカウントレコード２１０を格納する。他の情報のうち、ユーザアカウントレコード２１０は、ユーザアカウント識別子２１２と１つ以上の認証済コンテンツアイテムネームスペース識別子２１４とを有し得る。
【００３８】
ユーザアカウントレコード２１０のユーザアカウント識別子２１２は、メタデータプレーン１８０のユーザアカウントレコード２１０を識別する。いくつかの実施例では、ユーザアカウント識別子２１２は１２８ビットの値である。特別なセキュリティのため、ユーザアカウントレコード２１０のユーザアカウント識別子２１２は、時々と変更（例えば循環）されてもよい。従って、ユーザアカウントレコード２１０のユーザアカウント識別子２１４は、ユーザアカウントレコード２１０の存続期間に渡って変化してよい。しかしながら、ユーザアカウント識別子２１２が時々変更されることを要求するものではなく、ユーザアカウントレコード２１０は、ユーザアカウントの存続に対して同一のユーザアカウント識別子２１２を有しても良い。
【００３９】
ユーザアカウントレコード２１０の認証済コンテンツアイテム識別子２１４は、ユーザアカウントレコード２１０のユーザアカウント識別子２１２を所有するユーザがアクセスする認証を受けた、コンテンツアイテムネームスペースを識別する。従って、オンラインコンテンツ管理サービスにユーザアカウントを保持するユーザは、ユーザアカウントに関連付けられた１つ以上のコンテンツアイテムネームスペースへのアクセスを有し得る。更に、複数のユーザは、同一のコンテンツアイテムネームスペースへのアクセスを有してもよい。そのようなコンテンツアイテムネームスペースはしばしば「共有」コンテンツアイテムネームスペース、或いはより口語的に「共有フォルダ」として参照され、これは、コンテンツアイテムネームスペースが２以上のユーザアカウントによってアクセス可能であることによる。しかしながら、コンテンツアイテムネームスペースを単一のユーザアカウントによってのみアクセス可能にすることも可能である。
【００４０】
ユーザは、ユーザアカウント識別子２１２に関連付けられる有効な認証クレデンシャル（例えば、有効なユーザ名とパスワード）を提供することにより、ユーザアカウント識別子２１２の所有を得ることができる。例えば、ユーザは、ウェブサイト１７０によって個人用コンピューティングデバイスに供給されるウェブページを介して、ウェブサイト１７０に認証クレデンシャルを提供してもよい。ユーザによって提供される認証クレデンシャルの有効性は、オンラインコンテンツ管理サービス又は第三者の認証サービス又は他の識別プロバイダによって確認されてもよい。
【００４１】
ひとたび認証クレデンシャルが確認されると、ユーザアカウント識別子２１２はユーザの個人用コンピューティングデバイスに提供され、例えばローカルストレージ内にローカルに格納される。ローカルに格納される場合、ユーザアカウント識別子２１２は特別なセキュリティのために暗号化されてよい。個人用コンピューティングデバイスにおけるコンテンツアイテム同期エージェントと他のアプリケーション（例えば、ウェブブラウザアプリケーション）は、様々なサーバ１２０、１３０、１４０、１５０及び１７０へ送信されるネットワーク要求内に、ローカルに格納されたユーザアカウント識別子２１２を含めてもよく、これによって、要求を行う特定のユーザアカウントを識別する。
【００４２】
コンテンツアイテム同期エージェント（例えば１１４−１）は、ユーザアカウントレコード２１０の情報へのローカルアクセスを有してもよい。例えば、ユーザ１０２−１が、ユーザアカウントレコード２１０のユーザアカウント識別子２１２に関連付けられた有効な認証クレデンシャルを提供した後には、ユーザアカウントレコード２１０の情報が、個人用コンピューティングデバイス１１０−１へ（例えばメタデータサーバ１５０又はウェブサイト１７０から）ダウンロードされ、ローカルストレージ１１２−１に格納されてよい。ここで、ローカルストレージ１１２−１は、コンテンツアイテム同期エージェント１１４−１がローカルにアクセス可能である。このようなダウンロードされた情報は、ユーザアカウント識別子２１２と、ユーザアカウントレコード２１０の認証済コンテンツアイテムネームスペース識別子２１４とを含んでよい。ローカルストレージ１１２−１に格納された場合、ダウンロードされた情報は追加セキュリティのために暗号化されてよい。
【００４３】
４．０    コンテンツアイテムネームスペースのマウント情報
いくつかの実施例によれば、コンテンツアイテム同期エージェント（例えば１１４−１）による、コンテンツアイテムのコンテンツアイテムネームスペースを所有することの判定は、ローカルストレージ１１２−１の階層的ファイルシステムにおけるコンテンツアイテムへのファイルシステムパスに基づく。特に、コンテンツアイテム同期エージェント１１４−１は、コンテンツアイテムネームスペースマウント情報へのローカルアクセスを有してもよい。コンテンツアイテムネームスペースマウント情報は、ファイルシステムに「マウントされた」１つ以上の認証済コンテンツアイテムネームスペースのそれぞれに対して、コンテンツアイテムネームスペース「マウントポイント」フォルダへのファイルシステムパスを識別してもよい。ここで、コンテンツアイテムネームスペース「マウントポイント」フォルダは、認証済コンテンツアイテムネームスペースがマウントされる。従って、認証済コンテンツアイテムネームスペースは、個人用コンピューティングデバイスのファイルシステム内に、コンテンツアイテムネームスペースマウントポイントフォルダが認証済コンテンツアイテムネームスペースに対して存在する場合、個人用コンピューティングデバイスに「マウントされた」ものとして考慮されてよい。コンテンツアイテムネームスペースに対するコンテンツアイテムネームスペースマウントポイントフォルダが、コンテンツアイテムネームスペースがマウントされる全ての個人用コンピューティングデバイスにおいて同一であることを要求するものではなく、同一のコンテンツアイテムネームスペースが、異なる個人用コンピューティングデバイスにおける異なるコンテンツアイテムネームスペースマウントポイントフォルダにマウントされる、ことに注意すべきである。例えば、個人用コンピューティングデバイス１１０−１に格納されたコンテンツアイテムネームスペースマウント情報が、
【００４４】
識別子「ＡＢＣ１２３」を有するコンテンツアイテムネームスペースが「C:\My Work Content items\」にマウントされ、
【００４５】
識別子「ＤＥＦ４５６」を有する他のコンテンツアイテムネームスペースが「C:\My Work Content Items\My Shared Items\」にマウントされ、
【００４６】
識別子「ＧＨＩ７８９」を有する他のコンテンツアイテムネームスペースが「C:\My Content Items\My Personal Content Items\」にマウントされる、ことを示してよい。
【００４７】
いくつかの実施例によれば、コンテンツアイテム同期エージェント１１４−１は、新規コンテンツアイテムが属す最もネストされたコンテンツアイテムネームスペースマウントフォルダのファイルシステムパスを、ローカルに格納されたコンテンツアイテムネームスペースマウント情報内で識別することにより、新規コンテンツアイテムのコンテンツアイテムネームスペースの所有を判定する。上記例に続いて、コンテンツアイテムへの階層的ファイルシステム内のファイルシステムパスが「C:\My Content Items\My Personal Content Items\Photos\photo_of_me_hiking.jpg」である場合、コンテンツアイテム同期エージェント１１４−１は、コンテンツアイテムがコンテンツアイテムネームスペース「ＧＨＩ７８９」に属すと判定する。一方、コンテンツアイテムへのファイルシステムパスが「C:\My Work Content Items\My Shared Items\Presentations\sales_preso.doc」である場合、そのときは、コンテンツアイテム同期１１４−１は、コンテンツアイテムが、コンテンツアイテムネームスペース「ＡＢＣ１２３」とは対照的に、コンテンツアイテムネームスペース「ＤＥＦ４５６」に属すと判定する。これは、フォルダ「C:\My Work Content Items\My Shared Items\」がフォルダ「C:\My Work Content Items\」内でネストされていることによる。
【００４８】
上記例において、コンテンツアイテムネームスペースマウント情報が完全に要件を満たした又は絶対的なファイルシステムパスを含んでいたが、コンテンツアイテムネームスペースマウント情報は、他の実施例において相対的なファイルシステムパスを含んでもよい。他のこれらの実施例では、個人用コンピューティングデバイスにおけるコンテンツアイテム同期エージェントは、コンテンツアイテムのコンテンツアイテムネームスペースの所有を、新規コンテンツアイテムへの相対的なファイルシステムパスと、個人用コンピューティングデバイスにおいて全てのコンテンツアイテムネームスペースマウントポイントフォルダに共通な親のマウントポイントフォルダへのファイルシステムパスとに基づいて判定することができる。例えば、個人用コンピューティングデバイス１１０−１におけるコンテンツアイテムネームスペースマウント情報が、
【００４９】
識別子「ＡＢＣ１２３」を有するコンテンツアイテムネームスペースが「\My Work Content items\」にマウントされ、
【００５０】
識別子「ＤＥＦ４５６」を有する他のコンテンツアイテムネームスペースが「\My Work Content Items\My Shared Items\」にマウントされ、
【００５１】
識別子「ＧＨＩ７８９」を有するコンテンツアイテムネームスペースが「\My Personal Content Items\」にマウントされる、ことを示してよい。
【００５２】
上記例では、親のマウントポイントフォルダは、例えば、「C:\My Content Items\」であってよい。この場合、コンテンツアイテムへの完全に要件を満たす又は絶対システムファイルパスが「C:\My Content Items\My Work Content Items\My Shared Items\Presentations\sales_preso.doc」である場合、コンテンツアイテム同期エージェント１１４−１は、フォルダ「\My Work Content Items\My Shared Items\Presentations\sales_preso.doc’」のコンテンツアイテムへの相対的ファイルシステムパスに基づいて、コンテンツアイテムがコンテンツアイテムネームスペース「ＤＥＦ４５６」に属すと判定する。
【００５３】
コンテンツアイテム同期エージェントは、新規コンテンツアイテムに対するコンテンツアイテムブロックリストを計算してもよい。特に、コンテンツアイテムは、１つ以上のコンテンツアイテムブロックに区画されてもよく、コンテンツアイテムの暗号化ハッシュが計算されてもよい。
【００５４】
コンテンツアイテムブロックは、最大の所定のサイズ（例えば４ＭＢ）を有してよい。しかしながら、コンテンツアイテムのトータルサイズが丁度最大の所定のサイズの複数分でない場合、最後（又は最初）のコンテンツアイテムブロック又はコンテンツアイテムのコンテンツアイテムブロックのみが、当該最大の所定のサイズより小さいサイズになり得る。
【００５５】
暗号化ハッシュ関数は、例えば、コンテンツアイテムブロックに適用した場合にほぼ固有な固定サイズのハッシュ（例えば２５６ビットハッシュ）を生成するセキュアハッシュアルゴリズム（ＳＨＡ）であり得る。他のハッシュ関数が使用されてもよく、実施例はＳＨＡ−２５６ハッシュ関数に限定されない。しかしながら、一般に、ハッシュ関数は、管理下における所与の固有のコンテンツアイテムブロックの数において衝突が稀であるように、十分なビット深度（例えば２５６ビット又はそれ以上）であるべきである。従って、コンテンツアイテムは、コンテンツアイテムを生成するコンテンツアイテムブロックから計算される１つ以上のコンテンツアイテムブロックハッシュのリストとして表され得る。この種のリストはまた、以降において一般に「コンテンツアイテムブロックリスト」として参照され、或いは、特定のコンテンツアイテムに対するコンテンツアイテムブロックリストを参照する場合、「特定のコンテンツアイテムのブロックリスト」として参照される。
【００５６】
いくつかの場合、コンテンツアイテム同期エージェントは、変更されたコンテンツアイテムのどのコンテンツアイテムブロックが、コンテンツアイテムの以前のバージョンに対して変更され又は新しいのかを効率的に判定するために、ローリングチェックサムアプローチ（rolling checksum approach）を用いてよい。この場合、コンテンツアイテムブロックハッシュは、新規又は変更されたコンテンツアイテムブロックに対してのみ計算され、変更されていないブロックに対して以前に計算されたコンテンツアイテムブロックハッシュは、変更されたコンテンツアイテムのブロックリストにおいて再利用される。
【００５７】
５．０    リンクされたデバイスメタデータ
図３は、本発明のいくつかの実施例に従う、メタデータプレーン１８０に格納された、リンクされたデバイスメタデータ３００のブロック図を示している。リンクされたデバイスメタデータ３００は、１つ以上のリンクされたデバイスレコード３１０を含む。リンクされたデバイスレコード３１０のそれぞれは、リンクされた個人用コンピューティングデバイスを識別するデバイス識別子３１２を有し得る。デバイスレコード３１０のそれぞれはまた、ユーザアカウントレコード２１０を識別するユーザアカウント識別子２１２を有し得る。例えば、同一のユーザが複数の個人用コンピューティングデバイスを用いてオンラインコンテンツ管理サービスとやりとりする場合、同一のユーザアカウント識別子２１２を有する、複数のリンクされたデバイスレコード３１０が存在してもよい。しかしながら、所与のユーザアカウント識別子２１２を有する、単一のリンクされたデバイスレコード３１０のみが存在するようにすることも可能である。リンクされたデバイスレコード３１０は、デバイス識別子３１２とユーザアカウント識別子２１２とに加えて、他の情報を含んでよい。例えば、リンクされたデバイスレコード３１０は、リンクされたデバイスの種別、リンクされたデバイスにインストールされたオペレーティングシステムの種別、リンクされたデバイスにインストールされたコンテンツアイテム同期エージェントのバージョン、他のデバイス固有の情報についての情報を含んでよい。
【００５８】
いくつかの実施例によれば、リンクされたデバイスレコード３１０は、個人用コンピューティングデバイスにおいて実行されるクライアントアプリケーションが、ユーザアカウント識別子２１２に関連付けられた有効なユーザ認証クレデンシャルを提供するウェブサイト１７０へ要求を送信したことに応じて、個人用コンピューティングデバイスに対して、メタデータプレーン１８０に生成される。例えば、クライアントアプリケーションは、ユーザが有効なユーザ認証クレデンシャルを提供する個人用コンピューティングデバイスにおいて実行されるウェブブラウザであり得る。要求に応じて、ウェブサイト１７０は、新規のリンクされたデバイスレコード１８０を、個人用コンピューティングデバイスと有効なユーザアカウント識別子２１２とを識別するデバイス識別子３１２と共に生成してもよい。
【００５９】
６．０    オンプレミスコンテンツ管理サービス
いくつかの実施例では、オンラインコンテンツ管理サービスのコントロールプレーンとメタデータプレーンの機能は、オンプレミスで提供される。特に、（例えば１４０のような）通知サーバ、（例えば１５０のような）メタデータサーバ、及び（例えば１７０のような）ウェブサイト１７０を含むオンプレミスのコントロールプレーンは、バックエンドのデータバスによって、オンプレミスブロックサーバ（例えば１２０）と（例えば１８０のような）オンプレミスのメタデータプレーンとに接続されてよい。この場合、以下に説明する同期プロトコルの動作は、オンプレミスブロックサーバにコミット（commit）されたコンテンツアイテムのためのオンプレミスコンテンツ管理サービスに対して実行されてよい。
【００６０】
オンプレミスコントロールプレーン及び／又はメタデータプレーンが使用される場合、オフプレミスブロックサーバ１３０と比較したときのオンプレミスブロックサーバにコミットされたコンテンツアイテムの数に応じて、オンプレミス要素の実装は、オフプレミスコンテンツ管理サービスのコントロールプレーンとメタデータプレーンとを実装するために必要なコンピューティング資源よりも少ないコンピューティング資源（例えばサーバ）を必要とし得る。
【００６１】
いくつかの実施例では、オフプレミスメタデータプレーン１８０のみがユーザアカウントレコード（例えば２１０）を格納する一方で、他のいくつかの実施例では、オンプレミスメタデータプレーンがユーザアカウントレコードを格納しても良い。例えば、オンプレミスメタデータプレーンは、（例えば、オンプレミスのバックエンドデータバスを介して）オンプレミスメタデータプレーンに関連付けられたオンプレミスブロックサーバを用いる、ユーザのためのユーザアカウントレコードを格納して、それらのコンテンツアイテムをホストしてもよい。オフプレミスメタデータプレーン１８０がユーザアカウントレコードを格納する場合にのみ、オンプレミスメタデータサーバは、ユーザアカウントレコード又はそれらの情報に、オフプレミスメタデータサーバ１５０を介してアクセスしてもよい。
【００６２】
いくつかの実施例では、オフプレミスメタデータプレーン１８０のみがリンクされたデバイスレコード（例えば３１０）を格納する一方で、他のいくつかの実施例では、オンプレミスメタデータプレーンがリンクされたデバイスレコードを維持しても良い。例えば、オンプレミスメタデータプレーンは、（例えば、オンプレミスのバックエンドデータバスを介して）オンプレミスメタデータプレーンに関連付けられたオンプレミスブロックサーバを用いる、デバイスのためのリンクされたデバイスレコードを維持して、それらのコンテンツアイテムブロックを格納し、検索してもよい。オフプレミスメタデータプレーン１８０がリンクされたデバイスレコードを格納する場合にのみ、オンプレミスメタデータサーバは、ユーザアカウントレコード又はそれらの情報に、オフプレミスメタデータサーバ１５０を介してアクセスしてもよい。
【００６３】
７．０    選択的なコンテンツアイテム同期
歴史的に、既存のオンラインコンテンツ管理サービスは、ユーザの複数のデバイスの間の同期における個人用のコンテンツアイテムの維持には十分であった。例えば、既存のシステムでは、ユーザＡはシステムにリンクされたラップトップデバイス上で文章を生成又は変更することができ、その更新は、デバイスとシステムの間の同期動作の一部として、リンクされた他のデバイスの全てにおいてその更新が適用された後に、全てのリンクされたデバイスにおける文書のコピーの全てが同一となるように、ユーザＡの他のリンクされたデバイスへシステムを介して自動的に複製された。
【００６４】
企業のコンテクストでは、従業員によって生成されたコンテンツアイテムは、一般に企業に属し、従業員自身には属さない。更に、企業は歴史的に、多数の個人用コンピューティングデバイスの間で分散化されるものとは対照的にサーバのような集中化されるものとして彼らのコンテンツアイテムを見てきた。この集中化された見方は企業が個人用コンテンツアイテムを企業に属すコンテンツアイテムから分離することをより容易にした。例えば、企業のＩＴマネージャ又は管理者は、ファイルサーバに格納されたコンテンツアイテムが企業に属すということを間違いなく想定することができた。更に、コンテンツアイテムの集中した性質のおかげで、企業にとってコンテンツアイテムへのアクセスを管理することは容易であった。例えば、ＩＴマネージャ又は管理者は、企業のファイルサーバに格納されたコンテンツアイテムに対するアクセス制御の許可を設定することができる。また、多くの場合、企業に属すコンテンツアイテムの存続期間が任意の所与の従業員の雇用期間を超える。集中化したファイルサーバ上に企業に属すコンテンツアイテムを格納することによって、企業は、ファイルサーバ上のコンテンツアイテムへの適切なアクセス制御の許可を単に設定することで、新規従業員にコンテンツアイテムへのアクセスを供給することができる。同様に、企業は、アクセスを取り消すためのアクセス制御の許可を単に変更することにより、離職する従業員からファイルサーバ上のコンテンツアイテムへのアクセスを取り消すことができる。企業の観点では、ファイルサーバは、従業員が入社及び退社する時間にわたって存在する企業のコンテンツアイテムに対する集中化リポジトリとして見られていた。
【００６５】
いくつかの既存のオンラインコンテンツ管理サービスにより、コンテンツアイテムストレージモデルは、伝統的なファイルサーバのモデルよりも、より集中化が減少する。特に、このようなシステムでは、システムの各ユーザは、システムと同期されたコンテンツアイテムが格納される、彼らの個人用コンピューティングデバイス上の自身の個別の同期リポジトリ（例えば、デバイス１１０−１のローカルストレージ１１２−１）を有する。更に、各ユーザは一般的に、個々の同期リポジトリを互いに独立に維持する。例えば、既存のシステムでは、ユーザであるアリス（Ａｌｉｃｅ）の同期リポジトリ（例えばデバイス１１０−１）は、ユーザであるボブ（Ｂｏｂ）の同期リポジトリ（例えばデバイス１１０−２）への固有の可視性を何ら提供しないかもしれない。特に、ユーザであるアリスは、ユーザであるボブの同期リポジトリにどんなコンテンツアイテムが格納されているかを知らないであろうし、逆も同様である。いくつかの既存のサービスは、同期リポジトリの間で選択されたコンテンツアイテムを共有する機構を提供する。例えば、いくつかの既存のサービスでは、ユーザであるアリスは、ユーザであるボブが彼の同期リポジトリ内の共有フォルダにした更新を、アリスが彼女の同期リポジトリから見られるように、彼女の同期リポジトリ内のフォルダをボブと共有することができる。またその逆も同様である。しかしながら、既存のシステムでは、共有フォルダの所有権（ownership）が個人と結びついている。これは、アリスが会社を退職し、彼女の同期レポジトリをデコミットする（decommission）か、彼女の同期リポジトリから共有ファイルを単に削除する場合に、問題を含む。この場合、彼女がボブと共有したフォルダは、もはやボブにとってアクセス可能でないだろう。最悪の場合、共有フォルダに蓄積された全ての仕事が失われる。
【００６６】
既存のシステムにおける共有フォルダの他の問題は、共有フォルダに関連する階層的な情報は、共有フォルダが他の者の同期リポジトリに取り込まれる場合に失われるかもしれないことである。例えば、アリスは彼女の同期リポジトリ内に、パス/A/B/Cを有するフォルダを有すると想定する。既存のシステムでは、ユーザであるアリスがフォルダ/A/B/Cをユーザであるボブと共有する場合、このフォルダは、ボブの同期リポジトリにおいて、親フォルダ「Ａ」及び「Ｂ」についての階層的な情報が失われ、/Cとして現れる。これは、特に、親フォルダの名前が、共有フォルダ内に何が格納されるかについての情報を伝達する場合に問題がある。全体として、既存のクラウドベースのコンテンツ管理サービスでは、同期リポジトリの個別化された及び分散化された性質によって、企業に属すコンテンツアイテムを管理し格納するために用いる場合には、企業にとっての共同作業のコストを増加させる。
【００６７】
本願のいくつかの実施例によれば、「選択的に同期された」コンテンツアイテムネームスペースに属すコンテンツアイテムのサブセットのみが、ある時点においてユーザデバイス（例えば１１０−１）に格納される。ユーザは、デバイス１０２のオペレーティングシステムによって提供されるファイルシステムブラウザ（例えば、ＭＡＣ  ＯＳデバイス上のファインダ又はＷＩＮＤＯＷデバイス上のウインドウズエクスプローラ）を用いて、ユーザデバイスでコンテンツアイテムネームスペースのファイル・フォルダ階層をブラウズすることができる。
【００６８】
いくつかの実施例によれば、選択的に同期されるコンテンツアイテムネームスペースに対応するアクション可能なアイコンがデバイスにおけるグラフィカルユーザインタフェース（ＧＵＩ）に現れる。例えば、このアイコンは、デバイス上のオペレーティングシステムによって提供されるＧＵＩのデスクトップ上に現れてもよい。ユーザは、選択的に同期されるコンテンツアイテムネームスペースのファイル・フォルダ階層のファイルエクスプローラ風のビューを開くために、アイコンと相互作用（例えばアイコンをダブルクリック）してもよい。更に、選択的に同期されるコンテンツアイテムネームスペースのアイコン又は他の表示はまた、デバイスのオペレーティングシステムによって提供されるインタフェース内の他の共有リソースと共に表示されてもよい。例えば、アクション可能なアイコン又はテキストは、マウントされたドライブ、共有ドライブ、ネットワークドライブ、又は他の接続されたリソースと共にＧＵＩ内に提示されてもよい。このようにして、ユーザの既知の良く知っているロケーションから選択的に同期されるコンテンツアイテムネームスペースにアクセスして、マウントされたドライブ、外部ディスク及びネットワークドライブのような他の接続されたリソースにアクセスすることができる。
【００６９】
図４Ａは、ユーザデバイス（例えば１１０−１）において提示されるＧＵＩ４００Ａの例を示している。ＧＵＩ４００Ａは、デスクトップ４０２Ａ、ファイルシステムブラウザ４０４Ａ、及び選択的に同期されるコンテンツアイテムネームスペースのランチャーアイコン４０６Ａを含む。デスクトップ４０２Ａはデバイスのオペレーティングシステムによって提示されてよい。ファイルシステムブラウザ４０４Ａとランチャーアイコン４０６Ａは、デバイスのオペレーティングシステムとコンテンツアイテム同期エージェント（例えば１１４−１）との組み合わせによって提示されてよい。
【００７０】
いくつかの実施例によれば、図４Ａに示すように、選択的に同期されるコンテンツアイテムネームスペースは、マウントされたドライブ、ディスク、又はデバイスのオペレーティングシステムによって提供されるファイルシステムブラウザのデバイス又は共有リソースのように表される。例えば、「Ａｃｍｅ」と名付けられた、選択的に同期されるコンテンツアイテムネームスペースが、共有リソース４０８Ａとしてファイルシステムブラウザ４０４Ａ内に表され、これはハイライトして示されるように、現在選択されている。このように選択的に同期されるコンテンツアイテムネームスペースを表すことにより、コンテンツアイテムネームスペースをデスクトップ４０２Ａ環境に統合することは、ユーザがファイルシステムブラウザにこれまで親しんできたことに基づき、よりシームレスである。
【００７１】
上述のように、いくつかの実施例によれば、選択的に同期されるコンテンツアイテムネームスペースに属す全コンテンツアイテムより少ないコンテンツアイテムがユーザデバイスに格納されてよい。しかしながら、コンテンツアイテムネームスペースのファイルフォルダ階層全体のファイルフォルダ表示は、それでも提供されてよい。例えば、ファイルシステムブラウザ４０４Ａは、複数のフォルダアイコンを含む。各フォルダアイコン（例えば４１０Ａ）は、ルート又は他のフォルダに含まれる、「Ａｃｍｅ」コンテンツアイテムネームスペースのファイルフォルダ階層に含まれるフォルダを表す。各フォルダアイコン（例えば４１０Ａ）は、対応するフォルダに含まれるコンテンツアイテムに関する現在の同期構成を示す、同期構成ステータスアイコンを含む。
【００７２】
いくつかの実施例によれば、２つの異なる同期構成に対応する、少なくとも２つの異なる同期構成ステータスアイコンが存在する。１つの構成ステータスアイコンは、コンテンツアイテムフォルダ内のコンテンツアイテムが現在ネットワークアクセス用に構成されていることを表す。すなわち、ユーザが（例えば、デバイスのアプリケーション内のコンテンツアイテムに対応するファイルを開く試みを行うことによって）デバイスでネットワークアクセス用に構成されたコンテンツアイテムにアクセスすることを要求する場合、（例えば、ローカルストレージ１１２−１内に）ローカルに格納されていないコンテンツアイテムの任意のコンテンツアイテムブロックは、オンプレミスブロックサーバ（例えば１２０）またはオフプレミスブロックサーバ１３０から、コンテンツアイテム同期化エージェントによってダウンロードされる。ダウンロードされたコンテンツアイテムブロックは、将来的に再び必要になるとの見込みのもと、デバイスにローカルにある期間格納されてよい。例えば、ダウンロードされたコンテンツアイテムブロックは、ユーザデバイスのローカルストレージ内のコンテンツアイテム同期エージェントによって維持されるコンテンツアイテムブロックプールに格納されてよい。コンテンツアイテム同期エージェントは、（例えば、ローカルストレージ又はブロックプール内のより多くの利用可能ストレージスペースを作るために）必要なときにブロックプールからコンテンツアイテムブロックを削除（除去）してよい。
【００７３】
図４Ａに示す例では、この構成を示す同期構成ステータスアイコンがクラウドの外観を表わしている。例えば、クラウドアイコンは「Ａｃｃｏｕｎｔｉｎｇ」フォルダ４１０Ａと併せて現れて、そのフォルダ（及び任意のそのサブフォルダ）に含まれるコンテンツアイテムがネットワークアクセス用に構成されることを示す。他の構成ステータスアイコンは、フォルダ内に含まれるコンテンツアイテムがオフラインアクセス用に現在利用可能であることを表す。すなわち、フォルダ内のコンテンツアイテムは、デバイスのファイルシステム内のファイルとして、デバイスのローカルに格納されている。図４Ａに示す例では、この構成を表わすアイコンはチェックマークの外観を表わしている。例えば、チェックマークは、「Ｓａｍ  Ｊａｕ」コンテンツアイテムフォルダ４１２Ａと併せて現れて、このフォルダのコンテンツアイテムがファイルとしてユーザデバイスのローカルに格納されており、従って、ユーザデバイスが通信ネットワーク（例えば１６０）に接続していない場合であってもアクセス可能であることを示している。
【００７４】
同期構成ステータスアイコンを見ることによって、ユーザは、対応するフォルダのコンテンツアイテムが、ユーザのデバイスにおいてネットワークアクセス用又はオフラインアクセス用に利用可能であるかどうか素早く識別することができる。同一の又は類似のアイコンはまた、フォルダではなく、ファイルの現在の同期構成ステータスを表すように用いられてよい。
【００７５】
いくつかの実施例によれば、ユーザはユーザデバイスにおいてＧＵＩとやり取りを行って、選択されるフォルダ、又は選択的に同期されるコンテンツアイテムネームスペースのファイルフォルダ階層内のファイル、の現在の同期構成ステータスを変更してもよい。いくつかの実施例によれば、フォルダに対する同期構成ステータスが、ネットワークアクセスからオフラインアクセスに変更された場合、デバイスのコンテンツアイテム同期エージェントは、この変更を検知したことに応じて、フォルダに属すコンテンツアイテムの任意の欠けているコンテンツアイテムブロックを１つ以上のブロックサーバからダウンロードする。従って、フォルダの同期構成ステータスがオフラインアクセスを維持する限り、ユーザデバイスにおけるコンテンツアイテム同期エージェントは、上述のコンテンツアイテム同期プロトコルに従って、フォルダ内に含まれるコンテンツアイテムがコンテンツアイテムの現在のバージョンと同期し続けるようにする。
【００７６】
例えば、図４Ｂでは、ユーザは「Ａｃｃｏｕｎｔｉｎｇ」フォルダアイコン４１０Ｂ上で右クリックを行った。これに応じて、ポップアップメニュー４１８ＢがＧＵＩ４００Ｂに表示される。メニュー４１８Ｂはオプション４１６Ｂを提供して、「Ａｃｃｏｕｎｔｉｎｇ」フォルダに対する現在の同期構成ステータスをネットワークアクセスからオフラインアクセスに変更する。
【００７７】
オプション４１６Ｂを選択したことに応じて、「Ａｃｃｏｕｎｔｉｎｇ」フォルダ（及びその任意のサブフォルダ）内に含まれるコンテンツアイテムの任意の欠けているコンテンツアイテムブロックが、１つ以上のブロックサーバからユーザデバイスにダウンロードされる。欠けているコンテンツアイテムブロックをダウンロードする間に、フォルダアイコン４０１Ｂは、ダウンロードの進捗を表示する、図４ＣのＧＵＩ４００Ｃ内に示すプログレスバーを含んでよい。「Ａｃｃｏｕｎｔｉｎｇ」コンテンツフォルダ内に含まれるコンテンツアイテムの欠けているコンテンツアイテムブロックのユーザデバイスへのダウンロードが完了した後に、同期構成ステータスアイコンが変化して、フォルダ内に含まれるコンテンツアイテムは現在オフラインアクセス用に利用可能であることを示す。例えば、図４Ｄは、フォルダアイコン４１０Ｄが今はチェックマークとともに表示されて、「Ａｃｃｏｕｎｔｉｎｇ」コンテンツフォルダ内に含まれるコンテンツアイテムは現在オフラインアクセス用に利用可能であることを示す。
【００７８】
いくつかの実施例によれば、選択的に同期されるコンテンツアイテムネームスペースに属すコンテンツアイテムもまた、ネットワークアクセス用又はオフラインアクセス用に構成されることができる。コンテンツアイテムがネットワークアクセス用に構成され、ユーザが（例えば、コンテンツアイテムに対応するファイルを表すアイコンをダブルクリックすることによって）ユーザデバイスにおいてそのコンテンツアイテムを開いた場合、コンテンツアイテムの欠けているコンテンツアイテムブロックは、コンテンツアイテムがユーザデバイスにおいて開かれてそのコンテンツがユーザに提示される前に、ユーザデバイス上のコンテンツアイテム同期エージェントによって1つ以上のブロックサーバからダウンロードされてよい。その後で、コンテンツアイテムはオフラインアクセス用に構成され、ユーザデバイスのＧＵＩ内にそれを示す構成が示される。換言すれば、ユーザデバイスにおいてローカルにコンテンツアイテムを開くユーザの要求は、同期構成をネットワークアクセスからオフラインアクセスに変更する要求であると解釈されてよい。いくつかの実施例では、同期構成ステータスは、ユーザがコンテンツアイテムを開くことに加えて何等かの他のアクションをとった場合にのみ変更される。例えば、同期構成ステータスは、ユーザがコンテンツアイテムを開いてコンテンツアイテムを編集する両方を行う場合、又は、コンテンツアイテムを時間の閾値（例えば２４時間）内に複数回開く場合に、自動的にネットワークアクセスからオフラインアクセスに変更されてよい。ユーザが単にコンテンツアイテムを開いて、同期構成ステータスがネットワークアクセスからオフラインアクセスに変更されない場合、任意のコンテンツアイテムの欠けているコンテンツアイテムブロックはそれでも、いつかあり得るユーザの次のアクセスを予期してユーザデバイスにダウンロードされ、ユーザデバイス（例えばブロックプール）にキャッシュされてよい。しかしながら、ＧＵＩ内のコンテンツアイテムの同期構成ステータスアイコンは、ネットワークアクセス（例えばクラウドアイコンを用いて）を継続して示してよい。
【００７９】
いくつかの実施例によれば、ユーザデバイス（例えば１１０−１）におけるコンテンツアイテム同期エージェント（例えば１１４−１）は、オフラインアクセス用に構成される選択的に同期されるコンテンツアイテムネームスペースに属すコンテンツアイテムによって（例えばローカルストレージ１１２−１の）ローカルストレージスペースの量が閾値又はパーセンテージ閾値を超えるときを検出する。閾値を超えたことに応じて、コンテンツアイテム同期エージェントは、オフラインアクセス用に現在構成される１つ以上のフォルダ又はファイルの同期構成ステータスをネットワークアクセスに変更するように、ユーザにプロンプトを出してよい。同時に、コンテンツアイテム同期エージェントは、ローカルストレージのスペースを確保するために、以前にオフラインアクセス用に構成されていたコンテンツアイテムに対応するファイルをユーザデバイスから削除してよい。
【００８０】
８．０    分散ブロックのキャッシング最適化
本発明のいくつかの実施例によれば、オンプレミスブロックサーバ１２０のブロックサービス１２２及び／又はブロックエージェント１２６は分散ブロックのキャッシング最適化機能を提供する。この機能は、選択的に同期されるコンテンツアイテムネームスペースと併せて用いられる。選択的に同期されるコンテンツアイテムネームスペースを用いて、「プレイスホルダ（placeholder）」ファイルは、選択的に同期されるコンテンツアイテムネームスペースに属すコンテンツアイテム、ネットワークアクセス用にユーザのデバイスにおいて構成されたフォルダに含まれるコンテンツアイテム、又はネットワークアクセス用にユーザのデバイスにおいて構成されたコンテンツアイテムに対応するファイル、のためにユーザのデバイスに格納されてよい。プレイスホルダファイルは、例えば、ゼロバイトのファイルであってよい。プレイスホルダファイルにより、ユーザは、ユーザのデバイスにおける（例えばファイルシステムブラウザによって提供される）グラフィカルユーザインタフェースにおいて、ユーザのデバイスにおけるファイルシステムのファイル・フォルダ階層内のプレイスホルダファイルのファイル名及びプレイスホルダファイルの場所を見ることができる。しかしながら、プレイスホルダファイルのコンテンツ（例えばコンテンツアイテム）は、当該コンテンツがユーザによって必要とされるまで、ユーザのデバイスにおけるプレイスホルダファイル内に格納されない。プレイスホルダファイルは、ユーザがコンテンツアイテムにアクセスすることを望むまで、ある期間に渡ってコンテンツアイテムを表すようにユーザデバイスに存在してよい。従って、コンテンツアイテムに対するプレイスホルダファイルは、コンテンツアイテムがアクセスされるまでユーザのデバイスにおけるローカルストレージスペースを消費しないようにすると同時に、一方ではユーザが従来的なファイルシステムエクスプローラ、ブラウザ及び検索インタフェースを用いてコンテンツアイテムを発見したり置いたりすることを可能にする便益を提供する。
【００８１】
ユーザが、ユーザのデバイスにおけるプレイスホルダファイルを介してコンテンツアイテムにアクセスしようとする場合、当該アクセスの試みは、ユーザのデバイスにおけるコンテンツアイテム同期エージェント（例えば１１４−１）によって傍受される。例えば、エージェントは、アクセスの試みがなされた場合にデバイスのオペレーティングシステムによって提供されるAPIを介して通知されてよい。アクセスの試みは、例えば、ユーザデバイス上のアプリケーション（例えばワードプロセッシングアプリケーションなど）内でファイルを開こうとするような、プレイスホルダファイルへの多くの異なる種別のユーザ・インタラクションによって開始されてよい。
【００８２】
アクセスの試みが傍受されると、同期エージェントは、プレイスホルダファイルが「満たされている（filled）」かを判定する。満たされていることにより、プレイスホルダファイルによって表されるコンテンツアイテムを作り上げる全てのコンテンツアイテムブロックがプレイスホルダファイル内に格納され組み立てられることを意味する。この場合、プレイスホルダファイルはコンテンツアイテムを含むため、プレイスホルダファイルはもはやコンテンツアイテムに対するプレイスホルダではない。一方、プレイスホルダファイルが「空」（すなわち満たされていない）である場合、コンテンツアイテムを作り上げるいくつか又は全てのコンテンツアイテムブロックは、足りないコンテンツアイテムブロックがまだユーザのデバイス（例えばブロックプール）に格納されていない場合に１つ以上のブロックサーバからユーザのデバイスへダウンロードされる必要がある。ユーザは、アクセスによって可能な限り素早くプレイスホルダファイルが満たされることを理解するであろう。満たす時間を減らす1つの方法は、プレイスホルダファイルがアクセスされたときに、ユーザのデバイスに既に格納されたコンテンツアイテムのコンテンツアイテムブロックの全てを有することである。これは、コンテンツアイテムブロックを格納又はキャッシュするためのユーザのデバイスの利用可能なストレージスペースの量に応じて、可能になるかもしれない。これ以外に、ブロックのダウンロード時間を最小化するように、足りないコンテンツアイテムブロックをネットワーク上のユーザのデバイスのできるだけ近くに格納することによって、満たす時間を低減することができる。例えば、足りないコンテンツアイテムブロックがオンプレミスブロックサーバ、又は、ユーザのデバイスと同じローカルエリアネットワーク（例えば１１０−２）に接続されるピアデバイス（例えば１１０−２）において利用可能である場合、ブロックのダウンロード時間は、足りないブロックをオフプレミスブロックサーバ１３０からインターネット経由でダウンロードする場合よりも短くなるであろう。
【００８３】
いくつかの実施例によれば、アクセスされたプレイスホルダファイルを満たすために必要な時間を低減するために、選択的に同期されるコンテンツアイテムに対するコンテンツアイテムブロックはオンプレミスに格納される。図５は、本発明のいくつかの実施例に従う、分散ブロックのキャッシング最適化のためのシステム構成を示している。図１のシステム１００のように、システム５００は、ストレージプレーンとオフプレミスブロックサーバ１３０とを有するオンラインコンテンツ管理サービスを含む。図５には図示されていないが、システム５００はまた、通知サーバ１４０、メタデータサーバ１５０、及びウェブサイト１７０を有するコントロールプレーンと、バックエンドデータバスと、メタデータプレーンとを含むオンラインコンテンツ管理サービスの他の要素を含む。
【００８４】
この例では、選択的に同期されるコンテンツアイテムネームスペースに属すコンテンツアイテムは、Ｂ１からＢ１２として図５に示す１２個のコンテンツアイテムブロックからなる。全ての１２個のコンテンツアイテムブロックは、オフプレミスブロックサーバ１３０のローカルストレージ１３４に格納される。勿論、実際の実施形態では、選択的に同期されるコンテンツアイテムネームスペースに属すコンテンツアイテムは、コンテンツアイテムネームスペースに属すコンテンツアイテムの数及びコンテンツアイテムのサイズに応じて、１２個よりも多数のコンテンツアイテムブロック（数百、数千、数百万、又はそれ以上）からなってよい。
【００８５】
この例ではまた、コンテンツアイテムブロックＢ１からＢ６は、個人用コンピューティングデバイス１１０−１、１１０−２及び１１０−３におけるローカルファイルの一部として格納される。特に、コンテンツアイテムブロックＢ１及びＢ２は、１つ以上のローカルファイルの部分として個人用コンピューティングデバイス１１０−１に格納され、コンテンツアイテムブロックＢ３及びＢ４は、１つ以上のローカルファイルの部分として個人用コンピューティングデバイス１１０−２に格納され、コンテンツアイテムブロックＢ５及びＢ６は、１つ以上のローカルファイルの部分として個人用コンピューティングデバイス１１０−３に格納される。
【００８６】
個人用コンピューティングデバイス１１０−１、１１０−２及び１１０−３のそれぞれはまた、選択的に同期されるコンテンツアイテムネームスペースに属すコンテンツアイテムを表す１つ以上のプレイスホルダファイル（不図示）を格納してよい。プレイスホルダファイルは、ブロックＢ7からＢ１２を作り上げられるコンテンツアイテムに対応してよい。これらのブロックは、デバイス１１０−１、１１０−２及び１１０−３のそれぞれにおけるブロックプールとオンプレミスブロックサーバ１２０との間に渡って分散される。特に、デバイス１１０−１はブロックＢ７をそのブロックプール内に格納し、デバイス１１０−２はブロックＢ８をそのブロックプール内に格納し、デバイス１１０−３はブロックＢ９をそのブロックプール内に格納し、そして、オンプレミスブロックサーバ１２０はブロックＢ１０からＢ１２を格納する。
【００８７】
コンテンツアイテムブロックが、デバイスにおいてアクセスされたプレイスホルダファイルを満たすために必要とされる場合、デバイスの同期エージェントは、ブロックを、そのローカルブロックプールから、ピアデバイスから、又は、オンプレミスブロックサーバから取得することができる。例えば、デバイス１１０−１においてアクセスされたプレイスホルダファイルがブロックＢ８を要求する場合、エージェント１１４−１はデバイス１１０−２からブロックＢ８を取得することができる。代替的に、プレイスホルダファイルがブロックＢ８からＢ１２の１つ以上を要求する場合、そのときはエージェント１１４−１はオンプレミスブロックサーバ１２０から足りないブロックをダウンロードすることができる。
【００８８】
いくつかの実施例によれば、メタデータは、選択的に同期されるコンテンツアイテムネームスペースに属すコンテンツアイテムを作り上げるブロック識別子によってコンテンツアイテムブロックを識別するオンプレミスブロックサーバ１２０において維持される（以降、「ネームスペースブロックリスト」として参照される）。例えば、オンプレミスブロックサーバ１２０は、ブロックＢ１からＢ１２を識別するメタデータを維持してよい。維持されるメタデータは、新たなコンテンツアイテムがコンテンツアイテムネームスペースに追加される、及び既存のコンテンツアイテムがコンテンツアイテムネームスペースから削除されるにつれて時々更新されてよい。
【００８９】
定常的又は周期的に、又はイベント（例えばコンテンツアイテムネームスペースに新規コンテンツアイテムが追加され又は削除される）を検出したことに応じて、オンプレミスブロックサーバ１２０におけるブロックエージェント１２６は、ネームスペースブロックリストにおいて識別されるコンテンツアイテムブロックの全てがオンプレミスブロックサーバ１２０において利用可能であるかを確認する。例えば、ブロックエージェント１２６は、ブロックＢ１からＢ２がブロックサーバ１２０のローカルストレージ１２４に格納されているかを確認してよい。
【００９０】
オンプレミスブロックサーバ１２０においてネームスペースブロックリストにおけるブロックの全てよりも少ないブロックが格納されている場合、ブロックエージェント１２６は、足りないコンテンツアイテムブロックを、オフプレミスブロックサーバ１３０からオンプレミスブロックサーバ１２０にダウンロードすることを試みて良い。例えば、ネームスペースブロックリストがブロックＢ１からＢ１２を識別し、オンプレミスブロックサーバ１２０が現在ブロックＢ１０からＢ１２を格納する場合、そのときはブロックエージェント１２６は、足りないブロックＢ１からＢ９をオンプレミスブロックサーバ１３０からダウンロードすることを試みてよい。
【００９１】
オンプレミスブロックサーバ１２０において、足りないブロックＢ１からＢ９を格納するストレージスペースが十分にない場合もあり得る。この場合、ブロックエージェント１２０は、１つ以上の足りないコンテンツアイテムブロックをオフプレミスブロックサーバ１３０からダウンロードして、ダウンロードしたブロックをそれらの各ブロックプールに格納するために、１つ以上の個人用コンピューティングデバイスにおけるコンテンツアイテム同期エージェントへネットワークメッセージを送信してもよい。図５の例では、ブロックエージェント１２６は、エージェント１１４−１にブロックＢ７をダウンロードして格納するように指示し、エージェント１１４−２にブロックＢ８をダウンロードして格納するように指示し、エージェント１１４−３にブロックＢ９をダウンロードして格納するように指示したところである。この結果は、Ｂ１からＢ１２の全てのブロックがデバイス１１０−１、１１０−２、１１０−３においてアクセスされたプレイスホルダファイルを素早く満たすためにローカルエリアネットワーク１６０上で利用可能になることである。
【００９２】
デバイス１１０−１、１１０−２及び１１０−３とオンプレミスブロックサーバ１２０との間でのブロックそのもの及びブロックの分散は時々変化してよい。例えば、オンプレミスブロックサーバ１２０におけるコンテンツアイテムネームスペースに対してネームスペースブロックリスト内で識別されるコンテンツアイテムのセットは、新規コンテンツアイテム（及びその結果としての新規コンテンツアイテムブロック）がコンテンツアイテムネームスペースに追加されるにつれて、及び、既存のコンテンツアイテム（及びその結果としての既存のコンテンツアイテムブロック）がコンテンツアイテムネームスペースから削除されるにつれて時々変化してよい。
【００９３】
９．０    基本的なコンピューティングハードウェア及びソフトウェア
９．１    基本的なコンピューティングデバイス
ここで図６を参照すると、図６は、本発明の実施例が実施され得る基本的なコンピューティングデバイス６００を示すブロック図である。コンピューティングデバイス６００と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のコンピューティングデバイスは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
【００９４】
コンピューティングデバイス６００は、バス６０２、又はメインメモリ６０６のアドレスを解決し、かつ、コンピューティングデバイス６００の種々のコンポーネント間で及び種々のコンポーネントの中でデータを転送するための他の通信機構を含み得る。
【００９５】
コンピューティングデバイス６００はまた、情報を処理するための、バス６０２と結合した１つ以上のハードウェアプロセッサ６０４を含み得る。ハードウェアプロセッサ６０４は、汎用マイクロプロセッサ、システム・オン・チップ（ＳｏＣ）、又は他のプロセッサであり得る。
【００９６】
ランダムアクセスメモリ（ＲＡＭ）又は他の動的ストレージデバイスなどのメインメモリ６０６はまた、情報やプロセッサ６０４によって実行されるソフトウェア命令を格納するためにバス６０２に結合され得る。メインメモリ６０６はまた、プロセッサ６０４によって実行されるソフトウェア命令の実行中に一時変数又は他の中間情報を格納するために使用され得る。
【００９７】
ソフトウェア命令は、プロセッサ６０４へアクセス可能な記憶媒体に格納される場合、ソフトウェア命令で特定される動作を実行するように、コンピュータデバイス６００を、カスタマイズされた特定用途のコンピューティングデバイスにする。「ソフトウェア」、「ソフトウェア命令」、「コンピュータプログラム」、「コンピュータ実行可能命令」及び「プロセッサ実行可能命令」の語は、人間が読取り可能であるかどうかを問わず、特定の動作を実行するためにコンピューティングデバイスを指示する任意の機械可読情報を含むものと広く解釈されるべきであり、これらに限定されないが、アプリケーションソフトウェア、デスクトップアプリケーション、スクリプト、バイナリ、オペレーティングシステム、デバイスドライバ、ブートローダ、シェル、ユーティリティ、システムソフトウェア、ジャバスクリプト、ウェブページ、ウェブアプリケーション、プラグイン、組み込みソフトウェア、マイクロコード、コンパイラ、デバッガ、インタプリタ、バーチャルマシン、リンカ、テキストエディタを含む。
【００９８】
コンピューティングデバイス６００はまた、静的情報及びプロセッサ６０４のためのソフトウェア命令を格納するための、バス６０２に結合された読み取り専用メモリ（ＲＯＭ）６０８又は他の静的ストレージデバイスを含み得る。
【００９９】
１つ以上の大容量ストレージデバイス６１０は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は他の利用可能な大容量ストレージ技術などの固定又は取り外し可能な媒体に、情報及びソフトウェア命令を永続的に格納するために、バス６０２に接続され得る。大容量ストレージは、ネットワーク上で共有され得、又は、専用の大容量ストレージであり得る。通常、大容量ストレージデバイス６１０（例えば、デバイスに対するメインハードディスク）の少なくとも１つは、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピューティングデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
【０１００】
コンピューティングデバイス６００は、バス６０２を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ（ＬＣＤ）又は他の電子的な視覚ディスプレイなどのディスプレイ６１２と接続され得る。いくつかの構成では、（例えば、抵抗性、容量性等の）タッチ検知技術を組み込んだタッチ感知表面は、タッチジェスチャ（例えば指又はスタイラス）入力をプロセッサ６０４へ通信するために、タッチ検知ディスプレイを形成するようにディスプレイ６１２に重畳され得る。
【０１０１】
アルファベットキー及び他のキーを含む入力デバイス６１４は、情報及びコマンドの選択をプロセッサ６０４へ通信するためにバス６０２へ接続され得る。アルファベットキー及び他のキーに加えて又は代わりに、インプットデバイス６１４は、例えばパワー（オン／オフ）ボタン、「ホーム」ボタン、ボリュームコントロールボタン等の、１つ以上の物理的なボタン又はスイッチを含み得る。
【０１０２】
ユーザ入力デバイスの他の種別は、プロセッサ６０４へ方向情報やコマンドの選択を通信するため、及び、ディスプレイ６１２上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御６１６であり得る。当該入力デバイスは、通常、デバイスが平面上の位置を特定できるようにする第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の二軸の２つの自由度を有する。
【０１０３】
図６に図示された構成のような、１つ以上のディスプレイ６１２、入力デバイス６１４、及びカーソルコントロール６１６が、コンピューティングデバイス６００の外部コンポーネント（すなわち周辺デバイス）であるいくつかの構成に対し、他の構成において、ディスプレイ６１２のいくつか又は全て、入力デバイス６１４及びカーソルコントロール６１６は、コンピューティングデバイス６００の形成因子の一部として統合される。
【０１０４】
ここで開示されるシステム、方法、及びモジュールの機能は、メインメモリ６０６に含まれる１以上のソフトウェア命令の１以上のプログラムをプロセッサ６０４が実行することに応じて、コンピューティングデバイス６００によって実行され得る。そのようなソフトウェア命令は、ストレージデバイス６１０などの他の記憶媒体からメインメモリ６０６へと読み込まれ得る。メインメモリ６０６に含まれるソフトウェア命令の実行は、プロセッサ６０４に実施例の機能を発揮させる。
【０１０５】
実施例の機能及び動作がコンピューティングデバイス６００のソフトウェア命令を用いて全体的に実施される一方、ハードワイヤード又はプログラマブル回路（例えばＡＳＩＣ、ＦＰＧＡ等）が、目下の特定の実装の要件に従って、他の実施形態において適所で又は機能を発揮するためのソフトウェア命令との組み合わせで用いられ得る。
【０１０６】
ここで使用される“記憶媒体”の語は、コンピューティングデバイスを特定の様式で動作させるデータ及びソフトウェア命令の少なくとも１つを格納する非一時的な媒体として参照される。そのような記憶媒体は、不揮発性の媒体及び／又は揮発性の媒体を備えてもよい。不揮発性媒体は、ストレージデバイス６１０などの、例えば、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、フラッシュメモリ、光学ディスク、磁性ディスク、又は半導体ドライブを含む。揮発性媒体はメインメモリ６０６などの動的メモリを含む。記憶媒体の共通の形式は、例えば、フロッピーディスク、フレキシブル・ディスク、ハードディスク、半導体ドライブ、磁性テープ若しくは任意の他の磁性データ記憶媒体、ＣＤ−ＲＯＭ、任意の他の光学データ記憶媒体、ホールのパターン（空孔）を複数有する任意の物理的な媒体、ＲＡＭ、ＰＲＯＭ及びＥＰＲＯＭ、フラッシュＥＰＲＯＭ、ＮＶＲＡＭ、フラッシュメモリ、任意の他のメモリチップ、又はカートリッジを含む。
【０１０７】
記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用され得る。送信媒体は、記憶媒体間で情報を転送することに使用される。例えば、送信媒体は、バス６０２を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
【０１０８】
媒体の種々の形態は、実行のためにプロセッサ６０４への１以上のソフトウェア命令の１以上のシーケンスの伝達に用いられ得る。例えば、ソフトウェア命令は、リモートコンピュータの磁性ディスク又は半導体ドライブ上でまず伝達され得る。リモートコンピュータは、その動的メモリへソフトウェア命令をロードし、モデムを用いて電話線を介してソフトウェア命令を送信し得る。コンピューティングデバイス６００のローカルなモデムは、電話回線でデータを受信し、データを赤外線信号に変換するための赤外線送信機を用い得る。赤外線検出機は赤外線信号で運搬されたデータを受信することができ、適切な回路がそのデータをバス６０２に乗せる。バス６０２は、プロセッサ６０４がソフトウェア命令を読み出して実行するメインメモリ６０６にデータを運搬する。メインメモリ６０６によって受信されるソフトウェア命令は、プロセッサ６０４によって実行される前又は実行された後の何れかにストレージデバイス６１０に選択的に格納され得る。
【０１０９】
コンピューティングデバイス６００はまた、バス６０２へ接続される通信インタフェース６１８を含み得る。通信インタフェース６１８は、ローカルネットワーク６２２（例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Ｂｌｕｅｔｏｏｔｈ無線ネットワーク等）へ接続された、有線又は無線のネットワークリンク６２０へ接続する双方向データ通信を提供する。通信インタフェース６１８は、種々の種別の情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース６１８は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム（例えば、ＩＳＤＮ、ＤＳＬ、又はケーブルモデム）であり得る。
【０１１０】
ネットワークリンク６２０は、通常、１以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク６２０は、ローカルネットワーク６２２を通じて、ホストコンピュータ６２４への又はインターネットサービスプロバイダ（ＩＳＰ）６２６によって運用されるデータ装置への接続を提供し得る。ＩＳＰ６２６は順に、「インターネット」６２８として通常参照されるワールド・ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク６２２及びＩｎｔｅｒｎｅｔ６２８は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピューティングデバイス６００への及びコンピューティングデバイス６００からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク６２０上の、及び通信インタフェース６１８を通じた信号は、送信媒体の例示の形式である。
【０１１１】
コンピュータシステム６００は、ネットワーク、ネットワークリンク６２０、及び通信インターフェース６１８を通じて、プログラムコードを含む、メッセージを送信し、データを受信し得る。例えば、サーバ６３０は、インターネット６２８、ＩＳＰ６２６、ローカルネットワーク６２２、及び通信インターフェース６１８を通じて、アプリケーションプログラムに対して要求されるコードを送信してもよい。
【０１１２】
受信コードは、受信した際にプロセッサ６０４によって実行されてもよく、及び、後の実行のためにストレージデバイス６１０又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われ得る。
【０１１３】
９．２    基本的なソフトウェアシステム
図７は、コンピューティングデバイスの動作を制御する、採用され得る基本的なソフトウェアシステム７００のブロック図である。ソフトウェアシステム７００と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のソフトウェアシステムは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
【０１１４】
ソフトウェアシステム７００は、コンピューティングデバイス６００の動作を方向付けるために提供される。システムメモリ（ＲＡＭ）６０６及び固定ストレージ（例えば、ハードディスク）６１０に格納され得るソフトウェアシステム７００はカーネル又はオペレーティングシステム（ＯＳ）７１０を含む。
【０１１５】
ＯＳ７１０は、プロセス、メモリ配置、ファイル入力及び出力（Ｉ／Ｏ）、及びデバイスＩ／Ｏの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。７０２Ａ、７０２Ｂ、７０２C・・・７０２Ｎとして表される１以上のアプリケーションプログラムは、システム７００による実行のために”ロードされ”うる（例えば、固定ストレージ６１０からメモリ６０６へ転送される）。アプリケーション又はデバイス７００上での使用を意図した他のソフトウェアはまた、ダウンロード可能なコンピュータで実行可能な命令のセットとして、例えば、インターネット上の場所（例えば、ウェブサーバ、アップストア又はオンラインサービス）からダウンロード及びインストールするために格納され得る。
【０１１６】
ソフトウェアシステム７００は、グラフィカルな（例えば、「ポイント・アンド・クリック」又は「タッチジェスチャ」）形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース（ＧＵＩ）７１５を含む。これらの入力は順に、オペレーティングシステム７１０及びアプリケーションプログラム７０２の少なくとも１つからの命令に従ってシステム７００によって作動され得る。ＧＵＩ７１５はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする（例えば、ログオフする）とすぐに、ＯＳ７１０及びアプリケーション７０２からの動作結果を表示するように務める。
【０１１７】
ＯＳ７１０は、デバイス６００のベアハードウェア７２０（例えば、プロセッサ６０４）上で直接的に実行し得る。代替的に、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）７３０は、ベアハードウェア７２０及びＯＳ７１０の間に割り込んで設けられ得る。この構成において、ＶＭＭ７３０はデバイス６００のＯＳ７１０及びベアハードウェア７２０の間のソフトウェア”クッション”又は仮想レイヤとして作動する。
【０１１８】
ＶＭＭ７３０は、１つ以上の仮想マシンインスタンス（「ゲストマシン」）をインスタンス化し実行する。各ゲストマシンは、ＯＳ７１０などの「ゲスト」オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーション７０２などの１つ以上のアプリケーションとを含む。ＶＭＭ２３０は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提供し、ゲストオペレーティングシステムの実行を管理する。
【０１１９】
いくつかの例において、ＶＭＭ７３０は、デバイス６００のベアハードウェア上で直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容し得る。これらの例において、ベアハードウェア上で直接的に実行するように構成されたゲストオペレーティングシステムの同一のバージョンはまた、修正又は再構成なしにＶＭＭ７３０上で実行され得る。すなわち、ＶＭＭ７３０は、いくつかの例において、ゲストオペレーティングシステムに対する完全なハードウェアとＣＰＵ仮想化とを提供し得る。
【０１２０】
他の例において、ゲストオペレーティングシステムは、効率的にＶＭＭ７３０上で実行されるように特別に設計されるか、又は、構成されてもよい。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ上で実行する「気付かれるもの」である。すなわち、ＶＭＭ７３０は、いくつかの例において、ゲストオペレーティングシステムに対して準仮想化を提供することができる。
【０１２１】
上述の基本的なコンピュータハードウェア及びソフトウェアは、実施例を実施するために採用されうる基本的な下層のコンピュータコンポーネントを示す目的で提示される。しかしながら、実施例は、任意の特定のコンピューティング環境又はコンピューティングデバイス構成に限定される必要はない。代わりに、実施例は、この開示の観点で当業者がここで提示された実施例の特徴又は機能を支持することが可能なものとして理解しうる任意の種別のシステムアーキテクチャ又はプロセッシング環境で実施され得る。
【０１２２】
１０．０  拡張及び代替例
前述した明細書において、本発明の実施例について多数の特定の詳細を参照して説明した。しかしながら、詳細は手近な特定の実装に対する要求に従って実装ごとに変化し得る。実施例は、従って、限定的な意味というよりはむしろ例示とみなされるものである。
【図１】
0006518002.tif 000002
【図２】
0006518002.tif 000003
【図３】
0006518002.tif 000004
【図４Ａ】
0006518002.tif 000005
【図４Ｂ】
0006518002.tif 000006
【図４Ｃ】
0006518002.tif 000007
【図４Ｄ】
0006518002.tif 000008
【図５】
0006518002.tif 000009
【図６】
0006518002.tif 000010
【図７】
0006518002.tif 000011