[go: up one dir, main page]

JP6470126B2 - ファイルバリアントを作成する方法、計算装置、及びプログラム - Google Patents

ファイルバリアントを作成する方法、計算装置、及びプログラム Download PDF

Info

Publication number
JP6470126B2
JP6470126B2 JP2015126205A JP2015126205A JP6470126B2 JP 6470126 B2 JP6470126 B2 JP 6470126B2 JP 2015126205 A JP2015126205 A JP 2015126205A JP 2015126205 A JP2015126205 A JP 2015126205A JP 6470126 B2 JP6470126 B2 JP 6470126B2
Authority
JP
Japan
Prior art keywords
file
variant
computing device
data object
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015126205A
Other languages
English (en)
Other versions
JP2015212961A (ja
Inventor
ピラガッシュ ベルミーラム
ピラガッシュ ベルミーラム
ヨハンナ エス. オルソン
ヨハンナ エス. オルソン
コーウィン ジェイ. スミス
コーウィン ジェイ. スミス
ジェームス エイチ. ウッド
ジェームス エイチ. ウッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2015212961A publication Critical patent/JP2015212961A/ja
Application granted granted Critical
Publication of JP6470126B2 publication Critical patent/JP6470126B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/61Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Description

本開示は、ファイルのバリアント(変形版)を有するファイルシステムに関する。
異なる計算装置のネットワーク接続は、異なる性能を有しうる。例えば、家庭のラップトップ機またはワークステーションのネットワーク接続は、信頼性が高い高速接続であるかもしれない。対照的に、スマートフォンのネットワーク接続は比較的低速の接続で、パケット損失の確率が比較的高い。また、異なる計算装置は異なる物理特性を有しうる。例えば、家庭のワークステーションは大きなディスプレイを有し、ラップトップ機は相対的により小さいディスプレイを有し、スマートフォンはハンドヘルドディスプレイを有しうる。
ファイルのバリアントを有するファイルシステムを提供する。
本開示の一態様は、少なくとも1つの計算装置内で実行可能なプログラムを記録する非一過性のコンピュータ可読な媒体であって、前記プログラムが、複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも1つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも1つのデータストア内に格納された1次データオブジェクトへのそれぞれのリファレンスを有するコードと、前記ファイルシステムのうちの1つに関連する前記ユーザの対応する1人から、前記ファイルシステムのうちの前記1つ内にファイルを格納する要求を受け取るコードと、前記要求に応え、前記ファイルシステムのうちの前記1つの中の前記ファイルに対応するファイルを作成し、少なくとも1つのデータストア内に前記ファイルに対応する1次データオブジェクトを格納するコードと、前記ユーザの前記対応する1人に関連するモバイル計算装置上に提示するため、前記ファイルをカスタマイズされた2次データオブジェクトに符号化し、前記2次データオブジェクトを前記少なくとも1つのデータストア内に格納するコードと、前記対応するファイルシステム内の前記ファイルに少なくとも部分的に基きファイルバリアントを作成し、前記ファイルバリアントは前記ファイルの前記一意の識別子へのリファレンス、および前記少なくとも1つのデータストア内に格納された前記2次データオブジェクトへのリファレンスを含むコードと、 前記ユーザの前記対応する1人から前記ファイルをアクセスする要求を受け取るコードと、 前記アクセスする要求が前記モバイル計算装置によるアクセスに関するとき、前記ファイルバリアントにより参照された前記2次データオブジェクトを前記モバイル計算装置へ送信するコードと、前記アクセスする要求が他の計算装置によるアクセスに関するとき、前記ファイルにより参照された前記1次データオブジェクトを前記他の計算装置へ送信するコードと、を備える。
ファイルシステムがファイルのバリアントを有することができる。
本開示の種々の実施形態によるネットワーク化された環境の図である。 本開示の種々の実施形態による、図1のネットワーク化された環境内の計算装置で実行されるファイルサービスの部分として機能的に実行される例を示すフローチャートである。 本開示の種々の実施形態による、図1のネットワーク化された環境内の計算装置で実行されるファイルサービスの部分として機能的に実行される例を示すフローチャートである。 本開示の種々の実施形態による、図1のネットワーク化された環境内の計算装置で実行されるファイルサービスの部分として機能的に実行される例を示すフローチャートである。 本開示の種々の実施形態による、図1のネットワーク化された環境内の計算装置で実行されるデータ記憶サービスの部分として機能的に実行される1つの例を示すフローチャートである。 本開示の種々の実施形態による、図1のネットワーク化された環境内の計算装置で実行されるバリアントサービスの部分として機能的に実行される1つの例を示すフローチャートである。 本開示の種々の実施形態による、図1のネットワーク化された環境内で採用される計算装置の1つの例を提供する概略ブロック図である。
本開示の多くの態様は、後述の図を参照してよりよく理解できる。図内の構成要素は必ずしも縮尺通りではなく、本開示の原理を説明するに際し代わりに強調している。また図内で、同一の参照番号はいくつかの図を通して対応する部分を指す。
本開示は、ファイルのバリアント(変形版)を有するファイルシステムの提供に関する。計算装置のネットワーク接続のユビキタス可用性とともに、ユーザは彼らのデータファイルのユビキタス可用性の向上を追求している。例えば、ユーザはスマートフォンから、オフィスワークステーションから、家庭のラップトップ機から、および/または他の計算装置からオーディオファイルを聞きたいと思うかもしれない。しかしユーザは、持ち運び可能な記憶装置を持ち歩き、それらを計算装置に接続しなければならないことに不便を感じるかもしれない。また、複数の計算装置から持ち運び可能な記憶装置に格納されたファイルにアクセスするのは困難かもしれない。
本開示の種々の実施形態は、ユーティリティ計算モデルによるデータファイルおよびファイルのバリアントのリモート記憶に関する。ネットワーク化された複数の計算装置を含むクラウド計算リソース内に格納されたファイルへのアクセスを提供するために、ファイルシステムを採用してもよい。いくつかの実施形態では、ファイルシステムは、ファイルの実際のデータオブジェクトが分離したデータ記憶システム内に格納される、仮想ファイルシステムに対応してもよい。
ファイルのバリアントは、他のファイルに関連するまたは他のファイルから得られるまたは他のファイルから生成されるファイルのバージョンに対応してもよい。そのようなバリアントは、顧客の特定のクライアント計算装置にカスタマイズしてもよい。種々の実施形態で、例えば顧客がファイルを要求するのに特定のタイプのクライアント計算装置を使用するとき、オリジナルの代わりにファイルバリアントを顧客に送信してもよいように、バリアントは顧客に透明な形で存在してもよい。いくつかの実施形態では、バリアントに対応するデータがデータの持続性を減少させたデータストア内に格納されるように、バリアントのコンテキスト認識持続性を採用してもよい。後述の説明で、システムおよびその構成要素の概略を記載し、その動作を記載する。
図1を参照すると、種々の実施形態によるネットワーク化された環境100が示される。ネットワーク化された環境100は、ネットワーク112経由で1つまたは複数の計算装置106および1つまたは複数のクライアント109とデータ通信を行う1つまたは複数の計算装置103を有する。ネットワーク112は、例えば、インターネット、イントラネット、エクストラネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、有線ネットワーク、無線ネットワーク、または他の適切なネットワークなど、または2つ以上のそのようなネットワークのあらゆる組み合わせを含む。
計算装置103は、例えば、計算機能を提供するサーバコンピュータまたはあらゆる他のシステムを有してもよい。代わりに、例えば1つまたは複数のサーババンクまたはコンピュータバンクまたは他の装置内に配置された複数の計算装置103を採用してもよい。例えば、複数の計算装置103は、クラウド計算リソース、グリッド計算リソースおよび/またはあらゆる他の分散計算装置を共有してもよい。そのような計算装置103を単一の設置先に設置してもよく、または多地点の異なる地理的位置にまたがって分散してもよい。便宜上、本明細書では計算装置103を単数形で記述する。本明細書の計算装置103を単数形で記述するが、前述のように種々の装置内の複数の計算装置103を採用してもよいことが理解される。
種々の実施形態による計算装置103内で、種々のアプリケーションおよび/または他の機能を実行してもよい。また、計算装置103にアクセス可能なデータストア115内に、種々のデータが格納される。データストア115は、理解できるように、複数のデータストア115を代表したものでありうる。データストア115内に格納されたデータは、例えば、後述する種々のアプリケーションおよび/または機能エンティティの動作に関連する。
計算装置103上で実行される構成要素は、例えば、ファイルサービス118、バリアントサービス121、1つまたは複数のバリアントエンコーダ122、1つまたは複数のアプリケーション124、および他のアプリケーション、サービス、プロセス、システム、エンジン、または本明細書で詳細に述べない機能を含む。ファイルサービス118は、ベースとなるユーザに関するファイルシステムに基きファイルおよびフォルダのファイル階層を保持するよう実行される。この目的を達成するために、ファイルサービス118は、例えばファイルの作成、ファイルの削除、ファイルの更新、ファイルのパーミッション設定、ファイルのダウンロード、および/または他の操作のような種々のファイルに関する操作を補助してもよい。
バリアントサービス121は、ファイルシステム内のファイルのバリアントを作成および保持するよう実行される。この目的を達成するために、バリアントサービス121を、例えば特定のタイプのクライアント、特定のアプリケーション124、および/または他のコンテキストに関してファイルバリアントが生成される状況を検出するよう構成してもよい。バリアントサービス121を、バリアントを生成するため1つまたは複数のバリアントエンコーダ122と関連して実行してもよい。バリアントエンコーダ122は、例えばオーディオコーデック、ビデオコーデック、イメージサイズ変更アプリケーション、データ圧縮アプリケーション、データ変換アプリケーション、データインポートアプリケーション、および/または他のデータのエンコーダに対応してもよい。バリアントサービス121を、周期的に不要なバリアントを削除するよう構成してもよい。
アプリケーション124は、ファイルシステム内に格納されたデータにアクセスしうるホストアプリケーションに対応する。種々のアプリケーション124は、例えばwebベースインタフェースを有してもよく、webページまたは他の形態のネットワークコンテンツのようなネットワークページを出力し、ユーザの相互作用を容易にしてもよい。他のアプリケーション124は、内部のアプリケーションであるかもしれないし、webベースインタフェースでないかもしれない。非限定のアプリケーション124の例は、写真編成ツール、音楽ファイルオーガナイザおよび再生ツール、ワードプロセッサ、スプレッドシート、電子メールアプリケーションなどを有してもよい。
データストア115内に格納されたデータは、例えば、ファイルシステム130、ファイル133、フォルダ136、ファイルバリアント137、クライアント情報138、および可能性がある他のデータを含む。ファイルシステム130は、1人または複数のユーザのために計算装置103内に保持される論理ファイル階層に対応する。種々の実施形態で、ファイルシステム130内で実現される論理ファイル階層は、ディスクドライブ、持ち運び可能な記憶媒体などのようないずれの特定の物理記憶装置に直接対応しない抽象概念である。各アカウントレベルのユーザは自身のファイルシステム130を有してもよく、ファイルシステム130は複数アカウントレベルのユーザに共有されてもよい。
それぞれのファイルシステム130を、アカウントデータ131、1つまたは複数のクライアントアソシエーション132、および/または他のファイルシステムメタデータに関連付けてもよい。アカウントデータ131は、計算装置103の権限を与えられたユーザに関する種々のデータを含む。そのようなアカウントデータ131は、例えばユーザ名、パスワード、セキュリティ証明、ファイル管理パーミッション、記憶割り当ておよび制限、権限を与えられたアプリケーション、課金情報、および/または他のデータを含んでもよい。クライアントアソシエーション132は、ファイルシステム130に関連する種々のクライアントを記述する。クライアントは例えばクライアント109のようなクライアント計算装置に対応してもよく、アプリケーション124のようなアプリケーション/サービスに対応してもよい。非限定の例として、ユーザはファイルシステム130にアクセスするため、タブレット計算装置、デスクトップワークステーション、およびスマートフォンを使用してもよい。クライアントアソシエーション132はまた、ブラウザアプリケーションのタイプ、プラグインの存在、電子メールアプリケーションなどのようなクライアント109の種々の機能を記述してもよい。従って、クライアントアソシエーション132は、バリアントサービス121および/または他のアプリケーションがそれぞれのファイルシステム130に関連するクライアントのタイプを判断するのを許可してもよい。クライアントアソシエーション132を自動的に検出してもよく、および/または手動で構成してもよい。
それぞれのファイルシステム130は、1つまたは複数のファイル133および1つまたは複数のフォルダ136を有してもよい。ファイル133は、ファイル名142、一意の識別子145、データオブジェクトリファレンス148、親オブジェクトリファレンス151、1つまたは複数のパーミッション、ファイル作成日、ファイル更新日、および/または他のデータを有してもよい。ファイル名142は、ファイル133の内容を識別する人間が可読な文字列に対応してもよい。いくつかの実施形態では、ファイル名142を文字長で制限してもよく、可能な文字に関して制限してもよい。一部のケースでは、そのような制限が互換性の理由から強いられるかもしれない。また種々の実施形態で、ファイル名142を、フォルダ136に対しておよび/またはファイルシステム130に対して一意であるよう制限してもよい。
一意の識別子145は、数字、文字列、またはファイルシステム130および/またはファイルシステム130の全てにわたってファイル133を一意的に識別する他の識別子に対応する。1つの実施形態では、ファイルシステム130の識別子で結びつけられたファイル133の一意の識別子145は、ファイルシステム130の全てにわたって一意の識別子に対応してもよい。他の実施形態で、ファイル133の一意の識別子145は、それ自身がファイルシステム130の全てにわたって一意であってもよい。
データオブジェクトリファレンス148は、データストア115または他のデータストアのようなデータストア内に格納されたファイル133に関連するデータオブジェクトを識別しうるリファレンスに対応する。1つの実施形態では、データオブジェクトリファレンス148は、統一リソース識別子(URI)を有してもよい。別の実施形態では、データオブジェクトリファレンス148は、データオブジェクトを取得するためのキー値を有してもよい。データオブジェクトの取得元のデータストアを、例えばデータオブジェクトリファレンス148内の定義から黙示的または明示的に判断してもよい。
親オブジェクトリファレンス151は、ファイル133の親とみなされるフォルダ136またはファイル133を識別するリファレンスに対応する。このようにして、フォルダ136はファイル133に関連付けられる。いくつかの状況では、親オブジェクトリファレンス151は、ファイルシステム130のルートフォルダ136を識別する特殊な識別子(例えばヌル、0など)を有してもよい。
それぞれのフォルダ136は、例えばフォルダ名157、一意の識別子160、親オブジェクトリファレンス163、パーミッション、および/または他のデータを有してもよい。いくつかの実施形態では、ファイル133と同一のデータ構造を用いてフォルダ136を実装してもよいことを述べておく。他の実施形態では、ファイル133と異なるデータ構造を用いてフォルダ136を実装してもよい。
一意の識別子160は、数字、文字列、またはファイルシステム130および/またはファイルシステム130の全てにわたってフォルダ136を一意的に識別する他の識別子に対応する。1つの実施形態では、ファイルシステム130の識別子で結びつけられたフォルダ136の一意の識別子160は、ファイルシステム130の全てにわたって一意の識別子に対応してもよい。他の実施形態で、フォルダ136の一意の識別子160は、それ自身がファイルシステム130の全てにわたって一意であってもよい。いくつかの実施形態では、一意の識別子160は、ファイル133の一意の識別子145に対しても一意であってもよい。
親オブジェクトリファレンス163は、フォルダ136の親とみなされるフォルダ136またはファイル133を識別しうるリファレンスに対応する。このようにして、フォルダ136は他のフォルダ136に関連付けられる。いくつかの状況では、親オブジェクトリファレンス163は、ファイルシステム130のルートフォルダ136を識別する特殊な識別子(例えばヌル、0など)を有してもよい。
ファイルバリアント137は、ファイル133または他のファイルバリアント137のバリアントである。ファイルバリアント137は、ファイル133または他のファイルバリアント137のデータを減少したバージョンであってもよい。非限定の例として、ファイル133がイメージに対応する場合、ファイル133に関連するファイルバリアント137は、サムネイルまたは他のイメージのようなイメージの減少バージョンに対応してもよい。非限定の他の例として、ファイル133がオーディオファイル133に対応する場合、ファイル133に関連するファイルバリアント137は、サンプルレートを低くし、ビットレートを低くし、圧縮率を上げ、および/または他の特性を変化させたオーディオファイル133の低解像度処理バージョンに対応してもよい。一部のケースで、ファイルバリアント137を、例えばスマートフォンといったモバイル計算装置のような特定のタイプのクライアント計算装置に関しカスタマイズまたは最適化してもよい。ファイルバリアント137も、特定のタイプまたはカテゴリのクライアント109構成への送出のためカスタマイズしてもよい。
それぞれのファイルバリアント137は、例えば、ファイル名164、一意の識別子165、データオブジェクトリファレンス166、親オブジェクトリファレンス167、1つまたは複数のクライアントアソシエーション168の記述、および/または他のデータを有してもよい。ファイル名164は、ファイルバリアント137の内容を識別する人間が可読な文字列に対応してもよい。いくつかの実施形態では、ファイル名164を文字長で制限してもよく、可能な文字に関して制限してもよい。一部のケースでは、そのような制限が互換性の理由から強いられるかもしれない。また種々の実施形態で、ファイル名164を、フォルダ136に対しておよび/またはファイルシステム130に対して一意であるよう制限してもよい。1つの実施形態では、ファイル名164は、識別子を識別してまたは識別することなく、ファイルバリアント137に関連する対応するファイル133のファイル名142に対応する。ファイル名164を、バリアントサービス121により自動的に生成してもよい。ファイルバリアント137が通常ユーザに隠される実施形態では、ファイル名164を隠し、またはなくしてもよい。
一意の識別子165は、数字、文字列、または特定のファイル133のファイルバリアント137の全てにわたって、またはファイルシステム130および/またはファイルシステム130の全てにわたってファイルバリアント137を一意的に識別する他の識別子に対応する。1つの実施形態では、ファイルシステム130の識別子で結びつけられたファイルバリアント137の一意の識別子165は、ファイルシステム130の全てにわたって一意の識別子に対応してもよい。1つの実施形態では、対応するファイル133の一意の識別子145に結びつけられたファイルバリアント137の一意の識別子165は、ファイルシステム130の全てにわたって一意の識別子に対応してもよい。他の実施形態で、ファイルバリアント137の一意の識別子165は、それ自身がファイルシステム130の全てにわたって一意であってもよい。
データオブジェクトリファレンス166は、データストア115または他のデータストアのようなデータストア内に格納されたファイルバリアント137に関連するデータオブジェクトを識別しうるリファレンスに対応する。1つの実施形態では、データオブジェクトリファレンス166は、統一リソース識別子(URI)を有してもよい。別の実施形態では、データオブジェクトリファレンス166は、データオブジェクトを取得するためのキー値を有してもよい。データオブジェクトの取得元のデータストアを、例えばデータオブジェクトリファレンス166内の定義から黙示的または明示的に判断してもよい。いくつかの実施形態では、ファイルバリアント137に対応するデータオブジェクトを、ファイル133に対応するデータオブジェクトと異なるデータストアに格納してもよい。非限定の例として、ファイルバリアント137に対応するデータオブジェクトを、データの持続性を減少させたデータストア内に格納してもよい。
親オブジェクトリファレンス167は、ファイルバリアント137の親とみなされるファイル133またはファイルバリアント137を識別しうるリファレンスに対応する。このようにして、ファイルバリアント137は、ファイルバリアント137が関連するファイル133または他のファイルバリアント137に結び付けられる。クライアントアソシエーション168は、ファイルバリアント137が関連するクライアント109の構成タイプを記述してもよい。非限定の例として、ファイルバリアント137を、スマートフォンのようなモバイル装置へのストリーミングのためカスタマイズしてもよい。従って、クライアントアソシエーション168は、ファイルバリアント137がカスタマイズされたユーザに関連する1つまたは複数のスマートフォンを識別してもよい。一部のケースで、サムネイルイメージのようなファイルバリアント137は、全てのクライアント109および構成に適用可能でありうる。
クライアント情報138は、例えば、クライアント109、アプリケーション124、および/または他のタイプのクライアントのような、クライアントの機能に関する情報を含む。クライアント情報138は、特定のコーデックで符号化されたオーディオファイルを復号可能か否か、ディスプレイ画面のサイズ、ネットワーク112の帯域幅の制限などのようなクライアントの機能を記述してもよい。1つの実施形態では、クライアント情報138は、クライアントのタイプとファイルバリアント137のタイプのアソシエーションを有してもよい。
計算装置106は、例えば、計算機能を提供するサーバコンピュータまたはあらゆる他のシステムを有してもよい。代わりに、例えば1つまたは複数のサーババンクまたはコンピュータバンクまたは他の装置内に配置された複数の計算装置106を採用してもよい。例えば、複数の計算装置106は、クラウド計算リソース、グリッド計算リソースおよび/またはあらゆる他の分散計算装置を共有してもよい。そのような計算装置106を単一の設置先に設置してもよく、または多地点の異なる地理的位置にまたがって分散してもよい。
便宜上、本明細書では計算装置106を単数形で記述する。本明細書の計算装置106を単数形で記述するが、前述のように種々の装置内の複数の計算装置106を採用してもよいことが理解される。さらに、計算装置106を計算装置103と分離して記載するが、いくつかの実施形態では、計算装置106と関連して記載されるアプリケーションおよびデータを、計算装置103内で提供してもよいことが理解される。一部のケースで、1つまたは複数の計算装置106を、計算装置103を作動するエンティティと異なるエンティティにより作動してもよい。
種々の実施形態による計算装置106内で、種々のアプリケーションおよび/または他の機能を実行してもよい。また、計算装置106にアクセス可能なデータストア178および持続性を減少させたデータストア179内に、種々のデータが格納される。データストア178および持続性を減少させたデータストア179は、理解できるように、複数のデータストア178および/または持続性を減少させたデータストア179を代表したものである。1つの実施形態では、データストア178および/または持続性を減少させたデータストア179は、ユーティリティ計算モデルによりデータが記憶されるクラウド記憶リソースに対応してもよい。1つの実施形態では、データストア178および/または持続性を減少させたデータストア179は、最終的に一致した記憶を提供してもよい。
持続性を減少させたデータストア179は、データストア178よりデータ持続性の低いレベルに関連する。すなわち、持続性を減少させたデータストア179内に格納されたデータが失われ、使用不可、またはアクセス不可能になる確率が、データストア178内に格納されたデータと比較してより高くなりうる。持続性を減少させたデータストア179は、例えばデータストア178と比較して、データの冗長コピーの格納をより少なく、またはハードウェアの冗長度のレベルをより低くしてもよい。1つの実施形態では、データストア178はデータストア178内に格納された他のデータを再生するために処理可能なデータを有してもよく、一方で持続性を減少させたデータストア179は、持続性を減少させたデータストア179内に格納された他のデータを再生するために処理可能なデータを除外してもよい。持続性を減少させたデータストア179は、データストア178と比較して、地理的な分散を少なくし、信頼がおける電源装置を少なくし、ネットワーク112への冗長接続を少なくし、および/または他のリソース制約を少なくしてもよい。
非限定の例として、データストア178を1年間にユーザに関するデータ項目が全く失われない99.9999%の確率と考えてもよく、一方で持続性を減少させたデータストア179は、1年間にユーザに関するデータ項目が全く失われない99.99%の確率であってもよい。そのようなパーセンテージは、持続性を減少させたデータストア179に関連する持続性レベルの減少を説明するために、単に例として示すものである。持続性を減少させたデータストア179はいくつかの実施形態ではなくてもよく、データを代わりにデータストア178内に格納してもよいことを述べておく。データストア178および持続性を減少させたデータストア179内に格納されたデータは、例えば後述の種々のアプリケーションおよび/または機能エンティティの動作に関連する。
計算装置106上で実行される構成要素は、例えば、データ記憶サービス181および他のアプリケーション、サービス、プロセス、システム、エンジン、または本明細書に詳細に述べない機能を含む。データ記憶サービス181は、データストア178にデータを格納およびデータストア178からデータを取り出すためのアクセスを提供するよう実行される。データ記憶サービス181はキーのような一意の識別子に基きデータを格納および取り出してもよく、キーは文字列、数字または他の識別子であってもよい。データ記憶サービス181のユーザが彼らのデータが実際にどのように格納されるかについて知識が不要であるように、データ記憶サービス181は下層の記憶レイヤを抽象化するよう機能してもよい。例えば、ユーザは彼らのデータがどのディスクドライブに、どの計算装置106に、どのデータセンタに格納されているかなどは知らないかもしれない。種々の実施形態で、ユーザはデータ格納に使用される実行特性またはハードウェアのタイプを指定可能であってもよい。例えばユーザは、データオブジェクトをデータストア178の代わりに持続性を減少させたデータストア179に格納するよう要求可能であってもよい。
持続性を減少させたデータストア179を有する実施形態で、データがファイルバリアント137であるかデータストア178内に格納された他のデータから得られたかに基き、データストア178か持続性を減少させたデータストア179かどちらかへデータの記憶を指示するようデータ記憶サービス181を構成してもよい。よって、データが持続性を減少させたデータストア179から失われたか使用不可である場合、データをデータストア178内に格納されたデータから再生してもよい。いくつかの実施形態では、ファイルサービス118、バリアントサービス121、および/または他のアプリケーションは、データストア178か持続性を減少させたデータストア179かどちらかへデータの記憶を指示してもよい。
データストア178内に格納されたデータは、例えば、データオブジェクト184および可能性がある他のデータを含む。データオブジェクト184は、ファイル133に関して格納されたデータに対応する。そのようなデータは、例えばテキストデータ、バイナリデータ、マルチメディアデータなどのようなあらゆるタイプのデータオブジェクトであってもよい。いくつかの実施形態では、データオブジェクト184はまた、ファイルバリアント137に関して格納されたデータに対応してもよい。持続性を減少させたデータストア179内に格納されたデータは、例えばデータオブジェクト185および可能性がある他のデータを含む。データオブジェクト185は、ファイルバリアント137に関して格納されたデータに対応する。そのようなデータは、例えば、テキストデータ、バイナリデータ、マルチメディアデータなどのようなあらゆるタイプのデータオブジェクトであってもよい。
いくつかの構成で、データオブジェクト184および185は単に他のデータオブジェクト184および185へのリファレンスであってもよいことを述べておく。例えば、複数のユーザが、彼らのファイルシステム130内に音楽ファイルのコピーを有するかもしれない。コピーは同一物なので、データオブジェクト184および185は単に共有されるデータのアドレスまたはポインタであってもよい。共有されるデータが更新されたとき、そのようなアソシエーションを、コピーオンライトシステムでアップデートしてもよい。一部のケースで、共有されるデータをコンテンツ送達ネットワークの外部に格納してもよい。
クライアント109は、ネットワーク112に接続されうる複数のクライアント装置を表現するものである。クライアント109は、例えばコンピュータシステムのようなプロセッサベースシステムを有してもよい。そのようなコンピュータシステムを、デスクトップコンピュータ、ラップトップコンピュータ、モバイル装置、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、音楽プレーヤー、ウェブパッド、タブレットコンピュータシステム、ゲームコンソール、電子ブックリーダ、または類似の機能を有する他の装置の形態で実現してもよい。クライアント109は、例えば陰極線管(CRT)、液晶ディスプレイ(LCD)スクリーン、ガスプラズマベースフラットパネルディスプレイ、LCDプロジェクタまたは他のタイプのディスプレイ装置などのような1つまたは複数のディスプレイ装置を有してもよい。
クライアント109を、クライアントアプリケーション187および/または他のアプリケーションのような種々のアプリケーションを実行するよう構成してもよい。クライアントアプリケーション187は、計算装置103の1つまたは複数のファイルシステム130内のファイル133およびフォルダ136を格納、取り出し、処理、および使用するよう実行される。1つの実施形態では、クライアントアプリケーション187は、ファイルサービス118、バリアントサービス121、および/またはアプリケーション124との相互作用を容易にする、計算装置103により提供されるネットワークページを実行するブラウザアプリケーションに対応する。1つの実施形態では、クライアントアプリケーション187はクライアント109のオペレーティングシステムと一体化し、クライアント109のあらゆるマウントされたファイルシステムと同様に、ファイルシステム130へのアクセスを提供する。クライアント109を、例えばブラウザアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および/または他のアプリケーションのようなクライアントアプリケーション187より上位のアプリケーションを実行するよう構成してもよい。
次に、ネットワーク化された環境100の種々の構成要素の動作の概要を記載する。まずユーザは、クライアントアプリケーション187または他のアプリケーション124を通して、1つまたは複数のファイルシステム130を作成またはアクセスするためアカウントを確立してもよい。ユーザをアクションを実行しているものとして記載する場合、ユーザが、アクションを実行するため少なくともクライアントアプリケーション187と相互に作用してもよいことが理解される。
ユーザは、最大記憶量要求、実行要求、料金プラン、アクセスパーミッション、セキュリティ証明書などのような種々のパラメータを規定してもよい。ユーザは課金情報を提供してもよく、および/または既存の課金情報がユーザに関連するかもしれない。従って、アカウントデータ131が事前設定され、ファイルシステム130が作成されるかもしれない。いくつかの実施形態では、ユーザはまた、ファイルシステム130にアクセスするであろう種々のタイプのクライアント109を規定してもよい。この情報を、例えばクライアントアソシエーション132内に格納してもよい。
ユーザは、アプリケーション124またはクライアントアプリケーション187経由でファイルをファイルシステム130へ転送してもよい。そのような転送は、ユーザによるクライアント109から計算装置103または計算装置106へのファイルのアップロードを含みうる。他のケースで、ユーザは計算装置103に関連するオンライン小売業者からファイル(例えば、音楽ファイル)を購入してもよく、ファイルをアプリケーション124経由でファイルシステム130へ自動的に保存してもよい。
ファイルがファイルシステム130に転送されるとき、ファイルサービス118によりファイルシステム130内でファイル133が作成される。ファイル名142は送り側ファイルに関連するオリジナルのファイル名に対応してもよく、またはファイル名142をユーザまたはアプリケーション124により明示的に規定してもよい。一意の識別子145が、ファイル133に対して生成される。送り側ファイルに関連するデータに対応するデータオブジェクト184が、データ記憶サービス181と相互に作用するファイルサービス118によりデータストア178内に格納される。格納されたデータオブジェクト184に対応するデータオブジェクトリファレンス148が、それからファイル133について記録される。親オブジェクトリファレンス151を、任意選択的にファイル133について規定してもよい。親オブジェクトリファレンス151が規定されない場合、ファイル133はファイルシステム130に関するルートフォルダ136にあるとみなしてもよい。
またフォルダ136を、ユーザおよび/またはアプリケーション124により作成またはインポートしてもよい。フォルダ名157は送り側フォルダに関連するオリジナル名に対応してもよく、またはフォルダ名157をユーザまたはアプリケーション124により明示的に規定してもよい。一意の識別子160が、フォルダ136に対して生成される。親オブジェクトリファレンス163を、任意選択的にフォルダ136について規定してもよい。親オブジェクトリファレンス163が規定されない場合、フォルダ136はファイルシステム130に関するルートフォルダ136にあるとみなしてもよい。
ファイル133、フォルダ136、またはファイルシステム130に関連する種々のデータは、iノード、vノード、ファイル割り当てテーブル、または物理ファイルシステムに関連するいずれの他のデータ構造にも記録される必要がないことを述べておく。種々の実施形態で、ファイル133、フォルダ136、およびファイルシステム130に関連するデータを、リレーショナルデータベース管理システム(RDBMS)または類似のデータベース管理システム内のデータとして保持してもよい。
ファイルサービス118は、例えば名前の変更、コピー、移動、削除、再利用、アップロード、ダウンロードなどのようなファイル133およびフォルダ136に関連する種々の操作を補助してもよい。ファイル133またはフォルダ136の名前が変更されたとき、ファイル名142またはフォルダ名157は更新されるが、データオブジェクト184には変化は起こらない。ファイル133またはフォルダ136がコピーされたとき、同一のデータオブジェクト184を指すため、複製のファイル133またはフォルダ136(および内容)を作成してもよい。必要があるとき、コピーオンライトまたは他の方法論によりデータオブジェクト184自身を複製してもよい。
ファイル133またはフォルダ136が移動されたとき、下層のデータオブジェクト184を変更することなく、親オブジェクトリファレンス151または163を更新してもよい。同様に、下層のデータオブジェクト184が格納された場所に関して変更がなされたとき、ファイル133またはフォルダ136は変更されないままであってもよい。ファイル133またはフォルダ136が削除されたとき、データオブジェクト184を指す他のファイル133がなければ、データオブジェクト184を削除してもよい。一部のケースで、アップロードおよびダウンロード機能は、データ記憶サービス181と直接インタフェースで接続するクライアントアプリケーション187を含んでもよい。前述のような操作の実施はデータストア178内のデータオブジェクト184への更新を制限し、これは時間またはコストがかかるかもしれない。
ファイルシステム130内でファイル133が作成されるとき、ファイル133がアクセスされるとき、および/または他の時間に、種々のファイル133についてファイルバリアント137を作成してもよい。ファイルバリアント137は、データが減少されうる、および/または特定のタイプのクライアント109またはアプリケーション124への送達のためにカスタマイズされうるファイル133のバリアントに対応する。一部のケースで、ファイルバリアント137を、少なくとも部分でファイル133の派生物であるといってもよい。他のケースで、ファイルバリアント137をファイル133に単に関連付けてもよい。さらに、いくつかのファイルバリアント137は、全てのクライアント109およびアプリケーション124に適用可能であってもよい。
一部のケースで、バリアントサービス121はファイル133についてファイルバリアント137の保持を担当してもよい。ファイルバリアント137がクライアント109またはアプリケーション124の特定の特性にカスタマイズされている場合、ファイルバリアント137は、モバイルストリーミングを容易にするようデータを減少してもよく、クライアント109での表示のため低解像度処理またはサイズ変更してもよく、クライアント109に関連するアプリケーションプラットフォームについて前処理してもよく、または符号化してもよい。種々のバリアントエンコーダ122を、符号化の実行に採用してもよい。
非限定の例として、ユーザはファイルシステム130内にオーディオファイル133のライブラリを有してもよい。そのようなオーディオファイル133を、最初は、秒あたり256キロビットのビットレートでの動画専門家集団(MPEG)レイヤ3(MP3)のような高ビットレートフォーマットでファイルシステム130内に置いてもよい。そのようなフォーマットを、無損失またはほぼ無損失とみなしてもよい。しかし、ユーザは、比較的低い帯域幅で接続の損失時間に影響されやすいネットワーク112と接続するモバイル計算装置を通して、オーディオファイル133を聞きたいと思うかもしれない。
従って、バリアントサービス121は、モバイル計算装置への送達用途にカスタマイズされたファイル133のバージョンに対応するファイル133についてのファイルバリアント137を生成してもよい。例えば、秒あたり64キロビットのビットレートをモバイル計算装置のタイプに最適と考えてもよい。バリアントエンコーダ122はMP3オーディオコーデックに対応してもよく、高ビットレートのオーディオファイル133を低ビットレートのファイルバリアント137に符号化するよう構成してもよい。
ユーザがモバイル計算装置からオーディオファイル133にアクセスするとき、適切なファイルバリアント137を自動的に代用してもよい。そのような代用は、透明でも非透明でもよい。例えば、ユーザは、単にストリームではなくプログレッシブダウンロードとして、オリジナルの高ビットレートのオーディオファイル133をダウンロードしたいかもしれない。バリアントサービス121および/またはファイルサービス118は、ユーザにオリジナルのオーディオファイル133をダウンロードする選択肢を許可してもよい。そのような選択肢を、ファイル133に対する要求のコンテキストにより自動的に選択してもよい。
他の非限定の例として、ユーザはタブレット計算装置で文書をダウンロードしたいと思うことがありうる。文書は、もともと大きなワイドスクリーンのディスプレイモニタでの表示に合わせ作成されていることがありうる。ユーザがタブレット計算装置からファイル133を要求したことを検出し、ファイルバリアント137を適切に符号化するよう、バリアントサービス121を構成してもよい。ファイルバリアント137は、タブレット計算装置のディスプレイに対しカスタマイズされた文書のサイズ変更バージョンであってもよい。
さらに他の非限定の例として、ユーザは、複数の高解像度のイメージファイル133をファイルシステム130にアップロードするかもしれない。バリアントサービス121は、ファイルシステム130に関連するクライアント109のタイプにかかわらず、低解像度でサイズを減少したイメージファイル133のサムネイルに対応するファイルバリアント137を自動的に作成してもよい。ファイルバリアント137であるサムネイルイメージを、フォトアルバムであるアプリケーション124により自動的に検出し、オリジナルの高解像度のイメージファイル133にアクセスする選択肢を付けて、サムネイルを含むアルバムページを実行するのに使用してもよい。
さらに他の非限定の例として、ユーザは、音楽ファイル133をファイルシステム130にアップロードするかもしれない。外部のデータを用いて、バリアントサービス121は音楽ファイル133を識別し、音楽ファイル133に関連するアルバムのカバーアートに対応するファイルバリアント137を作成してもよい。アルバムのカバーアートに対応する1つまたは複数のイメージをデータストア178または179に格納し、音楽ファイル133の1つまたは複数のファイルバリアント137にリンクしてもよい。1つの例では、最初のファイルバリアント137はカバーアートの高解像度バージョンであってもよく、一方でファイルバリアント137のバリアントはカバーアートのサムネイルバージョンであってもよい。
いくつかの実施形態では、ファイルバリアント137の下層のデータを、データが失われるまたはアクセス不可能な可能性がより高い、持続性を減少させたデータストア179に格納してもよい。ファイルバリアント137は持続性のレベルがより高いデータストア178内に格納されたデータオブジェクト184から再生可能なので、持続性の減少はファイルバリアント137にとって問題でないかもしれない。持続性を減少させたデータの記憶は、高い持続性のデータの記憶より低いコストおよび/または他の利点を有するかもしれない。
さらに、ファイルバリアント137が予め定められた長さの時間内に使用されなかった、または使用されないと予測されるとき、バリアントサービス121を、ファイルバリアント137またはそれらの下層のデータを周期的に削除するよう構成してもよい。例えば、いくつかのファイルバリアント137をタブレット計算装置に対し生成するかもしれないが、ユーザはタブレット計算装置を売却してファイルバリアント137に再度アクセスすることはないかもしれない。よって、適用可能なファイルバリアント137を安全に削除してもよい。ユーザが他のタブレット計算装置からファイル133にアクセスする場合でも、新しいファイルバリアント137をオリジナルのファイル133から要求に応じて、または適切なときに再生してもよい。
バリアントサービス121を、クライアント情報138により、クライアント109またはアプリケーション124の機能に対しカスタマイズされたファイルバリアント137を識別するよう構成してもよい。どのタイプのクライアント109またはアプリケーション124がファイル133を要求しているか認識すると、バリアントサービス121は、クライアント情報138内のクライアント109またはアプリケーション124の機能を参照してもよい。バリアントサービス121は、その機能が要求されたファイル133に関連する1つまたは複数のファイルバリアント137の特性に合致するかどうか判断してもよい。1つの実施形態では、最もよく合致するファイルバリアント137を返してもよい。別の実施形態では、互換性があるファイル133についての全てのファイルバリアント137を返してもよい。
いくつかの実施形態では、バリアントサービス121をクライアント109でユーザに公開し、ユーザが特定のファイル133についてのファイルバリアント137の一覧を得て、一覧からファイルバリアント137を要求することを可能にしてもよい。そのようなファイルバリアント137は、存在するかもしれないし存在しないかもしれない。要求されたファイルバリアント137が存在しない場合、バリアントサービス121によって要求により生成してもよい。1つの例では、ユーザはクライアント109の説明をバリアントサービス121に提供し、それからバリアントサービス121が特定のクライアント109に関するファイルバリアント137を判断してもよい。
次に図2を参照すると、種々の実施形態によるファイルサービス118の部分の動作の1つの例を提供するフローチャートが示される。特に、図2は、ファイルシステム130(図1)内のファイル133(図1)の格納、および必要に応じてファイルバリアント137(図1)の作成に関する。図2のフローチャートは、本明細書に記載されたファイルサービス118の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図2のフローチャートを、1つまたは複数の実施形態による計算装置103(図1)内で実行される方法のステップの例を示すものとして見てもよい。図2のタスクはファイルサービス118により実行されるものとして記載するが、他の実施形態では、図2の1つまたは複数のタスクを、バリアントサービス121(図1)、データ記憶サービス181(図1)、および/または他のアプリケーションにより実行してもよい。
ボックス203から開始すると、ファイルサービス118はファイルシステム130内にファイル133を格納する要求を受け取る。そのような要求は、クライアントアプリケーション187(図1)またはアプリケーション124(図1)から起こるかもしれない。ボックス206で、ファイルサービス118は、クライアントアプリケーション187またはアプリケーション124からファイル133に対応するデータオブジェクト184(図1)を取得する。ボックス209で、ファイルサービス118は、データストア178(図1)内にデータオブジェクト184を格納する。
ボックス212で、ファイルサービス118は、ファイルシステム130内にファイル133を作成する。この目的を達成するために、ファイルサービス118は、要求によりファイル名142(図1)を設定し、ファイル133について一意の識別子145(図1)を生成し、データオブジェクトリファレンス148(図1)としてデータストア178内に格納されたデータオブジェクト184にリファレンスを設定し、親オブジェクトリファレンス163(図1)として親フォルダ136(図1)の一意の識別子160(図1)を設定し、およびファイル133についてのパーミッションおよび/または他のメタデータを設定してもよい。
ボックス215で、ファイルサービス118は、ファイルシステム130および/またはファイル133に関連するクライアントを判断する。非限定の例として、ファイルシステム130に関連するユーザは、電子ブックリーダ、ラップトップコンピュータ、およびスマートフォンのようなクライアント109を以前に使用したかもしれず、または明示的に構成したかもしれない。さらに、ユーザは、どのバージョンのファイル133が使用されるかに影響しうるブラウザアプリケーション、音楽プレーヤー、文書処理アプリケーションなどのような特定のクライアントアプリケーション187を使用したかもしれない。
ボックス218で、ファイルサービス118は、ファイル133について1つまたは複数のファイルバリアント137を生成するべきかどうか判断する。一部のケースで、そのような判断は、ファイルシステム130および/またはファイル133に関連するクライアント109による。他のケースで、そのような判断は、クライアント109から独立してもよい。ファイル133についてファイルバリアント137が生成されない場合、ファイルサービス118の部分は終了する。そうでなければ、ファイルサービス118はボックス221へ進む。
ボックス221で、ファイルサービス118は、1つまたは複数の適切なバリアントエンコーダ122(図1)を用いてデータオブジェクト184を符号化し、1つまたは複数の符号化されたデータオブジェクトを得る。符号化されたデータオブジェクトは、ボックス224でデータストア内に格納される。1つの実施形態では、符号化されたデータオブジェクトは、持続性を減少させたデータストア179(図1)内にデータオブジェクト185(図1)として格納される。別の実施形態では、符号化されたデータオブジェクトは、データストア178内にデータオブジェクト184として格納される。
ボックス227で、ファイルサービス118は、ファイルシステム130内で符号化されたデータオブジェクトを参照する1つまたは複数のファイルバリアント137を作成する。この目的を達成するために、ファイルサービス118は、ファイルバリアント137についてそれぞれのファイル名164(図1)および一意の識別子165(図1)を生成してもよい。ファイルサービス118は、データストア178または持続性を減少させたデータストア179内に格納されたそれぞれの符号化されたデータオブジェクトの識別子を指すため、ファイルバリアント137についてデータオブジェクトリファレンス166(図1)を設定してもよい。ファイルサービス118は、ファイル133の一意の識別子145となるようそれぞれのファイルバリアント137について親オブジェクトリファレンス167(図1)を設定してもよい。その後、ファイルサービス118の部分は終了する。
図3に移ると、種々の実施形態によるファイルサービス118の他の部分の動作の1つの例を提供するフローチャートが示される。特に、図3は、ファイルシステム130(図1)内のファイル133(図1)のアクセスに関する。図3のフローチャートは、本明細書に記載されたファイルサービス118の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図3のフローチャートを、1つまたは複数の実施形態による計算装置103(図1)内で実行される方法のステップの例を示すものとして見てもよい。図3のタスクはファイルサービス118により実行されるものとして記載するが、他の実施形態では、図3の1つまたは複数のタスクを、バリアントサービス121(図1)、データ記憶サービス181(図1)、および/または他のアプリケーションにより実行してもよい。
ボックス303から開始すると、ファイルサービス118は、ファイル133にアクセスするためクライアント109(図1)から要求を受け取る。要求を、直接クライアントアプリケーション187(図1)から、またはアプリケーション124(図1)を通して受け取ってもよい。ボックス306で、ファイルサービス118は、クライアント109のタイプおよび/またはファイル133のタイプにより、ファイル133の代わりにファイルバリアント137(図1)を提供すべきかどうか判断する。ファイルバリアント137が提供されない場合、ファイルサービス118はボックス309へ続き、データストア178(図1)から要求されたファイル133に対応するデータオブジェクト184(図1)を取得し、データオブジェクト184をクライアント109へ送信する。データストア178は、いくつかの実施形態では持続性が高いデータストア178に対応してもよいことを述べておく。その後、ファイルサービス118の部分は終了する。
そうでなければ、ファイルバリアント137が提供されるべき場合、ファイルサービス118はボックス306からボックス312へ移る。ボックス312で、ファイルサービス118は、ファイルバリアント137がファイルシステム130内に存在するかどうか判断する。より具体的にいうと、いくつかの実施形態では、ファイルサービス118は対応する符号化されたデータオブジェクト185(図1)が存在するかどうか判断してもよい。クライアント109について適切なファイルバリアント137が存在する場合、ファイルサービス118は、持続性を減少させたデータストア179(図1)からデータオブジェクト185(図1)を取得し、データオブジェクト185をクライアント109に送信する。いくつかの実施形態では、ファイルバリアント137は、代わりにデータストア178内に格納されたデータオブジェクト184を示してもよい。そのようなケースでは、対応するデータオブジェクト184が取得され、クライアント109に送信される。その後、ファイルサービス118の部分は終了する。
そうでなければ、ファイルバリアント137が存在しない場合、ファイルサービス118はボックス312からボックス318へ移る。ボックス318で、ファイルサービス118は、ファイル133に対応するデータオブジェクト184からファイルバリアント137に対応する符号化されたデータオブジェクトを生成する。いくつかの実施形態で、種々のバリアントエンコーダ122(図1)を採用してもよく、バリアントサービス121はこのタスクと連動してもよい。ボックス321で、ファイルサービス118は、ファイルバリアント137に対応する符号化されたデータオブジェクトを、データオブジェクト185として持続性を減少させたデータストア179内に格納する。他の実施形態では、ファイルサービス118は、代わりにファイルバリアント137に対応する符号化されたデータオブジェクトを、データオブジェクト184としてデータストア178内に格納してもよい。
ボックス324で、ファイルサービス118は、ファイルシステム130内にファイルバリアント137を作成する。この目的を達成するために、ファイルサービス118は、ファイルバリアント137についてそれぞれのファイル名164(図1)および一意の識別子165(図1)を生成してもよい。ファイルサービス118は、データストア178または持続性を減少させたデータストア179内に格納されたそれぞれの符号化されたデータオブジェクトの識別子を指すため、ファイルバリアント137についてデータオブジェクトリファレンス166(図1)を設定してもよい。ファイルサービス118は、ファイル133の一意の識別子145(図1)となるようそれぞれのファイルバリアント137について親オブジェクトリファレンス167(図1)を設定してもよい。ボックス327で、ファイルサービス118は、ファイルバリアント137に対応する符号化されたデータオブジェクトをクライアント109に送信する。1つの実施形態では、符号化されたデータオブジェクトを生成しおよび格納する間にクライアント109に送信してもよい。そのような最適化が、送信前のデータオブジェクトの符号化およびその格納に関連する遅延を減少させるかもしれない。その後、ファイルサービス118の部分は終了する。
図4に移ると、種々の実施形態によるファイルサービス118のさらに他の部分の動作の1つの例を提供するフローチャートが示される。特に図4は、ファイルシステム130(図1)内のファイル133(図1)の削除に関する。図4のフローチャートは、本明細書に記載されたファイルサービス118の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図4のフローチャートを、1つまたは複数の実施形態による計算装置103(図1)内で実行される方法のステップの例を示すものとして見てもよい。図4のタスクはファイルサービス118により実行されるものとして記載するが、他の実施形態では、図4の1つまたは複数のタスクを、バリアントサービス121(図1)、データ記憶サービス181(図1)、および/または他のアプリケーションにより実行してもよい。
ボックス403から開始すると、ファイルサービス118は、ファイル133を削除するためクライアント109から要求を受け取る。特に要求を、クライアントアプリケーション187(図1)から、またはアプリケーション124(図1)から受け取ってもよい。ボックス406で、ファイルサービス118は、データオブジェクトリファレンス148(図1)により識別されたとして、ファイル133に対応するデータオブジェクト184(図1)の削除を開始する。1つの実施形態では、データオブジェクト184の削除時、競合状態を避けるため遅延または待機時間を採用してもよい。
ボックス409で、ファイルサービス118は、あらゆるファイルバリアント137(図1)がファイル133に関連しているかどうか判断する。言い換えれば、ファイルサービス118は、あらゆるファイルバリアント137がファイル133の一意の識別子145(図1)であるよう設定された親オブジェクトリファレンス167(図1)を有するかどうか判断する。ファイルバリアント137がファイル133に関連しない場合、ファイルサービス118はボックス412へ進み、ファイルシステム130からファイル133を削除する。その後、ファイルサービス118の部分は終了する。しかし、ファイルバリアント137がファイル133に関連する場合、ファイルサービス118は代わりにボックス415へ続く。
ボックス415で、ファイルサービス118は、ファイルバリアント137に対応するデータオブジェクト185(図1)および/またはデータオブジェクト184の削除を開始する。これは、ファイルバリアント137のバリアントを含んでもよい。1つの実施形態では、データオブジェクト184、185の削除時、競合状態を避けるため遅延または待機時間を採用してもよい。ボックス418で、ファイルサービス118は、ファイルシステム130からファイルバリアント137(およびそのあらゆるバリアント)を削除する。ボックス412で、ファイルサービス118は、ファイルシステム130からファイル133を削除する。その後、ファイルサービス118の部分は終了する。
次に図5を参照すると、種々の実施形態によるデータ記憶サービス181の部分の動作の1つの例を提供するフローチャートが示される。図5のフローチャートは、本明細書に記載されたデータ記憶サービス181の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図5のフローチャートを、1つまたは複数の実施形態による計算装置106(図1)内で実行される方法のステップの例を示すものとして見てもよい。図5のタスクはデータ記憶サービス181により実行されるものとして記載するが、他の実施形態では、図5の1つまたは複数のタスクを、バリアントサービス121(図1)、ファイルサービス118(図1)、および/または他のアプリケーションにより実行してもよい。
ボックス503から開始すると、データ記憶サービス181は、データオブジェクトを格納する要求を受け取る。そのような要求は、例えばファイルサービス118、バリアントサービス121、または他のアプリケーションから受け取ってもよい。ボックス506で、データ記憶サービス181は、データオブジェクトがファイルバリアント137(図1)に対応するかどうか判断する。データオブジェクトがファイルバリアント137に対応する場合、データ記憶サービス181はボックス509へ進み、データオブジェクト185(図1)としてデータオブジェクトを持続性を減少させたデータストア179(図1)内に格納する。1つの実施形態では、データ記憶サービス181はまた、データオブジェクト185の識別子を要求側に返してもよい。その後、データ記憶サービス181の部分は終了する。
そうでなければ、データ記憶サービス181が、データオブジェクトがファイルバリアント137に対応しないと判断する場合、データ記憶サービス181はボックス512へ続く。ボックス512で、データ記憶サービス181は、データオブジェクトをデータオブジェクト184(図1)としてデータストア178(図1)内に格納し、データストア178は持続性を減少させたデータストア179より高いレベルのデータ持続性に関連する。1つの実施形態では、データ記憶サービス181は、データオブジェクト184の識別子を要求側に返してもよい。その後、データ記憶サービス181の部分は終了する。
図6に続くと、種々の実施形態によるバリアントサービス121の部分の動作の1つの例を提供するフローチャートが示される。図6のフローチャートは、本明細書に記載されたバリアントサービス121の部分の動作を実行するために採用されうる多くの異なるタイプの機能の取り合わせの例を単に提供するのみであることが理解される。代わりに、図6のフローチャートを、1つまたは複数の実施形態による計算装置103(図1)内で実行される方法のステップの例を示すものとして見てもよい。図6のタスクはデータ記憶サービス181により実行されるものとして記載するが、他の実施形態では、図6の1つまたは複数のタスクを、ファイルサービス118(図1)、および/または他のアプリケーションにより実行してもよい。
ボックス603から開始すると、バリアントサービス121は、ユーザのファイルシステム130(図1)に関連するクライアント109(図1)を判断する。図6と関連してクライアント109を述べるが、図6の原理をアプリケーション124(図1)と定義された機能および優先性に適用してもよいことが理解される。非限定の例として、ファイルシステム130に関連するユーザは、電子ブックリーダ、ラップトップコンピュータ、およびスマートフォンのようなクライアント109を以前に使用したかもしれず、または明示的に構成したかもしれない。さらに、ユーザは、どのバージョンのファイル133(図1)が使用されるかに影響しうるブラウザアプリケーション、音楽プレーヤー、文書処理アプリケーションなどのような特定のクライアントアプリケーション187(図1)を使用したかもしれない。ボックス606で、バリアントサービス121は、ユーザのファイルシステム130に関連するファイルバリアント137(図1)を判断する。
ボックス609で、ファイルバリアント137のうちの1つについて、バリアントサービス121はファイルバリアント137がユーザにもはや関連しないクライアント109に関連するかどうか判断する。ファイルバリアント137がユーザ(またはファイルシステム130)にもはや関連しないクライアント109に関連する場合、バリアントサービス121はボックス612に移り、ファイルバリアント137に対応するデータオブジェクト185(図1)を持続性を減少させたデータストア179(図1)から削除する。ファイルバリアント137を、その後ファイルシステム130から削除してもよい。種々の実施形態で、クライアント109が関連付けを解かれるときと削除が開始されるときの間に、いくぶんかの時間が経過しうる。また、バリアントサービス121はファイルバリアント137が他のクライアント109に対して使用可能でありうると判断するかもしれず、このケースでは、バリアントサービス121はファイルバリアント137を削除しないと決定するかもしれない。バリアントサービス121は、ボックス615に続く。
ボックス609で、バリアントサービス121が、ファイルバリアント137がユーザにもはや関連しない、クライアント109に関するものではないと判断する場合、バリアントサービス121はボックス618へ進む。ボックス618で、バリアントサービス121は、ファイルバリアント137が予め定められた長さの時間内にアクセスされたかどうか、そうでなければ保持基準を満たすかどうか判断する。バリアントサービス121が保持基準を満たさない場合、バリアントサービス121はボックス612へ続き、ファイルバリアント137に対応するデータオブジェクト185を持続性を減少させたデータストア179から削除する。ファイルバリアント137を、その後ファイルシステム130から削除してもよい。バリアントサービス121は、ボックス615へ続く。
ボックス615で、バリアントサービス121は、他のファイルバリアント137が処理待ちであるかどうか判断する。そうであれば、バリアントサービス121はボックス609に戻り、他のファイルバリアント137の評価を開始する。他のファイルバリアント137が処理待ちでない場合、バリアントサービス121の部分は終了する。
図7を参照すると、本開示の実施形態による計算装置103の概略ブロック図が示される。計算装置103は、例えばプロセッサ703およびメモリ706を持つ少なくとも1つのプロセッサ回路を有し、プロセッサ703およびメモリの両方がローカルインタフェース709に接続される。この目的を達成するために、計算装置103は、例えば少なくとも1つのサーバコンピュータまたは同様の装置を備えてもよい。ローカルインタフェース709は、例えばアドレス/制御バスが付いたデータバスまたは認識可能な他のバス構造を備えてもよい。図7では計算装置103を示すが、計算装置106が類似の構造であってもよいことが理解される。
メモリ706内に、データおよびプロセッサ703により実行可能ないくつかの構成要素の両方が格納される。特に、ファイルサービス118、バリアントサービス121、バリアントエンコーダ122、アプリケーション124、およびもしかすると他のアプリケーションが、メモリ706内に格納され、プロセッサ703により実行可能である。また、データストア115および他のデータもメモリ706内に格納してもよい。さらに、オペレーティングシステムをメモリ706内に格納し、プロセッサ703により実行可能である。
理解できるように、メモリ706内に格納され、プロセッサ703により実行可能な他のアプリケーションがあってもよいことが理解される。本明細書で述べたあらゆる構成要素がソフトウェアの形態で実装される場合、例えば、C、C++、C#、オブジェクティブC、Java(登録商標)、JavaScript(登録商標)、Perl、PHP、ビジュアルベーシック(登録商標)、Python(登録商標)、Ruby、Delphi(登録商標)、Flash(登録商標)、または他のプログラミング言語のような多数のプログラミング言語のうちいずれも採用してよい。
多数のソフトウェア構成要素がメモリ706内に格納され、プロセッサ703により実行可能である。この点で、「実行可能」の語は、プロセッサ703により最終的に実行可能な形態のプログラムファイルを意味する。実行可能プログラムの例は、例えば、メモリ706のランダムアクセス部分内にロード可能で、プロセッサ703により実行可能なフォーマットの機械コードに翻訳可能なコンパイルされたプログラム、メモリ706のランダムアクセス部分内にロード可能でプロセッサ703により実行可能なオブジェクトコードのような適切なフォーマットで記述しうるソースコード、他の実行可能プログラムが解釈し、メモリ706のランダムアクセス部分内でプロセッサ703により実行される命令を生成しうるソースコードなどであってもよい。実行可能プログラムを、例えばランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、ハードドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカード、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)のような光ディスク、フロッピー(登録商標)ディスク、磁気テープ、または他のメモリ構成要素を含むメモリ706のあらゆる部分または構成要素に格納してもよい。
メモリ706は、揮発性メモリおよび不揮発性メモリの両方、およびデータ記憶構成要素を含むものとして本明細書では定義する。揮発性構成要素は、電源損失時にデータの値を保持しないものである。不揮発性構成要素は、電源損失時にデータを保持するものである。よって、メモリ706は、例えばランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカードリーダ経由でアクセスするメモリカード、関連するフロッピーディスクドライブ経由でアクセスするフロッピーディスク、光ディスクドライブ経由でアクセスする光ディスク、適切な磁気テープドライブ経由でアクセスする磁気テープ、および/または他のメモリ構成要素、またはあらゆる2つ以上のこれらのメモリ構成要素の組み合わせを備えてもよい。また、RAMは、例えばスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、または磁気ランダムアクセスメモリ(MRAM)および他のそのような装置を備えてもよい。ROM、例えばプログラム可能読み出し専用メモリ(PROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、または他の同様のメモリ装置を備えてもよい。
また、プロセッサ703は複数のプロセッサ703を、メモリ706は平行処理回路内で作動する複数のメモリ706を、それぞれ表しうる。そのようなケースでは、ローカルインタフェース709は、複数のプロセッサ703のいずれか2つの間、いずれかのプロセッサ703といずれかのメモリ706の間、またはメモリ706のいずれか2つの間などの通信を容易にする適切なネットワーク112(図1)であってもよい。ローカルインタフェース709は、例えば負荷分散の実行を含む、この通信に連動するよう設計された付加的なシステムを備えてもよい。プロセッサ703は、電気的構造またはいくつかの他の可能な構造であってもよい。
前述したように、ファイルサービス118、バリアントサービス121、バリアントエンコーダ122、アプリケーション124、データ記憶サービス181(図1)、および本明細書に記載された他の種々のシステムを、汎用ハードウェアにより実行されるソフトウェアまたはコードで実現してもよいが、代替として同一のものを専用ハードウェアまたはソフトウェア/汎用ハードウェアおよび専用ハードウェアの組み合わせで実現してもよい。専用ハードウェアで実現する場合、それぞれを、多数の技術のうちのいずれか1つまたは組み合わせを採用する回路またはステートマシンとして実装可能である。これらの技術は、1つまたは複数のデータ信号のアプリケーションに種々の論理機能を実装するための論理ゲートを有する個別論理回路、適切な論理ゲートを有する特定用途内蔵回路、または他の構成要素などを含んでもよいが、それらに限定されない。そのような技術は一般的に当業者に公知であり、よって本明細書に詳細に記載しない。
図2〜図6のフローチャートは、ファイルサービス118、バリアントサービス121、およびデータ記憶サービス181の部分の実行の機能および動作を示す。ソフトウェアで実現する場合、それぞれのブロックは、特定の論理機能を実施するプログラム命令を有するモジュール、セグメント、またはコードの部分を表しうる。プログラム命令を、プログラミング言語で書かれた人間が可読な記述を有するソースコード、またはコンピュータシステム内のプロセッサ703のような適切な実行システムまたは他のシステムにより認識可能な数字命令を有する機械コードの形態で実現してもよい。機械コードを、ソースコードなどから変換してもよい。ハードウェアで実現する場合、それぞれのブロックは、特定の論理機能を実施する回路または多数の相互接続された回路を表す。
図2〜図6のフローチャートは実行の特定の順序を示すが、実行の順序は示されたものと異なってもよいことが理解される。例えば、2つ以上のブロックの実行順序は、示された順序に対して変えてもよい。また、図2〜図6の連続で示された2つ以上のブロックを、同時にまたは部分的に同時に実行してもよい。さらに、いくつかの実施形態では、図2〜図6に示された1つまたは複数のブロックをとばすまたは省略してもよい。また、ユーティリティの強化、課金、性能測定、または問題解決補助などの目的で、任意数のカウンタ、状態変数、警告セマフォ、またはメッセージを、本明細書に記載された論理フローに追加してもよい。全てのそのような変形は、本開示の範囲内であることが理解される。
また、ファイルサービス118、バリアントサービス121、バリアントエンコーダ122、アプリケーション124、およびデータ記憶サービス181を含む本明細書に記載されたソフトウェアまたはコードを有するあらゆるロジックまたはアプリケーションを、例えばコンピュータシステム内のプロセッサ703または他のシステムのような命令実行システムまたは他のシステムにより、またはそれと関連して、使用のためあらゆる非一過性コンピュータ可読な媒体で実現可能である。この意味で、ロジックは、例えばコンピュータ可読な媒体から取り出し可能で命令実行システムにより実行可能な命令および宣言を含む記述を有してもよい。本開示の文脈で、「コンピュータ可読な媒体」は、命令実行システムにより、またはそれと関連して、使用のための本明細書に記載されたロジックまたはアプリケーションを内蔵、格納、または保持可能なあらゆる媒体でありうる。コンピュータ可読な媒体は、例えば、磁気、光、または半導体媒体のような多数の物理媒体のいずれの1つを含みうる。適切なコンピュータ可読な媒体のより特定した例は、磁気テープ、磁気フロッピーディスク、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、USBフラッシュドライブ、または光ディスクを含むだろうが、それらに限定されない。またコンピュータ可読な媒体は、例えばスタティックランダムアクセスメモリ(SRAM)およびダイナミックランダムアクセスメモリ(DRAM)、または磁気ランダムアクセスメモリ(MRAM)を含むランダムアクセスメモリ(RAM)であってもよい。また、コンピュータ可読な媒体は、読み出し専用メモリ(ROM)、プログラム可能読み出し専用メモリ(PROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、または他のタイプのメモリ装置であってもよい。
本出願は、2011年3月14日出願の米国特許出願第13/047,343号、”VARIANS OF FILES IN A FILE SYSTEM”の権利を主張し、その全ての内容は参照により本明細書に組み込まれる。
付記項
1.
少なくとも1つの計算装置内で実行可能なプログラムを記録する非一過性のコンピュータ可読な媒体であって、前記プログラムが、
複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも1つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも1つのデータストア内に格納された1次データオブジェクトへのそれぞれのリファレンスを有するコードと、
前記ファイルシステムのうちの1つに関連する前記ユーザの対応する1人から、前記ファイルシステムのうちの前記1つ内にファイルを格納する要求を受け取るコードと、
前記要求に応え、前記ファイルシステムのうちの前記1つの中の前記ファイルに対応するファイルを作成し、少なくとも1つのデータストア内に前記ファイルに対応する1次データオブジェクトを格納するコードと、
前記ユーザの前記対応する1人に関連するモバイル計算装置上に提示するため、前記ファイルをカスタマイズされた2次データオブジェクトに符号化し、前記2次データオブジェクトを前記少なくとも1つのデータストア内に格納するコードと、
前記対応するファイルシステム内の前記ファイルに少なくとも部分的に基きファイルバリアントを作成し、前記ファイルバリアントは前記ファイルの前記一意の識別子へのリファレンス、および前記少なくとも1つのデータストア内に格納された前記2次データオブジェクトへのリファレンスを含むコードと、
前記ユーザの前記対応する1人から前記ファイルをアクセスする要求を受け取るコードと、
前記アクセスする要求が前記モバイル計算装置によるアクセスに関するとき、前記ファイルバリアントにより参照された前記2次データオブジェクトを前記モバイル計算装置へ送信するコードと、
前記アクセスする要求が他の計算装置によるアクセスに関するとき、前記ファイルにより参照された前記1次データオブジェクトを前記他の計算装置へ送信するコードと、
を備える、非一過性のコンピュータ可読な媒体。
2.
前記ファイルがオーディオファイルに対応し、前記1次データオブジェクトが第1のビットレートで符号化された前記オーディオファイルのバージョンであり、前記2次データオブジェクトが第2のビットレートで符号化された前記オーディオファイルのバージョンであり、前記第1のビットレートは前記第2のビットレートより高い、
付記項1に記載の非一過性のコンピュータ可読な媒体。
3.
前記ファイルがイメージファイルに対応し、前記1次データオブジェクトが第1の解像度で符号化された前記イメージファイルのバージョンであり、前記2次データオブジェクトが第2の解像度で符号化された前記イメージファイルのバージョンであり、前記第1の解像度は前記第2の解像度より高い、
付記項1に記載の非一過性のコンピュータ可読な媒体。
4.
少なくとも1つの計算装置内で複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも1つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも1つのデータストア内に格納された1次データオブジェクトへのそれぞれのリファレンスを有するステップと、
前記少なくとも1つの計算装置内で前記ファイルのうちの1つのバリアントを生成し、前記バリアントは前記ファイルのうちの1つの前記一意の識別子、および前記ファイルのうちの前記1つに参照される前記1次データオブジェクトに関する2次データオブジェクトへのリファレンスを有し、前記2次データオブジェクトは前記少なくとも1つのデータストア内に格納されるステップと、
前記ファイルのうちの前記1つに関する要求に応え、前記少なくとも1つの計算装置内で前記1次データオブジェクトの代わりに前記2次データオブジェクトを送信するステップと、を含む
方法。
5.
前記2次データオブジェクトが、前記1次データオブジェクトの少なくとも部分から得られる、付記項4に記載の方法。
6.
前記要求が、前記ファイルのうちの前記1つをネットワークを通してモバイル計算装置へストリームする要求に対応し、前記バリアントが前記モバイル計算装置へのストリーミングのため減少されたデータである、付記項4に記載の方法。
7.
前記少なくとも1つの計算装置内で、クライアントから前記ファイルのうちの前記1つに関する前記要求を受け取り、前記ファイルのうちの前記1つに関する前記要求に応え、前記2次データオブジェクトがそれへ送信されるステップをさらに含む、付記項4に記載の方法。
8.
前記クライアントがクライアントのタイプに対応し、前記バリアントが前記クライアントのタイプに関してカスタマイズされる、付記項7に記載の方法。
9.
各ファイルシステムが前記ファイルのうちの前記1つに関する少なくとも1つの他のバリアントを有し、前記少なくとも1つの他のバリアントがクライアントの少なくとも1つの他のタイプに関してカスタマイズされる、付記項8に記載の方法。
10.
前記生成するステップが、前記ファイルのうちの前記1つに関する前記要求が受け取られる前に自動的に実行される、付記項7に記載の方法。
11.
前記生成するステップが、前記ファイルのうちの前記1つに関する前記要求の受け取りに応えて実行される、
付記項7に記載の方法。
12.
前記少なくとも1つの計算装置内で前記クライアントのタイプを判断するステップと、
前記少なくとも1つの計算装置内で、前記ファイルのうちの前記1つおよび前記クライアントのタイプに関する前記バリアントが存在するかどうか判断するステップと、をさらに含み、
前記生成するステップが、前記ファイルのうちの前記1つおよび前記クライアントのタイプに関する前記バリアントが存在しないという判断に応えて実行される、
付記項7に記載の方法。
13.
それぞれのファイルシステムが、前記ユーザのうちの対応する1人に関連する、付記項4に記載の方法。
14.
少なくとも1つの計算装置と、
複数のユーザに関する複数のファイルシステムを保持するロジックを備え、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも1つのフォルダを有し、それぞれの前記ファイルはそれぞれの一意の識別子および少なくとも1つのデータストア内に格納されたデータオブジェクトへのそれぞれのリファレンスを有する、前記少なくとも1つの計算装置内で実行可能なファイルサービスと、
複数のファイルバリアントを保持するロジックを有し、それぞれの前記ファイルバリアントは前記ファイルのうちのそれぞれ1つの前記それぞれの一意の識別子を有し、それぞれの前記ファイルバリアントは、ファイルのうちの1つの一意の識別子および前記ファイルのうちの前記それぞれ1つに参照される前記それぞれの1次データオブジェクトに関する、前記少なくとも1つのデータストア内に格納された2次データオブジェクトへのそれぞれのリファレンスをさらに有する、前記少なくとも1つの計算装置内で実行可能なバリアントサービスを備える、
システム。
15.
前記バリアントサービスが、
クライアントのタイプを前記ユーザのうちの1人に関連付けるロジックと、
前記ユーザのうちの前記1人に関連する前記クライアントのタイプに応えて少なくとも1つの前記ファイルバリアントを生成し、前記少なくとも1つの前記ファイルバリアントは前記クライアントのタイプに関してカスタマイズされるロジックと、をさらに備える、
付記項14に記載のシステム。
16.
前記バリアントサービスが、
前記クライアントのタイプが前記ユーザのうちの前記1人に関連し続けているかどうか判断するロジックと、
クライアントのタイプが前記ユーザのうちの前記1人に関連し続けていないという判断に応え、前記少なくとも1つの前記ファイルバリアントの削除を開始するロジックと、をさらに備える、
付記項15に記載のシステム。
17.
前記バリアントサービスが、
少なくとも1つの前記ファイルに関する要求に関連するクライアントのタイプを判断するロジックと、
前記要求に応えて少なくとも1つの前記ファイルバリアントを生成し、前記少なくとも1つの前記ファイルバリアントは前記クライアントのタイプに関してカスタマイズされるロジックと、をさらに備える、
付記項14に記載のシステム。
18.
少なくとも1つの前記ファイルバリアントが、前記ファイルのうちの前記それぞれ1つの前記それぞれの一意の識別子の代わりに、前記ファイルバリアントのうちの1つの一意の識別子を有する、付記項14に記載のシステム。
19.
前記バリアントサービスが、前記1次データオブジェクトのうちの前記対応する1つをエンコーダで符号化することにより、前記2次データオブジェクトのうちの1つを生成するロジックをさらに備える、付記項14に記載のシステム。
20.
前記エンコーダがオーディオコーデックを有する、付記項19に記載のシステム。
21.
前記1次データオブジェクトのうちの前記対応する1つがイメージであり、前記2次データオブジェクトのうちの前記1つが前記イメージの減少したサイズのバージョンである、付記項19に記載のシステム。
本開示の前述の実施形態は、本開示の原理を明確に理解するために述べた単に可能な実施例であることを強調すべきである。前述の実施形態への多くの変形および改良を、本開示の趣旨および原理から実質的に逸脱することなく行いうる。全てのそのような改良および変形は、この開示の範囲内で本明細書に含まれ、後述の請求項により保護されることを意図する。

Claims (17)

  1. 複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも1つのフォルダを有し、
    それぞれの前記ファイルは識別子および少なくとも1つのデータストア内に格納された1次データオブジェクトへのリファレンスを有し、
    前記ファイルシステムのうちの1つに関連する前記ユーザの対応する1人から、前記ファイルシステムのうちの前記1つ内にファイルを格納する要求を受け取り、
    前記要求に応え、前記ファイルシステムのうちの前記1つの中の前記ファイルに対応するファイルを作成し、少なくとも1つのデータストア内に前記ファイルに対応する1次データオブジェクトを格納し、
    前記ユーザの前記対応する1人に関連するモバイル計算装置上に提示するため、前記1次データオブジェクトをカスタマイズされた2次データオブジェクトに符号化し、前記2次データオブジェクトを少なくとも1つのデータストア内に格納し、前記2次データオブジェクトは前記ファイルに対応する前記1次データオブジェクトのデータ減少バージョンを含み、
    前記対応するファイルシステム内の前記ファイルに少なくとも部分的に基づきファイルバリアントを作成し、前記ファイルバリアントは前記ファイルのデータ減少バージョンであり、前記ファイルバリアントは前記ファイルの前記識別子へのリファレンス、および前記少なくとも1つのデータストア内に格納された前記2次データオブジェクトへのリファレンスを含み、
    前記ユーザの前記対応する1人から前記ファイルをアクセスする要求を受け取り、
    前記アクセスする要求が前記モバイル計算装置によるアクセスに関するとき、前記ファイルバリアントにより参照された前記2次データオブジェクトを前記モバイル計算装置へ送信し、
    前記アクセスする要求が他の計算装置によるアクセスに関するとき、前記ファイルにより参照された前記1次データオブジェクトを前記他の計算装置へ送信する、
    処理をコンピュータに実行させるためのプログラム。
  2. 前記ファイルはオーディオファイルに対応し、前記1次データオブジェクトは前記オーディオファイルの第1ビットレートで符号化されたバージョンであり、前記2次データオブジェクトは、前記オーディオファイルの第2ビットレートで符号化されたバージョンであり、前記第1ビットレートは前記第2ビットレートより高い、請求項1に記載のプログラム。
  3. 前記ファイルはイメージファイルに対応し、前記1次データオブジェクトは前記イメージファイルの第1解像度で符号化されたバージョンであり、前記2次データオブジェクトは、前記イメージファイルの第2解像度で符号化されたバージョンであり、前記第1解像度は前記第2解像度より高い、請求項1に記載のプログラム。
  4. 少なくとも1つの計算装置内で複数のユーザに関する複数のファイルシステムを保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも1つのフォルダを有し、それぞれの前記ファイルは識別子および少なくとも1つのデータストア内に格納された1次データオブジェクトへのリファレンスを有し、前記少なくとも1つの計算装置内で前記ファイルの1つの要求と関連するクライアント装置のタイプを判断するステップと、
    前記少なくとも1つの計算装置内で前記ファイルのうちの1つのファイルバリアントを生成し、前記ファイルバリアントは前記ファイルのうちの前記1つの前記識別子、および前記ファイルのうちの前記1つに参照される前記1次データオブジェクトのデータ減少バージョンを含む2次データオブジェクトへのリファレンスを有し、前記2次データオブジェクトは少なくとも1つのデータストア内に格納され、ファイルの前記ファイルバリアントは前記ファイルのうちの1つの要求と関連するクライアント装置のタイプに関してカスタマイズされるステップと、
    前記ファイルのうちの前記1つに関する前記要求に応え、前記ファイルを要求した装置のタイプ及び/または前記ファイルのタイプに基づいて、前記少なくとも1つの計算装置内で前記1次データオブジェクトの代わりに前記2次データオブジェクトを送信するステップと、を含む、
    方法。
  5. 前記要求が、前記ファイルのうちの前記1つをネットワークを通してモバイル計算装置へストリームする要求に対応し、前記2次データオブジェクトの前記ファイルバリアントが前記モバイル計算装置へのストリーミングのため減少されたデータである、請求項4に記載の方法。
  6. 前記少なくとも1つの計算装置内で、前記クライアント装置から前記ファイルのうちの前記1つに関する前記要求を受け取り、前記ファイルのうちの前記1つに関する前記要求に応え、前記2次データオブジェクトが前記クライアント装置へ送信されるステップをさらに含む、請求項4に記載の方法。
  7. 前記ファイルシステムのそれぞれが前記ファイルのうちの前記1つに関する少なくとも1つの他のファイルバリアントを含み、前記少なくとも1つの他のファイルバリアントが少なくとも1つの他のタイプのクライアント装置に関してカスタマイズされる、請求項6に記載の方法。
  8. 前記少なくとも1つの計算装置内で前記ファイルのうちの1つのファイルバリアントを生成することが、前記ファイルのうちの前記1つに関する前記要求が受け取られる前に自動的に実行される、請求項6に記載の方法。
  9. 前記少なくとも1つの計算装置内で前記ファイルのうちの1つのファイルバリアントを生成することが、前記ファイルのうちの前記1つに関する要求が受け取られることに応えて実行される、請求項6に記載の方法。
  10. 前記少なくとも1つの計算装置内で、前記ファイルのうちの前記1つおよび前記クライアント装置のタイプに関する前記ファイルバリアントが存在するかどうか判断するステップと、をさらに含み、
    前記少なくとも1つの計算装置内で前記ファイルのうちの1つのファイルバリアントを生成することが、前記ファイルのうちの前記1つおよび前記クライアント装置のタイプに関する前記ファイルバリアントが存在しないという判断に応えて実行される、
    請求項6に記載の方法。
  11. 前記ファイルシステムのそれぞれがユーザのうち対応する一人に関連付けられている請求項4に記載の方法。
  12. データストアと、
    プロセッサと、
    を有する計算装置であって、
    前記プロセッサは、
    複数のユーザに関する複数のファイルシステムを前記データストアに保持し、それぞれの前記ファイルシステムは複数のファイルおよび少なくとも1つのフォルダを有し、それぞれの前記ファイルは識別子および少なくとも1つの前記データストア内に格納されたデータオブジェクトへのリファレンスを有し、
    複数のファイルバリアントを前記データストアに保持し、
    それぞれの前記ファイルバリアントは前記ファイルのうちのそれぞれ1つの前記識別子を有し、
    それぞれの前記ファイルバリアントは、前記ファイルのうちの前記それぞれ1つに参照される前記それぞれの1次データオブジェクトに関する少なくとも1つの前記データストア内に格納された2次データオブジェクトへのリファレンスをさらに有し、
    前記ファイルバリアントのそれぞれは前記ファイルのデータ減少バージョンを含む、
    計算装置。
  13. 前記プロセッサが、さらに、
    クライアント装置のタイプを前記ユーザのうちの1人に関連付け、
    前記ユーザのうちの前記1人に関連する前記クライアント装置のタイプに応えて少なくとも1つの前記ファイルバリアントを生成する、
    請求項12に記載の計算装置。
  14. 前記プロセッサが、さらに、
    前記クライアント装置のタイプが前記ユーザのうちの前記1人に関連し続けているかどうか判断し、
    前記クライアント装置のタイプが前記ユーザのうちの前記1人に関連し続けていないという判断に応え、前記少なくとも1つの前記ファイルバリアントの削除を開始する、
    請求項13に記載の計算装置。
  15. 前記プロセッサが、さらに、
    前記ファイルの少なくとも1つの要求に関連するクライアント装置のタイプを判定し、
    前記要求に応えて少なくとも1つの前記ファイルバリアントを生成し、
    前記少なくとも1つのファイルバリアントはクライアント装置のタイプに関してカスタマイズされる、
    請求項12に記載の計算装置。
  16. 前記プロセッサが、さらに、前記1次データオブジェクトのうちの対応する1つをエンコーダで符号化することにより、前記2次データオブジェクトのうちの1つを生成する、請求項12に記載の計算装置。
  17. 前記エンコーダがオーディオコーデックを有する、請求項16に記載の計算装置。
JP2015126205A 2011-03-14 2015-06-24 ファイルバリアントを作成する方法、計算装置、及びプログラム Active JP6470126B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/047,343 US8423585B2 (en) 2011-03-14 2011-03-14 Variants of files in a file system
US13/047,343 2011-03-14

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013554693A Division JP2014511529A (ja) 2011-03-14 2012-03-07 ファイルシステム内のファイルのバリアント

Publications (2)

Publication Number Publication Date
JP2015212961A JP2015212961A (ja) 2015-11-26
JP6470126B2 true JP6470126B2 (ja) 2019-02-13

Family

ID=46829337

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013554693A Pending JP2014511529A (ja) 2011-03-14 2012-03-07 ファイルシステム内のファイルのバリアント
JP2015126205A Active JP6470126B2 (ja) 2011-03-14 2015-06-24 ファイルバリアントを作成する方法、計算装置、及びプログラム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013554693A Pending JP2014511529A (ja) 2011-03-14 2012-03-07 ファイルシステム内のファイルのバリアント

Country Status (7)

Country Link
US (1) US8423585B2 (ja)
EP (1) EP2686791B1 (ja)
JP (2) JP2014511529A (ja)
CN (1) CN103403713B (ja)
CA (2) CA2930061C (ja)
SG (1) SG192868A1 (ja)
WO (1) WO2012125355A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170097923A1 (en) * 2015-10-01 2017-04-06 Sap Se Open fiori apps out of ms excel
US10915497B1 (en) * 2017-07-31 2021-02-09 EMC IP Holding Company LLC Multi-tier storage system with controllable relocation of files from file system tier to cloud-based object storage tier
CN107729355B (zh) * 2017-08-31 2020-12-29 上海金大师网络科技有限公司 一种基于数据储存类型TVariant的数据存储方法及其装置
US20230091577A1 (en) * 2021-09-20 2023-03-23 International Business Machines Corporation Heterogenous replication in a hybrid cloud database

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571279B1 (en) * 1997-12-05 2003-05-27 Pinpoint Incorporated Location enhanced information delivery system
JP2001056776A (ja) * 1999-06-09 2001-02-27 Fuji Photo Film Co Ltd クライアントサーバシステム、及び画像処理状況監視方法
JP2001204001A (ja) * 1999-10-29 2001-07-27 Matsushita Electric Ind Co Ltd 動画像配信システム,再生端末装置,及び配信装置
US7003481B2 (en) * 2000-08-25 2006-02-21 Flatrock Ii, Inc. Method and apparatus for providing network dependent application services
US20020076049A1 (en) * 2000-12-19 2002-06-20 Boykin Patrick Oscar Method for distributing perceptually encrypted videos and decypting them
JP4415232B2 (ja) 2000-10-12 2010-02-17 ソニー株式会社 情報処理装置および方法、並びにプログラム記録媒体
JP2003030099A (ja) * 2001-07-18 2003-01-31 Sharp Corp コンテンツ変換送信装置とその機能を実現するプログラムおよびそのプログラムを格納した記憶媒体並びにそれらを用いたコンテンツ変換送信サービス
US20030078918A1 (en) 2001-10-23 2003-04-24 Souvignier Todd J. Method, apparatus and system for file sharing between computers
US20030110297A1 (en) * 2001-12-12 2003-06-12 Tabatabai Ali J. Transforming multimedia data for delivery to multiple heterogeneous devices
US7024427B2 (en) 2001-12-19 2006-04-04 Emc Corporation Virtual file system
JP4189627B2 (ja) * 2002-04-24 2008-12-03 富士フイルム株式会社 画像サーバ並びに画像表示システム
US7379990B2 (en) 2002-08-12 2008-05-27 Tsao Sheng Ted Tai Distributed virtual SAN
JP2004030644A (ja) * 2003-05-30 2004-01-29 Toppan Printing Co Ltd コンテンツデータ流通方法およびコンテンツデータ流通システムならびにそのプログラムを記録した記録媒体
US7308464B2 (en) * 2003-07-23 2007-12-11 America Online, Inc. Method and system for rule based indexing of multiple data structures
US20060206582A1 (en) * 2003-11-17 2006-09-14 David Finn Portable music device with song tag capture
JP2006012105A (ja) * 2004-06-26 2006-01-12 Atsushi Kodama 電子メール配信装置
JP4734887B2 (ja) * 2004-10-15 2011-07-27 株式会社日立製作所 映像符号化システム、方法及び機器
JP4380592B2 (ja) * 2005-05-17 2009-12-09 ソニー株式会社 データ共有システムおよび方法
CN101076031B (zh) * 2006-12-06 2012-05-23 腾讯科技(深圳)有限公司 一种应用网络硬盘的方法
EP2100237B1 (en) * 2007-01-04 2017-06-07 Nero Ag Apparatus for supplying an encoded data signal and method for encoding a data signal
CN101690218B (zh) * 2007-06-28 2014-02-19 汤姆逊许可公司 通过网络结构提供显示装置专用的内容的方法、设备及系统
US7554467B2 (en) * 2007-07-31 2009-06-30 Novell, Inc. Network content in dictionary-based (DE)compression
JP2009070236A (ja) * 2007-09-14 2009-04-02 Fuji Xerox Co Ltd データ提供システム及びプログラム
US8832598B2 (en) 2008-05-09 2014-09-09 Ricoh Company, Limited File management apparatus, file management method, and computer program product
US20100332401A1 (en) 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
CN101938648B (zh) * 2009-10-15 2012-08-15 北京暴风科技股份有限公司 一种媒体文件格式转换方法及系统
US8874600B2 (en) * 2010-01-30 2014-10-28 International Business Machines Corporation System and method for building a cloud aware massive data analytics solution background
US8386835B2 (en) * 2010-05-17 2013-02-26 Oracle International Corporation System and method for end-to-end data integrity in a network file system
US9231768B2 (en) * 2010-06-22 2016-01-05 International Business Machines Corporation Utilizing a deterministic all or nothing transformation in a dispersed storage network

Also Published As

Publication number Publication date
CN103403713A (zh) 2013-11-20
EP2686791A1 (en) 2014-01-22
SG192868A1 (en) 2013-09-30
WO2012125355A1 (en) 2012-09-20
CA2824868A1 (en) 2012-09-20
JP2014511529A (ja) 2014-05-15
EP2686791A4 (en) 2015-05-06
JP2015212961A (ja) 2015-11-26
CA2930061C (en) 2018-03-06
US20120239713A1 (en) 2012-09-20
EP2686791B1 (en) 2019-05-08
CA2930061A1 (en) 2012-09-20
US8423585B2 (en) 2013-04-16
CN103403713B (zh) 2017-03-29
CA2824868C (en) 2016-07-19

Similar Documents

Publication Publication Date Title
US12197292B2 (en) Tiered cloud storage for different availability and performance requirements
US20130227047A1 (en) Methods for managing content stored in cloud-based storages
US10210172B1 (en) File system integration and synchronization between client and server
US20210133248A1 (en) System and method for searching backups
US10338852B2 (en) Systems and methods for list retrieval in a storage device
WO2012170235A2 (en) Storage architecture for backup application
US8977662B1 (en) Storing data objects from a flat namespace in a hierarchical directory structured file system
JP6470126B2 (ja) ファイルバリアントを作成する方法、計算装置、及びプログラム
US12099886B2 (en) Techniques for performing clipboard-to-file paste operations
US12088656B2 (en) Method and system for enforcing governance across multiple content repositories using a content broker
CN110008197B (zh) 一种数据处理方法、系统及电子设备和存储介质
US8990265B1 (en) Context-aware durability of file variants
US11468417B2 (en) Aggregated storage file service
CN116010364B (zh) 网盘文件状态的更新方法、装置、网盘及存储介质
US11822580B2 (en) System and method for operating a digital storage system
CN113568874A (zh) 文件选择上传的方法及设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160816

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161116

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170824

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170912

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20171124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190117

R150 Certificate of patent or registration of utility model

Ref document number: 6470126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250