図面 (/)

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

出願人 ドロップボックス,インコーポレイテッド
発明者 コオラパティ,ニプンルード,クリストファーフォンミューレン,マルシオブンガー,ニルス
出願日 2016年10月11日 (2年6ヶ月経過) 出願番号 2018-504696
公開日 2018年12月20日 (4ヶ月経過) 公開番号 2018-537740
状態 特許登録済
技術分野 計算機におけるファイル管理 計算機間の情報転送
主要キーワード リンクデバイス 磁性テープ カーソル値 ドロップボックス 通常参照 ローカルブロック 赤外データ 仮想レイヤ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2018年12月20日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (18)

課題・解決手段

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

概要

背景

伝統的に、企業は自身が所有運用するネットワークファイルサーバデジタルコンテンツアイテム(例えば、ドキュメントファイル、および他のデジタル情報)を格納してきた。そのようなファイルサーバは、多くの場合、ネットワークファイヤウォール後ろオンプレミスに位置している。ネットワークファイヤウォールはファイルサーバへの認証されていないネットワークアクセスを防ぐ。この構成は、ファイルサーバへのネットワークアクセスの大半または全てがネットワークファイヤウォールの後ろにあるコンピュータ、例えばファイルサーバと同じローカルエリアネットワーク(LAN)に接続されたコンピュータ、によるものである場合に、上手く働く。ある場合には、ファイヤウォールの外側からの(例えば、インターネットを介した)ファイルサーバへのネットワークアクセスは仮想プライベートネットワーク(VPN)によって促進される。VPNは実効的に、ファイヤウォールの外側のコンピュータを、ファイルサーバから見て、あたかもファイヤウォールの後ろにいるかのように見せる。

しかしながら、今日、労働力はよりグローバルでよりモバイルとなっている。このことは、ブロードバンドインタネット接続の広い可用性と、比較的低料金で、そのうえ強力な、例えば、携帯電話ラップトップコンピュータ及びタブレットコンピュータなどのポータブル個人用計算デバイスの可用性とによって広く拍車がかかっている。その結果、従業員仮想的にどこでも仕事をすることができ、仕事を終わらせるためにオフィス物理的に存在する必要がない(例えば遠隔で仕事をすることができる)。

最近、オンラインコンテンツ管理サービスは、従業員がインターネット又は他のネットワーク上でアクセス可能な「オンラインに」コンテンツアイテムを格納することが可能になった。企業はオンラインコンテンツ管理サービスを用いて、そのサービスによって動作するサーバ上に企業のコンテンツアイテムを「ホスト」することができる。オンラインコンテンツ管理サービスの例には、カリフォルニアサンフランシスコのDropbox,Inc.により提供されている「ドロップボックス」サービスがある。

コンテンツアイテムのオンラインストレージは、企業やその従業員等に多くの利益をもたらす。ドロップボックス(Dropbox)は、例えば、ホストしたコンテンツアイテムを、複数のデバイスとユーザに同期及び共有する機能を提供する。このエンドユーザとドロップボックスの両方にコンテンツアイテムを格納することに起因する柔軟性は、種々の異なるオンサイト及び遠隔の就労形態をサポートし、従業員には利便性を、そして雇用者には増大した従業員の生産性を提供する。

企業によって生成されるデジタル情報の量が増加すれば、オンラインコンテンツ管理サービスを用いた企業のコンテンツアイテムのホスティングは増加することのみが期待される。しかしながら、いくつかのホストした情報のデリケートな性質により、企業ユーザを含むそのようなサービスのユーザは、サービスを用いてホストするコンテンツアイテムに対してより高いレベルコントロールを提供するサービスへの改善を理解するだろう。加えて、今日の企業においてブロードバントインターネット接続が普及する一方で、インターネットを介したコンテンツアイテムのアップロード及びダウンロードは、未だにユーザが期待する又は望むよりもより長い時間を要し得る。

このセクションで説明したアプローチは、さらに追及されうるアプローチであって、既に着想され、追及されたアプローチではない。したがって、特に示唆しない限り、ここで説明した任意のアプローチが、ここに組み込まれることにより単に先行技術として認識されることが想定されるべきではない。

概要

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

目的

ドロップボックス(Dropbox)は、例えば、ホストしたコンテンツアイテムを、複数のデバイスとユーザに同期及び共有する機能を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

コンテンツアイテムの生成または変更を検出することと、前記コンテンツアイテムが属するコンテンツアイテム名前空間を決定することと、前記コンテンツアイテム名前空間が割り当てられている先のターゲットコンテンツアイテムブロックサーバを選択することと、前記ターゲットコンテンツアイテムブロックサーバに保持されていない、前記コンテンツアイテムのひとつ以上のコンテンツアイテムブロックを特定することと、前記ターゲットコンテンツアイテムブロックサーバに保持されていなかった、前記コンテンツアイテムのひとつ以上のコンテンツアイテムブロックを、前記ターゲットコンテンツアイテムブロックサーバにアップロードすることと、を含む方法。

請求項2

前記コンテンツアイテムの生成または変更を検出することは、前記ターゲットコンテンツアイテムブロックサーバから離れたところにあるファイルシステムであって前記コンテンツアイテム名前空間がマウントされている先のファイルシステムにおいて、前記コンテンツアイテムに対応するファイルが生成または変更されたときを検出することに少なくとも部分的に基づく請求項1に記載の方法。

請求項3

前記コンテンツアイテムが属する先の前記コンテンツアイテム名前空間を決定することは、a)前記コンテンツアイテムに対応するファイルへのファイルシステムパスと、b)前記ひとつ以上のコンテンツアイテムブロックを保持する計算システムローカル的に存在するファイルシステムにおける、前記コンテンツアイテム名前空間のマウントポイントへのファイルシステムパスと、に少なくとも部分的に基づく請求項1に記載の方法。

請求項4

前記コンテンツアイテム名前空間が割り当てられている先の前記ターゲットコンテンツアイテムブロックサーバを選択することは、コンテンツアイテム名前空間のコンテンツアイテムブロックサーバへの割り当てを表すデータにおいて、前記コンテンツアイテム名前空間の識別子が前記ターゲットコンテンツアイテムブロックサーバの識別子に関連付けられていることを決定することに少なくとも部分的に基づく請求項1に記載の方法。

請求項5

前記コンテンツアイテム名前空間が割り当てられている先の前記ターゲットコンテンツアイテムブロックサーバを選択することは、コンテンツアイテム名前空間のコンテンツアイテムブロックサーバへの割り当てを表すデータにおいて、前記コンテンツアイテム名前空間の識別子が前記ターゲットコンテンツアイテムブロックサーバの識別子に関連付けられていることを決定することに少なくとも部分的に基づき、前記方法はさらに、前記ターゲットコンテンツアイテムブロックサーバ以外のメタデータサーバから前記割り当てを表す前記データを取得することを含む請求項1に記載の方法。

請求項6

前記コンテンツアイテム名前空間に少なくとも部分的に基づいて、現在のクライアントジャーナルカーソル値を決定することと、前記現在のクライアントジャーナルカーソル値をメタデータサーバへ送信することと、前記ターゲットブロックサーバに保持されていない、前記コンテンツアイテムの前記ひとつ以上のコンテンツアイテムブロックのひとつ以上の識別子を、前記メタデータサーバから受信することと、をさらに含む請求項1に記載の方法。

請求項7

前記生成または変更されたコンテンツアイテムのコンテンツアイテムブロックの識別子の第1集合を取得することと、識別子の前記第1集合をメタデータサーバに送信することと、ひとつ以上の識別子の第2集合を前記メタデータサーバから受信することであって、ひとつ以上の識別子の前記第2集合が前記ターゲットコンテンツアイテムブロックサーバに保持されていない前記ひとつ以上のコンテンツアイテムブロックを特定する、受信することと、をさらに含む請求項1に記載の方法。

請求項8

前記コンテンツアイテムが第1コンテンツアイテムであり、前記ターゲットコンテンツアイテムブロックサーバが第1ターゲットコンテンツアイテムブロックサーバであり、前記方法はさらに、前記第1コンテンツアイテムではない第2コンテンツアイテムの生成または変更を検出することと、前記第2コンテンツアイテムが前記コンテンツアイテム名前空間に属すると決定することと、前記コンテンツアイテム名前空間に少なくとも部分的に基づいて、前記第1ターゲットコンテンツアイテムブロックサーバではない第2ターゲットコンテンツアイテムブロックサーバを選択することと、前記第2コンテンツアイテムのひとつ以上のコンテンツアイテムブロックを、前記第2ターゲットコンテンツアイテムブロックサーバにアップロードすることと、を含む請求項1に記載の方法。

請求項9

前記コンテンツアイテムが第1コンテンツアイテムであり、前記コンテンツアイテム名前空間が第1コンテンツアイテム名前空間であり、前記方法はさらに、前記第1コンテンツアイテムではない第2コンテンツアイテムの生成または変更を検出することと、前記第2コンテンツアイテムが、前記第1コンテンツアイテム名前空間ではない第2コンテンツアイテム名前空間に属すると決定することと、前記第2コンテンツアイテム名前空間が前記ターゲットコンテンツアイテムブロックサーバに割り当てられていると特定することと、前記第2コンテンツアイテムそれのひとつ以上のコンテンツアイテムブロックを、前記ターゲットコンテンツアイテムブロックサーバにアップロードすることと、を含む請求項1に記載の方法。

請求項10

現在のクライアントジャーナルカーソル値をメタデータサーバに送信することであって、前記現在のクライアントジャーナルカーソル値が前記コンテンツアイテム名前空間と前記コンテンツアイテム名前空間が割り当てられている第1コンテンツアイテムブロックサーバとに関連付けられる、送信することと、前記現在のクライアントジャーナルカーソル値を送信することに少なくとも部分的に基づいて、コンテンツアイテムブロックの識別子の第1集合であって前記コンテンツアイテムを構成する少なくともひとつのブロックに対応する第1集合を前記メタデータサーバから受信することと、コンテンツアイテムブロック識別子の前記第1集合を受信することに少なくとも部分的に基づいて、前記計算システムによってローカルで保持されていない、前記コンテンツアイテムのひとつ以上のコンテンツアイテムブロックを決定することと、前記計算システムによってローカルで保持されていなかった、前記コンテンツアイテムの前記ひとつ以上のコンテンツアイテムブロックを、第2コンテンツアイテムブロックサーバから前記計算システムへ、ダウンロードすることと、をさらに含む請求項1に記載の方法。

請求項11

(A)前記コンテンツアイテム名前空間の識別子と、(B)第1コンテンツアイテムブロックの識別子の第1集合と、をクライアントから受信することであって、前記第1コンテンツアイテムブロックが前記クライアントに保持される前記コンテンツアイテムの第1バージョンを構成し、前記コンテンツアイテムが前記コンテンツアイテム名前空間に属する、受信することと、前記コンテンツアイテム名前空間が割り当てられている先のコンテンツアイテムブロックサーバを選択することと、識別子の前記第1集合に少なくとも部分的に基づいて、第2コンテンツアイテムブロックの識別子の第2集合を決定することであって、前記第2コンテンツアイテムブロックが前記コンテンツアイテムブロックサーバに保持される前記コンテンツアイテムの第2バージョンを構成する、決定することと、前記第1集合にあり、かつ、前記第2集合にないひとつ以上のコンテンツアイテムブロック識別子を前記クライアントに送信することと、をさらに含む請求項1に記載の方法。

請求項12

前記コンテンツアイテム名前空間に属する新たなコンテンツアイテムを検出することと、前記コンテンツアイテム名前空間がマウントされるクライアントを決定することと、前記コンテンツアイテム名前空間に対する更新利用可能であることを前記クライアントに通知することと、現在のクライアントジャーナルカーソル値を前記クライアントから受信することであって、前記現在のクライアントジャーナルカーソル値が前記コンテンツアイテム名前空間と前記コンテンツアイテム名前空間が割り当てられているコンテンツアイテムブロックサーバとに関連付けられる、受信することと、前記受信した現在のクライアントジャーナルカーソル値に少なくとも部分的に基づいて、前記コンテンツアイテムブロックサーバに保持され前記新たなコンテンツアイテムを構成するコンテンツアイテムブロックの識別子の集合を取得することと、コンテンツアイテムブロック識別子の前記集合を前記クライアントに送信することと、をさらに含む請求項1に記載の方法。

請求項13

コンピューティングシステムによって実行される方法であって、前記方法は、現在のクライアントジャーナルカーソル値をメタデータサーバに送信することであって、前記現在のクライアントジャーナルカーソル値がコンテンツアイテム名前空間と前記コンテンツアイテム名前空間が割り当てられている第1コンテンツアイテムブロックサーバとに関連付けられる、送信することと、前記現在のクライアントジャーナルカーソル値を送信することに少なくとも部分的に基づいて、コンテンツアイテムブロックの識別子の第1集合であってコンテンツアイテムを構成する少なくともひとつのブロックに対応する第1集合を前記メタデータサーバから受信することと、コンテンツアイテムブロック識別子の前記第1集合を受信することに少なくとも部分的に基づいて、前記計算システムによってローカルで保持されていない、前記コンテンツアイテムのひとつ以上のコンテンツアイテムブロックを決定することと、前記計算システムによってローカルで保持されていなかった、前記コンテンツアイテムの前記ひとつ以上のコンテンツアイテムブロックを、第2コンテンツアイテムブロックサーバから前記計算システムへ、ダウンロードすることと、を含む方法。

請求項14

前記第1コンテンツアイテムブロックサーバと前記第2コンテンツアイテムブロックサーバとは同じコンテンツアイテムブロックサーバである請求項13に記載の方法。

請求項15

前記第1コンテンツアイテムブロックサーバと前記第2コンテンツアイテムブロックサーバとは異なるコンテンツアイテムブロックサーバであり、前記方法はさらに、前記第2コンテンツアイテムブロックサーバの識別子を前記メタデータサーバから受信することを含み、前記コンテンツアイテムの前記ひとつ以上のコンテンツアイテムブロックをダウンロードすることは、前記受信された第2コンテンツアイテムブロックサーバ識別子に少なくとも部分的に基づく請求項13に記載の方法。

請求項16

前記コンテンツアイテム名前空間の識別子と前記第1コンテンツアイテムブロックサーバの識別子とを前記メタデータサーバに送信することをさらに含む請求項13に記載の方法。

請求項17

(A)コンテンツアイテム名前空間の識別子と、(B)第1コンテンツアイテムブロックの識別子の第1集合と、をクライアントから受信することであって、前記第1コンテンツアイテムブロックが前記クライアントに保持されるコンテンツアイテムの第1バージョンを構成し、前記コンテンツアイテムが前記コンテンツアイテム名前空間に属する、受信することと、前記コンテンツアイテム名前空間が割り当てられている先のコンテンツアイテムブロックサーバを選択することと、識別子の前記第1集合に少なくとも部分的に基づいて、第2コンテンツアイテムブロックの識別子の第2集合を決定することであって、前記第2コンテンツアイテムブロックが前記コンテンツアイテムブロックサーバに保持される前記コンテンツアイテムの第2バージョンを構成する、決定することと、前記第1集合にあり、かつ、前記第2集合にないひとつ以上のコンテンツアイテムブロック識別子を前記クライアントに送信することと、を含む方法。

請求項18

ユーザアカウントの識別子を前記クライアントから受信することと、前記受信されたユーザアカウント識別子に少なくとも部分的に基づいて、前記ユーザアカウントが前記コンテンツアイテム名前空間にアクセスする権限を有するか検証することと、をさらに含む請求項17に記載の方法。

請求項19

前記コンテンツアイテムブロックサーバの識別子を前記クライアントから受信することをさらに含み、前記コンテンツアイテム名前空間が割り当てられている前記コンテンツアイテムブロックサーバを選択することは、前記クライアントから受信した前記コンテンツアイテムブロックサーバ識別子に少なくとも部分的に基づく請求項17に記載の方法。

請求項20

コンテンツアイテム名前空間のコンテンツアイテムブロックサーバへの割り当てを表すデータを保持することをさらに含み、前記コンテンツアイテム名前空間が割り当てられている前記コンテンツアイテムブロックサーバを選択することは、前記割り当てを表す前記データに少なくとも部分的に基づく請求項17に記載の方法。

請求項21

前記コンテンツアイテムブロックサーバに保持されるコンテンツアイテムブロックを特定するデータを保持することをさらに含み、前記第2コンテンツアイテムブロックの識別子の前記第2集合を決定することは、前記コンテンツアイテムブロックサーバに保持されるコンテンツアイテムブロックを特定する前記データに少なくとも部分的に基づく請求項17に記載の方法。

請求項22

前記コンテンツアイテムブロックサーバに保持されるコンテンツアイテムブロックを特定する前記データを更新することであって、前記コンテンツアイテムブロックサーバに保持されるコンテンツアイテムブロックを特定する前記更新されたデータが前記第1集合にあって前記第2集合にはないひとつ以上のコンテンツアイテムブロックを特定するように、前記データを更新することをさらに含む請求項21に記載の方法。

請求項23

前記コンテンツアイテム名前空間が割り当てられている前記コンテンツアイテムブロックサーバを選択することに少なくとも部分的に基づいて、前記コンテンツアイテムブロックサーバの識別子を前記クライアントに送信することをさらに含む請求項17に記載の方法。

請求項24

前記コンテンツアイテム名前空間と前記コンテンツアイテムブロックサーバとに関連付けられたサーバジャーナルカーソル値を決定することであって、前記サーバジャーナルカーソル値が前記コンテンツアイテムに対応する、決定することと、前記サーバジャーナルカーソル値を前記クライアントに送信することと、をさらに含む請求項17に記載の方法。

請求項25

コンテンツアイテム名前空間に属する新たなコンテンツアイテムを検出することと、前記コンテンツアイテム名前空間がマウントされるクライアントを決定することと、前記コンテンツアイテム名前空間に対する更新が利用可能であることを前記クライアントに通知することと、現在のクライアントジャーナルカーソル値を前記クライアントから受信することであって、前記現在のクライアントジャーナルカーソル値が前記コンテンツアイテム名前空間と前記コンテンツアイテム名前空間が割り当てられているコンテンツアイテムブロックサーバとに関連付けられる、受信することと、前記受信した現在のクライアントジャーナルカーソル値に少なくとも部分的に基づいて、前記コンテンツアイテムブロックサーバに保持され前記新たなコンテンツアイテムを構成するコンテンツアイテムブロックの識別子の集合を取得することと、コンテンツアイテムブロック識別子の前記集合を前記クライアントに送信することと、を含む方法。

請求項26

前記コンテンツアイテムブロックサーバに保持されるコンテンツアイテムブロックを特定するデータを保持することをさらに含み、前記コンテンツアイテムブロックサーバに保持される前記新たなコンテンツアイテムの前記コンテンツアイテムブロックの識別子の前記集合を取得することは、前記コンテンツアイテムブロックサーバに保持されるコンテンツアイテムブロックを特定する前記データに少なくとも部分的に基づく請求項25に記載の方法。

請求項27

前記コンテンツアイテム名前空間の識別子と前記コンテンツアイテムブロックサーバの識別子とを前記クライアントから受信することをさらに含み、コンテンツアイテムブロック識別子の前記集合を取得することは、前記クライアントから受信された前記コンテンツアイテム名前空間識別子と前記コンテンツアイテムブロックサーバ識別子とに少なくとも部分的に基づく請求項25に記載の方法。

請求項28

コンテンツアイテム名前空間のコンテンツアイテムブロックサーバへの割り当てを表すデータを保持することと、コンテンツアイテム名前空間のコンテンツアイテムブロックサーバへの割り当てを表す前記データに少なくとも部分的に基づいて、前記コンテンツアイテム名前空間が前記コンテンツアイテムブロックサーバに割り当てられていると決定することと、をさらに含み、コンテンツアイテムブロック識別子の前記集合を取得することは、前記コンテンツアイテム名前空間が前記コンテンツアイテムブロックサーバに割り当てられていると決定することに少なくとも部分的に基づく請求項25に記載の方法。

請求項29

1つ以上のプロセッサによって実行されると、請求項1から28のいずれか一項に記載の方法を実行させる命令を格納する1つ以上の記憶媒体

請求項30

1つ以上のプロセッサと、前記ひとつ以上のプロセッサによって実行された場合、請求項1から28のいずれか一項に記載の方法を実行させるインストラクションを保持するひとつ以上の保持媒体と、を備えるシステム

技術分野

0001

本願はデジタルコンテンツアイテムの管理に関する。特に、下記の本発明の例示的な実施の形態は、オンラインコンテンツ管理サービスでホストされるデジタルコンテンツアイテムの管理に関する。

背景技術

0002

伝統的に、企業は自身が所有運用するネットワークファイルサーバにデジタルコンテンツアイテム(例えば、ドキュメントファイル、および他のデジタル情報)を格納してきた。そのようなファイルサーバは、多くの場合、ネットワークファイヤウォール後ろオンプレミスに位置している。ネットワークファイヤウォールはファイルサーバへの認証されていないネットワークアクセスを防ぐ。この構成は、ファイルサーバへのネットワークアクセスの大半または全てがネットワークファイヤウォールの後ろにあるコンピュータ、例えばファイルサーバと同じローカルエリアネットワーク(LAN)に接続されたコンピュータ、によるものである場合に、上手く働く。ある場合には、ファイヤウォールの外側からの(例えば、インターネットを介した)ファイルサーバへのネットワークアクセスは仮想プライベートネットワーク(VPN)によって促進される。VPNは実効的に、ファイヤウォールの外側のコンピュータを、ファイルサーバから見て、あたかもファイヤウォールの後ろにいるかのように見せる。

0003

しかしながら、今日、労働力はよりグローバルでよりモバイルとなっている。このことは、ブロードバンドインタネット接続の広い可用性と、比較的低料金で、そのうえ強力な、例えば、携帯電話ラップトップコンピュータ及びタブレットコンピュータなどのポータブル個人用計算デバイスの可用性とによって広く拍車がかかっている。その結果、従業員仮想的にどこでも仕事をすることができ、仕事を終わらせるためにオフィス物理的に存在する必要がない(例えば遠隔で仕事をすることができる)。

0004

最近、オンラインコンテンツ管理サービスは、従業員がインターネット又は他のネットワーク上でアクセス可能な「オンラインに」コンテンツアイテムを格納することが可能になった。企業はオンラインコンテンツ管理サービスを用いて、そのサービスによって動作するサーバ上に企業のコンテンツアイテムを「ホスト」することができる。オンラインコンテンツ管理サービスの例には、カリフォルニアサンフランシスコのDropbox,Inc.により提供されている「ドロップボックス」サービスがある。

0005

コンテンツアイテムのオンラインストレージは、企業やその従業員等に多くの利益をもたらす。ドロップボックス(Dropbox)は、例えば、ホストしたコンテンツアイテムを、複数のデバイスとユーザに同期及び共有する機能を提供する。このエンドユーザとドロップボックスの両方にコンテンツアイテムを格納することに起因する柔軟性は、種々の異なるオンサイト及び遠隔の就労形態をサポートし、従業員には利便性を、そして雇用者には増大した従業員の生産性を提供する。

0006

企業によって生成されるデジタル情報の量が増加すれば、オンラインコンテンツ管理サービスを用いた企業のコンテンツアイテムのホスティングは増加することのみが期待される。しかしながら、いくつかのホストした情報のデリケートな性質により、企業ユーザを含むそのようなサービスのユーザは、サービスを用いてホストするコンテンツアイテムに対してより高いレベルコントロールを提供するサービスへの改善を理解するだろう。加えて、今日の企業においてブロードバントインターネット接続が普及する一方で、インターネットを介したコンテンツアイテムのアップロード及びダウンロードは、未だにユーザが期待する又は望むよりもより長い時間を要し得る。

0007

このセクションで説明したアプローチは、さらに追及されうるアプローチであって、既に着想され、追及されたアプローチではない。したがって、特に示唆しない限り、ここで説明した任意のアプローチが、ここに組み込まれることにより単に先行技術として認識されることが想定されるべきではない。

図面の簡単な説明

0008

本発明の実施例は例示目的で説明されるものであり、参照番号等が類似の要素を参照するような、以下に示す添付の図面の図における限定による方法で説明されるものではない。

0009

本発明のいくつかの例示的な実施の形態が実施されるシステム環境例を示すブロック図である。

0010

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバへアップロードするためのプロセスのフロー図である。

0011

本発明のいくつかの例示的な実施の形態に係る、ユーザアカウントとコンテンツアイテム名前空間メタデータのブロック図である。

0012

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムサーバジャーナルのブロック図である。

0013

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオフプレミスブロックサーバへアップロードするためのインタラクション図である。

0014

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオンプレミスブロックサーバへアップロードするためのインタラクション図である。

0015

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセスのフロー図である。

0016

本発明のいくつかの例示的な実施の形態に係る、リンクされたデバイスメタデータのブロック図である。

0017

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをブロックサーバからダウンロードするインタラクション図である。

0018

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバへアップロードするためのプロセスのフロー図である。

0019

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムサーバジャーナルのブロック図である。

0020

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオフプレミスブロックサーバへアップロードするためのインタラクション図である。

0021

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオンプレミスブロックサーバへアップロードするためのインタラクション図である。

0022

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセスのフロー図である。

0023

本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするインタラクション図である。

0024

本発明の例示的な実施の形態が実施され得る計算デバイスの非常に一般的なブロック図である。

0025

計算デバイスの動作を制御する基本的なソフトウエアシステムのブロック図である。

実施例

0026

以下の説明では、本発明の実施例の十分な理解を提供するために、説明の目的で多くの特定事例を明らかにする。しかしながら、本実施例がそれらの特定事例なしに実施されうることは明らかであろう。他の例では、本実施例を不必要に不明りょうにすることを避けるために、既知の構成やデバイスがブロック図の形式で示される。

0027

例示的な実施の形態は以下の概要に従って説明される。
1.0 説明例
2.0システム環境の例
3.0 第1の例示的な同期プロトコル動作
3.1コンテンツアイテムのアップロード
3.1.1ユーザアカウントおよびコンテンツアイテム名前空間メタデータ
3.1.2 コンテンツアイテム名前空間マウント情報
3.1.3コンテンツアイテムサーバジャーナル
3.1.4 例示的なアップロードインタラクション
3.2 コンテンツアイテムのダウンロード
3.2.1リンクされたデバイスメタデータ
3.2.2 例示的なダウンロードインタラクション
4.0 第2の例示的な同期プロトコル動作
4.1アップロードプロセス
4.1.1 コンテンツアイテムサーバジャーナル
4.1.2 例示的なアップロードインタラクション
4.2ダウンロードプロセス
4.2.1 例示的なダウンロードインタラクション
5.0ストリーミングダウンロード最適化
5.1 第1の例示的な同期プロトコル
5.2 第2の例示的な同期プロトコル
6.0オンプレミスコンテンツ管理サービス
7.0 基本的な計算ハードウエアソフトウエア
7.1 基本的な計算デバイス
7.2 基本的なソフトウエアシステム
8.0拡張及び代替
−−−−
1.0 説明例

0028

本発明の実施例は、オンラインコンテンツ管理サービスのユーザに、そのようなサービスを用いてホストされるユーザのコンテンツアイテムにわたる、より高いコントロールを提供する。以下では、多くの、コンピュータに実装されるプロセス及びネットワークのやり取りが記載される。これらのプロセス及びネットワークのやり取りの記載において役立つように、これから何人かの説明例のユーザが用いられる。これらの例は、本発明のいくつかの実施例の特徴を説明するために用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。これらの例は限定を意図するものではなく、単に説明として提供されるものである。

0029

第1のユーザ例は、以下、「アルファ会社」として参照される。第1の例として、アルファ会社は多数の従業員を有し、従業員は、オンラインコンテンツ管理サービスを用いて、彼らの業務コンピュータに格納されたコンテンツアイテムを、当該サービスによって運用されるインターネット上のサーバに格納されるコンテンツアイテムと同期する。アルファ会社は、コンテンツアイテムが彼らの業務コンピュータに格納されているため、従業員の業務コンピュータがインターネットに接続していない場合に当該コンテンツアイテムへのアクセスを有する、ということを好む。同時に、アルファ会社は、コンテンツアイテムがオンラインコンテンツ管理サービスのサーバと、バックアップ及び共有の目的で同期される、ということも好む。アルファ会社はまた、可能な場合に、従業員の業務コンピュータ間のコンテンツアイテムの変更を同期するための必要な時間を削減することを好む。

0030

第2の例として、アルファ会社の従業員は地理的に分散化され得る。例えば、アルファ会社の本社はサンフランシスコにあり得るが、サテライトオフィスニューヨーク、オースティン及びシアトルにも有し得る。会社アルファのチームも地理的に分散され得る。例えば、サンフランシスコとオースティンのオフィスの従業員がプロジェクト共同し得る。アルファ会社は、チームで共同したコンテンツアイテムへの変更がサンフランシスコとオースティンのオフィスのコンピュータ間で素早く同期されることを好むだろう。

0031

第3の例として、サンフランシスコとオースティンのアルファ会社の従業員が共同するプロジェクトは非常にデリケート(例えば機密)であり得る。この場合、アルファ会社は、プロジェクトに関するコンテンツアイテムに渡る、より多くのコントロールと監視を保持することを望み得る。例えば、アルファ会社は、プロジェクトのコンテンツアイテムがオンプレミスに格納され、オンラインコンテンツ管理サービスによって動作するサーバには格納されないことを好み得る。

0032

本発明の特徴を用いることにより、アルファ会社のようなユーザ及び他のユーザは、オンラインコンテンツ管理サービスによって管理される彼らのコンテンツアイテムがどこにホストされるのかをコントロールすることができる。特に、実施例は、オンプレミスにのみ、オフプレミスにのみ、又は、オンプレミスとオフプレミスとの両方に、ユーザがコンテンツアイテムをホストすることを可能にする。オンプレミスにコンテンツアイテムをホストする場合、ユーザは、(いくつかの実施例はオンラインコンテンツ管理サービスがオンプレミスのコンテンツアイテムのストレージハードウエアを提供することを含むが)彼ら自身のコンテンツアイテムのストレージハードウエアを用いることができる。実施例は、エンドユーザデバイスが、エンドユーザデバイスにおいて成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、へ同期することを可能にする。実施例はまた、エンドユーザデバイスが、他のエンドユーザデバイスによって成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、から同期することを可能にする。

0033

これらの説明の例は、以降の記載のいくつかと共に用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。
2.0システム環境の例

0034

本発明のいくつかの実施例の特徴が、図1を参照して今から記載される。図1は、本発明のいくつかの実施例が実施されるシステム環境100の例に係るブロック図である。図示されるように、ユーザ(例えば102−1)は、個人用計算デバイス(例えば110−1)を有する又は用いることができる。個人用計算デバイスはローカルストレージ(例えば112−1)とコンテンツアイテム同期エージェント(例えば114−1)とを有することができる。個人用計算デバイスのローカルストレージは、1つ以上のコンテンツアイテム113を格納することができる。オンプレミスブロックサーバ120は、ブロックサービス122、ブロックストレージ124、及びブロック管理エージェント126から構成されることができる。ブロックストレージ124は、1つ以上のコンテンツアイテムブロック125を格納することができる。オンラインコンテンツ管理サービスは、コントロールプレーン、ストレージプレーン、及びデータプレーンから構成されることができる。コントロールプレーンは通知サーバ140、メタデータサーバ150、及びウェブサイト170を含むことができる。ストレージプレーンはオフプレミスブロックサーバ130を含むことができる。オフプレミスブロックサーバ130は、ブロックサービス132、及びブロックストレージ134から構成されることができる。オフプレミスブロックサーバ130のブロックストレージ124は、1つ以上のコンテンツアイテムブロック125を格納することができる。バックエンドデータバスは、計算デバイス、ネットワーク、及びネットワークデバイス集合から構成されることができ、ネットワークデバイスは、ネットワーク通信と、サーバ130、140、150及び170のものを含む、コントロールプレーンとストレージプレーンとの間やその内部のデータの移動とを容易にする。バックエンドデータバスはまた、サーバ130、140、150及び170のものを含む、コントロールプレーンとストレージプレーンとによってメタデータプレーン180へのアクセスを容易にすることができる。データプレーン180は、1つ以上の揮発性又は不揮発性メモリベースとした、分散可能な、データを検索及び格納するデータベースシステム(例えばメムキャッシュ(memcache)、RDBMS分散キーバリューストア等)から構成されることができる。

0035

図1の例では、システム環境100は、個人用計算デバイス110−1及び個人用計算デバイス110−2をそれぞれ有する又は使用するユーザ102−1及び102−2を含む。個人用計算デバイス110−1は、ローカルストレージ112−1とコンテンツアイテム同期エージェント114−1とを有する。個人用計算デバイス110−2も、ローカルストレージ112−2とコンテンツアイテム同期エージェント114−2とを有する。図1は、明示的な例を提供する目的で、システム環境100における2人のユーザ(102−1及び102−2)と2つの個人用計算デバイス(110−1及び110−2)のみを示しているが、システム環境100は、2人以上のユーザと、それぞれがローカルストレージ及びコンテンツアイテム同期エージェントを有する2つ以上の個人用計算デバイスとを含んでよいことは理解されるべきである。例えば、システム環境100は、数百又は数千又は数百万又はそれ以上のユーザと、数百又は数千又は数百万又はそれ以上の個人用計算デバイスを有してよい。更に、ユーザと個人用計算デバイスとの間に一対一の対応は要求されない。例えば、単一の個人用計算デバイスは複数のユーザによって使用されてもよく、単一のユーザは複数の個人用計算デバイスを有し又は使用してもよい。

0036

本発明のいくつかの実施例に従って、ユーザ102−1は、個人用計算デバイス110−1を用いて、個人用計算デバイス110−1のローカルストレージ112−1にコンテンツアイテム113を追加し又は変更することができる。その後、個人用計算デバイス110−1におけるコンテンツアイテム同期エージェント114−1は、ローカルストレージ112−1へのコンテンツアイテム113の追加又は変更を自動的に検出し、このコンテンツアイテム113をオンプレミスブロックサーバ120又はオフプレミスブロックサーバ130にアップロードする。いくつかの実施例によれば、アップロードは、以降でより詳細に説明される実施例のコンテンツアイテム同期プロトコルに従う、コンテンツアイテム同期エージェント114−1とメタデータサーバ150との間のネットワーク通信によって促進される。

0037

本発明のいくつかの実施例に従って、他の個人用計算デバイス110−2は、個人用計算デバイス112−2のローカルストレージ112−2に追加された又は変更されたコンテンツアイテム113を自動的にダウンロードすることができる。初めに、通知サーバ140は、個人用計算デバイス112−2におけるコンテンツアイテム同期エージェント114−2に、コンテンツアイテム113の新たなバージョン利用可能であることを通知する。その後、コンテンツアイテム同期プロトコルに従った同期エージェント114−2とメタデータサーバ150との間のネットワーク通信による指示の通りに、コンテンツアイテム同期エージェント114−2は、コンテンツアイテム113の新たなバージョンを、オンプレミスブロックサーバ120又はオフプレミスブロックサーバ130からダウンロードする。ダウンロードの後に、コンテンツアイテム113の新たなバージョンはローカルストレージ112−2におけるユーザ102−2に利用可能となる。

0038

個人用計算デバイス(例えば110−1又は110−2)は据え置き用又は携帯用計算デバイスであることができる。例えば、個人用計算デバイスは、デスクトップコンピュータワークステーションコンピュータ、携帯電話、ラップトップコンピュータ、タブレットコンピュータ、又は他の据え置き用又は携帯用計算デバイスであることができる。個人用計算デバイスは、例えば、図16との関連で後述する基本的な計算デバイス1600のもののような、1以上のハードウエア要素から構成されてもよい。個人用計算デバイスはまた、例えば、図17との関連で後述するソフトウエアシステム1700のような、基本的なソフトウエアシステムを用いて構成されてもよい。

0039

ローカルストレージ(例えば112−1又は112−2)は、物理ホストインタフェース(例えば、シリアルアタッチドSCIS(SerialAttachedSCIS)、シリアルATA、PCIエクスプレスファイバチャネル(FibreChannel)、USBなど)によって個人用計算デバイス110のバスに接続される、電子的、磁気的又は光学的なデータストレージ機構であり得る。例えば、個人用計算デバイスの、データストレージ機構は、ハードディスクソリッドステートドライブ、又は光学ドライブであり得る。代替的に、ローカルストレージは、個人用計算デバイス上に「マウント」される、例えば、ローカルエリアネットワーク(LAN)上のネットワークデータストレージのような、ネットワークドライブであり得る。ネットワークドライブをマウントすることにより、ネットワークドライブに格納されるデータは、ネットワークドライブがデバイスとは別個にネットワークを跨いで物理的に置かれても、ユーザと、個人用計算デバイス(例えばデバイスの物理ドライブ上)に格納される個人用計算デバイス上で実行されるアプリケーションとから見えるようになる。ひとたびマウントされると、個人用計算デバイスは、典型的に、例えば、UNIX用のネットワークファイルシステム(NFSプロトコル、又は、ウインドウズ(WINDOWS)用のサーバメッセージブロック(SMB)プロトコルのようなネットワークファイルシステムプロトコルに従って、ネットワークドライブから及びネットワークドライブへ読み書きする。

0040

個人用計算デバイスのローカルストレージは、コンテンツアイテム113を格納してもよい。「コンテンツアイテム」はデジタル情報の集合である。ローカルストレージに格納される場合、コンテンツアイテムはファイルシステムのファイルに対応し得る。例えば、コンテンツアイテムは、文書ファイル(例えばワードプロセッシング文書プレゼンテーション文書スプレッドシート文書又は他の種別文書)、画像ファイル(例えば、jpg,tiff,gif又は他の種別の画像ファイル)、音声ファイル(例えば、 mp3,aiff,m4a,wav又は他の種別の音声ファイル)、映像ファイル(例えば、mov,mp4,m4v又は他の種別の映像ファイル)、ウェブページファイル(例えば、htm,html又は他の種別のウェブページファイル)、テキスト又はリッチテキストファイル(例えば、txt,rtf又は他の種別のテキスト又はリッチテキストファイル)、又は他の種別のファイルであり得る。ローカルストレージに格納される場合、コンテンツアイテムは,ファイルシステムのファイル・フォルダ階層内のファイルシステムパスを有し得る。例えば、ローカルストレージに格納されるコンテンツアイテムに対するファイルシステムパスは、文字列として「C:¥folder1¥folder2¥my.file」と表されてよい。ここで、「C:¥」はファイルシステムのルートを参照し、「folder1」はファイルシステムのルートにおけるファイルシステムフォルダを参照し、「folder2」は「folder1」ファイルシステムフォルダを用いてファイルシステムフォルダを参照し、「my.file」はコンテンツアイテムに対応する「folder2」ファイルシステムフォルダ内のファイルを参照する。「¥」文字は、文字列表現内の異なるファイルシステムフォルダとファイル参照とを線引きするために文字列表現内で用いられる。

0041

個人用計算デバイス110−1及び110−2とオンプレミスブロックサーバ120とは、ローカルエリアネットワーク(LAN)160に接続され得る。例えば、LAN160は、これに限らないがIEEE 802.3又はIEEE 802.11ベースのネットワークを含むIEEE 802ベースのネットワーク、又は、複数のこのようなネットワークの組み合わせであり得る。LAN160は、ネットワークファイアウォールによってワイドエリアネットワークWAN)190から保護されてよい。実施例では、WAN190はインターネット又は他の公衆ネットワークである。特に、ネットワークファイアウォールは、サーバ130、140、150及び170を含むWAN190に接続するデバイスが、個人用計算デバイス110−1及び110−2とオンプレミスブロックサーバ120とを含むLAN160に接続するデバイスと、ネットワーク接続確立を開始することを防止する。しかしながら、ネットワークファイアウォールは、サーバ130、140、150及び170を含むWAN190に接続するデバイスと確立するための、個人用計算デバイス110−1及び110−2とオンプレミスブロックサーバ120とを含むLAN160に接続するデバイスを発信元とする特定の種別のネットワーク接続を許可するように構成され得る。典型的に、LAN160は、WAN190と比較した場合により低いネットワークレイテンシとより高いネットワーク帯域とを有するが、所与の実装がそうでなければならないという要求があるわけではない。

0042

オンプレミスブロックサーバ120、オフプレミスブロックサーバ130、通知サーバ140、メタデータサーバ150、ウェブサイト170及びメタデータプレーン180のいくつか又は全ては、1つ以上のサーバ計算デバイスによって実装されてよい。これらのそれぞれは、例えば、図16との関連で後述する基本的な計算デバイス1600のもののような、1以上のハードウエア要素から構成されてよく、これらのそれぞれはまた、例えば、図17との関連で後述するソフトウエアシステム1700のような、基本的なソフトウエアシステムを用いて構成されてもよい。2以上のサーバ計算デバイスによって実装される場合、サーバ計算デバイスは、ロードバランスされ、クラスタ化され、又は他の分散コンピューティングアレンジメントで構成されてもよい。

0043

コンテンツアイテム同期エージェント、ブロックサービス122、ブロックエージェント126、ブロックサービス132、通知サーバ140、メタデータサーバ150、ウェブサイト170及びメタデータプレーン180のそれぞれの機能は、1つ以上の計算デバイスによって実行されるとその機能を果たす命令を有する1つ以上のコンピュータプログラムとして実装されてよい。しかしながら、この機能は、目下の特定の実装の要件に従って、ハードウエア(例えば、1つ以上の特定用途向け集積回路ASICS)又は1つ以上のフィールドプログラマブルゲートアレイFPGA))、又はハードウエアとソフトウエアの組み合わせで実装され得る。

0044

明りょうな例を提供する目的のため、図1は単一のオンプレミスブロックサーバ120のみを示しているが、システム環境100は、オンラインコンテンツ管理サービスのユーザの関連するグループの数に応じて、数百又は数千又は数百万又はそれ以上のオンプレミスブロックサーバを含んでよい。例えば、オンラインコンテンツ管理サービスは、様々な異なる組織業種、企業、学校、大学及び他のグループに属す数十億又はそれ以上のユーザをサポートしてもよい。これらの組織、業種、企業、学校、大学及び他のグループのそれぞれは、1以上のオンプレミスブロックサーバを有し又は使用してもよい。

0045

以下で使用される「オンプレミス(on−premises)」の語は、1つ以上の個人用計算デバイス及びオンラインコンテンツ管理サービスと、特に、オンラインコンテンツ管理サービスのオフプレミスブロックサーバ130とが相対的であることが意図される。オンプレミスブロックサーバ(例えば120)は、個人用計算デバイスとして同一の設備又は同一のビルディングに置かれてよいが、このように要求されるものではない。オンプレミスブロックサーバが個人用計算デバイスとして同一のローカルエリアネットワーク(例えば160)に接続されてもよいが、そのように要求されるものでもない。従って、ここでの「オンプレミス」ブロックサーバに対する参照は、所定の個人用計算デバイスに対して、ブロックサーバが、地理的及び/又はネットワーク的に、当該所定の個人用計算デバイスに対するオフプレミスブロックサーバ130よりも近いことを意味する。個人用計算デバイスは、個人用計算デバイスをオンプレミスブロックサーバに接続するネットワークが、個人用計算デバイスをオフプレミスブロックサーバ130に接続するネットワークよりも、より低いネットワークレイテンシ及び/又はより高いネットワーク帯域可用性を提供する場合、ネットワーク上のオフプレミスブロックサーバ130よりもオンプレミスブロックサーバに近くてよい。

0046

個人用計算デバイスは、例えば、オンプレミスブロックサーバ120、オフプレミスブロックサーバ130、メタデータサーバ150及びウェブサイト170を含む、様々なサーバのネットワーク要求或いは単に「要求」を生成してもよい。そして、サーバ120、130、150及び170は、ネットワーク応答或いは単に「応答」を、個人用計算デバイスからの要求に対して返してよい。要求は典型的にはヘッダペイロードとを含む。この要求ヘッダは典型的に、要求を受信するサーバへの要求ペイロードに対するコンテクストを提供する。要求に対する応答はまた、典型的にはヘッダとペイロードとを含む。応答のヘッダは典型的に、応答を受信する個人用計算デバイスへの応答ペイロードに対するコンテクストを提供する。個人用計算デバイスからの要求と、サーバによって返信されるその応答とは、1つ以上のネットワーク(例えば160及び190)を介して送信されてよく、例えば、ハイパーテキスト伝送プロトコルHTTP)のような要求‐応答ネットワーキングプロトコルに従って生成されてよい。要求とその応答は、例えば、伝送制御プロトコル(TCP)などのコネクション指向ネットワーキングプロトコルに従って個人用計算デバイスとサーバとによって確立されたネットワーク接続を介して、送信されてよい。ネットワーク接続は、2以上の要求と応答のペアがそのネットワーク接続を介して送信されるという意味において永続的であってよい。ネットワーク接続はまた、例えば、トランスポートレイヤセキュリティTLS)又はセキュアソケットレイヤSSL)暗号ネットワーキングプロトコルに従って暗号化されてもよい。しかしながら、特定のネットワーキングプロトコル又はネットワーキングプロトコルの特定のセットが実施例によって要求されるものではなく、HTTP、TCP、TLS又はSSL以外のプロトコルが、目下の特定の実装の要求に従って用いられてもよい。
3.0 第1の例示的な同期プロトコル動作

0047

コンテンツアイテム同期プロトコルの第1の例示的動作は、図2−9を参照して以下に説明される。特に、第1の例に係る同期プロトコルの動作は、コンテンツアイテムをオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130にアップロードする例、およびコンテンツアイテムをオンプレミスブロックサーバまたはオフプレミスブロックサーバからダウンロードする例で説明される。
3.1コンテンツアイテムのアップロード

0048

図2を参照すると、本発明のいくつかの例示的な実施の形態に係る、新たなまたは変更されたコンテンツアイテムをパーソナル計算デバイス110−1から「ターゲット」ブロックサーバ(例えば、オンプレミスブロックサーバ120またはオフプレミスブロックサーバ130)へアップロードするためのプロセス200を説明するフロー図である。以下にステップ図2に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。

0049

ステップ202で、ユーザ102−1はパーソナル計算デバイス110−1のローカルストレージ112−1において「新たな」コンテンツアイテムを追加するか変更する。例えば、ユーザ102−1はローカルストレージ112−1においてファイルを生成するか変更し、またはローカルストレージ112−1においてファイルをコピーするかダウンロードするか編集する。追加または変更されたコンテンツアイテムは、追加や変更がコンテンツアイテムの「新たな」バージョンを生み出すという意味で、「新しい」ものとされてもよい。追加の場合、新たなバージョンはコンテンツアイテムの最初または初期バージョンであってもよい。変更の場合、新たなバージョンはコンテンツアイテムの既存バージョンに基づいてもよい。以降、「新たな」コンテンツアイテムと称する。そのような称呼は、コンテンツアイテムの最初のバージョンの生成やコンテンツアイテムの既存バージョンの変更から生じるコンテンツアイテムの新しいバージョンを包含すべきものである。

0050

ステップ204で、パーソナル計算デバイス110−1のコンテンツアイテム同期エージェント114−1は、ローカルストレージ112−1内の新たなコンテンツアイテムを検出する。例えば、コンテンツアイテム同期エージェント114−1はパーソナル計算デバイス110−1のオペレーティングシステムによって提供されるアプリケーションプログラミングインタフェースAPI)を用いて、ローカルストレージ112−1のファイルシステムに対する変更を監視してもよく、またはそれについて通知を受けてもよい。ファイルシステムに新たなファイルが追加されたりファイルシステムの既存ファイルが変更または削除された場合のようにファイルシステムに対する変更がなされた場合、オペレーティングシステムはAPIを介してコンテンツアイテム同期エージェント114−1に通知してもよい。

0051

ステップ206で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれを決定する。本明細書において、「コンテンツアイテム名前空間」は総じて、オンラインコンテンツ管理サービスの管理下にあり、かつ、オンラインコンテンツ管理サービスにより維持されているユーザアカウントおよびコンテンツアイテム名前空間メタデータにしたがいひとつ以上のユーザがアクセスを有するひとつ以上のコンテンツアイテムの集合を指す。特定のコンテンツアイテムが所属するコンテンツアイテム名前空間を、本明細書において、特定のコンテンツアイテムの「所属(owning)」コンテンツアイテム名前空間と称す場合がある。コンテンツアイテム同期エージェントがコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれをどのように決定するかを説明する前に、メタデータプレーン180に保持されるユーザアカウントおよびコンテンツアイテム名前空間メタデータのある背景が提供される。
3.1.1 ユーザアカウント及びコンテンツアイテム名前空間のメタデータ

0052

図2に戻る前に図3を少し見ると、図3は、メタデータプレーン180に格納されるユーザアカウントとコンテンツアイテム名前空間メタデータ300とを表す。特に、メタデータプレーン180は、オンラインコンテンツ管理サービスに保持される1つ以上のユーザアカウントに対応する、ユーザアカウントレコード310を格納し得る。いくつかの実施例では、メタデータプレーン180は数百、数千、数百万又はそれ以上のユーザアカウントレコード310を格納する。他の情報のうち、ユーザアカウントレコード310は、ユーザアカウント識別子312と1つ以上の認証済コンテンツアイテム名前空間識別子314とを有し得る。

0053

ユーザアカウントレコード310のユーザアカウント識別子312は、メタデータプレーン180のユーザアカウントレコード310を識別する。いくつかの実施例では、ユーザアカウント識別子312は128ビットの値である。特別なセキュリティのため、ユーザアカウントレコード310のユーザアカウント識別子312は、時々と変更(例えば循環)されてもよい。従って、ユーザアカウントレコード310のユーザアカウント識別子314は、ユーザアカウントレコード310の存続期間に渡って変化してよい。しかしながら、ユーザアカウント識別子312が時々変更されることを要求するものではなく、ユーザアカウントレコード310は、ユーザアカウントの存続に対して同一のユーザアカウント識別子312を有しても良い。

0054

ユーザアカウントレコード310の認証済コンテンツアイテム識別子314は、ユーザアカウントレコード310のユーザアカウント識別子312を所有するユーザがアクセスする認証を受けた、コンテンツアイテム名前空間を識別する。従って、オンラインコンテンツ管理サービスにユーザアカウントを保持するユーザは、ユーザアカウントに関連付けられた1つ以上のコンテンツアイテム名前空間へのアクセスを有し得る。更に、複数のユーザは、同一のコンテンツアイテム名前空間へのアクセスを有してもよい。そのようなコンテンツアイテム名前空間はしばしば「共有」コンテンツアイテム名前空間、或いはより口語的に「共有フォルダ」として参照され、これは、コンテンツアイテム名前空間が2以上のユーザアカウントによってアクセス可能であることによる。しかしながら、コンテンツアイテム名前空間を単一のユーザアカウントによってのみアクセス可能にすることも可能である。

0055

ユーザは、ユーザアカウント識別子312に関連付けられる有効な認証クレデンシャル(例えば、有効なユーザ名とパスワード)を提供することにより、ユーザアカウント識別子312の所有を得ることができる。例えば、ユーザは、ウェブサイト170によってパーソナル計算デバイスに供給されるウェブページを介して、ウェブサイト170に認証クレデンシャルを提供してもよい。ユーザによって提供される認証クレデンシャルの有効性は、オンラインコンテンツ管理サービス又は第三者認証サービス又は他の識別プロバイダによって確認されてもよい。

0056

ひとたび認証クレデンシャルが確認されると、ユーザアカウント識別子312はユーザのパーソナル計算デバイスに提供され、例えばローカルストレージ内ローカルに格納される。ローカルに格納される場合、ユーザアカウント識別子312は特別なセキュリティのために暗号化されてよい。パーソナル計算デバイスにおけるコンテンツアイテム同期エージェントと他のアプリケーション(例えば、ウェブブラウザアプリケーション)は、様々なサーバ120、130、140、150及び170へ送信されるネットワーク要求内に、ローカルに格納されたユーザアカウント識別子312を含めてもよく、これによって、要求を行う特定のユーザアカウントを識別する。
3.1.2 コンテンツアイテム名前空間のマウント情報

0057

図2戻り、ステップ206で、コンテンツアイテム同期エージェント114−1は、ユーザアカウントレコード310の情報へのローカルアクセスを有してもよい。例えば、ユーザ102−1が、ユーザアカウントレコード310のユーザアカウント識別子312に関連付けられた有効な認証クレデンシャルを提供した後には、ユーザアカウントレコード310の情報が、パーソナル計算デバイス110−1へ(例えばメタデータサーバ150又はウェブサイト170から)ダウンロードされ、ローカルストレージ112−1に格納されてよい。ここで、ローカルストレージ112−1は、コンテンツアイテム同期エージェント114−1がローカルにアクセス可能である。このようなダウンロードされた情報は、ユーザアカウント識別子312と、ユーザアカウントレコード310の認証済コンテンツアイテム名前空間識別子314とを含んでよい。ローカルストレージ112−1に格納された場合、ダウンロードされた情報は追加セキュリティのために暗号化されてよい。

0058

いくつかの実施例によれば、コンテンツアイテム同期エージェント114−1による、ステップ202で追加または変更された新たなコンテンツアイテムの所属コンテンツアイテム名前空間の判定は、ローカルストレージ112−1の階層的ファイルシステムにおける新たなコンテンツアイテムへのファイルシステムパスに基づく。特に、コンテンツアイテム同期エージェント114−1は、コンテンツアイテム名前空間マウント情報へのローカルアクセスを有してもよい。コンテンツアイテム名前空間マウント情報は、ファイルシステムに「マウントされた」1つ以上の認証済コンテンツアイテム名前空間のそれぞれに対して、コンテンツアイテム名前空間「マウントポイント」フォルダへのファイルシステムパスを識別してもよい。ここで、コンテンツアイテム名前空間「マウントポイント」フォルダは、認証済コンテンツアイテム名前空間がマウントされる。従って、認証済コンテンツアイテム名前空間は、パーソナル計算デバイスのファイルシステム内に、コンテンツアイテム名前空間マウントポイントフォルダが認証済コンテンツアイテム名前空間に対して存在する場合、パーソナル計算デバイスに「マウントされた」ものとして考慮されてよい。コンテンツアイテム名前空間に対するコンテンツアイテム名前空間マウントポイントフォルダが、コンテンツアイテム名前空間がマウントされる全てのパーソナル計算デバイスにおいて同一であることを要求するものではなく、同一のコンテンツアイテム名前空間が、異なるパーソナル計算デバイスにおける異なるコンテンツアイテム名前空間マウントポイントフォルダにマウントされる、ことに注意すべきである。例えば、パーソナル計算デバイス110−1に格納されたコンテンツアイテム名前空間マウント情報は以下を示しうる。

0059

識別子「ABC123」を有するコンテンツアイテム名前空間が「C:¥MyWorkContentitems¥」にマウントされること。

0060

識別子「DEF456」を有する他のコンテンツアイテム名前空間が「C:¥MyWorkContentItems¥MySharedItems¥」にマウントされること。

0061

識別子「GHI789」を有する他のコンテンツアイテム名前空間が「C:¥MyContentItems¥MyPersonalContentItems¥」にマウントされること。

0062

いくつかの実施例によれば、コンテンツアイテム同期エージェント114−1は、新たなコンテンツアイテムが属す最もネストされたコンテンツアイテム名前空間マウントポイントフォルダのファイルシステムパスを、ローカルに格納されたコンテンツアイテム名前空間マウント情報内で識別することにより、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。上記例に続いて、新たなコンテンツアイテムへの階層的ファイルシステム内のファイルシステムパスが「C:¥MyContentItems¥MyPersonalContentItems¥Photos¥photo_of_me_hiking.jpg」である場合、コンテンツアイテム同期エージェント114−1は、新たなコンテンツアイテムがコンテンツアイテム名前空間「GHI789」に属すと判定する。一方、新たなコンテンツアイテムへのファイルシステムパスが「C:¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc」である場合、そのときは、コンテンツアイテム同期114−1は、新たなコンテンツアイテムが、コンテンツアイテム名前空間「ABC123」とは対照的に、コンテンツアイテム名前空間「DEF456」に属すと判定する。これは、フォルダ「C:¥MyWorkContentItems¥MySharedItems¥」がフォルダ「C:¥MyWorkContentItems¥」内でネストされていることによる。

0063

上記例において、コンテンツアイテム名前空間マウント情報が完全に要件を満たした又は絶対的なファイルシステムパスを含んでいたが、コンテンツアイテム名前空間マウント情報は、他の実施例において相対的なファイルシステムパスを含んでもよい。他のこれらの実施例では、パーソナル計算デバイスにおけるコンテンツアイテム同期エージェントは、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を、新たなコンテンツアイテムへの相対的なファイルシステムパスと、パーソナル計算デバイスにおいて全てのコンテンツアイテム名前空間マウントポイントフォルダに共通な親のマウントポイントフォルダへのファイルシステムパスとに基づいて判定することができる。例えば、パーソナル計算デバイス110−1におけるコンテンツアイテム名前空間マウント情報は以下を示しうる。

0064

識別子「ABC123」を有するコンテンツアイテム名前空間が「¥MyWorkContentitems¥」にマウントされること。

0065

識別子「DEF456」を有する他のコンテンツアイテム名前空間が「¥MyWorkContentItems¥MySharedItems¥」にマウントされること。

0066

識別子「GHI789」を有するコンテンツアイテム名前空間が「¥MyPersonalContentItems¥」にマウントされること。

0067

上記例では、親のマウントポイントフォルダは、例えば、「C:¥MyContentItems¥」であってよい。この場合、新たなコンテンツアイテムへの完全に要件を満たす又は絶対システムファイルパスが「C:¥MyContentItems¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc」である場合、コンテンツアイテム同期エージェント114−1は、フォルダ「¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc’」の新たなコンテンツアイテムへの相対的ファイルシステムパスに基づいて、新たなコンテンツアイテムがコンテンツアイテム名前空間「DEF456」に属すと決定する。

0068

ステップ208で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。特に、新たなコンテンツアイテムは、ひとつ以上のコンテンツアイテムブロックに断片化され、新たなコンテンツアイテムの暗号化ハッシュが計算される。

0069

追加されたコンテンツアイテムはコンテンツアイテムの最初のバージョンであるため、コンテンツアイテムが変更された場合よりも、コンテンツアイテムが追加された場合において、新たなコンテンツアイテムの全てのコンテンツアイテムブロックが新しいものである蓋然性がより高い。コンテンツアイテムが変更された場合、コンテンツアイテムの全てのまたは全部よりは少ない数のコンテンツアイテムブロックが新しいものである可能性がある。追加であれ変更であれいずれの場合においても、各コンテンツアイテムブロックは、最大の所定のサイズ(例えば4MB)を有してよい。しかしながら、新たなコンテンツアイテムのトータルサイズが最大の所定のサイズのちょうど複数個分でない場合、最後(又は最初)のコンテンツアイテムブロック又は新たなコンテンツアイテムのコンテンツアイテムブロックのみが、当該最大の所定のサイズより小さいサイズになり得る。

0070

暗号化ハッシュ関数は、例えば、コンテンツアイテムブロックに適用した場合にほぼ固有固定サイズハッシュ(例えば256ビットハッシュ)を生成するセキュアハッシュアルゴリズム(SHA)であり得る。他のハッシュ関数が使用されてもよく、実施例はSHA−256ハッシュ関数に限定されない。しかしながら、一般に、ハッシュ関数は、管理下における所与の固有のコンテンツアイテムブロックの数において衝突が稀であるように、十分なビット深度(例えば256ビット又はそれ以上)であるべきである。従って、新たなコンテンツアイテムは、新たなコンテンツアイテムを構成するコンテンツアイテムブロックから計算される1つ以上のコンテンツアイテムブロックハッシュのリストとして表され得る。この種のリストはまた、以降において一般に「コンテンツアイテムブロックリスト」として参照され、或いは、特定のコンテンツアイテムに対するコンテンツアイテムブロックリストを参照する場合、「特定のコンテンツアイテムのブロックリスト」として参照される。変更されたコンテンツアイテムについて、コンテンツアイテム同期エージェントは、変更されたコンテンツアイテムのどのコンテンツアイテムブロックが、コンテンツアイテムの以前のバージョンに対して変更され又は新しいのかを効率的に判定するために、ローリングチェックサムアプローチ(rollingchecksumapproach)を用いてよい。この場合、コンテンツアイテムブロックハッシュは、新規又は変更されたコンテンツアイテムブロックに対してのみ計算され、変更されていないブロックに対して以前に計算されたコンテンツアイテムブロックハッシュは、変更されたコンテンツアイテムのブロックリストにおいて再利用される。

0071

ステップ210で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックをアップロードする先の「ターゲット」コンテンツアイテムブロックサーバを決定する。いくつかの例示的な実施の形態によると、この決定は新たなコンテンツアイテムの所属コンテンツアイテム名前空間に基づきなされる。この決定をなすために、コンテンツアイテム同期エージェント114−1は、パーソナル計算デバイス110−1に設けられた認証コンテンツアイテム名前空間に対する名前空間対ブロックサーバ割り当てへのアクセスを有してもよい。名前空間対ブロックサーバ割り当ては、パーソナル計算デバイスにローカルで保持されてもよい。例えば、名前空間対ブロックサーバ割り当てはローカルストレージ112−1に保持されてもよい。名前空間対ブロックサーバ割り当ては、パーソナル計算デバイスに設けられた認証コンテンツアイテム名前空間の全てまたはいくつかについて、コンテンツアイテム名前空間が割り当てられているブロックサーバを指定することができる。例えば、パーソナル計算デバイス110−1における名前空間対ブロックサーバ割り当ては以下の情報を適切なデータフォーマットで示してもよい:

0072

コンテンツアイテム名前空間識別子「ABC123」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「JKL101」を伴うブロックサーバに割り当てられる。

0073

コンテンツアイテム名前空間識別子「DEF456」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「JKL101」を伴うブロックサーバに割り当てられる。

0074

コンテンツアイテム名前空間識別子「GHI789」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「MNO112」を伴うブロックサーバに割り当てられる。

0075

例えば、オンプレミスブロックサーバ120はブロックサーバ識別子「JKL101」を伴うブロックサーバであり、オフプレミスブロックサーバ130はブロックサーバ識別子「MNO112」を伴うブロックサーバであってもよい。ブロックサーバ識別子はブロックサーバを特定する。ブロックサーバ識別子はブロックサーバのホスト名(例えば、解決可能DNSホスト名)やネットワークアドレス(例えば、IPv4やIPv6ネットワークアドレス)であってもよいし、それに関連付け(例えば、マッピング設定ファイル連想配列等を介して)られてもよい。コンテンツアイテム同期エージェントはブロックサーバ識別子を用いることで、ブロックサーバとのネットワーク接続を確立することができる。あるいはまた、ブロックサーバ識別子自身がブロックサーバのホスト名やネットワークアドレスであってもよいし、またはそれを含んでもよい。

0076

本明細書で提供される例示的な識別子が、それは例示的なブロックサーバ識別子および例示的なコンテンツアイテム名前空間識別子を含むが、単に説明を目的として提供されているのであって発明の実装において用いられうる識別子のタイプやフォーマットを限定することを意図したものではないことは、理解されなければならない。

0077

パーソナル計算デバイスに保持される名前空間対ブロックサーバ割り当てはメタデータプレーン180に保持される情報に基づいてもよい。特に、メタデータプレーンは、オンラインコンテンツ管理サービスの管理下にあるコンテンツアイテム名前空間の全てまたはいくつかについての名前空間対ブロックサーバ割り当てを保持してもよい。これらの割り当ては、ユーザがウェブサイト170にアクセスすることによって(例えば、パーソナル計算デバイスにおけるウェブブラウザまたはモバイルアプリケーションを用いることによって)、メタデータプレーン180内に生成されてもよい。例えば、ウェブサイト170にアクセスすることによって、特定のコンテンツアイテム名前空間への認証アクセスを有するユーザは、特定のコンテンツアイテム名前空間を特定のブロックサーバ(例えば、オンプレミスブロックサーバ120やオフプレミスブロックサーバ130)に割り当てることができる。例えば、ユーザは特定のコンテンツアイテム名前空間のアドミニストレータであってもよいし、そうでなければ、特定のコンテンツアイテム名前空間は、ユーザが特定のコンテンツアイテム名前空間をブロックサーバに割り当てることを可能とする適切なパーミッションを伴うユーザのアカウントレコード310に関連付けられてもよい。

0078

パーソナル計算デバイスのコンテンツアイテム同期エージェントは名前空間対ブロックサーバ割り当てを、メタデータサーバ150またはオンラインコンテンツ管理サーバの他のサーバ(例えば、ウェブサイト170)からダウンロードしてもよい。例えば、コンテンツアイテム同期エージェント114−1はネットワーク要求でユーザアカウント識別子312をメタデータサーバ150に提供してもよい。メタデータサーバ150は次いで要求内で受信したユーザアカウント識別子312によって特定されるユーザアカウントレコード310を参照し、そのユーザアカウントによるアクセスが認証されている認証コンテンツアイテム名前空間の識別子314を決定してもよい。その識別子314を用いて、メタデータサーバ150はメタデータプレーン180に保持される名前空間対ブロックサーバ割り当てを参照し、認証コンテンツアイテム名前空間の割り当てを決定してもよい。その割り当ては次いでコンテンツアイテム同期エージェント114−1に返され、該エージェントはその割り当てを後のアクセスのためにローカルで(例えば、ローカルストレージ112−1に)保持してもよい。

0079

ある例示的な実施の形態では、名前空間対ブロックサーバ割り当ては最初メタデータプレーン180で生成され、次いでメタデータサーバ150またはウェブサイト170によって、コンテンツアイテム名前空間が設けられているパーソナル計算デバイスのコンテンツアイテム同期エージェントに提供されるが、代わりに、名前空間対ブロックサーバ割り当ては最初パーソナル計算デバイス(例えば、パーソナル計算デバイスのコンテンツアイテム同期エージェントによって駆動されるユーザインタフェースを通じて)で生成され、次いでメタデータプレーン180への格納のためにメタデータサーバ150またはウェブサイト170にアップロードされてもよい。したがって、名前空間対ブロックサーバ割り当てがウェブサイト170を通じて生成されるか、または最初メタデータプレーン180で生成されるかについて、なんの制約もない。

0080

ある例示的な実施の形態では、メタデータプレーン180はオンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間についての名前空間対ブロックサーバ割り当てを保持するが、他の例示的な実施の形態では、メタデータプレーン180は管理下にある全てのコンテンツアイテム名前空間の部分集合のみについての名前空間対ブロックサーバ割り当てを保持する。例えば、メタデータプレーン180は、オンプレミスブロックサーバ(例えば、120)に割り当てられた管理下のコンテンツアイテム名前空間のみについての名前空間対ブロックサーバ割り当てを保持し、オフプレミスブロックサーバ130に割り当てられたコンテンツアイテム名前空間についての名前空間対ブロックサーバ割り当ては保持しなくてもよい。したがって、これらの実施の形態では、メタデータプレーン180において、または、パーソナル計算デバイスにおいて、特定のコンテンツアイテム名前空間についての明示的な名前空間対ブロックサーバ割り当てが存在しない場合、その特定のコンテンツアイテム名前空間はオフプレミスブロックサーバ130に割り当てられていると仮定できる。

0081

例えば、ステップ202で追加された新たなコンテンツアイテムがコンテンツアイテム名前空間識別子「DEF456」を伴う認証コンテンツアイテム名前空間に属し、パーソナル計算デバイス110−1に保持される名前空間対ブロックサーバ割り当てが、コンテンツアイテム名前空間「DEF456」がブロックサーバ識別子「JKL101」を伴うオンプレミスブロックサーバ120に割り当てられていることを指定する場合、ステップ210で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムをオンプレミスブロックサーバ120にアップロードすると決める。以降、図2に関して、所属コンテンツアイテム名前空間が割り当てられているブロックサーバを「ターゲット」ブロックサーバと称す。一般に、所属コンテンツアイテム名前空間が割り当てられているブロックサーバに依存して、ターゲットブロックサーバはオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130でありうる。

0082

プロセス200のこの時点で、コンテンツアイテム同期エージェント114−1は、所属コンテンツアイテム名前空間の識別子(例えば「DEF456」)を決定し(ステップ206)、新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出し(ステップ208)、ターゲットブロックサーバの識別子(例えば、「JKL101」)を決定(ステップ210)した。今や、ステップ212で、コンテンツアイテム同期エージェント114−1は「委託(commit)」要求をこの情報を提供するメタデータサーバ150に送信する。特に、委託要求は、ユーザアカウント識別子および/またはパーソナル計算デバイス110−1の識別子に加えて、以下の情報の全て、またはその下位集合あるいは上位集合を含んでもよい。

0083

所属コンテンツアイテム名前空間の識別子(例えば、「DEF456」);

0084

ターゲットブロックサーバの識別子(例えば、「JKL101」);

0085

所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダに対する新たなコンテンツアイテムの相対ファイルステムパス。例えば、パーソナル計算デバイス110−1における新たなコンテンツアイテムの完全に要件を満たす又は絶対ファイルシステムパスが「C:¥MyWorkContentItems¥MySharedItems¥Presentations¥sales_preso.doc」である場合、かつ、所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダへのファイルシステムパスが「C:¥MyWorkContentItems¥MySharedItems¥」である場合、委託要求に含まれる相対ファイルシステムパスは「¥Presentations¥sales_preso.doc」となろう。

0086

新規コンテンツアイテムに対するコンテンツアイテムブロックリスト。

0087

さらなる安全性のため、委託要求は、トランスポートレイヤセキュリティ(TLS)やセキュアソケットレイヤ(SSL)で保護されたネットワーク接続などの暗号化ネットワーク接続を介して、LAN160およびWAN190を通じて送られてもよい。

0088

ステップ214で、メタデータサーバ150はコンテンツアイテム同期エージェント114−1から受信した委託要求を認証する。この認証は、委託要求で指定される所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子が、委託要求内のユーザアカウント識別子に対応するメタデータプレーン180内のユーザアカウントレコード310の認証コンテンツアイテム名前空間識別子314のうちのひとつであるか検証することを含んでもよい。そうでなければ、メタデータサーバ150は委託要求を拒否し、コンテンツアイテム同期エージェント114−1に適切なエラーメッセージを返してもよい。

0089

委託要求を認証することの一部として、メタデータサーバ150は、委託要求内で指定されるターゲットブロックサーバが所属コンテンツアイテム名前空間が現在割り当てられているブロックサーバであるかを検証してもよい。この検証は、メタデータプレーン180内の名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。所属コンテンツアイテム名前空間がターゲットブロックサーバに現在割り当てられていない場合、メタデータサーバ150は委託要求を拒否し、コンテンツアイテム同期エージェント114−1に適切なエラーメッセージを返してもよい。

0090

しかしながら、ある例示的な実施の形態では、所属コンテンツアイテム名前空間が委託要求内で指定されるターゲットブロックサーバに現在割り当てられていない場合にエラーメッセージを返す代わりに、メタデータサーバ150は、メタデータプレーン180内の名前空間対ブロックサーバ割り当てにしたがい、コンテンツアイテム名前空間が現在割り当てられているブロックサーバの識別子を返す。そうすることによって、コンテンツアイテム同期エージェント114−1は委託要求を再試行し、その回では新たなターゲットブロックサーバを指定することができる。これはまた、メタデータサーバ150が、コンテンツアイテム同期エージェント114−1に、コンテンツアイテム名前空間のブロックサーバへの割り当てが変わったときにそのことを知らせるためのメカニズムを提供する。これはまた、コンテンツアイテム同期エージェント114−1が、コンテンツアイテム名前空間のブロックサーバへの新たな割り当てを知らされたときに、そのローカルの名前空間対ブロックサーバ割り当てを更新することを可能とする。

0091

ステップ216で、委託要求が認証された前提で、メタデータサーバ150は、委託要求内の新たなコンテンツアイテムのコンテンツアイテムブロックリストに少なくとも部分的に基づいて、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれがまだターゲットブロックサーバに保持されていないかを決定する。これを行うために、メタデータサーバ150はメタデータプレーン180内のターゲットブロックサーバのコンテンツアイテムブロックリストを参照してもよい。ブロックサーバのコンテンツアイテムブロックリスト、または単に「ブロックリスト」、は、コンテンツアイテムブロックのコンテンツアイテムブロックハッシュによって、特定のブロックサーバに保持されるコンテンツアイテムブロックを特定する。コンテンツアイテムブロックが格納される先の各オンプレミスブロックサーバ(例えば、120)について、メタデータプレーン180内にブロックサーバブロックリストがあってもよい。オフプレミスブロックサーバ130について、メタデータプレーン180内にブロックサーバブロックリストがあってもよい。したがって、メタデータプレーン180には何百何千またはそれ以上のブロックサーバブロックリストが格納されうる。本明細書においてブロックサーバブロック「リスト」と称されてはいるが、ブロックサーバブロックリストのコンテンツアイテムブロックハッシュはリストデータ構造で、またはリストデータ構造以外のデータ構造で、保持されてもよい。例えば、ブロックサーバブロックリストはBツリーデータ構造または他のツリーベースのデータ構造として実装されてもよい。さらに、ブロックサーバブロックリストが複数のデータ構造により実装されることもまた可能である。例えば、第1データ構造はブロックサーバブロックリストにおいて所与のコンテンツアイテムブロックハッシュを探すのに最適化されていてもよく、第2データ構造はブロックサーバブロックリストに新たなコンテンツアイテムブロックハッシュを追加するのに最適化されていてもよい。

0092

新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれがまだターゲットブロックサーバに保持されていないかを決定するために、メタデータサーバ150はメタデータプレーン180内のターゲットブロックサーバのブロックリストを参照する。メタデータサーバ150は、ターゲットブロックサーバのブロックサーバ識別子に基づいて、メタデータプレーン180においてターゲットブロックサーバのブロックリストを特定してもよい。委託要求における新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかの各コンテンツアイテムブロックハッシュについて、メタデータサーバ150は、そのコンテンツアイテムブロックハッシュがターゲットブロックサーバのブロックリストにあるか否かを判定する。もしなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックがターゲットブロックサーバから欠落していると決定する。そうでなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックがターゲットブロックサーバに既に保持されていると決定する。

0093

ステップ218で、メタデータサーバ150は「必要コンテンツアイテムブロックリスト」応答で第1委託要求に応答する。必要コンテンツアイテムブロックリスト応答は、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュを含み、そのコンテンツアイテムブロックはステップ216においてメタデータサーバ150がターゲットブロックサーバのブロックリストから欠落していると決定したものである。したがって、必要コンテンツアイテムブロックリスト応答は、ターゲットブロックサーバにおいてどのコンテンツアイテムブロックが欠落しているかに依存して、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュの全てまたは部分集合を指定してもよい。

0094

ステップ220で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの欠落しているコンテンツアイテムブロックをターゲットブロックサーバに格納する。これは、コンテンツアイテム同期エージェント114−1がターゲットブロックサーバにひとつ以上の「格納」要求を行うことを含んでもよい。そのような格納要求のそれぞれは、ひとつ以上の欠落しているコンテンツアイテムブロックと、そのひとつ以上の欠落しているコンテンツアイテムブロックのそれぞれのコンテンツアイテムブロックハッシュと、を含んでもよい。コンテンツアイテム同期エージェント114−1は、欠落しているコンテンツアイテムブロックのトータルサイズがかなり大きい場合、複数の格納要求を行ってもよい。例えば、ターゲットブロックサーバは、単一の格納要求でアップロードできるコンテンツアイテムブロックデータの量を8メガバイト(MB)までのみ(例えば、ブロック当たり4MBのコンテンツアイテムブロックを二つまで)許すようにしてもよい。この場合、新たなコンテンツアイテムのサイズが16MBである場合、例えば、少なくとも二つの格納要求が必要となろう。

0095

ある例示的な実施の形態によると、ひとつの格納要求の中に欠落しているコンテンツアイテムブロック全体を含める代わりに、ターゲットブロックサーバに既に格納されているコンテンツアイテムブロックと欠落しているコンテンツアイテムブロックとの間の差分のみを格納要求に含めてもよい。これは、ネットワーク帯域幅や他の計算リソース消費の節約に資する。差分は、既知のrsyncアルゴリズムにより用いられるデルタ符号化アプローチなどのデルタ符号化アプローチにしたがい計算されてもよい。したがって、本明細書におけるコンテンツアイテムブロックをブロックサーバにアップロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバにアップロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとのデルタだけをブロックサーバにアップロードすることと、の両方を包含する。デルタは二つのコンテンツアイテムブロックの間の実際のデータ差分であってもよいし、実際のデータ差分の表現(符号化)であってもよいし、あるいは実際のデータ差分と実際のデータ差分の表現(符号化)との組み合わせであってもよい。

0096

ステップ222で、ターゲットブロックサーバ(例えば、120や130)のブロックサービス(例えば、122や132)は欠落しているコンテンツアイテムブロックをターゲットブロックサーバのブロックストレージ(例えば、124や134)に格納する。ターゲットブロックサーバのブロックストレージの実装は、ターゲットブロックサーバがオンプレミスブロックサーバ(例えば、120)であるかまたはオフプレミスブロックサーバ130であるかに依存して変わりうる。

0097

ある例示的な実施の形態では、オンプレミスブロックサーバは、オンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間の部分集合に属するコンテンツアイテムのコンテンツアイテムブロックを格納するのに十分なデータストレージ容量を有してもよい。部分集合は、全てが同じ機関や同じ企業の従業員や同じ学校の生徒などに属するコンテンツアイテム名前空間の集合であってもよい。一方で、オフプレミスブロックサーバ130は、オンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間のコンテンツアイテムブロックを格納するのに十分なデータストレージ容量を有してもよい。データストレージ要件の差違が、オンプレミスブロックストレージ(例えば、124)において、オフプレミスブロックストレージ134とは異なる実装を促してもよい。例えば、オンプレミスブロックストレージは、1テラバイトから数テラバイトまでのデータストレージもしくはそれ以上を提供するひとつまたは数台の機器収納されたストレージデバイス(例えば、ディスクドライブ)のアレイとして実装されてもよい。一方、オフプレミスブロックストレージ134は、数ゼタバイトまでのデータストレージまたはそれ以上を提供するひとつ以上のデータセンタ施設に収納された分散計算システムとして実装されてもよい。

0098

ステップ224で、ターゲットブロックサーバは、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン180内のターゲットブロックサーバのブロックサーバブロックリストを更新する。更新の態様は、ターゲットブロックサーバがオンプレミスブロックサーバ120であるかまたはオフプレミスブロックサーバ130であるかに依存して変わりうる。

0099

オフプレミスブロックサーバ130の場合、ブロックストレージ134への格納が成功したアップロードされたコンテンツアイテムブロックのそれぞれについて、ブロックサービス132は、メタデータプレーン180内のオフプレミスブロックサーバ130についてのブロックリストを更新する。そのような更新は、オフプレミスブロックサーバ130のブロックリストに、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュを追加することを含んでもよい。アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュでブロックリストを更新する前に、ブロックサービス132は、自身でアップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュを算出し、それをコンテンツアイテム同期エージェントからの格納要求内で受信したアップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュと比べてもよい。コンテンツアイテムブロックハッシュが一致しない場合、ブロックサービス132は格納要求を拒否し、アップロードされたコンテンツアイテムブロックをブロックストレージ134に格納せず、メタデータプレーン180内のオフプレミスブロックサーバ130のブロックリストを更新しなくてもよい。ある例示的な実施の形態によると、ブロックサービス132は、格納要求で指定されたアップロードされたコンテンツアイテムブロックをブロックストレージ134に格納する前に、格納要求が正しいユーザアカウント識別子312を含むことを要求してもよい。

0100

オンプレミスブロックサーバ(例えば、120)の場合、オンプレミスブロックストレージ(例えば、124)への格納が成功したアップロードされたコンテンツアイテムブロックについて、オンプレミスブロックサーバのブロックサービス(例えば、122)はメタデータサーバ150に、ひとつ以上の「コンテンツアイテムブロック有り」要求を送信してもよい。ブロックサービスは、アップロードされたコンテンツアイテムブロックのそれぞれのブロックストレージへの格納が成功した後に、コンテンツアイテムブロック有り要求を送信してもよい。あるいはまた、ブロックサービスは、複数のアップロードされたコンテンツアイテムブロックのブロックストレージへの格納が成功した後に、コンテンツアイテムブロック有り要求を送信してもよい。コンテンツアイテムブロック有り要求は以下の情報の全てを含んでもよく、またはそれの上位集合または下位集合を含んでもよい:

0101

ユーザアカウント識別子312。これは、格納要求においてオンプレミスブロックサーバに対して指定されたユーザアカウント識別子312であってもよい。あるいはまた、これは、オンプレミスブロックサーバのユーザアカウントなどの他のユーザアカウントのユーザアカウント識別子312であってもよい。

0102

オンプレミスブロックサーバのブロックサーバ識別子。

0103

ブロックストレージへの格納が成功したひとつ以上のアップロードされたコンテンツアイテムブロックのひとつ以上のコンテンツアイテムブロックハッシュ。

0104

オンプレミスブロックサーバからコンテンツアイテムブロック有り要求を受信すると、メタデータサーバ150は、オンプレミスブロックサーバが、コンテンツアイテムブロック有り要求内のユーザアカウント識別子312によって特定されるユーザアカウントがアクセス可能なコンテンツアイテム名前空間314に割り当てられたブロックサーバのうちのひとつであることを検証することによって、コンテンツアイテムブロック有り要求を認証してもよい。要求が認証されると、メタデータサーバ150は、メタデータプレーン180内のオンプレミスブロックサーバのブロックリストを更新して、アップロードされたコンテンツアイテムブロックがオンプレミスブロックサーバのローカルブロックストレージに今や格納されたことを示すようにしてもよい。メタデータプレーン180内のブロックリストを更新した後、メタデータサーバ150はコンテンツアイテムブロック有り要求に対して、要求の処理が成功したと応答してもよい。

0105

この時点で、ターゲットブロックサーバがオンプレミスブロックサーバ(例えば、120)であれオフプレミスブロックサーバ130であれ、ターゲットブロックサーバにおいて欠落していた新たなコンテンツアイテムのコンテンツアイテムブロックは今やコンテンツアイテム同期エージェント114−1によってターゲットブロックサーバにアップロードされた。加えて、メタデータプレーン180内のターゲットサーバのブロックリストは、新たなコンテンツアイテムの全てのコンテンツアイテムブロックが今やターゲットブロックサーバに格納されていることを示すよう更新された。

0106

ステップ226で、コンテンツアイテム同期エージェント114−1はステップ212の委託要求を試行する。この第2委託要求は、第1委託要求で渡されたパラメータと同じパラメータを渡してもよく、それは所属コンテンツアイテム名前空間識別子とターゲットブロックサーバ識別子と新たなコンテンツアイテムに対する相対パスと新たなコンテンツアイテムのブロックリストとを含む。

0107

ステップ228で、メタデータサーバ150は、ステップ214で第1委託要求について行ったように、この第2委託要求を認証する。

0108

ステップ230で、第2委託要求が認証された前提で、メタデータサーバ150は、メタデータプレーン180内のターゲットブロックサーバのブロックリストにしたがい、新たなコンテンツアイテムのブロックリストで特定されるコンテンツアイテムブロックのなかにターゲットブロックサーバから欠落しているものがあるか否かを判定する。このとき、第1委託要求の後、欠落していたコンテンツアイテムブロックはターゲットブロックサーバにアップロードされてしまっているので、メタデータサーバ150は、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバで欠落しているものはないと判定すべきである。
3.1.3コンテンツアイテムサーバジャーナル

0109

ステップ232で、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、メタデータサーバ150は、メタデータプレーン180内のターゲットブロックサーバのコンテンツアイテムジャーナルまたは単に「サーバジャーナル」に新たなエントリを追加する。ある例示的な実施の形態によると、新たなエントリを追加することは、新たなコンテンツアイテムをオンラインコンテンツ管理サービスに「委託」する。サーバジャーナルは、特定のブロックサーバに委ねられたコンテンツアイテムのバージョンを追跡するために用いられる。オフプレミスブロックサーバ130用のサーバジャーナルおよびオンプレミスブロックサーバのそれぞれ用のサーバジャーナルが存在してもよい。したがって、メタデータプレーン180には何百何千またはそれ以上のサーバジャーナルが格納されうる。

0110

いったん図4を参照すると、それはひとつ以上のサーバジャーナルからなるサーバジャーナル410のブロック図である。サーバジャーナル410はメタデータプレーン180に保持されてもよい。サーバジャーナル410は複数のサーバジャーナルエントリ412を含む。コンテンツアイテムの新たなバージョン(新たなコンテンツアイテムの最初のバージョンを含む)のブロックサーバへのアップロードが成功し、完了すると、サーバジャーナル410に新たなサーバジャーナルエントリ412が追加(例えば、追記)される。例えば、メタデータサーバ150は、コンテンツアイテム同期エージェント114−1から第2委託要求を受信することに応じて新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、サーバジャーナル410に、新たなサーバジャーナルエントリ412を追加してもよい。サーバジャーナル410に新たなサーバジャーナルエントリ412を追加することは、新たなコンテンツアイテムをオンラインコンテンツ管理サービスに委ねる。

0111

サーバジャーナル410内の各サーバジャーナルエントリ412はコンテンツアイテムのバージョンに対応する。各サーバジャーナルエントリ412は、ブロックサーバ識別子413と、コンテンツアイテム名前空間識別子414と、パス415と、コンテンツアイテムブロックリスト416と、サーバジャーナルカーソル値417と、を含んでもよい。ブロックサーバ識別子413は、コンテンツアイテムの対応する新しいバージョンがアップロードされた先のブロックサーバを特定する。コンテンツアイテム名前空間識別子414は、コンテンツアイテムの対応する新しいバージョンが所属する先のコンテンツアイテム名前空間(すなわち、所属コンテンツアイテム名前空間)を特定する。パス415は、コンテンツアイテムの対応する新しいバージョンの、コンテンツアイテムが所属する先のコンテンツアイテム名前空間のマウントポイントに対する、相対ファイルシステムパスを指定する。コンテンツアイテムブロックリスト416は、コンテンツアイテムの対応する新しいバージョンを構成するひとつ以上のコンテンツアイテムブロックを特定するひとつ以上のコンテンツアイテムブロックハッシュを含む。

0112

サーバジャーナルエントリ412のサーバジャーナルカーソル値417はコンテンツアイテム名前空間およびブロックサーバに特有のものである。特に、メタデータサーバ150は、コンテンツアイテム名前空間とブロックサーバとの一意の組み合わせのそれぞれについて、別個のサーバジャーナルカーソルを維持してもよい。対応するコンテンツアイテム名前空間と対応するブロックサーバとに対するサーバジャーナルカーソルは、対応するコンテンツアイテム名前空間に属する新たなコンテンツアイテムの対応するブロックサーバへのアップロードが成功したときにインクリメントされてもよい。例えば、対応するコンテンツアイテム名前空間と対応するブロックサーバとに対するサーバジャーナルカーソルは単調増加する値であってもよい。

0113

例えば、コンテンツアイテム名前空間「DEF456」とブロックサーバ「JKL101」とに対する直近で追加されたサーバジャーナルエントリ412のサーバジャーナルカーソル値417が「17」である場合、ステップ232で追加される、同じコンテンツアイテム名前空間に属し同じブロックサーバにアップロードされたコンテンツアイテムの新たなバージョンの新たなサーバジャーナルエントリ412はサーバジャーナルカーソル値417として「18」を有するであろう。

0114

サーバジャーナル410は、複数のブロックサーバのサーバジャーナルを保持してもよい。特に、同じブロックサーバ識別子413を有するサーバジャーナル410内のサーバジャーナルエントリ412の全てはブロックサーバのサーバジャーナルと考えられてもよい。ある代替的な実施の形態では、メタデータプレーン180内に、各ブロックサーバについて、物理的に別個のサーバジャーナルが保持されてもよい。メタデータプレーン180の複数のサーバ計算デバイスに亘ってサーバジャーナル410をパーティション化または分割することを含む他のストレージ構成も可能である。この場合、ブロックサーバ識別子413、コンテンツアイテム名前空間識別子414、またはブロックサーバ識別子413とコンテンツアイテム名前空間識別子414との組み合わせが、パーティション化のキーまたは分割のキーとして用いられてもよい。

0115

ステップ234で、サーバジャーナル410へ新たなコンテンツアイテム113の新たなサーバジャーナルエントリ412を追加することに成功した後、メタデータサーバ150は第2委託要求に応答する。特に、メタデータサーバ150は、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したことをコンテンツアイテム同期エージェント114−1に対して示す応答を送信する。応答は、ブロックサーバ識別子413、コンテンツアイテム名前空間識別子414、または追加されたエントリ412のサーバジャーナルカーソル値417のうちのひとつ以上を含んでもよい。

0116

ステップ236で、コンテンツアイテム同期エージェント114−1は、将来の参照のため、第2委託要求に対する応答内で受信したサーバジャーナルカーソル値をローカルに(例えば、ローカルストレージ112に)格納してもよい。ローカルで格納する際、コンテンツアイテム同期114−1は、サーバジャーナルカーソル値を、サーバジャーナルカーソル値が関係する所属コンテンツアイテム名前空間識別子およびターゲットブロックサーバ識別子に関連付けてもよい。加えて、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したので、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを更新してもよい。

0117

コンテンツアイテムの委託状態インジケータは、パーソナル計算デバイスのオペレーティングシステムにより提供されるものなどのファイルシステムブラウザインタフェースにおいてコンテンツアイテムをファイルとして見るときに、ユーザに見えるものであってもよい。例えば、委託状態インジケータは、ファイルシステムブラウザやファイルシステムにおいてファイルをブラウズし検索し発見するための他のグラフィカルユーザインタフェースに表れる際、ファイル名の上やコンテンツアイテムのファイルタイプを表すアイコンの上に表示されるグラフィックであってもよい。

0118

ある例示的な実施の形態によると、コンテンツアイテムの委託状態インジケータは、少なくとも四つの状態を有してもよい:(1)未委託、(2)委託中、(3)オフプレミスブロックサーバに委託済み、および(4)オンプレミスブロックサーバに委託済み。未委託状態では、委託状態インジケータは表示されない。あるいはまた、コンテンツアイテムがどのブロックサーバにも委託されていないことを示す委託状態インジケータが表示されてもよい。委託中状態では、委託状態インジケータは、コンテンツアイテムが現在ターゲットブロックサーバに委託されようとしている途中であることを示すかそうでなければアニメ化されてもよい。例えば、委託中状態にあるとき、コンテンツアイテムのコンテンツアイテムブロックが現在ターゲットブロックサーバにアップロードされていることを示すよう、委託状態インジケータが連続ループでアニメ化されてもよい。ブロックサーバに委託されると、委託されたコンテンツアイテムの委託状態インジケータは、コンテンツアイテムがオフプレミスブロックサーバ130に委託されたかオンプレミスブロックサーバ(例えば、120)に委託されたかによって異なる外観を有してもよい。例えば、委託状態インジケータは、コンテンツアイテムがオフプレミスブロックサーバ130に委託されたかオンプレミスブロックサーバに委託されたかによって異なる色または異なる像を有してもよい。異なる外観の理由は、委託状態インジケータを見ているユーザに、コンテンツアイテムがどのブロックサーバに委託されたかを知らせるためである。

0119

ある例示的な実施の形態では、コンテンツアイテムの委託状態インジケータがそのコンテンツアイテムが委託されたことを示すために、そのコンテンツアイテムは少なくとも二つのブロックサーバに委託されなければならない。例えば、コンテンツアイテムがブロックサーバ130およびブロックサーバ120の両方に委託された場合にのみ、または、コンテンツアイテムが少なくとも二つのオンプレミスブロックサーバに委託された場合にのみ、委託済みの委託状態インジケータ(例えば、緑色のチェックマークグラフィック)が表示されてもよい。ある例示的な実施の形態によると、ブロックサーバに委託されたとは、少なくとも、サーバコンテンツアイテムジャーナル(例えば、410)へのエントリ(例えば、412−2)の追加を指し、これは、コンテンツアイテムの全てのコンテンツアイテムブロック(例えば、ジャーナルエントリ412−2のコンテンツアイテムブロックリスト416によって指定されるもの)が委託の時点でブロックサーバに格納されたことを示す。このコンテキストで、オンプレミスブロックサーバへ委託済み状態とオフプレミスブロックサーバへ委託済み状態とで委託状態インジケータが別個とならなくてもよい。代わりに、コンテンツアイテムが少なくとも二つのブロックサーバに委託されたときのコンテンツアイテムの委託済み状態を表す単一の委託状態インジケータ(例えば、緑色のチェックマーク)があってもよい。

0120

ある例示的な実施の形態では、コンテンツアイテムが委託済みとみなされる(したがって、そのことを示す委託状態インジケータで表示される)ためにそのコンテンツアイテムが委託されなければならないブロックサーバの数(例えば、1、2、3等)またはそのようなブロックサーバがどれであるかは、コンテンツアイテム名前空間ごとベースで設定される。例えば、コンテンツアイテム名前空間識別子と関連付けて、コンテンツアイテムが委託済みとみなされるためにそのコンテンツアイテム名前空間に属するコンテンツアイテムが委託されなければならないブロックサーバの数またはそのようなブロックサーバがどれであるかを指定する(例えば、ブロックサーバ識別子によって)メタデータを保持してもよい。
3.1.4 例示的なアップロードインタラクション

0121

図5を参照すると、本発明のある例示的な実施の形態に係る、図2のプロセス200が行われオフプレミスブロックサーバ130に新たなコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス110−1とメタデータサーバ150とオフプレミスブロックサーバ130とメタデータプレーン180との間の種々のインタラクションを示すインタラクション図500である。

0122

ステップ202で、ユーザ102−1はパーソナル計算デバイス110−1でコンテンツアイテムを生成または変更する。ステップ204で、パーソナル計算デバイスのコンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムを検出する。ステップ206で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ208で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ210で、コンテンツアイテム同期エージェント114−1はオフプレミスブロックサーバ130がターゲットブロックサーバであることを決定する。ステップ212で、コンテンツアイテム同期エージェント114−1は第1委託要求をメタデータサーバ150に送信する。

0123

ステップ214で、メタデータサーバ150は第1委託要求を認証する。ステップ216で、メタデータサーバ150はオフプレミスブロックサーバ130で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ218で、メタデータサーバ150は欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第1委託要求に応答する。

0124

ステップ220で、コンテンツアイテム同期エージェント114−1は欠落しているコンテンツアイテムブロックをオフプレミスブロックサーバ130にアップロードする。

0125

ステップ222で、オフプレミスブロックサーバ130はアップロードされたコンテンツアイテムブロックをブロックストレージ134に格納する。ステップ224で、オフプレミスブロックサーバ130は、オフプレミスブロックサーバ130のメタデータプレーン180のブロックリストを、欠落しているコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。

0126

ステップ226で、コンテンツアイテム同期エージェント114−1は第2委託要求を送信する。

0127

ステップ228で、メタデータサーバ150は第2委託要求を認証する。ステップ230で、メタデータサーバ150はオフプレミスブロックサーバ130で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ232で、欠落しているコンテンツアイテムブロックがないと判定されると、メタデータサーバ150は新たなコンテンツアイテムのサーバジャーナル410に新たなサーバジャーナルエントリ412を追加する。新たなサーバジャーナルエントリ412は所属コンテンツアイテム名前空間とオフプレミスブロックサーバ130とを特定する。ステップ234で、メタデータサーバ150は委託が成功したことの確認で第2委託要求に応答する。その応答は、所属コンテンツアイテム名前空間とオフプレミスブロックサーバ130とに専用のサーバジャーナルカーソル値417を含んでもよい。

0128

ステップ236で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがオフプレミスブロックサーバ130に委託されたことを示すよう更新する。

0129

図6を参照すると、本発明のある例示的な実施の形態に係る、図2のプロセス200が行われオンプレミスブロックサーバ120にコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス110−1とメタデータサーバ150とオンプレミスブロックサーバ120とメタデータプレーン180との間の種々のインタラクションを示すインタラクション図600である。ダイアグラム600に示されるインタラクションはダイアグラム500に示されるインタラクションと同様である。しかしながら、ターゲットブロックサーバがオフプレミスブロックサーバ130ではなくオンプレミスブロックサーバであることに関する差分がある。

0130

ステップ202で、ユーザ102−1はパーソナル計算デバイス110−1でコンテンツアイテムを生成または変更する。ステップ204で、パーソナル計算デバイスのコンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムを検出する。ステップ206で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ208で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ210で、コンテンツアイテム同期エージェント114−1はオンプレミスブロックサーバ120がターゲットブロックサーバであることを決定する。ステップ212で、コンテンツアイテム同期エージェント114−1は第1委託要求をメタデータサーバ150に送信する。

0131

ステップ214で、メタデータサーバ150は第1委託要求を認証する。ステップ216で、メタデータサーバ150はオンプレミスブロックサーバ120で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ218で、メタデータサーバ150は欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第1委託要求に応答する。

0132

ステップ220で、コンテンツアイテム同期エージェント114−1は欠落しているコンテンツアイテムブロックをオンプレミスブロックサーバ120にアップロードする。

0133

ステップ222で、オンプレミスブロックサーバ120はアップロードされたコンテンツアイテムブロックをオンプレミスブロックサーバ120のブロックストレージ124に格納する。ステップ224で、オンプレミスブロックサーバ120は、ブロックストレージ124への格納が成功した欠落コンテンツアイテムブロックについて、メタデータサーバ150に、ひとつ以上のコンテンツアイテムブロック有り要求を送信する。ステップ224で、メタデータサーバ150は、オンプレミスブロックサーバ120についてのメタデータプレーン180内のブロックリストを、コンテンツアイテムブロック有り要求で指定される欠落しているコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。

0134

ステップ226で、コンテンツアイテム同期エージェント114−1は第2委託要求を送信する。

0135

ステップ228で、メタデータサーバ150は第2委託要求を認証する。ステップ230で、メタデータサーバ150はオンプレミスブロックサーバ120で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ232で、欠落しているコンテンツアイテムブロックがないと判定されると、メタデータサーバ150は新たなコンテンツアイテムのサーバジャーナル410に新たなサーバジャーナルエントリ412を追加する。新たなサーバジャーナルエントリ412は所属コンテンツアイテム名前空間とオンプレミスブロックサーバ120とを特定する。ステップ234で、メタデータサーバ150は委託が成功したことの確認で第2委託要求に応答する。その応答は、所属コンテンツアイテム名前空間とオンプレミスブロックサーバ120とに専用のサーバジャーナルカーソル値を含んでもよい。

0136

ステップ236で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがオンプレミスブロックサーバ120に委託されたことを示すよう更新する。
3.2 コンテンツアイテムのダウンロード

0137

図7を参照すると、ターゲットブロックサーバからコンテンツアイテムをダウンロードするプロセス700のフローチャートである。所属コンテンツアイテム名前空間が現在割り当てられているブロックサーバに依存して、ターゲットブロックサーバはオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130でありうる。以下にステップを図7に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。

0138

ステップ702で、サーバジャーナル410に追加された新たなサーバジャーナルエントリ412が検出される。そのような検出は、例えばメタデータサーバ150や通知サーバ140を含むオンラインコンテンツ管理サービスの種々のコンポーネントによって行われてもよい。例えば、サーバジャーナル410に新たなサーバジャーナルエントリ412が追加されたとき、メタデータプレーン180によってネットワークメッセージが生成され、バックエンドデータバスによりメタデータサーバ150および/または通知サーバ140へ運ばれてもよい。新たなサーバジャーナルエントリ412の追加は、所属コンテンツアイテム名前空間に属する新たなコンテンツアイテムがブロックサーバにアップロードされたことを表す。新たなサーバジャーナルエントリ412は、新たなエントリ412のブロックサーバ識別子413を介して、新たなコンテンツアイテムがアップロードされた先のブロックサーバを特定し、新たなエントリ412のコンテンツアイテム名前空間識別子414を介して、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を特定する。

0139

ステップ704で、通知サーバ140は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間が設けられているパーソナル計算デバイス(例えば、パーソナル計算デバイス110−2)に通知を行う。特定のコンテンツアイテム名前空間が設けられているパーソナル計算デバイスを決定するために、メタデータプレーン180は「リンクされたデバイス」についての情報を保持してもよい。一般に、「リンクされたデバイス」は、それが正当なユーザアカウント識別子312を「所持する」ものであることをオンラインコンテンツ管理サービスに示したパーソナル計算デバイス(例えば、110−2)である。パーソナル計算デバイスは、ユーザアカウント識別子312に関連付けられた正当な認証資格情報(例えば、正しいユーザ名およびパスワード)を、オンラインコンテンツ管理サービス(例えば、メタデータサーバ150またはウェブサイト170)またはオンラインコンテンツ管理サービスに認証サービスを提供するアイデンティティプロバイダに、パーソナル計算デバイスから、提供することによって、それが正当なユーザアカウント識別子312を所持するものであることを示すことができる。
3.2.1 リンクされたデバイスメタデータ

0140

図7に戻る前に図8を参照すると、図8は、本発明のいくつかの実施例に従う、メタデータプレーン180に格納された、リンクされたデバイスメタデータ800のブロック図である。リンクされたデバイスメタデータ800は、1つ以上のリンクデバイスレコード810を含む。リンクデバイスレコード810のそれぞれは、リンクされたパーソナル計算デバイスを識別するデバイス識別子812を有し得る。デバイスレコード810のそれぞれはまた、ユーザアカウントレコード310を識別するユーザアカウント識別子312を有し得る。例えば、同一のユーザが複数のパーソナル計算デバイスを用いてオンラインコンテンツ管理サービスとやりとりする場合、同一のユーザアカウント識別子312を有する、複数のリンクデバイスレコード810が存在してもよい。しかしながら、所与のユーザアカウント識別子312を有する、単一のリンクデバイスレコード810のみが存在するようにすることも可能である。リンクされたデバイスレコード810は、デバイス識別子812とユーザアカウント識別子312とに加えて、他の情報を含んでよい。例えば、リンクデバイスレコード810は、リンクされたデバイスの種別、リンクされたデバイスにインストールされたオペレーティングシステムの種別、リンクされたデバイスにインストールされたコンテンツアイテム同期エージェントのバージョン、他のデバイス固有の情報についての情報を含んでよい。

0141

いくつかの実施例によれば、リンクデバイスレコード810は、パーソナル計算デバイスにおいて実行されるクライアントアプリケーションが、ユーザアカウント識別子312に関連付けられた有効なユーザ認証クレデンシャルを提供するウェブサイト170へ要求を送信したことに応じて、パーソナル計算デバイスに対して、メタデータプレーン180に生成される。例えば、クライアントアプリケーションは、ユーザが有効なユーザ認証クレデンシャルを提供するパーソナル計算デバイスにおいて実行されるウェブブラウザであり得る。要求に応じて、ウェブサイト170は、新規のリンクされたデバイスレコード180を、パーソナル計算デバイスと有効なユーザアカウント識別子312とを識別するデバイス識別子812と共に生成してもよい。

0142

図7に戻り、ステップ704で、コンテンツアイテム同期114−2は通知サーバ140との長期ポーリング接続を維持してもよい。例えば、長期ポーリング接続はHTTPまたはHTTPS長期ポーリング接続であってもよい。パーソナル計算デバイスとの間で維持される長期ポーリング接続のそれぞれについて、通知サーバ140はパーソナル計算デバイスのデバイス識別子812をその接続と関連付けてもよい。ステップ702で新たなサーバジャーナルエントリ412が検出された場合、新たなサーバジャーナルエントリ412のコンテンツアイテム名前空間識別子414を用いて、メタデータプレーン180において、そのコンテンツアイテム名前空間識別子414を認証コンテンツアイテム名前空間314として有するユーザアカウントレコード310を特定してもよい。そのように特定されたユーザアカウントレコード310のそれぞれについて、通知対象のパーソナル計算デバイスのリンクデバイスレコード810は、特定されたユーザアカウントレコード310のユーザアカウント識別子312に基づいて特定されてもよい。通知サーバ140は次いで、通知を要すると決定されたパーソナル計算デバイスのデバイス識別子812に関連付けられた長期ポーリング接続のそれぞれを介して、「ピンping)」メッセージを送る。ピンメッセージは、パーソナル計算デバイスに設けられたひとつ以上のコンテンツアイテム名前空間のひとつ以上のコンテンツアイテムに対する更新が利用可能であることを、パーソナル計算デバイスのコンテンツアイテム同期エージェントに知らせる役割を果たす。

0143

ステップ706で、通知サーバ140からのピンメッセージを受信することに応じて、パーソナル計算デバイス110−2のコンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2に設けられたコンテンツアイテム名前空間に対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を決定する。同期プロトコルの第1の例示的な動作にしたがうと、クライアントジャーナルカーソル値はコンテンツアイテム名前空間およびブロックサーバに特有のものであってもよい。したがって、コンテンツアイテム名前空間およびブロックサーバに対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、そのコンテンツアイテム名前空間およびそのブロックサーバに委託されたコンテンツアイテム変更に対してパーソナル計算デバイス110−2がどの程度最新かを反映する。パーソナル計算デバイス110−2は、パーソナル計算デバイス110−2に設けられた各コンテンツアイテム名前空間の少なくともひとつの現在のクライアントジャーナルカーソル値をローカルに保持してもよい。コンテンツアイテム同期エージェント114−2は、コンテンツアイテム名前空間およびブロックサーバに対する現在のクライアントジャーナルカーソル値を、そのコンテンツアイテム名前空間およびそのブロックサーバに属する新たなコンテンツアイテムのダウンロードに成功した後に、更新してもよい。

0144

ステップ708で、コンテンツアイテム同期エージェント114−2は「リスト」要求をメタデータサーバ150に送信する。ユーザアカウント識別子312およびデバイス識別子812に加えて、リスト要求は、パーソナル計算デバイス110−2に設けられたひとつ以上のコンテンツアイテム名前空間のそれぞれについて、コンテンツアイテム名前空間に対するパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を特定してもよい。パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値はブロックサーバにも特有のものであるから、リスト要求は、コンテンツアイテム名前空間識別子に加えて、現在のクライアントジャーナルカーソル値が関連する先のブロックサーバのブロックサーバ識別子を特定してもよい。したがって、リスト要求は、潜在的な他の情報に加えて、パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値と、それらの現在のクライアントジャーナルカーソル値のそれぞれについて、コンテンツアイテム名前空間識別子と、現在のクライアントジャーナルカーソル値に関連付けられたブロックサーバ識別子と、のうちのひとつ以上を特定してもよい。

0145

ステップ710で、メタデータサーバ150はリスト要求を受信し、それを処理する。リスト要求を処理することは、メタデータプレーン180のサーバジャーナル410を参照することを含む。特に、リスト要求で提供されるパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値のそれぞれについて、メタデータサーバ150は、リスト要求で提供されるクライアントジャーナルカーソル値よりも「新しい」サーバジャーナルエントリ412があるかを決定する。より新しいサーバジャーナルエントリ412は、エントリのサーバジャーナルカーソル値417がパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値よりも数値的に大きく、かつ、エントリ412のブロックサーバ識別子413およびコンテンツアイテム名前空間識別子414がそれぞれリスト要求内のパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値に関連付けられたブロックサーバ識別子およびコンテンツアイテム名前空間識別子とマッチするようなものであってもよい。メタデータサーバ150は、リスト要求内で指定されたパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値のそれぞれについて、ひとつ以上のより新しいサーバジャーナルエントリ412を決定してもよい。

0146

ステップ712で、メタデータサーバ150はリスト要求に応答する。応答は、ステップ710で特定されたより新しいサーバジャーナルエントリ412のそれぞれからの情報を含んでもよい。特に、応答は、より新しいサーバジャーナルエントリ412のそれぞれについての以下の情報の全て、下位集合または上位集合を含んでもよい。

0147

より新しいサーバジャーナルエントリ412のブロックサーバ識別子413。

0148

より新しいサーバジャーナルエントリ412のコンテンツアイテム名前空間識別子414。

0149

より新しいサーバジャーナルエントリ412のコンテンツアイテム相対パス415。

0150

より新しいサーバジャーナルエントリ412のコンテンツアイテムブロックリスト416。

0151

より新しいサーバジャーナルエントリ412のサーバジャーナルカーソル値417。

0152

ステップ710で特定される複数のより新しいサーバジャーナルエントリ412が同じコンテンツアイテムに関する場合、その複数のより新しいサーバジャーナルエントリ412のうちの最新のもののみがリスト要求に対する応答で返されるであろう。複数のより新しいサーバジャーナルエントリ412は、それらがブロックサーバ識別子413フィールド、コンテンツアイテム名前空間識別子414フィールド、および相対パス415フィールドについて同じ値を有するが、異なるサーバジャーナルカーソル値417を有する場合、同じコンテンツアイテムに関すると見なされてもよい。例えば、直近の同期動作以来、同じコンテンツアイテムに二つの更新がなされたとしよう。この場合、複数のより新しいサーバジャーナルエントリ412のなかで最も高い(最も新しい)サーバジャーナルカーソル値417を伴うより新しいサーバジャーナルエントリ412が、複数のより新しいサーバジャーナルエントリ412のうちの他のものに取って代わる。最も高い(最も新しい)サーバジャーナルカーソル値417を伴うそのより新しいサーバジャーナルエントリ412はリスト要求に対する応答内で返され、他のものは返されない。

0153

ステップ714で、コンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2のローカルストレージ112−2から欠落しているコンテンツアイテムブロックを決定する。この決定は、ステップ712でメタデータサーバ150からリスト要求に対する応答で受信したより新しいエントリまたはより新しいサーバジャーナルエントリ412のコンテンツアイテムブロックリスト416に基づいてもよい。この決定はまた、コンテンツアイテムクライアントジャーナルまたは単に「クライアントジャーナル」に基づいてもよい。このクライアントジャーナルは、パーソナル計算デバイス110−2のローカルストレージ112−2に保持されるコンテンツアイテムブロックを追跡するために、コンテンツアイテム同期エージェント114−2がローカルで(例えば、ローカルストレージ112−2に)維持するものである。特に、クライアントジャーナルは、ローカルストレージ112−2に保持される設置コンテンツアイテム名前空間に属する各コンテンツアイテムの現在のバージョンのそれぞれに対するコンテンツアイテムブロックリストを保持してもよい。コンテンツアイテムの現在のバージョンに対するコンテンツアイテムブロックリストは、現在のバージョンのコンテンツアイテムブロックを特定する。クライアントジャーナル内の各ブロックリストは、クライアントジャーナルにおいて、所属コンテンツアイテム名前空間の識別子およびコンテンツアイテムへの相対パスに関連付けられてもよい。リスト要求に応じてメタデータサーバ150から受信した所与のより新しいサーバジャーナルエントリ412について、コンテンツアイテム同期エージェント114−2は、より新しいサーバジャーナルエントリ412のブロックリスト416と、より新しいサーバジャーナルエントリ412のコンテンツアイテム名前空間識別子414とより新しいサーバジャーナルエントリ412のコンテンツアイテム相対パス415とにクライアントジャーナル内で関連付けられたクライアントジャーナルのブロックリストと、を比較してもよい。より新しいサーバジャーナルエントリ412のブロックリスト416内のコンテンツアイテムブロックハッシュのうち、クライアントジャーナル内の対応するブロックリストに無いものは、パーソナル計算デバイス110−2のローカルストレージ112−2内に保持される対応するコンテンツアイテムの現在のバージョンから欠落しているコンテンツアイテムブロックに対応する。

0154

ステップ716で、コンテンツアイテム同期エージェント114−2はステップ714で特定された欠落しているコンテンツアイテムブロックをダウンロードする。欠落しているコンテンツアイテムブロックは、リスト要求への応答内で指定されるように、異なるブロックサーバに、または全てが同じブロックサーバに、格納されてもよい。ひとつ以上の欠落コンテンツアイテムブロックをブロックサーバからダウンロードするために、コンテンツアイテム同期エージェント114−2はブロックサーバに「取得」要求を送信し、取得要求内で欠落コンテンツアイテムブロックのコンテンツアイテムブロックハッシュを特定する。

0155

ステップ716で、コンテンツアイテム同期エージェント114−2は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、コンテンツアイテム同期エージェント114−2からの取得要求を受信する各ブロックサーバは、取得要求に対する応答を返し、該応答は、取得要求において特定されたコンテンツアイテムブロックハッシュに対応するコンテンツアイテムブロックを含む。ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、既知のrsyncアルゴリズムにより用いられるものなどのデルタ符号化スキームにしたがい行われてもよい。この場合、ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、ブロックサーバに保持されるコンテンツアイテムブロックとパーソナル計算デバイス110−2に既に保持されているコンテンツアイテムブロックとの間のデルタのみをダウンロードすることを含んでもよい。したがって、コンテンツアイテムブロックをブロックサーバからダウンロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバからダウンロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとの間のデルタだけをブロックサーバからダウンロードすることと、の両方を包含する。

0156

ステップ718で、コンテンツアイテム同期エージェント114−2は、ローカルストレージ112−2のファイルシステムに保持されるひとつ以上のファイルとして、またはその一部として、ダウンロードされたコンテンツアイテムブロックを格納する。この格納は、ファイルシステムに新たなファイルを生成すること、および/またはファイルシステムの既存のファイルをダウンロードされたコンテンツアイテムブロックに基づき更新すること、を含んでもよい。例えば、リスト要求に応じて受信されたより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムについての、ブロックサーバからダウンロードされた所与のコンテンツアイテムブロックについて、コンテンツアイテム同期エージェント114−2は、より新しいサーバジャーナルエントリ412で特定されるコンテンツアイテム名前空間414のパーソナル計算デバイス110−2でのコンテンツアイテムマウントポイントフォルダ、および、より新しいサーバジャーナルエントリ412内の相対パス415に基づいて、所与のコンテンツアイテムブロックで更新するか生成するように、ファイルシステム内のファイルを決定することができる。

0157

ある例示的な実施の形態では、所与のコンテンツアイテム名前空間のひとつ以上のより新しいサーバジャーナルエントリ412に基づいてステップ718で生成または更新されたコンテンツアイテムは、より新しいサーバジャーナルエントリ412のサーバジャーナルカーソル値417のシーケンスまたは順番で生成または更新される。例えば、ステップ708において、コンテンツアイテム同期エージェント114−2が、コンテンツアイテム名前空間「ABC123」とブロックサーバ「JKL101」とについて現在のクライアントジャーナルカーソル値「17」を指定するリスト要求を送信したとする。さらに、リスト要求に応じて、コンテンツアイテム同期エージェント114−2がステップ712においてリスト要求に応じて、コンテンツアイテム名前空間「ABC123」とブロックサーバ「JKL101」とについての三つのより新しいサーバジャーナルエントリ412であってそれぞれがサーバジャーナルカーソル値「18」、「19」、「20」を有するサーバジャーナルエントリ412を受信したとする。次いで、ブロックサーバ「JKL101」から三つの新たなサーバジャーナルエントリ412に対応する欠落コンテンツアイテムブロックをダウンロードした後、コンテンツアイテム同期エージェント114−2は、まず、サーバジャーナルカーソル値「18」を有するより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムを生成または更新し、次にサーバジャーナルカーソル値「19」を有するより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムを生成または更新し、最後にサーバジャーナルカーソル値「20」を有するより新しいサーバジャーナルエントリ412に対応するコンテンツアイテムを生成または更新してもよい。

0158

ステップ720で、コンテンツアイテム同期エージェント114−2は、ステップ716および718においてダウンロードおよび格納に成功したコンテンツアイテムブロックに基づくローカルストレージ112−2内での生成または更新に成功したコンテンツアイテムについて、パーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値を更新する。特に、リスト要求に応じて受信された対応するより新しいサーバジャーナルエントリ412に基づいてローカルストレージ112−2において生成または更新された所与のコンテンツアイテムについて、その対応するより新しいサーバジャーナルエントリ412で特定されるコンテンツアイテム名前空間414およびブロックサーバ413についてのパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、それがその対応するより新しいサーバジャーナルエントリ412のサーバジャーナルカーソル値417と一致するように更新される。上述の通り、所与のコンテンツアイテム名前空間のひとつ以上のより新しいサーバジャーナルエントリ412に基づいてステップ720で生成または更新されたコンテンツアイテムは、より新しいサーバジャーナルエントリ412のジャーナルカーソル値417のシーケンスまたは順番で生成または更新されてもよい。同様に、所与のコンテンツアイテム名前空間についてのパーソナル計算デバイス110−2の現在のクライアントジャーナルカーソル値は、ステップ722で、より新しいサーバジャーナルエントリ412のジャーナルカーソル値417のシーケンスまたは順番で、インクリメントされてもよい。
3.2.2 例示的なダウンロードインタラクション

0159

図9を参照すると、本発明のある例示的な実施の形態に係る、図7のプロセス700が行われオンプレミスブロックサーバ(例えば、120)またはオフプレミスブロックサーバ130からコンテンツアイテムをダウンロードするときの、パーソナル計算デバイス110−2と通知サーバ140とメタデータサーバ150とターゲットブロックサーバとメタデータプレーン180との間の種々のインタラクションを示すインタラクション図900である。

0160

ステップ704にあるように、通知サーバ140はパーソナル計算デバイス110−2のコンテンツアイテム同期エージェント114−2にピンメッセージを送信する。

0161

ステップ706にあるように、コンテンツアイテム同期エージェント114−2は、パーソナル計算デバイス110−2に設けられているひとつ以上のコンテンツアイテム名前空間の現在のクライアントジャーナルカーソル値を決定する。そのような現在のクライアントジャーナルカーソル値のそれぞれは、対応するブロックサーバにアップロードされたコンテンツアイテム名前空間に対する変更に関してパーソナル計算デバイス110−2がどの程度最新かを反映する。ステップ708にあるように、コンテンツアイテム同期エージェント114−2はリスト要求をメタデータサーバ150に送信する。

0162

ステップ710にあるように、メタデータサーバ150は、リスト要求で指定される現在のクライアントジャーナルカーソル値のそれぞれについて、サーバジャーナル410内により新しいジャーナルエントリ412があるか決定する。ステップ712にあるように、メタデータサーバ150は、より新しいジャーナルエントリ412のリストをデバイス110−2に送信する。

0163

ステップ714にあるように、コンテンツアイテム同期エージェント114−2は、より新しいジャーナルエントリ412で指定されるコンテンツアイテムブロックのなかに、デバイス110−2にまだ格納されていないものがあるか判定する。この判定は、より新しいジャーナルエントリ412のコンテンツアイテムブロックリスト416と、パーソナル計算デバイス110−2に既に格納されたコンテンツアイテムブロックの既知のコンテンツアイテムブロックハッシュのコンテンツブロックリストと、を比較することに基づいてもよい。ステップ716にあるように、コンテンツアイテム同期エージェント114−2は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、パーソナル計算デバイス110−2においてより新しいジャーナルエントリ412についてのひとつ以上のコンテンツアイテムブロックが欠落している場合、そのより新しいジャーナルエントリ412のそれぞれについて、コンテンツアイテム同期エージェント114−2は、エントリ412で特定されるブロックサーバ413からの欠落コンテンツアイテムブロックのダウンロードを試行する。ステップ718にあるように、コンテンツアイテム同期エージェント114−2は、ダウンロードされたコンテンツアイテムブロックに基づいて、パーソナル計算デバイス110−2のローカルファイルシステムにおいてひとつ以上のコンテンツアイテムを生成または更新する。ステップ720にあるように、コンテンツアイテム同期エージェント114−2は、より新しいジャーナルエントリ412の処理が成功したとき、現在のクライアントジャーナルカーソル値を更新する。
4.0 第2の例示的同期プロトコル動作

0164

上述の第1の例示的同期プロトコル動作の変形例において、クライアントおよびサーバジャーナルカーソル値はコンテンツアイテム名前空間にのみ特有であって、上述の第1の例示的同期プロトコル動作のときのようにコンテンツアイテム名前空間とブロックサーバとの組み合わせに特有ではない。この第2の変形例において、メタデータサーバ150は、コンテンツアイテム同期エージェントからの委託要求に応答することができ、その際にはコンテンツアイテム同期エージェントが欠落コンテンツアイテムブロックをアップロードできる先のひとつ以上のブロックサーバについて複数のオプションがある。また、この変形例において、メタデータサーバ150は、コンテンツアイテム同期エージェントからのリスト要求に応答することができ、その際には欠落コンテンツアイテムブロックがダウンロードされる元のひとつ以上の計算デバイスについて複数のオプションがある。リスト要求への応答の場合、計算デバイスオプションは、ブロックサーバ(例えば、120や130)に加えてまたはその代わりに、他のパーソナル計算デバイス(例えば、110−1、110−2)を含むことができ、それによりピアツーピア動作が促進される。

0165

図2および図7に関して上述したアップロードおよびダウンロードプロセスと変形例との差分に重きを置いて、同期プロトコルの変形例を以下に説明する。
4.1 アップロードプロセス

0166

図10を参照すると、本発明のいくつかの例示的な実施の形態に係る、新たなコンテンツアイテムをパーソナル計算デバイス110−1から「ターゲット」ブロックサーバへアップロードするためのプロセス1000を説明するフロー図である。ターゲットブロックはオンプレミスブロックサーバ(例えば、102)またはオフプレミスブロックサーバ130であってもよい。以下にステップを図10に示される所定の順番で説明するが、そうでないと明記されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。

0167

ステップ1002で、図2に関連して説明されたステップ202と同様に、ユーザ102−1はパーソナル計算デバイス110−1のローカルストレージ112−1において「新たな」コンテンツアイテムを追加するか変更する。

0168

ステップ1004で、図2に関連して説明されたステップ204と同様に、パーソナル計算デバイス110−1のコンテンツアイテム同期エージェント114−1は、ローカルストレージ112−1内の新たなコンテンツアイテムを検出する。

0169

ステップ1006で、図2に関連して説明されたステップ206と同様に、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれを決定する。

0170

ステップ1008で、図2に関連して説明されたステップ208と同様に、コンテンツアイテム同期114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。

0171

プロセス1000のこの時点で、コンテンツアイテム同期エージェント114−1は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間の識別子(例えば「DEF456」)を決定し(ステップ1006)、新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出(ステップ1008)した。プロセス1000において、図2に関して上述されたステップ210などのステップを実行する必要はないが、されてもよい。特に、アップロードプロセス1000について、名前空間対ブロックサーバ割り当てがパーソナル計算デバイス110−1に保持される必要はないが、保持されてもよい。

0172

ステップ1010で、コンテンツアイテム同期エージェント114−1は第1「委託」要求をメタデータサーバ150に送信する。特に、第1委託要求は、ユーザアカウント識別子312およびデバイス識別子812に加えて、以下の情報の全て、またはその下位集合あるいは上位集合を含んでもよい。

0173

所属コンテンツアイテム名前空間の識別子(例えば、「DEF456」);

0174

パーソナル計算デバイス110−1における所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダに対する新たなコンテンツアイテムの相対ファイルシステムパス。

0175

新規コンテンツアイテムに対するコンテンツアイテムブロックリスト。

0176

さらなる安全性のため、ステップ1010で送信される委託要求は、トランスポートレイヤセキュリティ(TLS)やセキュアソケットレイヤ(SSL)で保護されたネットワーク接続などの暗号化ネットワーク接続を介して、LAN160およびWAN190を通じて送られてもよい。

0177

ステップ1012で、メタデータサーバ150はコンテンツアイテム同期エージェント114−1から受信した第1委託要求を認証する。この認証は、第1委託要求で指定される所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子314が、第1委託要求で指定されるユーザアカウント識別子312に対応するメタデータプレーン180内のユーザアカウントレコード310の認証コンテンツアイテム名前空間識別子314のうちのひとつであるか検証することを含んでもよい。そうでなければ、メタデータサーバ150は第1委託要求を拒否し、コンテンツアイテム同期エージェント114−1に適切なエラーメッセージを返してもよい。

0178

ステップ1014で、メタデータサーバ150は、第1委託要求で指定される所属コンテンツアイテム名前空間が割り当てられる先のひとつ以上の「候補」ブロックサーバを決定する。この決定は、メタデータプレーン180内に保持される名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。所属コンテンツアイテム名前空間は、オフプレミスブロックサーバ130にのみ、ひとつのオンプレミスブロックサーバ(例えば、120)にのみ、複数のオンプレミスブロックサーバに、またはひとつ以上のオンプレミスブロックサーバおよびオフプレミスブロックサーバ130に、割り当てられてもよい。

0179

ステップ1016で、メタデータサーバ150は、ひとつ以上の候補ブロックサーバのそれぞれについて、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれが候補ブロックサーバにまだ格納されていないかを判定する。これを行うために、メタデータサーバ150はメタデータプレーン180内の候補ブロックサーバのブロックリストを参照してもよい。メタデータサーバ150は、候補ブロックサーバのブロックサーバ識別子に基づいて、メタデータプレーン180において候補ブロックサーバのブロックリストを特定してもよい。第1委託要求における新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかの各コンテンツアイテムブロックハッシュについて、メタデータサーバ150は、そのコンテンツアイテムブロックハッシュが候補ブロックサーバのブロックリストにあるか否かを判定する。もしなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックが候補ブロックサーバから欠落していると決定する。そうでなければ、メタデータサーバ150は、対応するコンテンツアイテムブロックが候補ブロックサーバに既に保持されていると決定する。

0180

ステップ1018で、メタデータサーバ150はひとつ以上の必要コンテンツアイテムブロックリストを指定する応答で第1委託要求に応答する。応答は、各候補ブロックサーバについてひとつの必要コンテンツアイテムブロックリストを含んでもよい。候補ブロックサーバについての必要コンテンツアイテムブロックリストは、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュを含み、そのコンテンツアイテムブロックはステップ1016においてメタデータサーバ150が候補ブロックサーバのブロックリストから欠落していると決定したものである。したがって、候補ブロックサーバについての必要コンテンツアイテムブロックリストは、候補ブロックサーバにおいてどのコンテンツアイテムブロックが欠落しているかに依存して、第1委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュの全てまたは部分集合を指定してもよい。

0181

ステップ1020で、コンテンツアイテム同期エージェント114は、新たなコンテンツアイテムをアップロードする先のターゲットブロックサーバを選択する。選択は、メタデータサーバ150から受信した、委託要求に対する応答の中の情報に基づいてもよい。特に、応答は、ひとつ以上の候補ブロックサーバの識別子と、そのような識別子のそれぞれに関連付けられた必要コンテンツアイテムブロックリストと、を含んでもよい。応答は、候補ブロックサーバがオンプレミスブロックサーバ(例えば、120)であるかまたはオフプレミスブロックサーバ130であるかなどの、候補ブロックサーバ識別子に関連付けられた他の情報を含んでもよい。他の情報はまた、ネットワークパフォーマンス情報およびブロックサーバ負荷情報を含んでもよい。ネットワークパフォーマンス情報は、候補ブロックサーバが接続される先のネットワークの現在のパフォーマンスまたはパフォーマンスの履歴定性的または定量的評価を含んでもよい。ブロックサーバ負荷情報は、候補ブロックサーバの計算リソース(例えば、CPU、メモリ、ストレージ等)に対する現在の負荷または負荷の履歴の定性的または定量的評価を含んでもよい。コンテンツアイテム同期114−1は、種々のブロックサーバについてのネットワークパフォーマンス情報およびブロックサーバパフォーマンス情報をローカルで(例えば、ローカルストレージ112に)維持してもよい。特に、ブロックサーバのパフォーマンス情報は、過去にブロックサーバにアップロードされたコンテンツアイテムブロックのアップロード時間に基づいてもよい。例えば、コンテンツアイテム同期エージェント114−1がひとつ以上のコンテンツアイテムブロックを含むブロックサーバに格納要求を行うとき、コンテンツアイテム同期エージェント114−1は格納要求が送信された時とブロックサーバから格納要求に対する応答を受信した時との間のクロック時間を測定してもよい。これらのクロック時間に基づいて、コンテンツアイテム同期エージェント114−1は平均アップロード時間および/または平均スループット(例えば、毎秒メガビットの単位で)を算出することができる。これらの平均は、パーソナル計算デバイス110−1をブロックサーバに接続するネットワークのパフォーマンスを反映する。

0182

以下の情報の全てまたはその下位集合または上位集合に基づいて、コンテンツアイテム同期エージェント114−1はひとつ以上の候補ブロックサーバのなかからひとつを、新たなコンテンツアイテムをアップロードする先のターゲットブロックサーバとして選択する:

0183

候補ブロックサーバの数。例えば、ただひとつの候補ブロックサーバが利用可能である場合、その候補ブロックサーバがターゲットブロックサーバとして選択されてもよい。

0184

新たなコンテンツアイテムのコンテンツアイテムブロックのうち、各候補ブロックサーバから欠落しているものの数。例えば、複数の候補ブロックサーバが利用可能である場合、複数の候補ブロックサーバの全てのなかからアップロードしなければならないコンテンツアイテムブロックの数が最小となる候補ブロックサーバをターゲットブロックサーバとして選択してもよい。

0185

第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のネットワークパフォーマンス情報。

0186

第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のサーバ負荷情報

0187

候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロード時間。

0188

候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロードスループット

0189

ある例示的な実施の形態によると、コンテンツアイテム同期エージェント114−1は、候補ブロックサーバにアップロードする新たなコンテンツアイテムのコンテンツアイテムブロックの数と、候補ブロックサーバに関するひとつ以上のネットワークパフォーマンス測度と、に基づいて、各候補ブロックサーバについての予想アップロード時間を算出する。種々の異なるネットワークパフォーマンス測度が可能である。例えば、ネットワークパフォーマンス測度は、候補ブロックサーバについての履歴的平均コンテンツアイテムブロックアップロード時間、または候補ブロックサーバについての履歴的平均コンテンツアイテムブロックアップロードスループットであってもよい。例えば、トータルサイズにして410624バイトの百一(101)のコンテンツアイテムブロックが候補オンプレミスブロックサーバ(例えば、120)から欠落しており、トータルサイズにして205824バイトの五十一(51)のコンテンツアイテムブロックが候補オフプレミスブロックサーバ130から欠落しているとする。さらに、候補オンプレミスブロックサーバについての履歴的平均コンテンツアイテムブロックアップロードスループットが20Mbit/秒であり、候補オフプレミスブロックサーバ130についての履歴的平均コンテンツアイテムブロックアップロードスループットが3Mbit/秒であるとすると、コンテンツアイテム同期エージェント114−1は、より多くのバイトを候補オンプレミスブロックサーバにアップロードすべきではあるものの、候補オンプレミスブロックサーバをターゲットサーバとして選択してもよい。この選択がなされるのは、候補オンプレミスブロックサーバへの予想トータルアップロード時間が候補オフプレミスブロックサーバ130への予想トータルアップロード時間の三分の一(1/3)より少ないからであってもよい。

0190

ある例示的な実施の形態によると、候補ブロックサーバに優先度を付け、コンテンツアイテム同期エージェント114−1は対応する優先度に基づいて、候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する。例えば、メタデータサーバ150により同期エージェント114−1に提供される、第1委託要求に対する応答は、各候補ブロックサーバ識別子に関連付けられた優先度を含んでもよい。優先度は、候補ブロックサーバの全てがその優先度にしたがい順序付けられるような数値であってもよい。優先度はユーザ特定的であってもよい。例えば、ウェブサイト170とやりとりすることでコンテンツアイテム名前空間を複数のブロックサーバに割り当てる際、ユーザは複数のブロックサーバに対して優先順位を指定してもよい。例えば、ユーザは所与のコンテンツアイテム名前空間について、オフプレミスブロックサーバ130よりもオンプレミスブロックサーバ(例えば、120)を好ましいとするよう指定してもよく、あるいはまた、第2オンプレミスブロックサーバよりも第1オンプレミスブロックサーバをより好ましいとしつつ、それらの両方をオフプレミスブロックサーバ130よりも好ましいとするよう指定してもよい。複数の候補ブロックサーバが選択可能である場合、最高のまたは最良の優先度に関連付けられた候補ブロックサーバがターゲットブロックサーバとして選択されてもよい。複数の候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する前に、複数の候補ブロックサーバに関連付けられた優先度をまず重み付けしてもよい。優先度の重み付けはコンテンツアイテム同期エージェント114−1に利用可能な他の情報に基づいてもよい。そのような他の情報は例えば、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、各候補ブロックサーバから欠落しているものの数、第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のネットワークパフォーマンス情報、第1委託要求に対する応答においてメタデータサーバ150によって提供される候補ブロックサーバのひとつ以上のサーバ負荷情報、候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロード時間、および/または、候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロードスループットを含む。

0191

ステップ1022で、図2に関連して上述されたステップ220と同様に、コンテンツアイテム同期エージェント114−2は新たなコンテンツアイテムの欠落コンテンツアイテムブロックをターゲットブロックサーバにアップロードする。

0192

ステップ1024で、図2に関連して上述されたステップ222と同様に、ターゲットブロックサーバ(例えば、120や130)のブロックサービス(例えば、122や132)は欠落しているコンテンツアイテムブロックをターゲットブロックサーバのブロックストレージ(例えば、124や134)に格納する。

0193

ステップ1026で、図2に関連して上述されたステップ224と同様に、ターゲットブロックサーバは、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン180内のターゲットブロックサーバのブロックサーバブロックリストを更新する。

0194

ステップ1028で、コンテンツアイテム同期エージェント114は第2委託要求をメタデータサーバ150に送信する。第2委託要求は、上述のステップ1010で第1委託要求においてメタデータサーバ150に送信された情報と同じ情報を含んでもよい。加えて、第2委託要求は、上述のステップ1020で選択されたターゲットブロックサーバのブロックサーバ識別子を指定してもよい。しかしながら、コンテンツアイテム同期エージェント114−1が、第2委託要求において、選択されたターゲットブロックサーバのブロックサーバ識別子を送信しなくてもよい。

0195

ステップ1030で、メタデータサーバ150は、上述のステップ1012で第1委託要求について行ったように、第2要求を認証してもよい。

0196

ステップ1032で、第2委託要求が認証された前提で、メタデータサーバ150は、メタデータプレーン180内のターゲットブロックサーバのコンテンツアイテムブロックリストにしたがい、新たなコンテンツアイテムのブロックリストで特定されるコンテンツアイテムブロックのなかにターゲットブロックサーバから欠落しているものがあるか否かを判定する。このとき、第1委託要求の後、欠落していたコンテンツアイテムブロックはターゲットブロックサーバにアップロードされてしまっているので、メタデータサーバ150は、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバで欠落しているものはないと判定すべきである。メタデータサーバ150は、第2委託要求においてターゲットブロックサーバのブロックサーバ識別子が指定されている場合に、この判定を行ってもよい。ターゲットブロックサーバの識別子と、新たなコンテンツアイテムのブロックリスト中のコンテンツアイテムブロックハッシュと、を用いることで、メタデータサーバ150はメタデータプレーン180にあるターゲットブロックサーバのコンテンツアイテムブロックリストを参照し、新たなコンテンツアイテムのブロックリスト中のコンテンツアイテムハッシュのなかにターゲットブロックサーバのコンテンツアイテムブロックリストから欠落しているものがあるかを判定することができる。もしあれば、新たなコンテンツアイテムはターゲットブロックサーバにまだアップロードされていないのであるから、第2委託要求は第1委託要求と同じようにメタデータサーバ150によって扱われ、プロセス1000はステップ1014に戻り、そこから続いてもよい。この場合、ステップ1016でのターゲットブロックサーバにおいて欠落しているコンテンツアイテムブロックの決定は、再度行われる必要はない。この決定は既になされているからである。しかしながら、ステップ1016での欠落コンテンツアイテムブロックの決定は、もしあれば他の候補ブロックサーバについてなされてもよい。一方、欠落しているコンテンツアイテムブロックハッシュがない場合、新たなコンテンツアイテムはターゲットブロックサーバに完全にアップロードされたのであるから、プロセス1000はステップ1034へと続き、オンラインコンテンツ管理サービスに新たなコンテンツアイテムを委託する。

0197

一方、第2委託要求においてターゲットブロックサーバのブロックサーバ識別子が指定されていない場合、ステップ1032において、メタデータサーバ150は、第2委託要求において指定される所属コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補ブロックサーバのうち、新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつあるか否かを判定する。この判定は、所属コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補ブロックサーバを決定するステップ1032のサブステップとして上述の1014のようなステップを行うことと、新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつあるか否かを判定するステップ1032のサブステップとして上述の1016のようなステップを行うことと、を含んでもよい。新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつある場合、新たなコンテンツアイテムは少なくともひとつの候補ブロックサーバに完全にアップロードされたのであるから、アップロードプロセス1000はステップ1034へと続き、オンラインコンテンツ管理サービスに新たなコンテンツアイテムを委託する。一方、新たなコンテンツアイテムのコンテンツアイテムブロックの全てを保持する候補ブロックサーバがない場合、新たなコンテンツアイテムは候補ブロックサーバにまだアップロードされていないのであるから、第2委託要求は第1委託要求と同じようにメタデータサーバ150によって扱われ、プロセス1000はステップ1014に戻り、そこから続き、すでになされた決定はスキップする。
4.1.1コンテンツアイテムサーバジャーナル

0198

ステップ1034で、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバまたは少なくともひとつの候補ブロックサーバから欠落しているものはないと判定した後、メタデータサーバ150は、メタデータプレーン180内のコンテンツアイテムサーバジャーナルまたは単に「サーバジャーナル」に新たなジャーナルエントリを追加する。コンテンツアイテムサーバジャーナルを用いて、コンテンツアイテム名前空間ごとベースで、オンラインコンテンツ管理サービスに委託されたコンテンツアイテムのバージョンを追跡できる。

0199

いったん図11を参照すると、それはサーバジャーナル1110のブロック図である。サーバジャーナル1110はメタデータプレーン180に保持されてもよい。サーバジャーナル1110は複数のジャーナルエントリ1112を含む。新たなコンテンツアイテムがブロックサーバに完全にアップロードされると、サーバジャーナル1110に新たなジャーナルエントリ1112が追加(例えば、追記)される。例えば、メタデータサーバ150は、コンテンツアイテム同期エージェント114から第2委託要求を受信することに応じて新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、サーバジャーナル1110に、新たなジャーナルエントリ1112を追加してもよい。

0200

サーバジャーナル1110の各ジャーナルエントリ1112は、コンテンツアイテム名前空間識別子1114と、相対コンテンツアイテムパス1115と、コンテンツアイテムブロックリスト1116と、サーバジャーナルカーソル値1117と、を含んでもよい。コンテンツアイテム名前空間識別子1114は、新たなコンテンツアイテムが所属する先のコンテンツアイテム名前空間(すなわち、所属コンテンツアイテム名前空間)を特定する。パス1115は、新たなコンテンツアイテムの、新たなコンテンツアイテムが所属する先のコンテンツアイテム名前空間のマウントポイントに対する、相対ファイルシステムパスを指定する。コンテンツアイテムブロックリスト1116は、新たなコンテンツアイテムを構成するひとつ以上のコンテンツアイテムブロックを特定するひとつ以上のコンテンツアイテムブロックハッシュを含む。サーバジャーナルカーソル値1117はコンテンツアイテム名前空間特定的である。特に、メタデータサーバ150は、オンラインコンテンツ管理サービスの管理下にある一意のコンテンツアイテム名前空間のそれぞれについて、別個のサーバジャーナルカーソルを維持してもよい。コンテンツアイテム名前空間に対するサーバジャーナルカーソルは、コンテンツアイテム名前空間の新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されたときに増やされ(例えば、インクリメントされ)る。例えば、コンテンツアイテム名前空間に対するサーバジャーナルカーソルは単調増加する値であってもよい。

0201

例えば、コンテンツアイテム名前空間「DEF456」に対する直近で追加されたジャーナルエントリ1112のサーバジャーナルカーソル値1117が「17」である場合、ステップ1034で追加される、同じコンテンツアイテム名前空間に属する新たなコンテンツアイテムの新たなサーバジャーナルエントリ1112はサーバジャーナルカーソル値として「18」を有するであろう。異なるコンテンツアイテム名前空間に属する新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されるとき、異なるコンテンツアイテム名前空間のサーバジャーナルカーソルは互いに独立にインクリメントされてもよい。

0202

サーバジャーナル1110は、複数のコンテンツアイテム名前空間のサーバジャーナルを保持してもよい。特に、同じコンテンツアイテム名前空間識別子1114を有するサーバジャーナル1110内のエントリ1112の全てはそのコンテンツアイテム名前空間のサーバジャーナルと考えられてもよい。ある代替的な実施の形態では、メタデータプレーン180内に、管理下の各コンテンツアイテム名前空間について、物理的に別個のサーバジャーナルが保持されてもよい。メタデータプレーン180の複数のサーバ計算デバイスに亘ってサーバジャーナル1110をパーティション化または分割することを含む他のストレージ構成も可能である。この場合、コンテンツアイテム名前空間識別子1114はパーティション化のキーまたは分割のキーとして用いられてもよい。

0203

ステップ1036で、新たなジャーナルエントリ1112がサーバジャーナル1110に追加された後、メタデータサーバ150はコンテンツアイテム同期エージェント114−1からの第2委託要求に応答する。特に、メタデータサーバ150は、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したことをコンテンツアイテム同期エージェント114−1に対して示す応答を送信する。加えて、その応答は、追加された新たなサーバジャーナルエントリ1112からの所属コンテンツアイテム名前空間に対するジャーナルカーソル値1117を含んでもよい。

0204

ステップ1038で、コンテンツアイテム同期エージェント114−1は、将来の参照のため、サーバジャーナルカーソル値1117をローカルに(例えば、ローカルストレージ112に)格納してもよい。ローカルで格納する際、コンテンツアイテム同期114−1は、サーバジャーナルカーソル値1117を、サーバジャーナルカーソル値1117が関係する所属コンテンツアイテム名前空間識別子に関連付けてもよい。加えて、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したので、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの委託状態インジケータを更新してもよく、その更新はアップロードプロセス200のステップ236に関して上述されたように、新たなコンテンツアイテムの欠落コンテンツアイテムブロックがどのターゲットブロックサーバ(例えば、120や130)にアップロードされたかに依存する。
4.1.2 例示的なアップロードインタラクション

0205

図12は、本発明のある例示的な実施の形態に係る、図10のアップロードプロセス1000が行われターゲットブロックサーバに新たなコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス110−1とメタデータサーバ150とオフプレミスブロックサーバ130とメタデータプレーン180との間の種々のインタラクションを示すインタラクション図1200を提供する。インタラクション図1200は、ターゲットブロックサーバがオフプレミスブロックサーバ130であるときのアップロードプロセス1000を表す。図13は、本発明のいくつかの例示的な実施の形態に係る、ターゲットブロックサーバがオンプレミスブロックサーバ120であるときの、アップロードプロセス1000を表すインタラクション図1300である。

0206

ステップ1002で、ユーザ102−1はパーソナル計算デバイス110−1でコンテンツアイテムを生成または変更する。ステップ1004で、パーソナル計算デバイスのコンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムを検出する。ステップ1006で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ1008で、コンテンツアイテム同期エージェント114−1は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ1010で、コンテンツアイテム同期エージェント114−1は第1委託要求をメタデータサーバ150に送信する。

0207

ステップ1012で、メタデータサーバ150は第1委託要求を認証する。ステップ1014で、メタデータサーバ150は、第1委託要求で指定される所属コンテンツアイテム名前空間のひとつ以上の候補ブロックサーバを決定する。ステップ1016で、メタデータサーバ150はステップ1014で決定された候補ブロックサーバのそれぞれで欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ1018で、メタデータサーバ150は候補ブロックサーバのそれぞれで欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第1委託要求に応答する。

0208

ステップ1020で、コンテンツアイテム同期エージェント114−1は、上述されたものなどの種々のファクタに基づいて、候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する。ステップ1022で、コンテンツアイテム同期エージェント114−1は欠落しているコンテンツアイテムブロックをターゲットブロックサーバにアップロードする。

0209

ステップ1024で、ターゲットブロックサーバがオフプレミスブロックサーバ130である場合、オフプレミスブロックサーバ130はアップロードされたコンテンツアイテムブロックをブロックストレージ134に格納し、ステップ1026でオフプレミスブロックサーバ130は、メタデータプレーン180にあるオフプレミスブロックサーバ130のためのブロックリストを、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。

0210

インタラクション図1200はターゲットブロックサーバがオフプレミスブロックサーバ130であるときのアップロードプロセス1000を表すが、ターゲットブロックサーバがオンプレミスブロックサーバ120である場合には、図13のインタラクション図1300に示されるように、ステップ1024でオンプレミスブロックサーバ120はアップロードされたコンテンツアイテムブロックをブロックストレージ124に格納し、ステップ1026でメタデータサーバ150にひとつ以上のコンテンツアイテムブロック有り要求を送信する。また、ステップ1026で、ターゲットブロックサーバがオンプレミスブロックサーバ120である場合、メタデータサーバ150は、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン180にあるオンプレミスブロックサーバ120のためのブロックリストを更新する。

0211

ステップ1028で、コンテンツアイテム同期エージェント114−1は第2委託要求を送信する。第2委託要求は、ステップ1020で選択されたターゲットブロックサーバの識別子を指定してもよい。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

新着 最近 公開された関連が強い 技術

  • 住友電気工業株式会社の「 制御装置、プログラム更新方法、およびコンピュータプログラム」が 公開されました。( 2019/02/28)

    【課題・解決手段】車両に搭載された対象機器を制御する車載制御装置の制御プログラムの更新を制御する制御装置であって、制御プログラムの更新用プログラムを格納するためのメモリと、前記メモリに格納されている複... 詳細

  • アウタボックス株式会社の「 サーバ装置」が 公開されました。( 2019/02/28)

    【課題・解決手段】目的はネットワーク上に保存されているファイルのセキュリティを向上することである。サーバ装置は複数の報告案件にそれぞれ対応する複数のWEBページファイルを、案件IDとURL情報とを関連... 詳細

  • 株式会社FiNCTechnologiesの「 方法」が 公開されました。( 2019/02/28)

    【課題】インスタント・メッセージング・アプリケーションにおいて、トークルーム内のメッセージングを促進するためのユーザを支援方法を提供する。【解決手段】第1ユーザを補助するためにコンピュータによって実装... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する挑戦したい社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ