(57)【特許請求の範囲】
【請求項１】
クライアント装置においてファイルの部分にアクセスする方法であって、
前記クライアント装置へのダウンロードのためにファイルの１つ以上の部分のサイズを決定する工程であって、前記ファイルの１つ以上の部分のサイズは、少なくとも前記ファイルの用途に基づいて決定される、工程と、
少なくとも１つのコンピュータプロセッサが、前記クライアント装置へのダウンロードのためにファイルの１つ以上の部分を選択する工程であって、前記ファイルは、ネットワークを介して前記クライアント装置と通信をするウェブベースのストレージシステム上に記憶されている工程と、
選択された前記１つ以上の部分における、前記クライアント装置上に記憶されていない少なくとも１つの部分を識別する、識別工程と、
前記ファイルの識別された前記少なくとも１つの部分をダウンロードするために、要求を、ユーザ対話なしに、前記ウェブベースのストレージシステムに送信する工程と、
前記ファイルの識別された前記少なくとも１つの部分を、前記ネットワークを介して前記クライアント装置にダウンロードする工程と、を備える方法。
【請求項２】
前記識別工程は、選択された前記１つ以上の部分を、メタファイル中のエントリと比較する工程を含み、前記メタファイル中の各エントリは、選択された前記１つ以上の部分の各々を識別する部分識別子と、選択された前記１つ以上の部分の各々が前記クライアント装置上に記憶されているかどうかを示す標識とを含む、請求項１に記載の方法。
【請求項３】
前記メタファイルは前記クライアント装置上に記憶され、前記クライアント装置のユーザにとってアクセス可能ではない、請求項２に記載の方法。
【請求項４】
識別された前記少なくとも１つの部分がダウンロードされた後に、識別された前記少なくとも１つの部分が前記クライアント装置上に記憶されたことを反映するために前記メタファイルを更新する工程をさらに備える、請求項２または３に記載の方法。
【請求項５】
前記ファイルは文書に対応し、前記方法は、前記文書の第１の部分のビューを、前記クライアント装置を操作するユーザに提供する工程であって、前記ファイルの選択された前記１つ以上の部分は、前記第１の部分に隣接する前記文書の第２および第３の部分を含む工程をさらに備える、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記ファイルの選択された前記１つ以上の部分は、前記ファイルの部分の過去の編集作業に基づいて決定される優先スコアが付与される前記ファイルの部分に対応し、大量に編集された箇所を有するファイルの部分は、少なく編集された箇所を有する他の部分よりも高い優先スコアを有する、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記ファイルのコンテンツを前記クライアント装置に表示するために、アプリケーションが前記クライアント装置にインストールされており、前記アプリケーションは、変更無しで、前記ファイルの選択された前記１つ以上の部分の表示が可能である、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記クライアント装置上に前記ファイルの識別された前記少なくとも１つの部分が記憶される前に、前記ファイルの識別された前記少なくとも１つの部分を暗号化する工程であって、前記暗号化は、第１鍵と第１初期化ベクトルとの使用を含み、前記第１鍵と前記第１初期化ベクトルとは異なる第２初期化ベクトルとが使用されて、前記クライアント装置に記憶される前記ファイルの別の部分を暗号化する工程をさらに備える、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記第１初期化ベクトルおよび前記第２初期化ベクトルをメタファイルに記憶する工程をさらに備え、前記メタファイル中の各エントリは、選択された前記１つ以上の部分の各々を識別する部分識別子と、選択された前記１つ以上の部分の各々が前記クライアント装置上に記憶されているかどうかを示す標識とを含む、請求項８に記載の方法。
【請求項１０】
前記ファイルの前記１つ以上の部分のサイズを、前記ネットワークの接続速度と、前記ファイルの種類と、前記クライアント装置のユーザによって要求されると予測される前記ファイル中のデータの量と、のうちの少なくとも１つにさらに基づいて決定する、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
クライアント装置においてファイルの部分にアクセスするシステムであって、前記システムは少なくとも１つのコンピュータプロセッサを備え、前記少なくとも１つのコンピュータプロセッサは、
前記クライアント装置へのダウンロードのためにファイルの１つ以上の部分のサイズを決定する工程であって、前記ファイルの１つ以上の部分のサイズは、少なくとも前記ファイルの用途に基づいて決定される、工程と、
前記クライアント装置へのダウンロードのためにファイルの１つ以上の部分を選択する工程であって、前記ファイルは、ネットワークを介して前記クライアント装置と通信をするウェブベースのストレージシステム上に記憶されている工程と、
選択された前記１つ以上の部分における、前記クライアント装置上に記憶されていない少なくとも１つの部分を識別する、識別工程と、
前記ファイルの識別された前記少なくとも１つの部分をダウンロードするために、要求を、ユーザ対話なしに、前記ウェブベースのストレージシステムに送信する工程と、
前記ファイルの識別された前記少なくとも１つの部分を、前記ネットワークを介して前記クライアント装置にダウンロードする工程と、を行うように構成されているシステム。
【請求項１２】
前記識別工程を、選択された前記１つ以上の部分を、メタファイル中のエントリと比較することによって行い、前記メタファイル中の各エントリは、選択された前記１つ以上の部分の各々を識別する部分識別子と、選択された前記１つ以上の部分の各々が前記クライアント装置上に記憶されているかどうかを示す標識とを含む、請求項１１に記載のシステム。
【請求項１３】
前記メタファイルは前記クライアント装置上に記憶され、前記クライアント装置のユーザにとってアクセス可能ではない、請求項１２に記載のシステム。
【請求項１４】
前記少なくとも１つのコンピュータプロセッサは、識別された前記少なくとも１つの部分がダウンロードされた後に、識別された前記少なくとも１つの部分が前記クライアント装置上に記憶されたことを反映するために前記メタファイルを更新することを行うようにさらに構成されている、請求項１２または１３に記載のシステム。
【請求項１５】
前記ファイルは文書に対応し、前記少なくとも１つのコンピュータプロセッサは、前記文書の第１の部分のビューを、前記クライアント装置を操作するユーザに提供するようにさらに構成されており、前記ファイルの選択された前記１つ以上の部分は、前記第１の部分に隣接する前記文書の第２および第３の部分を含む、請求項１１乃至１４のいずれか一項に記載のシステム。
【請求項１６】
前記ファイルの選択された前記１つ以上の部分は、前記ファイルの部分の過去の編集作業に基づいて決定される優先スコアが付与される前記ファイルの部分に対応し、大量に編集された箇所を有するファイルの部分は、少なく編集された箇所を有する他の部分よりも高い優先スコアを有する、請求項１１乃至１５のいずれか一項に記載のシステム。
【請求項１７】
前記ファイルのコンテンツを前記クライアント装置に表示するために、アプリケーションが前記クライアント装置にインストールされており、前記アプリケーションは、変更無しで、前記ファイルの選択された前記１つ以上の部分の表示が可能である、請求項１１乃至１６のいずれか一項に記載のシステム。
【請求項１８】
前記少なくとも１つのコンピュータプロセッサは、前記クライアント装置上に前記ファイルの識別された前記少なくとも１つの部分が記憶される前に、前記ファイルの識別された前記少なくとも１つの部分を、第１鍵と第１初期化ベクトルとを使用することで暗号化するようにさらに構成されており、前記第１鍵と前記第１初期化ベクトルとは異なる第２初期化ベクトルとが使用されて、前記クライアント装置に記憶される前記ファイルの別の部分を暗号化する、請求項１１乃至１７のいずれか一項に記載のシステム。
【請求項１９】
前記少なくとも１つのコンピュータプロセッサは、前記第１初期化ベクトルおよび前記第２初期化ベクトルをメタファイルに記憶するようにさらに構成されており、前記メタファイル中の各エントリは、選択された前記１つ以上の部分の各々を識別する部分識別子と、選択された前記１つ以上の部分の各々が前記クライアント装置上に記憶されているかどうかを示す標識とを含む、請求項１８に記載のシステム。
【請求項２０】
前記ファイルの前記１つ以上の部分のサイズを、前記ネットワークの接続速度と、前記ファイルの種類と、前記クライアント装置のユーザによって要求されると予測される前記ファイル中のデータの量と、のうちの少なくとも１つにさらに基づいて決定する、請求項１１乃至１９のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
一般に、本開示はデータ記憶に関し、特に、クラウドストレージにデータを記憶し、クラウドストレージのデータにアクセスするシステムおよび方法に関する。
【背景技術】
【０００２】
ウェブベースのストレージシステムは、１つ以上のユーザ装置からアクセス可能なデータを、ユーザが記憶および取得することを可能にするファイルホスティングシステムである。これらのストレージシステムは、ユーザデータを記憶するためにクラウドストレージを用い得る。ユーザ装置は、ウェブベースのストレージシステムへ記憶されたファイルへのアクセスを有することが望ましい場合がある。しかしながら、ファイルが大きい場合、ユーザがファイルにアクセスできるようになる前に、ファイルの全体がユーザの装置にダウンロードされるまで待つことは、ユーザにとって望ましくない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般に、本開示はデータ記憶に関し、特に、クラウドストレージにデータを記憶し、クラウドストレージのデータにアクセスするシステムおよび方法に関する。
【課題を解決するための手段】
【０００４】
データストレージを維持するシステムおよび方法が本明細書に開示される。一態様では、クライアント装置においてファイルの部分にアクセスするシステムまたは方法に関する。クライアント装置へのダウンロードのためにファイルの１つ以上の部分が選択される。ファイルは、ネットワークを介してクライアント装置と通信をするウェブベースのストレージシステムに記憶されている。選択された１つ以上の部分における、クライアント装置上に記憶されていない少なくとも１つの部分が識別される。ファイルの識別された少なくとも１つの部分をダウンロードするために、要求は、ユーザ対話なしに、ウェブベースのストレージシステムに送信され、ファイルの識別された少なくとも１つの部分はネットワークを介してクライアント装置にダウンロードされる。
【０００５】
別の態様では、クライアント装置においてファイルの部分にアクセスする手段を備えるシステムに関する。システムは、クライアント装置へのダウンロードのためにファイルの１つ以上の部分を選択する手段であって、ファイルは、ネットワークを介してクライアント装置と通信をするウェブベースのストレージシステム上に記憶されている手段と、選択された１つ以上の部分における、クライアント装置上に記憶されていない少なくとも１つの部分を識別する手段と、ファイルの識別された少なくとも１つの部分をダウンロードするために、要求を、ユーザ対話なしに、ウェブベースのストレージシステムに送信する手段と、ファイルの識別された少なくとも１つの部分を、ネットワークを介してクライアント装置にダウンロードする手段と、を備えている。
【０００６】
いくつかの実装では、識別する手段は、選択された１つ以上の部分を、メタファイル中のエントリと比較する手段を備える。メタファイル中の各エントリは、選択された１つ以上の部分の各々を識別する部分識別子と、選択された１つ以上の部分の各々がクライアント装置上に記憶されているかどうかを示す標識とを含む。メタファイルはクライアント装置上に記憶され、クライアント装置のユーザにとってアクセス可能でなくてよい。識別された少なくとも１つの部分がダウンロードされた後に、識別された少なくとも１つの部分がクライアント装置上に記憶されたことを反映するためにメタファイルを更新される。
【０００７】
いくつかの実装では、ファイルは文書に対応し、システムは、文書の第１の部分のビューを、クライアント装置を操作するユーザに提供する手段であって、ファイルの選択された１つ以上の部分は、第１の部分に隣接する文書の第２および第３の部分を含む手段をさらに備える。ファイルの選択された１つ以上の部分は、ファイルの過去の閲覧パターンまたはファイルの編集作業に基づいて決定される優先スコアが付与されるファイルの部分に対応してよい。いくつかの実装では、ファイルのコンテンツをクライアント装置に表示するために、アプリケーションがクライアント装置にインストールされており、アプリケーションは、変更無しで、ファイルの選択された１つ以上の部分の表示が可能である。
【０００８】
いくつかの実装では、システムは、クライアント装置上にファイルの識別された少なくとも１つの部分が記憶される前に、ファイルの識別された少なくとも１つの部分を暗号化する手段をさらに備える。暗号化する手段は、第１鍵と第１初期化ベクトルとを使用し、第１鍵と第１初期化ベクトルとは異なる第２初期化ベクトルとが使用されて、クライアント装置に記憶されるファイルの別の部分を暗号化する。システムは、第１初期化ベクトルおよび第２初期化ベクトルをメタファイルに記憶する手段をさらに備えてよく、メタファイル中の各エントリは、選択された１つ以上の部分の各々を識別する部分識別子と、選択された１つ以上の部分の各々がクライアント装置上に記憶されているかどうかを示す標識とを含む。
【０００９】
いくつかの実装では、システムは、ファイルの１つ以上の部分のサイズを、ネットワークの接続速度と、ファイルの種類と、クライアント装置のユーザによって要求されると予測されるファイル中のデータの量と、のうちの少なくとも１つに基づいて決定する手段をさらに備える。
【００１０】
本開示の上記および他の特徴は、その性質および様々な利点を含めて、添付の図面と合わせて以下の詳細な記載を考慮することでより明らかになる。図面において、
【図面の簡単な説明】
【００１１】
【図１】例示の一実施形態による、クライアント装置でファイルの部分にアクセスするコンピュータ化システムのブロック図。
【図２】例示の一実施形態による、ファイルの部分を追跡し、各部分がクライアント装置にローカルにキャッシュされたかどうかを示す標識を記憶するデータベース構造の図。
【図３】例示の一実施形態による、読み出し要求に応じてファイルの１つ以上の部分を提供する例示の方法のフローチャート。
【図４】例示の一実施形態による、書き込み要求に応じてファイルの１つ以上の部分を提供する例示の方法のフローチャート。
【図５】例示の一実施形態による、クライアント装置でファイルの部分にアクセスする例示の方法のフローチャート。
【図６】例示の一実施形態による、本明細書に記載された処理のいずれかを実行するコンピューティング装置のブロック図。
【発明を実施するための形態】
【００１２】
本開示の全体的な理解を提供するために、ウェブベースのストレージシステムにおけるファイルコンテンツの記憶および取得を提供するシステムを含む、例示の実施形態が記載される。特に、効率的なダウンロードおよびデータの使用を可能にする方法が記載される。例えば、本明細書に記載される方法は、クライアント装置におけるユーザが、クライアント装置にファイルの全体をダウンロードすることなく、ファイルの部分を閲覧し選択的に修正することを可能にする。これにより、例えば、ファイルのデータをダウンロードするために必要な帯域幅、クライアント装置におけるストレージ要求、および、クライアント装置においてファイルが修正される場合の、ウェブベースのストレージシステムに修正をアップロードするために必要な帯域幅、のうちの１つ以上の様々な計算資源の使用を減少できる。しかしながら、本明細書に記載されるシステムおよび方法は、言及される用途に適切に適合され修正され得ること、本明細書に記載されるシステムおよび方法は、他の適切な用途に用い得ること、および、そのような他の追加と修正は、その範囲から逸脱しないこと、が当業者に理解されるであろう。一般に、本明細書に記載されたコンピュータ化システムは、１つ以上のエンジンを備え得る。エンジンは、コンピュータ、マイクロプロセッサ、ロジックデバイス、またはハードウェア、ファームウェア、およびソフトウェアと構成され、本明細書に記載されるコンピュータ化された１つ以上の方法を実行する他の装置もしくはプロセッサのような１つ以上の処理装置を含む。
【００１３】
本開示は、クラウドストレージシステムにファイルを記憶し、クラウドストレージシステムからファイルを取得するシステムおよび方法を提供する。本明細書に記載されるシステムおよび方法は、既存のウェブベースのファイルアップロードシステムに関連する技術的な問題の多くを解決する。本明細書に記載されるシステムおよび方法は、ユーザデータを記憶および共有するためにネットワークを通じて他のシステムと通信し得るウェブベースのストレージシステムに関して記載される。一般に、当業者は、本明細書に記載されるシステムおよび方法は、その範囲から逸脱することなく、ローカルに相互接続されたシステムに適用可能であることを理解するであろう。
【００１４】
図１は、本発明におけるシステムおよび方法を実装するために使用し得るネットワークおよびデータベース構造の例を示す。図１は、クライアント装置がクラウドストレージシステムに記憶されたデータにアクセスすることを可能にする、コンピュータ化システム１００のブロック図である。このシステム１００は、ネットワーク１０１を通じて相互に通信するよう構成された、ウェブベースのストレージシステム１１０およびクライアント装置１０２を含む。ウェブベースのストレージシステム１１０は、サーバ１１２、プロセッサ１１４、および、ユーザデータ・データベース１１６を含む。クライアント装置１０２は、キャッシュ１０３、メタファイル１０４、ディスプレイ１０５、プロセッサ１０６、ユーザ入力装置１０７、およびネットワークインターフェイス１０８を含む。本明細書において、用語「プロセッサ」は、１つ以上のコンピュータ、マイクロプロセッサ、ロジックデバイス、サーバ、またはハードウェア、ファームウェア、およびソフトウェアにより構成され、本明細書に記載されるコンピュータ化された１つ以上の技術を実行する他の装置のことを言う。プロセッサおよび処理装置は、インプット、アウトプット、および現在処理中のデータを記憶する１つ以上のメモリ装置を含んでもよい。図１には、図の複雑化を避けるために単一のウェブベースのストレージシステム１１０およびクライアント装置１０２のみが示されている。一般に、システム１００は、複数のウェブベースのストレージシステムおよび任意の数のクライアント装置１０２をサポート可能である。
【００１５】
ウェブベースのストレージシステム１１０は、ユーザがデータを記憶、取得、および修正することを可能にするファイルホスティングシステムである。このデータはユーザのウェブデータと称されることがあり、ユーザデータ・データベース１１６中に記憶される。サーバ１１２、プロセッサ１１４、またはその両方は、ユーザデータ、ユーザデータ・データベース１１６の維持に関連する機能を実行し得る。例えばデータへのメモリの割り当て、データベース中に記憶される新しいデータの受信、データベース中のデータの削除、データベースにおいてどのくらいのストレージスペースが利用可能かを示す標識の提供、またはデータベース維持に関する他の適切な機能等である。ウェブベースのストレージシステム１１０は、単一のサーバシステムまたは分散システム中に記憶され得る。特に、ウェブベースのストレージシステム１１０はユーザデータを記憶するためにクラウドストレージを使用してよい。
【００１６】
ウェブベースのストレージシステム１１０上に記憶されるファイルは大きくてもよい。例えば、ファイルは、ビデオコンテンツ、記録管理のための大きなデータベース構造、または任意の他の適切な種類の大きなファイルを含んでよい。ネットワーク１０１への接続が低速である場合（例えば、低速のインターネット接続）、ファイルのダウンロードには長い時間がかかり得る。一般に、クライアント装置を操作するユーザにファイルが提供される前に、大きなファイルがダウンロードされるまで待つことは望ましくない場合がある。この場合、ファイルは複数の部分つまりチャンクに分割されてよく、また関連する部分のみがクライアント装置にダウンロードされてよい。そのような例では、各部分はファイルのデータの適切なサブセットを含んでよい、または言い換えれば、各部分はファイルのデータの全てではないが一部を含んでよい。ファイルの部分は、例えば一定数のバイトを含んでよく、同一または異なるサイズであってよい。
【００１７】
クライアント装置１０２は、ウェブベースのストレージシステム１１０上に記憶された大きなファイルの部分へアクセスすることを要求してもよい。例えば、ファイルが動画ファイルである場合、ファイルの動画コンテンツがユーザに提供されることが可能になる前に、全体のファイルがクライアント装置１０２中のキャッシュ１０３にダウンロードされるまで待つことは望ましくない場合がある。この場合、動画ファイルは複数の部分に分割されてよく、関連する部分またはいくつかの部分がクライアント装置１０２にダウンロードされる。本明細書に記載されるいくつかの例は大きな動画ファイルに関連するが、本開示は動画ファイルに限定されず、音声コンテンツ、テキストコンテンツ、画像コンテンツ、データベースコンテンツ、または任意の他の適切な種類のファイルコンテンツを含むファイルを含む、他の種類のファイルに適用可能である。
【００１８】
図１に示されるように、クライアント装置１０２は、キャッシュ１０３と、メタファイル１０４と、ディスプレイ１０５と、プロセッサ１０６と、ユーザ入力装置１０７と、ネットワークインターフェイス１０８とを含む。ユーザ入力装置１０７は、ユーザがファイルと対話することを可能にする。例えば、ユーザ入力装置１０７は、ユーザがユーザデータ・データベース１１６上に記憶されたファイルを選択することでユーザ入力を提供するように、キーボード、マウス、またはタッチスクリーンを含んでよい。ユーザ入力は、選択したファイルを読み込むための、または選択したファイルを修正するためのユーザからの要求を示し得る。
【００１９】
ファイルは、クラウドストレージにおけるユーザデータ・データベース１１６中に記憶されているが、ファイルの部分または全体のファイルが、クライアント装置１０２中のキャッシュ１０３中にローカルに記憶されてもよい。ファイルがすでにキャッシュ１０３中に記憶されている場合は、クライアント装置１０２がウェブベースのストレージシステム１１０からファイルをダウンロードする必要はない。この場合、ディスプレイ１０５を通じてファイルのコンテンツのビューを提供するアプリケーションを開くことで、ファイルが直接ユーザに提供されてよい。そうでなければ、クライアント装置１０２は、クライアント装置１０２にファイルのコンテンツを転送するために、ウェブベースのストレージシステム１１０に要求を送信する。１つの例では、キャッシュ１０３はファイルの部分を全く記憶しなくてよい。この場合、要求は、ファイルのどの部分がキャッシュ１０３にダウンロードされることが要求されたか、または全体のファイルがキャッシュ１０３にダウンロードされるべきかを示す標識を含んでよい。別の例では、キャッシュ１０３はファイルの部分のサブセットをすでに記憶していてもよい。この場合、要求された部分がすでにローカルにキャッシュされていれば、クライアント装置１０２は要求された部分をダウンロードする必要はない。あるいは、どの要求された部分もまだローカルにキャッシュされていなければ、ウェブベースのストレージシステム１１０は要求された部分をクライアント装置１０２に送信する。
【００２０】
要求された部分のいくつかがローカルにキャッシュされている場合は、ウェブベースのストレージシステム１１０は、クライアント装置１０２にローカルにキャッシュされていない要求された部分を送信してよい。例えば、ローカルにキャッシュされている部分は、すでに閲覧されたおよび／またはクライアント装置１０２にキャッシュされた動画ファイルの部分に対応してよい。クライアント装置１０２は、動画ファイルをストリーミングすることが望ましい場合がある。ストリーミングを行うには、クライアント装置１０２は、動画ファイルのまだ閲覧されていないいくつかの後の部分を、ユーザが動画ファイルのこれらの後の部分を閲覧することを望んでいると予期して、ローカルに記憶してよい。この場合、前もってダウンロードした部分が再生される間に、クライアント装置１０２は後の部分をダウンロードする要求をしてよい。これらの要求された後の部分は、それからクライアント装置１０２に送信され、閲覧の用意ができるまでキャッシュ１０３中に記憶されてよい。
【００２１】
上記の例では、ファイルは動画コンテンツを含むと記載されている。一般に、ファイルは他のコンテンツを含んでよい。例えば、ファイルは、テキストおよび／またはグラフィックもしくはピクチャのコンテンツを含む文書ファイルであってよい。この場合、ファイルは順番に並べられた部分に分割されてよい。１つの例では、ユーザは、ディスプレイ１０５を通じてファイルの特定の部分を閲覧してもよい。特定の部分はキャッシュ１０３中にローカルに記憶されてよいが、ファイルの他の部分は、ウェブベースのストレージシステム１１０中に記憶され、ローカルにキャッシュされなくてよい。ユーザが、ディスプレイ１０５を通じてファイルの特定の部分を閲覧すると、システム１００は特定の部分に隣接する先行部分および後続部分を識別してよい。先行部分および／または後続部分は、ユーザがこれらの部分の１つにスクロールすることを予期して、特定の部分が閲覧される間に、キャッシュ１０３にダウンロードされてよい。同様に、システム１００は、ファイルのいくつかの部分が、ファイルの他の部分よりも閲覧される可能性が高いコンテンツを含むと判定してよく、そのような部分に、関連する優先順位を割り当ててよい。例えば、テキストのコンテンツはピクチャのコンテンツよりも閲覧および編集がされる可能性が高い場合があるので、テキストのコンテンツを含む部分が、ピクチャのコンテンツを含む部分よりもダウンロードに関して優先されるようにしてもよい。
【００２２】
いくつかの実施形態では、閲覧される可能性が高い（したがって優先される）ファイルの部分は、閲覧行動の過去のパターンに基づいて識別されてよい。１つの例では、最近に更新されたか、またはユーザが閲覧した最新のバージョン以来、大量に編集されたコンテンツが、他の部分よりも優先される。別の例では、システム１００が、ユーザが特定の方向（例えば、上から下または下から上）に文書中をスクロールしていると検出した場合、ファイルの部分はその方向に従って優先され、早く表示されると予測される部分が、後で表示されると予測される部分より前にダウンロードされてよい。
【００２３】
一般に、ファイルは動画ファイルまたはテキストのおよび／またはピクチャのコンテンツを含む文書に限定されない。ファイルは、複数の部分に分割することが適切な任意の種類のファイルでよい。いくつかの実施形態では、ファイルはあるデータの記録を維持するデータベース構造である。１つの例では、ファイルは、学校に在籍する生徒のリスト等の記録のリストであってよい。リスト中の各記録は、例えば生徒の名前、電子メールアドレス、家の住所、生徒の識別番号、緊急連絡情報、登録した授業、成績証明書、授業料請求状態、または生徒に関連する任意の他の適切なデータ等の生徒に対応するデータを含み得る。この場合、ファイルはウェブベースのストレージシステム１１０上に記憶された大きなファイルであってよい。学校の管理者等のクライアント装置１０２のユーザは、特定の生徒に関連したデータ記録を示すファイルの部分等のファイルの選択した部分のみを閲覧することを望む場合がある。この場合、ネットワーク１０１を通じて、長い時間がかかるかもしれない全体のファイルをダウンロードするよりも、ファイルの選択した部分のみがウェブベースのストレージシステム１１０からクライアント装置１０２にダウンロードされてよい。関連する部分がクライアント装置１０２にダウンロードされた後、ユーザは、選択した生徒のデータ記録をクライアント装置１０２上で修正して、ファイルの修正した部分をウェブベースのストレージシステム１１０にアップロードしてよい。この場合、ファイルは、ある数の記録を記憶するのに適切なサイズにされた部分に分割されてよい。例えば、各部分は、一人の生徒または複数の生徒等の整数の生徒に対応してよい。
【００２４】
いくつかの実施形態では、ファイルの部分の大きさは最適な方法で選択される。特に、部分の大きさは、ネットワーク接続速度およびファイルに対する予測された用途を考慮して決定される。大きな部分は小さな部分よりもネットワーク１０１を通じて送信するのに長い時間がかかるので、大きすぎるサイズにされた部分を使用することが望ましくない場合がある。さらに、大きな部分は、クライアント装置１０２上で実際に望まれるコンテンツの量が大きな部分のほんの小さな部分に該当していると、望ましくない場合がある。例えば、ファイルが、学校に在籍する生徒を追跡するデータベース構造である上記の例においては、複数の生徒を含むサイズにされたファイルの部分を使用することが望ましくない場合がある。特に、クライアント装置１０２のユーザにとって、一度に１人の生徒に対応する記録を閲覧し修正することが望ましい場合があるので、１人の生徒の記録を含むようなサイズにされた部分が適切であり得る。本明細書に記載された、学校に在籍する生徒に関連付けられたデータを記憶するファイルに関する例は、説明の目的のみに記載されるものであり、また一般に、本開示のシステムおよび方法は、任意の種類の記録管理データに関するデータを記憶するファイルに適用可能であることが理解されるであろう。
【００２５】
部分が非常に小さく、ファイルの部分をダウンロードするためのクライアント装置１０２からのどのような要求も複数の部分のダウンロードを伴うと、ファイルを複数の小さな部分に分割することも望ましくない場合がある。上記の例では、生徒の記録を閲覧または修正するどのような要求も、複数の部分をダウンロードし記憶することを必要とし得るので、部分は生徒の記録の断片を含むようなサイズにされることが望ましくない場合がある。
【００２６】
用途によっては、クライアント装置１０２のユーザが、複数の生徒に対応する記録を一度に閲覧および修正することが望ましい場合がある。例えば、ユーザは特定の授業の全ての生徒もしくは特定の成績の全ての生徒等の特定の成績の１つ以上の基準を満たす生徒、卒業する生徒、クラブや組織に属す生徒、授業料請求の支払いが未払いになっている生徒、または任意の他の適切なカテゴリ、の記録を閲覧することを望む場合がある。この場合、部分は、（１つ以上の基準を満たす）関連する生徒の記録が部分にまとめられてクライアント装置１０２にダウンロードされるオンザフライ方式で生成されてよい。この場合、部分およびそのサイズは前もって定められておらず、必要に応じて動的に決定される。
【００２７】
本明細書に記載されるように、本開示のシステムおよび方法は、クライアント装置１０２のユーザが、クライアント装置１０２にファイルの全体をダウンロードする必要なしに、ファイルの部分を閲覧し選択的に修正することを可能にする。本開示は、ユーザがある部分を閲覧し必要に応じて選択的に修正し得るように、クライアント装置１０２がファイルの関連する部分のみをウェブベースのストレージシステム１１０からダウンロードすることを可能にする。
【００２８】
いくつかの実施形態では、本開示のシステムおよび方法は、クライアント装置１０２のユーザに見えないように動作する。特に、ユーザは、クライアント装置１０２がウェブベースのストレージシステム１１０と記載される方法で通信をしており、ファイルの部分を一度にダウンロードすることに気付かなくてもよい。さらに、クライアント装置１０２によって実行され、ファイルの様々な部分を開き、表示し、修正するソフトウェアアプリケーションもまた、ファイルの全体の代わりにファイルの部分のみがクライアント装置１０２にキャッシュされることに気付かなくてもよい。動画ストリーミングアプリケーションとは対照的に、本開示によるクライアント装置１０２のアプリケーションは、ファイルの部分を一度に開き閲覧する処理を扱うための特別な装備がされている必要はなくてよい。
【００２９】
この場合、本開示のシステムおよび方法は、クライアント装置１０２のバックグラウンドで動作する。１つの例では、２０メガバイト（ＭＢ）のサイズを有する文書を開き、文書中をスクロールするため、ユーザはクライアント装置１０２中のソフトウェアアプリケーションを使用している。文書はウェブベースのストレージシステム中に記憶され１０の部分に分割されたファイルに対応しており、各部分は２ＭＢのサイズを有する。ユーザが最初の１０ＭＢ中をスクロールする間、ソフトウェアアプリケーションは１１ＭＢから１５ＭＢを求める要求をしてもよい。クライアント装置１０５は、データベース構造（例えば図２に関し示され詳細が記載されるデータベース構造）に問い合わせをして、１１ＭＢから１５ＭＢが部分６、７、および８に対応していると判定する。文書の要求されたメガバイトを、ファイルの部分にマッピングすると、その後クライアント装置１０２は部分６、７、および８をダウンロードするためにウェブベースのストレージシステム１１０に要求を送信する。
【００３０】
いくつかの実施形態では、ファイルの部分はキャッシュ１０３中に記憶される前に暗号化され、クライアント装置１０２のユーザに提供される前に復号される。１つの例では、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が使用されてキャッシュ１０３において部分が暗号化されるが、一般に、任意の適切な暗号化方法が使用されてよい。ウェブベースのストレージシステム１１０からクライアント装置１０２にダウンロードされるデータを暗号化することは、少なくとも、そうすることによってユーザがウェブベースのストレージシステム１１０等のクラウドシステムに自身のファイルを記憶することが促され得るという理由で、望ましい場合がある。例えば、ユーザが本人のクライアント装置１０２を紛失した場合、クライアント装置１０２にアクセスした別の人は、キャッシュ１０３中に記憶されたデータが暗号化されているために、キャッシュ１０３中に記憶されたデータにアクセスすることが出来ない。
【００３１】
キャッシュ１０３中に記憶される部分を暗号化するために使用される暗号化方法は、全体のファイルへ同一の鍵を使用することを伴うが、ファイルの各部分へ異なる初期化ベクトルを有してよい。異なる初期化ベクトルは、メタファイル１０４中または図２に関し記載されるデータベース構造２００等のデータベース構造中に記憶されてよい。ファイルの部分を復号するため、クライアント装置１０２上で閲覧または修正することが要求された部分の最初から部分の最後のバイトまで復号処理が実行されてよい。図１に示すように、メタファイル１０４はクライアント装置上に記憶されるが、メタファイル１０４はウェブベースのストレージシステム１１０またはネットワーク１０１へのアクセスを有する任意の他の装置上に記憶されてよい。いくつかの実施形態では、メタファイルはクライアント装置のユーザにとってアクセス可能ではない。
【００３２】
プロセッサ１０６は、本明細書に記載の任意の機能を、クライアント装置１０２によって実行されるものとして、実行するように構成されてよい。特に、プロセッサ１０６は、クライアント装置１０２へのダウンロードのために１つ以上の部分を選択し、選択された１つ以上の部分における、クライアント装置上に記憶されていない少なくとも１つ以上の部分を識別し、ウェブベースのストレージシステム１１０へ識別した部分をダウンロードする要求を送信し、識別した部分をダウンロードしてよい。さらに、プロセッサ１１４は、本明細書に記載の任意の機能を、ウェブベースのストレージシステム１１０によって実行されるものとして、実行するように構成されてよい。加えてまたは代わりに、プロセッサ１０６によって実行される本明細書に記載の任意の機能はプロセッサ１１４によって実行されてよく、反対に、プロセッサ１１４によって実行される本明細書に記載の任意の機能はプロセッサ１０６によって実行されてもよい。例えば、本開示の大部分では、メタファイル１０４をクライアント装置１０２上に記憶されるものとして記載している。代わりに、メタファイル１０４は、本開示の範囲から逸脱することなく、ウェブベースのストレージシステム上に記憶されてよい。
【００３３】
図２は、クライアント装置１０２の１人以上のユーザに関連付けられたファイルのセット等の、ファイルのセットの部分を追跡する典型的なデータベース構造２００を示す。データベース構造２００は、図１に関し示され記載されたメタファイル１０４上に記憶されたデータに対応してよい。データベース構造２００に示されたデータは、ローカルにクライアント装置１０２上のメタファイル１０４中、ウェブベースのストレージシステム１１０中、またはネットワーク１０１にアクセスを有する別のシステム中に記憶されてよい。図２に示すデータベース構造２００は、基本的には、ファイル内の部分およびその位置を識別するために使用され得るマップである。特に、データベース構造２００における各エントリはデータベース構造２００の行に示されており、ファイルの部分に対応している。各エントリは、ファイル識別子と、部分識別子と、開始点と、終了点と、クライアント装置１０２中のキャッシュ１０３等のローカルキャッシュ上に部分が記憶されているかを示すフラグ指示子と、部分が最後に修正された日時に対応するタイムスタンプと、を含む。各開始点と終了点のペアは、ファイル内の１つの部分について、その開始境界と終了境界のそのファイル内での位置をそれぞれ示す。
【００３４】
図２に示されるように、ファイル識別子１５４で識別されるファイルは、部分識別子１、２、３、および４を有する４つの部分に分割される。ファイル１５４の各部分は５０データ単位の同一のサイズを有し、各単位はデータビット数またはバイト数であってよい。さらに、ファイル１５４の４つの部分の各々は、キャッシュ１０３上にローカルに記憶される。ファイル１５４の各部分がキャッシュ１０３中に記憶されているので、ユーザがクライアント装置１０２を介してファイル１５４の任意の部分にアクセスすることを望む場合は、システム１００はデータベース構造２００を使用して、ファイル１５４の全ての部分がすでにキャッシュ１０３上に記憶されており、またネットワーク１０１を通じて送信する必要のある部分はないと判定する。
【００３５】
別の例としては、データベース構造２００は、７つの部分に分割されるファイル９３１を示し、各部分は１００データ単位のサイズを有する。ファイル１５４とは対照的に、ファイル９３１のどの部分もキャッシュ１０３上にローカルに記憶されていない。この場合、クライアント装置１０２がファイル９３１（またはその部分）にアクセスする要求を識別すると、システム１００はデータベース構造２００を使用して、ファイル９３１のどの部分もクライアント装置１０２上にローカルに記憶されていないと判定する。この判定に応じて、システム１００は、ネットワーク１０１を通じて所望の部分を、ユーザに提供するためにクライアント装置１０２に送信する。
【００３６】
別の例としては、データベース構造２００は、５つの部分に分割されたファイル２８７を示し、各部分は１００データ単位のサイズを有する。これらの５つの部分のうちの２つ（部分１と２）はキャッシュ１０３中にローカルに記憶されているが、ファイル２８７の残りの３つの部分（部分３、４、および５）はキャッシュ１０３中に記憶されていない。この場合、クライアント装置１０２が部分１と２を要求すると、これらの部分はすでにローカルにキャッシュされているので、システム１００がネットワーク１０１を通じてこれらの部分をクライアント装置１０２に送信する必要はない。一方、クライアント装置１０２が部分３、４、および５のうちの１つを要求すると、システム１００は要求された１つ以上の部分をクライアント装置１０２に送信する。
【００３７】
図２に示されるように、様々なファイルの部分は互いに重複しない。しかしながら、本開示の範囲から逸脱することなく、部分は互いに重複してもよいことが理解されるであろう。さらに、データベース構造２００は、各ファイルが等しいサイズにされた部分に分割されたファイルを示すが、部分のサイズは異なるファイルに関して異なってよい。一般に、異なるファイルに関して、部分は全て同一のサイズであってよく、または同じファイルに関して、異なるサイズにされた部分が使用されてよい。いくつかの実施形態では、部分が同一のサイズの場合、マップは終了点無しで開始点を、開始点無しで終了点を、または部分の中央点等の別の点を含んでよい。
【００３８】
データベース構造２００に示されたエントリは、説明の目的のみに記載されるものであり、本明細書に記載されたマップ中のエントリは、図示されたフィールドのサブセットを含んでよく、および／または、例えばファイル（または部分）が作成されたか最後にアクセスされた日時に対応するタイムスタンプ、ファイルの種類またはファイル部分のコンテンツ、およびファイルの部分の数等の図示されていない他のフィールドを含んでよい。
【００３９】
図２に示されるように、ファイルの部分はあるファイルに関して固定のサイズを有し、また異なるファイルは異なるサイズにされたファイル部分を有してよい。一般に、ファイル部分のサイズは、異なるファイル間および同一のファイル内であっても同一または異なってよい。特に、ファイル部分のサイズは、ネットワーク１０１上の接続速度の検出に応じて動的に決定されてよい。例えば、部分のサイズは、インターネット接続速度に基づいて動的に決定されてよい。特に、インターネット接続速度が遅い場合、部分のサイズは、インターネット接続速度が速い場合よりも小さくてよい。
【００４０】
部分がクライアント装置１０２にダウンロードされるかクライアント装置１０２から削除されると、どの部分がキャッシュ１０３中に記憶されているかを反映するためにメタファイル１０４は更新される。特に、データベース構造２００は、どの部分がクライアント装置１０２にキャッシュされ、またどの部分がキャッシュされていないかについての正確な記録を維持するために更新される。
【００４１】
図３は、クライアント装置１０２からの読み出し要求に応じて、ファイルの部分を提供する例示の方法３００のフローチャートである。方法３００は、読み出し要求を受信する工程（ステップ３０２）と、読み出し要求が有効であるかを判定する工程（決定ブロック３０４）と、読み出し要求中のファイルがキャッシュされているかを判定する工程（決定ブロック３０８）と、を含む。１つの例では、要求が、例えばファイルの開始前または終了後に発生するデータの要求等の不正確なオフセットを含む場合に、読み出し要求は有効ではないと判定されてよい。さらなる例では、読み出し要求がもはや存在しないもしくは削除されたファイルからのデータを要求する場合、要求されたファイルから読み出す許可をクライアント装置１０２が有していない場合、要求が特定のファイルではなくフォルダからのデータに関する場合、読み出しデータを置く場所を読み出し要求が用意できない場合、またはそれらの任意の適切な組み合わせの場合、読み出し要求は有効でなくてよい。読み出し要求が有効ではない場合、要求はステップ３０６において拒絶される。キャッシュ１０３上にローカルに記憶されている等のファイルがキャッシュされている場合、ステップ３１０において、ファイルはクライアント装置１０２を介してユーザに提供される。反対に、ファイルがキャッシュされていない場合、方法はファイルの要求された部分がキャッシュされているかを決定ブロック３０９において判定する。その場合、ファイルの要求された部分はステップ３１２においてダウンロードおよびキャッシュされ、ダウンロードされた部分がステップ３１４においてユーザに提供される。決定ブロック３１６において、読み出し要求を調べて、まだダウンロードされていないかユーザに提供されていない部分がさらにあるかを判定する。読み出し要求中の全ての部分がダウンロードされてユーザに提供されるまで、ステップ３０９、３１１、３１２、および３１４が繰り返される。
【００４２】
決定ブロック３０８で、ファイルがキャッシュされているかの判定は、要求中の任意の部分を識別することを伴ってよい。１つの例では、要求は、２０ＭＢのファイルの１１ＭＢから１５ＭＢ等のサイズで表されるファイルの一部を参照してよい。その後、システム１００は、データベース構造２００等のデータベース構造をマップとして使用し、要求中の部分に対応する適切な部分識別子を識別する。別の例では、要求は適切な部分識別子をすでに参照してよい。システム１００は、要求中の任意の部分がクライアント装置１０２にキャッシュされているかを決定ブロック３０９において判定する。すでにキャッシュされている任意の部分はステップ３１１において提供されるが、キャッシュされていない任意の部分はステップ３１２においてダウンロードされ、ステップ３１４においてユーザに提供されてよい。
【００４３】
図４は、クライアント装置１０２からの書き込み要求に応じて、ファイルの部分を提供する例示の方法４００のフローチャートである。方法４００は、書き込みを受信する工程（ステップ４０２）と、書き込み要求が有効であるかを判定する工程（決定ブロック４０４）と、書き込み要求中のファイルがキャッシュされているかを判定する工程（決定ブロック４０８）と、を含む。書き込み要求は、図３に関し上記されるように、読み出し要求が有効ではないのと同じ理由のいずれかで有効ではない場合がある。さらに、書き込み要求は、所定の制限よりも大きいと無効の場合がある。書き込み要求が有効ではない場合、要求はステップ４０６において拒絶される。キャッシュ１０３上にローカルに記憶されている等のファイルがキャッシュされている場合、ステップ４１０においてファイルはクライアント装置１０２を介してユーザに提供され、ファイルの修正済み部分がウェブベースのストレージシステム１１０にステップ４１１においてアップロードされる。反対に、ファイルがキャッシュされていない場合、方法はファイルの要求された部分がキャッシュされているかを決定ブロック４０９において判定する。キャッシュされていない場合、ファイルの要求された部分はステップ４１２においてダウンロードおよびキャッシュされ、ダウンロードされた部分がステップ４１４においてユーザに提供される。反対に、ファイルの要求された部分が、決定ブロック４０９で判定すでにキャッシュされている場合は、方法４００は、ステップ４１４に直接進み、ダウンロードされた部分をユーザに提供する。決定ブロック４１６において、提供された部分をユーザが修正したかどうかが判定される。修正した場合、修正済み部分はステップ４１８においてアップロードされる。そうでなければ、読み出し要求を調べて、まだダウンロードされていないかユーザに提供されていない部分がさらにあるかを決定ブロック４２０において判定する。書き込み要求中の全ての部分がダウンロードされてユーザに提供されるまで、ステップ４０９、４１２、４１４、４１６、および４１８が繰り返される。
【００４４】
図５は、クライアント装置でファイルの部分にアクセスする例示の方法５００のフローチャートである。方法５００は、クライアント装置へのダウンロードのためにファイルの１つ以上の部分を選択する工程であって、ファイルは、ネットワークを介してクライアント装置と通信をするウェブベースのストレージシステム上に記憶されている工程（ステップ５０２）と、選択された１つ以上の部分における、クライアント装置上に記憶されていない少なくとも１つの部分を識別する工程（ステップ５０４）と、ファイルの識別された少なくとも１つの部分をダウンロードするために、要求を、ユーザ対話なしに、ウェブベースのストレージシステムに送信する工程（ステップ５０６）と、ファイルの識別された少なくとも１つの部分を、ネットワークを介してクライアント装置にダウンロードする工程（ステップ５０８）と、を含む。
【００４５】
ステップ５０２において、クライアント装置へのダウンロードのためにファイルの１つ以上の部分が選択される。ファイルは、ネットワークを介してクライアント装置と通信をするウェブベースのストレージシステム上に記憶されている。いくつかの実施形態では、ファイルが文書に対応する場合、文書の第１の部分は、クライアント装置１０２を操作するユーザに、ディスプレイ１０５を通じて提供されてよい。ファイルの選択された１つ以上の部分は、第１の部分に隣接する文書の第２および第３の部分に対応してよい。加えてまたは代わりに、ファイルの選択された１つ以上の部分は、ファイルの過去の閲覧パターンに基づいて決定されてよい。例えば、ユーザが文書の上から下の方向にスクロールしている場合、ファイルの選択された１つ以上の部分は、次に閲覧されると予測される部分を含んでよい。さらに、部分には、スクロールの方向に基づいて決定される優先スコアが付与されてよい。例えば、文書において他の部分の上に出現する部分には、低い部分よりも高い優先スコアが付与されてよく、高い優先スコアを有する部分は他の部分の前にダウンロードされてよい。加えてまたは代わりに、ファイルの選択された１つ以上の部分は、ファイルの判定された編集作業に基づいて決定されてよい。例えば、まだユーザに閲覧されていないが、１人以上の他のユーザに大量に編集されたファイルの部分は、少なく編集された他の部分よりも優先されてよい。
【００４６】
いくつかの実施形態では、ファイルの１つ以上の部分のサイズは、ネットワークの接続速度と、ファイルの種類と、クライアント装置のユーザによって要求されると予測されるファイル中のデータの量と、のうちの少なくとも１つに基づいて決定される。図１に関し記載されるように、遅い接続速度は、ネットワーク１０１の接続速度が速い場合よりも小さな部分に関連付けられてよい。さらに、ファイルが、学校に在籍する生徒等の記録を追跡するデータベースを含む場合、このファイルは、特定の用途に適切なサイズにされた部分に分割されてよい。例えば、部分は一人の生徒の記録を含むサイズにされてよい。
【００４７】
ステップ５０４において、選択された１つ以上の部分における、クライアント装置上に記憶されていない少なくとも１つの部分が識別される。例えば、ステップ５０２において選択された１つ以上の部分は、メタファイル中の、図２に関し示され記載されたデータベース構造２００等のエントリと比較されてよい。特に、メタファイル中の各エントリは、選択された１つ以上の部分の各々を識別する部分識別子への参照を含んでよい。メタファイル中の各エントリは、選択された１つ以上の部分の各々がクライアント装置上に記憶されているかどうかを示す標識をさらに含んでよい。
【００４８】
ステップ５０６において、ファイルの識別された少なくとも１つの部分をダウンロードするために、要求は、ユーザ対話なしに（または言い換えれば自律的に）、ウェブベースのストレージシステムに送信される。いくつかの実施形態では、ファイルのコンテンツをクライアント装置に表示するために、アプリケーションがクライアント装置にインストールされており、アプリケーションは、変更無しで、ファイルの選択された１つ以上の部分の表示が可能である。特に、ファイルの全体がローカルにキャッシュされている場合は、ファイルを開くために使用されるアプリケーションは、ファイル部分を開くのに使用可能な同一のアプリケーションであり、ファイルの部分を開くことを可能にするためのアプリケーションの変更は不要である。一般に、本開示のシステムおよび方法は、ファイルの関連する部分が初めにキャッシュされているか否かに関わらず、ユーザによるクライアント装置との通常の対話の変更の必要なく、ユーザのクライアント装置に実装されてよい。
【００４９】
ステップ５０８において、ファイルの識別された少なくとも１つの部分はネットワークを介してクライアント装置にダウンロードされる。特に、識別された少なくとも１つの部分はウェブベースのストレージシステム１１０によってクライアント装置１０２に送信される。送信された部分がクライアント装置１０２上に記憶される前に、送信された部分は暗号化されてよい。上記のように、暗号化方法は、同一ファイルの他の部分に使用される同一の鍵および異なる初期化ベクトルの使用を含んでよい。さらに、異なる初期化ベクトルはメタファイル１０４中またはデータベース構造２００中にフィールドエントリとして記憶されてよい。
【００５０】
図６は、本明細書に記載された処理のいずれかを実行する、図１のシステムの任意の構成要素等のコンピューティング装置のブロック図である。これらのシステムの構成要素の各々は１つ以上のコンピューティング装置６００に実装されてよい。ある態様では、これらのシステムの複数の構成要素が１つのコンピューティング装置６００内に含まれてよい。ある実装では、構成要素およびストレージ装置は、複数のコンピューティング装置６００間に実装してよい。
【００５１】
コンピューティング装置６００は、少なくとも１つの通信インターフェイスユニットと、入出力コントローラ６１０と、システムメモリと、１つ以上のデータストレージ装置と、を備える。システムメモリは、少なくとも１つのＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）６０２および少なくとも１つのＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）１００４を含む。これらの要素の全ては、コンピューティング装置６００の動作を行うためにＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）６０６と通信をしている。コンピューティング装置６００は様々な異なる方法で構成されてよい。例えば、コンピューティング装置６００は通常のスタンドアローンコンピュータでよく、または代わりに、コンピューティング装置６００の機能は複数のコンピュータシステムとアーキテクチャ間に分散されてよい。図６では、コンピューティング装置６００は、ネットワークまたはローカルネットワークを介して、他のサーバまたはシステムに接続している。
【００５２】
コンピューティング装置６００は分散アーキテクチャに構成されてよく、データベースおよびプロセッサは、別個のユニットまたは場所に収納されている。いくつかのユニットは、１次処理機能を実行し、一般のコントローラまたはプロセッサおよびシステムメモリを少なくとも含む。分散アーキテクチャの実装においては、これらのユニットの各々は、他のサーバ、クライアント、またはユーザコンピュータおよび他の関連装置との１次通信リンクとして機能する通信ハブまたはポート（図示せず）に、通信インターフェイスユニット６０８を介して、接続している。通信ハブまたはポートは、専ら通信ルータとして機能する最小限の処理能力を有してよい。様々な通信プロトコルは、システムの一部であってよく、Ｅｔｈｅｒｎｅｔ（登録商標）、ＳＡＰ、ＳＡＳ（登録商標）、ＡＴＰ、ＢＬＵＥＴＯＯＴＨ（登録商標）、ＧＳＭ（登録商標）、及びＴＣＰ／ＩＰを含むがそれに限定されるものではない。
【００５３】
ＣＰＵ６０６は、１つ以上の通常のマイクロプロセッサ等のプロセッサ、および１つ以上の、ＣＰＵ６０６から仕事量をオフロードする数値演算コプロセッサ等の、補助的なコプロセッサを備える。ＣＰＵ６０６は通信インターフェイスユニット６０８および入出力コントローラ６１０と通信しており、それを通じてＣＰＵ６０６は、他のサーバ、ユーザ端末、または装置等の他の装置と通信する。通信インターフェイスユニット６０８および入出力コントローラ６１０は、例えば他のプロセッサ、サーバ、またはクライアント装置と同時通信する複数の通信チャンネルを含んでよい。
【００５４】
ＣＰＵ６０６はまた、データストレージ装置と通信をしている。データストレージ装置は、磁気、光学、または半導体メモリの適切な組み合わせを備えてよく、また、例えばＲＡＭ６０２、ＲＯＭ６０４、フラッシュドライブ、コンパクトディスク等の光学ディスク、またはハードディスクもしくはドライブを含んでよい。ＣＰＵ６０６およびデータストレージ装置の各々は、例えば、単一のコンピュータまたは他のコンピューティング装置内に完全に配置されるか、またはＵＳＢポート、シリアルポートケーブル、同軸ケーブル、イーサネット（登録商標）ケーブル、電話線、無線周波数トランシーバもしくは他の類似の無線または有線の媒体、または前述の組み合わせ等の通信媒体によって互いに接続されてよい。例えば、ＣＰＵ６０６はデータストレージ装置に通信インターフェイスユニット６０８を介して接続されてよい。ＣＰＵ６０６は、１つ以上の特定の処理機能を実行するよう構成されてよい。
【００５５】
データストレージ装置は、例えば、（ｉ）コンピューティング装置６００のオペレーティングシステム６１２、（ｉｉ）本明細書に記載されたシステムおよび方法に従って、特にＣＰＵ６０６に関して詳細に記載された処理に従ってＣＰＵ６０６を監督するよう適合された１つ以上のアプリケーション６１４（例えば、コンピュータプログラムコードまたはコンピュータプログラム製品）、または（ｉｉｉ）プログラムに要求された情報を記憶するために使用され得る情報を記憶するよう適合されたデータベース６１６、を記憶してよい。
【００５６】
オペレーティングシステム６１２はおよびアプリケーション６１４は、例えば、圧縮、未コンパイル、および暗号化形式で記憶されてよく、またコンピュータプログラムコードを含んでよい。プログラムの命令は、ＲＯＭ６０４またはＲＡＭ６０２等のデータストレージ装置以外のコンピュータ可読媒体からプロセッサのメインメモリに読み込まれてよい。プログラムにおける一連の命令を実行することで、ＣＰＵ６０６に本明細書に記載された処理ステップを実行させるが、ハードワイヤード回路が、本開示の処理の実装のためのソフトウェア命令の代わりにあるいはソフトウェア命令と組み合わせて使用されてよい。したがって、記載されたシステムおよび方法は、ハードウェアおよびソフトウェアの任意の特定の組み合わせに限定されない。
【００５７】
適切なコンピュータプログラムコードが、本明細書に記載された任意の処理に関し１つ以上の機能を実行するために提供されてよい。プログラムはまた、プロセッサに、入出力コントローラ６１０を介してコンピュータ周辺装置（例えばビデオディスプレイ、キーボード、コンピュータマウス等）と連動することを可能にするオペレーティングシステム６１２、データベース管理システム、および「デバイスドライバ」等のプログラム要素を含んでよい。
【００５８】
本明細書で使用される用語「コンピュータ可読媒体」は、実行のための命令をコンピューティング装置６００（または本明細書に記載された装置の任意の他のプロセッサ）のプロセッサに提供するまたは提供に関与する任意の非一時的な媒体ことを言う。そのような媒体は、非揮発性媒体および揮発性媒体を含むがそれに限定されるものではない複数の形態をとってよい。非揮発性媒体は、例えば、光学、磁気、もしくは光磁気ディスク、またはフラッシュメモリ等の集積回路メモリを含む。揮発性媒体は、典型的にはメインメモリを構成するＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含む。コンピュータ可読媒体の一般的な形態は、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤ、任意の他の光学媒体、パンチカード、紙テープ、穿孔のパターンを有する任意の他の物理的媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭもしくはＥＥＰＲＯＭ（ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＦＬＡＳＨ−ＥＥＰＲＯＭ、任意の他のメモリチップもしくはカートリッジ、またはコンピュータが読み込み可能な任意の他の非一時的媒体を含む。
【００５９】
実行用のＣＰＵ６０６（または本明細書に記載された装置の任意の他のプロセッサ）に１つ以上の一連の１つ以上の命令を取得することにおいて、コンピュータ可読媒体の様々な形態が含まれてよい。例えば、命令は最初はリモートコンピュータ（図示せず）の磁気ディスク上にあってよい。リモートコンピュータは命令を自身のダイナミックメモリにロードし、命令をイーサネット接続、ケーブル線、またはモデムを使用する電話線さえも通じて送信することが可能である。コンピューティング装置６００（例えばサーバ）に対してローカルな通信装置は、それぞれの通信回線上のデータを受信し、データをプロセッサ用にシステムバスに置くことが可能である。システムバスは、メインメモリにデータを運び、プロセッサがそこから命令を取得して実行する。メインメモリによって受信された命令は、プロセッサによる実行の前または後に選択的にメモリ中に記憶されてよい。加えて、命令は通信ポートを介して電気信号、電磁または光学信号として受信される。これらの信号は、様々な種類の情報を運ぶ無線通信またはデータストリームの典型的な形態である。
【００６０】
本開示の様々な実施形態が本明細書に示され記載されているが、当業者にとっては、そのような実施形態は例としての目的でのみ提供されることが明らかである。数々の変形、変更、および置き換えが、本開示から逸脱することなく、当業者にとって明らかである。本開示に記載の本発明の実施形態に対する様々な代替が、本開示の実施に際して用いられてよいことが理解されるべきである。
【図１】
0006789244.tif 000002
【図２】
0006789244.tif 000003
【図３】
0006789244.tif 000004
【図４】
0006789244.tif 000005
【図５】
0006789244.tif 000006
【図６】
0006789244.tif 000007