制約付き同期の機能概要
制約付き同期システム及びプロセスの全体的な機能概要について以下で説明する。予備的条件として、ユーザはクライアントデバイスにコンテンツアイテムを格納し、当該コンテンツアイテムは、他のクライアントデバイス上のコンテンツアイテムのインスタンスと同期させられ、典型的にはコンテンツ管理システムであるホストシステムと同期させられる。クライアントデバイスは、ローカルコンテンツディレクトリにコンテンツアイテムを格納する。ローカルコンテンツディレクトリに格納されたコンテンツアイテムは、コンテンツ管理システムと同期させられ、当該コンテンツ管理システムは、コンテンツアイテムのコピーを保持し、かつ、当該コンテンツアイテムを他のクライアントデバイスと同期させる。各クライアントデバイスは、クライアントアプリケーションを実行し、当該クライアントアプリケーションはユーザがコンテンツ管理システムにアクセスすることを可能にする。クライアントアプリケーションは、更に、ローカルコンテンツディレクトリに対して最大ストレージ割り当て又はサイズをユーザが設定することを可能にする。
一態様において、クライアントデバイスは、いずれの同期済みコンテンツアイテムがクライアントデバイスにローカルで利用可能に残っているか、及び、いずれがコンテンツ管理システムのみにその全体が格納されているかを選択的に判定するよう構成される。一実施形態において、クライアントデバイスは、コンテンツアイテムへのアクセス要求を、例えば、当該コンテンツアイテムへのアクセスを必要とするアプリケーションから受け付ける。クライアントデバイスは、要求されたコンテンツアイテムが、シャドウアイテムであるか、当該クライアントデバイスにローカルに格納されたコンテンツアイテムであるかを判定する。シャドウアイテムは、コンテンツアイテムを表す又はエミュレートするが当該コンテンツアイテムのアプリケーションデータを含まないアイテムである。一般に、シャドウアイテムは、テキスト、画像データ、映像データ、音声データ、データベーステーブル、スプレッドシートデータ、グラフィックデータ、ソースコード、オブジェクトコード、又はコンテンツデータの他のタイプのような、実際のアプリケーションコンテンツを格納することなく、コンテンツアイテムのタイプ、パス情報、アクセス権、修正情報、及びサイズのような、種々の属性とともに、コンテンツアイテムの名称のような、コンテンツアイテムのメタデータ属性を複製する。シャドウアイテムは、コンテンツアイテムについてのメタデータのみを格納するため、サイズが数百メガバイトになりうるか又は数ギガバイトにさえなりうるコンテンツアイテムと比べて、例えば典型的には約4キロバイトの少量のストレージのみを必要とする。このため、シャドウアイテムを使用してコンテンツアイテムを表すことは、かなりのストレージ空間を節約する効果があり、それにより、クライアントデバイスの機能が改善される。
クライアントデバイスが、要求されたコンテンツアイテムがシャドウアイテムであると判定した場合、これは、要求されたコンテンツアイテムのコンテンツが、クライアントデバイスに現在格納されておらず、コンテンツ管理システムに格納されていることを示す。このため、クライアントデバイスは、コンテンツ管理システムから、要求されたシャドウアイテムに対応するコンテンツアイテムをダウンロードする。クライアントデバイスは、更に、当該コンテンツをローカルコンテンツディレクトリ格納すると、当該ディレクトリに対して定められた最大ストレージサイズを超えるかどうかを判定する。その場合、クライアントデバイスは、ローカルコンテンツディレクトリ内のいずれのコンテンツアイテムが、当該ローカルコンテンツディレクトリから削除可能であるか、及びコンテンツアイテムを表すシャドウアイテムに置き換え可能であるかを判定する。一般に、クライアントデバイスは、クライアントデバイスのユーザ又はコンテンツ管理システムを介してコンテンツアイテムにアクセス可能なユーザによって放置されていると判定されたコンテンツアイテムを、ローカルコンテンツディレクトリから選択するために、クライアントデバイスにおける最新のアクセス時刻(例えば、クライアントデバイスのユーザ又はクライアントデバイスで動作しているアプリケーションのアクション)、コンテンツアイテムの共有に用いられる他のクライアントデバイスにおける最新のアクセス時刻(例えば、そのクライアントデバイスのユーザのアクション)、コンテンツアイテムのサイズ、及びアクセス頻度を含む、共有コンテンツアイテムの1つ以上の属性を使用する。これらの要素の組み合わせも、放置コンテンツアイテムの判定に使用されてもよい。クライアントデバイスは、ダウンロードされたコンテンツアイテムを、最大ストレージサイズを超えることなくローカルコンテンツディレクトリ内に格納するために、コンテンツアイテムの削除によりローカルコンテンツディレクトリ内に十分な量のストレージ空間が作成されるように、ローカルコンテンツディレクトリからいくつかのコンテンツアイテムを選択する。一実施形態において、クライアントデバイスは、共有コンテンツディレクトリ内でそれらのコンテンツアイテムによって使用されるストレージの総量が、ダウンロードされたコンテンツアイテムを格納するのに必要とされるストレージの量と少なくとも等しくなるか、又はそれを超えるように、いくつかのコンテンツアイテムを選択する。
クライアントデバイスは、選択されたコンテンツアイテムを削除し、削除したクライアントデバイスごとに、対応するシャドウアイテムを作成する。クライアントデバイスは、シャドウアイテムを、削除したコンテンツアイテムに対応するディレクトリロケーションに格納する。当該対応するロケーションにおけるシャドウアイテムの格納により、要求中のアプリケーションに対して透過的な方法で、削除されたコンテンツアイテムのその後の回復が可能になる。
本実施形態は、各クライアントデバイスが、他のコンテンツアイテム及びアプリケーションに対してより多くの空間を有しながら、コンテンツ管理システムと共有される全コンテンツアイテムへのアクセスを維持することができる、制約付き共有ストレージシステムを提供し、各クライアントデバイス及びコンテンツ管理システムのストレージ効率を改善する。より具体的には、当該実施形態は、クライアントデバイスが、実際に有しているストレージ容量よりもかなり大きなストレージ容量を有しているかのように効率的に動作することを可能にする。例えば、ローカルコンテンツディレクトリに対して10GBのストレージ割り当てのみを有するクライアントデバイスは、当該ディレクトリに対して4000GB(4TB)を超えるストレージ割り当てを有しているかのように動作でき、これは、有効ストレージの400倍の増加を表す。これまで、限られたローカルストレージ容量に対するそのようなソリューションは、ネットワーク接続性及び帯域幅の制限によって不可能とされてきたが、このため、解決された課題は、広範囲にわたる接続性と速いアップロード及びダウンロード速度とを可能にするインターネット・インフラストラクチャの近年の開発の結果として生じる。
インターネット・インフラストラクチャの近年の開発にかかわらず、コンテンツアイテムの削除、当該コンテンツアイテムのシャドウアイテムとの置き換え、及びユーザの要求を受けての当該コンテンツアイテムの復元に要する計算時間、アップロード時間、及びダウンロード時間は、依然としてデバイス性能に影響を与えうる。したがって、これまでの共有コンテンツ同期方法を通じたクライアントデバイスに対するストレージ負荷を更に低減しつつ、デバイス性能に与える影響をユーザに見えるように低減する代替の実施形態についても説明する。一実施形態において、計算、アップロード及びダウンロードは、シャドウアイテムとして表される共有コンテンツアイテムへの予測されたユーザアクセスに基づいて、完了される。コンテンツアイテムへのユーザアクセスを予測するために、クライアントアプリケーション又はコンテンツ管理システムは、コンテンツアイテムごとにリテンションスコア(retention score)を維持し、当該リテンションスコアは、ユーザに対する各コンテンツアイテムの予測重要度の測度である。(リテンションスコア閾値を上回るリテンションスコアによって表される)十分に高い予測重要度を有するあらゆるコンテンツアイテムが、対応するクライアントデバイスへダウンロードされるように、各クライアントデバイスにリテンションスコア閾値が設定される。リテンションスコアは、最新のアクセス時刻、ロケーション、タイプ、サイズ、アクセス頻度、共有ステータス、アクセス可能なアカウントの数、アクセス可能なデバイスの数、又はコンテンツアイテムを格納したデバイスの数を含む、様々な属性に基づいて、計算されうる。
あるいは、他の実施形態では、(コンテンツ管理システムによって、又はクライアントアプリケーションによって)クライアントデバイスのアクティビティがモニタリングされる間に、当該クライアントデバイス上の共有コンテンツアイテムによって占有されるストレージ空間が、ストレージ割り当てを上回ることが可能になる。クライアントデバイスがアイドルであると判定されると、クライアントアプリケーションは、前述のように、クライアントデバイスに格納されたコンテンツアイテムによって占有された有効ストレージ空間を減らすために、コンテンツアイテムを削除し、当該コンテンツアイテムをシャドウアイテムに置き換える。これらの実施形態では、ストレージ割り当てが常に維持されることはなく、それ故に、占有ストレージを他のコンテンツアイテムの属性に応じて減らすことが可能である。ストレージ割り当てを維持する代わりに、クライアントデバイスがアイドルである限り、例えば特定の時間(例えば、2週間)より古い最後のアクセス日を有する全てのコンテンツアイテムを削除し、シャドウアイテムと置き換えることができよう。このプロセスは、クライアントデバイスがアイドルではなく、そのためユーザによってアクティブには使用されていない間に動作が行われるため、占有ストレージ空間をストレージ割り当てより少なくし続けることはないが、ユーザに対して好ましいであろう方法で占有ストレージ空間を減らすであろうし、その結果として、有効ストレージ容量の同様の増加を提供しながら、前述の実施形態と比較してユーザエクスペリエンスの向上をもたらすことによって、制約付き同期システムを使用するよう構成されたクライアントデバイスを向上させる。
図1A及び図1Bは、制約付き同期の実施形態を更に示す概念図である。図1Aは、ストレージ制約がある同期フォルダにコンテンツアイテムを保存するプロセスを示している。図BAは、ストレージ制約があるクライアントデバイス上のシャドウアイテムを開くプロセスを示している。
図1A及び図1Bにおいて、クライアントデバイス100Aは、コンテンツ管理システム110と接続されて同期する複数のユーザ制御デバイスのうちの1つである。コンテンツ管理システム110は、ネットワークを使用して複数のクライアントデバイスからのコンテンツを同期させるようインスタンス化されたサーバである。共有コンテンツストレージ・ディレクトリ120は、コンテンツ管理システム110と同期するコンテンツを含む、クライアントデバイス100上に配置されたディレクトリである。ストレージ割り当て130は、共有コンテンツストレージ・ディレクトリ120内の全てのコンテンツアイテムに対して許可されたストレージ空間の量を特定するパラメータ値である。ストレージ割り当て130は、クライアントデバイス100Aのユーザ、クライアントデバイス100のオペレーティングシステム、若しくはコンテンツ管理システム110のクライアントアプリケーションによって、システム管理者によって、又はコンテンツ管理システム110において確立されたポリシーによって、設定されうるストレージ割り当て130の値の例は、10GBであり、これは、ユーザが最大10GBまでコンテンツアイテム全体(全てのコンテンツアイテムの属性及びデータ)を共有コンテンツストレージ・ディレクトリ120に格納できることを意味する。コンテンツアイテム140は、共有コンテンツストレージ・ディレクトリ120内に保存され、クライアントデバイス100とコンテンツ管理システム110との間の同期の後に、共有コンテンツストレージ・ディレクトリ120内の各コンテンツアイテム140についてのバージョンも、コンテンツ管理システム110によって維持される。
「コンテンツアイテム」との用語は、本明細書で用いられるように、任意のファイル、ファイルのグループ、又はファイルのコレクションを示す。単一のファイルのみから成る任意のコンテンツアイテムは、代替的には、ファイルと称されてもよい。追加的には、「ファイルテーブル」のような用語は、個別のファイル又はコンテンツアイテムの両方を示すために使用されてもよい。
図1において、共有コンテンツストレージ・ディレクトリ120は、コンテンツアイテム140を含むボックスとしてグラフィカルに描かれている。ストレージ割り当て130は、コンテンツストレージ・ディレクトリ120を表すボックスの特定の長さによって表される。
クライアントデバイス100A及びコンテンツ管理システム110の第1の図は、2つのエンティティの典型的な状態を表している。クライアントデバイスは、その共有コンテンツストレージ・ディレクトリ120内に格納されたコンテンツアイテム140A,140B及び140Cを有している(少数のコンテンツアイテム140のみを説明のために示しているが、実際にはコンテンツアイテム140の数は千単位、何万、又はそれ以上になりうる)。コンテンツ管理システム110は、クライアントデバイス100Aと同期しているものとして表されており、そのため、ストレージ割り当て130は有しないが、クライアントデバイス100Aに格納された各コンテンツアイテムの同一バージョンを保持している。更には、コンテンツ管理システム110は、コンテンツアイテム140Aを共有する他のクライアントデバイス100Bをサポートしている。クライアントデバイス100Bの識別子に関連付けられたコンテンツアイテム140Dの存在は、クライアントデバイス100Bも、このコンテンツアイテム140Dをコンテンツ管理システム110に同期させていることを示す。このため、各クライアントデバイス100は、コンテンツアイテム140を、コンテンツ管理システム110のみに同期させてもよいし、コンテンツ管理システム110及び他のクライアントデバイス100に同期させてもよい。
ステージ1.1は、クライアントデバイス100Aからの、コンテンツアイテム140Eを共有コンテンツストレージ・ディレクトリ120に保存することを求める要求の動作を示している。しかし、図示されるように、ストレージ割り当て130によって制限される、共有コンテンツストレージ・ディレクトリ120における残りの利用可能な空間をコンテンツアイテム140Eのサイズが超えるため、コンテンツアイテム140Eの共有コンテンツストレージ・ディレクトリ120への追加は、コンテンツアイテム140によって占有される総ストレージ空間がストレージ割り当て130を超えることを生じさせうる。
ステージ1.2は、コンテンツアイテム140Eを格納できる、利用可能な十分なストレージを作り出すように、クライアントデバイス100から削除されるべき放置コンテンツアイテム130Cの選択の動作を示している。実施形態に依存して、クライアントデバイス100又はコンテンツ管理システム110は、いずれのコンテンツアイテム140を放置されているものとして選択するかを判定する。以下で説明する様々な方法を、いずれのコンテンツアイテムが放置されているものとして選択されるかを判定するために使用可能である。本例では単一のコンテンツアイテム140Cのみが選択されるが、実際には、利用可能とされる必要があるストレージ容量に応じて、任意の数のコンテンツアイテム140が選択されうる。
ステージ1.3は、選択されたコンテンツアイテム140Cをクライアントデバイス100Aから削除する動作を示している。削除された各コンテンツアイテムの代わりに、クライアントデバイス100Aは、削除されたコンテンツアイテム140Cを表すシャドウアイテム160Cを作成し、当該シャドウアイテムを、共有コンテンツストレージ・ディレクトリ120内の、削除されたコンテンツアイテム140Cと同じロケーションに格納する。あるいは、コンテンツ管理システム110がシャドウアイテム160Cを作成し、その後にシャドウアイテム160Cをコンテンツストレージディレクトリ120へダウンロードしてもよい。シャドウアイテムは、コンテンツ名、パス情報、コンテンツ属性、及びコンテンツサイズのような、削除されたコンテンツアイテムを表す属性を含むが、コンテンツアイテム140Cの実際のデータを含むことはない。対応するコンテンツアイテムの実際のデータを含まないことによって、シャドウアイテムは、大幅に少ないストレージしか必要としない。例えば、シャドウアイテムは、典型的には、4KBのような、オペレーティングシステムによって提供される最小ファイルサイズ割り当てしか必要としない。この小さなサイズは、図1において縦線を用いて視覚的に示されており、当該シャドウアイテムのサイズが、コンテンツアイテム140C自体と比べた場合にごくわずかであることを示している。例えば、削除されたコンテンツアイテム140Cが(音声又はビデオファイルではよく見られる)何メガバイト又は更には何ギガバイトのサイズでありうる一方、そのようなコンテンツアイテムを表すシャドウアイテムに必要となるストレージはそれでも4KB程度だけであろう。その結果、クライアントデバイス100は、共有コンテンツアイテムのために使用されるローカルストレージの量を、ストレージ割り当て130を下回る量に減らすことができ、その結果として、新たに作成された(又はコンテンツアイテムの新しいバージョンがより大きくなるように更新された)コンテンツアイテム140Eを格納するために利用可能な十分な空間を作れる。選択された(及び削除された)コンテンツアイテムを識別する情報が、それらのアイテムがその後に選択的に回復できるようにするために、クライアントデバイス100Aで保持される。この情報は、コンテンツ管理システム110内の(図1には示していないが以下で更に説明するような)リモートコンテンツアイテムテーブル366にリモートで格納されている、格納されたコンテンツアイテムのリスト150に、クライアントデバイス100においてローカルで格納される。
ステージ1.4は、共有コンテンツストレージ・ディレクトリ120において十分な空間が利用可能にされるとコンテンツアイテム140Eをクライアントデバイス140Aに保存する動作を示している。クライアントデバイス100Aが、共有コンテンツストレージ・ディレクトリ120へのコンテンツアイテム140Eの保存に成功すると、コンテンツ管理システム110との同期が開始され、コンテンツアイテム140Eが、コンテンツ管理システム110へアップロードされる。コンテンツ管理システム110は、クライアントデバイス100A上の全てのコンテンツアイテム(シャドウアイテムを含む。)の完全なコピーを更に保持している。
ここで図1Bを参照すると、クライアントデバイス100Aとコンテンツ管理システム110との間でコンテンツアイテム140Eの同期が行われた後の、クライアントデバイス100A及びコンテンツ管理システム110が示されている。
ステージ1.5は、クライアントデバイス100Aがコンテンツアイテム140Cへのアクセス(例えば、ワードプロセッサを用いてコンテンツアイテム140Cを開く、又はファイルブラウザ内に当該コンテンツアイテムを表示する)を要求する動作を示しており、クライアントデバイス100は、要求されたコンテンツアイテムがシャドウアイテムによって表されていることを判定する。コンテンツアイテムがローカルに格納されている場合、要求アプリケーションに対して当該コンテンツアイテムがクライアントデバイス100Aにおいて提供される。この場合では、要求されたコンテンツアイテムはクライアントデバイス100Aから削除されており、コンテンツ管理システム110にリモートでのみ格納されており、このため、クライアントデバイス100は、コンテンツ管理システム110に対して、要求されたコンテンツアイテムのダウンロードを要求する。共有コンテンツストレージ・ディレクトリ120に十分な空間がある場合には、コンテンツ管理システム110は、要求されたコンテンツアイテムをクライアントデバイス100Aへダウンロードし、当該クライアントはその後、コンテンツアイテム140Cを表していたシャドウアイテム160Cを、コンテンツアイテム140C自体に置き換え、これにより、任意の要求アプリケーションがコンテンツアイテムに透過的にアクセスできるようになる。しかし、この場合、コンテンツアイテム140Cの共有コンテンツストレージ・ディレクトリ120への追加により、共有コンテンツストレージ・ディレクトリ120の境界の外へ伸びているコンテンツアイテム140Cによって描かれているように、ストレージ割り当て130を超えるであろう。
ステージ1.6は、クライアントデバイス100Aからの削除のために(複数の)放置コンテンツアイテムを選択する動作を示している。この場合、選択された放置コンテンツアイテムはコンテンツアイテム140Aである。
ステージ1.7は、コンテンツアイテム140Aを削除して、それをシャドウアイテム160Aで置き換える動作を示している。この削除により、コンテンツ管理システム110からダウンロードされ、ストレージ割り当て130を超えることなく、シャドウアイテム表現に付加されることになるコンテンツアイテム140Cのために、共有コンテンツストレージ・ディレクトリ120内に十分な空間が作られる。削除されたコンテンツアイテム140Aは、リモートで格納されたコンテンツアイテムのリスト150内に含まれ、コンテンツアイテム140Cは、共有コンテンツストレージ・ディレクトリ120に復元されたため、このリスト150から削除される。
ステージ1.8は、コンテンツアイテム140Cがクライアントデバイス100Aにいったん常駐すると、要求アプリケーションが当該コンテンツアイテムを開くことができることを示している。図1A及び図1Bに示されるプロセスがクライアントデバイス100A上でいったん完了すると、クライアントデバイス100Aとコンテンツ管理システム110との間で、クライアントデバイス100A上のコンテンツアイテム140に対するあらゆる変更がコンテンツ管理システム110上に反映されるように、通常の同期が行われうる。(シャドウアイテムによって表されていても)全てのコンテンツアイテム140が、共有コンテンツストレージ・ディレクトリ120から削除されるまで、コンテンツ管理システム110上で保持される。
システムアーキテクチャの概要
図2は、制約付き同期システムのシステムアーキテクチャを示している。以降のセクションでは各構成要素に関する詳細について更に説明するが、ここでは、制約付き同期の説明用のコンテキストを提供するために、いくつかの要素を導入する。更に、当業者には明らかなように、制約付き同期に使用される動作及び方法は必然的にコンピュータを必要とし、いずれの実施形態においても人間オペレータによる精神的ステップでは実行されない。更に、当該動作は、情報の格納及び取り出し、情報の送信及び送出、又は情報の処理のためにコンピュータの設備を利用しうるが、そのような動作が、本明細書では固有に定義されたデータに対して本明細書で説明されるアルゴリズムを用いて特定の方法で実行されるため、単なる汎用コンピュータの動作ではないこと、及び、それ故に、そのようなコンピュータがオペレーティングシステム及び標準的なアプリケーション単独によって自然にプロビジョニングされる方法とは異なる方法で、コンピュータを構成することを必要とすることを、当業者は理解する。また、必要とされる構成は、従来のオペレーティングシステム及びファイル管理システムが設定された一般的な汎用コンピュータ上で、以下で詳しく述べるステップを通じて、コンピュータのストレージ容量を強化する。
クライアントデバイス100は、ネットワーク(図示せず)を通じてコンテンツ管理システム110と通信し、当該ネットワークは、コンテンツ管理システム110から遠く離れて配置されたクライアントデバイス100間のインターネットワーキングを提供する任意の適切な通信手段であってもよく、例えば、LAN、WAN又はWANである。一般に、インストールされたクライアントアプリケーション200Aを有するクライアントデバイス100Aは、コンテンツ管理システム110へコンテンツアイテムを提供する。クライアントアプリケーション200Aは、ストレージ制約付き同期に関連する機能をクライアントデバイス100Aが実行するために必要なプログラム及びプロトコルを含む。したがって、クライアントデバイス100Aは、多くの場合、クライアントアプリケーション200Aによって要求された動作を実行する。しかし、クライアントデバイス100A及びクライアントアプリケーション200Aは一緒に動作するため、説明ごとに、それらの動作の一部は「クライアントデバイス100A」を動作エレメントとして参照されている。クライアントデバイス100Aのユーザは、クライアントデバイス100Bと共有されるべき特定のコンテンツアイテムを指定しており、当該クライアントデバイス100Bは、例えば、同じユーザによって管理される他のコンピュータであってもよいし、異なるユーザによって操作されるコンピュータであってもよい。コンテンツ管理システム110は、クライアントデバイス100Bに通知し、クライアントデバイス100Aから受信した指定コンテンツアイテムを、クライアントデバイス100Bに格納されたローカルコンテンツと同期させる。
コンテンツ管理システム110は、各コンテンツアイテムを、コンテンツアイテムのセットに対応するネームスペースに関連付ける。ネームスペースは、所与のコンテンツアイテムが格納されるディレクトリ構造におけるディレクトリ(又は「フォルダ」)を指定する。コンテンツアイテムと特定のネームスペースとの関連付けは、ネームスペーステーブル222に格納される。コンテンツ管理システム110は、各ネームスペース内のコンテンツアイテムへのアクセス、変更、及び削除を行うための固有の権利の識別子と一緒に、各クライアントを、各クライアントがアクセスを有するネームスペース(及びその中のコンテンツアイテム)と関連付ける。クライアント100がネームスペースと同期させられる際、当該クライアントは、可能な場合には、当該ネームスペースに関連付けられたコンテンツアイテムのローカルコピーを格納し、コンテンツロケーションに応じてコンテンツを体系化する。ユーザは、個別のクライアントデバイス100又は複数のクライアント100に関連付けられてよく、例えば、ユーザは、全てが一緒に同期化された、家庭用コンピュータ、仕事用コンピュータ、ポータブルコンピュータ、スマートフォン、及びタブレットコンピュータを有してもよい。コンテンツアイテムを共有するために、ユーザは、他のユーザ及び/又はクライアントと共有されるべきネームスペースを指定する。コンテンツ管理システム110は、その後、(複数の)共有ネームスペースのコンテンツアイテムを、当該共有ネームスペースに関連付けられたクライアント100間で同期させる。コンテンツ管理システム110に格納されたコンテンツアイテムは、ドキュメント、データ、ムービー、アプリケーション、コード、画像、音楽等を含む、任意のタイプのコンテンツアイテムを含みうる。コンテンツアイテムは、更に、コレクション、プレイリスト、ファイルアーカイブ等の、コンテンツアイテムを一緒にグループ化するフォルダ又はその他のメカニズムであってもよい。
各ユーザは、コンテンツ管理システム110上にコンテンツアイテムを格納するために使用されるストレージの量を特定する情報を含む、コンテンツ管理システム110上のアカウントと関連付けられる。クライアントデバイスは、更に、同期化されたコンテンツアイテムを格納するためのローカルストレージについての指定された量を有し、これは共有コンテンツストレージ・ディレクトリ120のサイズであり、この指定された量は、上述のストレージ割り当てパラメータ130である。例えば、ユーザのアカウントは、コンテンツ管理システム110上で利用可能な50GBのストレージをユーザが有するが、クライアントデバイス100上には10GBのストレージ割り当てしか有しないことを特定してもよい。このような状況において、ローカルに格納された共有コンテンツアイテムをユーザが変更した場合に、コンテンツアイテムはサイズが増加することがあり、その結果として、クライアントデバイス100上でのストレージ割り当てを超えることがある。同様に、ユーザは、コンテンツ管理システム110と共有及び同期化されるべき新しいコンテンツアイテムを共有コンテンツストレージ・ディレクトリ120内に作成及び格納することによって、クライアントデバイス100上のストレージ割り当てを超えることがある。そのような場合、共有コンテンツアイテムの量が、クライアントデバイス100に対するストレージ割り当てを超え、このイベントにおいて、クライアントデバイス100は、ストレージに制約があり、コンテンツ管理システム110によって同期化されたすべてのコンテンツアイテムのローカルコピーをもはや保持することができない。
クライアントデバイス100又はコンテンツ管理システム110は、1つ以上のコンテンツアイテムを、後で取り出してクライアントデバイス100に復元できるようにコンテンツ管理システム110に遠隔で保持しながら、ローカルストレージからの削除のために当該1つ以上のコンテンツアイテムを選択するよう構成される。通常、選択されるコンテンツアイテムは、コンテンツアイテムにアクセスする要求が行われた特定のクライアントデバイス100上で、又はコンテンツアイテムが共有される全クライアントデバイス100上で、最も長くアクセスされていないコンテンツアイテムであり、その他の選択方法については以下のセクションで更に説明する。クライアントベースの実施形態では、クライアントアプリケーション200は、クライアントデバイス100上に格納されている各共有コンテンツアイテムに対する最新のアクセスを特定する情報を保持する。ストレージに制約がある場合、クライアントアプリケーション200は、最も長くアクセスされていない(least recently accessed)(以下、「LRA」)コンテンツアイテムの1つ以上を選択する。ホストベースの実施形態では、コンテンツ管理システム110は、全てのコンテンツアイテムについてのアクセスデータを保持し、当該システム110は、コンテンツアイテムが共有される任意のクライアントデバイス100上でコンテンツアイテムがアクセスされるたびに、この情報を更新する。LRA選択は、ホストベースのシステム又はクライアントベースのシステムとしてそれぞれ実装可能な、可能性のある複数の放置コンテンツアイテム選択方法(unattended content item selection methods)(以下、「UCSM」)のうちの1つのみである。UCSMは、各コンテンツアイテムが削除に適しているかどうかを判定するために、各コンテンツアイテムについてのvnodeリファレンスを調べうる。コンテンツアイテムごとのvnodeは、コンテンツアイテムへのアクセス数に関する情報と、コンテンツアイテムが現在使用されている又は開かれているか否かを含む、他のコンテンツアイテム・ステータス・インジケータとを含む。
簡潔のため、コンテンツアイテムを、ストレージの制約に応じてクライアントデバイス110上の常駐から削除のために選択するごとに、当該動作を本明細書では「放置コンテンツアイテムを選択する」と称し、これは、UCSMの多くが、最も長くユーザによりアクセスされていないコンテンツアイテムを特定するよう動作するためである。放置コンテンツアイテムは、以下の説明で概説される任意のUCSMによって選択されるコンテンツアイテムを示す。
基本LRA選択:基本LRA選択を行うために、クライアントアプリケーション200は、最新のローカルアクセス日で順序付けされたコンテンツアイテムのキューを保持し、最も長くアクセスされていないコンテンツアイテムが当該キューの先頭にある。コンテンツアイテムごとの最新のアクセス日時は、コンテンツアクセス履歴テーブル内に保持される。コンテンツアイテムへのアクセスは、コンテンツアイテムを作成する動作、開く動作、プレビューする動作、又は変更する動作を含む。任意の数のこれらの動作がアクセスとみなされてもよく、例えば、実施形態は、アクセスを、コンテンツアイテムを開く、変更する、又は保存することであるとしてもよく、ただし、コンテンツアイテムをプレビューすることはアクセスではないとしてもよい。キュー内で特定される最も長くアクセスされていないコンテンツアイテム(即ち、キューの先頭にあるコンテンツアイテム)から始まり、当該キューの最後にあるコンテンツアイテムで終わる、キュー内にリスト化されている各コンテンツアイテムについて、ストレージサイズの累積和(例えば、ランニング合計)が計算される。ストレージに制約がある場合、クライアントアプリケーション200は、コンテンツアイテムを格納するのに要するストレージ空間の量を判定し、累積ストレージサイズがストレージ空間の要求条件を超えるコンテンツアイテムのインデックスを特定するために、そのようにしてキューを進める。特定されたインデックスは、クライアントデバイス100上の共有コンテンツストレージ・ディレクトリ120からの削除のために、キュー内の当該インデックスを含み、当該インデックスを上回る全てのコンテンツアイテムを選択するために使用される。
表1では、これらのプロセスについて更に説明する。この例では、75MBのストレージが、コンテンツアイテムを格納するために必要とされる。コンテンツアイテムA及びBのみでは合計で70MBであるため、これら2つのコンテンツアイテムの削除によってはコンテンツアイテムに対して十分な量のストレージを提供することはできない。したがって、対応するインデックス00、01及び02における、(一番右の欄の指定によって示されるように)150MBの総累積サイズを有するコンテンツアイテムA、B及びCが選択される。
リモートLRA選択:LRA選択は、コンテンツ管理システム110を通じて、当該システム上のコンテンツアイテムへのアクセスを有する、又は当該コンテンツアイテムのバージョンを共有したクライアントデバイス100上の当該コンテンツアイテムへのアクセスを有する他のユーザによるリモートアクセスにも基づきうる。これを実現するため、一実施形態では、各クライアントデバイス100は、その独自のコンテンツアクセス履歴テーブルを、例えば、通常のコンテンツアイテム同期動作を行う間に、又はその他の時間に、コンテンツ管理システム110と同期させる。この実施形態は、各クライアントデバイス100が、他のクライアントデバイスと共有するコンテンツアイテムごとに現在のアクセス情報を保持できるようにする。あるいは、ホストベースの実施形態では、コンテンツ管理システム110は、LRA選択に使用するための現在の最新のリストを有するように、同期及び共有のために指定された全てのクライアントデバイスにわたって、コンテンツアイテムごとのアクセス履歴を含むコンテンツアクセス履歴テーブルを保持してもよい。リモートLRA選択は、更に、累積ストレージサイズが所要ストレージ空間を上回る、最も長くアクセスされていないコンテンツアイテムを、コンテンツ管理システム110が選択することを含む。この実施形態では、当該キューは、コンテンツアイテムに対して同期している全てのクライアントデバイスからの最新のアクセス時刻によって順序付けされる。
表2は、どのようにリモートLRAが実装されうるかの例である。この例では、コンテンツアイテムB及びCは、それぞれ5/24/2014及び4/5に異なるクライアントデバイス上でリモートから最後にアクセスされているが、(表1にリスト化されているように)両方ともローカルでは3/24/2014にアクセスされている。リモートアクセスに起因した、アイテムB及びCについての最新のアクセス時刻のこの変化は、基本LRA選択が使用される場合と比べて、それらのアイテムをキュー内で更に下へ移動させる。その結果、この例では、アイテムA、B及びCに代えてアイテムA及びBが選択される。
コンテンツアイテムサイズ選択:削除用のコンテンツアイテムを選択するために使用されうる他の要素は、そのサイズである。一実施形態において、クライアントデバイス100からリモートで削除及び格納されるコンテンツアイテムの数を最小限にするために、サイズが使用される。これは、アクセス日時に代えてサイズで(最小から最大まで)キューの順序付けを行うことによって達成されうる。更に、所要ストレージ空間の値は、所要ストレージ空間を上回るサイズを有するコンテンツアイテムが特定されるまで、個別のサイズと比較されうる。クライアントアプリケーション200は、その後、当該コンテンツアイテムを削除用に選択しうる。所要ストレージ空間より大きな単一のコンテンツアイテムが無い場合、最大のコンテンツアイテムが選択されて、そのサイズが所要ストレージ空間の値から差し引かれ、キューの最初からプロセスが繰り返されることになろう。
表3は、このセクションの方法の例である。この例では、40MBのストレージが、コンテンツアイテムを格納するために必要とされる。アイテムBは、40MBの所要ストレージ空間の値を上回る、キューインデックスでの一番目のコンテンツアイテムであり、それ故に、当該コンテンツアイテムはクライアント100からの削除のために選択される。
コンテンツアイテムサイズ及びアクセス時刻ベースの選択:ここで説明したサイズ選択方法は、場合によっては、頻繁にアクセスされるコンテンツアイテムを削除用に選択してもよい。サイズ及びアクセス時刻の両方を考慮することで、コンテンツ管理システムは、近いうちにユーザによって要求されうるコンテンツアイテムを、クライアントデバイス100から削除することを避けることが可能である。一実施形態において、二変数選択方法は、各コンテンツアイテムが所要のストレージ割り当てに達することに寄与するストレージ量と、その最後のアクセス時刻とに基づいて、コンテンツアイテムごとに重み付けされたスコアを計算することによって実現される。例えば、
スコア=w1S+w2A
であり、ここで、Sは、コンテンツアイテムのサイズを表すメトリックであり、Aは、当該コンテンツアイテムへの最後のアクセスからの時間を表すメトリックであり、w1及びw2は、重みである。A及びSに対する重みは、ユーザ又はシステム管理者によって定められるような、それらの相対的な重要度に基づいてもよいし、あるいは、特定のクライアントデバイス100上でのコンテンツアイテムに対するそれまでのコンテンツアイテム・アクセスパターンに基づいてもよい。更に、キューは、スコアによって順序付けされ、キュー内の一番目のコンテンツアイテムが削除用に選択される。
以下の表4には、この選択方法の実装例が示されている。この簡易な例のために、アクセス時刻メトリックAは、現在の時刻と特定のコンテンツアイテムに対する最後のアクセスとの差分と、現在の時刻と最も長くアクセスされていないアイテムのアクセスとの差分の比である(このケースにおいて使用された日付は9/3/2014)。この例では、サイズメトリックは、以下の関係である。
s≧rの場合:S=r/s
s<rの場合:S=s2/r2
ここで、sは、コンテンツアイテムのサイズであり、rは、所要ストレージ空間であり、Sは、サイズメトリックである。この区分関数は、s=rの場合に最大の1を有する。
表4に示された例では、所要ストレージ空間は40MBであり、重みw
1及びw
2は両方とも1である。サイズメトリック及びアクセス時刻メトリックが計算され、その後、合計スコアをコンテンツアイテムごとに計算するために使用される。この例では、アイテムBが、最大スコアを有しており、それ故に、クライアントデバイス100からの削除用に選択される。選択されたコンテンツアイテムが、所要ストレージ空間よりも小さいサイズを有する場合、新たな所要ストレージ空間が、古い所要ストレージ空間と、最初に選択されたコンテンツアイテムのサイズとの差分として計算され、新たに計算された所要ストレージ空間を用いて、全てのコンテンツアイテムに対してスコアが再計算されて新たなキューが生成され、選択プロセスが繰り返される。
アクセス頻度及び最新性選択:放置コンテンツアイテムをより好ましく選択するために、アクセス時刻に加えて、頻度等の他の要素が考慮されてもよい。高頻度・低最新性のコンテンツアイテムは、過去のあるときには頻繁に選択されていたが(例えば、7ヶ月以上前)、最近はそうではないコンテンツアイテムであり、低頻度・低最新性のコンテンツアイテムは、頻繁にアクセスされたことがないコンテンツアイテムである。アクセスの頻度は、特定のクライアントデバイスにおける、又はクライアントデバイスの任意の集団にわたる、又はタイプ、ネームスペース、ソースドメイン、若しくはその他のコンテンツアイテム属性による、平均頻度に対して測定される。例えば、コンテンツアイテムが最近4か月においてクライアントデバイス上でアクセスされていないが、それより前に25回アクセスされたことがある場合、過去に1回だけアクセスされた、同様の最新性のコンテンツアイテムよりも、ユーザに関連している可能性がある。
一実施形態では、各コンテンツアイテムに対する最新のアクセスに加えて、コンテンツアイテムごとのアクセス数が(クライアントデバイス100又はコンテンツ管理システム110)で保持される。各変数を表すメトリックの重みづけ合成として、コンテンツアイテムごとにスコアが判定される。例えば、コンテンツアイテムごとの重み付けされたスコアは、コンテンツアイテムのアクセス頻度のメトリック及びその最新のアクセス日時に基づく。例えば、
スコア=w1F+w2A
であり、ここで、Fは、アクセス頻度を表すメトリックであり、Aは、コンテンツアイテムへの最後のアクセスからの時間を表すメトリックであり、w1及びw2は、重みである。A及びFに対する重みは、ユーザ又はシステム管理者によって定められるような、それらの相対的な重要度に基づいてもよいし、あるいは、特定のクライアントデバイス100上でのコンテンツアイテムに対するそれまでのコンテンツアイテム・アクセスパターンに基づいてもよい。更に、キューはスコアによって順序付けされる。累積和が、各インデックスにおいて計算され、所要ストレージ空間と比較される。累積和が所要ストレージ空間を上回る場合、インデックスとキュー内で当該インデックスより上の全てのコンテンツアイテムとが、クライアントデバイス100からの削除のために選択される。
表5は、このセクションの方法の一例を示している。この例では、所要ストレージ空間は40MBであり、重みw
1及びw
2は両方とも1である。キューは合計スコアによって順序付けされ、累積和は所要ストレージ空間と比較される。その結果、アイテムC及びEが、クライアントデバイス100からの削除用に選択される。
上記のUCSMのいずれも、個別のファイルのみに代えて、単一キューインデックス内のフォルダ全体を考慮してもよい。例えば、LRA UCSMが使用中であり、かつ、フォルダが複数のファイルを含み、当該フォルダ内でごく最近アクセスされたファイルが、共有コンテンツディレクトリ内の他の全てのコンテンツアイテムよりも早いアクセス日時を有する場合に、(特に、かなりのストレージ空間が必要とされる場合に)フォルダ全体を、放置されているものとして選択することがより効率的でありうる。あるいは、当該フォルダに対する合成メトリックは、平均値、中央値、又は、フォルダ内のコンテンツアイテムを一般化する他の統計値であってもよく、それをキュー内に置くことが可能になる。
以下の説明では、上述の方法は、放置コンテンツアイテムをクライアントデバイス100からの削除用に選択するために使用されうる。放置コンテンツアイテムを選択するこのプロセスにより、制約付きコンテンツ管理システム110によって提供されるような、クライアントデバイス上の改善されたストレージ能力が実現される。
コンテンツ管理システムの概要
コンテンツ管理システム110を用いてクライアントデバイス100A及び100B間で同期を行う方法が、図2に示されるアーキテクチャを参照して説明されうる。以下では、ストレージ制約付き同期で用いられうる、同期を行う複数の可能性のある方法のうちの1つを説明する。
コンテンツ管理システム110は、コンテンツアイテムをデータストア218に格納する。コンテンツアイテムは、ブロックと称される固定サイズ部分に格納される。ブロックのサイズは、実装に応じて変化し、一実施形態ではブロックは4メガバイトのサイズである。このため、小さいコンテンツアイテムは単一のブロックとして格納される一方、大きいコンテンツアイテムは、コンテンツ管理システム110におけるストレージのために数十、数百、又はそれ以上の数のブロックに分割されうる。メタデータは、コンテンツアイテム内のブロックと、当該コンテンツアイテム内のブロックの順序とを定めるブロックリストを含む。
ペンディングブロック・テーブル220は、コンテンツ管理システムにおいて受信される予定のペンディングブロックのリストを保持する。ペンディングブロック・テーブル220は、(ブロック識別子によって識別される)ブロックと、送信されることをクライアント100が示すブロックが属するネームスペースとの関連付けを格納する。
ネームスペース・テーブル222は、個別のコンテンツアイテムとネームスペースとを関連付けるデータを格納し、各ネームスペースとクライアントとを関連付けるデータを保持する。
メタデータサーバ212は、クライアントからの、新しいコンテンツアイテムをコンテンツ管理システム110へ追加(「収容」)することを求める要求を管理する役割を担う。メタデータサーバ212は更に、コンテンツアイテムを同期させることを求める要求をクライアントデバイス100から受信する。メタデータサーバ212は、クライアントデバイス100がコンテンツ管理システム110と同期した、前回のレコードを保持する。クライアントデバイス100から同期要求が受信されると、メタデータサーバ212は、前回の同期のタイムスタンプ以降に、クライアントデバイス100へ同期したネームスペースに収容されたコンテンツアイテムを判定する。また、メタデータサーバ212は、前回の同期のタイムスタンプ以降に受信されたペンディングブロックを判定する。
通知サーバ216は、クライアントと通信する役割を担い、具体的には、新しいデータが利用可能であることをクライアントに通知する。通知サーバ216は、ネームスペース・テーブル222の各ネームスペースに関連付けられているクライアント110のリストを保持する。新しいブロックが所与のネームスペースに対して利用可能であるとの、ブロックサーバ214又はメタデータサーバ212からのアラートを、通知サーバ216が受信すると、通知サーバ216は、ネームスペース・テーブル212から、当該ネームスペースに関連するクライアントを識別する。通知サーバ216は、当該ネームスペースに関連する(複数の)クライアント100と活動させるために当該(複数の)クライアントに通知し、識別されたネームスペースに対して新しいブロックが利用可能であることを知らせる。
2つのクライアント100間の典型的な同期は、クライアントデバイス100Aとクライアントデバイス100Bに以下のように生じる。まず、クライアントデバイス100Aは、追加のコンテンツアイテムを共有データに追加する。その後、追加のコンテンツアイテムは、コンテンツ管理システム110へ送信される。コンテンツ管理システム110は、追加のコンテンツアイテムが共有データ内にあることをクライアントデバイス100Bに通知し、クライアントデバイス100Bは、当該追加のコンテンツアイテムを、コンテンツ管理システム110からクライアントデバイス100Bとして取り出す。コンテンツ管理システム110は、コンテンツアイテムのリストと、コンテンツ管理システム110で受信される予定のペンディングブロックとを、ペンディングブロック・テーブル220を用いて保持し、コンテンツ管理システム110によってブロックとして受信されるコンテンツアイテムに対応するブロックをダウンロードするよう、クライアントデバイス110Bに通知する。ペンディングブロックは、コンテンツ管理システム110が受信する予定のコンテンツアイテムに対応するブロックであり、コンテンツアイテムがコンテンツ管理システム110に収容される前に受信クライアントデバイス100Bに提供されうるブロックを識別するために使用される。
送信中のコンテンツアイテムを管理するために、コンテンツ管理システム110は、ペンディングブロックのリストを、当該ペンディングブロックと関連するネームスペースとともに持ち続ける。ペンディングブロックの受信時に、ネームスペースに関連するクライアントは通知を受けて、受信ブロックについての転送を開始できる。このため、(新しいコンテンツアイテムを提供する)アップロードするクライアントと(当該新しいコンテンツアイテムを受信する)ダウンロードするクライアントは、非同期でコンテンツ管理システム110へブロックを転送しうる。
クライアントデバイスの概要
各クライアントデバイス100は、デスクトップ、ラップトップ、タブレット、モバイルデバイス、又は、インストールされたクライアントアプリケーション200を用いて、コンテンツ管理システム110及び他のクライアントと同期化される共有データのローカルコピーを保持するその他のシステムといった、コンピューティングデバイスである。共有データは、単一のユーザに関連するクライアントとのみ同期化されうるか、又は、複数のユーザに関連するクライアントに同期化されうる。図3に関して更に説明するように、クライアントデバイス100は、共有データにデータを追加するための、及び共有データを操作するためのモジュール及びアプリケーション含む。
図3は、クライアントアプリケーション200のモジュールを示している。クライアントアプリケーション200は、データをコンテンツ管理システム110に同期させるための種々のモジュール及びデータストアを含む。クライアントアプリケーション200は、コンテンツ同期モジュール310、ハッシュ化モジュール320、ダウンロードモジュール330、アップロードモジュール340、及びストレージ管理モジュール350を含む。更に、クライアントアプリケーション200は、ファイルジャーナル360、常駐ファイルテーブル362、共有データ364、リモートファイルテーブル366、設定ファイル368、及びブロックキャッシュ370を保持する。クライアントアプリケーション200に加えて、図3は更に、クライアントデバイスのオペレーティングシステム上に存在するストレージカーネル拡張384を示している。クライアントアプリケーション200の設定と、これらのモジュールを使用する、その関連するカーネル拡張は、クライアントアプリケーション200を、本明細書で説明される機能を実行可能な特定のコンピュータとしてインスタンス化し、これにより、クライアントデバイスのストレージ容量及び機能的性能の、説明される改善が可能になる。
共有データ364は、コンテンツ管理システム110と同期化されたデータであり、コンテンツ管理システム110から受信されたコンテンツアイテムを含む。ユーザが、共有データ364におけるコンテンツアイテムの追加、変更、又は削除を行った場合、それらの変更は、コンテンツ管理システム110と同期させられる。ハッシュ化モジュール320及びブロックキャッシュ370は、コンテンツ管理システム110へアップロードされるコンテンツアイテムを含むブロックを識別するよう動作する。ハッシュ化モジュールは、MD5又はSHA−1といった、任意の適切なハッシュ化アルゴリズムを実行することで、ブロック識別子を割り当てる。コンテンツ同期モジュール310は、その後、これらの識別子を、ブロックキャッシュ370内にある常駐ブロックを、コンテンツ管理システム110によって保持されるブロックと比較するために使用する。これらのモジュールは現在の実施形態に存在するが、このブロックの実装はストレージ制約付き同期の発明には必要ではない。
クライアントアプリケーション200内で、クライアントデバイス100上の共有データ364へのデータの追加又はデータの変更が行われると、共有データ364への変更は、コンテンツ管理システム110へ送信される。クライアントデバイス100は更に、コンテンツ管理システム110から通知を受信するよう構成される。クライアントデバイス100が通知を受信すると、クライアントデバイス100は、共有データ364に対する変更についてコンテンツ管理システム110に問い合わせを行う。共有データが変更された場合、クライアントデバイス100は、当該共有データをクライアントデバイス100上に格納するために、コンテンツ管理システム110に変更情報を要求する。場合によっては、変更されたデータは、シャドウアイテムによって表されるコンテンツアイテムに関連していてもよい。この場合、クライアントデバイス100は、シャドウアイテムによって表されるコンテンツアイテムへのアクセスが、クライアントデバイス100上のアプリケーションによって要求されるまで、変更されたデータについてのコンテンツ管理システム110への要求を控えてもよい。あるいは、共有コンテンツアイテムが他のクライアントデバイス100によって変更された場合、コンテンツ管理システム110は、制約のあるクライアントデバイスに常駐している他のコンテンツアイテムを代償にして変更の同期化ができるように、シャドウアイテムによって表されるコンテンツアイテムを制約のあるクライアントデバイス100が復元することを要求してもよい。
クライアントアプリケーション200内では、ファイルジャーナル360は、クライアントアプリケーション200を用いてアカウントがアクセス可能な全てのコンテンツアイテムについてのメタデータをリスト化するテーブルを格納する。メタデータは、各コンテンツアイテムに対応する改訂日時、ネームスペース、及びブロックリストを含む。常駐していない又は同期化されていないコンテンツアイテムは、それでもファイルジャーナル360に含まれる。
常駐ファイルテーブル362は、ストレージの制約には関係なく、常にクライアントデバイス100に常に常駐し続けているファイルのリストを格納する。
リモートファイルテーブル366は、クライアントデバイスから削除されてシャドウアイテムと置き換えられるように選択されたファイルのリストを格納する。これらのファイルは、コンテンツ管理システム110によってのみ保持され、場合によっては当該ファイルにアクセス可能な他のユーザによって保持される。
設定ファイル368は、クライアントアプリケーション200によって保持されるファイルであり、クライアントデバイスに対するストレージ割り当て120を含む。いくつかの実施形態において、ストレージ割り当て120は、ユーザ、又はクライアントアプリケーション200を制御しうるコンピュータシステムによって作られうる。例えば、オペレーティングシステムは、他のアプリケーションによる使用のために十分な量のストレージを保持できるように、ストレージ割り当て120を変更しうる。
ストレージカーネル拡張384は、コンテンツアイテムにアクセスするためのアプリケーションからオペレーティングシステム380への要求をモニタリングし、要求されたコンテンツアイテムがシャドウアイテムであるか否かを判定するように構成され、この機能を実行する一手段である。ストレージカーネル拡張384は、クライアントデバイス上の有効ストレージ容量の増加を可能にする、オペレーティングシステムの構成及び機能に対する直接の変更を構成する。
カーネル拡張384は、クライアントアプリケーション200によって管理されるコンテンツアイテムを開くために行われる要求をモニタリングする。カーネル拡張384は、オペレーティングシステム380上のファイルシステム382をモニタリングすることによって、クライアントアプリケーション200によって管理されるコンテンツアイテムを開くためにいつ要求が行われたかを判定する。コンテンツアイテムに対する要求がファイルシステム382内で行われると、カーネル拡張384は、それが、共有コンテンツストレージ・ディレクトリ120内に格納されたコンテンツアイテム内であるかを判定するために、当該コンテンツアイテムのパス名を調べる。
カーネル拡張384は、要求されたコンテンツアイテムがシャドウアイテムであるかを、そのサイズが閾値サイズを下回るかを判定することによって判定する。代替的には、シャドウアイテムの識別は、クライアントアプリケーション200によって管理されるコンテンツアイテムについての拡張されたファイル属性に基づいて達成されうる。カーネル拡張が、要求されたコンテンツアイテムのサイズを調べることなくシャドウアイテムを識別できるように、シャドウアイテムを示すファイル属性がシャドウアイテムに対して割り当てられうる。ファイルがシャドウアイテムであるとカーネル拡張384が判定した場合、カーネル拡張は、識別情報をクライアントアプリケーション200へ伝える。
図4は、クライアントデバイス100に常駐はしていないがあたかもクライアントデバイス100上に常駐しているかのようにファイルシステムに含まれるコンテンツアイテムにアクセスするためのプロセスの一実施形態を示す、インタラクションダイアグラムである。ファイルシステム382は、クライアントデバイス100上の同期フォルダ内のコンテンツアイテムを開くことを求める要求を受信する(400)。当該要求は、ファイルエクスプローラ、ワードプロセッサ、ドキュメントリーダ、イメージエディタ等の、任意のアプリケーションから生じうる。ストレージカーネル拡張384は、そのようなファイルシステム要求をインターセプトし、要求されたコンテンツアイテムのパス名を取得する(402)。ストレージカーネル拡張384は、パス名を使用して、コンテンツアイテムがシャドウアイテムであるかどうかを判定する(404)。ストレージカーネル拡張384は、要求されたコンテンツアイテムのサイズをチェックして、当該サイズが所定の閾値を下回るかどうか、さもなければシャドウアイテムのサイズ(4KB)と一致するかどうかを判定することによって、それを行う。あるいは、ストレージカーネル拡張384は、コンテンツアイテムがシャドウアイテムであるか、正規のコンテンツアイテムであるかを示す値を格納したファイル属性拡張を読み込みうる。コンテンツアイテムがシャドウアイテムではない場合、ストレージカーネル拡張384は、要求を通常どおりに続けさせ、当該コンテンツアイテムを開くことが可能になるよう、ファイルシステムに対してファイル・ハンドルを与える。
コンテンツアイテムがシャドウアイテムであるとの判定に応じて、ストレージカーネル拡張484は、要求識別番号(要求タイプを含む要求に関する情報)とファイルパスとを管理モジュール350へ送り、ファイル名を渡す(406)。ストレージ管理モジュール350は、リモートファイルテーブル366からファイル名を削除する(408)。ストレージ管理モジュール350は、その後、コンテンツ管理システム110からの同期を必要とするコンテンツアイテムをチェックするダウンロードスレッドを立ち上げる。要求されたコンテンツアイテムはリモートファイルテーブルから削除されているため(408)、ダウンロードスレッドは、ここで、ダウンロードに備えて、要求されたコンテンツアイテムのサイズを含む、コンテンツアイテム情報を、コンテンツ管理システム110に要求する(414)。ストレージ管理モジュール350は、サイズ情報をコンテンツ管理システム110から受信し(416)、クライアントデバイス100へのコンテンツアイテムの格納により、所定のストレージ上限を超過することが生じるかどうかを判定する(418)。要求されたコンテンツアイテムの追加によってストレージ上限を超過する場合、ストレージ管理モジュール350は、クライアントデバイス100に格納されている1つ以上のコンテンツアイテムを削除用に選択する(422)。しかし、ストレージ上限を超過しない場合、ストレージ管理モジュール350は、コンテンツアイテムのダウンロードに進む。
要求されたコンテンツアイテムの共有コンテンツストレージ・ディレクトリ120への追加によってストレージ割り当て130を超過する場合には、ストレージ管理モジュール350は、ダウンロードの要求(430)の前に、要求されたコンテンツアイテムに対して十分なストレージ空間を使用可能にするために、削除のために1つ以上のコンテンツアイテムを選択し、それにより、共有コンテンツディレクトリが、割り当てられた空間を超えて常に占有することを防止する。ストレージ管理モジュール350は、上述のUCSMのいずれかを使用して、放置コンテンツアイテムを最初に判定することで(420)、削除用のコンテンツアイテムを選択する(422)。特定のコンテンツアイテムのアクセス履歴又は各選択方法に関連する他の情報が、ホストシステムに格納されている場合、その情報のクライアントアプリケーション300のバージョンを更新するよう求める要求が、当該ホストシステム(図4には図示せず)に対して行われる。コンテンツ管理システム110内のコンテンツアイテムごとのアクセス履歴又は他の必要な情報の最新バージョンが一旦取得されると、ストレージ管理モジュール350は、放置コンテンツアイテムを判定できる(420)。
その後、ストレージ管理モジュールは、クライアントデバイスから削除用の放置コンテンツアイテムを選択する(422)。この実施形態では、削除のためのコンテンツアイテムを選択(422)するために、ストレージ管理モジュール350は、使用中のUCSMによって生成されたキューをトラバースして、少なくともダウンロード対象の要求されたコンテンツアイテムのサイズと同じ大きさのストレージ空間を作り出す。削除用の放置コンテンツアイテムの選択は、上述の方法のいずれかを用いて行うことが可能である。
ストレージ管理モジュール350は、その後、選択されたコンテンツアイテムの名前をリモートファイルテーブル366に加える(424)。一旦、この追加(424)が確認されると(426)、ストレージ管理モジュール350は、選択されたコンテンツアイテムを、クライアントデバイス上の共有コンテンツストレージ・ディレクトリ120から削除し(428)、その後、削除されたコンテンツアイテムごとに、当該削除されたコンテンツアイテムと同じメタデータ及びロケーションを有するが、当該コンテンツアイテムについてのコンテンツ情報を含まない、対応するシャドウアイテムを作成する。シャドウアイテムは、クライアントのユーザインタフェース内で、あたかもクライアントデバイス100上に依然として常駐しているかのように表現されうる。図8は、クライアントデバイス100のユーザインタフェース内でシャドウアイテムがどのように表現されうるかの例を示している。
選択されたコンテンツアイテムの削除に応じて、十分なストレージ空間がクライアントデバイス100上に生じ、共有コンテンツストレージ・ディレクトリ120のストレージ上限を超過することなく、要求されたコンテンツアイテムがコンテンツ管理システム110からダウンロードすることが可能である。したがって、ストレージ管理モジュール350は、ダウンロード要求をダウンロードモジュール330へ送る(430)。ダウンロードモジュール330は、その後、コンテンツ管理システム110からのダウンロードを始める(432)。一旦、コンテンツアイテムがダウンロードモジュール330へダウンロードされると(434)、当該コンテンツアイテムはストレージ管理モジュール350へ渡され(436)、ストレージ管理モジュール350は、要求されたコンテンツアイテムを、以前に特定されたロケーションに保存し(438)、ダウンロードが完了したことをストレージカーネル拡張384へ通知する(440)。一実施形態において、ストレージ管理モジュール350は、ダウンロードされたコンテンツアイテムのコンテンツを、シャドウアイテムのメタデータに付加し、コンテンツアイテムが現在、もはやシャドウアイテムではないことを示すためにようにコンテンツアイテム属性を更新する。これにより、要求アプリケーションが、コンテンツアイテムへのアクセスを当初要求するために使用した同じファイル・ハンドル及び識別情報を使用して、要求されたコンテンツアイテムに透過的にアクセスすることが可能になる。ストレージカーネル拡張384は、その後、ファイル・ハンドルをファイルシステム382に渡し(442)、当該ファイルシステムは、要求アプリケーションに、コンテンツアイテムを開くためのパーミッションを与える(444)。
図5は、ストレージ割り当て130に近づいている共有コンテンツストレージ・ディレクトリ120にコンテンツアイテムを保存するプロセスの一実施形態を示すインタラクションダイアグラムである。当該コンテンツアイテムは、共有コンテンツストレージ・ディレクトリ120内に新たに作成されたコンテンツアイテム、共有コンテンツストレージ・ディレクトリ120に移動させられたコンテンツアイテム、又は、共有コンテンツストレージ・ディレクトリ120に既に存在し、その後にサイズが増加するように変更されたコンテンツアイテムでありうる。プロセスは、アプリケーションが、同期フォルダ内にコンテンツアイテムを保存することを求める要求を、ファイルシステム382のオペレーティングシステムに対して行う(500)ことから始まる。ストレージカーネル拡張384は、ファイルシステムから、この要求をモニタリングし、要求ID、ファイルパス、及びサイズを受け付ける(502)。次に、ストレージカーネル拡張384は、この情報をストレージ管理モジュール350へ送る(504)。ストレージ管理モジュールは、新しいコンテンツアイテムの追加によって、同期フォルダがそのストーレージ上限を超過することが生じるかどうかを判定する(506)。ストレージ上限を超過しない場合、ファイルシステム382は、コンテンツアイテムを通常どおり保存することを許可される。ストレージ上限を超過する場合、ストレージ管理モジュール350は、放置コンテンツアイテムを判定し(508)、それをクライアントデバイスからの削除用に選択する。一旦、放置コンテンツアイテムが選択されると、そのコンテンツがコンテンツ管理システム110によって同期させられないように、その名前がリモートファイルテーブル366に追加される(512)。次に、ストレージ管理モジュールは、選択されたコンテンツアイテムをクライアントデバイス100から削除し、それを、削除されたコンテンツアイテムと同じメタデータ及びロケーションを有するがコンテンツを含まないシャドウアイテムに置き換える(514)。このプロセスが完了した際、ストレージ管理モジュールが、元のコンテンツアイテムを保存するために(516)十分なストレージ空間が、制約付きフォルダ内に存在する。次に、ストレージ管理モジュールは、アップロードスレッドを立ち上げ(518)、当該アップロードスレッドは、保存されたコンテンツアイテムのコンテンツがコンテンツ管理システム110にアプロード(522)されるよう、メタデータにアクセスする(520)。
コンテンツアイテムの削除及びシャドウアイテムの作成を自動的に行うのに加えて、いくつかの実施形態は、更に、コンテンツ管理システム110上のみにリモートで格納すべき特定のコンテンツアイテムをユーザが選択することを可能にする。これは、単純に、特定の同期済みコンテンツアイテム上でコンテキストメニュー(例えば、「右クリック」)からユーザが選択できるようにすることで実現されうる。次に、クライアントアプリケーション200は、ユーザに対して、選択されたコンテンツアイテムをリモートにするためのオプションを提示しうる。ユーザがこのオプションを選択した場合、コンテンツアイテムが、クライアントデバイス100から削除され、当該コンテンツアイテムの名前が、リモートファイルテーブル366に加えられ、元のコンテンツアイテムと同じメタデータ及びロケーションを有するシャドウアイテムが、元のコンテンツを表すために作成される。将来、ユーザが当該コンテンツアイテムにアクセスすることを望んだ場合、コンテンツ管理システム110からコンテンツアイテムを取り出すために、図5で説明した同じプロセスが使用されうる。
いくつかの実施形態において、クライアントデバイスは、ストレージ割り当て130に達した際に、さもなければUCSMによって実際に特定のコンテンツアイテムがクライアントデバイス100からの削除用に選択されるかどうかにかかわわらず、クライアントデバイスに常駐し続けるように当該特定のコンテンツアイテムをユーザが選択できるよう構成される。本実施形態は、特定の重要なコンテンツアイテムへの素早いアクセスをユーザが維持することを可能にする、操作の改善をもたらす。本実施形態では、クライアントアプリケーション200は、ユーザが、コンテキストメニューにアクセスし、次に、コンテンツアイテムがクライアントデバイス100に常駐し続けることを強制するオプションを選択できるようにする。選択に応じて、コンテンツアイテムの名前が常駐ファイルテーブル362に追加される。常駐ファイルテーブル362は、それ以降、422に示されるストレージ管理モジュール350によって使用されるUCSMの間にアクセスされ、テーブル内の全てのコンテンツアイテムが、選択プロセスから除外される。例えば、所与のコンテンツアイテムが削除用に選択された場合、常駐ファイルテーブル362は、選択されたコンテンツアイテムがその中にリストされているかどうかを判定するために調べられ、リストされている場合、選択されたコンテンツアイテムは無視され、他のコンテンツアイテムが実際にUCSMによって選択される。
クライアントデバイス100上でシャドウアイテムに関連付けられたコンテンツは同期化されないため、コンテンツの管理がより複雑になりうる。例えば、1つのクライアントデバイスでユーザが、シャドウアイテムとして示されたコンテンツアイテムを第2のクライアントデバイスに移動させた場合において、当該第2のクライアントデバイスが、当該シャドウアイテムに関する同期用データを受信していないときには、そのロケーションは、第1のクライアントデバイスでは変化しうるが他のクライアントデバイスでは変化しえない。例えば、コンテンツアイテムは、異なるクライアントデバイス100上でシャドウアイテムによって示されている間に、1つのクライアントデバイス100によってコンテンツ管理システム110から完全に削除されることがある。この状況が生じた場合に、第2のクライアントデバイス100のユーザは、シャドウアイテムによって示されるコンテンツアイテムへのアクセスにアクセスして、それがもはや存在しないことのみを発見しうる。こうした紛らわしい状況を避けるために、いくつかの実施形態において、コンテンツ管理システム110は、シャドウアイテムをメタデータのみについて同期させるよう構成され、即ち、シャドウアイテムの属性のいずれかが変化した場合に、コンテンツ管理システム110は、クライアントデバイスのいずれかにおいてコンテンツアイテムがシャドウアイテムとして示されているかどうかにかかわらず当該コンテンツアイテムにアクセス可能な全てのクライアントデバイス100に対して、変更された属性を同期させる。これにより、1つのクライアントデバイスからコンテンツアイテムが削除された場合に、他の任意のクライアントデバイス100上で、当該コンテンツアイテムを表すシャドウアイテムが同様に削除される。あるいは、いくつかの実施形態において、他のクライアントデバイス上で、コンテンツアイテムが、クライアントデバイス100上の共有コンテンツストレージ・ディレクトリ120内の残りのストレージの範囲内に収まれることができるようにサイズが変化するよう、変更された場合に、当該コンテンツアイテムは、当該コンテンツアイテムへのアクセスが要求されていなくともクライアントデバイス100へダウンロードされうる。
上述の実施形態のいくつかは、クライアントベースの制約付き同期システムを示し、これは、クライアントアプリケーション200が、所定のストレージ割り当て130を超過しないようにする役割と、コンテンツ管理システム110にデータを要求する役割を有するためである。図6に示されるホストベースの実施形態では、コンテンツ管理システム110は、クライアントデバイス100ごとの、リモートの常駐コンテンツアイテムの情報を識別する情報の管理を含む、制約付き同期プロセスを管理する。ホストベースの実施形態は、クライアントデバイスから必要とされる計算を減らしつつ、クライアントデバイス100上のストレージ容量を効率的に増加させることで、他の実施形態と比べてクライアントデバイス100の性能を改善するという、同様の効果を提供しうる。制約付きコンテンツ管理システム600は、ストレージ管理モジュール350が適切に機能するために要する必要データファイルとともにストレージ管理モジュール350を利用するために更に変更された、図2に示されるコンテンツ管理システム110の要素を含む。制約付きコンテンツ管理システム内において、メタデータサーバ212、ブロックサーバ214、通知サーバ216、データストア218、ペンディングブロック・テーブル220、及びネームスペース・テーブル222は、コンテンツ管理システム110において実現されるのと同様に機能する。更に、ストレージ管理モジュール350は、クライアントデバイス上に常駐している場合と同様に機能し、その場合、ストレージ空間の上限をいつ超過するかを判定する役割と、シャドウアイテムを適切に作成する役割を有する。ストレージ管理モジュール350は、更に、オペレーティングシステム380によって行われる要求についての情報を、クライアントデバイス100から受信する役割を有する。1つ以上のコンテンツアイテムを開くことを求める要求が行われると、当該要求についての情報が、コンテンツ管理システム110へ送信されて、クライアントデバイス100上のシャドウアイテムへのアクセスを提供するために必要なダウンロードが行われるように、ストレージ管理モジュール350によってリモートでモニタリングされる。ストレージ管理モジュール350は、クライアント設定ファイル610を使用して、制約付きコンテンツ管理システムに関連する各クライアントデバイス上のストレージ設定に関する情報を提供する。同期テーブル620は、制約付きコンテンツ管理システム600との同期を必要とするクライアントデバイス上の全てのコンテンツアイテムのレコードであり、このテーブルに含まれるコンテンツアイテムは、当該コンテンツアイテムのいくつかがシャドウアイテムであり、かつ、メタデータの同期のみを必要とするため、データストア218内にあるコンテンツアイテムのサブセットでありうる。更に、本実施形態では、同期モジュールテーブル620は、リモートに又は常駐に各コンテンツアイテムが維持される必要があるクライアントデバイス100を示すように構成された常駐ファイルテーブル362及びリモートファイルテーブル366の両方を用いて置き換えられうる。後者の構成の実施形態では、シャドウアイテムについてのメタデータ同期の実装は容易であり、これは、各クライアントデバイス100のリモートファイルテーブル366内でシャドウアイテムが直接識別されるためである。ユーザデータ630は、ストレージ管理モジュール350が放置コンテンツアイテムを判定できるように、制約付きコンテンツ管理システム600に格納される。
図7は、ホスト管理型の制約付きストレージ同期のプロセスの一実施形態を示すインタラクションダイアグラムである。クライアントデバイス上のアプリケーションは、クライアントデバイス上の同期フォルダに保存されるべきコンテンツアイテムを要求する(700)。ストレージカーネル拡張は、要求ID、ファイルパス、及びコンテンツアイテムのサイズを記録し(702)、その情報をクライアントアプリケーション200へ転送する(704)。クライアントアプリケーション200は、コンテンツアイテムサイズ情報を、制約付きコンテンツ管理システム600上のストレージ管理モジュール350へ送る(706)。ストレージ管理モジュール350は、クライアント設定ファイル610からのコンテンツアイテムサイズ情報の受信元(706)である特定のクライアントに対するストレージ制限を要求する(708)。ストレージ管理モジュール350は、クライアントデバイス100に常駐する他のコンテンツアイテムを加えたサイズを、クライアント設定ファイル610から受信したストレージ割り当てと比較することによって、ストレージ上限を超過することを判定する(712)。ストレージ管理モジュール350は、クライアント上の同期済みコンテンツアイテムから、当該クライアントから削除するためのコンテンツアイテムを選択しうるように、当該クライアント上のコンテンツデータを同期テーブル620に要求する(714)。同期テーブルは、特定のクライアントについての同期済みコンテンツデータとともに応答する(716)。ストレージ管理モジュール350は、LRAコンテンツアイテムの判定に使用するために、ホストデバイス上に格納されたユーザデータ630に、ユーザアクセスデータを要求する(718)。すると、このデータがユーザデータテーブル630から受信される(820)。ストレージ管理モジュール350は、LRAコンテンツアイテムを判定し(722)、所要ストレージ空間を提供するためにクライアントから削除されるべきコンテンツアイテムを選択しうる(724)。ストレージ管理モジュール350は、コンテンツアイテムを削除してシャドウアイテムを作成することを求める要求を、クライアントアプリケーション200へ送信する(728)。コンテンツアイテムの保存を求める元の要求(700)を完了させるパーミッションが、クライアントアプリケーション200に与えられる。最後に、ストレージ管理モジュールは、保存済みのコンテンツアイテムについての最初のコンテンツアイテム・アクセスを反映させるためにユーザデータを更新し(732)、その後、新たなコンテンツアイテムがアップロードに使用可能であるため、メタデータサーバ212にクライアントデバイス100の同期を要求する(734)。
図8は、制約付き同期を提供するコンテンツ管理システムと連携して動作するクライアントデバイス100のユーザインタフェースの例を示す。同期ファイルフォルダ800は、共有コンテンツストレージ・ディレクトリ120として機能する。フォルダ800は、対応したアイコン810A(.m4a音楽ファイル)、アイコン810B(.xlsスプレッドシート)、アイコン810C(.docx文書処理ファイル)、アイコン810D(.mat Matlabファイル)、及びアイコン810E(.jpg画像ファイル)によってそれぞれ表される、複数のコンテンツアイテムを含む。各アイコン810には、コンテンツアイテムのストレージステータスを示すステータスアイコン820が重ねられている。
ステータスアイコン820A(「チェックアイコン」)は、コンテンツアイテムが現在、クライアントデバイス100上に常駐しており、かつ、コンテンツ管理システム110によって保持されているコンテンツアイテムの最新バージョンと同期していることを示す。
ステータスアイコン820Bは、コンテンツ管理システム110との同期が完了した時点でクライアントデバイス100に常駐することになることを示す。
ステータスアイコン820Cは、コンテンツアイテムが、シャドウアイテムであり、かつ、現在、クライアントデバイスに常駐していないがコンテンツ管理システム110上には依然として保持されていることを示す。
ステータスアイコン820Dは、コンテンツアイテムが現在、クライアントデバイス100上に常駐しており、かつ、コンテンツ管理システム110によって保持されているバージョンと同期していることを示す。更に、ピンアイコン840を有する緑の円は、コンテンツアイテムが、ストレージ制約の間にクライアントデバイス800上に常駐し続けるように選択されていることを示す。
図9は、クライアントデバイスに対してリモートの特定のコンテンツアイテムへのユーザアクセスを予測して、予測したコンテンツアイテムを、アクセスに先立ってダウンロードする、制約付き同期の代替の実施形態を示す。このアプローチは、ネットワークを介してコンテンツ管理システム110からコンテンツアイテムを取り出すためにユーザが待つ必要がある時間を、ほとんどの場合に削減することによって、クライアントデバイスの動作の更なる改善をもたらす。リテンションスコア900は、共有コンテンツストレージ・ディレクトリ120内の各コンテンツアイテム140に対して計算される。このスコアは、コンテンツアイテムの予測重要度の測度であり、最新のアクセス時刻の関数として、又は以降のセクションで説明されるように、ユーザの要求を予測すると判定される他の要素の関数として計算されうる。更に、各コンテンツストレージ・ディレクトリ120には、ユーザによって指定又は予め定められた値として設定されうるリテンションスコア閾値910が設定される。同じコンテンツアイテムのリテンションスコア900によって測定される、コンテンツアイテムの予測重要度が、当該コンテンツアイテムにアクセス可能なクライアントデバイス100上の特定の共有コンテンツストレージ・ディレクトリ120のリテンションスコア閾値910を超えるごとに、当該コンテンツアイテムがクライアントデバイスに対してリモートにある場合には、当該コンテンツアイテムは共有コンテンツストレージ・ディレクトリへダウンロードされ、当該コンテンツアイテムがクライアントデバイスに常駐している場合には、当該コンテンツアイテムは共有コンテンツストレージ・ディレクトリ内に保持される。
ステージ9.1は、コンテンツアイテムへのユーザアクセスを予測するコンテンツ管理システムの典型的な状態を示す。この図では、コンテンツ管理システム110は、2つのクライアントデバイス100A及び100Bを管理している。共有コンテンツストレージ・ディレクトリ120A及び120Bは、それぞれのクライアントデバイス内にある。共有コンテンツストレージ・ディレクトリ120Aは、コンテンツアイテム140A、140B及び140Cを格納している一方、共有コンテンツストレージ・ディレクトリ120Bは、コンテンツアイテム140D及びコンテンツアイテム140Aのシャドウアイテム表現160Aを格納している。全てのコンテンツアイテム140の同期済みバージョンが、コンテンツ管理システム110に格納されている。
更に、各コンテンツアイテム140は、対応するリテンションスコア900を有し、900Aはコンテンツアイテム140Aについてのリテンションスコアであり、900Bはコンテンツアイテム140Bについてのリテンションスコアである等である。各共有コンテンツストレージ・ディレクトリには、更に、リテンションスコア閾値910が設定されており、910Aは共有コンテンツストレージ・ディレクトリ120Aについてのリテンションスコア閾値であり、910Bは共有コンテンツストレージ・ディレクトリ120Bについてのリテンションスコア閾値である。
ステージ9.1で、コンテンツアイテム140Aは、共有コンテンツストレージ・ディレクトリ120Bには保持されていない。このケースでは、共有コンテンツストレージ・ディレクトリ120内に常駐した、リテンションスコア閾値910より低いリテンションスコア900を有する、コンテンツアイテムは存在しないが、このシナリオは、これまでに又は以降のセクションで説明される他の実施形態からの特徴が、本実施形態からの特徴に加えて使用される場合にあり得る。例えば、ストレージ割り当てが依然として影響しうるとともに、ストレージ割り当てが十分に大きい場合には、リテンションスコア閾値910より低いリテンションスコア900を有していてもファイルをリモートにし続ける必要はないことがある。
ステージ9.2で、クライアントデバイス100Aのユーザは、クライアントデバイス140Aへのアクセスとみなされるユーザアクション920を、コンテンツアイテム140Aに対して実行する。この例では、リテンションスコア900は、最新のアクセス時刻の関数として計算され、コンテンツアイテム140Aのリテンションスコア900Aは、20から60に増加する。(この変化の大きさは、この例のために任意である。リテンションスコアの計算の詳細は、後ほど提供され、同じスコアの変化が得られることはない。)
ステージ9.3で、コンテンツ管理システム110は、又はいくつかの実施形態ではクライアント100B上のクライアントアプリケーションは、コンテンツアイテム140Aのリテンションスコア900Aが、コンテンツアイテムがリモートにある共有コンテンツストレージ・ディレクトリ120Bのリテンションスコア閾値910B以上であると判定する。リテンションスコア900Aがリテンションスコア閾値910Bを超えているため、コンテンツアイテム140Aは、クライアントデバイス100Bへダウンロードされて共有コンテンツストレージ・ディレクトリ120Bに格納される。
UCSMと同様、複数のリテンションスコア計算方法が存在する。一般に、リテンションスコアは、ユーザ動作属性に対して正規化でき、それにより、同じコンテンツアイテムに対して、クライアントデバイスごとに異なるリテンションスコア又は各クライアントデバイスについてスコアが同じになるグローバルなリテンションスコアが得られる。正規化リテンションスコアの利点は、ユーザ動作の相違を均すことである。例えば、リテンションスコアが、コンテンツアイテムの最新のアクセス時刻の関数であり、現在時刻と最新のアクセス時刻との間の時間が減少するにつれてスコアが増加する場合には、よりアクティブなユーザと共有されるコンテンツアイテムのリテンションスコアは、それほどアクティブではないユーザと共有されるコンテンツアイテムに比べて、当該アクティブなユーザによって押し上げられる。アクティブなユーザ及びそれほどアクティブではないユーザの両方と共有する、第3のユーザに対してリテンションスコアが正規化されていない場合には、当該リテンションスコアは予測品質を失い、これは、それほどアクティブではないユーザによる最近のアクセスよりも、第3のユーザによるアクセスについて予測的ではなくても、アクティブなユーザからのアイテムのみが最大のリテンションスコアを有するためである。リテンションスコアが正規化されるごとに、それは、特定のユーザ又は特定のコンテンツアイテムの属性に正規化されうる。
以下の方法は、リテンションスコア、又はコンテンツアイテムへのユーザアクセスを予測するスコアを決定する方法の例である。更に、リテンションスコアは、予測重要度の最も予測的な測度を作り出すために以下の方法の組み合わせを使用してもよい。典型的には、リテンションスコアは、コンテンツアイテムの予測重要度が増加するにつれて増加するが、その逆は、実施形態に都合が良い場合に同様である。この場合、対応するリテンションスコア閾値は最小となり、コンテンツアイテムのリテンションスコアがリテンションスコア閾値以下である場合に、対応する共有コンテンツストレージ・ディレクトリにダウンロードされうる。この説明のために、リテンションスコアが増加するデフォルトケースを想定する。
最新のアクセス・スコアリング:最新のアクセス・スコアリングでは、コンテンツアイテムのリテンションスコアは、当該コンテンツアイテムの最新のアクセス時刻の関数である。リテンションスコアは、単純に、秒単位で現在時刻と最新のアクセス時刻との差分の逆数でありうる:
RS=1/(tC−tA)
ここで、RSはリテンションスコアであり、tCは現在時刻であり、tAは最新のアクセス時刻である。
特定の実施形態に対して正規化が必要である場合には、予め定められた期間内の、特定のユーザによる又は特定のクライアントデバイス上のアクセス回数として定義される、ユーザ又はクライアントデバイスのアクセス頻度といった、種々のユーザ属性が使用されうる。代替的には、特定のユーザ又はクライアントデバイスと共有されるコンテンツアイテムの最新のアクセス時刻の平均が使用されうる。
アクセス頻度スコアリング:アクセス頻度スコアリングでは、コンテンツアイテムのリテンションスコアは、予め定められた期間内の、同じコンテンツアイテムへのアクセス回数の増加に従って増加する。アクセス頻度スコアリングを正規化するために、所与のコンテンツアイテムについてのアクセス頻度が、クライアントデバイス上の又はユーザと共有される全コンテンツアイテムについての平均アクセス頻度で、除算又はさもなければスケーリングされうる。
ロケーション関連アクセススコアリング:ロケーション関連アクセス・スコアリングでは、第1のコンテンツアイテムのリテンションスコアは、最新のアクセス時刻、アクセス頻度、又はコンテンツアイテム自体の任意の特徴と、第1のコンテンツアイテムと同じフォルダに格納された更なるコンテンツアイテムの同じ特徴との重み付け合成である。これは、フォルダ内のコンテンツアイテムへのアクセスが、同じフォルダ内の他のコンテンツアイテムへのアクセスを予測することを示唆する。
類似アクセスス・スコアリング:類似アクセス・スコアリングでは、第1のコンテンツアイテムのリテンションスコアは、最新のアクセス時刻、アクセス頻度、又はコンテンツアイテム自体の任意の特徴と、第1のコンテンツアイテムと類似の属性を有する更なるコンテンツアイテムの同じ特徴との重み付け合成である。属性には、コンテンツアイテムのタイプ、サイズ、ロケーション、当該コンテンツアイテムにアクセス可能なユーザ等が含まれうる。これは、類似のコンテンツアイテムへのアクセスが、コンテンツアイテムへの将来のアクセスを予測することを示唆する。
基準ベース・リテンション・スコアリング:基準ベース・リテンション・スコアリングでは、コンテンツアイテムのリテンションスコアは、それ以前に特定された予測基準をコンテンツアイテムが満たした回数に基づく。例えば、24時間以内の他のユーザによるコンテンツアイテムへのアクセス、先週の5回を上回るアクセス頻度、及び最近3日以内の十分に類似したコンテンツアイテムへのアクセスが、全て、以降の6時間以内のリモートコンテンツアイテムにアクセスする試行を予測するものとして予め定められた基準でありうる。したがって、コンテンツアイテムのリテンションスコアは、当該コンテンツアイテムが満たす基準のそれぞれに対する予め定められた大きさだけ増加しうる。満たされた特定の基準に対する増加の大きさは、特定の基準の予測強度に比例しうる。
図10は、予測されたコンテンツアイテム重要度を制約付き同期のために用いるコンテンツ管理システムのためのシステム環境を示す。図10に提示される制約付きコンテンツ管理システム600のモジュールの大部分は、上述のセクションで言及した部分を除き、図6を参照して説明した機能と同様の又は類似の機能を実行する。したがって、コンテンツ管理システム1000内の全てのモジュールの機能について、このセクションでは詳細には説明しない。
コンテンツ管理システム1000は、メタデータサーバ212、ブロックサーバ214、通知サーバ216、データストア218、ペンディングブロック・テーブル220、ネームスペース・テーブル222、ストレージ管理モジュール350、クライアント設定ファイル610、同期テーブ620、ユーザデータ630、リテンションスコア・テーブル1010、及びリテンションスコア・モジュール1020を含む。クライアント設定ファイル610及びユーザデータ630は、図6で説明したこれまでのバージョンに対して大幅な変更を有する。クライアント設定ファイル610は、各クライアントデバイスの共有コンテンツストレージ・ディレクトリごとにリテンションスコア閾値を含むように変更され、ユーザデータは、使用されているリテンションスコアリング方法に関連するユーザデータを含むように変更される。リテンションスコア・モジュール1020は、リテンションスコア・テーブル1010を生成するために、ユーザデータ630及びデータストア218からのデータを取り込む。リテンションスコア・テーブルは、コンテンツ管理システム1000によって管理される各コンテンツアイテムのリテンションスコアを列挙するテーブルである。リテンションスコアの計算に正規化が使用されている場合、クライアントデバイスごとに個別のリテンションスコア・テーブルが存在する。コンテンツアイテムのリテンションスコアが更新されるごとに、リテンションスコア・モジュール1020は、クライアント設定ファイル610及び同期テーブル620を閲覧して、最近変更されたリテンションスコアに対応するコンテンツアイテムが、任意のクライアントデバイス上にリモートにあるかどうかと、それらのクライアントデバイスのリテンションスコア閾値のいずれかを超えるかどうかとを判定する。リテンションスコア閾値を超える場合、リテンションスコア・モジュールは、必要なダウンロードとシャドウアイテムの表現の置き換えとをストレージ管理モジュール350が実行することを要求する。
図11は、制約付き同期の他の実施形態についてのクライアントアプリケーション1100のソフトウェアアーキテクチャを示す。本実施形態は、クライアントアプリケーションによってクライアントデバイスがアイドルであると判定される間に、リモートコンテンツアイテムのダウンロード、放置コンテンツアイテムの削除、及びシャドウファイルの作成の全てを行う。制約付き同期プロセスのタイミングのこの変更は、実効ストレージ容量の同様の増加を提供しながら、これまでに説明した実施形態に対して機能改善をもたらすことによって、クライアントデバイスを改善する。これらの機能を実効するため、アイドル状態トリガ型の実施形態は、図3に示されるシステムアーキテクチャを変更する。本実施形態では、クライアントアプリケーション1100は、コンテンツ同期モジュール310、リテンション状態モジュール1110、ファイルジャーナル360、常駐ファイルテーブル362、共有データ364、リモートファイルテーブル366、設定ファイル368、及びブロックキャッシュ370を含む。コンテンツ同期モジュール310は、ハッシュ化モジュール320、ダウンロードモジュール330、アップロードモジュール340、及びストレージ管理モジュール350を更に含む。リテンション状態モジュール1110は、状態計算モジュール1120、状態比較モジュール1130、アクションモジュール1140、及びシステムステータス・モジュール1150を更に含む。特に明記しない限り、これまでに言及した全てのモジュール及びデータテーブルは、新たなモジュールを収容することを当業者が認識するように、これまでに説明したわずかに変更されたものと同じ機能を有する。任意の主な変更について以下で説明する。
システムステータス・モジュール1150は、ストレージカーネル拡張382を使用して、オペレーティングシステム380上のシステムアクティビティを測定する。システムアクティビティは、プロセッサ周波数若しくは(複数のプロセッサコアの調整有り若しくは無しの)他のCPU利用メトリックの比としての非アイドルプロセッサ周期の数、スレッドの数、又はクライアントデバイス100のプロセスの数を含む、プロセッサのアクティビティについてのメトリックを使用して測定されうる。ビット毎秒又はパケット毎秒で定義される、特定のポート又はコネクションについての最大速度の比としての、ネットワーク利用を含む、ネットワークアクティビティ・メトリックも使用されうる。更には、利用可能な又は空のランダムアクセスメモリ(RAM)の量を含む、メモリ使用メトリックが、システムアクティビティの測定に使用されうる。システムステータス・モジュール1150は、全体のシステムアクティビティを測定するために、上述したアクティビティメトリック又は他の任意の適切なアクティビティメトリックを、個別に又は組み合わせて使用しうる。
システムアクティビティの測度が、予め定められたアクティビティ閾値を下回る場合、システムステータス・モジュール1150は、リテンションスコア・モジュール1110に、クライアントデバイスが現在アイドルであることを報告する。このアクティビティ閾値は、アクティビティメトリックによって定義されるような、クライアントデバイスの総計算リソースの割合として定義されてもよいし、あるいは、アクティビティ閾値は、アクティビティメトリックの特定の値として定義されてもよい。例えば、アクティビティ閾値は、利用可能な処理リソースの25%未満を使用するクライアントデバイス100の状態として定義されうる。あるいは、アクティビティ閾値は、クライアントデバイス100の他のプロセスが、2GB未満のメモリを全体で使用している状態として、又は、クライアントデバイス上で使用可能な、総メモリのうちの少なくとも4GBが存在する状態として定義されうる。
システムステータス・モジュール1150によって、クライアントデバイス100がアイドル状態と判定された場合、状態計算モジュール1120は、共有コンテンツストレージ・ディレクトリ120のリテンション状態を判定する。一般に、リテンション状態は、クライアントデバイスに常駐するコンテンツアイテムと、それらのコンテンツアイテムに対応する属性のセットとで構成される。これらの属性は、コンテンツアイテムのサイズ、最新のアクセス時刻、アクセス頻度、ディレクトリのロケーション、又は、クライアントデバイス上のリテンションに対するコンテンツアイテムの重要度を示しうる任意の他の適切な属性を含みうる。更に、リテンション状態は、上記に記載した属性の少なくとも1つを用いて計算された統計値のセットで表現されうる。
比較モジュール1130は、状態計算モジュール1120からリテンション状態を受信し、共有コンテンツストレージ・ディレクトリ120の現在のリテンション状態を、ユーザによって指定されうる、設定ファイル368において定義された予め定められた閾値リテンション状態と比較する。閾値リテンション状態は、リテンション状態に含まれるクライアントデバイスの属性又は計算された統計値に関連する基準のセットである。比較モジュール1130は、現在のリテンション状態が、閾値リテンション状態の基準を満たすかどうかを判定する。これらの基準に違反する(例えば、満たさない)場合、比較モジュール1130は、属性に対応する、又は当該属性に基づく計算された統計値に対応する、閾値リテンション状態基準に違反するコンテンツアイテムを、アクションモジュール1140に対して報告する。
アクションモジュール1140は、比較モジュール1130からの報告を受信する。その後、どのアクションが、リテンション状態を閾値リテンション状態基準内に戻すかを判定する。これらのアクションには、共有コンテンツストレージ・ディレクトリ120からコンテンツアイテムを削除すること、コンテンツアイテムをシャドウアイテムに置き換えること、又は、リモートコンテンツアイテムを示すシャドウアイテムを、コンテンツアイテム自体に置き換えることが含まれうる。これらのアクションが判定された時点で、アクションモジュール1140は、要求されたアクションをコンテンツ同期モジュール310が完了させることを要求する。
あるいは、アイドル状態トリガ型の制約付き同期は、コンテンツ管理システム自体によって実行されもよく、クライアントデバイス上の計算負荷を更に低減し、他の用途へのデバイスの利用可能性を増加させる。図12は、このタスクを完了させるシステム環境を示す。制約付きコンテンツ管理システム1200は、メタデータサーバ212、ブロックサーバ214、通知サーバ216、データストア218、ペンディングブロック・テーブル220、ネームスペース・テーブル222、ストレージ管理モジュール350、クライアント設定ファイル610、同期テーブ620、ユーザデータ630、リテンション状態テーブル1210、リテンション状態モジュール1220を含む。特に明記しない限り、これまでに言及した全てのモジュール及びデータテーブルは、新たなモジュールを収容することを当業者が認識するように、これまでに説明したわずかに変更されたものと同じ機能を有する。任意の主な変更について以下で説明する。
実施形態のこのバージョンにおいて、コンテンツ管理システム1200に接続されたクライアントデバイス上のクライアントアプリケーション200は、クライアントデバイスのステータスをコンテンツ管理システム1200へ報告する。クライアントデバイスがアイドルである場合、コンテンツ管理システム1200は、リテンション状態モジュール1220を使用して、アイドル状態のクライアントデバイス上の共有コンテンツストレージ・ディレクトリ120のリテンション状態を判定する。リテンション状態モジュールは、更に、コンテンツ管理システム1200に接続された全クライアントデバイスの現在のリテンション状態を含む、リテンション状態テーブル1210を更新する。リテンション状態モジュール1220は、更に、図11の説明に記載したような、潜在的に類似したサブモジュールを使用して、リテンション状態モジュール1110と同様のステップを実行する。
共有コンテンツストレージ・ディレクトリのリテンション状態は、種々の方法を使用して判定されうる。一般に、リテンション状態は、基準ベースであり、クライアントデバイスがアイドルであるとクライアントアプリケーションが判定するごとに定期的に保持される。しかし、リテンション状態及び閾値リテンション状態を、各状態が、クライアントデバイスに常駐するコンテンツアイテムの属性を用いて計算された統計値によって表されるように、数値的に実現することも可能である。リテンション状態が基準ベースである場合、閾値リテンション状態は、共有コンテンツストレージ・ディレクトリ内のコンテンツアイテムが満たさなければならない基準のセットである。更に、基準ベースのリテンション状態の場合、ユーザは、リテンション状態基準を選択するオプションを与えられてよく、それにより、クライアントデバイス100に常駐するコンテンツアイテムのカテゴリーのカスタマイズが可能になる。
各クライアントデバイス100をチェックするために使用される期間は、コンテンツ管理システムの予め定められた値であってもよいし、ユーザによって設定されてもよいし、特定のクライアントデバイスの使用パターンに基づいて定められてもよい。例えば、ユーザが、平均で24時間ごとに、クライアントデバイス100上のコンテンツアイテムにアクセスする場合、当該期間は、24時間が経過する前に共有コンテンツストレージ・ディレクトリが保持されるように設定されうる。
共有コンテンツディレクトリを定期的にチェックする代わりに、他の実施形態は、共有コンテンツディレクトリが、例えば、ハードウェアストレージ上限に近づいているといった緊急性を示す基準の第2のセットを満たした場合にのみ、共有コンテンツディレクトリを保持しうる。
ストレージ空間基準:可能性のある、基準の1つのセットは、ストレージ割り当て基準を有することである。例えば、ストレージ割り当ては20GBに設定されうるが、これまでの実施形態にように振る舞うのに代えて、コンテンツ管理システムは、デバイスがアイドルになるまで、共有コンテンツストレージ・ディレクトリに格納されたコンテンツアイテムが基準値(本例では20GB)を超えることを可能にする。その後、放置コンテンツアイテムを判定する同様のプロセスが、適切なコンテンツアイテムを削除して、共有コンテンツストレージ・ディレクトリに対するストレージ空間基準を満たすために使用されうる。
アクセス時刻基準:第2の基準は、アクセス時刻基準でありうる。例えば、当該基準は、過去の予め定められた時間間隔より以前の最新のアクセス時刻を有するコンテンツアイテムが、共有コンテンツストレージ・ディレクトリ内に常駐できないことを記述しうる。これらのコンテンツアイテムは、クライアントデバイス100がアイドルになるまで、共有コンテンツストレージ・ディレクトリ内に常駐し続けることが許されうる。その時点で、リテンション状態モジュールは、単純に、予め定められた時間間隔より以前の最新のアクセス時刻を有する全てのコンテンツアイテムの削除を要求しうる。
コンテンツアイテムサイズ基準:基準の他のセットは、コンテンツアイテムサイズ基準である。この方法では、個別のコンテンツアイテムのサイズに対する閾値が設定される。このため、クライアントデバイス100がアイドルになるたびに、閾値を上回る又は下回るいずれかのコンテンツアイテムが、クライアントデバイス100上の常駐から削除される。
アクセス頻度基準:最後に、アクセス頻度基準が、クライアントデバイス100に常駐し続けるために必要となる予め定められた時間間隔内のアクセスの最小回数を設定するために使用される。特定のコンテンツアイテムがあまり頻繁にアクセスされていない場合、当該コンテンツアイテムは、クライアントデバイスがアイドルになるたびに当該クライアントデバイスから削除される。
なお、リテンション基準のこのリストは包括的ではない。更に、これらの基準は、互いに併用されもよく、その結果、より複雑な規則が得られる。
図13は、アイドル状態トリガ型の制約付きコンテンツ管理の機能を示すフロー図である。まず、システムは、特定のクライアントデバイス100がアイドルであるかどうかを判定することをチェックする(1300)。このステップは、定期的に完了するか、又は、コンテンツストレージ・ディレクトリが予め定められた閾値に達したことに応じて完了する。デバイスがアイドルである場合、システムは、クライアントデバイスのリテンション状態を判定する(1310)。その後、システムは、共有コンテンツストレージ・ディレクトリの現在のリテンション状態を、共有コンテンツストレージ・ディレクトリに対するリテンション状態基準と比較する。共有コンテンツストレージ・ディレクトリの現在のリテンション状態が当該基準を満たす場合、システムは、クライアントデバイス100がアイドルであるかどうかを判定することのチェックを再び行う(1300)。リテンション状態基準に違反する場合、システムは、共有コンテンツストレージ・ディレクトリ120がリテンション状態基準を満たすために必要となる、共有コンテンツストレージ・ディレクトリ120に実行するためのアクションを識別する(1330)。その後、システムは、予め定められたリテンション状態基準に適合するために、それらのアクションを共有コンテンツストレージ・ディレクトリ120に実行する(1340)。
図14は、クライアントデバイス100上のシャドウアイテムに対応するコンテンツアイテムを選択的にダウンロードするように構成されたクライアントアプリケーション1400のソフトウェアアーキテクチャを示す。この実施形態では、クライアントデバイス上のアプリケーションが、共有コンテンツストレージ・ディレクトリ120内のシャドウアイテムへのアクセスを要求すると、クライアントアプリケーション1400は、シャドウアイテムに関連付けられたコンテンツアイテムをクライアントデバイスへダウンロードするかストリーミングするかを、複数の条件に基づいて判定する。これらの条件には、要求アプリケーションが、承認済みアプリケーションのリストにあるかどうか、ディレクトリ要求とコンテンツアイテム要求との間の時間が、人間の反応時間を近似する時間間隔内であるかどうか、アプリケーションの要求が、クライアントデバイス上のユーザインタフェースに関連付けられているかどうか、又は、ユーザが(クライアントアプリケーション1400によって提示されるポップアップメニューを用いて)コンテンツアイテムをダウンロードするための明示的な許可を与えたかどうか、が含まれうる。コンテンツアイテムのダウンロードは、条件を満たさない場合、又は代替的には、アクセスを提供するクライアントデバイスに対してコンテンツアイテムがストリーミングされうる場合、拒否されうる。コンテンツアイテムがクライアントデバイスへダウンロードされるケースを限定することによって、クライアントアプリケーション1400は、不要なダウンロードアクティビティをアプリケーションが生じさせることを防止し、それにより、プロセッサアクティビティ、ネットワークアクティビティ及び消費電力の削減に改善をもたらす。プロセッサアクティビティの削減は、より重要な他のタスクにプロセッサを利用できるようになり、消費電力を削減できるため有益であり、ネットワークアクティビティの削減は、帯域幅及びデータ消費の削減のために有益であり、これは、特に、過剰なデータ消費がネットワーク性能の低下とコスト及び料金の増加との両方につながるモバイルデバイスに対して有益であり、消費電力の低減は、バッテリー寿命を伸ばすため特にモバイルデバイスに対して有益である。例えば、写真ギャラリー・アプリケーションは、短期間に多数の写真ファイルを開くことを要求しうる。これらの写真の多くは、共有コンテンツストレージ・ディレクトリ上でシャドウアイテムとして示されることがあり、選択的なダウンロードなしで、クライアントアプリケーションが大量のデータのダウンロードを生じさせうる。これは、クライアントデバイスのネットワーク帯域幅及び/又は処理電力の大部分を必要とし、基準以下のユーザエクスペリエンスをもたらしうる。上記の状況で選択的ダウンロードが使用される場合、ユーザは、例えば、クライアントアプリケーション1400が、写真ギャラリー・アプリケーションによって要求された全ての写真をダウンロードすべきかどうかを尋ねるメッセージで促される。その後、ユーザは、不要な場合にダウンロードアクティビティを防ぐ機会を得られうる。代替の例において、クライアントアプリケーション200は、写真ギャラリー内の写真のプレビューを、それらのそれぞれをコンテンツ管理システム110からダウンロードする代わりにストリーミングでき、特定の写真の高解像度バージョンの閲覧を求める要求の受信に応じてだけフルダウンロードを実行しうる。これらは、以下で説明されるような選択的ダウンロードを用いて何が実現されうるのかの少数の例にすぎない。
選択的ダウンロードの実施形態は、図3に示されるシステムアーキテクチャへの追加である。本実施形態では、クライアントアプリケーション1400は、コンテンツ同期モジュール310、選択的ダウンロードモジュール1450、ファイルジャーナル360、常駐ファイルテーブル362、共有データ364、リモートファイルテーブル366、設定ファイル368、及びブロックキャッシュ370を含む。コンテンツ同期モジュール310は、ハッシュ化モジュール320、ダウンロードモジュール330、アップロードモジュール340、及びストレージ管理モジュール350を更に含む。選択的ダウンロードモジュール1450は、アプリケーション特権モジュール1410、ユーザ意図モジュール1420、コンテンツアイテムアクセスモジュール1430、及びストリーミングモジュール1440を更に含む。特に明記しない限り、これまでに言及した全てのモジュール及びデータテーブルは、新たなモジュールを収容することを当業者が認識するように、これまでに説明したわずかに変更されたものと同じ機能を有する。任意の主な変更について以下で説明する。
選択的ダウンロードモジュール1450は、不要なダウンロードを防ぐためにストレージ管理モジュール350と協調して動作する。ストレージ管理モジュール350が、共有コンテンツストレージ・ディレクトリ120内のアイテムにアクセスするアプリケーションからの要求の受信に応じて、ストレージ管理モジュール350は、要求されたアイテムがシャドウアイテムであるかコンテンツアイテムであるかを判定する。要求されたアイテムがシャドウアイテムであるとの判定に応じて、ストレージ管理モジュール350は、コンテンツアイテムがコンテンツ管理システム110からダウンロードされうるかどうかを選択的ダウンロードモジュール1450が判定できるように、アプリケーションパス及びシャドウアイテムパスを、選択的ダウンロードモジュール1450に提供する。
アプリケーション特権モジュール1410は、識別されたアプリケーションが、承認済みアプリケーションであり、かつ、この機能を実行する一手段であるかどうかを判定するために、受け取ったアプリケーションパスを、クライアントデバイスに対する承認済みアプリケーションのリストと照合する。承認済みアプリケーションのリストは、クライアントデバイスのローカルメモリ内又はコンテンツ管理システム110内に格納されうるとともに、分類されていないアプリケーションからの要求の受信に応じて生成されたユーザインタフェース・プロンプトを通じて、又はユーザ設定を通じて、ユーザが変更可能でありうる。いくつかの実施形態において、アプリケーションモジュール特権モジュール1410によって保持されるリストは、コンテンツ管理システム110の管理者によって前もって選択されうるとともに、ユーザによって更に変更可能でありうる。承認済みアプリケーションのリストに加えて、アプリケーションモジュール特権モジュール1410は、制約付きアプリケーション(即ち、コンテンツアイテムのダウンロードをトリガすることが許可されていないアプリケーション)のリスト、ストリーミングアプリケーション(即ち、要求されたアイテムがコンテンツ管理システム110からストリーミングされうるアプリケーション)のリスト、又は、部分アクセスアプリケーション(即ち、コンテンツアイテムの一部がダウンロードされうるアプリケーション)のリストを保持しうる。アプリケーションモジュール特権モジュール1410は、任意の数の上述のリスト又はリモートコンテンツアイテムへの異なるレベルのアクセスを有する追加のリストを有しうる。上述のリストのそれぞれは、設定ファイル368又は他の適切なロケーションに格納されうる。
アプリケーションモジュール特権アプリケーション1410は、以下のように、リストのそれぞれに対してアプリケーションモジュールパスをテストするアルゴリズムのためのプログラムロジックを含む。アプリケーション特権モジュール1410が受信したアプリケーションパスが、承認済みアプリケーションのリスト内のアプリケーションと一致した場合、アプリケーション特権リスト1410は、ストレージ管理モジュール350に、要求されたコンテンツアイテムがコンテンツ管理システム110からダウンロードされうることを通知する。受信したアプリケーションパスが、制約付きアプリケーションのリスト内のアプリケーションと一致した場合、ダウンロードが拒否されて、クライアントアプリケーション1400は、ポップアップメッセージ又は他の任意の適切な通知によって拒否をユーザに通知しうる。受信したアプリケーションパスが、ストリーミングアプリケーションのリスト内のアプリケーションと一致した場合、アプリケーションモジュール特権モジュール1410は、ストリーミングストリーミングモジュール1440に、コンテンツ管理システム110とのストリーミングの開始を通知しうる。いくつかの実施形態において、ストリーミングモジュール1440への通知前に、アプリケーションモジュール特権モジュールは、最初に、コンテンツアイテムがクライアントデバイスへストリーミングされるべきかダウンロードされるべきかを判定するコンテンツアイテムアクセスモジュール1430に通知を行いうる。
受信したアプリケーションパスが、部分アプリケーションのリスト内のアプリケーションと一致した場合、アプリケーションモジュール特権モジュール1410は、コンテンツ管理モジュール350に、要求されたコンテンツアイテムの部分ダウンロードの実行を許可しうる。部分ダウンロードの場合、ストレージ管理モジュール350は、コンテンツアイテムの要求された部分を含むブロックをダウンロード、又はブロックサイズより小さい部分をダウンロードしうる。ブロックキャッシュ370は、混合バージョンを有する複合アイテムの作成を防ぐために、部分ブロック又は単一ブロックを常駐ブロックリスト内にブロックとして含ませない場合がある。
いくつかの実施形態において、アプリケーションモジュール特権モジュール1410は、ダウンロード特権を有するアプリケーションについての個別のリストと、ストリーミング特権を有するアプリケーションについてのリストとを有していない。その代わりに、承認済みアプリケーションについての単一のリストが存在し、コンテンツアイテムアクセスモジュール1430は、コンテンツアイテムをダウンロードするのが好ましいかコンテンツアイテムをストリーミングするのが好ましいかを判定する。
要求アプリケーションが、アプリケーションモジュール特権モジュール1410によって保持されているリストのうちの1つに含まれていない場合、選択的ダウンロードモジュール1450は、ユーザ意図モジュール1420を利用することによってユーザの意図(即ち、ユーザがアプリケーションにアクセスしようとしているかどうか、又は、自動化された若しくは予備の機能の一部としてアプリケーションが要求を実行中であるかどうか)を判定することを試みうる。
他の実施形態では、要求アプリケーションが、上述のリストのうちの1つにおいて分類されていない又は見つからなければ、アプリケーション特権モジュール1410は、分類オプションを有するユーザインタフェース・ウィンドウを表示することによって、当該アプリケーションを分類する機会をユーザに提供しうる。
ユーザ意図モジュール1420は、シャドウアイテムを要求することをユーザが要求アプリケーションに対して意図していたかどうかを判定するテストを行い、この機能を実行する一手段である。ユーザの意図についての最終的な判定は、ユーザ意図モジュール1420によって使用されたテストの全てについての肯定的な結果に基づいてもよいし、テストの結果に基づく重み付け平均若しくは他の計算値に基づいてもよい。一実施形態において、ユーザ意図モジュール1420は、ユーザの意図を判定するために個別に又はまとめて使用されうる複数のテストを含むアルゴリズムのためのプログラムロジックを含む。
反応時間:ユーザ意図モジュール1420は、要求アプリケーションからのディレクトリオープン要求とファイルオープン要求との時間差を測定することによって、ユーザの意図を判定しうる。この時間は、ストレージカーネル拡張384がファイルシステム382をモニタリングすることで測定されて、ユーザ意図モジュール1420へ伝えられうる。ディレクトリオープン要求とファイルオープン要求との間の測定された時間差の受信に応じて、ユーザ意図モジュール1420は、測定された当該時間差を、人間の平均反応時間を近似する時間間隔(例えば、250ミリ秒から1秒)と比較しうる。当該時間差が人間の平均反応時間より少なければ、ユーザは、要求を行うことを意図していない可能性があり、その場合、シャドウアイテムをダウンロードしないのが適切である。
関連UIウィンドウ:ユーザ意図モジュール1420は、アプリケーションの現在のプロセスを、クライアントデバイス100上で開かれている現在のウィンドウを有するかどうかを判定するために調べうる。現在のウィンドウが存在する場合、それは、コンテンツアイテムにアクセスしようとするアプリケーションの試みをユーザが認識している可能性があることを示唆する。アプリケーションの現在のプロセスに関連するウィンドウが存在しない場合には、アプリケーションの要求をユーザが認識している可能性は低い。ストレージカーネル拡張384は、アプリケーションのプロセスをモニタリングして、関連するウィンドウを判定しうる。
アプリケーションパス:ユーザ意図モジュール1420は、クライアントデバイスのファイルシステム382におけるアプリケーションのロケーションを判定することで、当該アプリケーションがユーザに面するアプリケーションである可能性を推定しうる。例えば、アプリケーションが、隠しフォルダ又はディレクトリとは対照的に「アプリケーション」フォルダ内に位置している場合、当該アプリケーションがユーザに面しており、かつ、それ故に、ユーザの指示の下で動作している可能性が高い。
ユーザアクティビティ:ユーザ意図モジュール1420は、マウスの移動量、ユーザの1分当たりのアクション(キーストローク、タッチスクリーンへのタッチ等)、又は、クライアントデバイス上でユーザがアクティブであるとの他の任意のインジケータといった、ユーザアクティビティをモニタリングしうる。アプリケーションの要求が生じた際にユーザがアクティブである場合、ユーザが、当該アプリケーションの要求を知っている可能性が高い。ユーザアクティビティは、アクティビティ状態を取得するためにオペレーティングシステム・プログラミングインタフェースを呼び出すことによってモニタリングされうる。
ユーザ意図の明示的インジケーション:ユーザ意図モジュール1420は、アプリケーション又はプロセスからの要求の受信に応じて、ダウンロードを承認するかどうかをユーザが指示することを可能にするための、ユーザへのメッセージを表示しうる。ユーザがyes若しくはnoの質問で問い合わせられうるか、又は、ユーザが要求アプリケーションを、アプリケーション特権モジュール1410によって保持されるリストの1つに分類するためのオプションを、ユーザ意図モジュール1420が提示しうる。
ユーザの意図を判定する上述の方法の一部又は全てを用いることで、ユーザ意図モジュール1420は、ストレージ管理モジュール350に、要求アプリケーションの要求に対して許可するかどうかを通知する。代替的には、ユーザ意図モジュールは、コンテンツアイテムアクセスモジュール1430に、コンテンツアイテムの要求が許可されるべきであることを通知してもよい。
いくつかの実施形態において、コンテンツアイテムアクセスモジュール1430は、要求されたコンテンツアイテムが、アプリケーション特権モジュール1410又はユーザ意図モジュール1420によって許可されている、コンテンツアイテムへのアクセスを与えられたクライアントデバイス100へダウンロードされるのが適切かストリーミングされるのが適切かを判定する。コンテンツアイテムアクセスモジュール1430は、コンテンツアイテム及び要求アプリケーションの属性と現在のネットワークメトリックとを、クライアントデバイスに対してコンテンツアイテムをストリーミングするのが最適であるかダウンロードするのが最適であるかを判定するために使用する。いくつかの実施形態において、コンテンツアイテムアクセスモジュール1430は、標準的なユーザエクスペリエンスに対して目立った妨げが最も少なくて済むオプションを選択するように構成される。例えば、合理的な時間内にダウンロードするにはファイルが大きすぎる場合、コンテンツアイテムアクセスモジュール1430は、コンテンツアイテムのストリーミングを行うのが有効であると判定しうる。コンテンツアイテムアクセスモジュール1430は、基準のセットを使用して、ダウンロードのオプションとストリーミングのオプションとのいずれかの適合性を判定することによって、これを実現する。いくつかの実施形態において、コンテンツアイテムアクセスモジュール1430は、コンテンツアイテムのダウンロードに要する時間を計算し、それを、ストリーミングセッションを開始する時間と比較してもよい。コンテンツアイテムアクセスモジュール1430は、コンテンツアイテムの最大ダウンロードサイズ、コンテンツアイテムの最小ストリーミングサイズ、ストリーミングの最小ネットワーク帯域幅、ストリーミングの最大ネットワーク待ち時間、又は他の任意の適切な基準についての基準を有してもよい。
いくつかの実施形態において、コンテンツアイテムアクセスモジュール1430は、要求を行ったアプリケーションのタイプに基づいて、ダウンロードのオプションを使用するかストリーミングのオプションを使用するかを判定しうる。例えば、ワードプロセッシング・アプリケーションは、ストリーミングするには非効率でありうるので、そのタイプのアプリケーションに対してはダウンロードが有利でありうる。他の例として、ビデオアプリケーションは、より大きなファイルを要求する傾向がありうるので、ストリーミングが有利でありうる。同様に、コンテンツアイテムアクセスモジュール1430は、コンテンツアイテムのタイプを、決定における追加の要因として使用しうる。例えば、特定のファイル拡張子を有するコンテンツアイテムは、ストリーミングがより有利であるか、又はダウンロードがより有利でありうる。
コンテンツアイテムアクセスモジュール1430が、要求されたコンテンツアイテムがクライアントデバイスへストリーミングされるべきであると判定した場合、コンテンツアイテムアクセスモジュール1430は、ストリーミングモジュール1440に、当該コンテンツアイテムが格納されたコンテンツ管理システム110とクライアントデバイスとの間でのストリーミングを開始するよう通知する。コンテンツアイテムアクセスモジュール1430が、コンテンツアイテムがダウンロードされるべきであると判定した場合、コンテンツアイテムアクセスモジュール1430は、ストレージ管理モジュール350に、コンテンツ管理システム110とのダウンロードをセットアップするよう通知する。
ストリーミングモジュール1440は、コンテンツ管理システム110とクライアントデバイス100との間でストリームを始める役割を有する。コンテンツアイテムのストリーミングのためにメモリマッピングが使用されうる。メモリマッピングが使用された場合、コンテンツアイテムは、仮想メモリに直接ダウンロードされうる。仮想メモリにおけるコンテンツアイテムの受信に応じて、ストリーミングモジュール1440は、仮想メモリに一時的に格納されたコンテンツアイテムのコピーを、コンテンツ管理システム110と定期的に同期させうる。
図15は、いくつかの実施形態に係る、対応するシャドウアイテムが要求された場合にダウンロードのためにコンテンツアイテムを承認するためのアルゴリズムの例を示すフロー図である。上述のモジュールが、図15に示される機能と異なる機能を実行するために使用されうることを当業者は理解しよう。
アプリケーションからのシャドウアイテム1500を開くことを求める要求の受信に応じて(1500)、アプリケーション特権モジュール1410は、要求アプリケーションが、保持されているアプリケーションのリストのうちの1つにおいて分類されているかどうかを判定する。要求アプリケーションが、承認済みアプリケーションのリストにある場合、コンテンツアイテムは、コンテンツ管理システム110からダウンロードされる(1506)。要求アプリケーションが、ストリーミングアプリケーションのリストにある場合、コンテンツアイテムは、クライアントデバイス100へストリーミングされる(1508)。アプリケーションが、制約付きアプリケーションのリストに含まれる場合、コンテンツアイテムを開くことを求める要求は拒否される(1504)。
要求アプリケーションが分類されていない場合、アプリケーション特権モジュールは、ユーザ意図モジュール1420に通知する。ユーザ意図モジュール1420は、上述のように、コンテンツアイテムを要求することをユーザが意図していたかどうかを確認するために種々のテストを使用する(1510)。ユーザ意図モジュール1420が、コンテンツアイテムを要求することをユーザが意図していなかったと判定した場合、当該要求は拒否される(1504)。ユーザ意図モジュール1420が、コンテンツアイテムを要求することをユーザが意図していた場合、ユーザ意図モジュールは、コンテンツアイテムアクセスモジュール1430に通知する。
コンテンツアイテムアクセスモジュール1430は、コンテンツアイテムの属性、アプリケーション、及び現在のネットワークメトリックに基づいて、コンテンツアイテムがダウンロードされるべきかストリーミングされるべきかを判定する(1512)。コンテンツアイテムアクセスモジュール1430が、要求されたコンテンツアイテムがダウンロードされるべきであると判定した場合、当該コンテンツアイテムがダウンロードされる(1506)。コンテンツアイテムアクセスモジュールが、当該コンテンツアイテムがストリーミングされるべきであると判定した場合、当該コンテンツアイテムがクライアントデバイスへストリーミングされる(1506)。
本発明の実施形態についての上述の説明は、例示を目的として提示されており、網羅的であること又は開示した形態そのもの本発明を限定することは意図されていない。関連技術の技術者は、上記の開示を踏まえて多くの変更及び変形が可能であることを理解できる。
明細書で使用された用語は、可読性及び教授を目的として主に選択されており、発明の主題を描写又は制限するためには選択されていない場合がある。したがって、本発明の範囲は、この詳細な説明によってではなく出願に基づいて当該出願に出てくるいずれかの請求項によって限定されることが意図されている。このため、本発明の実施形態の開示は、以下の請求項に記述された発明の範囲についての限定ではなく例示を目的としている。