(57)【特許請求の範囲】
【請求項１】
ひとつ以上のデータネットワークを介してメタデータサーバとターゲットコンテンツアイテムブロックサーバとに動作可能に結合される計算デバイスにより行われる方法であって、前記計算デバイスがひとつ以上のプロセッサとインストラクションを保持するストレージ媒体とを備え、前記インストラクションは前記方法を行うために前記ひとつ以上のプロセッサにより実行され、前記方法は、
コンテンツアイテムブロックの識別子を決定することであって、コンテンツアイテムが前記コンテンツアイテムブロックからなる、決定することと、
前記計算デバイスが、コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補コンテンツアイテムブロックサーバの識別子を、前記メタデータサーバから、受信することであって、前記コンテンツアイテムが前記コンテンツアイテム名前空間に属する、受信することと、
前記計算デバイスが、前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていない前記コンテンツアイテムブロックの数を決定することと、
前記計算デバイスが、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていない前記コンテンツアイテムブロックの前記数に少なくとも部分的に基づいて、前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することと、
前記ターゲットコンテンツアイテムブロックサーバの選択に基づいて、前記計算デバイスが、前記コンテンツアイテムブロックのうち前記ターゲットコンテンツアイテムブロックサーバに保持されていなかった全てのコンテンツアイテムブロックを、前記ターゲットコンテンツアイテムブロックサーバにアップロードすることと、を含む方法。
【請求項２】
前記コンテンツアイテムの生成または変更を検出することと、
前記コンテンツアイテム名前空間の識別子を前記メタデータサーバに送信することと、をさらに含み、
前記コンテンツアイテム名前空間が割り当てられている先の前記ひとつ以上の候補コンテンツアイテムブロックサーバの前記識別子を受信することは、前記コンテンツアイテム名前空間の識別子を前記メタデータサーバに送信することに少なくとも部分的に基づく請求項１に記載の方法。
【請求項３】
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、さらに、以下のもののうちのひとつ以上に少なくとも部分的に基づく請求項１に記載の方法。
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた決定されたネットワークパフォーマンス測度、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた決定されたサーバ負荷測度、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた決定されたコンテンツアイテムブロックアップロード時間、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた決定されたコンテンツアイテムブロックアップロードレート、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた決定された優先度。
【請求項４】
前記コンテンツアイテムブロックの前記識別子に少なくとも部分的に基づいて、前記コンテンツアイテムを構成する前記コンテンツアイテムブロックのなかから前記ターゲットコンテンツアイテムブロックサーバに保持されていなかった全てのコンテンツアイテムブロックを決定することをさらに含む請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたネットワークパフォーマンス測度を決定することをさらに含み、
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、さらに、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記ネットワークパフォーマンス測度に少なくとも部分的に基づく請求項１に記載の方法。
【請求項６】
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたサーバ負荷測度を決定することをさらに含み、
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、さらに、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記サーバ負荷測度に少なくとも部分的に基づく請求項１に記載の方法。
【請求項７】
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロード時間を決定することをさらに含み、
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、さらに、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記コンテンツアイテムブロックアップロード時間に少なくとも部分的に基づく請求項１に記載の方法。
【請求項８】
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバのそれぞれについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロードレートを決定することをさらに含み、
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、さらに、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記コンテンツアイテムブロックアップロードレートに少なくとも部分的に基づく請求項１に記載の方法。
【請求項９】
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバのそれぞれについて、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた優先度を決定することをさらに含み、
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、さらに、前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられた前記優先度に少なくとも部分的に基づく請求項１に記載の方法。
【請求項１０】
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちの少なくともひとつの候補コンテンツアイテムブロックサーバについて、（Ａ）前記少なくともひとつの候補コンテンツアイテムブロックサーバと（Ｂ）前記コンテンツアイテム名前空間とに関連付けられた優先度を決定することをさらに含み、
前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、さらに、前記少なくともひとつの候補コンテンツアイテムブロックサーバおよび前記コンテンツアイテム名前空間に関連付けられた前記優先度に少なくとも部分的に基づく請求項１に記載の方法。
【請求項１１】
前記優先度は、前記少なくともひとつの候補コンテンツアイテムブロックサーバについて決定された以下のもののうちの少なくともひとつに少なくとも部分的に基づいて重み付けされる請求項９または１０に記載の方法。
前記コンテンツアイテムを構成するコンテンツアイテムブロックのうち、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていないものの前記数、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたネットワークパフォーマンス測度、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたサーバ負荷測度、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロード時間、
前記少なくともひとつの候補コンテンツアイテムブロックサーバに関連付けられたコンテンツアイテムブロックアップロードレート。
【請求項１２】
前記ターゲットコンテンツアイテムブロックサーバはオンプレミスブロックサーバであり、
前記方法はさらに、
前記アップロードすることに少なくとも部分的に基づいて、前記メタデータサーバから、前記コンテンツアイテムが前記オンプレミスブロックサーバに委託されたことを示すものを受信することと、
前記コンテンツアイテムが前記オンプレミスブロックサーバに委託されたことを示すものを受信したことに少なくとも部分的に基づいて、ファイルシステムにおける、前記コンテンツアイテムに対応するファイルの委託状態インジケータを変更することで、前記コンテンツアイテムがオフプレミスブロックサーバではなく前記オンプレミスブロックサーバに委託されたことを可視化することと、を含む請求項１から１１のいずれか一項に記載の方法。
【請求項１３】
前記コンテンツアイテムは第１コンテンツアイテムであり、前記ターゲットコンテンツアイテムブロックサーバは第１ターゲットコンテンツアイテムブロックサーバであり、
前記方法はさらに、
コンテンツアイテムブロック識別子の第１集合を前記メタデータサーバから受信することであって、各コンテンツアイテムブロック識別子が複数のブロックのなかから第２コンテンツアイテムのブロックを特定する、受信することと、
サーバ識別子の第２集合を前記メタデータサーバから受信することであって、各サーバ識別子が複数の候補コンテンツアイテムブロックサーバのうちのひとつを特定し、前記候補コンテンツアイテムブロックサーバのそれぞれが前記第２コンテンツアイテムに関連付けられた特定のコンテンツアイテム名前空間を含むひとつ以上のコンテンツアイテム名前空間に割り当てられている、受信することと、
コンテンツアイテムブロック識別子の前記受信された第１集合に少なくとも部分的に基づいて、前記第２コンテンツアイテムの前記複数のブロックのなかから、前記計算デバイスによってローカルで保持されていないひとつ以上のコンテンツアイテムブロックを決定することと、
サーバ識別子の前記受信された第２集合に少なくとも部分的に基づいて、前記複数の候補コンテンツアイテムブロックサーバのうちのひとつを、ダウンロード元の第２ターゲットコンテンツアイテムブロックサーバとして選択することと、
前記第２コンテンツアイテムの前記複数のブロックのなかで前記計算デバイスによってローカルで保持されていなかった少なくともひとつのコンテンツアイテムブロックを、前記第２ターゲットコンテンツアイテムブロックサーバから、ダウンロードすることと、を含む請求項１から１１のいずれか一項に記載の方法。
【請求項１４】
前記計算デバイスが、前記コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補コンテンツアイテムブロックサーバの識別子を受信することは、前記計算デバイスが、前記コンテンツアイテム名前空間が割り当てられている先の二つ以上の候補コンテンツアイテムブロックサーバの識別子を受信することに基づき、
前記計算デバイスが、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていない前記コンテンツアイテムブロックの前記数に少なくとも部分的に基づいて、前記ひとつ以上の候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記計算デバイスが、前記少なくともひとつの候補コンテンツアイテムブロックサーバに保持されていない前記コンテンツアイテムブロックの前記数に少なくとも部分的に基づいて、前記二つ以上の候補コンテンツアイテムブロックサーバのうちのひとつを選択することに基づく請求項１から１３のいずれか一項に記載の方法。
【請求項１５】
ひとつ以上のデータネットワークによってメタデータサーバとターゲットコンテンツアイテムブロックサーバとに動作可能に結合される計算デバイスにより行われる方法であって、前記計算デバイスがひとつ以上のプロセッサとインストラクションを保持するストレージ媒体とを備え、前記インストラクションは前記方法を行うために前記ひとつ以上のプロセッサにより実行され、前記方法は、
コンテンツアイテムブロック識別子の第１集合を前記メタデータサーバから受信することであって、各コンテンツアイテムブロック識別子が複数のブロックのなかからコンテンツアイテムのブロックを特定する、受信することと、
サーバ識別子の第２集合を前記メタデータサーバから受信することであって、各サーバ識別子が複数の候補コンテンツアイテムブロックサーバのうちのひとつを特定し、前記候補コンテンツアイテムブロックサーバのそれぞれが前記コンテンツアイテムに関連付けられた特定のコンテンツアイテム名前空間を含むひとつ以上のコンテンツアイテム名前空間に割り当てられている、受信することと、
コンテンツアイテムブロック識別子の前記受信された第１集合に少なくとも部分的に基づいて、前記コンテンツアイテムの前記複数のブロックのなかから、前記計算デバイスによってローカルで保持されていないひとつ以上のコンテンツアイテムブロックを決定することと、
サーバ識別子の前記受信された第２集合に少なくとも部分的に基づいて、前記候補コンテンツアイテムブロックサーバのうちのひとつを、ダウンロード元の前記ターゲットコンテンツアイテムブロックサーバとして選択することと、
前記コンテンツアイテムの前記複数のブロックのなかで前記計算デバイスによってローカルで保持されていなかった少なくともひとつのコンテンツアイテムブロックを、前記ターゲットコンテンツアイテムブロックサーバから、ダウンロードすることと、
前記候補コンテンツアイテムブロックサーバのうちの他の少なくともひとつを、ダウンロード元の別のターゲットコンテンツアイテムブロックサーバとして選択することと、
前記コンテンツアイテムの前記複数のブロックのなかで前記計算デバイスによってローカルで保持されていなかった少なくともひとつの他のコンテンツアイテムブロックを、前記別のターゲットコンテンツアイテムブロックサーバから、ダウンロードすることと、を含む方法。
【請求項１６】
前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたネットワークパフォーマンス測度を決定することをさらに含み、
前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記ネットワークパフォーマンス測度に少なくとも部分的に基づく請求項１５に記載の方法。
【請求項１７】
前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたサーバ負荷測度を決定することをさらに含み、
前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記サーバ負荷測度に少なくとも部分的に基づく請求項１５に記載の方法。
【請求項１８】
前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックダウンロード時間を決定することをさらに含み、
前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記コンテンツアイテムブロックダウンロード時間に少なくとも部分的に基づく請求項１５に記載の方法。
【請求項１９】
前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックダウンロードレートを決定することをさらに含み、
前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記コンテンツアイテムブロックダウンロードレートに少なくとも部分的に基づく請求項１５に記載の方法。
【請求項２０】
前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた優先度を決定することをさらに含み、
前記候補コンテンツアイテムブロックサーバのうちのひとつを前記ターゲットコンテンツアイテムブロックサーバとして選択することは、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられた前記優先度に少なくとも部分的に基づく請求項１５に記載の方法。
【請求項２１】
前記優先度は、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつについて決定された以下のもののうちの少なくともひとつに少なくとも部分的に基づいて重み付けされる請求項２０に記載の方法。
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたネットワークパフォーマンス測度、
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたサーバ負荷測度、
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロード時間、
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロードレート。
【請求項２２】
ひとつ以上のデータネットワークによってメタデータサーバとターゲットコンテンツアイテムブロックサーバとに動作可能に結合される計算デバイスにより行われる方法であって、前記計算デバイスがひとつ以上のプロセッサとインストラクションを保持するストレージ媒体とを備え、前記インストラクションは前記方法を行うために前記ひとつ以上のプロセッサにより実行され、前記方法は、
コンテンツアイテムブロック識別子の第１集合を前記メタデータサーバから受信することであって、各コンテンツアイテムブロック識別子が複数のブロックのなかからコンテンツアイテムのブロックを特定する、受信することと、
サーバ識別子の第２集合を前記メタデータサーバから受信することであって、各サーバ識別子が複数の候補コンテンツアイテムブロックサーバのうちのひとつを特定し、前記候補コンテンツアイテムブロックサーバのそれぞれが前記コンテンツアイテムに関連付けられた特定のコンテンツアイテム名前空間を含むひとつ以上のコンテンツアイテム名前空間に割り当てられている、受信することと、
コンテンツアイテムブロック識別子の前記受信された第１集合に少なくとも部分的に基づいて、前記コンテンツアイテムの前記複数のブロックのなかから、前記計算デバイスによってローカルで保持されていないひとつ以上のコンテンツアイテムブロックを決定することと、
前記候補コンテンツアイテムブロックサーバのうちの少なくともひとつについて、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつおよび前記コンテンツアイテム名前空間に関連付けられた優先度を決定することと、
サーバ識別子の前記受信された第２集合並びに前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつおよび前記コンテンツアイテム名前空間に関連付けられた前記優先度に少なくとも部分的に基づいて、前記候補コンテンツアイテムブロックサーバのうちのひとつを、ダウンロード元の前記ターゲットコンテンツアイテムブロックサーバとして選択することと、
前記コンテンツアイテムの前記複数のブロックのなかで前記計算デバイスによってローカルで保持されていなかった少なくともひとつのコンテンツアイテムブロックを、前記ターゲットコンテンツアイテムブロックサーバから、ダウンロードすることと、を含む方法。
【請求項２３】
前記優先度は、前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつについて決定された以下のもののうちの少なくともひとつに少なくとも部分的に基づいて重み付けされる請求項２２に記載の方法。
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたネットワークパフォーマンス測度、
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたサーバ負荷測度、
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロード時間、
前記候補コンテンツアイテムブロックサーバのうちの前記少なくともひとつに関連付けられたコンテンツアイテムブロックアップロードレート。
【請求項２４】
ひとつ以上のデータネットワークによってクライアントと動作可能に結合される計算システムにより行われる方法であって、前記計算システムがひとつ以上のプロセッサとインストラクションを保持するストレージ媒体とを備え、前記インストラクションは前記方法を行うために前記ひとつ以上のプロセッサにより実行され、前記方法は、
コンテンツアイテム名前空間に属する新たなコンテンツアイテムを検出することと、
前記コンテンツアイテム名前空間がマウントされる前記クライアントを決定することと、
前記コンテンツアイテム名前空間に対する更新が利用可能であることを前記クライアントに通知することと、
現在のクライアントジャーナルカーソル値を前記クライアントから受信することであって、前記現在のクライアントジャーナルカーソル値が前記コンテンツアイテム名前空間に関連付けられる、受信することと、
前記受信した現在のクライアントジャーナルカーソル値に少なくとも部分的に基づいて、前記クライアントに保持されていない前記新たなコンテンツアイテムのコンテンツアイテムブロックの識別子の集合を決定することと、
前記コンテンツアイテム名前空間が割り当てられている先の候補コンテンツアイテムブロックサーバを決定することと、
コンテンツアイテムブロックの識別子の前記集合と、前記コンテンツアイテム名前空間が割り当てられている先の前記候補コンテンツアイテムブロックサーバの識別子と、を前記クライアントに送信することと、を含む方法。
【請求項２５】
１つ以上のプロセッサによって実行されると、請求項１から２４に記載の方法を実行させる命令を備えるコンピュータプログラム。
【請求項２６】
１つ以上のプロセッサと、
前記ひとつ以上のプロセッサによって実行された場合、請求項１から２４に記載の方法を実行させるインストラクションを保持するひとつ以上の保持媒体と、を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願はデジタルコンテンツアイテムの管理に関する。特に、下記の本発明の例示的な実施の形態は、オンラインコンテンツ管理サービスでホストされるデジタルコンテンツアイテムの管理に関する。
【背景技術】
【０００２】
伝統的に、企業は自身が所有し運用するネットワークファイルサーバにデジタルコンテンツアイテム（例えば、ドキュメント、ファイル、および他のデジタル情報）を格納してきた。そのようなファイルサーバは、多くの場合、ネットワークファイヤウォールの後ろのオンプレミスに位置している。ネットワークファイヤウォールはファイルサーバへの認証されていないネットワークアクセスを防ぐ。この構成は、ファイルサーバへのネットワークアクセスの大半または全てがネットワークファイヤウォールの後ろにあるコンピュータ、例えばファイルサーバと同じローカルエリアネットワーク（ＬＡＮ）に接続されたコンピュータ、によるものである場合に、上手く働く。ある場合には、ファイヤウォールの外側からの（例えば、インターネットを介した）ファイルサーバへのネットワークアクセスは仮想プライベートネットワーク（ＶＰＮ）によって促進される。ＶＰＮは実効的に、ファイヤウォールの外側のコンピュータを、ファイルサーバから見て、あたかもファイヤウォールの後ろにいるかのように見せる。
【０００３】
しかしながら、今日、労働力はよりグローバルでよりモバイルとなっている。このことは、ブロードバンドインタ−ネット接続の広い可用性と、比較的低料金で、そのうえ強力な、例えば、携帯電話、ラップトップコンピュータ及びタブレットコンピュータなどのポータブル個人用計算デバイスの可用性とによって広く拍車がかかっている。その結果、従業員は仮想的にどこでも仕事をすることができ、仕事を終わらせるためにオフィスに物理的に存在する必要がない（例えば遠隔で仕事をすることができる）。
【０００４】
最近、オンラインコンテンツ管理サービスは、従業員がインターネット又は他のネットワーク上でアクセス可能な「オンラインに」コンテンツアイテムを格納することが可能になった。企業はオンラインコンテンツ管理サービスを用いて、そのサービスによって動作するサーバ上に企業のコンテンツアイテムを「ホスト」することができる。オンラインコンテンツ管理サービスの例には、カリフォルニア州サンフランシスコのＤｒｏｐｂｏｘ，Ｉｎｃ．により提供されている「ドロップボックス」サービスがある。
【０００５】
コンテンツアイテムのオンラインストレージは、企業やその従業員等に多くの利益をもたらす。ドロップボックス（Ｄｒｏｐｂｏｘ）は、例えば、ホストしたコンテンツアイテムを、複数のデバイスとユーザに同期及び共有する機能を提供する。このエンドユーザとドロップボックスの両方にコンテンツアイテムを格納することに起因する柔軟性は、種々の異なるオンサイト及び遠隔の就労形態をサポートし、従業員には利便性を、そして雇用者には増大した従業員の生産性を提供する。
【０００６】
企業によって生成されるデジタル情報の量が増加すれば、オンラインコンテンツ管理サービスを用いた企業のコンテンツアイテムのホスティングは増加することのみが期待される。しかしながら、いくつかのホストした情報のデリケートな性質により、企業ユーザを含むそのようなサービスのユーザは、サービスを用いてホストするコンテンツアイテムに対してより高いレベルのコントロールを提供するサービスへの改善を理解するだろう。加えて、今日の企業においてブロードバントインターネット接続が普及する一方で、インターネットを介したコンテンツアイテムのアップロード及びダウンロードは、未だにユーザが期待する又は望むよりもより長い時間を要し得る。
【０００７】
このセクションで説明したアプローチは、さらに追及されうるアプローチであって、既に着想され、追及されたアプローチではない。したがって、特に示唆しない限り、ここで説明した任意のアプローチが、ここに組み込まれることにより単に先行技術として認識されることが想定されるべきではない。
【図面の簡単な説明】
【０００８】
本発明の実施例は例示目的で説明されるものであり、参照番号等が類似の要素を参照するような、以下に示す添付の図面の図における限定による方法で説明されるものではない。
【０００９】
【図１】本発明のいくつかの例示的な実施の形態が実施されるシステム環境例を示すブロック図である。
【００１０】
【図２】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバへアップロードするためのプロセスのフロー図である。
【００１１】
【図３】本発明のいくつかの例示的な実施の形態に係る、ユーザアカウントとコンテンツアイテム名前空間のメタデータのブロック図である。
【００１２】
【図４】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムサーバジャーナルのブロック図である。
【００１３】
【図５】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオフプレミスブロックサーバへアップロードするためのインタラクション図である。
【００１４】
【図６】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオンプレミスブロックサーバへアップロードするためのインタラクション図である。
【００１５】
【図７】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセスのフロー図である。
【００１６】
【図８】本発明のいくつかの例示的な実施の形態に係る、リンクされたデバイスメタデータのブロック図である。
【００１７】
【図９】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをブロックサーバからダウンロードするインタラクション図である。
【００１８】
【図１０】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバへアップロードするためのプロセスのフロー図である。
【００１９】
【図１１】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムサーバジャーナルのブロック図である。
【００２０】
【図１２】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオフプレミスブロックサーバへアップロードするためのインタラクション図である。
【００２１】
【図１３】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをオンプレミスブロックサーバへアップロードするためのインタラクション図である。
【００２２】
【図１４】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセスのフロー図である。
【００２３】
【図１５】本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするインタラクション図である。
【００２４】
【図１６】本発明の例示的な実施の形態が実施され得る計算デバイスの非常に一般的なブロック図である。
【００２５】
【図１７】計算デバイスの動作を制御する基本的なソフトウエアシステムのブロック図である。
【発明を実施するための形態】
【００２６】
以下の説明では、本発明の実施例の十分な理解を提供するために、説明の目的で多くの特定事例を明らかにする。しかしながら、本実施例がそれらの特定事例なしに実施されうることは明らかであろう。他の例では、本実施例を不必要に不明りょうにすることを避けるために、既知の構成やデバイスがブロック図の形式で示される。
【００２７】
例示的な実施の形態は以下の概要に従って説明される。
１．０  説明例
２．０  システム環境の例
３．０  第１の例示的な同期プロトコル動作
３．１  コンテンツアイテムのアップロード
３．１．１  ユーザアカウントおよびコンテンツアイテム名前空間メタデータ
３．１．２  コンテンツアイテム名前空間マウント情報
３．１．３  コンテンツアイテムサーバジャーナル
３．１．４  例示的なアップロードインタラクション
３．２  コンテンツアイテムのダウンロード
３．２．１  リンクされたデバイスメタデータ
３．２．２  例示的なダウンロードインタラクション
４．０  第２の例示的な同期プロトコル動作
４．１  アップロードプロセス
４．１．１  コンテンツアイテムサーバジャーナル
４．１．２  例示的なアップロードインタラクション
４．２  ダウンロードプロセス
４．２．１  例示的なダウンロードインタラクション
５．０  ストリーミングダウンロード最適化
５．１  第１の例示的な同期プロトコル
５．２  第２の例示的な同期プロトコル
６．０  オンプレミスコンテンツ管理サービス
７．０  基本的な計算ハードウエアとソフトウエア
７．１  基本的な計算デバイス
７．２  基本的なソフトウエアシステム
８．０  拡張及び代替
−−−−
１．０      説明例
【００２８】
本発明の実施例は、オンラインコンテンツ管理サービスのユーザに、そのようなサービスを用いてホストされるユーザのコンテンツアイテムにわたる、より高いコントロールを提供する。以下では、多くの、コンピュータに実装されるプロセス及びネットワークのやり取りが記載される。これらのプロセス及びネットワークのやり取りの記載において役立つように、これから何人かの説明例のユーザが用いられる。これらの例は、本発明のいくつかの実施例の特徴を説明するために用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。これらの例は限定を意図するものではなく、単に説明として提供されるものである。
【００２９】
第１のユーザ例は、以下、「アルファ会社」として参照される。第１の例として、アルファ会社は多数の従業員を有し、従業員は、オンラインコンテンツ管理サービスを用いて、彼らの業務コンピュータに格納されたコンテンツアイテムを、当該サービスによって運用されるインターネット上のサーバに格納されるコンテンツアイテムと同期する。アルファ会社は、コンテンツアイテムが彼らの業務コンピュータに格納されているため、従業員の業務コンピュータがインターネットに接続していない場合に当該コンテンツアイテムへのアクセスを有する、ということを好む。同時に、アルファ会社は、コンテンツアイテムがオンラインコンテンツ管理サービスのサーバと、バックアップ及び共有の目的で同期される、ということも好む。アルファ会社はまた、可能な場合に、従業員の業務コンピュータ間のコンテンツアイテムの変更を同期するための必要な時間を削減することを好む。
【００３０】
第２の例として、アルファ会社の従業員は地理的に分散化され得る。例えば、アルファ会社の本社はサンフランシスコにあり得るが、サテライトオフィスをニューヨーク、オースティン及びシアトルにも有し得る。会社アルファのチームも地理的に分散され得る。例えば、サンフランシスコとオースティンのオフィスの従業員がプロジェクトで共同し得る。アルファ会社は、チームで共同したコンテンツアイテムへの変更がサンフランシスコとオースティンのオフィスのコンピュータ間で素早く同期されることを好むだろう。
【００３１】
第３の例として、サンフランシスコとオースティンのアルファ会社の従業員が共同するプロジェクトは非常にデリケート（例えば機密）であり得る。この場合、アルファ会社は、プロジェクトに関するコンテンツアイテムに渡る、より多くのコントロールと監視を保持することを望み得る。例えば、アルファ会社は、プロジェクトのコンテンツアイテムがオンプレミスに格納され、オンラインコンテンツ管理サービスによって動作するサーバには格納されないことを好み得る。
【００３２】
本発明の特徴を用いることにより、アルファ会社のようなユーザ及び他のユーザは、オンラインコンテンツ管理サービスによって管理される彼らのコンテンツアイテムがどこにホストされるのかをコントロールすることができる。特に、実施例は、オンプレミスにのみ、オフプレミスにのみ、又は、オンプレミスとオフプレミスとの両方に、ユーザがコンテンツアイテムをホストすることを可能にする。オンプレミスにコンテンツアイテムをホストする場合、ユーザは、（いくつかの実施例はオンラインコンテンツ管理サービスがオンプレミスのコンテンツアイテムのストレージハードウエアを提供することを含むが）彼ら自身のコンテンツアイテムのストレージハードウエアを用いることができる。実施例は、エンドユーザデバイスが、エンドユーザデバイスにおいて成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、へ同期することを可能にする。実施例はまた、エンドユーザデバイスが、他のエンドユーザデバイスによって成されたコンテンツアイテムの変更を、オンプレミスのストレージ、オフプレミスのストレージ、又はオンプレミスのストレージとオフプレミスのストレージとの両方、から同期することを可能にする。
【００３３】
これらの説明の例は、以降の記載のいくつかと共に用いられ、本発明のいくつかの実施例の特定の特徴を記載する際に役立つ。
２．０  システム環境の例
【００３４】
本発明のいくつかの実施例の特徴が、図１を参照して今から記載される。図１は、本発明のいくつかの実施例が実施されるシステム環境１００の例に係るブロック図である。図示されるように、ユーザ（例えば１０２−１）は、個人用計算デバイス（例えば１１０−１）を有する又は用いることができる。個人用計算デバイスはローカルストレージ（例えば１１２−１）とコンテンツアイテム同期エージェント（例えば１１４−１）とを有することができる。個人用計算デバイスのローカルストレージは、１つ以上のコンテンツアイテム１１３を格納することができる。オンプレミスブロックサーバ１２０は、ブロックサービス１２２、ブロックストレージ１２４、及びブロック管理エージェント１２６から構成されることができる。ブロックストレージ１２４は、１つ以上のコンテンツアイテムブロック１２５を格納することができる。オンラインコンテンツ管理サービスは、コントロールプレーン、ストレージプレーン、及びデータプレーンから構成されることができる。コントロールプレーンは通知サーバ１４０、メタデータサーバ１５０、及びウェブサイト１７０を含むことができる。ストレージプレーンはオフプレミスブロックサーバ１３０を含むことができる。オフプレミスブロックサーバ１３０は、ブロックサービス１３２、及びブロックストレージ１３４から構成されることができる。オフプレミスブロックサーバ１３０のブロックストレージ１２４は、１つ以上のコンテンツアイテムブロック１２５を格納することができる。バックエンドデータバスは、計算デバイス、ネットワーク、及びネットワークデバイスの集合から構成されることができ、ネットワークデバイスは、ネットワーク通信と、サーバ１３０、１４０、１５０及び１７０のものを含む、コントロールプレーンとストレージプレーンとの間やその内部のデータの移動とを容易にする。バックエンドデータバスはまた、サーバ１３０、１４０、１５０及び１７０のものを含む、コントロールプレーンとストレージプレーンとによってメタデータプレーン１８０へのアクセスを容易にすることができる。データプレーン１８０は、１つ以上の揮発性又は不揮発性メモリをベースとした、分散可能な、データを検索及び格納するデータベースシステム（例えばメムキャッシュ（ｍｅｍｃａｃｈｅ）、ＲＤＢＭＳ、分散キー・バリューストア等）から構成されることができる。
【００３５】
図１の例では、システム環境１００は、個人用計算デバイス１１０−１及び個人用計算デバイス１１０−２をそれぞれ有する又は使用するユーザ１０２−１及び１０２−２を含む。個人用計算デバイス１１０−１は、ローカルストレージ１１２−１とコンテンツアイテム同期エージェント１１４−１とを有する。個人用計算デバイス１１０−２も、ローカルストレージ１１２−２とコンテンツアイテム同期エージェント１１４−２とを有する。図１は、明示的な例を提供する目的で、システム環境１００における２人のユーザ（１０２−１及び１０２−２）と２つの個人用計算デバイス（１１０−１及び１１０−２）のみを示しているが、システム環境１００は、２人以上のユーザと、それぞれがローカルストレージ及びコンテンツアイテム同期エージェントを有する２つ以上の個人用計算デバイスとを含んでよいことは理解されるべきである。例えば、システム環境１００は、数百又は数千又は数百万又はそれ以上のユーザと、数百又は数千又は数百万又はそれ以上の個人用計算デバイスを有してよい。更に、ユーザと個人用計算デバイスとの間に一対一の対応は要求されない。例えば、単一の個人用計算デバイスは複数のユーザによって使用されてもよく、単一のユーザは複数の個人用計算デバイスを有し又は使用してもよい。
【００３６】
本発明のいくつかの実施例に従って、ユーザ１０２−１は、個人用計算デバイス１１０−１を用いて、個人用計算デバイス１１０−１のローカルストレージ１１２−１にコンテンツアイテム１１３を追加し又は変更することができる。その後、個人用計算デバイス１１０−１におけるコンテンツアイテム同期エージェント１１４−１は、ローカルストレージ１１２−１へのコンテンツアイテム１１３の追加又は変更を自動的に検出し、このコンテンツアイテム１１３をオンプレミスブロックサーバ１２０又はオフプレミスブロックサーバ１３０にアップロードする。いくつかの実施例によれば、アップロードは、以降でより詳細に説明される実施例のコンテンツアイテム同期プロトコルに従う、コンテンツアイテム同期エージェント１１４−１とメタデータサーバ１５０との間のネットワーク通信によって促進される。
【００３７】
本発明のいくつかの実施例に従って、他の個人用計算デバイス１１０−２は、個人用計算デバイス１１２−２のローカルストレージ１１２−２に追加された又は変更されたコンテンツアイテム１１３を自動的にダウンロードすることができる。初めに、通知サーバ１４０は、個人用計算デバイス１１２−２におけるコンテンツアイテム同期エージェント１１４−２に、コンテンツアイテム１１３の新たなバージョンが利用可能であることを通知する。その後、コンテンツアイテム同期プロトコルに従った同期エージェント１１４−２とメタデータサーバ１５０との間のネットワーク通信による指示の通りに、コンテンツアイテム同期エージェント１１４−２は、コンテンツアイテム１１３の新たなバージョンを、オンプレミスブロックサーバ１２０又はオフプレミスブロックサーバ１３０からダウンロードする。ダウンロードの後に、コンテンツアイテム１１３の新たなバージョンはローカルストレージ１１２−２におけるユーザ１０２−２に利用可能となる。
【００３８】
個人用計算デバイス（例えば１１０−１又は１１０−２）は据え置き用又は携帯用計算デバイスであることができる。例えば、個人用計算デバイスは、デスクトップコンピュータ、ワークステーションコンピュータ、携帯電話、ラップトップコンピュータ、タブレットコンピュータ、又は他の据え置き用又は携帯用計算デバイスであることができる。個人用計算デバイスは、例えば、図１６との関連で後述する基本的な計算デバイス１６００のもののような、１以上のハードウエア要素から構成されてもよい。個人用計算デバイスはまた、例えば、図１７との関連で後述するソフトウエアシステム１７００のような、基本的なソフトウエアシステムを用いて構成されてもよい。
【００３９】
ローカルストレージ（例えば１１２−１又は１１２−２）は、物理ホストインタフェース（例えば、シリアルアタッチドＳＣＩＳ（ＳｅｒｉａｌＡｔｔａｃｈｅｄＳＣＩＳ）、シリアルＡＴＡ、ＰＣＩエクスプレス、ファイバチャネル（ＦｉｂｒｅＣｈａｎｎｅｌ）、ＵＳＢなど）によって個人用計算デバイス１１０のバスに接続される、電子的、磁気的又は光学的なデータストレージ機構であり得る。例えば、個人用計算デバイスの、データストレージ機構は、ハードディスク、ソリッドステートドライブ、又は光学ドライブであり得る。代替的に、ローカルストレージは、個人用計算デバイス上に「マウント」される、例えば、ローカルエリアネットワーク（ＬＡＮ）上のネットワークデータストレージのような、ネットワークドライブであり得る。ネットワークドライブをマウントすることにより、ネットワークドライブに格納されるデータは、ネットワークドライブがデバイスとは別個にネットワークを跨いで物理的に置かれても、ユーザと、個人用計算デバイス（例えばデバイスの物理ドライブ上）に格納される個人用計算デバイス上で実行されるアプリケーションとから見えるようになる。ひとたびマウントされると、個人用計算デバイスは、典型的に、例えば、ＵＮＩＸ用のネットワークファイルシステム（ＮＦＳ）プロトコル、又は、ウインドウズ（ＷＩＮＤＯＷＳ）用のサーバメッセージブロック（ＳＭＢ）プロトコルのようなネットワークファイルシステムプロトコルに従って、ネットワークドライブから及びネットワークドライブへ読み書きする。
【００４０】
個人用計算デバイスのローカルストレージは、コンテンツアイテム１１３を格納してもよい。「コンテンツアイテム」はデジタル情報の集合である。ローカルストレージに格納される場合、コンテンツアイテムはファイルシステムのファイルに対応し得る。例えば、コンテンツアイテムは、文書ファイル（例えばワードプロセッシング文書、プレゼンテーション文書、スプレッドシート文書又は他の種別の文書）、画像ファイル（例えば、ｊｐｇ，ｔｉｆｆ，ｇｉｆ又は他の種別の画像ファイル）、音声ファイル（例えば、  ｍｐ３，ａｉｆｆ，ｍ４ａ，ｗａｖ又は他の種別の音声ファイル）、映像ファイル（例えば、ｍｏｖ，ｍｐ４，ｍ４ｖ又は他の種別の映像ファイル）、ウェブページファイル（例えば、ｈｔｍ，ｈｔｍｌ又は他の種別のウェブページファイル）、テキスト又はリッチテキストファイル（例えば、ｔｘｔ，ｒｔｆ又は他の種別のテキスト又はリッチテキストファイル）、又は他の種別のファイルであり得る。ローカルストレージに格納される場合、コンテンツアイテムは，ファイルシステムのファイル・フォルダ階層内のファイルシステムパスを有し得る。例えば、ローカルストレージに格納されるコンテンツアイテムに対するファイルシステムパスは、文字列として「Ｃ：￥ｆｏｌｄｅｒ１￥ｆｏｌｄｅｒ２￥ｍｙ．ｆｉｌｅ」と表されてよい。ここで、「Ｃ：￥」はファイルシステムのルートを参照し、「ｆｏｌｄｅｒ１」はファイルシステムのルートにおけるファイルシステムフォルダを参照し、「ｆｏｌｄｅｒ２」は「ｆｏｌｄｅｒ１」ファイルシステムフォルダを用いてファイルシステムフォルダを参照し、「ｍｙ．ｆｉｌｅ」はコンテンツアイテムに対応する「ｆｏｌｄｅｒ２」ファイルシステムフォルダ内のファイルを参照する。「￥」文字は、文字列表現内の異なるファイルシステムフォルダとファイル参照とを線引きするために文字列表現内で用いられる。
【００４１】
個人用計算デバイス１１０−１及び１１０−２とオンプレミスブロックサーバ１２０とは、ローカルエリアネットワーク（ＬＡＮ）１６０に接続され得る。例えば、ＬＡＮ１６０は、これに限らないがＩＥＥＥ  ８０２．３又はＩＥＥＥ  ８０２．１１ベースのネットワークを含むＩＥＥＥ  ８０２ベースのネットワーク、又は、複数のこのようなネットワークの組み合わせであり得る。ＬＡＮ１６０は、ネットワークファイアウォールによってワイドエリアネットワーク（ＷＡＮ）１９０から保護されてよい。実施例では、ＷＡＮ１９０はインターネット又は他の公衆ネットワークである。特に、ネットワークファイアウォールは、サーバ１３０、１４０、１５０及び１７０を含むＷＡＮ１９０に接続するデバイスが、個人用計算デバイス１１０−１及び１１０−２とオンプレミスブロックサーバ１２０とを含むＬＡＮ１６０に接続するデバイスと、ネットワーク接続の確立を開始することを防止する。しかしながら、ネットワークファイアウォールは、サーバ１３０、１４０、１５０及び１７０を含むＷＡＮ１９０に接続するデバイスと確立するための、個人用計算デバイス１１０−１及び１１０−２とオンプレミスブロックサーバ１２０とを含むＬＡＮ１６０に接続するデバイスを発信元とする特定の種別のネットワーク接続を許可するように構成され得る。典型的に、ＬＡＮ１６０は、ＷＡＮ１９０と比較した場合により低いネットワークレイテンシとより高いネットワーク帯域とを有するが、所与の実装がそうでなければならないという要求があるわけではない。
【００４２】
オンプレミスブロックサーバ１２０、オフプレミスブロックサーバ１３０、通知サーバ１４０、メタデータサーバ１５０、ウェブサイト１７０及びメタデータプレーン１８０のいくつか又は全ては、１つ以上のサーバ計算デバイスによって実装されてよい。これらのそれぞれは、例えば、図１６との関連で後述する基本的な計算デバイス１６００のもののような、１以上のハードウエア要素から構成されてよく、これらのそれぞれはまた、例えば、図１７との関連で後述するソフトウエアシステム１７００のような、基本的なソフトウエアシステムを用いて構成されてもよい。２以上のサーバ計算デバイスによって実装される場合、サーバ計算デバイスは、ロードバランスされ、クラスタ化され、又は他の分散コンピューティングアレンジメントで構成されてもよい。
【００４３】
コンテンツアイテム同期エージェント、ブロックサービス１２２、ブロックエージェント１２６、ブロックサービス１３２、通知サーバ１４０、メタデータサーバ１５０、ウェブサイト１７０及びメタデータプレーン１８０のそれぞれの機能は、１つ以上の計算デバイスによって実行されるとその機能を果たす命令を有する１つ以上のコンピュータプログラムとして実装されてよい。しかしながら、この機能は、目下の特定の実装の要件に従って、ハードウエア（例えば、１つ以上の特定用途向け集積回路（ＡＳＩＣＳ）又は１つ以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ））、又はハードウエアとソフトウエアの組み合わせで実装され得る。
【００４４】
明りょうな例を提供する目的のため、図１は単一のオンプレミスブロックサーバ１２０のみを示しているが、システム環境１００は、オンラインコンテンツ管理サービスのユーザの関連するグループの数に応じて、数百又は数千又は数百万又はそれ以上のオンプレミスブロックサーバを含んでよい。例えば、オンラインコンテンツ管理サービスは、様々な異なる組織、業種、企業、学校、大学及び他のグループに属す数十億又はそれ以上のユーザをサポートしてもよい。これらの組織、業種、企業、学校、大学及び他のグループのそれぞれは、１以上のオンプレミスブロックサーバを有し又は使用してもよい。
【００４５】
以下で使用される「オンプレミス（ｏｎ−ｐｒｅｍｉｓｅｓ）」の語は、１つ以上の個人用計算デバイス及びオンラインコンテンツ管理サービスと、特に、オンラインコンテンツ管理サービスのオフプレミスブロックサーバ１３０とが相対的であることが意図される。オンプレミスブロックサーバ（例えば１２０）は、個人用計算デバイスとして同一の設備又は同一のビルディングに置かれてよいが、このように要求されるものではない。オンプレミスブロックサーバが個人用計算デバイスとして同一のローカルエリアネットワーク（例えば１６０）に接続されてもよいが、そのように要求されるものでもない。従って、ここでの「オンプレミス」ブロックサーバに対する参照は、所定の個人用計算デバイスに対して、ブロックサーバが、地理的及び／又はネットワーク的に、当該所定の個人用計算デバイスに対するオフプレミスブロックサーバ１３０よりも近いことを意味する。個人用計算デバイスは、個人用計算デバイスをオンプレミスブロックサーバに接続するネットワークが、個人用計算デバイスをオフプレミスブロックサーバ１３０に接続するネットワークよりも、より低いネットワークレイテンシ及び／又はより高いネットワーク帯域可用性を提供する場合、ネットワーク上のオフプレミスブロックサーバ１３０よりもオンプレミスブロックサーバに近くてよい。
【００４６】
個人用計算デバイスは、例えば、オンプレミスブロックサーバ１２０、オフプレミスブロックサーバ１３０、メタデータサーバ１５０及びウェブサイト１７０を含む、様々なサーバのネットワーク要求或いは単に「要求」を生成してもよい。そして、サーバ１２０、１３０、１５０及び１７０は、ネットワーク応答或いは単に「応答」を、個人用計算デバイスからの要求に対して返してよい。要求は典型的にはヘッダとペイロードとを含む。この要求ヘッダは典型的に、要求を受信するサーバへの要求ペイロードに対するコンテクストを提供する。要求に対する応答はまた、典型的にはヘッダとペイロードとを含む。応答のヘッダは典型的に、応答を受信する個人用計算デバイスへの応答ペイロードに対するコンテクストを提供する。個人用計算デバイスからの要求と、サーバによって返信されるその応答とは、１つ以上のネットワーク（例えば１６０及び１９０）を介して送信されてよく、例えば、ハイパーテキスト伝送プロトコル（ＨＴＴＰ）のような要求‐応答ネットワーキングプロトコルに従って生成されてよい。要求とその応答は、例えば、伝送制御プロトコル（ＴＣＰ）などのコネクション指向ネットワーキングプロトコルに従って個人用計算デバイスとサーバとによって確立されたネットワーク接続を介して、送信されてよい。ネットワーク接続は、２以上の要求と応答のペアがそのネットワーク接続を介して送信されるという意味において永続的であってよい。ネットワーク接続はまた、例えば、トランスポートレイヤセキュリティ（ＴＬＳ）又はセキュアソケットレイヤ（ＳＳＬ）暗号ネットワーキングプロトコルに従って暗号化されてもよい。しかしながら、特定のネットワーキングプロトコル又はネットワーキングプロトコルの特定のセットが実施例によって要求されるものではなく、ＨＴＴＰ、ＴＣＰ、ＴＬＳ又はＳＳＬ以外のプロトコルが、目下の特定の実装の要求に従って用いられてもよい。
３．０  第１の例示的な同期プロトコル動作
【００４７】
コンテンツアイテム同期プロトコルの第１の例示的動作は、図２−９を参照して以下に説明される。特に、第１の例に係る同期プロトコルの動作は、コンテンツアイテムをオンプレミスブロックサーバ（例えば、１２０）またはオフプレミスブロックサーバ１３０にアップロードする例、およびコンテンツアイテムをオンプレミスブロックサーバまたはオフプレミスブロックサーバからダウンロードする例で説明される。
３．１コンテンツアイテムのアップロード
【００４８】
図２を参照すると、本発明のいくつかの例示的な実施の形態に係る、新たなまたは変更されたコンテンツアイテムをパーソナル計算デバイス１１０−１から「ターゲット」ブロックサーバ（例えば、オンプレミスブロックサーバ１２０またはオフプレミスブロックサーバ１３０）へアップロードするためのプロセス２００を説明するフロー図である。以下にステップを図２に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
【００４９】
ステップ２０２で、ユーザ１０２−１はパーソナル計算デバイス１１０−１のローカルストレージ１１２−１において「新たな」コンテンツアイテムを追加するか変更する。例えば、ユーザ１０２−１はローカルストレージ１１２−１においてファイルを生成するか変更し、またはローカルストレージ１１２−１においてファイルをコピーするかダウンロードするか編集する。追加または変更されたコンテンツアイテムは、追加や変更がコンテンツアイテムの「新たな」バージョンを生み出すという意味で、「新しい」ものとされてもよい。追加の場合、新たなバージョンはコンテンツアイテムの最初または初期バージョンであってもよい。変更の場合、新たなバージョンはコンテンツアイテムの既存バージョンに基づいてもよい。以降、「新たな」コンテンツアイテムと称する。そのような称呼は、コンテンツアイテムの最初のバージョンの生成やコンテンツアイテムの既存バージョンの変更から生じるコンテンツアイテムの新しいバージョンを包含すべきものである。
【００５０】
ステップ２０４で、パーソナル計算デバイス１１０−１のコンテンツアイテム同期エージェント１１４−１は、ローカルストレージ１１２−１内の新たなコンテンツアイテムを検出する。例えば、コンテンツアイテム同期エージェント１１４−１はパーソナル計算デバイス１１０−１のオペレーティングシステムによって提供されるアプリケーションプログラミングインタフェース（ＡＰＩ）を用いて、ローカルストレージ１１２−１のファイルシステムに対する変更を監視してもよく、またはそれについて通知を受けてもよい。ファイルシステムに新たなファイルが追加されたりファイルシステムの既存ファイルが変更または削除された場合のようにファイルシステムに対する変更がなされた場合、オペレーティングシステムはＡＰＩを介してコンテンツアイテム同期エージェント１１４−１に通知してもよい。
【００５１】
ステップ２０６で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれを決定する。本明細書において、「コンテンツアイテム名前空間」は総じて、オンラインコンテンツ管理サービスの管理下にあり、かつ、オンラインコンテンツ管理サービスにより維持されているユーザアカウントおよびコンテンツアイテム名前空間メタデータにしたがいひとつ以上のユーザがアクセスを有するひとつ以上のコンテンツアイテムの集合を指す。特定のコンテンツアイテムが所属するコンテンツアイテム名前空間を、本明細書において、特定のコンテンツアイテムの「所属（ｏｗｎｉｎｇ）」コンテンツアイテム名前空間と称す場合がある。コンテンツアイテム同期エージェントがコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれをどのように決定するかを説明する前に、メタデータプレーン１８０に保持されるユーザアカウントおよびコンテンツアイテム名前空間メタデータのある背景が提供される。
３．１．１  ユーザアカウント及びコンテンツアイテム名前空間のメタデータ
【００５２】
図２に戻る前に図３を少し見ると、図３は、メタデータプレーン１８０に格納されるユーザアカウントとコンテンツアイテム名前空間メタデータ３００とを表す。特に、メタデータプレーン１８０は、オンラインコンテンツ管理サービスに保持される１つ以上のユーザアカウントに対応する、ユーザアカウントレコード３１０を格納し得る。いくつかの実施例では、メタデータプレーン１８０は数百、数千、数百万又はそれ以上のユーザアカウントレコード３１０を格納する。他の情報のうち、ユーザアカウントレコード３１０は、ユーザアカウント識別子３１２と１つ以上の認証済コンテンツアイテム名前空間識別子３１４とを有し得る。
【００５３】
ユーザアカウントレコード３１０のユーザアカウント識別子３１２は、メタデータプレーン１８０のユーザアカウントレコード３１０を識別する。いくつかの実施例では、ユーザアカウント識別子３１２は１２８ビットの値である。特別なセキュリティのため、ユーザアカウントレコード３１０のユーザアカウント識別子３１２は、時々と変更（例えば循環）されてもよい。従って、ユーザアカウントレコード３１０のユーザアカウント識別子３１４は、ユーザアカウントレコード３１０の存続期間に渡って変化してよい。しかしながら、ユーザアカウント識別子３１２が時々変更されることを要求するものではなく、ユーザアカウントレコード３１０は、ユーザアカウントの存続に対して同一のユーザアカウント識別子３１２を有しても良い。
【００５４】
ユーザアカウントレコード３１０の認証済コンテンツアイテム識別子３１４は、ユーザアカウントレコード３１０のユーザアカウント識別子３１２を所有するユーザがアクセスする認証を受けた、コンテンツアイテム名前空間を識別する。従って、オンラインコンテンツ管理サービスにユーザアカウントを保持するユーザは、ユーザアカウントに関連付けられた１つ以上のコンテンツアイテム名前空間へのアクセスを有し得る。更に、複数のユーザは、同一のコンテンツアイテム名前空間へのアクセスを有してもよい。そのようなコンテンツアイテム名前空間はしばしば「共有」コンテンツアイテム名前空間、或いはより口語的に「共有フォルダ」として参照され、これは、コンテンツアイテム名前空間が２以上のユーザアカウントによってアクセス可能であることによる。しかしながら、コンテンツアイテム名前空間を単一のユーザアカウントによってのみアクセス可能にすることも可能である。
【００５５】
ユーザは、ユーザアカウント識別子３１２に関連付けられる有効な認証クレデンシャル（例えば、有効なユーザ名とパスワード）を提供することにより、ユーザアカウント識別子３１２の所有を得ることができる。例えば、ユーザは、ウェブサイト１７０によってパーソナル計算デバイスに供給されるウェブページを介して、ウェブサイト１７０に認証クレデンシャルを提供してもよい。ユーザによって提供される認証クレデンシャルの有効性は、オンラインコンテンツ管理サービス又は第三者の認証サービス又は他の識別プロバイダによって確認されてもよい。
【００５６】
ひとたび認証クレデンシャルが確認されると、ユーザアカウント識別子３１２はユーザのパーソナル計算デバイスに提供され、例えばローカルストレージ内にローカルに格納される。ローカルに格納される場合、ユーザアカウント識別子３１２は特別なセキュリティのために暗号化されてよい。パーソナル計算デバイスにおけるコンテンツアイテム同期エージェントと他のアプリケーション（例えば、ウェブブラウザアプリケーション）は、様々なサーバ１２０、１３０、１４０、１５０及び１７０へ送信されるネットワーク要求内に、ローカルに格納されたユーザアカウント識別子３１２を含めてもよく、これによって、要求を行う特定のユーザアカウントを識別する。
３．１．２  コンテンツアイテム名前空間のマウント情報
【００５７】
図２に戻り、ステップ２０６で、コンテンツアイテム同期エージェント１１４−１は、ユーザアカウントレコード３１０の情報へのローカルアクセスを有してもよい。例えば、ユーザ１０２−１が、ユーザアカウントレコード３１０のユーザアカウント識別子３１２に関連付けられた有効な認証クレデンシャルを提供した後には、ユーザアカウントレコード３１０の情報が、パーソナル計算デバイス１１０−１へ（例えばメタデータサーバ１５０又はウェブサイト１７０から）ダウンロードされ、ローカルストレージ１１２−１に格納されてよい。ここで、ローカルストレージ１１２−１は、コンテンツアイテム同期エージェント１１４−１がローカルにアクセス可能である。このようなダウンロードされた情報は、ユーザアカウント識別子３１２と、ユーザアカウントレコード３１０の認証済コンテンツアイテム名前空間識別子３１４とを含んでよい。ローカルストレージ１１２−１に格納された場合、ダウンロードされた情報は追加セキュリティのために暗号化されてよい。
【００５８】
いくつかの実施例によれば、コンテンツアイテム同期エージェント１１４−１による、ステップ２０２で追加または変更された新たなコンテンツアイテムの所属コンテンツアイテム名前空間の判定は、ローカルストレージ１１２−１の階層的ファイルシステムにおける新たなコンテンツアイテムへのファイルシステムパスに基づく。特に、コンテンツアイテム同期エージェント１１４−１は、コンテンツアイテム名前空間マウント情報へのローカルアクセスを有してもよい。コンテンツアイテム名前空間マウント情報は、ファイルシステムに「マウントされた」１つ以上の認証済コンテンツアイテム名前空間のそれぞれに対して、コンテンツアイテム名前空間「マウントポイント」フォルダへのファイルシステムパスを識別してもよい。ここで、コンテンツアイテム名前空間「マウントポイント」フォルダは、認証済コンテンツアイテム名前空間がマウントされる。従って、認証済コンテンツアイテム名前空間は、パーソナル計算デバイスのファイルシステム内に、コンテンツアイテム名前空間マウントポイントフォルダが認証済コンテンツアイテム名前空間に対して存在する場合、パーソナル計算デバイスに「マウントされた」ものとして考慮されてよい。コンテンツアイテム名前空間に対するコンテンツアイテム名前空間マウントポイントフォルダが、コンテンツアイテム名前空間がマウントされる全てのパーソナル計算デバイスにおいて同一であることを要求するものではなく、同一のコンテンツアイテム名前空間が、異なるパーソナル計算デバイスにおける異なるコンテンツアイテム名前空間マウントポイントフォルダにマウントされる、ことに注意すべきである。例えば、パーソナル計算デバイス１１０−１に格納されたコンテンツアイテム名前空間マウント情報は以下を示しうる。
【００５９】
識別子「ＡＢＣ１２３」を有するコンテンツアイテム名前空間が「Ｃ：￥ＭｙＷｏｒｋＣｏｎｔｅｎｔｉｔｅｍｓ￥」にマウントされること。
【００６０】
識別子「ＤＥＦ４５６」を有する他のコンテンツアイテム名前空間が「Ｃ：￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥」にマウントされること。
【００６１】
識別子「ＧＨＩ７８９」を有する他のコンテンツアイテム名前空間が「Ｃ：￥ＭｙＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＰｅｒｓｏｎａｌＣｏｎｔｅｎｔＩｔｅｍｓ￥」にマウントされること。
【００６２】
いくつかの実施例によれば、コンテンツアイテム同期エージェント１１４−１は、新たなコンテンツアイテムが属す最もネストされたコンテンツアイテム名前空間マウントポイントフォルダのファイルシステムパスを、ローカルに格納されたコンテンツアイテム名前空間マウント情報内で識別することにより、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。上記例に続いて、新たなコンテンツアイテムへの階層的ファイルシステム内のファイルシステムパスが「Ｃ：￥ＭｙＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＰｅｒｓｏｎａｌＣｏｎｔｅｎｔＩｔｅｍｓ￥Ｐｈｏｔｏｓ￥ｐｈｏｔｏ＿ｏｆ＿ｍｅ＿ｈｉｋｉｎｇ．ｊｐｇ」である場合、コンテンツアイテム同期エージェント１１４−１は、新たなコンテンツアイテムがコンテンツアイテム名前空間「ＧＨＩ７８９」に属すと判定する。一方、新たなコンテンツアイテムへのファイルシステムパスが「Ｃ：￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥Ｐｒｅｓｅｎｔａｔｉｏｎｓ￥ｓａｌｅｓ＿ｐｒｅｓｏ．ｄｏｃ」である場合、そのときは、コンテンツアイテム同期１１４−１は、新たなコンテンツアイテムが、コンテンツアイテム名前空間「ＡＢＣ１２３」とは対照的に、コンテンツアイテム名前空間「ＤＥＦ４５６」に属すと判定する。これは、フォルダ「Ｃ：￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥」がフォルダ「Ｃ：￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥」内でネストされていることによる。
【００６３】
上記例において、コンテンツアイテム名前空間マウント情報が完全に要件を満たした又は絶対的なファイルシステムパスを含んでいたが、コンテンツアイテム名前空間マウント情報は、他の実施例において相対的なファイルシステムパスを含んでもよい。他のこれらの実施例では、パーソナル計算デバイスにおけるコンテンツアイテム同期エージェントは、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を、新たなコンテンツアイテムへの相対的なファイルシステムパスと、パーソナル計算デバイスにおいて全てのコンテンツアイテム名前空間マウントポイントフォルダに共通な親のマウントポイントフォルダへのファイルシステムパスとに基づいて判定することができる。例えば、パーソナル計算デバイス１１０−１におけるコンテンツアイテム名前空間マウント情報は以下を示しうる。
【００６４】
識別子「ＡＢＣ１２３」を有するコンテンツアイテム名前空間が「￥ＭｙＷｏｒｋＣｏｎｔｅｎｔｉｔｅｍｓ￥」にマウントされること。
【００６５】
識別子「ＤＥＦ４５６」を有する他のコンテンツアイテム名前空間が「￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥」にマウントされること。
【００６６】
識別子「ＧＨＩ７８９」を有するコンテンツアイテム名前空間が「￥ＭｙＰｅｒｓｏｎａｌＣｏｎｔｅｎｔＩｔｅｍｓ￥」にマウントされること。
【００６７】
上記例では、親のマウントポイントフォルダは、例えば、「Ｃ：￥ＭｙＣｏｎｔｅｎｔＩｔｅｍｓ￥」であってよい。この場合、新たなコンテンツアイテムへの完全に要件を満たす又は絶対システムファイルパスが「Ｃ：￥ＭｙＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥Ｐｒｅｓｅｎｔａｔｉｏｎｓ￥ｓａｌｅｓ＿ｐｒｅｓｏ．ｄｏｃ」である場合、コンテンツアイテム同期エージェント１１４−１は、フォルダ「￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥Ｐｒｅｓｅｎｔａｔｉｏｎｓ￥ｓａｌｅｓ＿ｐｒｅｓｏ．ｄｏｃ’」の新たなコンテンツアイテムへの相対的ファイルシステムパスに基づいて、新たなコンテンツアイテムがコンテンツアイテム名前空間「ＤＥＦ４５６」に属すと決定する。
【００６８】
ステップ２０８で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。特に、新たなコンテンツアイテムは、ひとつ以上のコンテンツアイテムブロックに断片化され、新たなコンテンツアイテムの暗号化ハッシュが計算される。
【００６９】
追加されたコンテンツアイテムはコンテンツアイテムの最初のバージョンであるため、コンテンツアイテムが変更された場合よりも、コンテンツアイテムが追加された場合において、新たなコンテンツアイテムの全てのコンテンツアイテムブロックが新しいものである蓋然性がより高い。コンテンツアイテムが変更された場合、コンテンツアイテムの全てのまたは全部よりは少ない数のコンテンツアイテムブロックが新しいものである可能性がある。追加であれ変更であれいずれの場合においても、各コンテンツアイテムブロックは、最大の所定のサイズ（例えば４ＭＢ）を有してよい。しかしながら、新たなコンテンツアイテムのトータルサイズが最大の所定のサイズのちょうど複数個分でない場合、最後（又は最初）のコンテンツアイテムブロック又は新たなコンテンツアイテムのコンテンツアイテムブロックのみが、当該最大の所定のサイズより小さいサイズになり得る。
【００７０】
暗号化ハッシュ関数は、例えば、コンテンツアイテムブロックに適用した場合にほぼ固有な固定サイズのハッシュ（例えば２５６ビットハッシュ）を生成するセキュアハッシュアルゴリズム（ＳＨＡ）であり得る。他のハッシュ関数が使用されてもよく、実施例はＳＨＡ−２５６ハッシュ関数に限定されない。しかしながら、一般に、ハッシュ関数は、管理下における所与の固有のコンテンツアイテムブロックの数において衝突が稀であるように、十分なビット深度（例えば２５６ビット又はそれ以上）であるべきである。従って、新たなコンテンツアイテムは、新たなコンテンツアイテムを構成するコンテンツアイテムブロックから計算される１つ以上のコンテンツアイテムブロックハッシュのリストとして表され得る。この種のリストはまた、以降において一般に「コンテンツアイテムブロックリスト」として参照され、或いは、特定のコンテンツアイテムに対するコンテンツアイテムブロックリストを参照する場合、「特定のコンテンツアイテムのブロックリスト」として参照される。変更されたコンテンツアイテムについて、コンテンツアイテム同期エージェントは、変更されたコンテンツアイテムのどのコンテンツアイテムブロックが、コンテンツアイテムの以前のバージョンに対して変更され又は新しいのかを効率的に判定するために、ローリングチェックサムアプローチ（ｒｏｌｌｉｎｇｃｈｅｃｋｓｕｍａｐｐｒｏａｃｈ）を用いてよい。この場合、コンテンツアイテムブロックハッシュは、新規又は変更されたコンテンツアイテムブロックに対してのみ計算され、変更されていないブロックに対して以前に計算されたコンテンツアイテムブロックハッシュは、変更されたコンテンツアイテムのブロックリストにおいて再利用される。
【００７１】
ステップ２１０で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムのコンテンツアイテムブロックをアップロードする先の「ターゲット」コンテンツアイテムブロックサーバを決定する。いくつかの例示的な実施の形態によると、この決定は新たなコンテンツアイテムの所属コンテンツアイテム名前空間に基づきなされる。この決定をなすために、コンテンツアイテム同期エージェント１１４−１は、パーソナル計算デバイス１１０−１に設けられた認証コンテンツアイテム名前空間に対する名前空間対ブロックサーバ割り当てへのアクセスを有してもよい。名前空間対ブロックサーバ割り当ては、パーソナル計算デバイスにローカルで保持されてもよい。例えば、名前空間対ブロックサーバ割り当てはローカルストレージ１１２−１に保持されてもよい。名前空間対ブロックサーバ割り当ては、パーソナル計算デバイスに設けられた認証コンテンツアイテム名前空間の全てまたはいくつかについて、コンテンツアイテム名前空間が割り当てられているブロックサーバを指定することができる。例えば、パーソナル計算デバイス１１０−１における名前空間対ブロックサーバ割り当ては以下の情報を適切なデータフォーマットで示してもよい：
【００７２】
コンテンツアイテム名前空間識別子「ＡＢＣ１２３」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「ＪＫＬ１０１」を伴うブロックサーバに割り当てられる。
【００７３】
コンテンツアイテム名前空間識別子「ＤＥＦ４５６」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「ＪＫＬ１０１」を伴うブロックサーバに割り当てられる。
【００７４】
コンテンツアイテム名前空間識別子「ＧＨＩ７８９」を有する認証コンテンツアイテム名前空間はブロックサーバ識別子「ＭＮＯ１１２」を伴うブロックサーバに割り当てられる。
【００７５】
例えば、オンプレミスブロックサーバ１２０はブロックサーバ識別子「ＪＫＬ１０１」を伴うブロックサーバであり、オフプレミスブロックサーバ１３０はブロックサーバ識別子「ＭＮＯ１１２」を伴うブロックサーバであってもよい。ブロックサーバ識別子はブロックサーバを特定する。ブロックサーバ識別子はブロックサーバのホスト名（例えば、解決可能ＤＮＳホスト名）やネットワークアドレス（例えば、ＩＰｖ４やＩＰｖ６ネットワークアドレス）であってもよいし、それに関連付け（例えば、マッピングや設定ファイルや連想配列等を介して）られてもよい。コンテンツアイテム同期エージェントはブロックサーバ識別子を用いることで、ブロックサーバとのネットワーク接続を確立することができる。あるいはまた、ブロックサーバ識別子自身がブロックサーバのホスト名やネットワークアドレスであってもよいし、またはそれを含んでもよい。
【００７６】
本明細書で提供される例示的な識別子が、それは例示的なブロックサーバ識別子および例示的なコンテンツアイテム名前空間識別子を含むが、単に説明を目的として提供されているのであって発明の実装において用いられうる識別子のタイプやフォーマットを限定することを意図したものではないことは、理解されなければならない。
【００７７】
パーソナル計算デバイスに保持される名前空間対ブロックサーバ割り当てはメタデータプレーン１８０に保持される情報に基づいてもよい。特に、メタデータプレーンは、オンラインコンテンツ管理サービスの管理下にあるコンテンツアイテム名前空間の全てまたはいくつかについての名前空間対ブロックサーバ割り当てを保持してもよい。これらの割り当ては、ユーザがウェブサイト１７０にアクセスすることによって（例えば、パーソナル計算デバイスにおけるウェブブラウザまたはモバイルアプリケーションを用いることによって）、メタデータプレーン１８０内に生成されてもよい。例えば、ウェブサイト１７０にアクセスすることによって、特定のコンテンツアイテム名前空間への認証アクセスを有するユーザは、特定のコンテンツアイテム名前空間を特定のブロックサーバ（例えば、オンプレミスブロックサーバ１２０やオフプレミスブロックサーバ１３０）に割り当てることができる。例えば、ユーザは特定のコンテンツアイテム名前空間のアドミニストレータであってもよいし、そうでなければ、特定のコンテンツアイテム名前空間は、ユーザが特定のコンテンツアイテム名前空間をブロックサーバに割り当てることを可能とする適切なパーミッションを伴うユーザのアカウントレコード３１０に関連付けられてもよい。
【００７８】
パーソナル計算デバイスのコンテンツアイテム同期エージェントは名前空間対ブロックサーバ割り当てを、メタデータサーバ１５０またはオンラインコンテンツ管理サーバの他のサーバ（例えば、ウェブサイト１７０）からダウンロードしてもよい。例えば、コンテンツアイテム同期エージェント１１４−１はネットワーク要求でユーザアカウント識別子３１２をメタデータサーバ１５０に提供してもよい。メタデータサーバ１５０は次いで要求内で受信したユーザアカウント識別子３１２によって特定されるユーザアカウントレコード３１０を参照し、そのユーザアカウントによるアクセスが認証されている認証コンテンツアイテム名前空間の識別子３１４を決定してもよい。その識別子３１４を用いて、メタデータサーバ１５０はメタデータプレーン１８０に保持される名前空間対ブロックサーバ割り当てを参照し、認証コンテンツアイテム名前空間の割り当てを決定してもよい。その割り当ては次いでコンテンツアイテム同期エージェント１１４−１に返され、該エージェントはその割り当てを後のアクセスのためにローカルで（例えば、ローカルストレージ１１２−１に）保持してもよい。
【００７９】
ある例示的な実施の形態では、名前空間対ブロックサーバ割り当ては最初メタデータプレーン１８０で生成され、次いでメタデータサーバ１５０またはウェブサイト１７０によって、コンテンツアイテム名前空間が設けられているパーソナル計算デバイスのコンテンツアイテム同期エージェントに提供されるが、代わりに、名前空間対ブロックサーバ割り当ては最初パーソナル計算デバイス（例えば、パーソナル計算デバイスのコンテンツアイテム同期エージェントによって駆動されるユーザインタフェースを通じて）で生成され、次いでメタデータプレーン１８０への格納のためにメタデータサーバ１５０またはウェブサイト１７０にアップロードされてもよい。したがって、名前空間対ブロックサーバ割り当てがウェブサイト１７０を通じて生成されるか、または最初メタデータプレーン１８０で生成されるかについて、なんの制約もない。
【００８０】
ある例示的な実施の形態では、メタデータプレーン１８０はオンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間についての名前空間対ブロックサーバ割り当てを保持するが、他の例示的な実施の形態では、メタデータプレーン１８０は管理下にある全てのコンテンツアイテム名前空間の部分集合のみについての名前空間対ブロックサーバ割り当てを保持する。例えば、メタデータプレーン１８０は、オンプレミスブロックサーバ（例えば、１２０）に割り当てられた管理下のコンテンツアイテム名前空間のみについての名前空間対ブロックサーバ割り当てを保持し、オフプレミスブロックサーバ１３０に割り当てられたコンテンツアイテム名前空間についての名前空間対ブロックサーバ割り当ては保持しなくてもよい。したがって、これらの実施の形態では、メタデータプレーン１８０において、または、パーソナル計算デバイスにおいて、特定のコンテンツアイテム名前空間についての明示的な名前空間対ブロックサーバ割り当てが存在しない場合、その特定のコンテンツアイテム名前空間はオフプレミスブロックサーバ１３０に割り当てられていると仮定できる。
【００８１】
例えば、ステップ２０２で追加された新たなコンテンツアイテムがコンテンツアイテム名前空間識別子「ＤＥＦ４５６」を伴う認証コンテンツアイテム名前空間に属し、パーソナル計算デバイス１１０−１に保持される名前空間対ブロックサーバ割り当てが、コンテンツアイテム名前空間「ＤＥＦ４５６」がブロックサーバ識別子「ＪＫＬ１０１」を伴うオンプレミスブロックサーバ１２０に割り当てられていることを指定する場合、ステップ２１０で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムをオンプレミスブロックサーバ１２０にアップロードすると決める。以降、図２に関して、所属コンテンツアイテム名前空間が割り当てられているブロックサーバを「ターゲット」ブロックサーバと称す。一般に、所属コンテンツアイテム名前空間が割り当てられているブロックサーバに依存して、ターゲットブロックサーバはオンプレミスブロックサーバ（例えば、１２０）またはオフプレミスブロックサーバ１３０でありうる。
【００８２】
プロセス２００のこの時点で、コンテンツアイテム同期エージェント１１４−１は、所属コンテンツアイテム名前空間の識別子（例えば「ＤＥＦ４５６」）を決定し（ステップ２０６）、新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出し（ステップ２０８）、ターゲットブロックサーバの識別子（例えば、「ＪＫＬ１０１」）を決定（ステップ２１０）した。今や、ステップ２１２で、コンテンツアイテム同期エージェント１１４−１は「委託（ｃｏｍｍｉｔ）」要求をこの情報を提供するメタデータサーバ１５０に送信する。特に、委託要求は、ユーザアカウント識別子および／またはパーソナル計算デバイス１１０−１の識別子に加えて、以下の情報の全て、またはその下位集合あるいは上位集合を含んでもよい。
【００８３】
所属コンテンツアイテム名前空間の識別子（例えば、「ＤＥＦ４５６」）；
【００８４】
ターゲットブロックサーバの識別子（例えば、「ＪＫＬ１０１」）；
【００８５】
所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダに対する新たなコンテンツアイテムの相対ファイルシステムパス。例えば、パーソナル計算デバイス１１０−１における新たなコンテンツアイテムの完全に要件を満たす又は絶対ファイルシステムパスが「Ｃ：￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥Ｐｒｅｓｅｎｔａｔｉｏｎｓ￥ｓａｌｅｓ＿ｐｒｅｓｏ．ｄｏｃ」である場合、かつ、所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダへのファイルシステムパスが「Ｃ：￥ＭｙＷｏｒｋＣｏｎｔｅｎｔＩｔｅｍｓ￥ＭｙＳｈａｒｅｄＩｔｅｍｓ￥」である場合、委託要求に含まれる相対ファイルシステムパスは「￥Ｐｒｅｓｅｎｔａｔｉｏｎｓ￥ｓａｌｅｓ＿ｐｒｅｓｏ．ｄｏｃ」となろう。
【００８６】
新規コンテンツアイテムに対するコンテンツアイテムブロックリスト。
【００８７】
さらなる安全性のため、委託要求は、トランスポートレイヤセキュリティ（ＴＬＳ）やセキュアソケットレイヤ（ＳＳＬ）で保護されたネットワーク接続などの暗号化ネットワーク接続を介して、ＬＡＮ１６０およびＷＡＮ１９０を通じて送られてもよい。
【００８８】
ステップ２１４で、メタデータサーバ１５０はコンテンツアイテム同期エージェント１１４−１から受信した委託要求を認証する。この認証は、委託要求で指定される所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子が、委託要求内のユーザアカウント識別子に対応するメタデータプレーン１８０内のユーザアカウントレコード３１０の認証コンテンツアイテム名前空間識別子３１４のうちのひとつであるか検証することを含んでもよい。そうでなければ、メタデータサーバ１５０は委託要求を拒否し、コンテンツアイテム同期エージェント１１４−１に適切なエラーメッセージを返してもよい。
【００８９】
委託要求を認証することの一部として、メタデータサーバ１５０は、委託要求内で指定されるターゲットブロックサーバが所属コンテンツアイテム名前空間が現在割り当てられているブロックサーバであるかを検証してもよい。この検証は、メタデータプレーン１８０内の名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。所属コンテンツアイテム名前空間がターゲットブロックサーバに現在割り当てられていない場合、メタデータサーバ１５０は委託要求を拒否し、コンテンツアイテム同期エージェント１１４−１に適切なエラーメッセージを返してもよい。
【００９０】
しかしながら、ある例示的な実施の形態では、所属コンテンツアイテム名前空間が委託要求内で指定されるターゲットブロックサーバに現在割り当てられていない場合にエラーメッセージを返す代わりに、メタデータサーバ１５０は、メタデータプレーン１８０内の名前空間対ブロックサーバ割り当てにしたがい、コンテンツアイテム名前空間が現在割り当てられているブロックサーバの識別子を返す。そうすることによって、コンテンツアイテム同期エージェント１１４−１は委託要求を再試行し、その回では新たなターゲットブロックサーバを指定することができる。これはまた、メタデータサーバ１５０が、コンテンツアイテム同期エージェント１１４−１に、コンテンツアイテム名前空間のブロックサーバへの割り当てが変わったときにそのことを知らせるためのメカニズムを提供する。これはまた、コンテンツアイテム同期エージェント１１４−１が、コンテンツアイテム名前空間のブロックサーバへの新たな割り当てを知らされたときに、そのローカルの名前空間対ブロックサーバ割り当てを更新することを可能とする。
【００９１】
ステップ２１６で、委託要求が認証された前提で、メタデータサーバ１５０は、委託要求内の新たなコンテンツアイテムのコンテンツアイテムブロックリストに少なくとも部分的に基づいて、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれがまだターゲットブロックサーバに保持されていないかを決定する。これを行うために、メタデータサーバ１５０はメタデータプレーン１８０内のターゲットブロックサーバのコンテンツアイテムブロックリストを参照してもよい。ブロックサーバのコンテンツアイテムブロックリスト、または単に「ブロックリスト」、は、コンテンツアイテムブロックのコンテンツアイテムブロックハッシュによって、特定のブロックサーバに保持されるコンテンツアイテムブロックを特定する。コンテンツアイテムブロックが格納される先の各オンプレミスブロックサーバ（例えば、１２０）について、メタデータプレーン１８０内にブロックサーバブロックリストがあってもよい。オフプレミスブロックサーバ１３０について、メタデータプレーン１８０内にブロックサーバブロックリストがあってもよい。したがって、メタデータプレーン１８０には何百何千またはそれ以上のブロックサーバブロックリストが格納されうる。本明細書においてブロックサーバブロック「リスト」と称されてはいるが、ブロックサーバブロックリストのコンテンツアイテムブロックハッシュはリストデータ構造で、またはリストデータ構造以外のデータ構造で、保持されてもよい。例えば、ブロックサーバブロックリストはＢツリーデータ構造または他のツリーベースのデータ構造として実装されてもよい。さらに、ブロックサーバブロックリストが複数のデータ構造により実装されることもまた可能である。例えば、第１データ構造はブロックサーバブロックリストにおいて所与のコンテンツアイテムブロックハッシュを探すのに最適化されていてもよく、第２データ構造はブロックサーバブロックリストに新たなコンテンツアイテムブロックハッシュを追加するのに最適化されていてもよい。
【００９２】
新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれがまだターゲットブロックサーバに保持されていないかを決定するために、メタデータサーバ１５０はメタデータプレーン１８０内のターゲットブロックサーバのブロックリストを参照する。メタデータサーバ１５０は、ターゲットブロックサーバのブロックサーバ識別子に基づいて、メタデータプレーン１８０においてターゲットブロックサーバのブロックリストを特定してもよい。委託要求における新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかの各コンテンツアイテムブロックハッシュについて、メタデータサーバ１５０は、そのコンテンツアイテムブロックハッシュがターゲットブロックサーバのブロックリストにあるか否かを判定する。もしなければ、メタデータサーバ１５０は、対応するコンテンツアイテムブロックがターゲットブロックサーバから欠落していると決定する。そうでなければ、メタデータサーバ１５０は、対応するコンテンツアイテムブロックがターゲットブロックサーバに既に保持されていると決定する。
【００９３】
ステップ２１８で、メタデータサーバ１５０は「必要コンテンツアイテムブロックリスト」応答で第１委託要求に応答する。必要コンテンツアイテムブロックリスト応答は、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュを含み、そのコンテンツアイテムブロックはステップ２１６においてメタデータサーバ１５０がターゲットブロックサーバのブロックリストから欠落していると決定したものである。したがって、必要コンテンツアイテムブロックリスト応答は、ターゲットブロックサーバにおいてどのコンテンツアイテムブロックが欠落しているかに依存して、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュの全てまたは部分集合を指定してもよい。
【００９４】
ステップ２２０で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの欠落しているコンテンツアイテムブロックをターゲットブロックサーバに格納する。これは、コンテンツアイテム同期エージェント１１４−１がターゲットブロックサーバにひとつ以上の「格納」要求を行うことを含んでもよい。そのような格納要求のそれぞれは、ひとつ以上の欠落しているコンテンツアイテムブロックと、そのひとつ以上の欠落しているコンテンツアイテムブロックのそれぞれのコンテンツアイテムブロックハッシュと、を含んでもよい。コンテンツアイテム同期エージェント１１４−１は、欠落しているコンテンツアイテムブロックのトータルサイズがかなり大きい場合、複数の格納要求を行ってもよい。例えば、ターゲットブロックサーバは、単一の格納要求でアップロードできるコンテンツアイテムブロックデータの量を８メガバイト（ＭＢ）までのみ（例えば、ブロック当たり４ＭＢのコンテンツアイテムブロックを二つまで）許すようにしてもよい。この場合、新たなコンテンツアイテムのサイズが１６ＭＢである場合、例えば、少なくとも二つの格納要求が必要となろう。
【００９５】
ある例示的な実施の形態によると、ひとつの格納要求の中に欠落しているコンテンツアイテムブロック全体を含める代わりに、ターゲットブロックサーバに既に格納されているコンテンツアイテムブロックと欠落しているコンテンツアイテムブロックとの間の差分のみを格納要求に含めてもよい。これは、ネットワーク帯域幅や他の計算リソースの消費の節約に資する。差分は、既知のｒｓｙｎｃアルゴリズムにより用いられるデルタ符号化アプローチなどのデルタ符号化アプローチにしたがい計算されてもよい。したがって、本明細書におけるコンテンツアイテムブロックをブロックサーバにアップロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバにアップロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとのデルタだけをブロックサーバにアップロードすることと、の両方を包含する。デルタは二つのコンテンツアイテムブロックの間の実際のデータ差分であってもよいし、実際のデータ差分の表現（符号化）であってもよいし、あるいは実際のデータ差分と実際のデータ差分の表現（符号化）との組み合わせであってもよい。
【００９６】
ステップ２２２で、ターゲットブロックサーバ（例えば、１２０や１３０）のブロックサービス（例えば、１２２や１３２）は欠落しているコンテンツアイテムブロックをターゲットブロックサーバのブロックストレージ（例えば、１２４や１３４）に格納する。ターゲットブロックサーバのブロックストレージの実装は、ターゲットブロックサーバがオンプレミスブロックサーバ（例えば、１２０）であるかまたはオフプレミスブロックサーバ１３０であるかに依存して変わりうる。
【００９７】
ある例示的な実施の形態では、オンプレミスブロックサーバは、オンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間の部分集合に属するコンテンツアイテムのコンテンツアイテムブロックを格納するのに十分なデータストレージ容量を有してもよい。部分集合は、全てが同じ機関や同じ企業の従業員や同じ学校の生徒などに属するコンテンツアイテム名前空間の集合であってもよい。一方で、オフプレミスブロックサーバ１３０は、オンラインコンテンツ管理サービスの管理下にある全てのコンテンツアイテム名前空間のコンテンツアイテムブロックを格納するのに十分なデータストレージ容量を有してもよい。データストレージ要件の差違が、オンプレミスブロックストレージ（例えば、１２４）において、オフプレミスブロックストレージ１３４とは異なる実装を促してもよい。例えば、オンプレミスブロックストレージは、１テラバイトから数テラバイトまでのデータストレージもしくはそれ以上を提供するひとつまたは数台の機器に収納されたストレージデバイス（例えば、ディスクドライブ）のアレイとして実装されてもよい。一方、オフプレミスブロックストレージ１３４は、数ゼタバイトまでのデータストレージまたはそれ以上を提供するひとつ以上のデータセンタ施設に収納された分散計算システムとして実装されてもよい。
【００９８】
ステップ２２４で、ターゲットブロックサーバは、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン１８０内のターゲットブロックサーバのブロックサーバブロックリストを更新する。更新の態様は、ターゲットブロックサーバがオンプレミスブロックサーバ１２０であるかまたはオフプレミスブロックサーバ１３０であるかに依存して変わりうる。
【００９９】
オフプレミスブロックサーバ１３０の場合、ブロックストレージ１３４への格納が成功したアップロードされたコンテンツアイテムブロックのそれぞれについて、ブロックサービス１３２は、メタデータプレーン１８０内のオフプレミスブロックサーバ１３０についてのブロックリストを更新する。そのような更新は、オフプレミスブロックサーバ１３０のブロックリストに、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュを追加することを含んでもよい。アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュでブロックリストを更新する前に、ブロックサービス１３２は、自身でアップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュを算出し、それをコンテンツアイテム同期エージェントからの格納要求内で受信したアップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュと比べてもよい。コンテンツアイテムブロックハッシュが一致しない場合、ブロックサービス１３２は格納要求を拒否し、アップロードされたコンテンツアイテムブロックをブロックストレージ１３４に格納せず、メタデータプレーン１８０内のオフプレミスブロックサーバ１３０のブロックリストを更新しなくてもよい。ある例示的な実施の形態によると、ブロックサービス１３２は、格納要求で指定されたアップロードされたコンテンツアイテムブロックをブロックストレージ１３４に格納する前に、格納要求が正しいユーザアカウント識別子３１２を含むことを要求してもよい。
【０１００】
オンプレミスブロックサーバ（例えば、１２０）の場合、オンプレミスブロックストレージ（例えば、１２４）への格納が成功したアップロードされたコンテンツアイテムブロックについて、オンプレミスブロックサーバのブロックサービス（例えば、１２２）はメタデータサーバ１５０に、ひとつ以上の「コンテンツアイテムブロック有り」要求を送信してもよい。ブロックサービスは、アップロードされたコンテンツアイテムブロックのそれぞれのブロックストレージへの格納が成功した後に、コンテンツアイテムブロック有り要求を送信してもよい。あるいはまた、ブロックサービスは、複数のアップロードされたコンテンツアイテムブロックのブロックストレージへの格納が成功した後に、コンテンツアイテムブロック有り要求を送信してもよい。コンテンツアイテムブロック有り要求は以下の情報の全てを含んでもよく、またはそれの上位集合または下位集合を含んでもよい：
【０１０１】
ユーザアカウント識別子３１２。これは、格納要求においてオンプレミスブロックサーバに対して指定されたユーザアカウント識別子３１２であってもよい。あるいはまた、これは、オンプレミスブロックサーバのユーザアカウントなどの他のユーザアカウントのユーザアカウント識別子３１２であってもよい。
【０１０２】
オンプレミスブロックサーバのブロックサーバ識別子。
【０１０３】
ブロックストレージへの格納が成功したひとつ以上のアップロードされたコンテンツアイテムブロックのひとつ以上のコンテンツアイテムブロックハッシュ。
【０１０４】
オンプレミスブロックサーバからコンテンツアイテムブロック有り要求を受信すると、メタデータサーバ１５０は、オンプレミスブロックサーバが、コンテンツアイテムブロック有り要求内のユーザアカウント識別子３１２によって特定されるユーザアカウントがアクセス可能なコンテンツアイテム名前空間３１４に割り当てられたブロックサーバのうちのひとつであることを検証することによって、コンテンツアイテムブロック有り要求を認証してもよい。要求が認証されると、メタデータサーバ１５０は、メタデータプレーン１８０内のオンプレミスブロックサーバのブロックリストを更新して、アップロードされたコンテンツアイテムブロックがオンプレミスブロックサーバのローカルブロックストレージに今や格納されたことを示すようにしてもよい。メタデータプレーン１８０内のブロックリストを更新した後、メタデータサーバ１５０はコンテンツアイテムブロック有り要求に対して、要求の処理が成功したと応答してもよい。
【０１０５】
この時点で、ターゲットブロックサーバがオンプレミスブロックサーバ（例えば、１２０）であれオフプレミスブロックサーバ１３０であれ、ターゲットブロックサーバにおいて欠落していた新たなコンテンツアイテムのコンテンツアイテムブロックは今やコンテンツアイテム同期エージェント１１４−１によってターゲットブロックサーバにアップロードされた。加えて、メタデータプレーン１８０内のターゲットサーバのブロックリストは、新たなコンテンツアイテムの全てのコンテンツアイテムブロックが今やターゲットブロックサーバに格納されていることを示すよう更新された。
【０１０６】
ステップ２２６で、コンテンツアイテム同期エージェント１１４−１はステップ２１２の委託要求を試行する。この第２委託要求は、第１委託要求で渡されたパラメータと同じパラメータを渡してもよく、それは所属コンテンツアイテム名前空間識別子とターゲットブロックサーバ識別子と新たなコンテンツアイテムに対する相対パスと新たなコンテンツアイテムのブロックリストとを含む。
【０１０７】
ステップ２２８で、メタデータサーバ１５０は、ステップ２１４で第１委託要求について行ったように、この第２委託要求を認証する。
【０１０８】
ステップ２３０で、第２委託要求が認証された前提で、メタデータサーバ１５０は、メタデータプレーン１８０内のターゲットブロックサーバのブロックリストにしたがい、新たなコンテンツアイテムのブロックリストで特定されるコンテンツアイテムブロックのなかにターゲットブロックサーバから欠落しているものがあるか否かを判定する。このとき、第１委託要求の後、欠落していたコンテンツアイテムブロックはターゲットブロックサーバにアップロードされてしまっているので、メタデータサーバ１５０は、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバで欠落しているものはないと判定すべきである。
３．１．３  コンテンツアイテムサーバジャーナル
【０１０９】
ステップ２３２で、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、メタデータサーバ１５０は、メタデータプレーン１８０内のターゲットブロックサーバのコンテンツアイテムジャーナルまたは単に「サーバジャーナル」に新たなエントリを追加する。ある例示的な実施の形態によると、新たなエントリを追加することは、新たなコンテンツアイテムをオンラインコンテンツ管理サービスに「委託」する。サーバジャーナルは、特定のブロックサーバに委ねられたコンテンツアイテムのバージョンを追跡するために用いられる。オフプレミスブロックサーバ１３０用のサーバジャーナルおよびオンプレミスブロックサーバのそれぞれ用のサーバジャーナルが存在してもよい。したがって、メタデータプレーン１８０には何百何千またはそれ以上のサーバジャーナルが格納されうる。
【０１１０】
いったん図４を参照すると、それはひとつ以上のサーバジャーナルからなるサーバジャーナル４１０のブロック図である。サーバジャーナル４１０はメタデータプレーン１８０に保持されてもよい。サーバジャーナル４１０は複数のサーバジャーナルエントリ４１２を含む。コンテンツアイテムの新たなバージョン（新たなコンテンツアイテムの最初のバージョンを含む）のブロックサーバへのアップロードが成功し、完了すると、サーバジャーナル４１０に新たなサーバジャーナルエントリ４１２が追加（例えば、追記）される。例えば、メタデータサーバ１５０は、コンテンツアイテム同期エージェント１１４−１から第２委託要求を受信することに応じて新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、サーバジャーナル４１０に、新たなサーバジャーナルエントリ４１２を追加してもよい。サーバジャーナル４１０に新たなサーバジャーナルエントリ４１２を追加することは、新たなコンテンツアイテムをオンラインコンテンツ管理サービスに委ねる。
【０１１１】
サーバジャーナル４１０内の各サーバジャーナルエントリ４１２はコンテンツアイテムのバージョンに対応する。各サーバジャーナルエントリ４１２は、ブロックサーバ識別子４１３と、コンテンツアイテム名前空間識別子４１４と、パス４１５と、コンテンツアイテムブロックリスト４１６と、サーバジャーナルカーソル値４１７と、を含んでもよい。ブロックサーバ識別子４１３は、コンテンツアイテムの対応する新しいバージョンがアップロードされた先のブロックサーバを特定する。コンテンツアイテム名前空間識別子４１４は、コンテンツアイテムの対応する新しいバージョンが所属する先のコンテンツアイテム名前空間（すなわち、所属コンテンツアイテム名前空間）を特定する。パス４１５は、コンテンツアイテムの対応する新しいバージョンの、コンテンツアイテムが所属する先のコンテンツアイテム名前空間のマウントポイントに対する、相対ファイルシステムパスを指定する。コンテンツアイテムブロックリスト４１６は、コンテンツアイテムの対応する新しいバージョンを構成するひとつ以上のコンテンツアイテムブロックを特定するひとつ以上のコンテンツアイテムブロックハッシュを含む。
【０１１２】
サーバジャーナルエントリ４１２のサーバジャーナルカーソル値４１７はコンテンツアイテム名前空間およびブロックサーバに特有のものである。特に、メタデータサーバ１５０は、コンテンツアイテム名前空間とブロックサーバとの一意の組み合わせのそれぞれについて、別個のサーバジャーナルカーソルを維持してもよい。対応するコンテンツアイテム名前空間と対応するブロックサーバとに対するサーバジャーナルカーソルは、対応するコンテンツアイテム名前空間に属する新たなコンテンツアイテムの対応するブロックサーバへのアップロードが成功したときにインクリメントされてもよい。例えば、対応するコンテンツアイテム名前空間と対応するブロックサーバとに対するサーバジャーナルカーソルは単調増加する値であってもよい。
【０１１３】
例えば、コンテンツアイテム名前空間「ＤＥＦ４５６」とブロックサーバ「ＪＫＬ１０１」とに対する直近で追加されたサーバジャーナルエントリ４１２のサーバジャーナルカーソル値４１７が「１７」である場合、ステップ２３２で追加される、同じコンテンツアイテム名前空間に属し同じブロックサーバにアップロードされたコンテンツアイテムの新たなバージョンの新たなサーバジャーナルエントリ４１２はサーバジャーナルカーソル値４１７として「１８」を有するであろう。
【０１１４】
サーバジャーナル４１０は、複数のブロックサーバのサーバジャーナルを保持してもよい。特に、同じブロックサーバ識別子４１３を有するサーバジャーナル４１０内のサーバジャーナルエントリ４１２の全てはブロックサーバのサーバジャーナルと考えられてもよい。ある代替的な実施の形態では、メタデータプレーン１８０内に、各ブロックサーバについて、物理的に別個のサーバジャーナルが保持されてもよい。メタデータプレーン１８０の複数のサーバ計算デバイスに亘ってサーバジャーナル４１０をパーティション化または分割することを含む他のストレージ構成も可能である。この場合、ブロックサーバ識別子４１３、コンテンツアイテム名前空間識別子４１４、またはブロックサーバ識別子４１３とコンテンツアイテム名前空間識別子４１４との組み合わせが、パーティション化のキーまたは分割のキーとして用いられてもよい。
【０１１５】
ステップ２３４で、サーバジャーナル４１０へ新たなコンテンツアイテム１１３の新たなサーバジャーナルエントリ４１２を追加することに成功した後、メタデータサーバ１５０は第２委託要求に応答する。特に、メタデータサーバ１５０は、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したことをコンテンツアイテム同期エージェント１１４−１に対して示す応答を送信する。応答は、ブロックサーバ識別子４１３、コンテンツアイテム名前空間識別子４１４、または追加されたエントリ４１２のサーバジャーナルカーソル値４１７のうちのひとつ以上を含んでもよい。
【０１１６】
ステップ２３６で、コンテンツアイテム同期エージェント１１４−１は、将来の参照のため、第２委託要求に対する応答内で受信したサーバジャーナルカーソル値をローカルに（例えば、ローカルストレージ１１２に）格納してもよい。ローカルで格納する際、コンテンツアイテム同期１１４−１は、サーバジャーナルカーソル値を、サーバジャーナルカーソル値が関係する所属コンテンツアイテム名前空間識別子およびターゲットブロックサーバ識別子に関連付けてもよい。加えて、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したので、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの委託状態インジケータを更新してもよい。
【０１１７】
コンテンツアイテムの委託状態インジケータは、パーソナル計算デバイスのオペレーティングシステムにより提供されるものなどのファイルシステムブラウザインタフェースにおいてコンテンツアイテムをファイルとして見るときに、ユーザに見えるものであってもよい。例えば、委託状態インジケータは、ファイルシステムブラウザやファイルシステムにおいてファイルをブラウズし検索し発見するための他のグラフィカルユーザインタフェースに表れる際、ファイル名の上やコンテンツアイテムのファイルタイプを表すアイコンの上に表示されるグラフィックであってもよい。
【０１１８】
ある例示的な実施の形態によると、コンテンツアイテムの委託状態インジケータは、少なくとも四つの状態を有してもよい：（１）未委託、（２）委託中、（３）オフプレミスブロックサーバに委託済み、および（４）オンプレミスブロックサーバに委託済み。未委託状態では、委託状態インジケータは表示されない。あるいはまた、コンテンツアイテムがどのブロックサーバにも委託されていないことを示す委託状態インジケータが表示されてもよい。委託中状態では、委託状態インジケータは、コンテンツアイテムが現在ターゲットブロックサーバに委託されようとしている途中であることを示すかそうでなければアニメ化されてもよい。例えば、委託中状態にあるとき、コンテンツアイテムのコンテンツアイテムブロックが現在ターゲットブロックサーバにアップロードされていることを示すよう、委託状態インジケータが連続ループでアニメ化されてもよい。ブロックサーバに委託されると、委託されたコンテンツアイテムの委託状態インジケータは、コンテンツアイテムがオフプレミスブロックサーバ１３０に委託されたかオンプレミスブロックサーバ（例えば、１２０）に委託されたかによって異なる外観を有してもよい。例えば、委託状態インジケータは、コンテンツアイテムがオフプレミスブロックサーバ１３０に委託されたかオンプレミスブロックサーバに委託されたかによって異なる色または異なる像を有してもよい。異なる外観の理由は、委託状態インジケータを見ているユーザに、コンテンツアイテムがどのブロックサーバに委託されたかを知らせるためである。
【０１１９】
ある例示的な実施の形態では、コンテンツアイテムの委託状態インジケータがそのコンテンツアイテムが委託されたことを示すために、そのコンテンツアイテムは少なくとも二つのブロックサーバに委託されなければならない。例えば、コンテンツアイテムがブロックサーバ１３０およびブロックサーバ１２０の両方に委託された場合にのみ、または、コンテンツアイテムが少なくとも二つのオンプレミスブロックサーバに委託された場合にのみ、委託済みの委託状態インジケータ（例えば、緑色のチェックマークグラフィック）が表示されてもよい。ある例示的な実施の形態によると、ブロックサーバに委託されたとは、少なくとも、サーバコンテンツアイテムジャーナル（例えば、４１０）へのエントリ（例えば、４１２−２）の追加を指し、これは、コンテンツアイテムの全てのコンテンツアイテムブロック（例えば、ジャーナルエントリ４１２−２のコンテンツアイテムブロックリスト４１６によって指定されるもの）が委託の時点でブロックサーバに格納されたことを示す。このコンテキストで、オンプレミスブロックサーバへ委託済み状態とオフプレミスブロックサーバへ委託済み状態とで委託状態インジケータが別個とならなくてもよい。代わりに、コンテンツアイテムが少なくとも二つのブロックサーバに委託されたときのコンテンツアイテムの委託済み状態を表す単一の委託状態インジケータ（例えば、緑色のチェックマーク）があってもよい。
【０１２０】
ある例示的な実施の形態では、コンテンツアイテムが委託済みとみなされる（したがって、そのことを示す委託状態インジケータで表示される）ためにそのコンテンツアイテムが委託されなければならないブロックサーバの数（例えば、１、２、３等）またはそのようなブロックサーバがどれであるかは、コンテンツアイテム名前空間ごとベースで設定される。例えば、コンテンツアイテム名前空間識別子と関連付けて、コンテンツアイテムが委託済みとみなされるためにそのコンテンツアイテム名前空間に属するコンテンツアイテムが委託されなければならないブロックサーバの数またはそのようなブロックサーバがどれであるかを指定する（例えば、ブロックサーバ識別子によって）メタデータを保持してもよい。
３．１．４  例示的なアップロードインタラクション
【０１２１】
図５を参照すると、本発明のある例示的な実施の形態に係る、図２のプロセス２００が行われオフプレミスブロックサーバ１３０に新たなコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス１１０−１とメタデータサーバ１５０とオフプレミスブロックサーバ１３０とメタデータプレーン１８０との間の種々のインタラクションを示すインタラクション図５００である。
【０１２２】
ステップ２０２で、ユーザ１０２−１はパーソナル計算デバイス１１０−１でコンテンツアイテムを生成または変更する。ステップ２０４で、パーソナル計算デバイスのコンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムを検出する。ステップ２０６で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ２０８で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ２１０で、コンテンツアイテム同期エージェント１１４−１はオフプレミスブロックサーバ１３０がターゲットブロックサーバであることを決定する。ステップ２１２で、コンテンツアイテム同期エージェント１１４−１は第１委託要求をメタデータサーバ１５０に送信する。
【０１２３】
ステップ２１４で、メタデータサーバ１５０は第１委託要求を認証する。ステップ２１６で、メタデータサーバ１５０はオフプレミスブロックサーバ１３０で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ２１８で、メタデータサーバ１５０は欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第１委託要求に応答する。
【０１２４】
ステップ２２０で、コンテンツアイテム同期エージェント１１４−１は欠落しているコンテンツアイテムブロックをオフプレミスブロックサーバ１３０にアップロードする。
【０１２５】
ステップ２２２で、オフプレミスブロックサーバ１３０はアップロードされたコンテンツアイテムブロックをブロックストレージ１３４に格納する。ステップ２２４で、オフプレミスブロックサーバ１３０は、オフプレミスブロックサーバ１３０のメタデータプレーン１８０のブロックリストを、欠落しているコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。
【０１２６】
ステップ２２６で、コンテンツアイテム同期エージェント１１４−１は第２委託要求を送信する。
【０１２７】
ステップ２２８で、メタデータサーバ１５０は第２委託要求を認証する。ステップ２３０で、メタデータサーバ１５０はオフプレミスブロックサーバ１３０で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ２３２で、欠落しているコンテンツアイテムブロックがないと判定されると、メタデータサーバ１５０は新たなコンテンツアイテムのサーバジャーナル４１０に新たなサーバジャーナルエントリ４１２を追加する。新たなサーバジャーナルエントリ４１２は所属コンテンツアイテム名前空間とオフプレミスブロックサーバ１３０とを特定する。ステップ２３４で、メタデータサーバ１５０は委託が成功したことの確認で第２委託要求に応答する。その応答は、所属コンテンツアイテム名前空間とオフプレミスブロックサーバ１３０とに専用のサーバジャーナルカーソル値４１７を含んでもよい。
【０１２８】
ステップ２３６で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがオフプレミスブロックサーバ１３０に委託されたことを示すよう更新する。
【０１２９】
図６を参照すると、本発明のある例示的な実施の形態に係る、図２のプロセス２００が行われオンプレミスブロックサーバ１２０にコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス１１０−１とメタデータサーバ１５０とオンプレミスブロックサーバ１２０とメタデータプレーン１８０との間の種々のインタラクションを示すインタラクション図６００である。ダイアグラム６００に示されるインタラクションはダイアグラム５００に示されるインタラクションと同様である。しかしながら、ターゲットブロックサーバがオフプレミスブロックサーバ１３０ではなくオンプレミスブロックサーバであることに関する差分がある。
【０１３０】
ステップ２０２で、ユーザ１０２−１はパーソナル計算デバイス１１０−１でコンテンツアイテムを生成または変更する。ステップ２０４で、パーソナル計算デバイスのコンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムを検出する。ステップ２０６で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ２０８で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ２１０で、コンテンツアイテム同期エージェント１１４−１はオンプレミスブロックサーバ１２０がターゲットブロックサーバであることを決定する。ステップ２１２で、コンテンツアイテム同期エージェント１１４−１は第１委託要求をメタデータサーバ１５０に送信する。
【０１３１】
ステップ２１４で、メタデータサーバ１５０は第１委託要求を認証する。ステップ２１６で、メタデータサーバ１５０はオンプレミスブロックサーバ１２０で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ２１８で、メタデータサーバ１５０は欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第１委託要求に応答する。
【０１３２】
ステップ２２０で、コンテンツアイテム同期エージェント１１４−１は欠落しているコンテンツアイテムブロックをオンプレミスブロックサーバ１２０にアップロードする。
【０１３３】
ステップ２２２で、オンプレミスブロックサーバ１２０はアップロードされたコンテンツアイテムブロックをオンプレミスブロックサーバ１２０のブロックストレージ１２４に格納する。ステップ２２４で、オンプレミスブロックサーバ１２０は、ブロックストレージ１２４への格納が成功した欠落コンテンツアイテムブロックについて、メタデータサーバ１５０に、ひとつ以上のコンテンツアイテムブロック有り要求を送信する。ステップ２２４で、メタデータサーバ１５０は、オンプレミスブロックサーバ１２０についてのメタデータプレーン１８０内のブロックリストを、コンテンツアイテムブロック有り要求で指定される欠落しているコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。
【０１３４】
ステップ２２６で、コンテンツアイテム同期エージェント１１４−１は第２委託要求を送信する。
【０１３５】
ステップ２２８で、メタデータサーバ１５０は第２委託要求を認証する。ステップ２３０で、メタデータサーバ１５０はオンプレミスブロックサーバ１２０で欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ２３２で、欠落しているコンテンツアイテムブロックがないと判定されると、メタデータサーバ１５０は新たなコンテンツアイテムのサーバジャーナル４１０に新たなサーバジャーナルエントリ４１２を追加する。新たなサーバジャーナルエントリ４１２は所属コンテンツアイテム名前空間とオンプレミスブロックサーバ１２０とを特定する。ステップ２３４で、メタデータサーバ１５０は委託が成功したことの確認で第２委託要求に応答する。その応答は、所属コンテンツアイテム名前空間とオンプレミスブロックサーバ１２０とに専用のサーバジャーナルカーソル値を含んでもよい。
【０１３６】
ステップ２３６で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがオンプレミスブロックサーバ１２０に委託されたことを示すよう更新する。
３．２  コンテンツアイテムのダウンロード
【０１３７】
図７を参照すると、ターゲットブロックサーバからコンテンツアイテムをダウンロードするプロセス７００のフローチャートである。所属コンテンツアイテム名前空間が現在割り当てられているブロックサーバに依存して、ターゲットブロックサーバはオンプレミスブロックサーバ（例えば、１２０）またはオフプレミスブロックサーバ１３０でありうる。以下にステップを図７に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
【０１３８】
ステップ７０２で、サーバジャーナル４１０に追加された新たなサーバジャーナルエントリ４１２が検出される。そのような検出は、例えばメタデータサーバ１５０や通知サーバ１４０を含むオンラインコンテンツ管理サービスの種々のコンポーネントによって行われてもよい。例えば、サーバジャーナル４１０に新たなサーバジャーナルエントリ４１２が追加されたとき、メタデータプレーン１８０によってネットワークメッセージが生成され、バックエンドデータバスによりメタデータサーバ１５０および／または通知サーバ１４０へ運ばれてもよい。新たなサーバジャーナルエントリ４１２の追加は、所属コンテンツアイテム名前空間に属する新たなコンテンツアイテムがブロックサーバにアップロードされたことを表す。新たなサーバジャーナルエントリ４１２は、新たなエントリ４１２のブロックサーバ識別子４１３を介して、新たなコンテンツアイテムがアップロードされた先のブロックサーバを特定し、新たなエントリ４１２のコンテンツアイテム名前空間識別子４１４を介して、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を特定する。
【０１３９】
ステップ７０４で、通知サーバ１４０は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間が設けられているパーソナル計算デバイス（例えば、パーソナル計算デバイス１１０−２）に通知を行う。特定のコンテンツアイテム名前空間が設けられているパーソナル計算デバイスを決定するために、メタデータプレーン１８０は「リンクされたデバイス」についての情報を保持してもよい。一般に、「リンクされたデバイス」は、それが正当なユーザアカウント識別子３１２を「所持する」ものであることをオンラインコンテンツ管理サービスに示したパーソナル計算デバイス（例えば、１１０−２）である。パーソナル計算デバイスは、ユーザアカウント識別子３１２に関連付けられた正当な認証資格情報（例えば、正しいユーザ名およびパスワード）を、オンラインコンテンツ管理サービス（例えば、メタデータサーバ１５０またはウェブサイト１７０）またはオンラインコンテンツ管理サービスに認証サービスを提供するアイデンティティプロバイダに、パーソナル計算デバイスから、提供することによって、それが正当なユーザアカウント識別子３１２を所持するものであることを示すことができる。
３．２．１  リンクされたデバイスメタデータ
【０１４０】
図７に戻る前に図８を参照すると、図８は、本発明のいくつかの実施例に従う、メタデータプレーン１８０に格納された、リンクされたデバイスメタデータ８００のブロック図である。リンクされたデバイスメタデータ８００は、１つ以上のリンクデバイスレコード８１０を含む。リンクデバイスレコード８１０のそれぞれは、リンクされたパーソナル計算デバイスを識別するデバイス識別子８１２を有し得る。デバイスレコード８１０のそれぞれはまた、ユーザアカウントレコード３１０を識別するユーザアカウント識別子３１２を有し得る。例えば、同一のユーザが複数のパーソナル計算デバイスを用いてオンラインコンテンツ管理サービスとやりとりする場合、同一のユーザアカウント識別子３１２を有する、複数のリンクデバイスレコード８１０が存在してもよい。しかしながら、所与のユーザアカウント識別子３１２を有する、単一のリンクデバイスレコード８１０のみが存在するようにすることも可能である。リンクされたデバイスレコード８１０は、デバイス識別子８１２とユーザアカウント識別子３１２とに加えて、他の情報を含んでよい。例えば、リンクデバイスレコード８１０は、リンクされたデバイスの種別、リンクされたデバイスにインストールされたオペレーティングシステムの種別、リンクされたデバイスにインストールされたコンテンツアイテム同期エージェントのバージョン、他のデバイス固有の情報についての情報を含んでよい。
【０１４１】
いくつかの実施例によれば、リンクデバイスレコード８１０は、パーソナル計算デバイスにおいて実行されるクライアントアプリケーションが、ユーザアカウント識別子３１２に関連付けられた有効なユーザ認証クレデンシャルを提供するウェブサイト１７０へ要求を送信したことに応じて、パーソナル計算デバイスに対して、メタデータプレーン１８０に生成される。例えば、クライアントアプリケーションは、ユーザが有効なユーザ認証クレデンシャルを提供するパーソナル計算デバイスにおいて実行されるウェブブラウザであり得る。要求に応じて、ウェブサイト１７０は、新規のリンクされたデバイスレコード１８０を、パーソナル計算デバイスと有効なユーザアカウント識別子３１２とを識別するデバイス識別子８１２と共に生成してもよい。
【０１４２】
図７に戻り、ステップ７０４で、コンテンツアイテム同期１１４−２は通知サーバ１４０との長期ポーリング接続を維持してもよい。例えば、長期ポーリング接続はＨＴＴＰまたはＨＴＴＰＳ長期ポーリング接続であってもよい。パーソナル計算デバイスとの間で維持される長期ポーリング接続のそれぞれについて、通知サーバ１４０はパーソナル計算デバイスのデバイス識別子８１２をその接続と関連付けてもよい。ステップ７０２で新たなサーバジャーナルエントリ４１２が検出された場合、新たなサーバジャーナルエントリ４１２のコンテンツアイテム名前空間識別子４１４を用いて、メタデータプレーン１８０において、そのコンテンツアイテム名前空間識別子４１４を認証コンテンツアイテム名前空間３１４として有するユーザアカウントレコード３１０を特定してもよい。そのように特定されたユーザアカウントレコード３１０のそれぞれについて、通知対象のパーソナル計算デバイスのリンクデバイスレコード８１０は、特定されたユーザアカウントレコード３１０のユーザアカウント識別子３１２に基づいて特定されてもよい。通知サーバ１４０は次いで、通知を要すると決定されたパーソナル計算デバイスのデバイス識別子８１２に関連付けられた長期ポーリング接続のそれぞれを介して、「ピン（ｐｉｎｇ）」メッセージを送る。ピンメッセージは、パーソナル計算デバイスに設けられたひとつ以上のコンテンツアイテム名前空間のひとつ以上のコンテンツアイテムに対する更新が利用可能であることを、パーソナル計算デバイスのコンテンツアイテム同期エージェントに知らせる役割を果たす。
【０１４３】
ステップ７０６で、通知サーバ１４０からのピンメッセージを受信することに応じて、パーソナル計算デバイス１１０−２のコンテンツアイテム同期エージェント１１４−２は、パーソナル計算デバイス１１０−２に設けられたコンテンツアイテム名前空間に対するパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値を決定する。同期プロトコルの第１の例示的な動作にしたがうと、クライアントジャーナルカーソル値はコンテンツアイテム名前空間およびブロックサーバに特有のものであってもよい。したがって、コンテンツアイテム名前空間およびブロックサーバに対するパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値は、そのコンテンツアイテム名前空間およびそのブロックサーバに委託されたコンテンツアイテム変更に対してパーソナル計算デバイス１１０−２がどの程度最新かを反映する。パーソナル計算デバイス１１０−２は、パーソナル計算デバイス１１０−２に設けられた各コンテンツアイテム名前空間の少なくともひとつの現在のクライアントジャーナルカーソル値をローカルに保持してもよい。コンテンツアイテム同期エージェント１１４−２は、コンテンツアイテム名前空間およびブロックサーバに対する現在のクライアントジャーナルカーソル値を、そのコンテンツアイテム名前空間およびそのブロックサーバに属する新たなコンテンツアイテムのダウンロードに成功した後に、更新してもよい。
【０１４４】
ステップ７０８で、コンテンツアイテム同期エージェント１１４−２は「リスト」要求をメタデータサーバ１５０に送信する。ユーザアカウント識別子３１２およびデバイス識別子８１２に加えて、リスト要求は、パーソナル計算デバイス１１０−２に設けられたひとつ以上のコンテンツアイテム名前空間のそれぞれについて、コンテンツアイテム名前空間に対するパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値を特定してもよい。パーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値はブロックサーバにも特有のものであるから、リスト要求は、コンテンツアイテム名前空間識別子に加えて、現在のクライアントジャーナルカーソル値が関連する先のブロックサーバのブロックサーバ識別子を特定してもよい。したがって、リスト要求は、潜在的な他の情報に加えて、パーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値と、それらの現在のクライアントジャーナルカーソル値のそれぞれについて、コンテンツアイテム名前空間識別子と、現在のクライアントジャーナルカーソル値に関連付けられたブロックサーバ識別子と、のうちのひとつ以上を特定してもよい。
【０１４５】
ステップ７１０で、メタデータサーバ１５０はリスト要求を受信し、それを処理する。リスト要求を処理することは、メタデータプレーン１８０のサーバジャーナル４１０を参照することを含む。特に、リスト要求で提供されるパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値のそれぞれについて、メタデータサーバ１５０は、リスト要求で提供されるクライアントジャーナルカーソル値よりも「新しい」サーバジャーナルエントリ４１２があるかを決定する。より新しいサーバジャーナルエントリ４１２は、エントリのサーバジャーナルカーソル値４１７がパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値よりも数値的に大きく、かつ、エントリ４１２のブロックサーバ識別子４１３およびコンテンツアイテム名前空間識別子４１４がそれぞれリスト要求内のパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値に関連付けられたブロックサーバ識別子およびコンテンツアイテム名前空間識別子とマッチするようなものであってもよい。メタデータサーバ１５０は、リスト要求内で指定されたパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値のそれぞれについて、ひとつ以上のより新しいサーバジャーナルエントリ４１２を決定してもよい。
【０１４６】
ステップ７１２で、メタデータサーバ１５０はリスト要求に応答する。応答は、ステップ７１０で特定されたより新しいサーバジャーナルエントリ４１２のそれぞれからの情報を含んでもよい。特に、応答は、より新しいサーバジャーナルエントリ４１２のそれぞれについての以下の情報の全て、下位集合または上位集合を含んでもよい。
【０１４７】
より新しいサーバジャーナルエントリ４１２のブロックサーバ識別子４１３。
【０１４８】
より新しいサーバジャーナルエントリ４１２のコンテンツアイテム名前空間識別子４１４。
【０１４９】
より新しいサーバジャーナルエントリ４１２のコンテンツアイテム相対パス４１５。
【０１５０】
より新しいサーバジャーナルエントリ４１２のコンテンツアイテムブロックリスト４１６。
【０１５１】
より新しいサーバジャーナルエントリ４１２のサーバジャーナルカーソル値４１７。
【０１５２】
ステップ７１０で特定される複数のより新しいサーバジャーナルエントリ４１２が同じコンテンツアイテムに関する場合、その複数のより新しいサーバジャーナルエントリ４１２のうちの最新のもののみがリスト要求に対する応答で返されるであろう。複数のより新しいサーバジャーナルエントリ４１２は、それらがブロックサーバ識別子４１３フィールド、コンテンツアイテム名前空間識別子４１４フィールド、および相対パス４１５フィールドについて同じ値を有するが、異なるサーバジャーナルカーソル値４１７を有する場合、同じコンテンツアイテムに関すると見なされてもよい。例えば、直近の同期動作以来、同じコンテンツアイテムに二つの更新がなされたとしよう。この場合、複数のより新しいサーバジャーナルエントリ４１２のなかで最も高い（最も新しい）サーバジャーナルカーソル値４１７を伴うより新しいサーバジャーナルエントリ４１２が、複数のより新しいサーバジャーナルエントリ４１２のうちの他のものに取って代わる。最も高い（最も新しい）サーバジャーナルカーソル値４１７を伴うそのより新しいサーバジャーナルエントリ４１２はリスト要求に対する応答内で返され、他のものは返されない。
【０１５３】
ステップ７１４で、コンテンツアイテム同期エージェント１１４−２は、パーソナル計算デバイス１１０−２のローカルストレージ１１２−２から欠落しているコンテンツアイテムブロックを決定する。この決定は、ステップ７１２でメタデータサーバ１５０からリスト要求に対する応答で受信したより新しいエントリまたはより新しいサーバジャーナルエントリ４１２のコンテンツアイテムブロックリスト４１６に基づいてもよい。この決定はまた、コンテンツアイテムクライアントジャーナルまたは単に「クライアントジャーナル」に基づいてもよい。このクライアントジャーナルは、パーソナル計算デバイス１１０−２のローカルストレージ１１２−２に保持されるコンテンツアイテムブロックを追跡するために、コンテンツアイテム同期エージェント１１４−２がローカルで（例えば、ローカルストレージ１１２−２に）維持するものである。特に、クライアントジャーナルは、ローカルストレージ１１２−２に保持される設置コンテンツアイテム名前空間に属する各コンテンツアイテムの現在のバージョンのそれぞれに対するコンテンツアイテムブロックリストを保持してもよい。コンテンツアイテムの現在のバージョンに対するコンテンツアイテムブロックリストは、現在のバージョンのコンテンツアイテムブロックを特定する。クライアントジャーナル内の各ブロックリストは、クライアントジャーナルにおいて、所属コンテンツアイテム名前空間の識別子およびコンテンツアイテムへの相対パスに関連付けられてもよい。リスト要求に応じてメタデータサーバ１５０から受信した所与のより新しいサーバジャーナルエントリ４１２について、コンテンツアイテム同期エージェント１１４−２は、より新しいサーバジャーナルエントリ４１２のブロックリスト４１６と、より新しいサーバジャーナルエントリ４１２のコンテンツアイテム名前空間識別子４１４とより新しいサーバジャーナルエントリ４１２のコンテンツアイテム相対パス４１５とにクライアントジャーナル内で関連付けられたクライアントジャーナルのブロックリストと、を比較してもよい。より新しいサーバジャーナルエントリ４１２のブロックリスト４１６内のコンテンツアイテムブロックハッシュのうち、クライアントジャーナル内の対応するブロックリストに無いものは、パーソナル計算デバイス１１０−２のローカルストレージ１１２−２内に保持される対応するコンテンツアイテムの現在のバージョンから欠落しているコンテンツアイテムブロックに対応する。
【０１５４】
ステップ７１６で、コンテンツアイテム同期エージェント１１４−２はステップ７１４で特定された欠落しているコンテンツアイテムブロックをダウンロードする。欠落しているコンテンツアイテムブロックは、リスト要求への応答内で指定されるように、異なるブロックサーバに、または全てが同じブロックサーバに、格納されてもよい。ひとつ以上の欠落コンテンツアイテムブロックをブロックサーバからダウンロードするために、コンテンツアイテム同期エージェント１１４−２はブロックサーバに「取得」要求を送信し、取得要求内で欠落コンテンツアイテムブロックのコンテンツアイテムブロックハッシュを特定する。
【０１５５】
ステップ７１６で、コンテンツアイテム同期エージェント１１４−２は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、コンテンツアイテム同期エージェント１１４−２からの取得要求を受信する各ブロックサーバは、取得要求に対する応答を返し、該応答は、取得要求において特定されたコンテンツアイテムブロックハッシュに対応するコンテンツアイテムブロックを含む。ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、既知のｒｓｙｎｃアルゴリズムにより用いられるものなどのデルタ符号化スキームにしたがい行われてもよい。この場合、ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、ブロックサーバに保持されるコンテンツアイテムブロックとパーソナル計算デバイス１１０−２に既に保持されているコンテンツアイテムブロックとの間のデルタのみをダウンロードすることを含んでもよい。したがって、コンテンツアイテムブロックをブロックサーバからダウンロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバからダウンロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとの間のデルタだけをブロックサーバからダウンロードすることと、の両方を包含する。
【０１５６】
ステップ７１８で、コンテンツアイテム同期エージェント１１４−２は、ローカルストレージ１１２−２のファイルシステムに保持されるひとつ以上のファイルとして、またはその一部として、ダウンロードされたコンテンツアイテムブロックを格納する。この格納は、ファイルシステムに新たなファイルを生成すること、および／またはファイルシステムの既存のファイルをダウンロードされたコンテンツアイテムブロックに基づき更新すること、を含んでもよい。例えば、リスト要求に応じて受信されたより新しいサーバジャーナルエントリ４１２に対応するコンテンツアイテムについての、ブロックサーバからダウンロードされた所与のコンテンツアイテムブロックについて、コンテンツアイテム同期エージェント１１４−２は、より新しいサーバジャーナルエントリ４１２で特定されるコンテンツアイテム名前空間４１４のパーソナル計算デバイス１１０−２でのコンテンツアイテムマウントポイントフォルダ、および、より新しいサーバジャーナルエントリ４１２内の相対パス４１５に基づいて、所与のコンテンツアイテムブロックで更新するか生成するように、ファイルシステム内のファイルを決定することができる。
【０１５７】
ある例示的な実施の形態では、所与のコンテンツアイテム名前空間のひとつ以上のより新しいサーバジャーナルエントリ４１２に基づいてステップ７１８で生成または更新されたコンテンツアイテムは、より新しいサーバジャーナルエントリ４１２のサーバジャーナルカーソル値４１７のシーケンスまたは順番で生成または更新される。例えば、ステップ７０８において、コンテンツアイテム同期エージェント１１４−２が、コンテンツアイテム名前空間「ＡＢＣ１２３」とブロックサーバ「ＪＫＬ１０１」とについて現在のクライアントジャーナルカーソル値「１７」を指定するリスト要求を送信したとする。さらに、リスト要求に応じて、コンテンツアイテム同期エージェント１１４−２がステップ７１２においてリスト要求に応じて、コンテンツアイテム名前空間「ＡＢＣ１２３」とブロックサーバ「ＪＫＬ１０１」とについての三つのより新しいサーバジャーナルエントリ４１２であってそれぞれがサーバジャーナルカーソル値「１８」、「１９」、「２０」を有するサーバジャーナルエントリ４１２を受信したとする。次いで、ブロックサーバ「ＪＫＬ１０１」から三つの新たなサーバジャーナルエントリ４１２に対応する欠落コンテンツアイテムブロックをダウンロードした後、コンテンツアイテム同期エージェント１１４−２は、まず、サーバジャーナルカーソル値「１８」を有するより新しいサーバジャーナルエントリ４１２に対応するコンテンツアイテムを生成または更新し、次にサーバジャーナルカーソル値「１９」を有するより新しいサーバジャーナルエントリ４１２に対応するコンテンツアイテムを生成または更新し、最後にサーバジャーナルカーソル値「２０」を有するより新しいサーバジャーナルエントリ４１２に対応するコンテンツアイテムを生成または更新してもよい。
【０１５８】
ステップ７２０で、コンテンツアイテム同期エージェント１１４−２は、ステップ７１６および７１８においてダウンロードおよび格納に成功したコンテンツアイテムブロックに基づくローカルストレージ１１２−２内での生成または更新に成功したコンテンツアイテムについて、パーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値を更新する。特に、リスト要求に応じて受信された対応するより新しいサーバジャーナルエントリ４１２に基づいてローカルストレージ１１２−２において生成または更新された所与のコンテンツアイテムについて、その対応するより新しいサーバジャーナルエントリ４１２で特定されるコンテンツアイテム名前空間４１４およびブロックサーバ４１３についてのパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値は、それがその対応するより新しいサーバジャーナルエントリ４１２のサーバジャーナルカーソル値４１７と一致するように更新される。上述の通り、所与のコンテンツアイテム名前空間のひとつ以上のより新しいサーバジャーナルエントリ４１２に基づいてステップ７２０で生成または更新されたコンテンツアイテムは、より新しいサーバジャーナルエントリ４１２のジャーナルカーソル値４１７のシーケンスまたは順番で生成または更新されてもよい。同様に、所与のコンテンツアイテム名前空間についてのパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値は、ステップ７２２で、より新しいサーバジャーナルエントリ４１２のジャーナルカーソル値４１７のシーケンスまたは順番で、インクリメントされてもよい。
３．２．２  例示的なダウンロードインタラクション
【０１５９】
図９を参照すると、本発明のある例示的な実施の形態に係る、図７のプロセス７００が行われオンプレミスブロックサーバ（例えば、１２０）またはオフプレミスブロックサーバ１３０からコンテンツアイテムをダウンロードするときの、パーソナル計算デバイス１１０−２と通知サーバ１４０とメタデータサーバ１５０とターゲットブロックサーバとメタデータプレーン１８０との間の種々のインタラクションを示すインタラクション図９００である。
【０１６０】
ステップ７０４にあるように、通知サーバ１４０はパーソナル計算デバイス１１０−２のコンテンツアイテム同期エージェント１１４−２にピンメッセージを送信する。
【０１６１】
ステップ７０６にあるように、コンテンツアイテム同期エージェント１１４−２は、パーソナル計算デバイス１１０−２に設けられているひとつ以上のコンテンツアイテム名前空間の現在のクライアントジャーナルカーソル値を決定する。そのような現在のクライアントジャーナルカーソル値のそれぞれは、対応するブロックサーバにアップロードされたコンテンツアイテム名前空間に対する変更に関してパーソナル計算デバイス１１０−２がどの程度最新かを反映する。ステップ７０８にあるように、コンテンツアイテム同期エージェント１１４−２はリスト要求をメタデータサーバ１５０に送信する。
【０１６２】
ステップ７１０にあるように、メタデータサーバ１５０は、リスト要求で指定される現在のクライアントジャーナルカーソル値のそれぞれについて、サーバジャーナル４１０内により新しいジャーナルエントリ４１２があるか決定する。ステップ７１２にあるように、メタデータサーバ１５０は、より新しいジャーナルエントリ４１２のリストをデバイス１１０−２に送信する。
【０１６３】
ステップ７１４にあるように、コンテンツアイテム同期エージェント１１４−２は、より新しいジャーナルエントリ４１２で指定されるコンテンツアイテムブロックのなかに、デバイス１１０−２にまだ格納されていないものがあるか判定する。この判定は、より新しいジャーナルエントリ４１２のコンテンツアイテムブロックリスト４１６と、パーソナル計算デバイス１１０−２に既に格納されたコンテンツアイテムブロックの既知のコンテンツアイテムブロックハッシュのコンテンツブロックリストと、を比較することに基づいてもよい。ステップ７１６にあるように、コンテンツアイテム同期エージェント１１４−２は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、パーソナル計算デバイス１１０−２においてより新しいジャーナルエントリ４１２についてのひとつ以上のコンテンツアイテムブロックが欠落している場合、そのより新しいジャーナルエントリ４１２のそれぞれについて、コンテンツアイテム同期エージェント１１４−２は、エントリ４１２で特定されるブロックサーバ４１３からの欠落コンテンツアイテムブロックのダウンロードを試行する。ステップ７１８にあるように、コンテンツアイテム同期エージェント１１４−２は、ダウンロードされたコンテンツアイテムブロックに基づいて、パーソナル計算デバイス１１０−２のローカルファイルシステムにおいてひとつ以上のコンテンツアイテムを生成または更新する。ステップ７２０にあるように、コンテンツアイテム同期エージェント１１４−２は、より新しいジャーナルエントリ４１２の処理が成功したとき、現在のクライアントジャーナルカーソル値を更新する。
４．０  第２の例示的同期プロトコル動作
【０１６４】
上述の第１の例示的同期プロトコル動作の変形例において、クライアントおよびサーバジャーナルカーソル値はコンテンツアイテム名前空間にのみ特有であって、上述の第１の例示的同期プロトコル動作のときのようにコンテンツアイテム名前空間とブロックサーバとの組み合わせに特有ではない。この第２の変形例において、メタデータサーバ１５０は、コンテンツアイテム同期エージェントからの委託要求に応答することができ、その際にはコンテンツアイテム同期エージェントが欠落コンテンツアイテムブロックをアップロードできる先のひとつ以上のブロックサーバについて複数のオプションがある。また、この変形例において、メタデータサーバ１５０は、コンテンツアイテム同期エージェントからのリスト要求に応答することができ、その際には欠落コンテンツアイテムブロックがダウンロードされる元のひとつ以上の計算デバイスについて複数のオプションがある。リスト要求への応答の場合、計算デバイスオプションは、ブロックサーバ（例えば、１２０や１３０）に加えてまたはその代わりに、他のパーソナル計算デバイス（例えば、１１０−１、１１０−２）を含むことができ、それによりピアツーピア動作が促進される。
【０１６５】
図２および図７に関して上述したアップロードおよびダウンロードプロセスと変形例との差分に重きを置いて、同期プロトコルの変形例を以下に説明する。
４．１  アップロードプロセス
【０１６６】
図１０を参照すると、本発明のいくつかの例示的な実施の形態に係る、新たなコンテンツアイテムをパーソナル計算デバイス１１０−１から「ターゲット」ブロックサーバへアップロードするためのプロセス１０００を説明するフロー図である。ターゲットブロックはオンプレミスブロックサーバ（例えば、１０２）またはオフプレミスブロックサーバ１３０であってもよい。以下にステップを図１０に示される所定の順番で説明するが、そうでないと明記されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
【０１６７】
ステップ１００２で、図２に関連して説明されたステップ２０２と同様に、ユーザ１０２−１はパーソナル計算デバイス１１０−１のローカルストレージ１１２−１において「新たな」コンテンツアイテムを追加するか変更する。
【０１６８】
ステップ１００４で、図２に関連して説明されたステップ２０４と同様に、パーソナル計算デバイス１１０−１のコンテンツアイテム同期エージェント１１４−１は、ローカルストレージ１１２−１内の新たなコンテンツアイテムを検出する。
【０１６９】
ステップ１００６で、図２に関連して説明されたステップ２０６と同様に、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムが所属するコンテンツアイテム名前空間があればそれを決定する。
【０１７０】
ステップ１００８で、図２に関連して説明されたステップ２０８と同様に、コンテンツアイテム同期１１４−１は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。
【０１７１】
プロセス１０００のこの時点で、コンテンツアイテム同期エージェント１１４−１は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間の識別子（例えば「ＤＥＦ４５６」）を決定し（ステップ１００６）、新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出（ステップ１００８）した。プロセス１０００において、図２に関して上述されたステップ２１０などのステップを実行する必要はないが、されてもよい。特に、アップロードプロセス１０００について、名前空間対ブロックサーバ割り当てがパーソナル計算デバイス１１０−１に保持される必要はないが、保持されてもよい。
【０１７２】
ステップ１０１０で、コンテンツアイテム同期エージェント１１４−１は第１「委託」要求をメタデータサーバ１５０に送信する。特に、第１委託要求は、ユーザアカウント識別子３１２およびデバイス識別子８１２に加えて、以下の情報の全て、またはその下位集合あるいは上位集合を含んでもよい。
【０１７３】
所属コンテンツアイテム名前空間の識別子（例えば、「ＤＥＦ４５６」）；
【０１７４】
パーソナル計算デバイス１１０−１における所属コンテンツアイテム名前空間のコンテンツアイテム名前空間マウントポイントフォルダに対する新たなコンテンツアイテムの相対ファイルシステムパス。
【０１７５】
新規コンテンツアイテムに対するコンテンツアイテムブロックリスト。
【０１７６】
さらなる安全性のため、ステップ１０１０で送信される委託要求は、トランスポートレイヤセキュリティ（ＴＬＳ）やセキュアソケットレイヤ（ＳＳＬ）で保護されたネットワーク接続などの暗号化ネットワーク接続を介して、ＬＡＮ１６０およびＷＡＮ１９０を通じて送られてもよい。
【０１７７】
ステップ１０１２で、メタデータサーバ１５０はコンテンツアイテム同期エージェント１１４−１から受信した第１委託要求を認証する。この認証は、第１委託要求で指定される所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子３１４が、第１委託要求で指定されるユーザアカウント識別子３１２に対応するメタデータプレーン１８０内のユーザアカウントレコード３１０の認証コンテンツアイテム名前空間識別子３１４のうちのひとつであるか検証することを含んでもよい。そうでなければ、メタデータサーバ１５０は第１委託要求を拒否し、コンテンツアイテム同期エージェント１１４−１に適切なエラーメッセージを返してもよい。
【０１７８】
ステップ１０１４で、メタデータサーバ１５０は、第１委託要求で指定される所属コンテンツアイテム名前空間が割り当てられる先のひとつ以上の「候補」ブロックサーバを決定する。この決定は、メタデータプレーン１８０内に保持される名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。所属コンテンツアイテム名前空間は、オフプレミスブロックサーバ１３０にのみ、ひとつのオンプレミスブロックサーバ（例えば、１２０）にのみ、複数のオンプレミスブロックサーバに、またはひとつ以上のオンプレミスブロックサーバおよびオフプレミスブロックサーバ１３０に、割り当てられてもよい。
【０１７９】
ステップ１０１６で、メタデータサーバ１５０は、ひとつ以上の候補ブロックサーバのそれぞれについて、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、もしあればどれが候補ブロックサーバにまだ格納されていないかを判定する。これを行うために、メタデータサーバ１５０はメタデータプレーン１８０内の候補ブロックサーバのブロックリストを参照してもよい。メタデータサーバ１５０は、候補ブロックサーバのブロックサーバ識別子に基づいて、メタデータプレーン１８０において候補ブロックサーバのブロックリストを特定してもよい。第１委託要求における新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかの各コンテンツアイテムブロックハッシュについて、メタデータサーバ１５０は、そのコンテンツアイテムブロックハッシュが候補ブロックサーバのブロックリストにあるか否かを判定する。もしなければ、メタデータサーバ１５０は、対応するコンテンツアイテムブロックが候補ブロックサーバから欠落していると決定する。そうでなければ、メタデータサーバ１５０は、対応するコンテンツアイテムブロックが候補ブロックサーバに既に保持されていると決定する。
【０１８０】
ステップ１０１８で、メタデータサーバ１５０はひとつ以上の必要コンテンツアイテムブロックリストを指定する応答で第１委託要求に応答する。応答は、各候補ブロックサーバについてひとつの必要コンテンツアイテムブロックリストを含んでもよい。候補ブロックサーバについての必要コンテンツアイテムブロックリストは、委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュを含み、そのコンテンツアイテムブロックはステップ１０１６においてメタデータサーバ１５０が候補ブロックサーバのブロックリストから欠落していると決定したものである。したがって、候補ブロックサーバについての必要コンテンツアイテムブロックリストは、候補ブロックサーバにおいてどのコンテンツアイテムブロックが欠落しているかに依存して、第１委託要求において送信された新たなコンテンツアイテムのコンテンツアイテムブロックリストのなかのコンテンツアイテムブロックハッシュの全てまたは部分集合を指定してもよい。
【０１８１】
ステップ１０２０で、コンテンツアイテム同期エージェント１１４は、新たなコンテンツアイテムをアップロードする先のターゲットブロックサーバを選択する。選択は、メタデータサーバ１５０から受信した、委託要求に対する応答の中の情報に基づいてもよい。特に、応答は、ひとつ以上の候補ブロックサーバの識別子と、そのような識別子のそれぞれに関連付けられた必要コンテンツアイテムブロックリストと、を含んでもよい。応答は、候補ブロックサーバがオンプレミスブロックサーバ（例えば、１２０）であるかまたはオフプレミスブロックサーバ１３０であるかなどの、候補ブロックサーバ識別子に関連付けられた他の情報を含んでもよい。他の情報はまた、ネットワークパフォーマンス情報およびブロックサーバ負荷情報を含んでもよい。ネットワークパフォーマンス情報は、候補ブロックサーバが接続される先のネットワークの現在のパフォーマンスまたはパフォーマンスの履歴の定性的または定量的評価を含んでもよい。ブロックサーバ負荷情報は、候補ブロックサーバの計算リソース（例えば、ＣＰＵ、メモリ、ストレージ等）に対する現在の負荷または負荷の履歴の定性的または定量的評価を含んでもよい。コンテンツアイテム同期１１４−１は、種々のブロックサーバについてのネットワークパフォーマンス情報およびブロックサーバパフォーマンス情報をローカルで（例えば、ローカルストレージ１１２に）維持してもよい。特に、ブロックサーバのパフォーマンス情報は、過去にブロックサーバにアップロードされたコンテンツアイテムブロックのアップロード時間に基づいてもよい。例えば、コンテンツアイテム同期エージェント１１４−１がひとつ以上のコンテンツアイテムブロックを含むブロックサーバに格納要求を行うとき、コンテンツアイテム同期エージェント１１４−１は格納要求が送信された時とブロックサーバから格納要求に対する応答を受信した時との間のクロック時間を測定してもよい。これらのクロック時間に基づいて、コンテンツアイテム同期エージェント１１４−１は平均アップロード時間および／または平均スループット（例えば、毎秒メガビットの単位で）を算出することができる。これらの平均は、パーソナル計算デバイス１１０−１をブロックサーバに接続するネットワークのパフォーマンスを反映する。
【０１８２】
以下の情報の全てまたはその下位集合または上位集合に基づいて、コンテンツアイテム同期エージェント１１４−１はひとつ以上の候補ブロックサーバのなかからひとつを、新たなコンテンツアイテムをアップロードする先のターゲットブロックサーバとして選択する：
【０１８３】
候補ブロックサーバの数。例えば、ただひとつの候補ブロックサーバが利用可能である場合、その候補ブロックサーバがターゲットブロックサーバとして選択されてもよい。
【０１８４】
新たなコンテンツアイテムのコンテンツアイテムブロックのうち、各候補ブロックサーバから欠落しているものの数。例えば、複数の候補ブロックサーバが利用可能である場合、複数の候補ブロックサーバの全てのなかからアップロードしなければならないコンテンツアイテムブロックの数が最小となる候補ブロックサーバをターゲットブロックサーバとして選択してもよい。
【０１８５】
第１委託要求に対する応答においてメタデータサーバ１５０によって提供される候補ブロックサーバのひとつ以上のネットワークパフォーマンス情報。
【０１８６】
第１委託要求に対する応答においてメタデータサーバ１５０によって提供される候補ブロックサーバのひとつ以上のサーバ負荷情報。
【０１８７】
候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロード時間。
【０１８８】
候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロードスループット。
【０１８９】
ある例示的な実施の形態によると、コンテンツアイテム同期エージェント１１４−１は、候補ブロックサーバにアップロードする新たなコンテンツアイテムのコンテンツアイテムブロックの数と、候補ブロックサーバに関するひとつ以上のネットワークパフォーマンス測度と、に基づいて、各候補ブロックサーバについての予想アップロード時間を算出する。種々の異なるネットワークパフォーマンス測度が可能である。例えば、ネットワークパフォーマンス測度は、候補ブロックサーバについての履歴的平均コンテンツアイテムブロックアップロード時間、または候補ブロックサーバについての履歴的平均コンテンツアイテムブロックアップロードスループットであってもよい。例えば、トータルサイズにして４１０６２４バイトの百一（１０１）のコンテンツアイテムブロックが候補オンプレミスブロックサーバ（例えば、１２０）から欠落しており、トータルサイズにして２０５８２４バイトの五十一（５１）のコンテンツアイテムブロックが候補オフプレミスブロックサーバ１３０から欠落しているとする。さらに、候補オンプレミスブロックサーバについての履歴的平均コンテンツアイテムブロックアップロードスループットが２０Ｍｂｉｔ／秒であり、候補オフプレミスブロックサーバ１３０についての履歴的平均コンテンツアイテムブロックアップロードスループットが３Ｍｂｉｔ／秒であるとすると、コンテンツアイテム同期エージェント１１４−１は、より多くのバイトを候補オンプレミスブロックサーバにアップロードすべきではあるものの、候補オンプレミスブロックサーバをターゲットサーバとして選択してもよい。この選択がなされるのは、候補オンプレミスブロックサーバへの予想トータルアップロード時間が候補オフプレミスブロックサーバ１３０への予想トータルアップロード時間の三分の一（１／３）より少ないからであってもよい。
【０１９０】
ある例示的な実施の形態によると、候補ブロックサーバに優先度を付け、コンテンツアイテム同期エージェント１１４−１は対応する優先度に基づいて、候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する。例えば、メタデータサーバ１５０により同期エージェント１１４−１に提供される、第１委託要求に対する応答は、各候補ブロックサーバ識別子に関連付けられた優先度を含んでもよい。優先度は、候補ブロックサーバの全てがその優先度にしたがい順序付けられるような数値であってもよい。優先度はユーザ特定的であってもよい。例えば、ウェブサイト１７０とやりとりすることでコンテンツアイテム名前空間を複数のブロックサーバに割り当てる際、ユーザは複数のブロックサーバに対して優先順位を指定してもよい。例えば、ユーザは所与のコンテンツアイテム名前空間について、オフプレミスブロックサーバ１３０よりもオンプレミスブロックサーバ（例えば、１２０）を好ましいとするよう指定してもよく、あるいはまた、第２オンプレミスブロックサーバよりも第１オンプレミスブロックサーバをより好ましいとしつつ、それらの両方をオフプレミスブロックサーバ１３０よりも好ましいとするよう指定してもよい。複数の候補ブロックサーバが選択可能である場合、最高のまたは最良の優先度に関連付けられた候補ブロックサーバがターゲットブロックサーバとして選択されてもよい。複数の候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する前に、複数の候補ブロックサーバに関連付けられた優先度をまず重み付けしてもよい。優先度の重み付けはコンテンツアイテム同期エージェント１１４−１に利用可能な他の情報に基づいてもよい。そのような他の情報は例えば、新たなコンテンツアイテムのコンテンツアイテムブロックのうち、各候補ブロックサーバから欠落しているものの数、第１委託要求に対する応答においてメタデータサーバ１５０によって提供される候補ブロックサーバのひとつ以上のネットワークパフォーマンス情報、第１委託要求に対する応答においてメタデータサーバ１５０によって提供される候補ブロックサーバのひとつ以上のサーバ負荷情報、候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロード時間、および／または、候補ブロックサーバのひとつ以上についての履歴的平均コンテンツアイテムブロックアップロードスループットを含む。
【０１９１】
ステップ１０２２で、図２に関連して上述されたステップ２２０と同様に、コンテンツアイテム同期エージェント１１４−２は新たなコンテンツアイテムの欠落コンテンツアイテムブロックをターゲットブロックサーバにアップロードする。
【０１９２】
ステップ１０２４で、図２に関連して上述されたステップ２２２と同様に、ターゲットブロックサーバ（例えば、１２０や１３０）のブロックサービス（例えば、１２２や１３２）は欠落しているコンテンツアイテムブロックをターゲットブロックサーバのブロックストレージ（例えば、１２４や１３４）に格納する。
【０１９３】
ステップ１０２６で、図２に関連して上述されたステップ２２４と同様に、ターゲットブロックサーバは、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン１８０内のターゲットブロックサーバのブロックサーバブロックリストを更新する。
【０１９４】
ステップ１０２８で、コンテンツアイテム同期エージェント１１４は第２委託要求をメタデータサーバ１５０に送信する。第２委託要求は、上述のステップ１０１０で第１委託要求においてメタデータサーバ１５０に送信された情報と同じ情報を含んでもよい。加えて、第２委託要求は、上述のステップ１０２０で選択されたターゲットブロックサーバのブロックサーバ識別子を指定してもよい。しかしながら、コンテンツアイテム同期エージェント１１４−１が、第２委託要求において、選択されたターゲットブロックサーバのブロックサーバ識別子を送信しなくてもよい。
【０１９５】
ステップ１０３０で、メタデータサーバ１５０は、上述のステップ１０１２で第１委託要求について行ったように、第２要求を認証してもよい。
【０１９６】
ステップ１０３２で、第２委託要求が認証された前提で、メタデータサーバ１５０は、メタデータプレーン１８０内のターゲットブロックサーバのコンテンツアイテムブロックリストにしたがい、新たなコンテンツアイテムのブロックリストで特定されるコンテンツアイテムブロックのなかにターゲットブロックサーバから欠落しているものがあるか否かを判定する。このとき、第１委託要求の後、欠落していたコンテンツアイテムブロックはターゲットブロックサーバにアップロードされてしまっているので、メタデータサーバ１５０は、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバで欠落しているものはないと判定すべきである。メタデータサーバ１５０は、第２委託要求においてターゲットブロックサーバのブロックサーバ識別子が指定されている場合に、この判定を行ってもよい。ターゲットブロックサーバの識別子と、新たなコンテンツアイテムのブロックリスト中のコンテンツアイテムブロックハッシュと、を用いることで、メタデータサーバ１５０はメタデータプレーン１８０にあるターゲットブロックサーバのコンテンツアイテムブロックリストを参照し、新たなコンテンツアイテムのブロックリスト中のコンテンツアイテムハッシュのなかにターゲットブロックサーバのコンテンツアイテムブロックリストから欠落しているものがあるかを判定することができる。もしあれば、新たなコンテンツアイテムはターゲットブロックサーバにまだアップロードされていないのであるから、第２委託要求は第１委託要求と同じようにメタデータサーバ１５０によって扱われ、プロセス１０００はステップ１０１４に戻り、そこから続いてもよい。この場合、ステップ１０１６でのターゲットブロックサーバにおいて欠落しているコンテンツアイテムブロックの決定は、再度行われる必要はない。この決定は既になされているからである。しかしながら、ステップ１０１６での欠落コンテンツアイテムブロックの決定は、もしあれば他の候補ブロックサーバについてなされてもよい。一方、欠落しているコンテンツアイテムブロックハッシュがない場合、新たなコンテンツアイテムはターゲットブロックサーバに完全にアップロードされたのであるから、プロセス１０００はステップ１０３４へと続き、オンラインコンテンツ管理サービスに新たなコンテンツアイテムを委託する。
【０１９７】
一方、第２委託要求においてターゲットブロックサーバのブロックサーバ識別子が指定されていない場合、ステップ１０３２において、メタデータサーバ１５０は、第２委託要求において指定される所属コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補ブロックサーバのうち、新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつあるか否かを判定する。この判定は、所属コンテンツアイテム名前空間が割り当てられている先のひとつ以上の候補ブロックサーバを決定するステップ１０３２のサブステップとして上述の１０１４のようなステップを行うことと、新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつあるか否かを判定するステップ１０３２のサブステップとして上述の１０１６のようなステップを行うことと、を含んでもよい。新たなコンテンツアイテムのブロックリストで特定される全てのコンテンツアイテムブロックを保持する候補ブロックサーバが少なくともひとつある場合、新たなコンテンツアイテムは少なくともひとつの候補ブロックサーバに完全にアップロードされたのであるから、アップロードプロセス１０００はステップ１０３４へと続き、オンラインコンテンツ管理サービスに新たなコンテンツアイテムを委託する。一方、新たなコンテンツアイテムのコンテンツアイテムブロックの全てを保持する候補ブロックサーバがない場合、新たなコンテンツアイテムは候補ブロックサーバにまだアップロードされていないのであるから、第２委託要求は第１委託要求と同じようにメタデータサーバ１５０によって扱われ、プロセス１０００はステップ１０１４に戻り、そこから続き、すでになされた決定はスキップする。
４．１．１  コンテンツアイテムサーバジャーナル
【０１９８】
ステップ１０３４で、新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバまたは少なくともひとつの候補ブロックサーバから欠落しているものはないと判定した後、メタデータサーバ１５０は、メタデータプレーン１８０内のコンテンツアイテムサーバジャーナルまたは単に「サーバジャーナル」に新たなジャーナルエントリを追加する。コンテンツアイテムサーバジャーナルを用いて、コンテンツアイテム名前空間ごとベースで、オンラインコンテンツ管理サービスに委託されたコンテンツアイテムのバージョンを追跡できる。
【０１９９】
いったん図１１を参照すると、それはサーバジャーナル１１１０のブロック図である。サーバジャーナル１１１０はメタデータプレーン１８０に保持されてもよい。サーバジャーナル１１１０は複数のジャーナルエントリ１１１２を含む。新たなコンテンツアイテムがブロックサーバに完全にアップロードされると、サーバジャーナル１１１０に新たなジャーナルエントリ１１１２が追加（例えば、追記）される。例えば、メタデータサーバ１５０は、コンテンツアイテム同期エージェント１１４から第２委託要求を受信することに応じて新たなコンテンツアイテムのコンテンツアイテムブロックにはターゲットブロックサーバから欠落しているものはないと判定した後、サーバジャーナル１１１０に、新たなジャーナルエントリ１１１２を追加してもよい。
【０２００】
サーバジャーナル１１１０の各ジャーナルエントリ１１１２は、コンテンツアイテム名前空間識別子１１１４と、相対コンテンツアイテムパス１１１５と、コンテンツアイテムブロックリスト１１１６と、サーバジャーナルカーソル値１１１７と、を含んでもよい。コンテンツアイテム名前空間識別子１１１４は、新たなコンテンツアイテムが所属する先のコンテンツアイテム名前空間（すなわち、所属コンテンツアイテム名前空間）を特定する。パス１１１５は、新たなコンテンツアイテムの、新たなコンテンツアイテムが所属する先のコンテンツアイテム名前空間のマウントポイントに対する、相対ファイルシステムパスを指定する。コンテンツアイテムブロックリスト１１１６は、新たなコンテンツアイテムを構成するひとつ以上のコンテンツアイテムブロックを特定するひとつ以上のコンテンツアイテムブロックハッシュを含む。サーバジャーナルカーソル値１１１７はコンテンツアイテム名前空間特定的である。特に、メタデータサーバ１５０は、オンラインコンテンツ管理サービスの管理下にある一意のコンテンツアイテム名前空間のそれぞれについて、別個のサーバジャーナルカーソルを維持してもよい。コンテンツアイテム名前空間に対するサーバジャーナルカーソルは、コンテンツアイテム名前空間の新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されたときに増やされ（例えば、インクリメントされ）る。例えば、コンテンツアイテム名前空間に対するサーバジャーナルカーソルは単調増加する値であってもよい。
【０２０１】
例えば、コンテンツアイテム名前空間「ＤＥＦ４５６」に対する直近で追加されたジャーナルエントリ１１１２のサーバジャーナルカーソル値１１１７が「１７」である場合、ステップ１０３４で追加される、同じコンテンツアイテム名前空間に属する新たなコンテンツアイテムの新たなサーバジャーナルエントリ１１１２はサーバジャーナルカーソル値として「１８」を有するであろう。異なるコンテンツアイテム名前空間に属する新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託されるとき、異なるコンテンツアイテム名前空間のサーバジャーナルカーソルは互いに独立にインクリメントされてもよい。
【０２０２】
サーバジャーナル１１１０は、複数のコンテンツアイテム名前空間のサーバジャーナルを保持してもよい。特に、同じコンテンツアイテム名前空間識別子１１１４を有するサーバジャーナル１１１０内のエントリ１１１２の全てはそのコンテンツアイテム名前空間のサーバジャーナルと考えられてもよい。ある代替的な実施の形態では、メタデータプレーン１８０内に、管理下の各コンテンツアイテム名前空間について、物理的に別個のサーバジャーナルが保持されてもよい。メタデータプレーン１８０の複数のサーバ計算デバイスに亘ってサーバジャーナル１１１０をパーティション化または分割することを含む他のストレージ構成も可能である。この場合、コンテンツアイテム名前空間識別子１１１４はパーティション化のキーまたは分割のキーとして用いられてもよい。
【０２０３】
ステップ１０３６で、新たなジャーナルエントリ１１１２がサーバジャーナル１１１０に追加された後、メタデータサーバ１５０はコンテンツアイテム同期エージェント１１４−１からの第２委託要求に応答する。特に、メタデータサーバ１５０は、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したことをコンテンツアイテム同期エージェント１１４−１に対して示す応答を送信する。加えて、その応答は、追加された新たなサーバジャーナルエントリ１１１２からの所属コンテンツアイテム名前空間に対するジャーナルカーソル値１１１７を含んでもよい。
【０２０４】
ステップ１０３８で、コンテンツアイテム同期エージェント１１４−１は、将来の参照のため、サーバジャーナルカーソル値１１１７をローカルに（例えば、ローカルストレージ１１２に）格納してもよい。ローカルで格納する際、コンテンツアイテム同期１１４−１は、サーバジャーナルカーソル値１１１７を、サーバジャーナルカーソル値１１１７が関係する所属コンテンツアイテム名前空間識別子に関連付けてもよい。加えて、新たなコンテンツアイテムのオンラインコンテンツ管理サービスへの委託が成功したので、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの委託状態インジケータを更新してもよく、その更新はアップロードプロセス２００のステップ２３６に関して上述されたように、新たなコンテンツアイテムの欠落コンテンツアイテムブロックがどのターゲットブロックサーバ（例えば、１２０や１３０）にアップロードされたかに依存する。
４．１．２  例示的なアップロードインタラクション
【０２０５】
図１２は、本発明のある例示的な実施の形態に係る、図１０のアップロードプロセス１０００が行われターゲットブロックサーバに新たなコンテンツアイテムがアップロードされるときの、パーソナル計算デバイス１１０−１とメタデータサーバ１５０とオフプレミスブロックサーバ１３０とメタデータプレーン１８０との間の種々のインタラクションを示すインタラクション図１２００を提供する。インタラクション図１２００は、ターゲットブロックサーバがオフプレミスブロックサーバ１３０であるときのアップロードプロセス１０００を表す。図１３は、本発明のいくつかの例示的な実施の形態に係る、ターゲットブロックサーバがオンプレミスブロックサーバ１２０であるときの、アップロードプロセス１０００を表すインタラクション図１３００である。
【０２０６】
ステップ１００２で、ユーザ１０２−１はパーソナル計算デバイス１１０−１でコンテンツアイテムを生成または変更する。ステップ１００４で、パーソナル計算デバイスのコンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムを検出する。ステップ１００６で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの所属コンテンツアイテム名前空間を決定する。ステップ１００８で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムのコンテンツアイテムブロックリストを算出する。ステップ１０１０で、コンテンツアイテム同期エージェント１１４−１は第１委託要求をメタデータサーバ１５０に送信する。
【０２０７】
ステップ１０１２で、メタデータサーバ１５０は第１委託要求を認証する。ステップ１０１４で、メタデータサーバ１５０は、第１委託要求で指定される所属コンテンツアイテム名前空間のひとつ以上の候補ブロックサーバを決定する。ステップ１０１６で、メタデータサーバ１５０はステップ１０１４で決定された候補ブロックサーバのそれぞれで欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ステップ１０１８で、メタデータサーバ１５０は候補ブロックサーバのそれぞれで欠落しているコンテンツアイテムブロックを特定する必要コンテンツアイテムブロックリスト応答で第１委託要求に応答する。
【０２０８】
ステップ１０２０で、コンテンツアイテム同期エージェント１１４−１は、上述されたものなどの種々のファクタに基づいて、候補ブロックサーバのうちのひとつをターゲットブロックサーバとして選択する。ステップ１０２２で、コンテンツアイテム同期エージェント１１４−１は欠落しているコンテンツアイテムブロックをターゲットブロックサーバにアップロードする。
【０２０９】
ステップ１０２４で、ターゲットブロックサーバがオフプレミスブロックサーバ１３０である場合、オフプレミスブロックサーバ１３０はアップロードされたコンテンツアイテムブロックをブロックストレージ１３４に格納し、ステップ１０２６でオフプレミスブロックサーバ１３０は、メタデータプレーン１８０にあるオフプレミスブロックサーバ１３０のためのブロックリストを、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで更新する。
【０２１０】
インタラクション図１２００はターゲットブロックサーバがオフプレミスブロックサーバ１３０であるときのアップロードプロセス１０００を表すが、ターゲットブロックサーバがオンプレミスブロックサーバ１２０である場合には、図１３のインタラクション図１３００に示されるように、ステップ１０２４でオンプレミスブロックサーバ１２０はアップロードされたコンテンツアイテムブロックをブロックストレージ１２４に格納し、ステップ１０２６でメタデータサーバ１５０にひとつ以上のコンテンツアイテムブロック有り要求を送信する。また、ステップ１０２６で、ターゲットブロックサーバがオンプレミスブロックサーバ１２０である場合、メタデータサーバ１５０は、アップロードされたコンテンツアイテムブロックのコンテンツアイテムブロックハッシュで、メタデータプレーン１８０にあるオンプレミスブロックサーバ１２０のためのブロックリストを更新する。
【０２１１】
ステップ１０２８で、コンテンツアイテム同期エージェント１１４−１は第２委託要求を送信する。第２委託要求は、ステップ１０２０で選択されたターゲットブロックサーバの識別子を指定してもよい。
【０２１２】
ステップ１０３０で、メタデータサーバ１５０は第２委託要求を認証する。ステップ１０３２で、メタデータサーバ１５０は、ターゲットブロックサーバが第２委託要求において指定されている場合、そのターゲットブロックサーバで欠落している新たなコンテンツアイテムのコンテンツアイテムブロックを決定する。ターゲットブロックサーバが第２委託要求において指定されていない場合、メタデータサーバ１５０は、ステップ１０４にあるように所属コンテンツアイテム名前空間についてのひとつ以上の候補ブロックサーバを決定し、候補ブロックサーバのなかに、新たなコンテンツアイテムのコンテンツアイテムブロックの欠落が全くないものが少なくともひとつあるか確かめる。ステップ１０３４で、ターゲットブロックサーバまたは少なくともひとつの候補ブロックサーバから新たなコンテンツアイテムのコンテンツアイテムブロックが欠落していないと確認されると、メタデータサーバ１５０は新たなコンテンツアイテムのサーバジャーナル１１１０に新たなサーバジャーナルエントリ１１１２を追加する。ステップ１０３６で、メタデータサーバ１５０は委託が成功したことの確認で第２委託要求に応答する。その応答は、所属コンテンツアイテム名前空間に専用のサーバジャーナルカーソル値１１１７を含んでもよい。
【０２１３】
ステップ１０３８で、コンテンツアイテム同期エージェント１１４−１は新たなコンテンツアイテムの委託状態インジケータを、新たなコンテンツアイテムがターゲットブロックサーバに委託されたことを示すよう更新する。
４．２  ダウンロードプロセス
【０２１４】
図１４を参照すると、本発明のいくつかの例示的な実施の形態に係る、コンテンツアイテムをターゲットブロックサーバからダウンロードするためのプロセス１４００のフローチャートである。以下にステップを図１４に示される所定の順番で説明するが、そうでないと明記または暗示されていない限り、ステップの特定の順番が要求されているわけではない。さらに、全てのステップが別々の時刻に行われなければならないというような要件はなく、いくつかのステップは同時にまたは時間的に重畳して行われてもよい。さらに、目の前の特定の実装の要件にしたがい、いくつかのステップは完全に省かれてもよく、追加的なステップが含められてもよい。
【０２１５】
ステップ１４０２で、サーバジャーナル１１１０に追加された新たなサーバジャーナルエントリ１１１２が検出される。そのような検出は、例えばメタデータサーバ１５０や通知サーバ１４０を含むオンラインコンテンツ管理サービスの種々のコンポーネントによって行われてもよい。例えば、サーバジャーナル１１１０に新たなサーバジャーナルエントリ１１１２が追加されたとき、メタデータプレーン１８０によってネットワークメッセージが生成され、バックエンドデータバスによりメタデータサーバ１５０および／または通知サーバ１４０へ運ばれてもよい。新たなサーバジャーナルエントリ１１１２の追加は、所属コンテンツアイテム名前空間に属する新たなコンテンツアイテムがオンラインコンテンツ管理サービスに最近委託されたことを表す。新たなサーバジャーナルエントリ１１１２は、新たなサーバジャーナルエントリ１１１２のコンテンツアイテム名前空間識別子１１１４を介して、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を特定する。
【０２１６】
ステップ１４０４で、通知サーバ１４０は、図７に関連して上述されたダウンロードプロセス７００のステップ７０４にあるように、所属コンテンツアイテム名前空間が設けられているパーソナル計算デバイス１１０−２に通知を行う。
【０２１７】
ステップ１４０６で、通知サーバ１４０からのピンメッセージを受信することに応じて、パーソナル計算デバイス１１０−２のコンテンツアイテム同期エージェント１１４−２は、パーソナル計算デバイス１１０−２に設けられたコンテンツアイテム名前空間に対するパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値を決定する。同期プロトコルのこの変形例では、クライアントジャーナルカーソル値はコンテンツアイテム名前空間特定的であってもよい。したがって、コンテンツアイテム名前空間に対するパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値は、そのコンテンツアイテム名前空間およびオンラインコンテンツ管理サービスに委託されたコンテンツアイテム変更に対してパーソナル計算デバイス１１０−２がどの程度最新かを反映する。パーソナル計算デバイス１１０−２は、パーソナル計算デバイス１１０−２に設けられた各コンテンツアイテム名前空間の現在のクライアントジャーナルカーソル値をローカルに保持してもよい。コンテンツアイテム同期エージェント１１４−２は、設置コンテンツアイテム名前空間に対する現在のクライアントジャーナルカーソル値を、ブロックサーバからの新たなコンテンツアイテムのダウンロードに成功した後に、更新してもよい。
【０２１８】
ステップ１４０８で、コンテンツアイテム同期エージェント１１４−２は「リスト」要求をメタデータサーバ１５０に送信する。ユーザアカウント識別子３１２およびデバイス識別子８１２に加えて、リスト要求は、パーソナル計算デバイス１１０−２に設けられたひとつ以上のコンテンツアイテム名前空間のそれぞれについて、コンテンツアイテム名前空間に対するパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値を特定してもよい。パーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値はコンテンツアイテム名前空間に特有のものであるから、リスト要求は、現在のクライアントジャーナルカーソル値が関連する先のコンテンツアイテム名前空間のコンテンツアイテム名前空間識別子を特定してもよい。したがって、リスト要求は、パーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値と、それらの現在のクライアントジャーナルカーソル値のそれぞれについて、コンテンツアイテム名前空間識別子と、のうちのひとつ以上を特定してもよい。
【０２１９】
ステップ１４１０で、メタデータサーバ１５０はリスト要求を受信し、リスト要求内の情報に基づいて、サーバジャーナル１１１０においてより新しいサーバジャーナルエントリ１１１２を特定する。より新しいサーバジャーナルエントリ１１１２は、エントリのサーバジャーナルカーソル値１１１７がパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値よりも数値的に大きく、かつ、エントリ１１１２のコンテンツアイテム名前空間識別子１１１４がリスト要求内のパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値に関連付けられたコンテンツアイテム名前空間識別子とマッチするようなものであってもよい。メタデータサーバ１５０は、リスト要求内で指定されたパーソナル計算デバイス１１０−２のクライアントジャーナルカーソル値のそれぞれについて、ひとつ以上のより新しいサーバジャーナルエントリ１１１２を決定してもよい。これは、所与のクライアントジャーナルカーソル値について、サーバジャーナル１１１０に、より新しいサーバジャーナルエントリ１１１２が存在することを前提とする。
【０２２０】
ステップ１４１２で、メタデータサーバ１５０は、リスト要求で指定される各コンテンツアイテム名前空間について、そのコンテンツアイテム名前空間が割り当てられる先のひとつ以上の候補ブロックサーバを決定する。この決定は、指定されたコンテンツアイテム名前空間のそれぞれについて、メタデータプレーン１８０内に保持される名前空間対ブロックサーバ割り当てを参照することによって行われてもよい。コンテンツアイテム名前空間のそれぞれは、オフプレミスブロックサーバ１３０にのみ、ひとつのオンプレミスブロックサーバ（例えば、１２０）にのみ、複数のオンプレミスブロックサーバに、またはひとつ以上のオンプレミスブロックサーバおよびオフプレミスブロックサーバ１３０に、割り当てられてもよい。
【０２２１】
ステップ１４１４で、メタデータサーバ１５０はリスト要求への応答を返す。応答は、ステップ１４１０で特定されたより新しいサーバジャーナルエントリ１１１２のそれぞれからの情報と、ステップ１４１２で決定された名前空間対ブロックサーバ割り当てについての情報と、を含んでもよい。特に、応答は、より新しいサーバジャーナルエントリ１１１２のそれぞれについての以下の情報の全て、下位集合または上位集合を含んでもよい。
【０２２２】
より新しいサーバジャーナルエントリ１１１２のコンテンツアイテム名前空間識別子１１１４。
【０２２３】
より新しいサーバジャーナルエントリ１１１２のコンテンツアイテム相対パス１１１５。
【０２２４】
より新しいサーバジャーナルエントリ１１１２のコンテンツアイテムブロックリスト１１１６。
【０２２５】
より新しいサーバジャーナルエントリ１１１２のサーバジャーナルカーソル値１１１７。
【０２２６】
ステップ１４１２で特定される複数のより新しいサーバジャーナルエントリ１１１２が同じコンテンツアイテムに関する場合、その複数のより新しいサーバジャーナルエントリ１１１２のうちの最新のもののみがリスト要求に対する応答で返されるであろう。複数のより新しいサーバジャーナルエントリ１１１２は、それらがコンテンツアイテム名前空間識別子１１１４フィールドおよび相対パス１１１５フィールドについて同じ値を有するが、異なるサーバジャーナルカーソル値１１１７を有する場合、同じコンテンツアイテムに関してもよい。例えば、直近の同期動作以来、同じコンテンツアイテムに二つの更新がなされたとしよう。この場合、複数のより新しいサーバジャーナルエントリ１１１２のなかで最も高い（最も新しい）サーバジャーナルカーソル値１１１７を伴うより新しいサーバジャーナルエントリ１１１２が、複数のより新しいサーバジャーナルエントリ１１１２のうちの他のものに取って代わる。最も高い（最も新しい）サーバジャーナルカーソル値１１１７を伴うそのより新しいサーバジャーナルエントリ１１１２はリスト要求に対する応答内で返され、他のものは返されない。
【０２２７】
加えて、リスト要求に対する応答は、リスト要求で指定される各コンテンツアイテム名前空間について、コンテンツアイテム名前空間が現在割り当てられている先のひとつ以上のブロックサーバのブロックサーバ識別子を含んでもよい。名前空間対ブロックサーバ割り当ては、そのような割り当てをなす適切な権限を有するユーザによりウェブサイト１７０を通じて提供されるユーザ入力に基づいてもよい。権限はコンテンツアイテム名前空間に特有であってもよい。例えば、ユーザは、ブロックサーバに、ユーザのアカウントレコード３１０の認証済コンテンツアイテム名前空間３１４のみを割り当てることができてもよい。
【０２２８】
ある例示的な実施の形態によると、各より新しいサーバジャーナルエントリ１１１２についてリスト要求に対する応答内で返される情報はひとつ以上の候補ブロックサーバを特定し、より新しいサーバジャーナルエントリ１１１２のコンテンツアイテムブロックリスト１１１６により特定される全てのコンテンツアイテムブロックがそのひとつ以上の候補ブロックサーバからダウンロード可能である。この決定をなすため、メタデータサーバ１５０は、より新しいサーバジャーナルエントリ１１１２で特定されるコンテンツアイテム名前空間１１１４に割り当てられた各候補ブロックサーバについて、より新しいサーバジャーナルエントリ１１１２のコンテンツアイテムブロックリスト１１１６のコンテンツアイテムブロックハッシュの全てがメタデータプレーン１８０に保持されている候補ブロックサーバのブロックリストにあるかを検証してもよい。もしそうなら、より新しいサーバジャーナルエントリ１１１２のコンテンツアイテムブロックリスト１１１６により特定されるコンテンツアイテムブロックの全てをその候補ブロックサーバからダウンロードすることができる。
【０２２９】
ステップ１４１６で、コンテンツアイテム同期エージェント１１４−２は、パーソナル計算デバイス１１０−２のローカルストレージ１１２−２から欠落しているコンテンツアイテムブロックを決定する。この決定は、ステップ１４１４でメタデータサーバ１５０からリスト要求に対する応答で受信したより新しいエントリまたはより新しいエントリ１１１２のコンテンツアイテムブロックリスト１１１６に基づいてもよい。この決定はまた、コンテンツアイテムクライアントジャーナルまたは単に「クライアントジャーナル」に基づいてもよい。このクライアントジャーナルは、パーソナル計算デバイス１１０−２のローカルストレージ１１２−２に保持されるコンテンツアイテムブロックを追跡するために、コンテンツアイテム同期エージェント１１４−２がローカルで（例えば、ローカルストレージ１１２−２に）維持するものである。特に、クライアントジャーナルは、ローカルストレージ１１２−２に保持される設置コンテンツアイテム名前空間に属する各コンテンツアイテムの現在のバージョンのそれぞれに対するコンテンツアイテムブロックリストを保持してもよい。クライアントジャーナル内の各ブロックリストは、クライアントジャーナルにおいて、所属コンテンツアイテム名前空間の識別子およびコンテンツアイテムへの相対パスに関連付けられてもよい。リスト要求に応じてメタデータサーバ１５０から受信した所与のより新しいエントリ１１１２について、コンテンツアイテム同期エージェント１１４−２は、より新しいエントリ１１１２のブロックリスト１１１６と、より新しいエントリ１１１２のコンテンツアイテム名前空間識別子１１１４とより新しいエントリ１１１２のコンテンツアイテム相対パス１１１５とにクライアントジャーナル内で関連付けられたクライアントジャーナルのブロックリストと、を比較してもよい。より新しいエントリ１１１２のブロックリスト１１１６内のコンテンツアイテムブロックハッシュのうち、クライアントジャーナル内の対応するブロックリストに無いものは、パーソナル計算デバイス１１０−２のローカルストレージ１１２−２内に保持される対応するコンテンツアイテムの現在のバージョンから欠落しているコンテンツアイテムブロックに対応する。
【０２３０】
ステップ１４１８で、コンテンツアイテム同期エージェント１１４−２はステップ１４１６で特定された欠落しているコンテンツアイテムブロックをダウンロードする。欠落しているコンテンツアイテムブロックは、リスト要求への応答内で示されるように、異なるブロックサーバに、または全てが同じブロックサーバに、格納されてもよい。加えて、所与のコンテンツアイテムについて欠落しているコンテンツアイテムブロックは複数の候補ブロックサーバにおいて利用可能であってもよい。この場合、コンテンツアイテム同期エージェント１１４−２は、候補ブロックサーバのうちのひとつを、その欠落しているブロックのダウンロード元として選択してもよい。この選択は、アップロード目的でのターゲットブロックサーバの選択に関して上述した基準と同様の基準に基づいてもよい。しかしながら、ネットワークパフォーマンス基準は、過去のブロックアップロード時間の代わりに過去のブロックダウンロード時間に基づいてもよい。
【０２３１】
ひとつ以上の欠落コンテンツアイテムブロックをブロックサーバからダウンロードするために、コンテンツアイテム同期エージェント１１４−２はブロックサーバに「取得」要求を送信し、取得要求内で欠落コンテンツアイテムブロックのコンテンツアイテムブロックハッシュを特定する。ステップ１４１８で、コンテンツアイテム同期エージェント１１４−２は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、コンテンツアイテム同期エージェント１１４−２からの取得要求を受信する各ブロックサーバは、取得要求に対する応答を返し、該応答は、取得要求において特定されたコンテンツアイテムブロックハッシュに対応するコンテンツアイテムブロックを含む。ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、既知のｒｓｙｎｃアルゴリズムにより用いられるものなどのデルタ符号化スキームにしたがい行われてもよい。この場合、ブロックサーバからコンテンツアイテムブロックをダウンロードすることは、ブロックサーバに保持されるコンテンツアイテムブロックとパーソナル計算デバイス１１０−２に既に保持されているコンテンツアイテムブロックとの間のデルタのみをダウンロードすることを含んでもよい。したがって、コンテンツアイテムブロックをブロックサーバからダウンロードすることへの言及は、コンテンツアイテムブロック全体をブロックサーバからダウンロードすることと、コンテンツアイテムブロックと別のコンテンツアイテムブロックとの間のデルタだけをブロックサーバからダウンロードすることと、の両方を包含する。
【０２３２】
ステップ１４２０で、コンテンツアイテム同期エージェント１１４−２は、ローカルストレージ１１２−２のファイルシステムに保持されるひとつ以上のコンテンツアイテムとして、またはその一部として、ダウンロードされたコンテンツアイテムブロックを格納する。この格納は、ファイルシステムに新たなファイルを生成すること、および／またはファイルシステムの既存のファイルをダウンロードされたコンテンツアイテムブロックに基づき更新すること、を含んでもよい。例えば、リスト要求に応じて受信されたより新しいサーバジャーナルエントリ１１１２に対応するコンテンツアイテムについての、ブロックサーバからダウンロードされた所与のコンテンツアイテムブロックについて、コンテンツアイテム同期エージェント１１４−２は、より新しいエントリ１１１２で特定されるコンテンツアイテム名前空間１１１４のパーソナル計算デバイス１１０−２でのコンテンツアイテムマウントポイントフォルダ、および、より新しいエントリ１１１２内の相対パス１１１５に基づいて、所与のコンテンツアイテムブロックで更新するか生成するように、ファイルシステム内のファイルを決定することができる。
【０２３３】
ある例示的な実施の形態では、所与のコンテンツアイテム名前空間のひとつ以上のより新しいエントリ１１１２に基づいてステップ１４２０で生成または更新されたコンテンツアイテムの全ては、より新しいエントリ１１１２のジャーナルカーソル値１１１７のシーケンスまたは順番で生成または更新される。
【０２３４】
ステップ１４２２で、コンテンツアイテム同期エージェント１１４−２は、ステップ１４１８および１４２０においてダウンロードおよび格納に成功したコンテンツアイテムブロックに基づくローカルストレージ１１２−２内での生成または更新に成功したコンテンツアイテムについて、パーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値を更新する。特に、リスト要求に応じて受信された対応するより新しいエントリ１１１２に基づいてローカルストレージ１１２−２において生成または更新された所与のコンテンツアイテムについて、その対応するより新しいエントリ１１１２で特定されるコンテンツアイテム名前空間１１１４についてのパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値は、それがその対応するより新しいエントリ１１１２のサーバジャーナルカーソル値１１１７と一致するように更新される。上述の通り、所与のコンテンツアイテム名前空間のひとつ以上のより新しいエントリ１１１２に基づいてステップ１４２０で生成または更新されたコンテンツアイテムは、より新しいエントリ１１１２のジャーナルカーソル値１１１７のシーケンスまたは順番で生成または更新されてもよい。同様に、所与のコンテンツアイテム名前空間についてのパーソナル計算デバイス１１０−２の現在のクライアントジャーナルカーソル値は、ステップ１４２２で、所与のコンテンツアイテム名前空間についてのひとつ以上のより新しいエントリ１１１２のジャーナルカーソル値１４１７のシーケンスまたは順番で、インクリメントされてもよい。
４．２．１  例示的なダウンロードインタラクション
【０２３５】
図１５を参照すると、本発明のある例示的な実施の形態に係る、図１４のプロセス１４００が行われオンプレミスブロックサーバ（例えば、１２０）またはオフプレミスブロックサーバ１３０からコンテンツアイテムをダウンロードするときの、パーソナル計算デバイス１１０−２と通知サーバ１４０とメタデータサーバ１５０とブロックサーバ１２０または１３０とメタデータプレーン１８０との間の種々のインタラクションを示すインタラクション図１５００である。
【０２３６】
ステップ１４０４にあるように、通知サーバ１４０はパーソナル計算デバイス１１０−２のコンテンツアイテム同期エージェント１１４−２にピンメッセージを送信する。
【０２３７】
ステップ１４０６にあるように、コンテンツアイテム同期エージェント１１４−２は、パーソナル計算デバイス１１０−２に設けられているひとつ以上のコンテンツアイテム名前空間の現在のクライアントジャーナルカーソル値を決定する。そのような現在のクライアントジャーナルカーソル値のそれぞれは、オンラインコンテンツ管理サービスに委託されたコンテンツアイテム名前空間に対する変更に関してパーソナル計算デバイス１１０−２がどの程度最新かを反映する。ステップ１４０８にあるように、コンテンツアイテム同期エージェント１１４−２はリスト要求をメタデータサーバ１５０に送信する。
【０２３８】
ステップ１４１０にあるように、メタデータサーバ１５０は、リスト要求で指定される現在のクライアントジャーナルカーソル値のそれぞれについて、ジャーナル１１１０内により新しいジャーナルエントリ１１１２があるか決定する。ステップ１４１２にあるように、メタデータサーバ１５０は、より新しいジャーナルエントリ１１１２のコンテンツアイテムブロックのダウンロード元となりうるひとつ以上の候補ブロックサーバを決定する。ステップ１４１４にあるように、メタデータサーバ１５０は、より新しいジャーナルエントリ１１１２のリストの関連情報をデバイス１１０−２に送信する。
【０２３９】
ステップ１４１６にあるように、コンテンツアイテム同期エージェント１１４−２は、より新しいジャーナルエントリ１１１２で指定されるコンテンツアイテムブロックのなかに、デバイス１１０−２にまだ格納されていないものがあるか判定する。この判定は、より新しいジャーナルエントリ１１１２のコンテンツアイテムブロックリスト１１１６と、パーソナル計算デバイス１１０−２に既に格納されたコンテンツアイテムブロックの既知のコンテンツアイテムブロックハッシュのコンテンツブロックリストと、を比較することに基づいてもよい。ステップ１４１８にあるように、コンテンツアイテム同期エージェント１１４−２は、ひとつ以上のターゲットブロックサーバから欠落コンテンツアイテムブロックをダウンロードする。特に、パーソナル計算デバイス１１０−２においてより新しいジャーナルエントリ１１１２についてのひとつ以上のコンテンツアイテムブロックが欠落している場合、そのより新しいジャーナルエントリ４１２のそれぞれについて、コンテンツアイテム同期エージェント１１４−２は、欠落ブロックが利用可能であるブロックサーバからの欠落コンテンツアイテムブロックのダウンロードを試行する。ステップ１４２０にあるように、コンテンツアイテム同期エージェント１１４−２は、ダウンロードされたコンテンツアイテムブロックに基づいて、パーソナル計算デバイス１１０−２のローカルファイルシステムにおいてひとつ以上のコンテンツアイテムを生成または更新する。ステップ１４２２にあるように、コンテンツアイテム同期エージェント１１４−２は、より新しいジャーナルエントリ１１１２の処理が成功したとき、現在のクライアントジャーナルカーソル値を更新する。
５．０  ストリーミングダウンロード最適化
【０２４０】
上述の例示的な同期プロトコル動作では、新たなコンテンツアイテムがターゲットブロックサーバに完全にアップロードされた後、パーソナル計算デバイス１１０−２は通知サーバ１４０によってピンメッセージを介して新たなコンテンツアイテムについての通知を受ける。その結果、パーソナル計算デバイス１１０−２は、新たなコンテンツアイテムの全てのコンテンツアイテムブロックがターゲットブロックサーバにアップロードされたかそうでなければターゲットブロックサーバで利用可能とならないと、ターゲットブロックサーバからの新たなコンテンツアイテムの欠落ブロックのダウンロードを開始しない。
【０２４１】
ある例示的な実施の形態によると、パーソナル計算デバイス１１０−２は、新たなコンテンツアイテムがターゲットブロックサーバに完全にアップロードされる前に、ターゲットブロックサーバからの新たなコンテンツアイテムの欠落ブロックのダウンロードを開始することができる。このストリーミングダウンロード最適化を促進するために、同期プロトコルに対するある最適化が実装される。これは、図２および７と第１の例示的な同期プロトコル動作と図１０および１４と第２の例示的な同期プロトコル動作とに関して説明される。
５．１  第１の例示的同期プロトコル
【０２４２】
変更された同期プロトコルにおいて、ステップ２０２，２０４，２０６，２０８，２１０，２１２，および２１４は、第１の例示的な同期プロトコル動作に関して上述されたように進んでもよい。しかしながら、ストリーミングダウンロード最適化によると、メタデータサーバ１５０はメタデータプレーン１８０において委託前サーバジャーナルを維持する。メタデータサーバ１５０は、コンテンツアイテム同期エージェントからの「失敗した」委託要求の後、委託前サーバジャーナルにエントリを追加してもよい。「失敗した」委託要求は、新たなコンテンツアイテムの少なくともひとつのコンテンツアイテムブロックがターゲットブロックサーバから欠落しているようなものであってもよい。特に、変更されたアップロードプロセス２００のステップ２１６で、新たなコンテンツアイテムのひとつ以上のコンテンツアイテムブロックがターゲットブロックサーバから欠落しているとメタデータサーバ１５０が判定した後、メタデータサーバ１５０は委託前サーバジャーナルに新たなエントリを追加してもよい。新たな委託前サーバジャーナルエントリは、ブロックサーバ識別子と、コンテンツアイテム名前空間識別子と、相対パスと、コンテンツアイテムブロックリストと、を含んでもよい。新たな委託前サーバジャーナルエントリはサーバジャーナルカーソル値を有する必要はないが、有してもよい。委託前サーバジャーナルエントリのブロックサーバ識別子は、新たなコンテンツアイテムについてのターゲットブロックサーバを特定し、それはオンプレミスブロックサーバ（例えば、１２０）やオフプレミスブロックサーバ１３０であってもよい。新たな委託前サーバジャーナルエントリのコンテンツアイテム名前空間識別子は、新たなコンテンツアイテムの所属コンテンツアイテム名前空間を特定する。相対パスは、所属コンテンツアイテム名前空間のマウントポイントに対する、新たなコンテンツアイテムへのパスを特定する。コンテンツアイテムブロックリストは、新たなコンテンツアイテムのひとつ以上のコンテンツアイテムブロックに対応するひとつ以上のコンテンツアイテムブロックハッシュを含む。
【０２４３】
変更されたアップロードプロセス２００のステップ２３０で、新たなコンテンツアイテムのコンテンツアイテムブロックのうちターゲットブロックサーバから欠落しているものはないと判定した後、メタデータサーバ１５０は、委託前サーバジャーナルから委託前サーバジャーナルエントリを除去してもよい。ある例示的な実施の形態によると、委託前サーバジャーナルに委託前サーバジャーナルエントリを追加してからある期間が経過した後、委託前サーバジャーナルエントリを委託前サーバジャーナルから自動的に除去（すなわち、期限切れ）する。変更されたアップロードプロセス２００が失敗し第２委託要求がなされることがないような場合に備えて、委託前サーバジャーナルエントリは自動的に失効するよう設定される。新たなコンテンツアイテムについて委託前サーバジャーナルに委託前サーバジャーナルエントリが存在することは、ストリーミングダウンロード最適化のために新たなコンテンツアイテムが利用可能であることのシグナルとして作用する。変更されたアップロードプロセス２００の残りのステップは、第１の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
【０２４４】
ある例によると、委託前サーバジャーナルはメタデータプレーン１８０の揮発性メモリのみに維持される。委託前サーバジャーナルのエントリが揮発性メモリから消去され、退避されまたは期限切れとなったとしても、同期プロトコルは依然としてストリーミングダウンロード最適化なしで適切に動作しうるからである。例えば、委託前サーバジャーナルはメムキャッシュ（ｍｅｍｃａｃｈｅ）などの分散メモリキャッシングシステムに維持されてもよい。
【０２４５】
変更されたダウンロードプロセス７００のステップ７０２で、新たなコンテンツアイテムの新たな委託前サーバジャーナルエントリが委託前サーバジャーナルに追加されたことが検出される。
【０２４６】
変更されたダウンロードプロセス７００のステップ７０４で、新たな委託前サーバジャーナルエントリの検出に応じて、通知サーバ１４０は、所属コンテンツアイテム名前空間が設けられている先のパーソナル計算デバイス１１０−２にピンメッセージを送信する。
【０２４７】
変更されたアップロードプロセス７００のステップ７０６および７０８は、第１の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
【０２４８】
変更されたダウンロードプロセス７００のステップ７１０で、メタデータサーバ１５０はリスト要求を処理する際、上述のようにサーバジャーナル４１０に新たなサーバジャーナルエントリ４１２があるかを判定することに加えて、委託前サーバジャーナルに関連する委託前サーバジャーナルエントリがあるかを判定してもよい。特に、リスト要求内の現在のクライアントジャーナルカーソル値に関連付けられたコンテンツアイテム名前空間とブロックサーバとの組のそれぞれについて、メタデータサーバ１５０は、委託前サーバジャーナルにおいて、マッチするコンテンツアイテム名前空間識別子とブロックサーバ識別子とを有するひとつ以上の委託前サーバジャーナルエントリを決定してもよい。そのような委託前サーバジャーナルエントリのそれぞれの情報は、変更されたダウンロードプロセス７００のステップ７１２で、リスト要求に対する応答内で返されてもよい。リスト要求応答内で返される委託前サーバジャーナルエントリは、それとリスト要求応答内で返されるより新しいサーバジャーナルエントリ４１２とを区別するために、そのようなものとして特定されてもよい。例えば、応答内で返される委託前サーバジャーナルエントリはジャーナルカーソル値に関連付けられない一方、応答内で返されるより新しいサーバジャーナルエントリ４１２はより新しいサーバジャーナルエントリ４１２のサーバジャーナルカーソル値４１７に関連付けられてもよい。
【０２４９】
変更されたダウンロードプロセス７００のステップ７１４で、第１の同期プロトコル動作に関連して上述したように、コンテンツアイテム同期エージェント１１４−２は、より新しいサーバジャーナルエントリ４１２のコンテンツアイテムブロックリスト４１６によって特定されるコンテンツアイテムブロックであってパーソナル計算デバイス１１０−２のローカルストレージ１１２−２から欠落しているコンテンツアイテムブロックを決定する。加えて、コンテンツアイテム同期エージェント１１４−２は、コンテンツアイテムブロックのプリフェッチキャッシュをローカルストレージ１１２−２で維持してもよい。プリフェッチキャッシュは、ストリーミングダウンロード最適化の一部としてブロックサーバからダウンロードされたコンテンツアイテムブロックを保持するよう設計されたローカルストレージ１１２−２のエリア（例えば、特定のファイルシステムフォルダ）であってもよい。特に、変更されたダウンロードプロセス７００のステップ７１２でコンテンツアイテム同期エージェント１１４−２によって受信された委託前サーバジャーナルエントリについて、コンテンツアイテム同期エージェント１１４−２は、変更されたダウンロードプロセス７００のステップ７１４の一部として、委託前サーバジャーナルエントリ内の対応するコンテンツアイテムブロックハッシュによって特定される新たなコンテンツアイテムのコンテンツアイテムブロックのなかにパーソナル計算デバイス１１０−２で欠落しているものがあるかを判定してもよい。変更されたダウンロードプロセス７００のステップ７１６の一部で、コンテンツアイテム同期エージェント１１４−２は、委託前サーバジャーナルエントリで特定されたターゲットブロックサーバから、パーソナル計算デバイス１１０−２へと、そのような欠落コンテンツアイテムブロックをダウンロードし、ローカルストレージ１１２−２のプリフェッチキャッシュエリアに格納してもよい。
【０２５０】
変更されたダウンロードプロセス７００のステップ７１２で受信された委託前サーバジャーナルエントリに対応する所与の新たなコンテンツアイテムについて、パーソナル計算デバイス（例えば、１１０−２）のコンテンツアイテム同期エージェント（例えば、１１４−２）が、変更されたダウンロードプロセス７００のステップ７１６でターゲットブロックサーバから新たなコンテンツアイテムのコンテンツアイテムブロックをダウンロードしている間に、別のパーソナル計算デバイス（例えば、１１０−１）の別のコンテンツアイテム同期エージェント（例えば、１１４−１）が変更されたアップロードプロセス２００のステップ２２０で新たなコンテンツアイテムの異なるコンテンツアイテムブロックをターゲットブロックサーバにアップロードしていてもよい。例えば、新たなコンテンツアイテムがコンテンツアイテムブロックハッシュ「Ａ」、「Ｂ」および「Ｃ」を伴う三つのコンテンツアイテムブロックからなるとする。ストリーミングダウンロード最適化の一部として、コンテンツアイテム同期エージェント１１４−２は、コンテンツアイテム同期エージェント１１４−１がコンテンツアイテムブロック「Ｂ」のターゲットブロックサーバへのアップロードを始める（または終わる）かコンテンツアイテムブロック「Ｃ」のターゲットブロックサーバへのアップロードを始める（または終わる）前に、ターゲットブロックサーバからのコンテンツアイテムブロック「Ａ」のダウンロードを開始してもよい。
【０２５１】
変更されたダウンロードプロセス７００のステップ７１２で受信されたより新しいサーバジャーナルエントリ４１２に対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、第１の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス７００のステップ７１８および７２０がそのより新しいコンテンツアイテムについて実行されてもよい。
【０２５２】
変更されたダウンロードプロセス７００のステップ７１２で受信された委託前サーバジャーナルエントリに対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、変更されたダウンロードプロセス７００のステップ７１８および７２０は、新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託された後に変更されたダウンロードプロセス７００のステップ７０２にあるように別のピンメッセージをコンテンツアイテム同期１１４−２が受信するまで、その新しいコンテンツアイテムについて延期されてもよい。この場合、コンテンツアイテム同期エージェント１１４−２は、ピンメッセージを受け取った後、変更されたダウンロードプロセス７００のステップ７０８で実行されるリスト要求に応じて、変更されたダウンロードプロセス７００のステップ７１２において、いまや委託済みのコンテンツアイテムのより新しいサーバジャーナルエントリ４１２を受信するであろう。今や、変更されたダウンロードプロセス７００のステップ７１４で、コンテンツアイテム同期エージェント１１４−２は、新しいコンテンツアイテムの欠落コンテンツアイテムブロックをプリフェッチキャッシュの中に見つけることができる。それらはストリーミングダウンロード最適化にしたがい過去にダウンロードされているからである。したがって、コンテンツアイテム同期エージェント１１４−２は、変更されたダウンロードプロセス７００のステップ７１６で、新しいコンテンツアイテムのコンテンツアイテムブロックをダウンロードする必要はない。第１の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス７００のステップ７１８および７２０はより新しいコンテンツアイテムについて実行されてもよく、これは変更されたダウンロードプロセス７００のステップ７１８で新たなコンテンツアイテムの一部として欠落コンテンツアイテムブロックを格納する際に、プリフェッチキャッシュで利用可能なそのような欠落コンテンツアイテムブロックを用いることで行われる。
５．２  第２の例示的同期プロトコル
【０２５３】
ストリーミングダウンロード最適化を実装するための第２の例示的な同期プロトコルに対する最適化について、メタデータサーバ１５０は、変更されたアップロードプロセス１０００のステップ１０１６で、第１委託要求で指定される新たなコンテンツアイテムの全てのコンテンツアイテムブロックを有する候補ブロックサーバがないと判定した後に、委託前サーバジャーナルに新しい委託前サーバジャーナルエントリを追加してもよい。しかしながら、第２の例示的な同期プロトコルでは、コンテンツアイテム同期エージェント１１４−２が第１委託要求が送られるときまでにターゲットブロックサーバを選択しなかった場合、コンテンツアイテム同期エージェント１１４−２によってターゲットブロックサーバが指定されないかもしれない。第１委託要求においてターゲットブロックサーバが指定された場合、新たな委託前サーバジャーナルエントリはターゲットブロックサーバのブロックサーバ識別子を指定してもよい。しかしながら、第１委託要求においてコンテンツアイテム同期エージェント１１４−２によってターゲットブロックサーバが指定されない場合、新しい委託前サーバジャーナルエントリは空の値またはＮＵＬＬ値またはターゲットブロックサーバがまだ選択されていないことを示すブロックサーバ識別子の他の値を有してもよい。代替として、第１委託要求においてターゲットブロックサーバが指定されない場合、変更されたアップロードプロセス１０００のステップ１０１６でメタデータサーバ１５０によって委託前サーバジャーナルに新しい委託前サーバジャーナルエントリが追加されることはなく、それは後にコンテンツアイテム同期エージェント１１４−２によってターゲットブロックサーバが選択された後に追加されてもよい。
【０２５４】
変更されたアップロードプロセス１０００のステップ１０２０で、ターゲットブロックサーバを選択した後、コンテンツアイテム同期１１４−２は、ターゲットブロックサーバが選択されたことを指定して、メタデータサーバ１５０に「委託前」要求を送信してもよい。委託前要求は、所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子や新たなコンテンツアイテムの相対パスや、新たなコンテンツアイテムのコンテンツアイテムブロックリストなどの他の関連情報を含んでもよい。委託前要求を受信することに応じて、メタデータサーバ１５０は、第１委託要求に応じて委託前サーバジャーナルに追加された委託前サーバジャーナルエントリを、ターゲットブロックサーバのブロックサーバ識別子で、更新することができる。あるいはまた、第１委託要求に応じて委託前サーバジャーナルに委託前サーバジャーナルエントリが追加されていなかった場合、委託前要求を受信することに応じて、メタデータサーバ１５０は、委託前サーバジャーナルに新たな委託前サーバジャーナルエントリを追加することができる。このエントリは、ターゲットブロックサーバのブロックサーバ識別子と、所属コンテンツアイテム名前空間のコンテンツアイテム名前空間識別子と、新たなコンテンツアイテムの相対パスと、新たなコンテンツアイテムのコンテンツアイテムブロックリストと、を指定する。
【０２５５】
変更されたアップロードプロセス１０００のステップ１０３２で、新たなコンテンツアイテムのコンテンツアイテムブロックのうちターゲットブロックサーバから欠落しているものはないと判定した後、メタデータサーバ１５０は、委託前サーバジャーナルから新たなコンテンツアイテムの委託前サーバジャーナルエントリを除去してもよい。あるいはまた、第２委託要求においてターゲットブロックサーバの識別子が指定されていない場合、メタデータサーバ１５０は、少なくともひとつの候補ブロックサーバが新たなコンテンツアイテムの全てのコンテンツアイテムブロックを保持していると判定した後に、委託前サーバジャーナルエントリを削除してもよい。ある例示的な実施の形態によると、委託前サーバジャーナルに委託前サーバジャーナルエントリを追加してからある期間が経過した後、委託前サーバジャーナルエントリを委託前サーバジャーナルから自動的に除去（すなわち、期限切れ）する。これは、変更されたアップロードプロセス１０００が失敗し第２委託要求がなされることがないような場合に備えて行われる。新たなコンテンツアイテムについて委託前サーバジャーナルに委託前サーバジャーナルエントリが、ターゲットブロックサーバを特定する正当なブロックサーバ識別子を伴って存在することは、ターゲットブロックサーバからのストリーミングダウンロード最適化のために新たなコンテンツアイテムが利用可能であることのシグナルとして作用する。変更されたアップロードプロセス１０００の残りのステップは、第２の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
【０２５６】
変更されたダウンロードプロセス１４００のステップ１４０２で、ターゲットブロックサーバを特定する正当なブロックサーバ識別子を伴う、委託前サーバジャーナルの委託前サーバジャーナルエントリが検出される。検出は、委託前サーバジャーナルエントリが正当なブロックサーバ識別子を伴って委託前サーバジャーナルに追加されたことに応じて、または、委託前サーバジャーナルエントリが正当なブロックサーバ識別子を指定すべく委託前サーバジャーナルにおいて変更されたことに応じて、なされてもよい。
【０２５７】
変更されたダウンロードプロセス１４００のステップ１４０４で、新たな委託前サーバジャーナルエントリの検出に応じて、通知サーバ１４０は、所属コンテンツアイテム名前空間が設けられている先のパーソナル計算デバイス１１０−２にピンメッセージを送信する。
【０２５８】
変更されたアップロードプロセス１４００のステップ１４０６および１４０８は、第２の例示的な同期プロトコル動作に関して上述されたように進んでもよい。
【０２５９】
変更されたダウンロードプロセス１４００のステップ１４１０で、メタデータサーバ１５０はリスト要求を処理する際、上述のようにサーバジャーナル１１１０に新たなサーバジャーナルエントリ１１１２があるかを判定することに加えて、委託前サーバジャーナルに関連する委託前サーバジャーナルエントリがあるかを判定してもよい。特に、リスト要求内の現在のクライアントジャーナルカーソル値に関連付けられたコンテンツアイテムのそれぞれについて、メタデータサーバ１５０は、委託前サーバジャーナルにおいて、マッチするコンテンツアイテム名前空間識別子を有するひとつ以上の委託前サーバジャーナルエントリを決定してもよい。そのような委託前サーバジャーナルエントリのそれぞれの情報は、変更されたダウンロードプロセス１４００のステップ１４１４で、リスト要求に対する応答内で返されてもよい。リスト要求応答内で返される委託前サーバジャーナルエントリは、それとリスト要求応答内で返されるより新しいサーバジャーナルエントリ１１１２とを区別するために、そのようなものとして特定されてもよい。例えば、応答内で返される委託前サーバジャーナルエントリはジャーナルカーソル値に関連付けられない一方、応答内で返されるより新しいサーバジャーナルエントリ１１１２はより新しいサーバジャーナルエントリ１１１２のサーバジャーナルカーソル値１１１７に関連付けられてもよい。
【０２６０】
変更されたダウンロードプロセス１４００のステップ１４１６で、第２の同期プロトコル動作に関連して上述したように、コンテンツアイテム同期エージェント１１４−２は、より新しいサーバジャーナルエントリ１１１２のコンテンツアイテムブロックリスト１１１６によって特定されるコンテンツアイテムブロックであってパーソナル計算デバイス１１０−２のローカルストレージ１１２−２から欠落しているコンテンツアイテムブロックを決定する。加えて、変更されたダウンロードプロセス１４００のステップ１４１４でコンテンツアイテム同期エージェント１１４−２によって受信された委託前サーバジャーナルエントリについて、コンテンツアイテム同期エージェント１１４−２は、変更されたダウンロードプロセス１４００のステップ１４１６の一部として、委託前サーバジャーナルエントリ内の対応するコンテンツアイテムブロックハッシュによって特定される新たなコンテンツアイテムのコンテンツアイテムブロックのなかにパーソナル計算デバイス１１０−２で欠落しているものがあるかを判定してもよい。
【０２６１】
変更されたダウンロードプロセス１４００のステップ１４１８の一部で、コンテンツアイテム同期エージェント１１４−２は、委託前サーバジャーナルエントリで特定されたターゲットブロックサーバから、パーソナル計算デバイス１１０−２へと、そのような欠落コンテンツアイテムブロックをダウンロードし、ローカルストレージ１１２−２のプリフェッチキャッシュエリアに格納してもよい。
【０２６２】
変更されたダウンロードプロセス１４００のステップ１４１４で受信された委託前サーバジャーナルエントリに対応する所与の新たなコンテンツアイテムについて、パーソナル計算デバイス（例えば、１１０−２）のコンテンツアイテム同期エージェント（例えば、１１４−２）が、変更されたダウンロードプロセス１４００のステップ１４１８でターゲットブロックサーバから新たなコンテンツアイテムのコンテンツアイテムブロックをダウンロードしている間に、別のパーソナル計算デバイス（例えば、１１０−１）の別のコンテンツアイテム同期エージェント（例えば、１１４−１）が変更されたアップロードプロセス１０００のステップ１０２２で新たなコンテンツアイテムの異なるコンテンツアイテムブロックをターゲットブロックサーバにアップロードしていてもよい。例えば、新たなコンテンツアイテムがコンテンツアイテムブロックハッシュ「Ａ」、「Ｂ」および「Ｃ」を伴う三つのコンテンツアイテムブロックからなるとする。ストリーミングダウンロード最適化の一部として、コンテンツアイテム同期エージェント１１４−２は、コンテンツアイテム同期エージェント１１４−１がコンテンツアイテムブロック「Ｂ」のターゲットブロックサーバへのアップロードを始める（または終わる）かコンテンツアイテムブロック「Ｃ」のターゲットブロックサーバへのアップロードを始める（または終わる）前に、ターゲットブロックサーバからのコンテンツアイテムブロック「Ａ」のダウンロードを開始してもよい。
【０２６３】
変更されたダウンロードプロセス１４００のステップ１４１４で受信されたより新しいサーバジャーナルエントリ１１１２に対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、第１の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス１４００のステップ１４２０および１４２２がそのより新しいコンテンツアイテムについて実行されてもよい。
【０２６４】
変更されたダウンロードプロセス１４００のステップ１４１４で受信された委託前サーバジャーナルエントリに対応するより新しいコンテンツアイテムの、ターゲットブロックサーバからダウンロードされたコンテンツアイテムブロックについて、変更されたダウンロードプロセス１４００のステップ１４２０および１４２２は、新たなコンテンツアイテムがオンラインコンテンツ管理サービスに委託された後に変更されたダウンロードプロセス１４００のステップ１４０２にあるように別のピンメッセージをコンテンツアイテム同期１１４−２が受信するまで、その新しいコンテンツアイテムについて延期されてもよい。この場合、コンテンツアイテム同期エージェント１１４−２は、ピンメッセージを受け取った後、変更されたダウンロードプロセス１４００のステップ１４０８で実行されるリスト要求に応じて、変更されたダウンロードプロセス１４００のステップ１４１４において、いまや委託済みのコンテンツアイテムのより新しいサーバジャーナルエントリ１４１２を受信するであろう。今や、変更されたダウンロードプロセス１４００のステップ１４１６で、コンテンツアイテム同期エージェント１１４−２は、新しいコンテンツアイテムの欠落コンテンツアイテムブロックをプリフェッチキャッシュの中に見つけることができる。それらはストリーミングダウンロード最適化にしたがい過去にダウンロードされているからである。したがって、コンテンツアイテム同期エージェント１１４−２は、変更されたダウンロードプロセス１４００のステップ１４１８で、新しいコンテンツアイテムのコンテンツアイテムブロックをダウンロードする必要はない。第２の例示的な同期プロトコルに関して上述されたように、変更されたダウンロードプロセス１４００のステップ１４２０および１４２２はより新しいコンテンツアイテムについて実行されてもよく、これは変更されたダウンロードプロセス１４００のステップ１４２０で新たなコンテンツアイテムの一部として欠落コンテンツアイテムブロックを格納する際に、プリフェッチキャッシュで利用可能なそのような欠落コンテンツアイテムブロックを用いることで行われる。
６．０  オンプレミスコンテンツ管理サービス
【０２６５】
いくつかの実施例では、オンラインコンテンツ管理サービスのコントロールプレーンとメタデータプレーンの機能は、オンプレミスで提供される。特に、（例えば１４０のような）通知サーバ、（例えば１５０のような）メタデータサーバ、及び（例えば１７０のような）ウェブサイト１７０を含むオンプレミスのコントロールプレーンは、バックエンドのデータバスによって、オンプレミスブロックサーバ（例えば１２０）と（例えば１８０のような）オンプレミスのメタデータプレーンとに接続されてよい。この場合、以下に説明する同期プロトコルの動作は、オンプレミスブロックサーバにコミット（ｃｏｍｍｉｔ）されたコンテンツアイテムのためのオンプレミスコンテンツ管理サービスに対して実行されてよい。
【０２６６】
例えば、上述の第１の例示的な同期プロトコル動作にしたがうアップロードプロセスおよびダウンロードプロセスは、オンプレミス通知サーバ、オンプレミスメタデータサーバ、オンプレミスメタデータサーバ、およびオンプレミスブロックサーバを用いて行われてもよい。例えば、一般性を失うことなく、図５のインタラクション図５００、図６の６００、図９の９００、図１２の１２００、図１３の１３００および図１５の１５００において、メタデータサーバ１５０はオンプレミスメタデータサーバに置き換えられてもよく、通知サーバ１４０はオンプレミス通知サーバに置き換えられてもよく、メタデータプレーン１８０はオンプレミスメタデータプレーンに置き換えられてもよく、それら全てはオンプレミスバックエンドデータバスによって互いに接続されてもよい。オンプレミスコントロールプレーン及び／又はメタデータプレーンが使用される場合、オフプレミスブロックサーバ１３０と比較したときのオンプレミスブロックサーバにコミットされたコンテンツアイテムの数に応じて、オンプレミス要素の実装は、オフプレミスコンテンツ管理サービスのコントロールプレーンとメタデータプレーンとを実装するために必要なコンピューティング資源よりも少ないコンピューティング資源（例えばサーバ）を必要とし得る。
【０２６７】
いくつかの例示的な実施の形態では、オフプレミスメタデータサーバ１５０のみがサーバコンテンツアイテムジャーナルを維持する一方、他の例示的な実施の形態では、オンプレミスメタデータサーバがサーバコンテンツアイテムジャーナルを維持する。例えば、オンプレミスメタデータサーバが用いられる場合、オンプレミスメタデータサーバは、オンプレミスメタデータサーバに関連付けられたオンプレミスブロックサーバに委託されたコンテンツアイテムについて、オンプレミスメタデータプレーンに、サーバコンテンツアイテムジャーナルを維持してもよい。例えば、オンプレミスメタデータサーバは、図４のジャーナル４１０や図１１のジャーナル１１１０や図２２のジャーナル２２１０などのサーバコンテンツアイテムジャーナルを維持してもよい。
【０２６８】
いくつかの実施例では、オフプレミスメタデータプレーン１８０のみがユーザアカウントレコード（例えば３１０）を格納する一方で、他のいくつかの実施例では、オンプレミスメタデータプレーンがユーザアカウントレコードを格納しても良い。例えば、オンプレミスメタデータプレーンは、（例えば、オンプレミスのバックエンドデータバスを介して）オンプレミスメタデータプレーンに関連付けられたオンプレミスブロックサーバを用いる、ユーザのためのユーザアカウントレコードを格納して、それらのコンテンツアイテムをホストしてもよい。オフプレミスメタデータプレーン１８０がユーザアカウントレコードを格納する場合にのみ、オンプレミスメタデータサーバは、ユーザアカウントレコード又はそれらの情報に、オフプレミスメタデータサーバ１５０を介してアクセスしてもよい。
【０２６９】
いくつかの実施例では、オフプレミスメタデータプレーン１８０のみがリンクされたデバイスレコード（例えば８１０）を格納する一方で、他のいくつかの実施例では、オンプレミスメタデータプレーンがリンクされたデバイスレコードを維持しても良い。例えば、オンプレミスメタデータプレーンは、（例えば、オンプレミスのバックエンドデータバスを介して）オンプレミスメタデータプレーンに関連付けられたオンプレミスブロックサーバを用いる、デバイスのためのリンクされたデバイスレコードを維持して、それらのコンテンツアイテムブロックを格納及び検索してもよい。オフプレミスメタデータプレーン１８０がリンクされたデバイスレコードを格納する場合にのみ、オンプレミスメタデータサーバは、ユーザアカウントレコード又はそれらの情報に、オフプレミスメタデータサーバ１５０を介してアクセスしてもよい。
７．０  基本的なコンピューティングハードウェア及びソフトウェア
７．１  基本的なコンピューティングデバイス
【０２７０】
ここで図１６を参照すると、図１６は、本発明の実施例が実施され得る基本的なコンピューティングデバイス１６００を示すブロック図である。コンピューティングデバイス１６００と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のコンピューティングデバイスは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
【０２７１】
コンピューティングデバイス１６００は、バス１６０２、又はメインメモリ１６０６のアドレス解決を行い、かつ、コンピューティングデバイス１６００の種々のコンポーネント間で及び種々のコンポーネントの中でデータを転送するための他の通信機構を含み得る。
【０２７２】
コンピューティングデバイス１６００はまた、情報を処理するための、バス１６０２と結合した１つ以上のハードウェアプロセッサ１６０４を含み得る。ハードウェアプロセッサ１６０４は、汎用マイクロプロセッサ、システム・オン・チップ（ＳｏＣ）、又は他のプロセッサであり得る。
【０２７３】
ランダムアクセスメモリ（ＲＡＭ）又は他の動的ストレージデバイスなどのメインメモリ１６０６はまた、情報やプロセッサ１６０４によって実行されるソフトウェア命令を格納するためにバス１６０２に結合され得る。メインメモリ１６０６はまた、プロセッサ１６０４によって実行されるソフトウェア命令の実行中に一時変数又は他の中間情報を格納するために使用され得る。
【０２７４】
ソフトウェア命令は、プロセッサ１６０４へアクセス可能な記憶媒体に格納される場合、ソフトウェア命令で特定される動作を実行するように、コンピュータデバイス１６００を、カスタマイズされた特定用途のコンピューティングデバイスにする。「ソフトウェア」、「ソフトウェア命令」、「コンピュータプログラム」、「コンピュータ実行可能命令」及び「プロセッサ実行可能命令」の語は、人間が読取り可能であるかどうかを問わず、特定の動作を実行するためにコンピューティングデバイスを指示する任意の機械可読情報を含むものと広く解釈されるべきであり、これらに限定されないが、アプリケーションソフトウェア、デスクトップアプリケーション、スクリプト、バイナリ、オペレーティングシステム、デバイスドライバ、ブートローダ、シェル、ユーティリティ、システムソフトウェア、ジャバスクリプト、ウェブページ、ウェブアプリケーション、プラグイン、組み込みソフトウェア、マイクロコード、コンパイラ、デバッガ、インタプリタ、バーチャルマシン、リンカ、テキストエディタを含む。
【０２７５】
コンピューティングデバイス１６００はまた、静的情報及びプロセッサ１６０４のためのソフトウェア命令を格納するための、バス１６０２に結合された読み取り専用メモリ（ＲＯＭ）１６０８又は他の静的ストレージデバイスを含み得る。
【０２７６】
１つ以上の大容量ストレージデバイス１６１０は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は他の利用可能な大容量ストレージ技術などの固定又は取り外し可能な媒体に、情報及びソフトウェア命令を永続的に格納するために、バス１６０２に接続され得る。大容量ストレージは、ネットワーク上で共有され得、又は、専用の大容量ストレージであり得る。通常、大容量ストレージデバイス１６１０（例えば、デバイスに対するメインハードディスク）の少なくとも１つは、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピューティングデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
【０２７７】
コンピューティングデバイス１６００は、バス１６０２を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ（ＬＣＤ）又は他の電子的な視覚ディスプレイなどのディスプレイ１６１２と接続され得る。いくつかの構成では、（例えば、抵抗性、容量性等の）タッチ検知技術を組み込んだタッチ感知表面は、タッチジェスチャ（例えば指又はスタイラス）入力をプロセッサ１６０４へ通信するために、タッチ検知ディスプレイを形成するようにディスプレイ１６１２に重畳され得る。
【０２７８】
アルファベットキー及び他のキーを含む入力デバイス１６１４は、情報及びコマンドの選択をプロセッサ１６０４へ通信するためにバス１６０２へ接続され得る。アルファベットキー及び他のキーに加えて又は代わりに、インプットデバイス１６１４は、例えばパワー（オン／オフ）ボタン、「ホーム」ボタン、ボリュームコントロールボタン等の、１つ以上の物理的なボタン又はスイッチを含み得る。
【０２７９】
ユーザ入力デバイスの他の種別は、プロセッサ１６０４へ方向情報やコマンドの選択を通信するため、及び、ディスプレイ１６１２上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御１６１６であり得る。当該入力デバイスは、通常、デバイスが平面上の位置を特定できるようにする第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の二軸の２つの自由度を有する。
【０２８０】
図１６に図示された構成のような、１つ以上のディスプレイ１６１２、入力デバイス１６１４、及びカーソルコントロール１６１６が、コンピューティングデバイス１６００の外部コンポーネント（すなわち周辺デバイス）であるいくつかの構成に対し、他の構成において、ディスプレイ１６１２のいくつか又は全て、入力デバイス１６１４及びカーソルコントロール１６１６は、コンピューティングデバイス１６００の形成因子の一部として統合される。
【０２８１】
ここで開示されるシステム、方法、及びモジュールの機能は、メインメモリ１６０６に含まれる１以上のソフトウェア命令の１以上のプログラムをプロセッサ１６０４が実行することに応じて、コンピューティングデバイス１６００によって実行され得る。そのようなソフトウェア命令は、ストレージデバイス１６１０などの他の記憶媒体からメインメモリ１６０６へと読み込まれ得る。メインメモリ１６０６に含まれるソフトウェア命令の実行は、プロセッサ１６０４に実施例の機能を発揮させる。
【０２８２】
実施例の機能及び動作がコンピューティングデバイス１６００のソフトウェア命令を用いて全体的に実施される一方、ハードワイヤード又はプログラマブル回路（例えばＡＳＩＣ、ＦＰＧＡ等）が、目下の特定の実装の要件に従って、他の実施形態において適所で又は機能を発揮するためのソフトウェア命令との組み合わせで用いられ得る。
【０２８３】
ここで使用される”記憶媒体”の語は、コンピューティングデバイスを特定の様式で動作させるデータ及びソフトウェア命令の少なくとも１つを格納する非一時的な媒体として参照される。そのような記憶媒体は、不揮発性の媒体及び／又は揮発性の媒体を備えてもよい。不揮発性媒体は、ストレージデバイス１６１０などの、例えば、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、フラッシュメモリ、光学ディスク、磁性ディスク、又は半導体ドライブを含む。揮発性媒体はメインメモリ１６０６などの動的メモリを含む。記憶媒体の共通の形式は、例えば、フロッピーディスク、フレキシブル・ディスク、ハードディスク、半導体ドライブ、磁性テープ若しくは任意の他の磁性データ記憶媒体、ＣＤ−ＲＯＭ、任意の他の光学データ記憶媒体、ホールのパターン（空孔）を複数有する任意の物理的な媒体、ＲＡＭ、ＰＲＯＭ及びＥＰＲＯＭ、フラッシュＥＰＲＯＭ、ＮＶＲＡＭ、フラッシュメモリ、任意の他のメモリチップ、又はカートリッジを含む。
【０２８４】
記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用され得る。送信媒体は、記憶媒体間で情報を転送することに使用される。例えば、送信媒体は、バス１６０２を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
【０２８５】
媒体の種々の形態は、実行のためにプロセッサ１６０４への１以上のソフトウェア命令の１以上のシーケンスの伝達に用いられ得る。例えば、ソフトウェア命令は、リモートコンピュータの磁性ディスク又は半導体ドライブ上でまず伝達され得る。リモートコンピュータは、その動的メモリへソフトウェア命令をロードし、モデムを用いて電話線を介してソフトウェア命令を送信し得る。コンピューティングデバイス１６００のローカルなモデムは、電話回線でデータを受信し、データを赤外線信号に変換するための赤外線送信機を用い得る。赤外線検出機は赤外線信号で運搬されたデータを受信することができ、適切な回路がそのデータをバス１６０２に乗せる。バス１６０２は、プロセッサ１６０４がソフトウェア命令を読み出して実行するメインメモリ１６０６にデータを運搬する。メインメモリ１６０６によって受信されるソフトウェア命令は、プロセッサ１６０４によって実行される前又は実行された後の何れかにストレージデバイス１６１０に選択的に格納され得る。
【０２８６】
コンピューティングデバイス１６００はまた、バス１６０２へ接続される通信インタフェース１６１８を含み得る。通信インタフェース１６１８は、ローカルネットワーク１６２２（例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Ｂｌｕｅｔｏｏｔｈ無線ネットワーク等）へ接続された、有線又は無線のネットワークリンク１６２０へ接続する双方向データ通信を提供する。通信インタフェース１６１８は、種々の種別の情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース１６１８は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム（例えば、ＩＳＤＮ、ＤＳＬ、又はケーブルモデム）であり得る。
【０２８７】
ネットワークリンク１６２０は、通常、１以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク１６２０は、ローカルネットワーク１６２２を通じて、ホストコンピュータ１６２４への又はインターネットサービスプロバイダ（ＩＳＰ）１６２６によって運用されるデータ装置への接続を提供し得る。ＩＳＰ１６２６は順に、「インターネット」１６２８として通常参照されるワールド・ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク１６２２及びＩｎｔｅｒｎｅｔ１６２８は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピューティングデバイス１６００への及びコンピューティングデバイス１６００からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク１６２０上の、及び通信インタフェース１６１８を通じた信号は、送信媒体の例示の形式である。
【０２８８】
コンピュータシステム１６００は、ネットワーク、ネットワークリンク１６２０、及び通信インターフェース１６１８を通じて、プログラムコードを含む、メッセージを送信し、データを受信し得る。例えば、サーバ１６３０は、インターネット１６２８、ＩＳＰ１６２６、ローカルネットワーク１６２２、及び通信インターフェース１６１８を通じて、アプリケーションプログラムに対して要求されるコードを送信してもよい。
【０２８９】
受信コードは、受信した際にプロセッサ１６０４によって実行されてもよく、及び、後の実行のためにストレージデバイス１６１０又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われ得る。
７．２  基本的なソフトウェアシステム
【０２９０】
図１７は、コンピューティングデバイス１６００の動作を制御する、採用され得る基本的なソフトウェアシステム１７００のブロック図である。ソフトウェアシステム１７００と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のソフトウェアシステムは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
【０２９１】
ソフトウェアシステム１７００は、コンピューティングデバイス１６００の動作を方向付けるために提供される。システムメモリ（ＲＡＭ）１６０６及び固定ストレージ（例えば、ハードディスク）１６１０に格納され得るソフトウェアシステム１７００はカーネル又はオペレーティングシステム（ＯＳ）１７１０を含む。
【０２９２】
ＯＳ１７１０は、プロセス、メモリ配置、ファイル入力及び出力（Ｉ／Ｏ）、及びデバイスＩ／Ｏの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。１７０２Ａ、１７０２Ｂ、１７０２Ｃ・・・１７０２Ｎとして表される１以上のアプリケーションプログラムは、システム１７００による実行のために”ロードされ”うる（例えば、固定ストレージ１６１０からメモリ１６０６へ転送される）。アプリケーション又はデバイス１７００上での使用を意図した他のソフトウェアはまた、ダウンロード可能なコンピュータで実行可能な命令のセットとして、例えば、インターネット上の場所（例えば、ウェブサーバ、アップストア又はオンラインサービス）からダウンロード及びインストールするために格納され得る。
【０２９３】
ソフトウェアシステム１７００は、グラフィカルな（例えば、「ポイント・アンド・クリック」又は「タッチジェスチャ」）形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース（ＧＵＩ）１７１５を含む。これらの入力は順に、オペレーティングシステム１７１０及びアプリケーションプログラム１７０２の少なくとも１つからの命令に従ってシステム１７００によって作動され得る。ＧＵＩ１７１５はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする（例えば、ログオフする）とすぐに、ＯＳ１７１０及びアプリケーション１７０２からの動作結果を表示するように務める。
【０２９４】
ＯＳ１７１０は、デバイス１６００のベアハードウェア１７２０（例えば、プロセッサ１６０４）上で直接的に実行し得る。代替的に、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）１７３０は、ベアハードウェア１７２０及びＯＳ１７１０の間に割り込んで設けられ得る。この構成において、ＶＭＭ１７３０はデバイス１６００のＯＳ１７１０及びベアハードウェア１７２０の間のソフトウェア”クッション”又は仮想レイヤとして作動する。
【０２９５】
ＶＭＭ１７３０は、１つ以上の仮想マシンインスタンス（「ゲストマシン」）をインスタンス化し実行する。各ゲストマシンは、ＯＳ１７１０などの「ゲスト」オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーション１７０２などの１つ以上のアプリケーションとを含む。ＶＭＭ１７３０は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提供し、ゲストオペレーティングシステムの実行を管理する。
【０２９６】
いくつかの例において、ＶＭＭ１７３０は、デバイス１６００のベアハードウェア１７２０上で直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容し得る。これらの例において、ベアハードウェア１７２０上で直接的に実行するように構成されたゲストオペレーティングシステムの同一のバージョンはまた、修正又は再構成なしにＶＭＭ１７３０上で実行され得る。すなわち、ＶＭＭ１７３０は、いくつかの例において、ゲストオペレーティングシステムに対する完全なハードウェアとＣＰＵ仮想化とを提供し得る。
【０２９７】
他の例において、ゲストオペレーティングシステムは、効率的にＶＭＭ１７３０上で実行されるように特別に設計されるか、又は、構成されてもよい。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ上で実行する「気付かれるもの」である。すなわち、ＶＭＭ１７３０は、いくつかの例において、ゲストオペレーティングシステムに対して準仮想化を提供することができる。
【０２９８】
上述の基本的なコンピュータハードウェア及びソフトウェアは、実施例を実施するために採用されうる基本的な下層のコンピュータコンポーネントを示す目的で提示される。しかしながら、実施例は、任意の特定のコンピューティング環境又はコンピューティングデバイス構成に限定される必要はない。代わりに、実施例は、この開示の観点で当業者がここで提示された実施例の特徴又は機能を支持することが可能なものとして理解しうる任意の種別のシステムアーキテクチャ又はプロセッシング環境で実施され得る。
８．０  拡張及び代替例
【０２９９】
前述した明細書において、本発明の実施例について多数の特定の詳細を参照して説明した。しかしながら、詳細は手近な特定の実装に対する要求に従って実装ごとに変化し得る。実施例は、従って、限定的な意味というよりはむしろ例示とみなされるものである。
【図１】
0006603791.tif 000002
【図２】
0006603791.tif 000003
【図３】
0006603791.tif 000004
【図４】
0006603791.tif 000005
【図５】
0006603791.tif 000006
【図６】
0006603791.tif 000007
【図７】
0006603791.tif 000008
【図８】
0006603791.tif 000009
【図９】
0006603791.tif 000010
【図１０】
0006603791.tif 000011
【図１１】
0006603791.tif 000012
【図１２】
0006603791.tif 000013
【図１３】
0006603791.tif 000014
【図１４】
0006603791.tif 000015
【図１５】
0006603791.tif 000016
【図１６】
0006603791.tif 000017
【図１７】
0006603791.tif 000018