クライアントとデータ記憶サーバを含むコンピューティング環境において、前記データ記憶サーバ内の記憶最適化の詳細が前記クライアントに見えるようにする方法であって、前記データ記憶サーバ上のファイルデータの記憶を記述したメタデータにアクセスするステップであって、前記ファイルデータは、前記ファイルデータのネイティブ形体とは異なる形体で前記データ記憶サーバ上にストアされており、前記メタデータは、前記ファイルデータの記憶形体を前記データ記憶サーバ上にストアされている通りに見えるようにするステップと、前記ファイルデータに対するリクエストを前記クライアントから前記データ記憶サーバに送信するステップと、前記ファイルデータの1つまたは2つ以上、前記データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび前記ファイルデータの少なくとも一部を表わすデータを含む情報を、前記データ記憶サーバから受信するステップとを含むことを特徴とする方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データ記憶サーバ上の前記ファイルデータの非重複の結果得られる前記ファイルデータの記憶を記述したデータを含むことを特徴とする請求項1に記載の方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データファイルのサブセットの暗号ハッシュを含むことを特徴とする請求項1に記載の方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの複数のサブセットの各々の暗号ハッシュを含むことを特徴とする請求項1に記載の方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの圧縮したサブセットを記述したデータを含むことを特徴とする請求項1に記載の方法。クライアントとデータ記憶サーバを含むコンピューティング環境において、前記データ記憶サーバ内の記憶最適化の詳細が前記クライアントに見えるようにする方法であって、前記データ記憶サーバ上のファイルデータの記憶を記述したメタデータを送信するステップであって、前記ファイルデータは、前記ファイルデータのネイティブ形体とは異なる形体で前記データ記憶サーバ上にストアされており、前記メタデータは、前記ファイルデータの記憶形体を前記データ記憶サーバ上にストアされている通りに見えるようにするステップと、コンピューティングシステムからの前記ファイルデータに対するリクエストを前記データ記憶サーバで受信するステップと、前記ファイルデータの少なくとも1つ、前記データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび前記ファイルデータの少なくとも一部を表わしているデータを含む情報を前記データ記憶サーバから送信するステップとを含むことを特徴とする方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データ記憶サーバ上の前記ファイルデータの非重複の結果得られる前記ファイルデータの記憶を記述したデータを含むことを特徴とする請求項6に記載の方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記データファイルのサブセットの暗号ハッシュを含むことを特徴とする請求項6に記載の方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの複数のサブセットの各々の暗号ハッシュを含むことを特徴とする請求項6に記載の方法。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した前記メタデータは、前記ファイルデータの圧縮したサブセットを記述したデータを含むことを特徴とする請求項6に記載の方法。1つまたは2つ以上のコンピュータプロセッサ上で実行されると、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法を実行するコンピュータ実行可能命令が符号化されて格納されている1つまたは2つ以上のコンピュータ可読記憶媒体を含むコンピュータプログラムプロダクトであって、前記方法は、ファイルデータに対するリクエストをコンピューティングシステムから前記データ記憶サーバに送信するステップと、前記データ記憶サーバ上のファイルデータの記憶を記述した情報を含む情報を前記データ記憶サーバから受信するステップと、を含むことを特徴とするコンピュータプログラムプロダクト。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記データ記憶サーバ上の前記ファイルデータの非重複の結果得られる前記ファイルデータの記憶を記述したデータを含むことを特徴とする請求項11に記載のコンピュータプログラムプロダクト。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記ファイルデータのサブセットの暗号ハッシュを含むことを特徴とする請求項11に記載のコンピュータプログラムプロダクト。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記ファイルデータの複数のサブセットの各々の暗号ハッシュを含むことを特徴とする請求項11に記載のコンピュータプログラムプロダクト。前記データ記憶サーバ上の前記ファイルデータの記憶を記述した情報を含む前記情報は、前記ファイルデータの圧縮したサブセットを記述した情報を含むことを特徴とする請求項11に記載のコンピュータプログラムプロダクト。本発明は、データ記憶とデータ送信をエンドツーエンドで最適化するための方法、システム、デバイスおよびコンピュータプログラムプロダクトに適用される。例えば、本明細書に記載の実施形態によれば、データ記憶とデータ送信の両方の効率化と最適化を強化することを可能にしている。本発明は、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法、システムおよびコンピュータプログラムプロダクトに適用される。本発明の実施形態は特殊目的または汎用コンピュータを含むことがあり、その中には、本明細書の中で詳しく説明されているように、種々のコンピュータハードウェアまたはモジュールが含まれている。一例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法が提供されている。この方法は、データ記憶サーバ上のファイルデータの記憶を記述したメタデータにアクセスするステップを含み、そこではファイルデータはそのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされている。このメタデータは、ファイルデータの記憶形体がデータ記憶サーバ上にストアされている通りに見えるようにする。クライアントはファイルデータのリクエストを記憶サーバに送信することができ、ファイルデータ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータ、および/またはファイルデータの少なくとも一部を表わしているデータを含む情報をデータ記憶サーバから受信することができる。別の例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにする方法が提供されている。この方法は、データ記憶サーバ上のファイルデータの記憶を記述したメタデータを送信するステップを含んでいる。ファイルデータは、そのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされており、メタデータはそのファイルデータの記憶形体がデータ記憶サーバにストアされている通りに見えるようにする。データ記憶サーバは、ファイルデータのリクエストをコンピューティングシステムから受信し、ファイルデータ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータ、および/またはファイルデータの少なくとも一部を表わしているデータを含む情報を送信する。別の例示実施形態によれば、データ記憶サーバ内の記憶最適化の詳細がクライアントに見えるようにするコンピュータプログラムプロダクトが提供されている。このコンピュータプログラムプロダクトは、特に、ファイルデータのリクエストをコンピューティングシステムからデータ記憶サーバに送信し、データ記憶サーバ上のファイルデータの記憶を記述した情報を含む情報をデータ記憶サーバから受信するためのコンピュータ実行可能命令を含んでいる。本発明の実施形態によれば、以下で詳しく説明されるように、例えば、1つまたは2つ以上のプロセッサおよびシステムメモリのようなコンピュータハードウェアを含む特殊目的または汎用コンピュータが含まれているか、または利用されることがある。本発明の範囲内の実施形態は、コンピュータ実行可能命令を実行またはストアするための物理的およびその他のコンピュータ可読媒体および/またはデータ構造も含んでいる。このようなコンピュータ可読媒体は、汎用または特殊目的コンピュータシステムによってアクセス可能ならば、利用可能などのような媒体であってもよい。コンピュータ実行可能命令をストアするコンピュータ可読媒体は物理的記憶媒体であることがある。コンピュータ実行可能命令を実行するコンピュータ可読媒体は伝送媒体であることがある。従って、例を挙げると、本発明の実施形態は、少なくとも2つの異なる別種のコンピュータ可読媒体、すなわち、コンピュータ記憶媒体と伝送媒体を含むことができるが、これらに限定されない。コンピュータ記憶媒体としては、RAM、ROM、EEPROM、CD-ROMまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または望みのプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形体でストアするために使用可能で、汎用または特殊目的コンピュータによってサクセス可能であるその他の任意の媒体がある。コンピュータプログラムプロダクトは、1つまたは2つ以上のプロセッサ上で実行されるとき、方法、ステップおよび動作を本明細書に記載されているように実行するコンピュータ実行命令が符号化されてそこに格納されている1つまたは2つ以上のコンピュータ可読記憶媒体を含むこともある。ネットワークとは、コンピュータシステムおよび/またはモジュールおよび/または他のエレクトロニックデバイスプログラムの間で電子データをトランスポートするのを可能にする1つまたは2つ以上のリンクとして定義されている。ネットワークまたはその他の通信コネクションハードワイヤード、ワイヤレスまたはハードワイヤードとワイヤレスの組み合わせのいずれかを利用して情報がコンピュータに転送または提供されるとき、コンピュータはそのコネクションを伝送媒体として正しく見ている。伝送媒体として可能なものには、コンピュータ実行可能命令またはデータ構造の形体で望みのプログラムコード手段を伝播するために使用可能であって、汎用または特殊目的コンピュータによってアクセス可能であるネットワークおよび/またはデータリンクがある。上に挙げたものの組み合わせも、当然にコンピュータ可読媒体の範囲内に含まれる。さらに、種々のコンピュータシステムコンポーネントに到着したとき、コンピュータ実行可能命令の形体をしたプログラムコード手段またはデータ構造を伝送媒体からコンピュータ記憶媒体にまたはその逆に自動的に転送することができる。例えば、ネットワークまたはデータリンクを利用して受信したコンピュータ実行可能命令またはデータ構造は、ネットワークインタフェースモジュール例えば、NIC内のRAMにバッファリングしたあとで、最終的にコンピュータシステムのRAMおよび/またはコンピュータシステムにある低揮発性のコンピュータ記憶媒体に転送することができる。従って、当然に理解されるように、コンピュータ記憶媒体は、伝送媒体も利用するまたは主としてコンピュータシステムコンポーネントに含まれることができる。コンピュータ実行可能命令は、例えば、プロセッサで実行されると、汎用コンピュータ、特殊目的コンピュータまたは特殊目的処理デバイスにある種の関数または関数グループを実行させる命令とデータを含んでいる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語のような直接形式命令であることも、ソースコードであることもある。構造上の特徴および/または方法上の動作に特有の表現で主題を記載してきたが、当然に理解されるように、請求項に定義した主題は上述した記載の特徴または動作に必ずしも限定されない。むしろ、記載した特徴と動作は、請求項を実現する例示形態として開示されたものである。この分野の当業者ならば理解されるように、本発明は様々なタイプのコンピュータシステム構成と共にネットワークコンピューティング環境で実施されることがあり、その中にはパーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、モバイル電話、PDA、ページャ、ルータ、スイッチなどが含まれる。本発明は分散システム環境で実施されることもあり、そこではローカルコンピュータシステムとリモートコンピュータシステムはネットワークを通してハードワイヤードデータリンク、ワイヤレスデータリンクによって、またはハードワイヤードデータリンクとワイャレスデータリンクの組み合わせによってリンクされており、共にタスクを実行している。分散システム環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶デバイスに置かれていることがある。本明細書で用いられているモジュールまたはコンポーネントという用語は、コンピューティングシステム上で実行可能なソフトウェアオブジェクトまたはルーチンを指すことができる。本明細書に記載の異なるコンポーネント、モジュール、エンジンおよびサービスはコンピューティングシステム上で実行されるオブジェクトまたはプロセスとして例えば、別々のスレッドとして実現されることがある。本明細書に記載のシステムとモジュールは好ましくはソフトウェアで実現されるが、ハードウェアまたはソフトウェアとハードウェアの組み合わせで実現することも可能であり、これは本発明の意図していることである。本明細書の記載において、コンピューティングエンティティは本明細書に前述したように任意のコンピューティングシステムであることも、コンピューティングシステム上を走行する任意のモジュールまたはモジュールの組み合わせであることもある。図1は、本発明が動作することができる環境の例を示す図である。図1は、クライアント110、データストア120、およびクライアント110とデータストア120との間のデータ送信130を示している。データは多数の異なる形体でデータストア120上にストアされることがある。本明細書に提示した実施形態は、図1に図示するような環境でデータ記憶140とデータ送信130を統合し、最適化する方法、システムおよびコンピュータプログラムプロダクトを記載している。ファイルは、連続ファイルとしてそのネイティブ形体でデータストア内にストアされることがある。例えば、ファイルA150は、アプリケーションによって提示されるか、あるいはアプリケーションによって予想される通りに、ファイルのすべてのビット、バイトおよびデータを含む未変更の生フォーマットまたはネイティブフォーマットでデータストアにストアされている。データは、種々の代替フォーマットでストアされることもある。例えば、データは必要とする記憶スペースを低減するために圧縮フォーマットでストアされることもあれば、データは冗長性を低減し、データストアにストアされたデータを非重複にするための手法を使用してストアされることもある。データは、ファイルが別々で異なるデータのサブセットに分割されているチャンクまたはブロックでデータストア上にストアされることもある。例えば、ファイルは、チャンク160C1-Cnとしてデータストア内にストアされることがある。ファイルからのデータのサブセットであるチャンクはブロックと呼ばれることもあり、チャンクおよびブロックという2つの用語は本明細書では同意義で使用されているなお、本明細書で用いられているファイルの用語は論理的に関連する任意のデータグループまたはデータ量を表わしている。データストアでは、ファイルをチャンクに分割してデータ記憶を最適化するアルゴリズムが使用されることがある。例えば、ファイルは、より効率的にまたはコンパクトにファイルをデータストアにストアするためにチャンク160C1-Cnに分割されることがある。チャンクに分割されたファイルは、ファイル内の冗長性を減少するとによってより効率的にストアされることもある。例えば、チャンクC1は2回以上ファイル内に現れることがある。ファイルをチャンクに分割すると、チャンクC1は一度だけデータストアに書くことで済むので、ファイル内に繰り返して現れる各々のチャンクC1は、そのチャンクC1への参照またはポインタで置き換えることが可能になる。以上から理解されるように、チャンクまたはブロックは任意の固定長である必要でなく、任意の長さ、データ量またはファイルの任意の部分であることもあり、その中にはファイル全体も含まれる。ファイルのチャンクまたはブロックはファイルの任意の長さおよび/またはオフセットであることがある。ファイルをチャンクまたはブロックに分割することは任意のアルゴリズムまたは手法に従って行なわれることがあり、チャンクのサイズは、データがそこに存続するデータストアまたはデータがそこを送信される送信経路の特定の考慮事項によって影響されることも、左右されることもある。データは、圧縮フォーマットでデータストア内にストアされることもある。例えば、ファイルC170は、オリジナルファイルが圧縮アルゴリズムを使用して圧縮されたときの圧縮フォーマットでストアされており、圧縮で得られたファイル、つまり、ファイルC170は、データストア内に占める記憶スペースがオリジナルの未圧縮ファイルデータよりも少なくなっている。ファイルおよびデータの圧縮は、LempelZiv、LempelZivWelchおよびMPEG圧縮のような業界で周知の手法によって行なわれることがある。圧縮とチャンキングまたはブロッキングを組み合わせたものが、データストアで採用されることもある。例えば、ファイルはチャンクに分割されたあとで、これらのチャンクが圧縮され、圧縮チャンク180CH1-CHnとしてストアされることがある。データストア内にストアされたファイルおよびデータを非重複にするdeduplicatingことにより、別の圧縮化が得られることがある。非重複にすると、データストアにストアされた別々のファイルに現れることのある同一ファイルまたは同一部分が特定され、重複するファイルまたはデータ部分の1つを除くすべてがファイルまたはデータ部分の参照コピーへの参照で置き換えられる。ファイルを非重複にすると、特定のファイルまたはデータ部分の1つのコピーだけがデータストアにストアされるので、多数の重複ファイルまたはデータ部分が占めるはずであった記憶スペースが節減されることになる。非重複deduplicationは、ファイルのチャンクレベルで行なわれることもある。例えば、2つまたはそれ以上のファイルがデータチャンクにチャンキングされた場合、重複するチャンクはデータストア内で冗長チャンクのコピーへの参照で置き換えられることがある。例えば、ファイルは、チャンクC1およびデータストア120内にチャンクフォーマットでストアされた他のファイルに関連してストアされた他のチャンクへの参照としてデータストア120上にストアされることがある。例えば、ファイルXはチャンクC1-Cnへの参照としてストアされることがあり、ファイルYはチャンクCH1、C1およびC2への参照としてストアされる可能性があり、ファイルZはチャンクC1および圧縮チャンクCH2-CHnへの参照のリストとしてストアされる可能性がある。ファイルの非重複、チャンキングおよび圧縮は、これらの組み合わせで行なわれることもある。例えば、ファイルは、1つまたは2つ以上のチャンクとしてデータストア上にストアされることがあり、そこではチャンクの各々が圧縮されている。ファイルデータは任意の組み合わせでストアされることもあり、そこでは一部のファイルは未圧縮でストアされ、一部のファイルは圧縮でストアされ、一部のファイルはチャンクフォーマットでストアされ、一部のファイルはチャンクとしてストアされ、これにより一部のチャンクは圧縮され、一部のチャンクは未圧縮になっている。一般的に、あるクライアントがデータストアにデータを要求するとき、そのクライアントは、ファイル全体についてまたはファイルの一部のロジック部分についてデータを要求することになる。例えば、クライアントはファイルシステムを通してgetを要求することもあれば、ファイルシステムを通してgetFileBytesを要求することもある。ファイルまたはそのファイルの一部がデータストア120からクライアント110に送信130されるとき、要求データを再アセンブルして、クライアントまたはアプリケーションが期待するフォーマットでクライアントに送信するために圧縮データを展開したり、データのチャンクを再アセンブルしたりする負担がデータストアに生じることになる。本明細書に記載の実施形態によれば、クライアントは、データストア上のファイルデータの記憶に関する情報を要求またはその情報にアクセスできるので、データストア上にストアされたデータの記憶詳細に関する情報をクライアントに与えることによって効率化と最適化が得られることがある。例えば、クライアント110は、ファイルXがどのようにデータストアにストアされているかをクライアントに通知するようにデータストア120に要求することがある。データストア120は、ファイルXが圧縮チャンクCH1とCH3としてストアされていることをクライアントに通知することがある。圧縮チャンクを圧縮形体で送信するとより効率的になるように、この場合には、クライアントはgetを要求するのではなくこれを要求すると、データストアはチャンクCH1とCH3を展開してファイルを再アセンブルしてから、そのファイルをクライアントに送信する必要が生じる、これらのチャンクCH1とCH3をクライアントに送信することをデータストアに要求することができる。実施形態によれば、クライアントは、データストア上のファイルデータの記憶に関する情報にアクセスできるので、データストア上にストアされたデータの記憶詳細に関する情報をクライアントに与えることによって効率性と最適化が得られることもある。例えば、クライアント110は、ファイルXがどのようにデータストアにストアされているかを示す、ローカルにキャッシュまたはストアされた情報にアクセスすることがある。この情報は先行リクエストによってすでに得られていることもあれば、クライアントとデータストアとの間の先行トランザクションの過程ですでにキャッシュされていることもある。ローカルにストアされているか、またはデータストア120よりも低いレイテンシまたは送信コストで記憶ロケーションから得られるチャンクのコピーをクライアントがすでに持っていれば、追加の効率が得られることがある。このようなケースでは、そのあとクライアントはgetChunkだけをデータストアに要求することができる。本明細書に記載の実施形態は、クライアントとデータストアとの間および/またはクライアントと集中化サーバとの間の冗長LANおよび/またはWANトラフィックを減少している。本明細書に記載の実施形態によれば、種々のネットワークファイルシステムプロトコルについて記憶と送信の最適化が得られる。例えば、SMBプロトコルとHTTPプロトコルのどちらも、本明細書に記載のデバイスと手法によって拡張され、強化されることができる。標準ファイルシステムプロトコル例えば、SMBとHTTPは、APIを提供するように拡張可能であり、そのAPIは、データストアによって与えられたときファイルまたはデータ部分がどのようにデータストア上にストアされているかの詳細が見えるようにするデータストアからデータをクライアントが要求するのを可能にする。例えば、クライアント110は、ファイルXがどのようにストアされているのかに関するデータをデータストア120に要求することがある。例えば、クライアント110は、getStorageDetailsのようなファイルシステムエクステンションをコールすることがあり、そのレスポンスとしてデータストアは{fileXchunksCH1CH3}を返すことがある。ファイルXがどのようにストアされているかの詳細は分かっているので、クライアントはファイルXに関連するデータをどのようにデータストアに要求するかを決定することができる。クライアントは、その生フォーマットまたはネイティブフォーマットでファイル全体を標準的方法で要求できる。これとは対照的に、本明細書に記載の実施形態は、クライアントが圧縮チャンクCH3をクライアントに送信することをデータストアに要求するのを可能にしている。一実施形態では、図3に示すように、クライアントは、データ記憶サーバ上のファイルデータを記述したメタデータにアクセスすること310ができ、そこではファイルデータはそのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされ、メタデータはファイルの記憶形体がデータ記憶サーバ上にストアされた通りに見えるようにしている。データ記憶サーバ上のファイルデータの記憶を記述したメタデータは、ファイルデータがデータストア上でどのようにチャンキングされたか、ファイルデータがデータストア上でどのように圧縮されたか、またはファイルデータがデータストア上でどのようにチャンキングされると共に圧縮されているかを記述した情報であることがある。ファイルがどのようにチャンキングされているかの詳細には、ファイルのどの部分がサーバ上にストアされた各チャンクに対応しているかが含まれていることがある。また、チャンキングの詳細には、ファイルを構成するチャンクの各々の暗号ハッシュも含まれていることがある。チャンクの暗号ハッシュは、クライアント、アプリケーションおよびデータストアが各チャンクをユニークに識別することを可能にしている。この情報を使用すると、クライアント、アプリケーションおよび他のデータストアは、そのチャンクに同一チャンクが暗号ハッシュで識別されたようにすでに使用可能になっているかどうかを識別できることがある。ファイルまたはデータの部分例えば、チャンクがどのように圧縮されているかの詳細には、データをユニークに識別するためのオリジナル未圧縮データの暗号ハッシュが含まれていることがある。この詳細には、圧縮データをユニークに識別するために圧縮データの暗号ハッシュが含まれていることもある。また、この詳細には、圧縮を行なうために使用された圧縮のタイプこれは、圧縮データをデータストアから別のエンドポイントに送信したあとその圧縮データを展開するために必要なことがあるも含まれていることもある。圧縮のタイプとしては、例えば、LZ、LZW、MPEGなどがある。メタデータにアクセスすることにより、クライアントはデータストア上のデータの記憶詳細を知ることができる。クライアントがデータストア上のデータの記憶詳細を知ったとき、クライアントはファイルデータのリクエストを記憶サーバに送信すること320がある。本明細書に記載の実施形態を採用すると、クライアントはファイル全体を要求しないで済むので、クライアントは、必要とするファイルのチャンクだけを要求することもあれば、ファイルの圧縮バージョンまたはファイルのチャンクの圧縮バージョンを要求することもある。ファイルデータのリクエストを送信したあと320、クライアントは、要求したファイルデータ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび/またはファイルデータの少なくとも一部を表わしているデータを含む情報を記憶サーバから受信すること330ができる。ファイルデータ情報を受信すること330には、データファイルの少なくとも1つ、記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよび/またはファイルデータの少なくとも一部を表わしているデータが含まれていることがある。この情報には、クライアント側のレガシアプリケーションが予想するように標準フォーマットのファイルデータが含まれていることがある。この情報には、データストア上のファイルデータの記憶を記述した情報が含まれていることがある。この情報には、ファイルデータの少なくとも一部を表わしているデータが含まれていることがある。ファイルデータの記憶を記述したメタデータにアクセスすること310には、ファイルデータの記憶を記述した情報のリクエストをサーバに送信することが含まれることがある。このようなリクエストは、クライアントがファイルシステムまたはネットワークファイルシステムに対してコールを行なって、ファイル、ファイルデータまたはデータの一部がどのようにデータストア上にストアされているかの詳細を要求するのを可能にするファイルシステムエクステンションの形体になっていることがある。上記とは別に、ファイルデータの記憶を記述したメタデータにアクセスすること310には、ファイルデータの記憶を記述した情報についてローカルストアにアクセスすることが含まれていることがある。ローカルストア内の情報は、先行リクエストに対するレスポンスとしてファイルサーバから以前に受信されていることもあれば、進行中の一連のファイルシステムトランザクションとしてローカルにすでにキャッシュされていることもある。ファイルデータの記憶を記述したメタデータにアクセスすること310には、ファイルデータの記憶形体がデータ記憶サーバ上にストアされているように見えるようにするか、またはローカルにキャッシュされたコピーがどのようにストアされているかがクライアントに見えるようにする詳細を返すファイルシステムコール通常ファイルシステムAPIのエクステンションによって導入されたが含まれていることがある。例えば、データ記憶サーバ上のファイルデータの記憶を記述したメタデータには、データ記憶サーバ上のファイルデータの非重複の結果得られるファイルデータの記憶を記述したデータが含まれていることがある。このメタデータには、ファイルを構成するチャンクのチャンクリストが含まれることもあれば、ファイルを構成するチャンクの各々の暗号ハッシュのハッシュリストが含まれていることもある。そのあと、クライアントは、送信されるチャンクの1つまたは2つ以上のリクエストを組み立てるために返されたチャンクリストまたはハッシュリストを使用することもあれば、すでに受信されたまたはローカルにキャッシュされたチャンクのリストを比較してデータストアに要求する必要のあるチャンクがあるかどうかを判断するためにハッシュリストを使用することもある。例えば、ファイルをダウンロードするとき、クライアントはハッシュリストをファイルサーバに要求し、必要とするデータについてピアクライアントおよび/またはピアファイルサーバにクエリすることもある。クライアントはハッシュリストを含む情報をそのクエリに対するレスポンスとして受信すること330がある。ハッシュリストはデータがデータストア上にストアされた通りにデータを表わしていることもあれば、クライアントは必要とするデータの部分例えば、チャンクだけを要求できることもある。また、データは、必要とするデータがピアにあるときそのピアから読み取られることもあるので、ピアとクライアント間のデータ送信の場合の送信コストまたはレイテンシは、クライアントとデータストア間の送信コストまたはレイテンシよりも低くなっている。データ記憶サーバ上のファイルデータの記憶を記述したメタデータには、ファイルデータの圧縮したサブセットを記述したデータまたはファイルデータの圧縮したバージョンを記述したデータが含まれていることもある。この情報を使用すると、クライアントはファイルデータの圧縮したサブセットのリクエストを組み立てるformulateことも、ファイルデータの圧縮したバージョンのリクエストを組み立てることもある。このようにすると、ファイルデータのリクエストに対するレスポンスしてデータを送信する前にファイルデータまたはそのファイルデータのサブセットを展開しないで済むデータストアの効率性が得られる。一実施形態では、クライアントはファイル全体のリクエストまたはファイルの一部のリクエストを含むことのあるファイルデータのリクエスト送信すること320がある。例えば、ファイルのリクエストgetまたはファイルの一部分のリクエストgetFileBytesはファイルシステムを通してデータ記憶サーバに送信されることがある。このリクエストに対するレスポンスとして、データ記憶サーバはファイルまたはそのファイルの一部ではなく、要求したファイルまたはそのファイルの一部を含んでいるデータを恐らく異なる形体で送り返すことがある。例えば、データ記憶サーバは、要求したファイルまたはそのファイルの要求した一部を完全にカバーしている一定範囲の圧縮チャンクを含むデータを返す可能性がある。さらに、データ記憶サーバは、返されたチャンクが要求したデータおよび可能性として要求よりも多いデータを含むことを示しているチャンクと一緒にファイル記憶メタデータを返す可能性がある。さらに、返されたチャンクが圧縮されていれば、データ記憶サーバは、返されたデータまたはデータのチャンクが圧縮されていることを示すファイル記憶メタデータを返すこともあれば、データを圧縮するためにどの圧縮手法またはアルゴリズムが使用されたか、またはデータを展開するためにどの展開手法またはアルゴリズムを使用する必要があるかを示していることもある。以上から理解されるように、特定の圧縮または展開手法を示すメタデータを返すこともなしに、圧縮データおよび/または圧縮チャンクが返される場合に想定されることのあるデフォルトの圧縮または展開手法が存在することもある。次いで、クライアントはこのデータおよび/またはメタデータをデータ記憶サーバから受信し330、該当する展開および/またはチャンクアセンブリをクライアント側で行なって要求データを再構成することがある。以上から理解されるように、このようにすると、クライアントによって実際に要求された特定のデータをデータ記憶サーバに展開および/またはアセンブルさせてからクライアントに送信またはクライアントによって受信する場合よりもデータ送信コストまたは送信レイテンシに起因する効率性が向上する。ファイル記憶メタデータには、チャンクまたは圧縮チャンクの暗号ハッシュリストおよびどのチャンクがファイルデータのどの部分を含んでいるかを示すIDを含んでいることがある。チャンクまたは圧縮チャンクの暗号ハッシュリストおよびどのチャンクがファイルデータのどの部分を含んでいるかを示すIDを使用すると、クライアントは圧縮データを適当な方法で展開し、および/またはクライアントによって望まれるまたは要求される一定範囲のデータのすべてまたはより多くを含むチャンクを再アセンブルできることがある。ファイル記憶と送信に対する統合化アプローチのための例示アーキテクチャは、図2に図示されている。クライアントとサーバ210には、最適化を意識したアプリケーションおよび/またはサービスが含まれていることがある。クライアントとサーバは、ファイルシステムのアプリケーションプログラミングインタフェースAPIを含むと共に最適化APIを含んでいることがあるファイルシステムインタフェース250と通信することがある。ファイルシステムAPIには、通常ファイルシステムおよび/またはネットワークファイルシステムのすべての通常コールと関数が含まれていることがある。最適化APIは、データストアにストアされているデータ260、270および280の記憶詳細が見えるようにする拡張APIエレメント例えば、関数コールとインタフェースを含んでいる。ファイルシステムインタフェース250を使用すると、クライアントはデータ記憶サーバ上のファイルデータの記憶を記述したメタデータを要求することができる。ファイルシステムインタフェース250を使用すると、クライアントは、いくつかのフォーマットでデータをデータ記憶サーバに要求することもできる。クライアントは、通常ファイルシステムAPI例えば、標準またはレガシファイルシステムAPIを使用してデータを要求して、ファイルをその生またはネイティブフォーマットのままにしておくことがある。また、クライアントは、ファイルの圧縮形体であるファイルの特定のチャンクだけをサーバ上にストアされた通りに要求するために最適化APIを使用してデータを要求することもあり、ファイルの圧縮チャンクをサーバ上にストアされた通りに要求することもある。強化されたおよび/または拡張されたファイルシステムインタフェース250を意識していないクライアント、アプリケーションおよびサービス220は、レガシファイルシステムAPIの全機能をそのまま残しているファイルシステムAPIにコールを行なうことにより、依然として通常に、未変更のまま、妨害されることなく動作することがある。最適化を意識しているクライアント、アプリケーションおよびサービス230は、最適化APIにコールを行なって、本明細書に記載の実施形態の全機能を起動することがある。最適化を意識したクライアント、アプリケーションおよびサービスはハッシュリスト、チャンクリスト、圧縮ファイルなどをデータストアまたはサーバに要求することがある。例えば、ファイルfoovhdは、チャンクストア/インデックス270をポイントするチャンクリストとしてデータストア上にストアされることがある。このチャンクリスト/インデックスはチャンク例えば、チャンク160C1-Cnを含むことも、圧縮チャンク例えば、チャンク180CH1-CHnを含むことも、ストアされたチャンクを指してファイルとデータ記憶の非重複やその他の最適化を可能にする参照、ポインタおよびインデックスを含むこともある。クライアントは、最適化APIを通してfoovhdの記憶を記述したメタデータを要求し、foovhdがどのようにストアされているかを記述したメタデータをデータストアから受信することがある。クライアントがそのメタデータにアクセスしたあと、そのクライアントは最適化APIを通してファイルデータのリクエストを記憶サーバに送信することがある。このリクエストはネイティブフォーマットのファイル全体に対することもあれば、1つまたは2つ以上のチャンクだけのこともあれば、チャンクストア/インデックス270にストアされた通りのファイルの圧縮チャンクに対することもある。次いで、クライアントは、ファイルデータの1つまたは2つ以上、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータを含む情報をデータ記憶サーバから受信することがある。クライアントはそのネイティブフォーマットでファイル全体を受信することがある。クライアントはファイルのチャンクを受信することがある。クライアントはファイルの圧縮チャンクを受信することがある。クライアントはファイルデータの記憶を記述した追加メタデータを受信することも、ファイルデータの一部を含むデータを受信することもある。クライアントによって受信されたレスポンスは、クライアントおよびアプリケーションがデータストア内のデータの記憶の詳細を意識しているリクエストを行なうのを可能にする拡張最適化APIを通して行なわれたリクエストに対応していることもある。別の例において、ファイルbardocは、最適化サービス240によって圧縮され、チャンクにされ、非重複化されて、チャンクストア/インデックスを指すポインタとしてストアされていることがある。本明細書に記載の実施形態では、クライアントはデータストア上のbar.docの記憶を記述したメタデータを要求することがあり、データストア上のbar.docの記憶を記述した情報を受信したあと、チャンクストア/インデックス270にストアされたbar.docの圧縮チャンクの1つまたは2つ以上のリクエストを送信することがある。圧縮チャンクはクライアントによって要求されているので、データストアはbar.docのチャンクを展開する必要もなければ、データストアは、クライアントからのbar.docに対するリクエストに応答するためにbar.docのチャンクを再アセンブルする必要もない。別の実施形態では、データストア内の記憶最適化の詳細がクライアントに見えるようにする方法が提供されている。この方法は、データ記憶サーバ上のファイルデータの記憶を記述したメタデータを送信するステップを含み、そこではデータは、ファイルデータのネイティブ形体とは異なった形体でデータ記憶サーバ上にストアされると共に、メタデータはファイルデータの記憶形体がデータ記憶サーバ上にストアされた通りに見えるようにしている。また、この方法は、コンピューティングシステムからのファイルデータのリクエストをデータ記憶サーバで受信するステップも含んでいる。また、この方法は、ファイルデータの少なくとも1つ、データストア上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータを含む情報をデータ記憶サーバから送信するステップも含んでいる。図4に図示するように、サーバまたはデータストアは、データ記憶サーバまたはデータストア上のファイルデータの記憶を記述したメタデータを送信すること410がある。ファイルデータはそのファイルデータのネイティブ形体とは異なる形体でデータ記憶サーバ上にストアされている。例えば、ファイルデータは、チャンクフォーマットでも、圧縮フォーマットでも、圧縮フォーマットとチャンクフォーマットの組み合わせでも記憶サーバ上にストアされることがある。送信されるメタデータは、ファイルデータの記憶形体がデータ記憶サーバ上にストアされている通りに見えるようにする情報を提供している。例えば、メタデータは、データがチャンクフォーマット、圧縮フォーマットまたはチャンクフォーマットと圧縮フォーマットの組み合わせでストアされていることを見えるようにする情報を含んでいることもある。メタデータは、ファイルデータを構成するチャンクのハッシュリストをデータストアにストアされているように示す情報を含んでいることもある。データストア上にストアされたチャンクは、記憶サーバ上にストアされたファイルデータ他のデータファイルと共に非重複の結果得られたチャンクであることもある。メタデータは、ファイルデータのサブセットの暗号ハッシュを含む情報を含んでいることもある。データのサブセットの暗号ハッシュは、チャンクが別のチャンクと同一であるかどうかを示すためにクライアントよっても、送信デバイスによっても、別データストアによっても使用されることがある。ファイルデータのサブセットの暗号ハッシュを使用することにより、クライアント、送信デバイスおよび他のデータストアは、データの特定サブセットがローカルに使用可能であるか、低いレイテンシまたは送信コストでソースから使用可能であるかを判断する能力を備えている。データの同一サブセットを特定することにより、データの特定サブセットを要求する必要があるか、送信する必要があるかが判断されることもある。ファイルデータのサブセットは、ファイル全体であることも、ファイルデータであることもある。データのサブセットは、記憶最適化または非重複方式の一部としてデータストアによってすでにチャンキングされているファイルデータの1つまたは2つ以上のチャンクであることもある。データ記憶サーバまたはデータストア上のファイルデータの記憶を記述したメタデータには、ファイルデータの一部または全部がデータ記憶サーバまたはデータストア上に圧縮されていることを記述したデータが含まれていることもある。メタデータには、ファイルデータのチャンクフォーマットの1つまたは2つ以上が圧縮されているとの情報が含まれていることがある。ファイルデータのある部分が圧縮されていることを示す情報を使用することにより、クライアントは、クライアントに対するレスポンスの中でデータストア内にストアされている通りにチャンクフォーマットまたは圧縮フォーマットで返されるファイルまたはファイルの1つまたは2つ以上のチャンクを要求することがある。ファイルの特定チャンクまたは圧縮したチャンクを要求することにより、データストアは、ファイルまたはファイルのチャンクを要求したクライアントに送信する前にファイルまたはファイルのチャンクを展開する必要がないのでオーバヘッドが減少される。図4は、ファイルデータのリクエストをコンピューティングシステムから受信すること420も示している。このリクエストはクライアントからも、別の記憶サーバからも、リモートコンピューティングシステム上で実行されるアプリケーションなどからも受信されることがある。このリクエストは、標準ネットワークファイルシステムAPIを拡張および/または強化する最適化APIに対応するプロトコルを使用してフォーマット化されることがある。ファイルデータのリクエストには、要求されるファイルの特定チャンクを示す情報が含まれていることがある。このリクエストには、要求されたファイルデータが圧縮または展開フォーマットで送られるべきかどうかを示す情報が含まれていることもある。このリクエストには、他のチャンクがローカルですでに使用可能であるのでファイルのチャンクのサブセットだけが送信されるはずであるとの情報が含まれていることがある。図4は、ファイルデータの少なくとも1つ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータを含んでいるファイルデータ情報を送信するステップ430も示している。ファイルデータ情報を送信すること430は、ファイルデータについて受信されたリクエストに対するレスポンスであることがある。上述したように、ファイルデータのリクエストは、圧縮フォーマットでまたはいずれかの組み合わせでチャンクとしてデータストアにストアされている通りのファイルデータに対するものであることがある。ファイルデータ情報を送信すること430には、ファイルデータの少なくとも1つ、データ記憶サーバ上のファイルデータの記憶を記述した追加メタデータおよびファイルデータの少なくとも一部を表わしているデータが含まれていることがある。この情報は、クライアント側のレガシアプリケーションが予想するように標準フォーマットのファイルデータを含むことがある。この情報は、データストア上のファイルデータの記憶を記述した情報を含んでいることもある。また、この情報はファイルデータの少なくとも一部を表わしているデータを含んでいることもある。受信したリクエストは、クライアントによって望まれるデータの特定チャンクをすでに特定していることがある。このリクエストに対するレスポンスとして、データストアはデータの要求されたチャンクを要求側のクライアントに送信することがある。受信したリクエストは、クライアントによって望まれるデータの特定の圧縮チャンクをすでに特定していることがある。このリクエストに対するレスポンスとして、データストアはデータの要求した圧縮サブセットを要求側クライアントに送信することがある。受信したリクエストは、クライアントによって望まれるデータのチャンクを特定する特定暗号ハッシュをすでに特定していることがある。このリクエストに対するレスポンスとして、データストアは、暗号ハッシュによって特定されたデータの特定チャンクを要求側クライアントに送信することがある。一実施形態では、データストアは、ファイルまたはファイルの一部のリクエストを受信すること420がある。例えば、データストアはファイルのリクエストgetを受信することもあれば、ファイルの一部のリクエストgetFileBytesを受信することもある。データストアはそのリクエストに対するレスポンスを構築し、データストア上にストアされたままのファイルデータを含む情報を送信し、ストアされたままのファイルデータの記憶詳細を特定したメタデータを含んでいることがある。例えば、データストアは、チャンクのセットおよびどのチャンクが要求したチャンクのどの部分を含んでいるかを特定したメタデータを返すことがある。さらに、データストアは、圧縮フォーマットで返されたデータを展開するために適切と思われる圧縮および/または展開情報を含むメタデータを返すこともある。一部の実施形態では、リクエストが受信されること420があり、メタデータを送信する先行ステップ410を実行することなくファイルデータ情報が送信されること430がある。例えば、最適化を意識したクライアントはファイルデータを要求するだけのことがあり、データストアはその要求を受信する420可能性があり、データストアはレスポンスを構築し、クライアントが返されたファイルデータおよび/またはメタデータを適切に処理し、チャンクを適当に再アセンブルしおよび/またはデータを必要に応じて展開できることを想定してクライアントにそのリクエストを送信する可能性がある。実施形態によれば、データ記憶とデータ送信のための書き込み経路最適化もサポートされている。例えば、ファイルに対しローカルで変更するクライアントは、変更したファイルのハッシュリスト表現を生成することがある。そのあと、このハッシュリストはデータ記憶サーバに送信されることがある。そのあと、データ記憶サーバは変更したファイルを表わす受信したハッシュリストを、データ記憶サーバ上にストアされたファイルチャンクを特定したデータ記憶サーバ上に維持された包括的ハッシュリストと比較することがある。この比較に基づいて、そのあとデータ記憶サーバは、クライアントがデータ記憶サーバ上にすでにストアしていたチャンクのリストに返すことがある。データ記憶サーバは、データ記憶サーバ上にストアされていないチャンクのリストをクライアントに返すこともある。データ記憶サーバ上にストアされていて返されたチャンクのリストまたはストアされていないチャンクのリストに基づいて、そのあとクライアントはデータ記憶サーバ上にまだストアされていないチャンクをデータ記憶サーバに送信することが可能である。変更ファイルを表わしているハッシュリストを受信したあとおよびデータ記憶サーバ上にまだストアされていない変更ファイルを受信したあと、データ記憶サーバは、完全な変更ファイルこれはサーバ上にすでにストアされている一部のチャンク、新たにサーバによって受信された一部のチャンクおよび完全な変更ファイルを表わしているハッシュリストまたはチャンクリストで構成されているをストアすることがある。完全なファイルを表わしているハッシュリストまたはチャンクリストを送信し、データ記憶サーバ上にまだストアされていないチャンクだけを送信することにより、クライアントからデータストアへのデータ送信が実現されることが可能である。例えば、データ記憶サーバはクライアントからハッシュリストを受信し、ファイルを表わしているその送信ハッシュリストを、データ記憶サーバ上にストアされたチャンクおよびデータ記憶サーバ上にストアされたチャンクに対する暗号ハッシュのインデックスを含むチャンクストア/インデックス270にストアされたハッシュリストと比較することがある。そのあとデータストアは、チャンクストアとインデックス270にまだストアされていないチャンクを表わしているハッシュリストをクライアントに返すことがある。そのあと、クライアントはチャンクストアにまだストアされていないチャンクをデータストアに送信することがある。そのあと、データストアは受信したチャンクを、完全な変更ファイルを表わしているハッシュリストと共にチャンクストア270にストアすることがある。このようにして、データ記憶サーバは、変更ファイルの完全な表現ファイルを表わしているチャンクリストおよび対応するチャンクで表わしているをストアすることがあるが、ファイルを構成するすべてのチャンクをクライアントが送信する必要はない。別の例では、5個のチャンク、すなわち、チャンクC1-C5で構成されたファイルはチャンクC4内だけでクライアントによって変更されることがあるその結果、変更したチャンクCm4が得られる。クライアントはチャンクC1-C3、Cm4およびC5を表わしているハッシュリストをデータ記憶サーバに送信することがある。このハッシュリストは完全な変更ファイルを表わすことになる。そのあと、データ記憶サーバはサーバ上にストアされたチャンクC1-C3およびC5をすでに有しているが、チャンクCm4が抜けているクライアントに応答することがある。そのあと、クライアントはチャンクCm4をデータ記憶サーバに送信することが可能である。そのあと、データ記憶サーバは、チャンクC1-C3、Cm4およびC5を表わしている受信したハッシュリストと共にチャンクCm4をデータ記憶サーバにストアすることあり、すでにストアされたチャンクC1-C3およびCはデータストア上にストアされた完全な変更ファイルを持つことになる。以上から理解されるように、この書き込み経路の実施形態は、変更ファイルについても新しく作成されたファイルについても同じように使用可能である。変更ファイルであるか、新たに作成されたファイルであるかに関係なく、クライアントはどのファイルについてもチャンクリストを作成し、そのチャンクリストをデータ記憶サーバに送信することがあるので、データ記憶サーバは受信したチャンクリストを、サーバ上にすでにストアされているチャンクのリストと比較することができる。さらに、チャンクリストは、ファイルを構成するチャンクの各々をユニークに識別する暗号ハッシュリストであることがある。本明細書で説明したチャンクそれ自体は、圧縮チャンクであることも、生のデータフォーマットのチャンクであることも、暗号または他のなんらかの方法で変更されたチャンクでさえあることもある。チャンクは、その送信時に、生のデータフォーマットでも、圧縮フォーマットでも、その他のフォーマットでも送信されることがある。以上から理解されるように、ファイルデータ部分が圧縮フォーマットで送信されるときは、その結果として、送信の効率性を得るために送信インフラストラクチャがデータを圧縮する必要がないとする最適化が得られることがあるので、データ記憶サーバはデータ記憶サーバ上の記憶を最適化するためにデータを圧縮する必要がない。送信の受信側にまだストアされていないか、あるいは存在しないチャンクだけを送信することにより、ファイルデータの送信と記憶の両方で最適化が実現されることがある。本発明は、本発明の趣旨または基本的特徴から逸脱することなく、他の特定の形態で具現化されることがある。本明細書に記述した実施形態は、すべての側面において例示であって限定されるものではないと考慮されるものである。従って、本発明の範囲は上述してきた説明によってではなく特許請求の範囲の請求項によって示されている。請求項の等価の意味と範囲内に属するすべての変更はこれらの範囲内に包含されるものである。