(57)【要約】【課題】ファイルのバリアントを有するファイルシステムを提供する。【解決手段】対応するファイルシステム内のファイルに少なくとも部分的に基づきファイルバリアントを作成する。ファイルバリアントはファイルの識別子へのリファレンス、および少なくとも１つのデータストア内に格納された２次データオブジェクトへのリファレンスを含む。ユーザの対応する１人からファイルをアクセスする要求を受け取り、アクセスする要求がモバイル計算装置によるアクセスに関するとき、ファイルバリアントにより参照された２次データオブジェクトをモバイル計算装置へ送信する。アクセスする要求が他の計算装置によるアクセスに関するとき、ファイルにより参照された１次データオブジェクトを他の計算装置へ送信する。【選択図】図１
2015212961.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの計算装置内で実行可能なプログラムを記録する非一過性のコンピュータ可読な媒体であって、前記プログラムが、
複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも１つのフォルダを有し、それぞれの前記ファイルは識別子および少なくとも１つのデータストア内に格納された１次データオブジェクトへのリファレンスを有するコードと、
前記ファイルシステムのうちの１つに関連する前記ユーザの対応する１人から、前記ファイルシステムのうちの前記１つ内にファイルを格納する要求を受け取るコードと、
前記要求に応え、前記ファイルシステムのうちの前記１つの中の前記ファイルに対応するファイルを作成し、少なくとも１つのデータストア内に前記ファイルに対応する１次データオブジェクトを格納するコードと、
前記ユーザの前記対応する１人に関連するモバイル計算装置上に提示するため、前記ファイルをカスタマイズされた２次データオブジェクトに符号化し、前記２次データオブジェクトを少なくとも１つのデータストア内に格納するコードと、
前記対応するファイルシステム内の前記ファイルに少なくとも部分的に基づきファイルバリアントを作成し、前記ファイルバリアントは前記ファイルの前記識別子へのリファレンス、および前記少なくとも１つのデータストア内に格納された前記２次データオブジェクトへのリファレンスを含むコードと、
前記ユーザの前記対応する１人から前記ファイルをアクセスする要求を受け取るコードと、
前記アクセスする要求が前記モバイル計算装置によるアクセスに関するとき、前記ファイルバリアントにより参照された前記２次データオブジェクトを前記モバイル計算装置へ送信するコードと、
前記アクセスする要求が他の計算装置によるアクセスに関するとき、前記ファイルにより参照された前記１次データオブジェクトを前記他の計算装置へ送信するコードと、
を備える、前記非一過性のコンピュータ可読な媒体。
【請求項２】
前記ファイルはオーディオファイルに対応し、前記１次データオブジェクトは前記オーディオファイルの第１ビットレートで符号化されたバージョンであり、前記２次データオブジェクトは、前記オーディオファイルの第２ビットレートで符号化されたバージョンであり、前記第１ビットレートは前記第２ビットレートより高い、請求項１に記載の前記非一過性のコンピュータ可読な媒体。
【請求項３】
前記ファイルはイメージファイルに対応し、前記１次データオブジェクトは前記イメージファイルの第１解像度で符号化されたバージョンであり、前記２次データオブジェクトは、前記イメージファイルの第２解像度で符号化されたバージョンであり、前記第１解像度は前記第２解像度より高い、請求項１に記載の前記非一過性のコンピュータ可読な媒体。
【請求項４】
少なくとも１つの計算装置内で複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも１つのフォルダを有し、それぞれの前記ファイルは識別子および少なくとも１つのデータストア内に格納された１次データオブジェクトへのリファレンスを有するステップと、
前記少なくとも１つの計算装置内で前記ファイルのうちの１つのバリアントを生成し、前記バリアントは前記ファイルのうちの１つの前記識別子、および前記ファイルのうちの前記１つに参照される前記１次データオブジェクトに関する２次データオブジェクトへのリファレンスを有し、前記２次データオブジェクトは少なくとも１つのデータストア内に格納されるステップと、
前記ファイルのうちの前記１つに関する要求に応え、前記少なくとも１つの計算装置内で前記１次データオブジェクトの代わりに前記２次データオブジェクトを送信するステップと、を含む、
方法。
【請求項５】
前記２次データオブジェクトが、前記１次データオブジェクトの少なくとも部分から得られる、
請求項４に記載の方法。
【請求項６】
前記要求が、前記ファイルのうちの前記１つをネットワークを通してモバイル計算装置へストリームする要求に対応し、前記バリアントが前記モバイル計算装置へのストリーミングのため減少されたデータである、請求項４に記載の方法。
【請求項７】
前記少なくとも１つの計算装置内で、クライアントから前記ファイルのうちの前記１つに関する前記要求を受け取り、前記ファイルのうちの前記１つに関する前記要求に応え、前記２次データオブジェクトがそれへ送信されるステップをさらに含む、請求項４に記載の方法。
【請求項８】
前記クライアントは一のタイプのクライアントに対応し、前記バリアントは前記一のタイプのクライアントに関してカスタマイズされる、請求項７に記載の方法。
【請求項９】
前記ファイルシステムのそれぞれが前記ファイルのうちの前記１つに関する少なくとも１つの他のバリアントを含み、前記少なくとも１つの他のバリアントが少なくとも１つの他のタイプのクライアントに関してカスタマイズされる、請求項８に記載の方法。
【請求項１０】
前記生成するステップが、前記ファイルのうちの前記１つに関する前記要求が受け取られる前に自動的に実行される、請求項７に記載の方法。
【請求項１１】
前記生成するステップが、前記ファイルのうちの前記１つに関する要求が受け取られることに応えて実行される、請求項７に記載の方法。
【請求項１２】
前記少なくとも１つの計算装置内で前記クライアントのタイプを判断するステップと、
前記少なくとも１つの計算装置内で、前記ファイルのうちの前記１つおよび前記クライアントのタイプに関する前記バリアントが存在するかどうか判断するステップと、をさらに含み、
前記生成するステップが、前記ファイルのうちの前記１つおよび前記クライアントのタイプに関する前記バリアントが存在しないという判断に応えて実行される、
請求項７に記載の方法。
【請求項１３】
前記ファイルシステムのそれぞれがユーザのうち対応する一人に関連付けられている請求項４に記載の方法。
【請求項１４】
少なくとも１つの計算装置と、
複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも１つのフォルダを有し、それぞれの前記ファイルは識別子および少なくとも１つのデータストア内に格納されたデータオブジェクトへのリファレンスを有する、前記少なくとも１つの計算装置内で実行可能なファイルサービスと、
複数のファイルバリアントを保持し、それぞれの前記ファイルバリアントは前記ファイルのうちのそれぞれ１つの前記識別子を有し、それぞれの前記ファイルバリアントは、前記ファイルのうちの前記それぞれ１つに参照される前記それぞれの１次データオブジェクトに関する少なくとも１つのデータストア内に格納された２次データオブジェクトへのリファレンスをさらに有する、前記少なくとも１つの計算装置内で実行可能なバリアントサービスを備える、
システム。
【請求項１５】
前記バリアントサービスが、
クライアントのタイプを前記ユーザのうちの１人に関連付けるロジックと、
前記ユーザのうちの前記１人に関連する前記クライアントのタイプに応えて少なくとも１つの前記ファイルバリアントを生成し、前記少なくとも１つの前記ファイルバリアントは前記クライアントのタイプに関してカスタマイズされるロジックと、をさらに備える、
請求項１４に記載のシステム。
【請求項１６】
前記バリアントサービスが、
前記クライアントのタイプが前記ユーザのうちの前記１人に関連し続けているかどうか判断するロジックと、
クライアントのタイプが前記ユーザのうちの前記１人に関連し続けていないという判断に応え、前記少なくとも１つの前記ファイルバリアントの削除を開始するロジックと、
をさらに備える、
請求項１５に記載のシステム。
【請求項１７】
前記バリアントサービスが、
少なくとも１つの前記ファイルに関する要求に関連するクライアントのタイプを判断するロジックと、
前記要求に応えて少なくとも１つの前記ファイルバリアントを生成し、前記少なくとも１つのファイルバリアントは前記クライアントのタイプに関してカスタマイズされるロジックと、
をさらに備える、
請求項１４に記載のシステム。
【請求項１８】
少なくとも１つの前記ファイルバリアントが、前記ファイルのうちの前記それぞれ１つの前記識別子の代わりに、前記ファイルバリアントのうちの１つの一意の識別子を有する、請求項１４に記載のシステム。
【請求項１９】
前記バリアントサービスが、前記１次データオブジェクトのうちの対応する１つをエンコーダで符号化することにより、前記２次データオブジェクトのうちの１つを生成するロジックをさらに備える、請求項１４に記載のシステム。
【請求項２０】
前記エンコーダがオーディオコーデックを有する、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ファイルのバリアント（変形版）を有するファイルシステムに関する。
【背景技術】
【０００２】
異なる計算装置のネットワーク接続は、異なる性能を有しうる。例えば、家庭のラップトップ機またはワークステーションのネットワーク接続は、信頼性が高い高速接続であるかもしれない。対照的に、スマートフォンのネットワーク接続は比較的低速の接続で、パケット損失の確率が比較的高い。また、異なる計算装置は異なる物理特性を有しうる。例えば、家庭のワークステーションは大きなディスプレイを有し、ラップトップ機は相対的により小さいディスプレイを有し、スマートフォンはハンドヘルドディスプレイを有しうる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ファイルのバリアントを有するファイルシステムを提供する。
【課題を解決するための手段】
【０００４】
本開示の一態様は、少なくとも１つの計算装置内で実行可能なプログラムを記録する非一過性のコンピュータ可読な媒体であって、前記プログラムが、複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも１つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも１つのデータストア内に格納された１次データオブジェクトへのそれぞれのリファレンスを有するコードと、前記ファイルシステムのうちの１つに関連する前記ユーザの対応する１人から、前記ファイルシステムのうちの前記１つ内にファイルを格納する要求を受け取るコードと、前記要求に応え、前記ファイルシステムのうちの前記１つの中の前記ファイルに対応するファイルを作成し、少なくとも１つのデータストア内に前記ファイルに対応する１次データオブジェクトを格納するコードと、前記ユーザの前記対応する１人に関連するモバイル計算装置上に提示するため、前記ファイルをカスタマイズされた２次データオブジェクトに符号化し、前記２次データオブジェクトを前記少なくとも１つのデータストア内に格納するコードと、前記対応するファイルシステム内の前記ファイルに少なくとも部分的に基きファイルバリアントを作成し、前記ファイルバリアントは前記ファイルの前記一意の識別子へのリファレンス、および前記少なくとも１つのデータストア内に格納された前記２次データオブジェクトへのリファレンスを含むコードと、  前記ユーザの前記対応する１人から前記ファイルをアクセスする要求を受け取るコードと、  前記アクセスする要求が前記モバイル計算装置によるアクセスに関するとき、前記ファイルバリアントにより参照された前記２次データオブジェクトを前記モバイル計算装置へ送信するコードと、前記アクセスする要求が他の計算装置によるアクセスに関するとき、前記ファイルにより参照された前記１次データオブジェクトを前記他の計算装置へ送信するコードと、を備える。
【発明の効果】
【０００５】
ファイルシステムがファイルのバリアントを有することができる。
【図面の簡単な説明】
【０００６】
【図１】本開示の種々の実施形態によるネットワーク化された環境の図である。
【図２】本開示の種々の実施形態による、図１のネットワーク化された環境内の計算装置で実行されるファイルサービスの部分として機能的に実行される例を示すフローチャートである。
【図３】本開示の種々の実施形態による、図１のネットワーク化された環境内の計算装置で実行されるファイルサービスの部分として機能的に実行される例を示すフローチャートである。
【図４】本開示の種々の実施形態による、図１のネットワーク化された環境内の計算装置で実行されるファイルサービスの部分として機能的に実行される例を示すフローチャートである。
【図５】本開示の種々の実施形態による、図１のネットワーク化された環境内の計算装置で実行されるデータ記憶サービスの部分として機能的に実行される１つの例を示すフローチャートである。
【図６】本開示の種々の実施形態による、図１のネットワーク化された環境内の計算装置で実行されるバリアントサービスの部分として機能的に実行される１つの例を示すフローチャートである。
【図７】本開示の種々の実施形態による、図１のネットワーク化された環境内で採用される計算装置の１つの例を提供する概略ブロック図である。
【発明を実施するための形態】
【０００７】
本開示の多くの態様は、後述の図を参照してよりよく理解できる。図内の構成要素は必ずしも縮尺通りではなく、本開示の原理を説明するに際し代わりに強調している。また図内で、同一の参照番号はいくつかの図を通して対応する部分を指す。
【０００８】
本開示は、ファイルのバリアント（変形版）を有するファイルシステムの提供に関する。計算装置のネットワーク接続のユビキタス可用性とともに、ユーザは彼らのデータファイルのユビキタス可用性の向上を追求している。例えば、ユーザはスマートフォンから、オフィスワークステーションから、家庭のラップトップ機から、および／または他の計算装置からオーディオファイルを聞きたいと思うかもしれない。しかしユーザは、持ち運び可能な記憶装置を持ち歩き、それらを計算装置に接続しなければならないことに不便を感じるかもしれない。また、複数の計算装置から持ち運び可能な記憶装置に格納されたファイルにアクセスするのは困難かもしれない。
【０００９】
本開示の種々の実施形態は、ユーティリティ計算モデルによるデータファイルおよびファイルのバリアントのリモート記憶に関する。ネットワーク化された複数の計算装置を含むクラウド計算リソース内に格納されたファイルへのアクセスを提供するために、ファイルシステムを採用してもよい。いくつかの実施形態では、ファイルシステムは、ファイルの実際のデータオブジェクトが分離したデータ記憶システム内に格納される、仮想ファイルシステムに対応してもよい。
【００１０】
ファイルのバリアントは、他のファイルに関連するまたは他のファイルから得られるまたは他のファイルから生成されるファイルのバージョンに対応してもよい。そのようなバリアントは、顧客の特定のクライアント計算装置にカスタマイズしてもよい。種々の実施形態で、例えば顧客がファイルを要求するのに特定のタイプのクライアント計算装置を使用するとき、オリジナルの代わりにファイルバリアントを顧客に送信してもよいように、バリアントは顧客に透明な形で存在してもよい。いくつかの実施形態では、バリアントに対応するデータがデータの持続性を減少させたデータストア内に格納されるように、バリアントのコンテキスト認識持続性を採用してもよい。後述の説明で、システムおよびその構成要素の概略を記載し、その動作を記載する。
【００１１】
図１を参照すると、種々の実施形態によるネットワーク化された環境１００が示される。ネットワーク化された環境１００は、ネットワーク１１２経由で１つまたは複数の計算装置１０６および１つまたは複数のクライアント１０９とデータ通信を行う１つまたは複数の計算装置１０３を有する。ネットワーク１１２は、例えば、インターネット、イントラネット、エクストラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、有線ネットワーク、無線ネットワーク、または他の適切なネットワークなど、または２つ以上のそのようなネットワークのあらゆる組み合わせを含む。
【００１２】
計算装置１０３は、例えば、計算機能を提供するサーバコンピュータまたはあらゆる他のシステムを有してもよい。代わりに、例えば１つまたは複数のサーババンクまたはコンピュータバンクまたは他の装置内に配置された複数の計算装置１０３を採用してもよい。例えば、複数の計算装置１０３は、クラウド計算リソース、グリッド計算リソースおよび／またはあらゆる他の分散計算装置を共有してもよい。そのような計算装置１０３を単一の設置先に設置してもよく、または多地点の異なる地理的位置にまたがって分散してもよい。便宜上、本明細書では計算装置１０３を単数形で記述する。本明細書の計算装置１０３を単数形で記述するが、前述のように種々の装置内の複数の計算装置１０３を採用してもよいことが理解される。
【００１３】
種々の実施形態による計算装置１０３内で、種々のアプリケーションおよび／または他の機能を実行してもよい。また、計算装置１０３にアクセス可能なデータストア１１５内に、種々のデータが格納される。データストア１１５は、理解できるように、複数のデータストア１１５を代表したものでありうる。データストア１１５内に格納されたデータは、例えば、後述する種々のアプリケーションおよび／または機能エンティティの動作に関連する。
【００１４】
計算装置１０３上で実行される構成要素は、例えば、ファイルサービス１１８、バリアントサービス１２１、１つまたは複数のバリアントエンコーダ１２２、１つまたは複数のアプリケーション１２４、および他のアプリケーション、サービス、プロセス、システム、エンジン、または本明細書で詳細に述べない機能を含む。ファイルサービス１１８は、ベースとなるユーザに関するファイルシステムに基きファイルおよびフォルダのファイル階層を保持するよう実行される。この目的を達成するために、ファイルサービス１１８は、例えばファイルの作成、ファイルの削除、ファイルの更新、ファイルのパーミッション設定、ファイルのダウンロード、および／または他の操作のような種々のファイルに関する操作を補助してもよい。
【００１５】
バリアントサービス１２１は、ファイルシステム内のファイルのバリアントを作成および保持するよう実行される。この目的を達成するために、バリアントサービス１２１を、例えば特定のタイプのクライアント、特定のアプリケーション１２４、および／または他のコンテキストに関してファイルバリアントが生成される状況を検出するよう構成してもよい。バリアントサービス１２１を、バリアントを生成するため１つまたは複数のバリアントエンコーダ１２２と関連して実行してもよい。バリアントエンコーダ１２２は、例えばオーディオコーデック、ビデオコーデック、イメージサイズ変更アプリケーション、データ圧縮アプリケーション、データ変換アプリケーション、データインポートアプリケーション、および／または他のデータのエンコーダに対応してもよい。バリアントサービス１２１を、周期的に不要なバリアントを削除するよう構成してもよい。
【００１６】
アプリケーション１２４は、ファイルシステム内に格納されたデータにアクセスしうるホストアプリケーションに対応する。種々のアプリケーション１２４は、例えばｗｅｂベースインタフェースを有してもよく、ｗｅｂページまたは他の形態のネットワークコンテンツのようなネットワークページを出力し、ユーザの相互作用を容易にしてもよい。他のアプリケーション１２４は、内部のアプリケーションであるかもしれないし、ｗｅｂベースインタフェースでないかもしれない。非限定のアプリケーション１２４の例は、写真編成ツール、音楽ファイルオーガナイザおよび再生ツール、ワードプロセッサ、スプレッドシート、電子メールアプリケーションなどを有してもよい。
【００１７】
データストア１１５内に格納されたデータは、例えば、ファイルシステム１３０、ファイル１３３、フォルダ１３６、ファイルバリアント１３７、クライアント情報１３８、および可能性がある他のデータを含む。ファイルシステム１３０は、１人または複数のユーザのために計算装置１０３内に保持される論理ファイル階層に対応する。種々の実施形態で、ファイルシステム１３０内で実現される論理ファイル階層は、ディスクドライブ、持ち運び可能な記憶媒体などのようないずれの特定の物理記憶装置に直接対応しない抽象概念である。各アカウントレベルのユーザは自身のファイルシステム１３０を有してもよく、ファイルシステム１３０は複数アカウントレベルのユーザに共有されてもよい。
【００１８】
それぞれのファイルシステム１３０を、アカウントデータ１３１、１つまたは複数のクライアントアソシエーション１３２、および／または他のファイルシステムメタデータに関連付けてもよい。アカウントデータ１３１は、計算装置１０３の権限を与えられたユーザに関する種々のデータを含む。そのようなアカウントデータ１３１は、例えばユーザ名、パスワード、セキュリティ証明、ファイル管理パーミッション、記憶割り当ておよび制限、権限を与えられたアプリケーション、課金情報、および／または他のデータを含んでもよい。クライアントアソシエーション１３２は、ファイルシステム１３０に関連する種々のクライアントを記述する。クライアントは例えばクライアント１０９のようなクライアント計算装置に対応してもよく、アプリケーション１２４のようなアプリケーション／サービスに対応してもよい。非限定の例として、ユーザはファイルシステム１３０にアクセスするため、タブレット計算装置、デスクトップワークステーション、およびスマートフォンを使用してもよい。クライアントアソシエーション１３２はまた、ブラウザアプリケーションのタイプ、プラグインの存在、電子メールアプリケーションなどのようなクライアント１０９の種々の機能を記述してもよい。従って、クライアントアソシエーション１３２は、バリアントサービス１２１および／または他のアプリケーションがそれぞれのファイルシステム１３０に関連するクライアントのタイプを判断するのを許可してもよい。クライアントアソシエーション１３２を自動的に検出してもよく、および／または手動で構成してもよい。
【００１９】
それぞれのファイルシステム１３０は、１つまたは複数のファイル１３３および１つまたは複数のフォルダ１３６を有してもよい。ファイル１３３は、ファイル名１４２、一意の識別子１４５、データオブジェクトリファレンス１４８、親オブジェクトリファレンス１５１、１つまたは複数のパーミッション、ファイル作成日、ファイル更新日、および／または他のデータを有してもよい。ファイル名１４２は、ファイル１３３の内容を識別する人間が可読な文字列に対応してもよい。いくつかの実施形態では、ファイル名１４２を文字長で制限してもよく、可能な文字に関して制限してもよい。一部のケースでは、そのような制限が互換性の理由から強いられるかもしれない。また種々の実施形態で、ファイル名１４２を、フォルダ１３６に対しておよび／またはファイルシステム１３０に対して一意であるよう制限してもよい。
【００２０】
一意の識別子１４５は、数字、文字列、またはファイルシステム１３０および／またはファイルシステム１３０の全てにわたってファイル１３３を一意的に識別する他の識別子に対応する。１つの実施形態では、ファイルシステム１３０の識別子で結びつけられたファイル１３３の一意の識別子１４５は、ファイルシステム１３０の全てにわたって一意の識別子に対応してもよい。他の実施形態で、ファイル１３３の一意の識別子１４５は、それ自身がファイルシステム１３０の全てにわたって一意であってもよい。
【００２１】
データオブジェクトリファレンス１４８は、データストア１１５または他のデータストアのようなデータストア内に格納されたファイル１３３に関連するデータオブジェクトを識別しうるリファレンスに対応する。１つの実施形態では、データオブジェクトリファレンス１４８は、統一リソース識別子（ＵＲＩ）を有してもよい。別の実施形態では、データオブジェクトリファレンス１４８は、データオブジェクトを取得するためのキー値を有してもよい。データオブジェクトの取得元のデータストアを、例えばデータオブジェクトリファレンス１４８内の定義から黙示的または明示的に判断してもよい。
【００２２】
親オブジェクトリファレンス１５１は、ファイル１３３の親とみなされるフォルダ１３６またはファイル１３３を識別するリファレンスに対応する。このようにして、フォルダ１３６はファイル１３３に関連付けられる。いくつかの状況では、親オブジェクトリファレンス１５１は、ファイルシステム１３０のルートフォルダ１３６を識別する特殊な識別子（例えばヌル、０など）を有してもよい。
【００２３】
それぞれのフォルダ１３６は、例えばフォルダ名１５７、一意の識別子１６０、親オブジェクトリファレンス１６３、パーミッション、および／または他のデータを有してもよい。いくつかの実施形態では、ファイル１３３と同一のデータ構造を用いてフォルダ１３６を実装してもよいことを述べておく。他の実施形態では、ファイル１３３と異なるデータ構造を用いてフォルダ１３６を実装してもよい。
【００２４】
一意の識別子１６０は、数字、文字列、またはファイルシステム１３０および／またはファイルシステム１３０の全てにわたってフォルダ１３６を一意的に識別する他の識別子に対応する。１つの実施形態では、ファイルシステム１３０の識別子で結びつけられたフォルダ１３６の一意の識別子１６０は、ファイルシステム１３０の全てにわたって一意の識別子に対応してもよい。他の実施形態で、フォルダ１３６の一意の識別子１６０は、それ自身がファイルシステム１３０の全てにわたって一意であってもよい。いくつかの実施形態では、一意の識別子１６０は、ファイル１３３の一意の識別子１４５に対しても一意であってもよい。
【００２５】
親オブジェクトリファレンス１６３は、フォルダ１３６の親とみなされるフォルダ１３６またはファイル１３３を識別しうるリファレンスに対応する。このようにして、フォルダ１３６は他のフォルダ１３６に関連付けられる。いくつかの状況では、親オブジェクトリファレンス１６３は、ファイルシステム１３０のルートフォルダ１３６を識別する特殊な識別子（例えばヌル、０など）を有してもよい。
【００２６】
ファイルバリアント１３７は、ファイル１３３または他のファイルバリアント１３７のバリアントである。ファイルバリアント１３７は、ファイル１３３または他のファイルバリアント１３７のデータを減少したバージョンであってもよい。非限定の例として、ファイル１３３がイメージに対応する場合、ファイル１３３に関連するファイルバリアント１３７は、サムネイルまたは他のイメージのようなイメージの減少バージョンに対応してもよい。非限定の他の例として、ファイル１３３がオーディオファイル１３３に対応する場合、ファイル１３３に関連するファイルバリアント１３７は、サンプルレートを低くし、ビットレートを低くし、圧縮率を上げ、および／または他の特性を変化させたオーディオファイル１３３の低解像度処理バージョンに対応してもよい。一部のケースで、ファイルバリアント１３７を、例えばスマートフォンといったモバイル計算装置のような特定のタイプのクライアント計算装置に関しカスタマイズまたは最適化してもよい。ファイルバリアント１３７も、特定のタイプまたはカテゴリのクライアント１０９構成への送出のためカスタマイズしてもよい。
【００２７】
それぞれのファイルバリアント１３７は、例えば、ファイル名１６４、一意の識別子１６５、データオブジェクトリファレンス１６６、親オブジェクトリファレンス１６７、１つまたは複数のクライアントアソシエーション１６８の記述、および／または他のデータを有してもよい。ファイル名１６４は、ファイルバリアント１３７の内容を識別する人間が可読な文字列に対応してもよい。いくつかの実施形態では、ファイル名１６４を文字長で制限してもよく、可能な文字に関して制限してもよい。一部のケースでは、そのような制限が互換性の理由から強いられるかもしれない。また種々の実施形態で、ファイル名１６４を、フォルダ１３６に対しておよび／またはファイルシステム１３０に対して一意であるよう制限してもよい。１つの実施形態では、ファイル名１６４は、識別子を識別してまたは識別することなく、ファイルバリアント１３７に関連する対応するファイル１３３のファイル名１４２に対応する。ファイル名１６４を、バリアントサービス１２１により自動的に生成してもよい。ファイルバリアント１３７が通常ユーザに隠される実施形態では、ファイル名１６４を隠し、またはなくしてもよい。
【００２８】
一意の識別子１６５は、数字、文字列、または特定のファイル１３３のファイルバリアント１３７の全てにわたって、またはファイルシステム１３０および／またはファイルシステム１３０の全てにわたってファイルバリアント１３７を一意的に識別する他の識別子に対応する。１つの実施形態では、ファイルシステム１３０の識別子で結びつけられたファイルバリアント１３７の一意の識別子１６５は、ファイルシステム１３０の全てにわたって一意の識別子に対応してもよい。１つの実施形態では、対応するファイル１３３の一意の識別子１４５に結びつけられたファイルバリアント１３７の一意の識別子１６５は、ファイルシステム１３０の全てにわたって一意の識別子に対応してもよい。他の実施形態で、ファイルバリアント１３７の一意の識別子１６５は、それ自身がファイルシステム１３０の全てにわたって一意であってもよい。
【００２９】
データオブジェクトリファレンス１６６は、データストア１１５または他のデータストアのようなデータストア内に格納されたファイルバリアント１３７に関連するデータオブジェクトを識別しうるリファレンスに対応する。１つの実施形態では、データオブジェクトリファレンス１６６は、統一リソース識別子（ＵＲＩ）を有してもよい。別の実施形態では、データオブジェクトリファレンス１６６は、データオブジェクトを取得するためのキー値を有してもよい。データオブジェクトの取得元のデータストアを、例えばデータオブジェクトリファレンス１６６内の定義から黙示的または明示的に判断してもよい。いくつかの実施形態では、ファイルバリアント１３７に対応するデータオブジェクトを、ファイル１３３に対応するデータオブジェクトと異なるデータストアに格納してもよい。非限定の例として、ファイルバリアント１３７に対応するデータオブジェクトを、データの持続性を減少させたデータストア内に格納してもよい。
【００３０】
親オブジェクトリファレンス１６７は、ファイルバリアント１３７の親とみなされるファイル１３３またはファイルバリアント１３７を識別しうるリファレンスに対応する。このようにして、ファイルバリアント１３７は、ファイルバリアント１３７が関連するファイル１３３または他のファイルバリアント１３７に結び付けられる。クライアントアソシエーション１６８は、ファイルバリアント１３７が関連するクライアント１０９の構成タイプを記述してもよい。非限定の例として、ファイルバリアント１３７を、スマートフォンのようなモバイル装置へのストリーミングのためカスタマイズしてもよい。従って、クライアントアソシエーション１６８は、ファイルバリアント１３７がカスタマイズされたユーザに関連する１つまたは複数のスマートフォンを識別してもよい。一部のケースで、サムネイルイメージのようなファイルバリアント１３７は、全てのクライアント１０９および構成に適用可能でありうる。
【００３１】
クライアント情報１３８は、例えば、クライアント１０９、アプリケーション１２４、および／または他のタイプのクライアントのような、クライアントの機能に関する情報を含む。クライアント情報１３８は、特定のコーデックで符号化されたオーディオファイルを復号可能か否か、ディスプレイ画面のサイズ、ネットワーク１１２の帯域幅の制限などのようなクライアントの機能を記述してもよい。１つの実施形態では、クライアント情報１３８は、クライアントのタイプとファイルバリアント１３７のタイプのアソシエーションを有してもよい。
【００３２】
計算装置１０６は、例えば、計算機能を提供するサーバコンピュータまたはあらゆる他のシステムを有してもよい。代わりに、例えば１つまたは複数のサーババンクまたはコンピュータバンクまたは他の装置内に配置された複数の計算装置１０６を採用してもよい。例えば、複数の計算装置１０６は、クラウド計算リソース、グリッド計算リソースおよび／またはあらゆる他の分散計算装置を共有してもよい。そのような計算装置１０６を単一の設置先に設置してもよく、または多地点の異なる地理的位置にまたがって分散してもよい。
【００３３】
便宜上、本明細書では計算装置１０６を単数形で記述する。本明細書の計算装置１０６を単数形で記述するが、前述のように種々の装置内の複数の計算装置１０６を採用してもよいことが理解される。さらに、計算装置１０６を計算装置１０３と分離して記載するが、いくつかの実施形態では、計算装置１０６と関連して記載されるアプリケーションおよびデータを、計算装置１０３内で提供してもよいことが理解される。一部のケースで、１つまたは複数の計算装置１０６を、計算装置１０３を作動するエンティティと異なるエンティティにより作動してもよい。
【００３４】
種々の実施形態による計算装置１０６内で、種々のアプリケーションおよび／または他の機能を実行してもよい。また、計算装置１０６にアクセス可能なデータストア１７８および持続性を減少させたデータストア１７９内に、種々のデータが格納される。データストア１７８および持続性を減少させたデータストア１７９は、理解できるように、複数のデータストア１７８および／または持続性を減少させたデータストア１７９を代表したものである。１つの実施形態では、データストア１７８および／または持続性を減少させたデータストア１７９は、ユーティリティ計算モデルによりデータが記憶されるクラウド記憶リソースに対応してもよい。１つの実施形態では、データストア１７８および／または持続性を減少させたデータストア１７９は、最終的に一致した記憶を提供してもよい。
【００３５】
持続性を減少させたデータストア１７９は、データストア１７８よりデータ持続性の低いレベルに関連する。すなわち、持続性を減少させたデータストア１７９内に格納されたデータが失われ、使用不可、またはアクセス不可能になる確率が、データストア１７８内に格納されたデータと比較してより高くなりうる。持続性を減少させたデータストア１７９は、例えばデータストア１７８と比較して、データの冗長コピーの格納をより少なく、またはハードウェアの冗長度のレベルをより低くしてもよい。１つの実施形態では、データストア１７８はデータストア１７８内に格納された他のデータを再生するために処理可能なデータを有してもよく、一方で持続性を減少させたデータストア１７９は、持続性を減少させたデータストア１７９内に格納された他のデータを再生するために処理可能なデータを除外してもよい。持続性を減少させたデータストア１７９は、データストア１７８と比較して、地理的な分散を少なくし、信頼がおける電源装置を少なくし、ネットワーク１１２への冗長接続を少なくし、および／または他のリソース制約を少なくしてもよい。
【００３６】
非限定の例として、データストア１７８を１年間にユーザに関するデータ項目が全く失われない９９．９９９９％の確率と考えてもよく、一方で持続性を減少させたデータストア１７９は、１年間にユーザに関するデータ項目が全く失われない９９．９９％の確率であってもよい。そのようなパーセンテージは、持続性を減少させたデータストア１７９に関連する持続性レベルの減少を説明するために、単に例として示すものである。持続性を減少させたデータストア１７９はいくつかの実施形態ではなくてもよく、データを代わりにデータストア１７８内に格納してもよいことを述べておく。データストア１７８および持続性を減少させたデータストア１７９内に格納されたデータは、例えば後述の種々のアプリケーションおよび／または機能エンティティの動作に関連する。
【００３７】
計算装置１０６上で実行される構成要素は、例えば、データ記憶サービス１８１および他のアプリケーション、サービス、プロセス、システム、エンジン、または本明細書に詳細に述べない機能を含む。データ記憶サービス１８１は、データストア１７８にデータを格納およびデータストア１７８からデータを取り出すためのアクセスを提供するよう実行される。データ記憶サービス１８１はキーのような一意の識別子に基きデータを格納および取り出してもよく、キーは文字列、数字または他の識別子であってもよい。データ記憶サービス１８１のユーザが彼らのデータが実際にどのように格納されるかについて知識が不要であるように、データ記憶サービス１８１は下層の記憶レイヤを抽象化するよう機能してもよい。例えば、ユーザは彼らのデータがどのディスクドライブに、どの計算装置１０６に、どのデータセンタに格納されているかなどは知らないかもしれない。種々の実施形態で、ユーザはデータ格納に使用される実行特性またはハードウェアのタイプを指定可能であってもよい。例えばユーザは、データオブジェクトをデータストア１７８の代わりに持続性を減少させたデータストア１７９に格納するよう要求可能であってもよい。
【００３８】
持続性を減少させたデータストア１７９を有する実施形態で、データがファイルバリアント１３７であるかデータストア１７８内に格納された他のデータから得られたかに基き、データストア１７８か持続性を減少させたデータストア１７９かどちらかへデータの記憶を指示するようデータ記憶サービス１８１を構成してもよい。よって、データが持続性を減少させたデータストア１７９から失われたか使用不可である場合、データをデータストア１７８内に格納されたデータから再生してもよい。いくつかの実施形態では、ファイルサービス１１８、バリアントサービス１２１、および／または他のアプリケーションは、データストア１７８か持続性を減少させたデータストア１７９かどちらかへデータの記憶を指示してもよい。
【００３９】
データストア178内に格納されたデータは、例えば、データオブジェクト１８４および可能性がある他のデータを含む。データオブジェクト１８４は、ファイル１３３に関して格納されたデータに対応する。そのようなデータは、例えばテキストデータ、バイナリデータ、マルチメディアデータなどのようなあらゆるタイプのデータオブジェクトであってもよい。いくつかの実施形態では、データオブジェクト１８４はまた、ファイルバリアント１３７に関して格納されたデータに対応してもよい。持続性を減少させたデータストア１７９内に格納されたデータは、例えばデータオブジェクト１８５および可能性がある他のデータを含む。データオブジェクト１８５は、ファイルバリアント１３７に関して格納されたデータに対応する。そのようなデータは、例えば、テキストデータ、バイナリデータ、マルチメディアデータなどのようなあらゆるタイプのデータオブジェクトであってもよい。
【００４０】
いくつかの構成で、データオブジェクト１８４および１８５は単に他のデータオブジェクト１８４および１８５へのリファレンスであってもよいことを述べておく。例えば、複数のユーザが、彼らのファイルシステム１３０内に音楽ファイルのコピーを有するかもしれない。コピーは同一物なので、データオブジェクト１８４および１８５は単に共有されるデータのアドレスまたはポインタであってもよい。共有されるデータが更新されたとき、そのようなアソシエーションを、コピーオンライトシステムでアップデートしてもよい。一部のケースで、共有されるデータをコンテンツ送達ネットワークの外部に格納してもよい。
【００４１】
クライアント１０９は、ネットワーク１１２に接続されうる複数のクライアント装置を表現するものである。クライアント１０９は、例えばコンピュータシステムのようなプロセッサベースシステムを有してもよい。そのようなコンピュータシステムを、デスクトップコンピュータ、ラップトップコンピュータ、モバイル装置、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、音楽プレーヤー、ウェブパッド、タブレットコンピュータシステム、ゲームコンソール、電子ブックリーダ、または類似の機能を有する他の装置の形態で実現してもよい。クライアント１０９は、例えば陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）スクリーン、ガスプラズマベースフラットパネルディスプレイ、ＬＣＤプロジェクタまたは他のタイプのディスプレイ装置などのような１つまたは複数のディスプレイ装置を有してもよい。
【００４２】
クライアント１０９を、クライアントアプリケーション１８７および／または他のアプリケーションのような種々のアプリケーションを実行するよう構成してもよい。クライアントアプリケーション１８７は、計算装置１０３の１つまたは複数のファイルシステム１３０内のファイル１３３およびフォルダ１３６を格納、取り出し、処理、および使用するよう実行される。１つの実施形態では、クライアントアプリケーション１８７は、ファイルサービス１１８、バリアントサービス１２１、および／またはアプリケーション１２４との相互作用を容易にする、計算装置１０３により提供されるネットワークページを実行するブラウザアプリケーションに対応する。１つの実施形態では、クライアントアプリケーション１８７はクライアント１０９のオペレーティングシステムと一体化し、クライアント１０９のあらゆるマウントされたファイルシステムと同様に、ファイルシステム１３０へのアクセスを提供する。クライアント１０９を、例えばブラウザアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および／または他のアプリケーションのようなクライアントアプリケーション１８７より上位のアプリケーションを実行するよう構成してもよい。
【００４３】
次に、ネットワーク化された環境１００の種々の構成要素の動作の概要を記載する。まずユーザは、クライアントアプリケーション１８７または他のアプリケーション１２４を通して、１つまたは複数のファイルシステム１３０を作成またはアクセスするためアカウントを確立してもよい。ユーザをアクションを実行しているものとして記載する場合、ユーザが、アクションを実行するため少なくともクライアントアプリケーション１８７と相互に作用してもよいことが理解される。
【００４４】
ユーザは、最大記憶量要求、実行要求、料金プラン、アクセスパーミッション、セキュリティ証明書などのような種々のパラメータを規定してもよい。ユーザは課金情報を提供してもよく、および／または既存の課金情報がユーザに関連するかもしれない。従って、アカウントデータ１３１が事前設定され、ファイルシステム１３０が作成されるかもしれない。いくつかの実施形態では、ユーザはまた、ファイルシステム１３０にアクセスするであろう種々のタイプのクライアント１０９を規定してもよい。この情報を、例えばクライアントアソシエーション１３２内に格納してもよい。
【００４５】
ユーザは、アプリケーション１２４またはクライアントアプリケーション１８７経由でファイルをファイルシステム１３０へ転送してもよい。そのような転送は、ユーザによるクライアント１０９から計算装置１０３または計算装置１０６へのファイルのアップロードを含みうる。他のケースで、ユーザは計算装置１０３に関連するオンライン小売業者からファイル（例えば、音楽ファイル）を購入してもよく、ファイルをアプリケーション１２４経由でファイルシステム１３０へ自動的に保存してもよい。
【００４６】
ファイルがファイルシステム１３０に転送されるとき、ファイルサービス１１８によりファイルシステム１３０内でファイル１３３が作成される。ファイル名１４２は送り側ファイルに関連するオリジナルのファイル名に対応してもよく、またはファイル名１４２をユーザまたはアプリケーション１２４により明示的に規定してもよい。一意の識別子１４５が、ファイル１３３に対して生成される。送り側ファイルに関連するデータに対応するデータオブジェクト１８４が、データ記憶サービス１８１と相互に作用するファイルサービス１１８によりデータストア１７８内に格納される。格納されたデータオブジェクト１８４に対応するデータオブジェクトリファレンス１４８が、それからファイル１３３について記録される。親オブジェクトリファレンス１５１を、任意選択的にファイル１３３について規定してもよい。親オブジェクトリファレンス１５１が規定されない場合、ファイル１３３はファイルシステム１３０に関するルートフォルダ１３６にあるとみなしてもよい。
【００４７】
またフォルダ１３６を、ユーザおよび／またはアプリケーション１２４により作成またはインポートしてもよい。フォルダ名１５７は送り側フォルダに関連するオリジナル名に対応してもよく、またはフォルダ名１５７をユーザまたはアプリケーション１２４により明示的に規定してもよい。一意の識別子１６０が、フォルダ１３６に対して生成される。親オブジェクトリファレンス１６３を、任意選択的にフォルダ１３６について規定してもよい。親オブジェクトリファレンス１６３が規定されない場合、フォルダ１３６はファイルシステム１３０に関するルートフォルダ１３６にあるとみなしてもよい。
【００４８】
ファイル１３３、フォルダ１３６、またはファイルシステム１３０に関連する種々のデータは、ｉノード、ｖノード、ファイル割り当てテーブル、または物理ファイルシステムに関連するいずれの他のデータ構造にも記録される必要がないことを述べておく。種々の実施形態で、ファイル１３３、フォルダ１３６、およびファイルシステム１３０に関連するデータを、リレーショナルデータベース管理システム（ＲＤＢＭＳ）または類似のデータベース管理システム内のデータとして保持してもよい。
【００４９】
ファイルサービス１１８は、例えば名前の変更、コピー、移動、削除、再利用、アップロード、ダウンロードなどのようなファイル１３３およびフォルダ１３６に関連する種々の操作を補助してもよい。ファイル１３３またはフォルダ１３６の名前が変更されたとき、ファイル名１４２またはフォルダ名１５７は更新されるが、データオブジェクト１８４には変化は起こらない。ファイル１３３またはフォルダ１３６がコピーされたとき、同一のデータオブジェクト１８４を指すため、複製のファイル１３３またはフォルダ１３６（および内容）を作成してもよい。必要があるとき、コピーオンライトまたは他の方法論によりデータオブジェクト１８４自身を複製してもよい。
【００５０】
ファイル１３３またはフォルダ１３６が移動されたとき、下層のデータオブジェクト１８４を変更することなく、親オブジェクトリファレンス１５１または１６３を更新してもよい。同様に、下層のデータオブジェクト１８４が格納された場所に関して変更がなされたとき、ファイル１３３またはフォルダ１３６は変更されないままであってもよい。ファイル１３３またはフォルダ１３６が削除されたとき、データオブジェクト１８４を指す他のファイル１３３がなければ、データオブジェクト１８４を削除してもよい。一部のケースで、アップロードおよびダウンロード機能は、データ記憶サービス１８１と直接インタフェースで接続するクライアントアプリケーション１８７を含んでもよい。前述のような操作の実施はデータストア１７８内のデータオブジェクト１８４への更新を制限し、これは時間またはコストがかかるかもしれない。
【００５１】
ファイルシステム１３０内でファイル１３３が作成されるとき、ファイル１３３がアクセスされるとき、および／または他の時間に、種々のファイル１３３についてファイルバリアント１３７を作成してもよい。ファイルバリアント１３７は、データが減少されうる、および／または特定のタイプのクライアント１０９またはアプリケーション１２４への送達のためにカスタマイズされうるファイル１３３のバリアントに対応する。一部のケースで、ファイルバリアント１３７を、少なくとも部分でファイル１３３の派生物であるといってもよい。他のケースで、ファイルバリアント１３７をファイル１３３に単に関連付けてもよい。さらに、いくつかのファイルバリアント１３７は、全てのクライアント１０９およびアプリケーション１２４に適用可能であってもよい。
【００５２】
一部のケースで、バリアントサービス１２１はファイル１３３についてファイルバリアント１３７の保持を担当してもよい。ファイルバリアント１３７がクライアント１０９またはアプリケーション１２４の特定の特性にカスタマイズされている場合、ファイルバリアント１３７は、モバイルストリーミングを容易にするようデータを減少してもよく、クライアント１０９での表示のため低解像度処理またはサイズ変更してもよく、クライアント１０９に関連するアプリケーションプラットフォームについて前処理してもよく、または符号化してもよい。種々のバリアントエンコーダ１２２を、符号化の実行に採用してもよい。
【００５３】
非限定の例として、ユーザはファイルシステム１３０内にオーディオファイル１３３のライブラリを有してもよい。そのようなオーディオファイル１３３を、最初は、秒あたり２５６キロビットのビットレートでの動画専門家集団（ＭＰＥＧ）レイヤ３（ＭＰ３）のような高ビットレートフォーマットでファイルシステム１３０内に置いてもよい。そのようなフォーマットを、無損失またはほぼ無損失とみなしてもよい。しかし、ユーザは、比較的低い帯域幅で接続の損失時間に影響されやすいネットワーク１１２と接続するモバイル計算装置を通して、オーディオファイル１３３を聞きたいと思うかもしれない。
【００５４】
従って、バリアントサービス１２１は、モバイル計算装置への送達用途にカスタマイズされたファイル１３３のバージョンに対応するファイル１３３についてのファイルバリアント１３７を生成してもよい。例えば、秒あたり６４キロビットのビットレートをモバイル計算装置のタイプに最適と考えてもよい。バリアントエンコーダ１２２はＭＰ３オーディオコーデックに対応してもよく、高ビットレートのオーディオファイル１３３を低ビットレートのファイルバリアント１３７に符号化するよう構成してもよい。
【００５５】
ユーザがモバイル計算装置からオーディオファイル１３３にアクセスするとき、適切なファイルバリアント１３７を自動的に代用してもよい。そのような代用は、透明でも非透明でもよい。例えば、ユーザは、単にストリームではなくプログレッシブダウンロードとして、オリジナルの高ビットレートのオーディオファイル１３３をダウンロードしたいかもしれない。バリアントサービス１２１および／またはファイルサービス１１８は、ユーザにオリジナルのオーディオファイル１３３をダウンロードする選択肢を許可してもよい。そのような選択肢を、ファイル１３３に対する要求のコンテキストにより自動的に選択してもよい。
【００５６】
他の非限定の例として、ユーザはタブレット計算装置で文書をダウンロードしたいと思うことがありうる。文書は、もともと大きなワイドスクリーンのディスプレイモニタでの表示に合わせ作成されていることがありうる。ユーザがタブレット計算装置からファイル１３３を要求したことを検出し、ファイルバリアント１３７を適切に符号化するよう、バリアントサービス１２１を構成してもよい。ファイルバリアント１３７は、タブレット計算装置のディスプレイに対しカスタマイズされた文書のサイズ変更バージョンであってもよい。
【００５７】
さらに他の非限定の例として、ユーザは、複数の高解像度のイメージファイル１３３をファイルシステム１３０にアップロードするかもしれない。バリアントサービス１２１は、ファイルシステム１３０に関連するクライアント１０９のタイプにかかわらず、低解像度でサイズを減少したイメージファイル１３３のサムネイルに対応するファイルバリアント１３７を自動的に作成してもよい。ファイルバリアント１３７であるサムネイルイメージを、フォトアルバムであるアプリケーション１２４により自動的に検出し、オリジナルの高解像度のイメージファイル１３３にアクセスする選択肢を付けて、サムネイルを含むアルバムページを実行するのに使用してもよい。
【００５８】
さらに他の非限定の例として、ユーザは、音楽ファイル１３３をファイルシステム１３０にアップロードするかもしれない。外部のデータを用いて、バリアントサービス１２１は音楽ファイル１３３を識別し、音楽ファイル１３３に関連するアルバムのカバーアートに対応するファイルバリアント１３７を作成してもよい。アルバムのカバーアートに対応する１つまたは複数のイメージをデータストア１７８または１７９に格納し、音楽ファイル１３３の１つまたは複数のファイルバリアント１３７にリンクしてもよい。１つの例では、最初のファイルバリアント１３７はカバーアートの高解像度バージョンであってもよく、一方でファイルバリアント１３７のバリアントはカバーアートのサムネイルバージョンであってもよい。
【００５９】
いくつかの実施形態では、ファイルバリアント１３７の下層のデータを、データが失われるまたはアクセス不可能な可能性がより高い、持続性を減少させたデータストア１７９に格納してもよい。ファイルバリアント１３７は持続性のレベルがより高いデータストア１７８内に格納されたデータオブジェクト１８４から再生可能なので、持続性の減少はファイルバリアント１３７にとって問題でないかもしれない。持続性を減少させたデータの記憶は、高い持続性のデータの記憶より低いコストおよび／または他の利点を有するかもしれない。
【００６０】
さらに、ファイルバリアント１３７が予め定められた長さの時間内に使用されなかった、または使用されないと予測されるとき、バリアントサービス１２１を、ファイルバリアント１３７またはそれらの下層のデータを周期的に削除するよう構成してもよい。例えば、いくつかのファイルバリアント１３７をタブレット計算装置に対し生成するかもしれないが、ユーザはタブレット計算装置を売却してファイルバリアント１３７に再度アクセスすることはないかもしれない。よって、適用可能なファイルバリアント１３７を安全に削除してもよい。ユーザが他のタブレット計算装置からファイル１３３にアクセスする場合でも、新しいファイルバリアント１３７をオリジナルのファイル１３３から要求に応じて、または適切なときに再生してもよい。
【００６１】
バリアントサービス１２１を、クライアント情報１３８により、クライアント１０９またはアプリケーション１２４の機能に対しカスタマイズされたファイルバリアント１３７を識別するよう構成してもよい。どのタイプのクライアント１０９またはアプリケーション１２４がファイル１３３を要求しているか認識すると、バリアントサービス１２１は、クライアント情報１３８内のクライアント１０９またはアプリケーション１２４の機能を参照してもよい。バリアントサービス１２１は、その機能が要求されたファイル１３３に関連する１つまたは複数のファイルバリアント１３７の特性に合致するかどうか判断してもよい。１つの実施形態では、最もよく合致するファイルバリアント１３７を返してもよい。別の実施形態では、互換性があるファイル１３３についての全てのファイルバリアント１３７を返してもよい。
【００６２】
いくつかの実施形態では、バリアントサービス１２１をクライアント１０９でユーザに公開し、ユーザが特定のファイル１３３についてのファイルバリアント１３７の一覧を得て、一覧からファイルバリアント１３７を要求することを可能にしてもよい。そのようなファイルバリアント１３７は、存在するかもしれないし存在しないかもしれない。要求されたファイルバリアント１３７が存在しない場合、バリアントサービス１２１によって要求により生成してもよい。１つの例では、ユーザはクライアント１０９の説明をバリアントサービス１２１に提供し、それからバリアントサービス１２１が特定のクライアント１０９に関するファイルバリアント１３７を判断してもよい。
【００６３】
次に図２を参照すると、種々の実施形態によるファイルサービス１１８の部分の動作の１つの例を提供するフローチャートが示される。特に、図２は、ファイルシステム１３０（図１）内のファイル１３３（図１）の格納、および必要に応じてファイルバリアント１３７（図１）の作成に関する。図２のフローチャートは、本明細書に記載されたファイルサービス１１８の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図２のフローチャートを、１つまたは複数の実施形態による計算装置１０３（図１）内で実行される方法のステップの例を示すものとして見てもよい。図２のタスクはファイルサービス１１８により実行されるものとして記載するが、他の実施形態では、図２の１つまたは複数のタスクを、バリアントサービス１２１（図１）、データ記憶サービス１８１（図１）、および／または他のアプリケーションにより実行してもよい。
【００６４】
ボックス２０３から開始すると、ファイルサービス１１８はファイルシステム１３０内にファイル１３３を格納する要求を受け取る。そのような要求は、クライアントアプリケーション１８７（図１）またはアプリケーション１２４（図１）から起こるかもしれない。ボックス２０６で、ファイルサービス１１８は、クライアントアプリケーション１８７またはアプリケーション１２４からファイル１３３に対応するデータオブジェクト１８４（図１）を取得する。ボックス２０９で、ファイルサービス１１８は、データストア１７８（図１）内にデータオブジェクト１８４を格納する。
【００６５】
ボックス２１２で、ファイルサービス１１８は、ファイルシステム１３０内にファイル１３３を作成する。この目的を達成するために、ファイルサービス１１８は、要求によりファイル名１４２（図１）を設定し、ファイル１３３について一意の識別子１４５（図１）を生成し、データオブジェクトリファレンス１４８（図１）としてデータストア１７８内に格納されたデータオブジェクト１８４にリファレンスを設定し、親オブジェクトリファレンス１６３（図１）として親フォルダ１３６（図１）の一意の識別子１６０（図１）を設定し、およびファイル１３３についてのパーミッションおよび／または他のメタデータを設定してもよい。
【００６６】
ボックス２１５で、ファイルサービス１１８は、ファイルシステム１３０および／またはファイル１３３に関連するクライアントを判断する。非限定の例として、ファイルシステム１３０に関連するユーザは、電子ブックリーダ、ラップトップコンピュータ、およびスマートフォンのようなクライアント１０９を以前に使用したかもしれず、または明示的に構成したかもしれない。さらに、ユーザは、どのバージョンのファイル１３３が使用されるかに影響しうるブラウザアプリケーション、音楽プレーヤー、文書処理アプリケーションなどのような特定のクライアントアプリケーション１８７を使用したかもしれない。
【００６７】
ボックス２１８で、ファイルサービス１１８は、ファイル１３３について１つまたは複数のファイルバリアント１３７を生成するべきかどうか判断する。一部のケースで、そのような判断は、ファイルシステム１３０および／またはファイル１３３に関連するクライアント１０９による。他のケースで、そのような判断は、クライアント１０９から独立してもよい。ファイル１３３についてファイルバリアント１３７が生成されない場合、ファイルサービス１１８の部分は終了する。そうでなければ、ファイルサービス１１８はボックス２２１へ進む。
【００６８】
ボックス２２１で、ファイルサービス１１８は、１つまたは複数の適切なバリアントエンコーダ１２２（図１）を用いてデータオブジェクト１８４を符号化し、１つまたは複数の符号化されたデータオブジェクトを得る。符号化されたデータオブジェクトは、ボックス２２４でデータストア内に格納される。１つの実施形態では、符号化されたデータオブジェクトは、持続性を減少させたデータストア１７９（図１）内にデータオブジェクト１８５（図１）として格納される。別の実施形態では、符号化されたデータオブジェクトは、データストア１７８内にデータオブジェクト１８４として格納される。
【００６９】
ボックス２２７で、ファイルサービス１１８は、ファイルシステム１３０内で符号化されたデータオブジェクトを参照する１つまたは複数のファイルバリアント１３７を作成する。この目的を達成するために、ファイルサービス１１８は、ファイルバリアント１３７についてそれぞれのファイル名１６４（図１）および一意の識別子１６５（図１）を生成してもよい。ファイルサービス１１８は、データストア１７８または持続性を減少させたデータストア１７９内に格納されたそれぞれの符号化されたデータオブジェクトの識別子を指すため、ファイルバリアント１３７についてデータオブジェクトリファレンス１６６（図１）を設定してもよい。ファイルサービス１１８は、ファイル１３３の一意の識別子１４５となるようそれぞれのファイルバリアント１３７について親オブジェクトリファレンス１６７（図１）を設定してもよい。その後、ファイルサービス１１８の部分は終了する。
【００７０】
図３に移ると、種々の実施形態によるファイルサービス１１８の他の部分の動作の１つの例を提供するフローチャートが示される。特に、図３は、ファイルシステム１３０（図１）内のファイル１３３（図１）のアクセスに関する。図３のフローチャートは、本明細書に記載されたファイルサービス１１８の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図３のフローチャートを、１つまたは複数の実施形態による計算装置１０３（図１）内で実行される方法のステップの例を示すものとして見てもよい。図３のタスクはファイルサービス１１８により実行されるものとして記載するが、他の実施形態では、図３の１つまたは複数のタスクを、バリアントサービス１２１（図１）、データ記憶サービス１８１（図１）、および／または他のアプリケーションにより実行してもよい。
【００７１】
ボックス３０３から開始すると、ファイルサービス１１８は、ファイル１３３にアクセスするためクライアント１０９（図１）から要求を受け取る。要求を、直接クライアントアプリケーション１８７（図１）から、またはアプリケーション１２４（図１）を通して受け取ってもよい。ボックス３０６で、ファイルサービス１１８は、クライアント１０９のタイプおよび／またはファイル１３３のタイプにより、ファイル１３３の代わりにファイルバリアント１３７（図１）を提供すべきかどうか判断する。ファイルバリアント１３７が提供されない場合、ファイルサービス１１８はボックス３０９へ続き、データストア１７８（図１）から要求されたファイル１３３に対応するデータオブジェクト１８４（図１）を取得し、データオブジェクト１８４をクライアント１０９へ送信する。データストア１７８は、いくつかの実施形態では持続性が高いデータストア１７８に対応してもよいことを述べておく。その後、ファイルサービス１１８の部分は終了する。
【００７２】
そうでなければ、ファイルバリアント１３７が提供されるべき場合、ファイルサービス１１８はボックス３０６からボックス３１２へ移る。ボックス３１２で、ファイルサービス１１８は、ファイルバリアント１３７がファイルシステム１３０内に存在するかどうか判断する。より具体的にいうと、いくつかの実施形態では、ファイルサービス１１８は対応する符号化されたデータオブジェクト１８５（図１）が存在するかどうか判断してもよい。クライアント１０９について適切なファイルバリアント１３７が存在する場合、ファイルサービス１１８は、持続性を減少させたデータストア１７９（図１）からデータオブジェクト１８５（図１）を取得し、データオブジェクト１８５をクライアント１０９に送信する。いくつかの実施形態では、ファイルバリアント１３７は、代わりにデータストア１７８内に格納されたデータオブジェクト１８４を示してもよい。そのようなケースでは、対応するデータオブジェクト１８４が取得され、クライアント１０９に送信される。その後、ファイルサービス１１８の部分は終了する。
【００７３】
そうでなければ、ファイルバリアント１３７が存在しない場合、ファイルサービス１１８はボックス３１２からボックス３１８へ移る。ボックス３１８で、ファイルサービス１１８は、ファイル１３３に対応するデータオブジェクト１８４からファイルバリアント１３７に対応する符号化されたデータオブジェクトを生成する。いくつかの実施形態で、種々のバリアントエンコーダ１２２（図１）を採用してもよく、バリアントサービス１２１はこのタスクと連動してもよい。ボックス３２１で、ファイルサービス１１８は、ファイルバリアント１３７に対応する符号化されたデータオブジェクトを、データオブジェクト１８５として持続性を減少させたデータストア１７９内に格納する。他の実施形態では、ファイルサービス１１８は、代わりにファイルバリアント１３７に対応する符号化されたデータオブジェクトを、データオブジェクト１８４としてデータストア１７８内に格納してもよい。
【００７４】
ボックス３２４で、ファイルサービス１１８は、ファイルシステム１３０内にファイルバリアント１３７を作成する。この目的を達成するために、ファイルサービス１１８は、ファイルバリアント１３７についてそれぞれのファイル名１６４（図１）および一意の識別子１６５（図１）を生成してもよい。ファイルサービス１１８は、データストア１７８または持続性を減少させたデータストア１７９内に格納されたそれぞれの符号化されたデータオブジェクトの識別子を指すため、ファイルバリアント１３７についてデータオブジェクトリファレンス１６６（図１）を設定してもよい。ファイルサービス１１８は、ファイル１３３の一意の識別子１４５（図１）となるようそれぞれのファイルバリアント１３７について親オブジェクトリファレンス１６７（図１）を設定してもよい。ボックス３２７で、ファイルサービス１１８は、ファイルバリアント１３７に対応する符号化されたデータオブジェクトをクライアント１０９に送信する。１つの実施形態では、符号化されたデータオブジェクトを生成しおよび格納する間にクライアント１０９に送信してもよい。そのような最適化が、送信前のデータオブジェクトの符号化およびその格納に関連する遅延を減少させるかもしれない。その後、ファイルサービス１１８の部分は終了する。
【００７５】
図４に移ると、種々の実施形態によるファイルサービス１１８のさらに他の部分の動作の１つの例を提供するフローチャートが示される。特に図４は、ファイルシステム１３０（図１）内のファイル１３３（図１）の削除に関する。図４のフローチャートは、本明細書に記載されたファイルサービス１１８の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図４のフローチャートを、１つまたは複数の実施形態による計算装置１０３（図１）内で実行される方法のステップの例を示すものとして見てもよい。図４のタスクはファイルサービス１１８により実行されるものとして記載するが、他の実施形態では、図４の１つまたは複数のタスクを、バリアントサービス１２１（図１）、データ記憶サービス１８１（図１）、および／または他のアプリケーションにより実行してもよい。
【００７６】
ボックス４０３から開始すると、ファイルサービス１１８は、ファイル１３３を削除するためクライアント１０９から要求を受け取る。特に要求を、クライアントアプリケーション１８７（図１）から、またはアプリケーション１２４（図１）から受け取ってもよい。ボックス４０６で、ファイルサービス１１８は、データオブジェクトリファレンス１４８（図１）により識別されたとして、ファイル１３３に対応するデータオブジェクト１８４（図１）の削除を開始する。１つの実施形態では、データオブジェクト１８４の削除時、競合状態を避けるため遅延または待機時間を採用してもよい。
【００７７】
ボックス４０９で、ファイルサービス１１８は、あらゆるファイルバリアント１３７（図１）がファイル１３３に関連しているかどうか判断する。言い換えれば、ファイルサービス１１８は、あらゆるファイルバリアント１３７がファイル１３３の一意の識別子１４５（図１）であるよう設定された親オブジェクトリファレンス１６７（図１）を有するかどうか判断する。ファイルバリアント１３７がファイル１３３に関連しない場合、ファイルサービス１１８はボックス４１２へ進み、ファイルシステム１３０からファイル１３３を削除する。その後、ファイルサービス１１８の部分は終了する。しかし、ファイルバリアント１３７がファイル１３３に関連する場合、ファイルサービス１１８は代わりにボックス４１５へ続く。
【００７８】
ボックス４１５で、ファイルサービス１１８は、ファイルバリアント１３７に対応するデータオブジェクト１８５（図１）および／またはデータオブジェクト１８４の削除を開始する。これは、ファイルバリアント１３７のバリアントを含んでもよい。１つの実施形態では、データオブジェクト１８４、１８５の削除時、競合状態を避けるため遅延または待機時間を採用してもよい。ボックス４１８で、ファイルサービス１１８は、ファイルシステム１３０からファイルバリアント１３７（およびそのあらゆるバリアント）を削除する。ボックス４１２で、ファイルサービス１１８は、ファイルシステム１３０からファイル１３３を削除する。その後、ファイルサービス１１８の部分は終了する。
【００７９】
次に図５を参照すると、種々の実施形態によるデータ記憶サービス１８１の部分の動作の１つの例を提供するフローチャートが示される。図５のフローチャートは、本明細書に記載されたデータ記憶サービス１８１の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図５のフローチャートを、１つまたは複数の実施形態による計算装置１０６（図１）内で実行される方法のステップの例を示すものとして見てもよい。図５のタスクはデータ記憶サービス１８１により実行されるものとして記載するが、他の実施形態では、図５の１つまたは複数のタスクを、バリアントサービス１２１（図１）、ファイルサービス１１８（図１）、および／または他のアプリケーションにより実行してもよい。
【００８０】
ボックス５０３から開始すると、データ記憶サービス１８１は、データオブジェクトを格納する要求を受け取る。そのような要求は、例えばファイルサービス１１８、バリアントサービス１２１、または他のアプリケーションから受け取ってもよい。ボックス５０６で、データ記憶サービス１８１は、データオブジェクトがファイルバリアント１３７（図１）に対応するかどうか判断する。データオブジェクトがファイルバリアント１３７に対応する場合、データ記憶サービス１８１はボックス５０９へ進み、データオブジェクト１８５（図１）としてデータオブジェクトを持続性を減少させたデータストア１７９（図１）内に格納する。１つの実施形態では、データ記憶サービス１８１はまた、データオブジェクト１８５の識別子を要求側に返してもよい。その後、データ記憶サービス１８１の部分は終了する。
【００８１】
そうでなければ、データ記憶サービス１８１が、データオブジェクトがファイルバリアント１３７に対応しないと判断する場合、データ記憶サービス１８１はボックス５１２へ続く。ボックス５１２で、データ記憶サービス１８１は、データオブジェクトをデータオブジェクト１８4（図１）としてデータストア１７８（図１）内に格納し、データストア１７８は持続性を減少させたデータストア１７９より高いレベルのデータ持続性に関連する。１つの実施形態では、データ記憶サービス１８１は、データオブジェクト１８４の識別子を要求側に返してもよい。その後、データ記憶サービス１８１の部分は終了する。
【００８２】
図６に続くと、種々の実施形態によるバリアントサービス１２１の部分の動作の１つの例を提供するフローチャートが示される。図６のフローチャートは、本明細書に記載されたバリアントサービス１２１の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図６のフローチャートを、１つまたは複数の実施形態による計算装置１０３（図１）内で実行される方法のステップの例を示すものとして見てもよい。図６のタスクはデータ記憶サービス１８１により実行されるものとして記載するが、他の実施形態では、図６の１つまたは複数のタスクを、ファイルサービス１１８（図１）、および／または他のアプリケーションにより実行してもよい。
【００８３】
ボックス６０３から開始すると、バリアントサービス１２１は、ユーザのファイルシステム１３０（図１）に関連するクライアント１０９（図１）を判断する。図６と関連してクライアント１０９を述べるが、図６の原理をアプリケーション１２４（図１）と定義された機能および優先性に適用してもよいことが理解される。非限定の例として、ファイルシステム１３０に関連するユーザは、電子ブックリーダ、ラップトップコンピュータ、およびスマートフォンのようなクライアント１０９を以前に使用したかもしれず、または明示的に構成したかもしれない。さらに、ユーザは、どのバージョンのファイル１３３（図１）が使用されるかに影響しうるブラウザアプリケーション、音楽プレーヤー、文書処理アプリケーションなどのような特定のクライアントアプリケーション１８７（図１）を使用したかもしれない。ボックス６０６で、バリアントサービス１２１は、ユーザのファイルシステム１３０に関連するファイルバリアント１３７（図１）を判断する。
【００８４】
ボックス６０９で、ファイルバリアント１３７のうちの１つについて、バリアントサービス１２１はファイルバリアント１３７がユーザにもはや関連しないクライアント１０９に関連するかどうか判断する。ファイルバリアント１３７がユーザ（またはファイルシステム１３０）にもはや関連しないクライアント１０９に関連する場合、バリアントサービス１２１はボックス６１２に移り、ファイルバリアント１３７に対応するデータオブジェクト１８５（図１）を持続性を減少させたデータストア１７９（図１）から削除する。ファイルバリアント１３７を、その後ファイルシステム１３０から削除してもよい。種々の実施形態で、クライアント１０９が関連付けを解かれるときと削除が開始されるときの間に、いくぶんかの時間が経過しうる。また、バリアントサービス１２１はファイルバリアント１３７が他のクライアント１０９に対して使用可能でありうると判断するかもしれず、このケースでは、バリアントサービス１２１はファイルバリアント１３７を削除しないと決定するかもしれない。バリアントサービス１２１は、ボックス６１５に続く。
【００８５】
ボックス６０９で、バリアントサービス１２１が、ファイルバリアント１３７がユーザにもはや関連しない、クライアント１０９に関するものではないと判断する場合、バリアントサービス１２１はボックス６１８へ進む。ボックス６１８で、バリアントサービス１２１は、ファイルバリアント１３７が予め定められた長さの時間内にアクセスされたかどうか、そうでなければ保持基準を満たすかどうか判断する。バリアントサービス１２１が保持基準を満たさない場合、バリアントサービス１２１はボックス６１２へ続き、ファイルバリアント１３７に対応するデータオブジェクト１８５を持続性を減少させたデータストア１７９から削除する。ファイルバリアント１３７を、その後ファイルシステム１３０から削除してもよい。バリアントサービス１２１は、ボックス６１５へ続く。
【００８６】
ボックス６１５で、バリアントサービス１２１は、他のファイルバリアント１３７が処理待ちであるかどうか判断する。そうであれば、バリアントサービス１２１はボックス６０９に戻り、他のファイルバリアント１３７の評価を開始する。他のファイルバリアント１３７が処理待ちでない場合、バリアントサービス１２１の部分は終了する。
【００８７】
図７を参照すると、本開示の実施形態による計算装置１０３の概略ブロック図が示される。計算装置１０３は、例えばプロセッサ７０３およびメモリ７０６を持つ少なくとも１つのプロセッサ回路を有し、プロセッサ７０３およびメモリの両方がローカルインタフェース７０９に接続される。この目的を達成するために、計算装置１０３は、例えば少なくとも１つのサーバコンピュータまたは同様の装置を備えてもよい。ローカルインタフェース７０９は、例えばアドレス／制御バスが付いたデータバスまたは認識可能な他のバス構造を備えてもよい。図７では計算装置１０３を示すが、計算装置１０６が類似の構造であってもよいことが理解される。
【００８８】
メモリ７０６内に、データおよびプロセッサ７０３により実行可能ないくつかの構成要素の両方が格納される。特に、ファイルサービス１１８、バリアントサービス１２１、バリアントエンコーダ１２２、アプリケーション１２４、およびもしかすると他のアプリケーションが、メモリ７０６内に格納され、プロセッサ７０３により実行可能である。また、データストア１１５および他のデータもメモリ７０６内に格納してもよい。さらに、オペレーティングシステムをメモリ７０６内に格納し、プロセッサ７０３により実行可能である。
【００８９】
理解できるように、メモリ７０６内に格納され、プロセッサ７０３により実行可能な他のアプリケーションがあってもよいことが理解される。本明細書で述べたあらゆる構成要素がソフトウェアの形態で実装される場合、例えば、Ｃ、Ｃ＋＋、Ｃ＃、オブジェクティブＣ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、ＰＨＰ、ビジュアルベーシック（登録商標）、Ｐｙｔｈｏｎ（登録商標）、Ｒｕｂｙ、Ｄｅｌｐｈｉ（登録商標）、Ｆｌａｓｈ（登録商標）、または他のプログラミング言語のような多数のプログラミング言語のうちいずれも採用してよい。
【００９０】
多数のソフトウェア構成要素がメモリ７０６内に格納され、プロセッサ７０３により実行可能である。この点で、「実行可能」の語は、プロセッサ７０３により最終的に実行可能な形態のプログラムファイルを意味する。実行可能プログラムの例は、例えば、メモリ７０６のランダムアクセス部分内にロード可能で、プロセッサ７０３により実行可能なフォーマットの機械コードに翻訳可能なコンパイルされたプログラム、メモリ７０６のランダムアクセス部分内にロード可能でプロセッサ７０３により実行可能なオブジェクトコードのような適切なフォーマットで記述しうるソースコード、他の実行可能プログラムが解釈し、メモリ７０６のランダムアクセス部分内でプロセッサ７０３により実行される命令を生成しうるソースコードなどであってもよい。実行可能プログラムを、例えばランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ハードドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク（ＣＤ）またはデジタル多用途ディスク（ＤＶＤ）のような光ディスク、フロッピー（登録商標）ディスク、磁気テープ、または他のメモリ構成要素を含むメモリ７０６のあらゆる部分または構成要素に格納してもよい。
【００９１】
メモリ７０６は、揮発性メモリおよび不揮発性メモリの両方、およびデータ記憶構成要素を含むものとして本明細書では定義する。揮発性構成要素は、電源損失時にデータの値を保持しないものである。不揮発性構成要素は、電源損失時にデータを保持するものである。よって、メモリ７０６は、例えばランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダ経由でアクセスするメモリカード、関連するフロッピーディスクドライブ経由でアクセスするフロッピーディスク、光ディスクドライブ経由でアクセスする光ディスク、適切な磁気テープドライブ経由でアクセスする磁気テープ、および／または他のメモリ構成要素、またはあらゆる２つ以上のこれらのメモリ構成要素の組み合わせを備えてもよい。また、ＲＡＭは、例えばスタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）および他のそのような装置を備えてもよい。ＲＯＭ、例えばプログラム可能読み出し専用メモリ（ＰＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリ装置を備えてもよい。
【００９２】
また、プロセッサ７０３は複数のプロセッサ７０３を、メモリ７０６は平行処理回路内で作動する複数のメモリ７０６を、それぞれ表しうる。そのようなケースでは、ローカルインタフェース７０９は、複数のプロセッサ７０３のいずれか２つの間、いずれかのプロセッサ７０３といずれかのメモリ７０６の間、またはメモリ７０６のいずれか２つの間などの通信を容易にする適切なネットワーク１１２（図１）であってもよい。ローカルインタフェース７０９は、例えば負荷分散の実行を含む、この通信に連動するよう設計された付加的なシステムを備えてもよい。プロセッサ７０３は、電気的構造またはいくつかの他の可能な構造であってもよい。
【００９３】
前述したように、ファイルサービス１１８、バリアントサービス１２１、バリアントエンコーダ１２２、アプリケーション１２４、データ記憶サービス１８１（図１）、および本明細書に記載された他の種々のシステムを、汎用ハードウェアにより実行されるソフトウェアまたはコードで実現してもよいが、代替として同一のものを専用ハードウェアまたはソフトウェア／汎用ハードウェアおよび専用ハードウェアの組み合わせで実現してもよい。専用ハードウェアで実現する場合、それぞれを、多数の技術のうちのいずれか１つまたは組み合わせを採用する回路またはステートマシンとして実装可能である。これらの技術は、１つまたは複数のデータ信号のアプリケーションに種々の論理機能を実装するための論理ゲートを有する個別論理回路、適切な論理ゲートを有する特定用途内蔵回路、または他の構成要素などを含んでもよいが、それらに限定されない。そのような技術は一般的に当業者に公知であり、よって本明細書に詳細に記載しない。
【００９４】
図２〜図６のフローチャートは、ファイルサービス１１８、バリアントサービス１２１、およびデータ記憶サービス１８１の部分の実行の機能および動作を示す。ソフトウェアで実現する場合、それぞれのブロックは、特定の論理機能を実施するプログラム命令を有するモジュール、セグメント、またはコードの部分を表しうる。プログラム命令を、プログラミング言語で書かれた人間が可読な記述を有するソースコード、またはコンピュータシステム内のプロセッサ７０３のような適切な実行システムまたは他のシステムにより認識可能な数字命令を有する機械コードの形態で実現してもよい。機械コードを、ソースコードなどから変換してもよい。ハードウェアで実現する場合、それぞれのブロックは、特定の論理機能を実施する回路または多数の相互接続された回路を表す。
【００９５】
図２〜図６のフローチャートは実行の特定の順序を示すが、実行の順序は示されたものと異なってもよいことが理解される。例えば、２つ以上のブロックの実行順序は、示された順序に対して変えてもよい。また、図２〜図６の連続で示された２つ以上のブロックを、同時にまたは部分的に同時に実行してもよい。さらに、いくつかの実施形態では、図２〜図６に示された１つまたは複数のブロックをとばすまたは省略してもよい。また、ユーティリティの強化、課金、性能測定、または問題解決補助などの目的で、任意数のカウンタ、状態変数、警告セマフォ、またはメッセージを、本明細書に記載された論理フローに追加してもよい。全てのそのような変形は、本開示の範囲内であることが理解される。
【００９６】
また、ファイルサービス１１８、バリアントサービス１２１、バリアントエンコーダ１２２、アプリケーション１２４、およびデータ記憶サービス１８１を含む本明細書に記載されたソフトウェアまたはコードを有するあらゆるロジックまたはアプリケーションを、例えばコンピュータシステム内のプロセッサ７０３または他のシステムのような命令実行システムまたは他のシステムにより、またはそれと関連して、使用のためあらゆる非一過性コンピュータ可読な媒体で実現可能である。この意味で、ロジックは、例えばコンピュータ可読な媒体から取り出し可能で命令実行システムにより実行可能な命令および宣言を含む記述を有してもよい。本開示の文脈で、「コンピュータ可読な媒体」は、命令実行システムにより、またはそれと関連して、使用のための本明細書に記載されたロジックまたはアプリケーションを内蔵、格納、または保持可能なあらゆる媒体でありうる。コンピュータ可読な媒体は、例えば、磁気、光、または半導体媒体のような多数の物理媒体のいずれの１つを含みうる。適切なコンピュータ可読な媒体のより特定した例は、磁気テープ、磁気フロッピーディスク、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、または光ディスクを含むだろうが、それらに限定されない。またコンピュータ可読な媒体は、例えばスタティックランダムアクセスメモリ（ＳＲＡＭ）およびダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）を含むランダムアクセスメモリ（ＲＡＭ）であってもよい。また、コンピュータ可読な媒体は、読み出し専用メモリ（ＲＯＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）、または他のタイプのメモリ装置であってもよい。
【００９７】
本出願は、２０１１年３月１４日出願の米国特許出願第１３／０４７，３４３号、”ＶＡＲＩＡＮＳ  ＯＦ  ＦＩＬＥＳ  ＩＮ  Ａ  ＦＩＬＥ  ＳＹＳＴＥＭ”の権利を主張し、その全ての内容は参照により本明細書に組み込まれる。
【００９８】
付記項
１．
少なくとも１つの計算装置内で実行可能なプログラムを記録する非一過性のコンピュータ可読な媒体であって、前記プログラムが、
複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも１つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも１つのデータストア内に格納された１次データオブジェクトへのそれぞれのリファレンスを有するコードと、
前記ファイルシステムのうちの１つに関連する前記ユーザの対応する１人から、前記ファイルシステムのうちの前記１つ内にファイルを格納する要求を受け取るコードと、
前記要求に応え、前記ファイルシステムのうちの前記１つの中の前記ファイルに対応するファイルを作成し、少なくとも１つのデータストア内に前記ファイルに対応する１次データオブジェクトを格納するコードと、
前記ユーザの前記対応する１人に関連するモバイル計算装置上に提示するため、前記ファイルをカスタマイズされた２次データオブジェクトに符号化し、前記２次データオブジェクトを前記少なくとも１つのデータストア内に格納するコードと、
前記対応するファイルシステム内の前記ファイルに少なくとも部分的に基きファイルバリアントを作成し、前記ファイルバリアントは前記ファイルの前記一意の識別子へのリファレンス、および前記少なくとも１つのデータストア内に格納された前記２次データオブジェクトへのリファレンスを含むコードと、
前記ユーザの前記対応する１人から前記ファイルをアクセスする要求を受け取るコードと、
前記アクセスする要求が前記モバイル計算装置によるアクセスに関するとき、前記ファイルバリアントにより参照された前記２次データオブジェクトを前記モバイル計算装置へ送信するコードと、
前記アクセスする要求が他の計算装置によるアクセスに関するとき、前記ファイルにより参照された前記１次データオブジェクトを前記他の計算装置へ送信するコードと、
を備える、非一過性のコンピュータ可読な媒体。
【００９９】
２．
前記ファイルがオーディオファイルに対応し、前記１次データオブジェクトが第１のビットレートで符号化された前記オーディオファイルのバージョンであり、前記２次データオブジェクトが第２のビットレートで符号化された前記オーディオファイルのバージョンであり、前記第１のビットレートは前記第２のビットレートより高い、
付記項１に記載の非一過性のコンピュータ可読な媒体。
【０１００】
３．
前記ファイルがイメージファイルに対応し、前記１次データオブジェクトが第１の解像度で符号化された前記イメージファイルのバージョンであり、前記２次データオブジェクトが第２の解像度で符号化された前記イメージファイルのバージョンであり、前記第１の解像度は前記第２の解像度より高い、
付記項１に記載の非一過性のコンピュータ可読な媒体。
【０１０１】
４．
少なくとも１つの計算装置内で複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも１つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも１つのデータストア内に格納された１次データオブジェクトへのそれぞれのリファレンスを有するステップと、
前記少なくとも１つの計算装置内で前記ファイルのうちの１つのバリアントを生成し、前記バリアントは前記ファイルのうちの１つの前記一意の識別子、および前記ファイルのうちの前記１つに参照される前記１次データオブジェクトに関する２次データオブジェクトへのリファレンスを有し、前記２次データオブジェクトは前記少なくとも１つのデータストア内に格納されるステップと、
前記ファイルのうちの前記１つに関する要求に応え、前記少なくとも１つの計算装置内で前記１次データオブジェクトの代わりに前記２次データオブジェクトを送信するステップと、を含む
方法。
【０１０２】
５．
前記２次データオブジェクトが、前記１次データオブジェクトの少なくとも部分から得られる、付記項４に記載の方法。
【０１０３】
６．
前記要求が、前記ファイルのうちの前記１つをネットワークを通してモバイル計算装置へストリームする要求に対応し、前記バリアントが前記モバイル計算装置へのストリーミングのため減少されたデータである、付記項４に記載の方法。
【０１０４】
７．
前記少なくとも１つの計算装置内で、クライアントから前記ファイルのうちの前記１つに関する前記要求を受け取り、前記ファイルのうちの前記１つに関する前記要求に応え、前記２次データオブジェクトがそれへ送信されるステップをさらに含む、付記項４に記載の方法。
【０１０５】
８．
前記クライアントがクライアントのタイプに対応し、前記バリアントが前記クライアントのタイプに関してカスタマイズされる、付記項７に記載の方法。
【０１０６】
９．
各ファイルシステムが前記ファイルのうちの前記１つに関する少なくとも１つの他のバリアントを有し、前記少なくとも１つの他のバリアントがクライアントの少なくとも１つの他のタイプに関してカスタマイズされる、付記項８に記載の方法。
【０１０７】
１０．
前記生成するステップが、前記ファイルのうちの前記１つに関する前記要求が受け取られる前に自動的に実行される、付記項７に記載の方法。
【０１０８】
１１．
前記生成するステップが、前記ファイルのうちの前記１つに関する前記要求の受け取りに応えて実行される、
付記項７に記載の方法。
【０１０９】
１２．
前記少なくとも１つの計算装置内で前記クライアントのタイプを判断するステップと、
前記少なくとも１つの計算装置内で、前記ファイルのうちの前記１つおよび前記クライアントのタイプに関する前記バリアントが存在するかどうか判断するステップと、をさらに含み、
前記生成するステップが、前記ファイルのうちの前記１つおよび前記クライアントのタイプに関する前記バリアントが存在しないという判断に応えて実行される、
付記項７に記載の方法。
【０１１０】
１３．
それぞれのファイルシステムが、前記ユーザのうちの対応する１人に関連する、付記項４に記載の方法。
【０１１１】
１４．
少なくとも１つの計算装置と、
複数のユーザに関する複数のファイルシステムを保持するロジックを備え、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも１つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも１つのデータストア内に格納されたデータオブジェクトへのそれぞれのリファレンスを有する、前記少なくとも１つの計算装置内で実行可能なファイルサービスと、
複数のファイルバリアントを保持するロジックを有し、それぞれの前記ファイルバリアントは前記ファイルのうちのそれぞれ１つの前記それぞれの一意の識別子を有し、それぞれの前記ファイルバリアントは、ファイルのうちの１つの一意の識別子および前記ファイルのうちの前記それぞれ１つに参照される前記それぞれの１次データオブジェクトに関する、前記少なくとも１つのデータストア内に格納された２次データオブジェクトへのそれぞれのリファレンスをさらに有する、前記少なくとも１つの計算装置内で実行可能なバリアントサービスを備える、
システム。
【０１１２】
１５．
前記バリアントサービスが、
クライアントのタイプを前記ユーザのうちの１人に関連付けるロジックと、
前記ユーザのうちの前記１人に関連する前記クライアントのタイプに応えて少なくとも１つの前記ファイルバリアントを生成し、前記少なくとも１つの前記ファイルバリアントは前記クライアントのタイプに関してカスタマイズされるロジックと、をさらに備える、
付記項１４に記載のシステム。
【０１１３】
１６．
前記バリアントサービスが、
前記クライアントのタイプが前記ユーザのうちの前記１人に関連し続けているかどうか判断するロジックと、
クライアントのタイプが前記ユーザのうちの前記１人に関連し続けていないという判断に応え、前記少なくとも１つの前記ファイルバリアントの削除を開始するロジックと、をさらに備える、
付記項１５に記載のシステム。
【０１１４】
１７．
前記バリアントサービスが、
少なくとも１つの前記ファイルに関する要求に関連するクライアントのタイプを判断するロジックと、
前記要求に応えて少なくとも１つの前記ファイルバリアントを生成し、前記少なくとも１つの前記ファイルバリアントは前記クライアントのタイプに関してカスタマイズされるロジックと、をさらに備える、
付記項１４に記載のシステム。
【０１１５】
１８．
少なくとも１つの前記ファイルバリアントが、前記ファイルのうちの前記それぞれ１つの前記それぞれの一意の識別子の代わりに、前記ファイルバリアントのうちの１つの一意の識別子を有する、付記項１４に記載のシステム。
【０１１６】
１９．
前記バリアントサービスが、前記１次データオブジェクトのうちの前記対応する１つをエンコーダで符号化することにより、前記２次データオブジェクトのうちの１つを生成するロジックをさらに備える、付記項１４に記載のシステム。
【０１１７】
２０．
前記エンコーダがオーディオコーデックを有する、付記項１９に記載のシステム。
【０１１８】
２１．
前記１次データオブジェクトのうちの前記対応する１つがイメージであり、前記２次データオブジェクトのうちの前記１つが前記イメージの減少したサイズのバージョンである、付記項１９に記載のシステム。
【０１１９】
本開示の前述の実施形態は、本開示の原理を明確に理解するために述べた単に可能な実施例であることを強調すべきである。前述の実施形態への多くの変形および改良を、本開示の趣旨および原理から実質的に逸脱することなく行いうる。全てのそのような改良および変形は、この開示の範囲内で本明細書に含まれ、後述の請求項により保護されることを意図する。
【図１】
2015212961.tif 000003
【図２】
2015212961.tif 000004
【図３】
2015212961.tif 000005
【図４】
2015212961.tif 000006
【図５】
2015212961.tif 000007
【図６】
2015212961.tif 000008
【図７】
2015212961.tif 000009