(57)【要約】本発明の１実施形態は、要求中で指定された少なくとも１つの選択基準を満たすコンテンツ・ユニットを求める、ホスト・コンピュータから受信された要求を処理する記憶システムに関する。記憶システムは要求に応答して、記憶システムに記憶されている、１つまたは複数の選択基準を満たすコンテンツ・ユニットを識別し、これらのコンテンツ・ユニットをホスト・コンピュータに返すことができる。別の実施形態では、記憶システムが要求に応答してコンテンツ・ユニットを識別して返している最中に、第２のホスト・コンピュータが、１つまたは複数の検索基準を満たすコンテンツ・ユニットの一部を受信することを要求する命令を記憶システムに送信することができる。これに応答して、記憶システムは、１つまたは複数の選択基準を満たすコンテンツ・ユニットであって、要求を送信したホスト・コンピュータにまだ提供されていないコンテンツ・ユニットの一部を、第２のホスト・コンピュータに提供し始めることができる。
2009533723.tif 000002
【特許請求の範囲】
【請求項１】
複数のクオリファイド・コンテンツ・ユニットを記憶する少なくとも１つの記憶システムを含むコンピュータ・システムにおいて使用される方法であって、
（Ａ）少なくとも１つの選択基準を提供する要求を、該少なくとも１つの記憶システムにおいて受信する動作と、
（Ｂ）該要求を受信する動作に応答して、該少なくとも１つの選択基準を満たす該複数のクオリファイド・コンテンツ・ユニットのそれぞれを、該少なくとも１つの記憶システムから提供する動作と
を備える方法。
【請求項２】
前記少なくとも１つの選択基準は、提供される各クオリファイド・コンテンツ・ユニットが前記少なくとも１つの記憶システム上に記憶された時刻とは異なる少なくとも１つの基準を含む、請求項１に記載の方法。
【請求項３】
前記要求はホスト・コンピュータから受信され、前記動作（Ｂ）は、前記少なくとも１つの選択基準を満たす前記複数のクオリファイド・コンテンツ・ユニットのそれぞれを該ホスト・コンピュータに提供する動作を含む、請求項１に記載の方法。
【請求項４】
前記要求は、少なくとも１つのホスト・コンピュータ上で実行されている少なくとも１つのアプリケーション・プログラムから受信され、前記動作（Ｂ）は、前記少なくとも１つの選択基準を満たす前記複数のクオリファイド・コンテンツ・ユニットのそれぞれを該少なくとも１つのアプリケーション・プログラムに提供する動作を含む、請求項３に記載の方法。
【請求項５】
前記クオリファイド・コンテンツ・ユニットのそれぞれは、別個の識別子を介して識別される論理オブジェクトであり、前記動作（Ｂ）は、前記少なくとも１つの選択基準を満たす前記複数のクオリファイド・コンテンツ・ユニットのそれぞれを、前記クオリファイド・コンテンツ・ユニットを別個の論理オブジェクトとして識別する識別情報によって提供する動作を含む、請求項１に記載の方法。
【請求項６】
複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムであって、
入力と、
該入力に結合された少なくとも１つのコントローラであって、
を
該入力を介して受信された要求を処理して、第１グループのコンテンツ・ユニットを含む、少なくとも１つの選択基準を満たす該複数のコンテンツ・ユニットのそれぞれを、該少なくとも１つの記憶システムから少なくとも１つの第１の宛先に提供する間に、該第１グループのコンテンツ・ユニットのうちで該少なくとも１つの第１の宛先にまだ提供されていないコンテンツ・ユニットを、該少なくとも第１の宛先とは異なる該少なくとも１つの第２の宛先に提供し始めるよう命じる少なくとも１つの命令を、該入力を介して受信し、
該少なくとも１つの命令の受信に応答して、該第１グループのコンテンツ・ユニットのうちで該少なくとも１つの第１の宛先にまだ提供されていないコンテンツ・ユニットを、該少なくとも１つの第２の宛先に提供する
少なくとも１つのコントローラと
を備える、少なくとも１つの記憶システム。
【請求項７】
前記第１グループのコンテンツ・ユニットのいくつかがすでに識別されて前記少なくとも１つの第１の宛先に提供された後で、前記少なくとも１つのコントローラが前記命令を受信する、請求項６に記載の少なくとも１つの記憶システム。
【請求項８】
前記少なくとも１つの第２の宛先は、前記少なくとも１つの第１の宛先および少なくとも１つの追加の宛先を含む、請求項６に記載の少なくとも１つの記憶システム。
【請求項９】
前記少なくとも１つの第１の宛先は、前記少なくとも１つの第２の宛先および少なくとも１つの追加の宛先を含む、請求項６に記載の少なくとも１つの記憶システム。
【請求項１０】
前記少なくとも１つの第１の宛先および前記少なくとも１つの第２の宛先はそれぞれ、少なくとも１つのサーバを含む、請求項６に記載の少なくとも１つの記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶システムからのコンテンツの転送に関する。
【背景技術】
【０００２】
ほぼすべてのコンピュータ・アプリケーション・プログラムは、コンピュータ・コードとコンピュータ・コードによって操作されるデータとを記憶するのに使用される記憶域に依拠する。典型的なコンピュータ・システムは、このようなアプリケーション・プログラムを実行する１つまたは複数のホスト・コンピュータと、記憶域を提供する１つまたは複数の記憶システムとを含む。
【０００３】
ホスト・コンピュータは、１つまたは複数の記憶システムにアクセス要求を送信することによって、データにアクセスすることができる。いくつかの記憶システムでは、アクセス要求が、論理ボリュームおよびブロック・アドレスを使用して、アクセスされるデータ・ユニットを識別することが必要である。このような記憶システムは、「ブロック入出力」記憶システムとして知られる。記憶システムによってホストに対して提示される論理ボリュームは、物理記憶デバイスと１対１でマッピングしない場合もあるが、これらは物理記憶デバイスに対応するものとしてホストによって把握され、論理ボリュームおよびブロック・アドレスの指定は、参照されるデータが記憶システム内のどこに物理的に記憶されているかを示す。
【０００４】
ブロック入出力記憶システムとは対照的に、いくつかの記憶システムは、データ・ユニットが記憶システムのどこに物理的または論理的に記憶されているかを指定するアドレスを使用するのではなく、オブジェクト識別子を使用してデータまたは他のコンテンツ・ユニットを識別するアクセス要求を受信して処理する。このような記憶システムは、オブジェクト・アドレス指定可能記憶（ＯＡＳ）システムと呼ばれる。オブジェクト・アドレス指定可能記憶では、コンテンツ・ユニットを、そのオブジェクト識別子を使用して識別することができ（例えばコンテンツ・ユニットへのアクセスを要求するホスト・コンピュータによって）、オブジェクト識別子は、（そうであることが必須ではないが）コンテンツ・ユニットが記憶されている物理的または論理的位置から独立することができる。しかし、ＯＡＳシステム上のコンテンツ・ユニットにアクセスするホスト・コンピュータ（またはユーザ）から見ると、オブジェクト識別子は、どこにコンテンツ・ユニットが記憶されているかを制御しない。したがって、ＯＡＳシステムでは、コンテンツ・ユニットが記憶されている物理的または論理的位置が変化した場合でも、ホスト・コンピュータがコンテンツ・ユニットにアクセスするための識別子は同じのままである。対照的に、ブロック入出力記憶システムでは、コンテンツ・ユニットが記憶されている物理的または論理的位置が変化した場合、コンテンツ・ユニットにアクセスするホスト・コンピュータは通常、位置変化に気付かなければならず、次いで、将来のアクセスにはコンテンツ・ユニットの新しい物理的または論理的位置を使用しなければならない。
【０００５】
ＯＡＳシステムの１例は、コンテンツ・アドレス指定可能記憶（ＣＡＳ）システムである。ＣＡＳシステムでは、コンテンツ・ユニットを識別するオブジェクト識別子は、コンテンツ・アドレスである。コンテンツ・アドレスは、それに対応するコンテンツ・ユニット（データおよび／またはメタデータとすることができる）のコンテンツの少なくとも１部から少なくとも部分的に計算される識別子である。例えば、コンテンツ・ユニットのコンテンツ・アドレスは、コンテンツ・ユニットをハッシュすることによって計算することができ、得られたハッシュ値をコンテンツ・アドレスとして使用する。コンテンツをコンテンツ・アドレスによって識別する記憶システムは、コンテンツ・アドレス指定可能記憶（ＣＡＳ）システムと呼ばれる。
【発明の開示】
【課題を解決するための手段】
【０００６】
１実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムからなるコンピュータ・システム中で使用される方法を対象とする。この方法は、（Ａ）少なくとも１つの選択基準を提供する要求を、少なくとも１つの記憶システムにおいて受信する動作と、（Ｂ）要求の受信に応答して、少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも１つの記憶システムから提供する動作とを備える。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも１つのコンピュータ可読媒体を対象とする。
【０００７】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムを対象とする。少なくとも１つの記憶システムは、入力と、入力に結合された少なくとも１つのコントローラとを備え、少なくとも１つのコントローラは、少なくとも１つの選択基準を提供する要求を、入力を介して受信し、要求の受信に応答して、少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを提供する。
【０００８】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムからなるコンピュータ・システム中で使用される方法を対象とする。この方法は、（Ａ）要求中で提供された少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを提供するよう少なくとも１つの記憶システムに要求する要求を、少なくとも１つの記憶システムに発行することを備える。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも１つのコンピュータ可読媒体を対象とする。
【０００９】
別の実施形態は、出力と、出力に結合された少なくとも１つのコントローラとを備えるホスト・コンピュータを対象とし、少なくとも１つのコントローラは、要求中で提供された少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを提供するよう、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムに要求する要求を、出力を介して少なくとも１つの記憶システムに発行する。
【００１０】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムを備えるコンピュータ・システム中で使用される方法を対象とする。この方法は、（Ａ）第１グループのコンテンツ・ユニットを含む、少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも１つの記憶システムから、少なくとも１つの第２の宛先とは異なる少なくとも１つの第１の宛先に提供するよう求める、少なくとも１つの記憶システムにおいて受信された要求を処理する間に、第１グループのコンテンツ・ユニットのうちで少なくとも１つの第１の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも１つの第２の宛先に提供し始めるよう命じる少なくとも１つの命令を受信する動作と、（Ｂ）少なくとも１つの命令の受信に応答して、第１グループのコンテンツ・ユニットのうちで少なくとも１つの第１の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも１つの第２の宛先に提供する動作とを含む。別の実施形態は、コンピュータ・システム上で実行されたときに前記の方法を実施する命令でエンコードされた、少なくとも１つのコンピュータ可読媒体を対象とする。
【００１１】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムを対象とする。少なくとも１つの記憶システムは、入力と、入力に結合された少なくとも１つのコントローラとを備え、少なくとも１つのコントローラは、第１グループのコンテンツ・ユニットを含む、少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも１つの記憶システムから、少なくとも１つの第２の宛先とは異なる少なくとも１つの第１の宛先に提供するよう求める、入力を介して受信された要求を処理する間に、第１グループのコンテンツ・ユニットのうちで少なくとも１つの第１の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも１つの第２の宛先に提供し始めるよう命じる少なくとも１つの命令を入力を介して受信し、少なくとも１つの命令の受信に応答して、第１グループのコンテンツ・ユニットのうちで少なくとも１つの第１の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも１つの第２の宛先に提供する。
【００１２】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムと、コンテンツ・ユニットを処理するようにプログラムすることのできる複数のサーバとを備えるコンピュータ・システム中で、コンテンツ・ユニットを処理する方法を対象とする。この方法は、（Ａ）第１グループのコンテンツ・ユニットからなる、少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも１つの記憶システムから複数のサーバのうちの第１グループのサーバにプッシュするよう求める要求を、少なくとも１つの記憶システムに発行する動作と、（Ｂ）第１グループのサーバにおいて受信された第１グループのコンテンツ・ユニットの第１のサブセットを第１グループのサーバ中で処理する動作と、（Ｃ）少なくとも１つの記憶システムが第１グループのコンテンツ・ユニットのいくつかを第１グループのサーバにプッシュし始めた後で、第１グループのコンテンツ・ユニットのうちで第１グループのサーバにまだプッシュされていないコンテンツ・ユニットを、複数のサーバのうちの第１グループのサーバとは異なる第２グループのサーバにプッシュし始めるよう求める要求を、少なくとも１つの記憶システムに発行する動作と、（Ｄ）複数のサーバうちの第２グループにおいて受信された第１グループのコンテンツ・ユニットの第２のサブセットを、第２グループのサーバ中で処理する動作とを備える。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも１つのコンピュータ可読媒体を対象とする。
【００１３】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムと、コンテンツ・ユニットを処理するようにプログラムすることのできる複数のサーバと、複数のサーバのそれぞれを少なくとも１つの記憶システムに結合する通信ネットワークと、少なくとも１つのコントローラとを備えるコンピュータ・システムを対象とし、少なくとも１つのコントローラは、第１グループのコンテンツ・ユニットを含む、少なくとも１つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも１つの記憶システムから複数のサーバのうちの第１グループのサーバにプッシュするよう求める要求を、少なくとも１つの記憶システムに発行し、第１グループのサーバにおいて受信された第１グループのコンテンツ・ユニットの第１のサブセットを第１グループのサーバ中で処理し、少なくとも１つの記憶システムが第１グループのコンテンツ・ユニットのいくつかを第１グループのサーバにプッシュし始めた後で、第１グループのコンテンツ・ユニットのうちで第１グループのサーバにまだプッシュされていないコンテンツ・ユニットを、複数のサーバのうちの第１グループのサーバとは異なる第２グループのサーバにプッシュし始めるよう求める要求を、少なくとも１つの記憶システムに発行し、複数のサーバのうちの第２グループにおいて受信された第１グループのコンテンツ・ユニットの第２のサブセットを、第２グループのサーバ中で処理する。
【００１４】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムを備えるコンピュータ・システム中で使用される方法を対象とし、少なくとも１つの記憶システムは、オブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースを提供する。この方法は、（Ａ）複数のコンテンツ・ユニットの少なくとも１つにアクセスすることを求める、少なくとも１つのコンテンツ・ユニットのオブジェクト識別子は含まないが少なくとも１つの選択基準を含む要求を、少なくとも１つの記憶システムにおいて受信する動作と、（Ｂ）要求の受信に応答して、少なくとも１つの選択基準を使用して、複数のコンテンツ・ユニットの少なくとも１つを識別し、複数のコンテンツ・ユニットの少なくとも１つを少なくとも１つの記憶システムから提供する動作とからなる。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも１つのコンピュータ可読媒体を対象とする。
【００１５】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムを対象とし、少なくとも１つの記憶システムは、オブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースと、インタフェースに結合された少なくとも１つのコントローラとを備え、少なくとも１つのコントローラは、複数のコンテンツ・ユニットの少なくとも１つにアクセスすることを求める、少なくとも１つのコンテンツ・ユニットのオブジェクト識別子は含まないが少なくとも１つの選択基準を含む要求を受信し、要求の受信に応答して、少なくとも１つの選択基準を使用して、複数のコンテンツ・ユニットの少なくとも１つを識別し、複数のコンテンツ・ユニットの少なくとも１つを少なくとも１つの記憶システムから提供する。
【００１６】
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システム上に記憶された少なくとも１つのコンテンツ・ユニットにアクセスする方法を対象とし、少なくとも１つの記憶システムは、オブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースを提供する。この方法は、（Ａ）少なくとも１つのコンテンツ・ユニットにアクセスすることを求める要求を少なくとも１つの記憶システムに提供する動作を備え、この要求は、少なくとも１つのコンテンツ・ユニットのオブジェクト識別子は含まないが、少なくとも１つの記憶システムが少なくとも１つのコンテンツ・ユニットを識別できるようにする少なくとも１つの選択基準を含む。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも１つのコンピュータ可読媒体を対象とする。
【００１７】
別の実施形態は、ホスト・コンピュータを対象とし、このホスト・コンピュータは、複数のコンテンツ・ユニットを記憶する少なくとも１つの記憶システムであってオブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースを提供する少なくとも１つの記憶システムに、ホスト・コンピュータがそれを介して結合される出力と、複数のコンテンツ・ユニットのうちの少なくとも１つのコンテンツ・ユニットにアクセスすることを求める要求を、出力を介して少なくとも１つの記憶システムに提供する少なくとも１つのコントローラとを備え、この要求は、少なくとも１つのコンテンツ・ユニットのオブジェクト識別子は含まないが、少なくとも１つの記憶システムが少なくとも１つのコンテンツ・ユニットを識別できるようにする少なくとも１つの選択基準を含む。
【発明を実施するための最良の形態】
【００１８】
選択基準を満たすすべてのコンテンツ・ユニットを識別することができるように、いくつかの選択基準に基づいて、１つまたは複数のコンテンツ・ユニットを、それらが記憶されている記憶システムから別のシステムに提供することが望ましいことがある。従来技術のＯＡＳシステムを使用すると、選択基準を満たすコンテンツ・ユニットにアクセスすることは、複数ステップの工程を伴う。最初に、アプリケーション・プログラム（例えばホスト・コンピュータ上で実行されているもの）が、特定の選択基準を満たすコンテンツ・ユニットを要求するクエリをＯＡＳシステムに発行する。ＯＡＳは、クエリに応答して、選択基準を満たすコンテンツ・ユニットがあるかどうかその記憶済みコンテンツ・ユニットを走査し、選択基準を満たすコンテンツ・ユニットのオブジェクト識別子のリストをアプリケーションに返す。次いで、アプリケーション・プログラムは、オブジェクト識別子を使用し、各コンテンツ・ユニットをそのオブジェクト識別子で識別して、これらのコンテンツ・ユニットのそれぞれについて個別のアクセス要求を記憶システムに送信する。選択基準を満たすコンテンツ・ユニットが多数ある場合は、多くのアクセス要求を送信して、これらのコンテンツ・ユニットをそれぞれ取り出さなければならない。
【００１９】
いくつかの記憶システムは複製機能を提供し、それにより、例えばフォールト・トレランスまたはバックアップの目的で、記憶システム（すなわち複製ソース）上に記憶されている大量のデータを別のシステム（すなわち複製ターゲット）に提供することができる。しかし、このようなシステムは個々のコンテンツ・ユニットの細分性で動作しないので、このようなシステムでは、複製のために記憶システム上の記憶域のボリュームを指定することができ、指定されたボリューム中のすべてのデータ（または最後の複製以降に変化したその一部）が複製される。
【００２０】
コンテンツ・ユニットを記憶システムに要求するとき、コンテンツ・ユニットの処理を共有することのできるいくつかのホスト・コンピュータ間でコンテンツ・ユニットを分割することが望ましい場合があることを、出願人らは認識した。例えば、１人または複数の個人を捜すために顔認識アルゴリズムを使用して、ＯＡＳシステム上のコンテンツ・ユニットに記憶された空港セキュリティ・カメラからのビデオ・データを処理することが望ましい場合がある。処理すべきデータのボリュームのため、複数のホスト・コンピュータを使用して、それぞれがビデオ・データの一部を並列で処理することが望まれる場合がある。従来技術のＯＡＳシステムを使用してこれを達成するには、コンテンツ・ユニットを記憶システムに要求する前に検索空間を区分化しなければならない。例えば、データの処理に利用可能な３つのホスト・コンピュータと、処理すべき９時間のビデオとがある場合、各ホスト・コンピュータが３時間のビデオ・データを処理するものと決定することができる。次いで、第１のプロセッサが、第１の３時間期間中のコンテンツ・ユニットをＯＡＳに照会し、第１の３時間に対応するコンテンツ・ユニットを識別するオブジェクト識別子の第１のリストを受け取ることができ、第２および第３のプロセッサが、第２および第３の３時間期間についてそれぞれ同様にすることができる。したがって、従来技術のＯＡＳシステムでは、どのようにリソースを処理ジョブに割り振るかについて前もって決めておかなければならず、処理ジョブにおいて使用されるプロセッサの数の変更を動的に行うことはできない。
【００２１】
加えて、いくつかの従来技術ＯＡＳシステムは、所望の検索基準に基づいてコンテンツ・ユニットをフィルタにかけることができない場合がある。例えば、複数の空港セキュリティ・カメラからのビデオ・データを含むコンテンツ・ユニットを記憶する記憶システムは、どのカメラが特定のコンテンツ・ユニット中のビデオ・データを生成したかを示すメタデータを記憶することがある。このメタデータは、ビデオ・データと同じコンテンツ・ユニットに記憶されてもよく、あるいはビデオ・データを記憶したコンテンツ・ユニットを参照する別個のコンテンツ・ユニットに記憶されてもよい。空港セキュリティ・カメラのうちの１つのみによって生成されたビデオ・データを処理することが望まれる場合がある。従来のＯＡＳシステムは、コンテンツ・ユニットを、これらのコンテンツに関連するメタデータに基づいて検索することができない場合がある。したがって、処理すべきコンテンツ・ユニットを識別するには、記憶システム上に記憶された（または少なくとも、ある時間範囲内に記憶システム上に記憶された）、メタデータを含む各コンテンツ・ユニットを記憶システムから個別に取り出し、そのメタデータを検索して、コンテンツ・ユニット中の（またはこのコンテンツ・ユニットによって参照されるコンテンツ・ユニット中の）コンテンツが所望のセキュリティ・カメラからのビデオ・データを含むかどうか判定しなければならない。いくつかの従来のコンピュータ・システムは検索アプライアンスを備え、この検索アプライアンスは、ＯＡＳシステムの外部に配置され、ＯＡＳシステム上に記憶されているコンテンツ・ユニットをそれらのメタデータまたは他の検索基準に基づいて索引付けする。それにより、いくつかの検索基準を満たすコンテンツ・ユニットのオブジェクト識別子のリストが決定される度に各コンテンツ・ユニットを検索する必要はない。
【００２２】
上で説明した従来技術の記憶システムの制限は、１つまたは複数の指定された選択基準を満たす多数のコンテンツ・ユニットを記憶システムから別のシステムに（例えば処理のために）提供する際の課題を提示する。本発明のいくつかの実施形態は、これらの制限に対処する。しかし、本発明のあらゆる実施形態が前述の制限すべてに対処するわけではなく、いくつかの実施形態はこれらの特定の制限のいずれかに対処することを特に対象としないことを理解されたい。
【００２３】
本明細書において、用語「コンテンツ・ユニット」は、コンテンツがどこで、どのように、またはどんなエンティティによって生成されるかにかかわらず、任意のタイプのコンテンツを含むことができ、元の（または独立した）データと、メタデータ（すなわち他のデータに関するデータ）との両方を含むことができる。いくつかの実施形態で処理または転送することのできる、ある特定タイプのコンテンツ・ユニットを、本明細書ではクオリファイド・コンテンツ・ユニットと呼ぶ。本明細書において、クオリファイド・コンテンツ・ユニットは、このコンテンツ・ユニットを記憶している記憶システム上にインストールされたファイル・システムによって作成された、ファイル・システム属性以外の少なくとも１つのタイプのコンテンツまたはデータを含むコンテンツ・ユニットとして定義される。ファイル・システム属性は、ファイル・システムに記憶された１つまたは複数のファイルに関連する、ファイル・システムによって作成されるメタデータである。ファイル・システム属性中の情報は、例えば、最後にファイルがアクセスされた時刻、最後にファイルが修正された時刻、ファイルに対するアクセス許可、および／または、ファイルに関する他の任意の適した情報を含むことができる。
【００２４】
いくつかの実施形態では、コンテンツ・ユニットを記憶システム上のファイル・システム中のファイルとして記憶することができ、コンテンツ・ユニットは、記憶システム上のファイル・システムによってファイル・システム属性に記憶される情報と同様の情報を記憶することができることを理解されたい。例えば、第１のコンテンツ・ユニットが、第２のコンテンツ・ユニットに記憶されたコンテンツに関するメタデータを記憶することができる。このメタデータは、例えば、第２のコンテンツ・ユニットが作成された時刻、第２のコンテンツ・ユニットのサイズ、および／または他の任意の適した情報を含むことができる。第１のコンテンツ・ユニットに記憶されたメタデータが、記憶システム上のファイル・システム以外のエンティティによって作成されたものであるときは、第１のコンテンツ・ユニットは、ファイル・システム中のファイルとして記憶されているにもかかわらず、クオリファイド・コンテンツ・ユニットと見なされない。というのは、このメタデータは、第１のコンテンツ・ユニットが記憶されている記憶システム上のファイル・システムによって作成されたのではないからである。
【００２５】
クオリファイド・コンテンツ・ユニットは、コンテンツ・ユニットが記憶されている記憶システム上のファイル・システムによって記憶されるファイル・システム属性に限定されないことの他にも、どんな点でも限定されない。１実施形態では、ユーザ・コンテンツのみを記憶した少なくともいくつかのクオリファイド・コンテンツ・ユニットが転送される。ユーザ・コンテンツは、記憶システム以外のコンピュータ上で実行されるアプリケーション・プログラムによって生成されるコンテンツであり、データおよび／またはメタデータを含むことができる。本明細書において、アプリケーション・プログラムは、ワード・プロセッシング、記録（例えば金融記録や医療記録）の記憶および／または閲覧、在庫管理、電子メールの送受信などのユーザ指向タスク、ならびに／あるいは他の任意のユーザ指向タスクを容易にするコンピュータ・プログラムである。ユーザ・コンテンツが記憶システムの外部のアプリケーション・プログラムによって生じたが、記憶前に（記憶システム中または他のどこかで）暗号化、圧縮、さもなければ再フォーマットされたときは、記憶されたコンテンツはやはりユーザ・コンテンツと見なされることを理解されたい。
【００２６】
別の実施形態では、元データのみを記憶した（すなわちどんなメタデータも記憶していない）クオリファイド・コンテンツ・ユニットを転送することができる。後でより詳細に論じるように、元データのみを記憶するコンテンツ・ユニットの１例は、ブロブ（ｂｌｏｂ）であり、メタデータを記憶する（かつ元データも記憶する場合がある）コンテンツ・ユニットの１例は、コンテンツ記述子ファイル（ＣＤＦ）である。
【００２７】
別の実施形態では、記憶システムの外部のエンティティ（例えばホスト・コンピュータおよび／またはアプリケーション・プログラム）によって生成されたデータのみを記憶したクオリファイド・コンテンツ・ユニットを転送することができる。このようなクオリファイド・コンテンツ・ユニットは、記憶システムの内部で生成されたビット（例えば記憶システム上で実行されるファイル・システムによって生成されたファイル・システム属性）を有さない。このようなコンテンツ・ユニットが記憶システムの外部のエンティティによって生成されたが、次いで記憶前に記憶システム内で暗号化、圧縮、さもなければ再フォーマットされたときは、記憶されたコンテンツはやはり記憶システムの外部で生成されたと見なされることを理解されたい。
【００２８】
別の実施形態では、どんな可変メタデータも記憶していないクオリファイド・コンテンツ・ユニットを転送することができる。いくつかのクオリファイド・コンテンツ・ユニットに記憶されたメタデータは不変（すなわち変更不可能）とすることができることを理解されたい。対照的に、いくつかのコンテンツ・ユニットは、最後のアクセスまたは修正の時刻や、アクセス許可など、変更可能なメタデータ（例えばコンテンツ・ユニットを記憶している記憶システム上のファイル・システムによって書かれたファイル・システム属性）を含むことができる。
【００２９】
別の実施形態では、オブジェクト・アドレス指定可能なクオリファイド・コンテンツ・ユニットを転送することができる。オブジェクト・アドレス指定可能なコンテンツ・ユニットは、オブジェクト識別子に関連付けられると共にオブジェクト識別子を介してアクセスできるコンテンツ・ユニットであり、オブジェクト識別子は、コンテンツ・ユニットにアクセスするエンティティから見ると、どこにコンテンツ・ユニットが記憶されているかを制御しない。
【００３０】
クオリファイド・コンテンツ・ユニットは、コンテンツ・ユニットのサブセットであることを理解されたい（すなわち、あらゆるクオリファイド・コンテンツ・ユニットはコンテンツ・ユニットである）。本発明の種々の実施形態では、考察する態様を用いて、クオリファイド・コンテンツ・ユニットのみ、またはクオリファイド・コンテンツ・ユニットでないコンテンツ・ユニットのみ、あるいはこれらの何らかの組合せを転送することができる。
【００３１】
１実施形態では、少なくとも１つの選択基準を満たすコンテンツ・ユニットを求める要求を受信することのできる記憶システムが提供される。記憶システムは、１つまたは複数の選択基準を満たすコンテンツ・ユニットがあればそれらを突き止めることができ、要求に応答してこれらのコンテンツ・ユニットを返すことができる。別の実施形態では、要求中で指定された１つまたは複数の選択基準を満たす、記憶システム上に記憶されたコンテンツ・ユニット（単にオブジェクト識別子のみとは対照的に）を提供するよう求める要求を、ホスト・コンピュータが記憶システムに発行することができる。
【００３２】
別の実施形態では、記憶システムは、ＯＡＳインタフェースを提供するＯＡＳシステムとすることができ、ＯＡＳインタフェースを介して、コンテンツ・ユニットを識別するオブジェクト識別子を使用してコンテンツ・ユニットにアクセスすることができる。ＯＡＳシステムはまた、特定のコンテンツ・ユニットのどんなオブジェクト識別子も提供しないが少なくとも１つの選択基準を指定する要求を、受信する機能を有することができる。要求の受信に応答して、記憶システムは、要求中で指定された１つまたは複数の選択基準を満たす、記憶システム上に記憶されたコンテンツ・ユニットを識別し、これらのコンテンツ・ユニットを返す。関連の１実施形態では、このような要求を発行するホスト・コンピュータが提供される。
【００３３】
さらに別の実施形態では、少なくとも１つの選択基準を満たすコンテンツ・ユニットを記憶システムが提供するための進行中の要求に、またはこの要求から、プロセッサを動的に追加または削除する機能を提供することができる。
【００３４】
図１は、本発明の実施形態をその上で実施することのできるコンピュータ・システム１００のブロック図である。コンピュータ・システム１００は、記憶システム１０１およびホスト・コンピュータ１０３を含む。図２は、１実施形態による、記憶システム１０１上に記憶されたコンテンツ・ユニットをホスト・コンピュータ１０３に提供するための例示的な工程を示すフロー・チャートである。
【００３５】
図２に示すように、工程は動作２０１で開始し、ホスト・コンピュータ１０３は、要求１０５を記憶システム１０１に送信して、記憶システム上に記憶されている、１つまたは複数の選択基準を満たすコンテンツ・ユニットを提供するよう記憶システムに要求する。次いで工程は動作２０３に進み、記憶システム１０１は要求を受信する。次いで工程は動作２０５に進み、記憶システムは、要求中で指定された選択基準を満たすコンテンツ・ユニットを識別して突き止める。次いで工程は動作２０７に進み、記憶システムは、要求１０５中で指定された１つまたは複数の選択基準を満たすコンテンツ・ユニット（例えば図１のコンテンツ・ユニット１０７ａ、１０７ｂ、．．．、１０７ｎ）をホスト・コンピュータ１０３に提供する。次に工程は動作２０９に進み、ホスト・コンピュータは記憶システムからコンテンツ・ユニットを受信し、工程は動作２１１に進み、ホスト・コンピュータは受信したコンテンツ・ユニットを処理する。ホスト・コンピュータはコンテンツ・ユニットを所望の方式で処理することができ、本発明はこれに関して限定されない。
【００３６】
要求１０５は、任意の適した１つまたは複数の選択基準を指定することができ、本発明はこれに関して限定されない。例えば、１つまたは複数の選択基準は、コンテンツ・ユニットが記憶システム１０１上に記憶された時刻範囲、キーワード（例えばコンテンツ・ユニットのメタデータに含まれるもの）、コンテンツ・ユニットのサイズ制限またはサイズ範囲、コンテンツのタイプ（例えばデータ、メタデータ、または両方）、および／あるいは他の任意の適した基準を含むことができる。要求は２つ以上の検索基準を指定することができ、複数の検索基準が指定される場合は、これらの検索基準を任意の適した方式でブール論理によって組み合わせることができ、本発明はこれに関して限定されないことを理解されたい。
【００３７】
図１の例では、記憶システム１０１は、ホスト・コンピュータ１０３から要求１０５を受信するのに応答して、ホスト・コンピュータ１０３にコンテンツ・ユニットを提供する。しかし、本発明はこれに関して限定されない。後でより詳細に論じるように、記憶システム１０１は、ホスト・コンピュータ１０３に代えてまたは追加で、他の宛先または他のタイプのシステムにコンテンツ・ユニットを提供することもできる。
【００３８】
ホスト・コンピュータ１０３は任意のタイプのシステムとすることができ、本発明はこれに関して限定されない。例えば、ホスト・コンピュータ１０３は、アプリケーション・サーバなどのサーバ、パーソナル・コンピュータ、アプライアンス、または他の任意の適したタイプのシステムとすることができる。
【００３９】
いくつかの実施形態では、第２の記憶システムが、１つまたは複数の選択基準を指定する要求１０５を記憶システム１０１に発行し（例えばホスト・コンピュータ１０３に代わってまたは追加で）、要求に応答して、１つまたは複数の選択基準を満たすコンテンツ・ユニットを記憶システム１０１から受信することができる。
【００４０】
１実施形態では、記憶システム１０１は、オブジェクト・アドレス指定可能記憶（ＯＡＳ）システムとすることができる。すなわち、記憶システム１０１上に記憶されている各コンテンツ・ユニットは、そのコンテンツ・ユニットを一意に（または一意に極めて近く）識別するオブジェクト識別子と関連付けることができる。したがって例えば、特定のコンテンツ・ユニットを記憶システム１０１に要求するには、ホスト・コンピュータ１０３は、そのコンテンツ・ユニットのオブジェクト識別子を含む要求を記憶システム１０１に送信すればよい。要求エンティティ（例えばホスト・コンピュータ１０３）から見ると、オブジェクト識別子は、記憶システム１０３上のコンテンツ・ユニットの物理的または論理的位置とは関係ない。したがって、記憶システム１０１がコンテンツ・ユニットを異なる物理的または論理的位置に移動させたとしても、ホスト・コンピュータ１０３は依然として、同じオブジェクト識別子を使用してこのコンテンツ・ユニットにアクセスすることができる。
【００４１】
いくつかの実施形態で使用することのできるオブジェクト識別子のタイプの１例は、コンテンツ・アドレスである。コンテンツ・アドレスは、コンテンツ・ユニットのコンテンツの少なくとも一部から少なくとも部分的に計算される識別子である。すなわち、例えば、コンテンツ・ユニットのコンテンツの全部または一部をハッシュし（例えばＭＤ５または他の任意の適したハッシング・アルゴリズムを使用して）、ハッシュ値をコンテンツ・アドレスとしてまたはコンテンツ・アドレスの一部として使用することができる。コンテンツ・アドレスをオブジェクト識別子として使用するＯＡＳシステムを、本明細書ではコンテンツ・アドレス指定可能記憶（ＣＡＳ）システムと呼ぶ。したがって、１実施形態では、記憶システム１０１はＣＡＳシステムとすることができる。
【００４２】
記憶システム１０１がＯＡＳシステムである本発明の１実施形態では、要求１０５は、特定のコンテンツ・ユニットを識別するどんなオブジェクト識別子も含まなくてよい。そうではなく、要求１０５は、取り出すべきコンテンツ・ユニットを、１つまたは複数の選択基準を指定するだけで識別することができる。しかし、本発明はこれに関して限定されず、要求１０５は、１つまたは複数の選択基準を提供するのに加えて、特定のコンテンツ・ユニットを識別する１つまたは複数のオブジェクト識別子、および／あるいは、１つまたは複数のコンテンツ・ユニットを識別する他の任意の適した情報を含んでもよい。
【００４３】
前記のように、要求１０５中で指定することのできる選択基準の例は、選択基準を満たすコンテンツ・ユニット、および／またはこのようなコンテンツ・ユニットに関するメタデータを、記憶システムが返すものである。これは、任意の適した方式で達成することができ、本発明はこれに関して限定されない。本発明のいくつかの実施形態では、コンテンツ・ユニットに記憶されるコンテンツは、データ（例えばアプリケーション・データ）と、データに関するメタデータ（例えば、データが記憶された時刻、データを記憶したアプリケーションの識別など）とを含むことができる。本発明のいくつかの実施形態では、データとそれに対応するメタデータとは同じコンテンツ・ユニットに記憶されてよい。しかし、本発明はこれに関して限定されず、他の実施形態では、データとそれに対応するメタデータとは別々のコンテンツ・ユニットに記憶されてもよい。
【００４４】
データとメタデータとを別々のコンテンツ・ユニットに記憶することは、任意の適した方式で達成することができ、本発明はこれに関して限定されない。１実施形態では、メタデータを記憶するコンテンツ・ユニットを本明細書ではコンテンツ記述子ファイル（ＣＤＦ）と呼ぶが、ＣＤＦは、メタデータの属するデータを記憶する１つまたは複数の別々のコンテンツ・ユニットへの参照を含む。データを記憶するコンテンツ・ユニットは、本明細書ではブロブと呼ぶ。ＣＤＦは、任意の適した数のブロブに関するメタデータを参照および記憶することができ、本発明はこれに関して限定されない。例えば、図３に示すように、ＣＤＦ３０１は、３つのブロブ（すなわちブロブ３０３、３０５、および３０７）に関するメタデータを参照すると共に含む。ＯＡＳシステムにおけるＣＤＦおよびブロブを伴うシステムの例に関しては、表１に列挙する出願（それぞれを本願明細書に援用する）に、より詳細に提供されている。
【００４５】
ＣＤＦ３０１は、任意の適した方式でブロブを参照することができ、本発明の実施形態はこれに関して限定されない。例えば、ＣＤＦ３０１は、それが参照する各ブロブのオブジェクト識別子を、ブロブへの参照として記憶することができる。したがって例えば、ブロブ３０３が空港セキュリティ・カメラ１からのビデオ・データを記憶し、ブロブ３０５および３０７がそれぞれ空港セキュリティ・カメラ２からのビデオ・データを記憶している場合、ＣＤＦ３０１中のブロブ３０３に関するメタデータは、ブロブ３０３のコンテンツが空港セキュリティ・カメラ１からのビデオ・データであることを示すことができ、ブロブ３０５および３０７に関するメタデータは、これらのブロブのコンテンツがセキュリティ・カメラ２からのビデオ・データであることを示す。したがって、空港セキュリティ・カメラ１を求めるメタデータ検索の結果として、ＣＤＦ３０１を識別することができる。ＣＤＦ３０１のメタデータを調べて、ブロブ３０３が空港セキュリティ・カメラ１からのビデオ・データを記憶していると決定することができる。ＣＤＦ３０１からブロブ３０３のオブジェクト識別子を得ることができ、次いで、このオブジェクト識別子を使用してブロブ３０３にアクセスすることができ、それにより、このブロブを任意の望まれる方式で（例えば顔認識ソフトウェアを使用して）処理することができる。
【００４６】
メタデータがＣＤＦに記憶され、それに対応するデータがブロブに記憶されているとき、ホスト・コンピュータ１０３は、メタデータのみを受信しデータは受信しないことを望む場合に、選択基準の１つとして、ＣＤＦのみを提供しブロブは提供しないよう記憶システム１０１に要求することができる。同様に、ホスト・コンピュータ１０３は、データのみを受信しメタデータは受信しないことを望む場合に、選択基準の１つとして、ブロブのみを提供しＣＤＦは提供しないよう記憶システム１０１に要求することができ、あるいは、メタデータとデータの両方を提供するよう要求することができる。
【００４７】
１実施形態では、記憶システム１０１はデフォルトで、要求１０５に応答してブロブのみを提供するように構成される。したがって、選択基準の１つとして「ブロブのみ」と指定する必要はない。例えば、記憶システム１０１は、選択基準を含む要求を受信することができる。記憶システムは、選択基準を満たすＣＤＦを識別することができるが、これらのＣＤＦを返すのではなく、選択基準を満たすＣＤＦによって参照されるブロブを突き止めて返すことができる。
【００４８】
記憶システム１０１は、要求１０５に応答して、任意の適した方式で、かつ任意の適したフォーマットで、コンテンツ・ユニットをホスト１０３に提供することができ、本発明はこれに関して限定されない。１実施形態では、記憶システムは、ホストによる処理を容易にする方式であってホストによって指定することのできる方式で、コンテンツ・ユニットをホストに提供する。１実施形態では、記憶システム１０１は、ホスト・コンピュータ１０３上のファイル・システムにコンテンツ・ユニットを記憶することができる。要求１０５に応答して提供されたコンテンツ・ユニットを、ホスト・コンピュータ１０３上のファイル・システムを使用して記憶するとき、ファイル・システムは、任意の適した方式で編成されてよい。例えば、ファイル・システムは、時刻ベースのディレクトリ構造、オブジェクト識別子に基づいて編成されたディレクトリ構造、メタデータ・キーワードに基づいて編成されたディレクトリ構造、または他の任意の適したディレクトリ構造を使用することができる。
【００４９】
図４は、オブジェクト識別子に基づいて編成されたディレクトリ構造を有する例示的なファイル・システムである。図４のディレクトリ構造は、いくつかの階層型ディレクトリを含む。階層の最上部のディレクトリは、ルート・ディレクトリ４０２と呼ばれる。階層の第２レベルには、いくつかのサブディレクトリ４０４がある。これらのサブディレクトリはそれぞれ、コンテンツ・ユニットのオブジェクト識別子の最初の文字を表す。すなわち、文字「Ａ」で始まるオブジェクト識別子を有するコンテンツ・ユニットが、ディレクトリ「Ａ」のサブディレクトリの１つに記憶される。このコンテンツ・ユニットが記憶されるサブディレクトリ４０６は、オブジェクト識別子の第２の文字に依存する。記憶システム１０１から取り出されファイル・システムに記憶されたコンテンツ・ユニットにホスト・コンピュータ１０３がアクセスするとき、ホスト・コンピュータは、特定のコンテンツ・ユニットをそれらのオブジェクト識別子に基づいて突き止めることができる。例えば、ホスト・コンピュータ上のアプリケーション・プログラムが、ファイル・システム階層を横断して、特定のコンテンツ・ユニットのオブジェクト識別子の最初の２文字に一致する名前を有するサブディレクトリを突き止めることによって、このコンテンツ・ユニットを突き止めることができる。図４のディレクトリ構造では、リーフ・ディレクトリ４０６は、コンテンツ・ユニットのオブジェクト識別子の最初の２文字を表す。しかし、本発明はこれに関して限定されず、本発明の実施形態は、階層中に追加レベルを有する階層型ディレクトリ構造を使用することもできる。任意の適した数の追加レベルを使用することができ、本発明はこれに関して限定されない。例えば、サブディレクトリ「ＡＡ」は、ディレクトリ構造のリーフ・サブディレクトリである、サブディレクトリＡＡＡ〜ＡＡＺ（すなわち２６個のサブディレクトリ）を有することができる。したがって、コンテンツ・ユニットが記憶されるサブディレクトリは、そのオブジェクト識別子の最初の３文字に依存する。
【００５０】
別の実施形態では、ホスト・コンピュータ１０３上のファイル・システム・ディレクトリ構造は時刻に基づいて編成することができ、ディレクトリ構造中のコンテンツ・ユニットの位置は、コンテンツ・ユニットが元々記憶システム１０１上に記憶された時刻に基づいて選択することができる。例えば、２００４年７月３１日の午前１１時に記憶されたコンテンツ・ユニットは、６つのレベル（階層順にＬ１〜Ｌ６）を有するディレクトリ構造中で、ディレクトリ／２００４／０７／３１／１１／００／００に記憶することができ、このディレクトリ構造では、ディレクトリＬ１は、コンテンツ・ユニットが記憶された年を示す値２００４を記憶し、サブディレクトリＬ２は月を示す値０７を記憶し、サブディレクトリＬ３は日を示す値３１を記憶し、サブディレクトリＬ４は時を示す値１１を記憶し、サブディレクトリＬ５は分を示す値００を記憶し、Ｌ６は秒を示す値００サブディレクトリを記憶する。したがって例えば、第２のコンテンツ・ユニットが２００４年７月３１日の午前１１時３０分に記憶システムに記憶された場合、この第２のコンテンツ・ユニットは、ホスト・コンピュータ上のファイル・システム中で、ディレクトリ／２００４／０７／３１／１１／３０／００に記憶することができる。
【００５１】
時刻ベースのディレクトリ構造は、コンテンツ・ユニットが元々記憶システム１０１上に記憶された時刻に基づいてホスト・コンピュータ上のアプリケーション・プログラムがコンテンツ・ユニットを突き止められるようにするのを助ける。コンテンツ・ユニットを記憶するためのディレクトリ構造を指定する際に時刻を利用する本発明の実施形態は、上述した特定の例に限定されず、本発明のこの実施形態は、サブディレクトリ・レベルの境界およびサブディレクトリの数を確立するものとして異なる時間単位を使用することによる方法を含めて、多くの方法のいずれでも実施できることを理解されたい。
【００５２】
上で説明したように、その他多くの適したディレクトリ構造（例えば、メタデータ・キーワードまたは他の選択基準に基づいて編成されたディレクトリ構造）を使用することができ、本発明はこれに関して限定されない。
【００５３】
任意の適した方式で、ディレクトリ構造を生み出してコンテンツ・ユニットを適切なディレクトリ中に配置することができ、本発明はこれに関して限定されない。１実施形態では、ホスト・コンピュータ１０３上のファイル・システムは、ネットワーク化されたファイル・システムとすることができる。記憶システム１０１は、ディレクトリ構造を生み出して、コンテンツ・ユニットをディレクトリ構造中の適切なディレクトリ中に配置することができる。
【００５４】
別の実施形態では、ホスト・コンピュータ１０３上のファイル・システムは、記憶システム１０１にアクセス可能なネットワーク化されたファイル・システムである（可能ではあるが）必要はない。アプリケーション・プログラミング・インタフェース（ＡＰＩ）など、ホスト・コンピュータ１０３上のソフトウェアが、記憶システム１０１と、記憶システム１０１上のコンテンツにアクセスしたいアプリケーション・プログラムとの間のインタフェースとしての働きをすることができる。ＡＰＩは、ディレクトリ構造の作成および管理を担うことができる。例えば、図５に示すように、ホスト・コンピュータ１０３は、アプリケーション・プログラム５０１およびＡＰＩ５０３を実行することができる。アプリケーション・プログラム５０１は、記憶システム１０１に対してコンテンツ・ユニットの読取りおよび／または書込みを行う任意のタイプのアプリケーション・プログラムとすることができる。ＡＰＩ５０３は、アプリケーション・プログラム５０１が記憶システム１０１と通信するために呼び出すことのできるサブルーチンのセットを提供することができる。
【００５５】
したがって例えば、アプリケーション・プログラム５０１は、ＡＰＩ５０３のサブルーチンを呼び出すことができ、このサブルーチンは、指定された選択基準を満たすコンテンツ・ユニットを求める要求をＡＰＩ５０３から記憶システム１０１に送信させる。アプリケーション・プログラムは、サブルーチン呼出しの中で、または他の任意の適した方式で、選択基準を指定することができる。アプリケーション・プログラムはまた、結果が返される方式（例えば、時刻ベースのディレクトリ構造、または他のタイプのディレクトリ構造中で）を、サブルーチン呼出しの中で、または他の任意の適した方式で指定することができる。記憶システム１０１は、要求を受信し、要求されたコンテンツ・ユニットを識別し、これらのコンテンツ・ユニットをＡＰＩ５０３に返すことができる。ＡＰＩ５０３は、返されたコンテンツ・ユニットを受信し、各コンテンツ・ユニットをファイル・システム・ディレクトリ構造中の適切なディレクトリに配置することができる。適切なディレクトリがまだ存在しない場合は、ＡＰＩ５０３は、適切な１つまたは複数のディレクトリをファイル・システム・ディレクトリ構造に追加することができる。
【００５６】
上の例では、ＡＰＩ５０３は、アプリケーション・プログラム５０１が記憶システム１０１と通信するためのインタフェースとして動作し、かつ、記憶システム１０１から受信したコンテンツ・ユニットを特定のディレクトリ構造中に編成するエンティティとしての動作をした。しかし、本発明はこれに関して限定されず、いくつかの実施形態では、この２つの操作は別々のエンティティ（例えば別々のソフトウェア・プログラム）によって実施されてもよい。
【００５７】
上の例では、コンテンツ・ユニットはファイル・システムに記憶される（しかし本発明はこれに関して限定されない）。いくつかの実施形態では、各コンテンツ・ユニットを、ファイル・システム中の別々のファイルとして記憶することができる。しかし、本発明はこれに関して限定されず、複数のコンテンツ・ユニットを単一のファイルに「コンテナ化」（すなわち記憶）してもよい。コンテンツ・ユニットのコンテナ化については、以下の表１に列挙する本願の譲受人に譲渡された出願のいくつかに、より詳細に説明されている。
【００５８】
上の例では、ディレクトリを含むディレクトリ構造を有するものとして、ファイル・システムに言及している。本明細書において、ディレクトリは、ファイルおよび／または他のディレクトリを論理的に記憶する、ファイル・システム中の論理エンティティを指す。ファイル・システムには、用語「ディレクトリ」の代わりに用語「フォルダ」を使用するものもある。本明細書において、用語「ディレクトリ」は、ファイルおよび／または他の論理記憶エンティティを論理的に記憶する、ファイル・システム中の「フォルダ」または他の任意の論理記憶エンティティを包含することを理解されたい。
【００５９】
さらに、上の例における例示的なファイル・システム・ディレクトリ構造は、階層型ディレクトリ構造を利用しており、それによりディレクトリは階層型に構成される。コンテンツ・ユニットがホスト・コンピュータ上のファイル・システムに記憶される本発明の実施形態では、ファイル・システムのディレクトリ構造は階層型である必要はなく、フラット・ディレクトリ構造または他の任意の適したディレクトリ構造を使用してもよいことを理解されたい。加えて、ファイル・システムは、ファイル・システムに記憶されることになるコンテンツ・ユニットの何らかの特性に基づいて編成される必要はなく、本発明はこれに関して限定されない。ファイル・システムは、任意の適した方式で編成されてよく、全く編成されなくてもよい。
【００６０】
上で説明したように、記憶システム１０１上に記憶されている、要求中で指定された１つまたは複数の選択基準を満たすコンテンツ・ユニットを提供するよう求める要求を記憶システム１０１が受信したとき、記憶システム１０１は、記憶システム１０１上に記憶されている、要求を満たすコンテンツ・ユニットを識別して突き止めることができる。これは任意の適した方式で行うことができ、本発明はこれに関して限定されない。例えば、１実施形態では、記憶システム１０１は、１つまたは複数の選択基準を満たす各コンテンツ・ユニットを識別し、これらのコンテンツ・ユニットに対応するオブジェクト識別子のリストを作成することができる。リストが完成した後、次いで記憶システムは、リストを横断して、リスト中の各オブジェクト識別子に対応するコンテンツ・ユニットにアクセスし、これをホスト・コンピュータに提供することができる。
【００６１】
別の実施形態では、記憶システム１０１は、１つまたは複数の選択基準を満たすコンテンツ・ユニットを識別するのを開始することができ、各コンテンツ・ユニットが識別されるのに伴って、このコンテンツ・ユニットにアクセスしてこれをホスト・コンピュータに提供することができる。
【００６２】
コンテンツ・ユニットを識別することと、コンテンツ・ユニットにアクセスすることは、２つの別々の手順とすることができることを理解されたい（しかし各手順は同じコンピュータ工程またはスレッドによって実施することができ、本明細書に述べる本発明の実施形態はこれに関して限定されない）。例えば、記憶システム１０１によって受信された要求は、あるキーワードを含むメタデータを有するコンテンツ・ユニットを求めるものである場合がある。
【００６３】
記憶システムは、任意の適した方式でコンテンツ・ユニットを識別することができ、本発明はこれに関して限定されない。１実施形態では、記憶システムは、キーワードを含むメタデータを有するコンテンツ・ユニットに対応する１つまたは複数のオブジェクト識別子にメタデータ・キーワードをマッピングする、メタデータ・インデックスを有することができる。コンテンツ・ユニットを識別することは、メタデータ・インデックスを検索して、指定されたキーワードを含むコンテンツを有するコンテンツ・ユニットに対応するオブジェクト識別子を決定することを伴うことができる。
【００６４】
コンテンツ・ユニットにアクセスすることは、オブジェクト識別子を、コンテンツ・ユニットのコンテンツが記憶されている物理的な記憶位置（例えばディスク位置）に変換すること、およびこの記憶位置からコンテンツを取り出すことを伴うことができる。
【００６５】
いくつかの状況では、コンテンツ・ユニットを識別することは、コンテンツ・ユニットにアクセスすることを伴うことができる。例えば、いくつかの実施形態では、記憶システム１０１は、メタデータ・キーワードをオブジェクト識別子にマッピングする既存のメタデータ・インデックスを有さない場合がある。したがって、あるキーワードを含むメタデータをどのコンテンツ・ユニットが有するかを決定するために、記憶システム１０１は、コンテンツ・ユニットにアクセスして、メタデータ中でキーワードを検索することができる。
【００６６】
メタデータ・キーワードを、これらのキーワードをメタデータ中に含むコンテンツ・ユニットのオブジェクト識別子にマッピングする既存のメタデータ・インデックスを利用する実施形態では、このようなインデックスを記憶システム１０１上に記憶する必要はなく、記憶システム１０１はこれらのメタデータ・キーワードの索引付けを実施する必要はなく、本発明はこれに関して限定されないことを理解されたい。例えば、いくつかの実施形態では、メタデータ・キーワードの索引付けは、記憶システムとは別個に（例えば記憶システムの外部に配置されたアプライアンスまたは他のコンピュータによって）実施することができる。別個のインデクサはコンテンツ・ユニットを記憶しなくてよいが、記憶システム１０１上に記憶されたコンテンツ・ユニットを（同期してまたは非同期で）受信し、これらを処理してメタデータ・インデックスを作成することができる。
【００６７】
上で説明したように、ホスト・コンピュータ１０３によって発行された要求の中で指定された１つまたは複数の選択基準を満たすコンテンツ・ユニットを、記憶システム１０１から、ホスト・コンピュータ１０３以外のシステムに、またはホスト・コンピュータ１０３に加えて他のシステムにも返すことができる。例えば、ホスト・コンピュータ１０３上で実行されているアプリケーション・プログラムが、２００５年１月１２日から２００５年１月１８日までの間に記憶システム１０１上に記憶された空港セキュリティ・カメラからのビデオ・データを含むコンテンツ・ユニットを求める要求を発行する場合がある。アプリケーション・プログラムは、ビデオ・データに対して顔認識（および／または他の処理）技法を実施するように構成されたものであってよい。同じアプリケーション・プログラムの別個のインスタンスを実行するために、他のホスト・コンピュータが利用可能であるものとすることができる。このため、アプリケーション・プログラムの各インスタンスがコンテンツ・ユニットの一部を並列で処理することができるように、選択基準を満たすコンテンツ・ユニットのいくつかを各ホスト・コンピュータに送信することが望まれる場合がある。したがって、アプリケーション・プログラムの単一のインスタンスがすべてのコンテンツ・ユニットを処理する場合よりも高速に結果を得ることができる。
【００６８】
上の例では、顔認識アプリケーション・プログラムを使用して、空港セキュリティ・システムからのビデオ・データを記憶したコンテンツ・ユニットを処理する。しかし、本発明はこれに関して限定されず、任意の適したタイプのアプリケーション・プログラムを使用することができ、任意の適したタイプのコンテンツを記憶したコンテンツ・ユニットを記憶システムから提供して処理することができる。
【００６９】
指定された１つまたは複数の選択基準を満たすコンテンツ・ユニットを、記憶システム１０１から、コンテンツ・ユニットの要求を発行したホスト・コンピュータに代えてまたは追加で１つまたは複数のホスト・コンピュータに転送することは、任意の適した方式で実施することができ、本発明はこれに関して限定されない。さらに、後で詳細に説明するように、要求を発行したホスト・コンピュータ（すなわちホスト・コンピュータ１０３）以外のホスト・コンピュータへのコンテンツ・ユニットの転送は、１つまたは複数の選択基準を満たすコンテンツ・ユニットを記憶システム１０１がホスト・コンピュータ１０３にすでに提供し始めた後で開始することができる。１つまたは複数の選択基準を満たすコンテンツ・ユニットが、ホスト・コンピュータ１０３に代えてまたは追加で他のホスト・コンピュータに提供されることの指示は、要求の前にまたは要求と同時に記憶システムに提供する必要はない。むしろ、このような命令は、記憶システムが要求を受信した後のいつでも記憶システムに提供することができる。加えて、要求に応答して記憶システム１０１からコンテンツ・ユニットを受信し始めたホスト・コンピュータは、コンテンツ・ユニットをそれ自体に送信するのを停止するよう求める指示を記憶システム１０１に送信することができる。したがって、コンテンツ・ユニットを送信できる送信先コンピュータの数を動的に変更して、プロセッサの数を増減することまたはプロセッサを代用することができる。
【００７０】
いくつかの実施形態では、記憶システム１０１への最初の要求は、結果が提供されることになる１つまたは複数のホスト・コンピュータ（要求を発行したホスト・コンピュータに追加でまたはそれに代えて）を指定することができる。
【００７１】
本明細書において、用語「反復」は、アクセス要求中で指定された１つまたは複数の基準を満たすコンテンツ・ユニットを記憶システム１０１上で検索することを指す。したがって、指定された１つまたは複数の基準を満たすコンテンツ・ユニットを１つまたは複数の宛先に提供するよう求める要求を記憶システム１０１が受信したとき、これらのコンテンツ・ユニットの検索を表す反復が記憶システム１０１上で生み出される（すなわち、記憶システム１０１はこれらのコンテンツ・ユニットの検索を開始する）。その後、検索において識別されたコンテンツ・ユニットを追加の宛先（例えばホスト・コンピュータ）に提供し始めるよう求める要求を記憶システム１０１が受信したとき、この追加の宛先は、本明細書では「反復に加わる」として言及する。反復の一部としてコンテンツ・ユニットを受信している宛先にコンテンツ・ユニットを提供するのを停止するよう求める要求を記憶システム１０１が受信したとき、この宛先は、本明細書では「反復を出る」として言及する。
【００７２】
したがって、記憶システムから提供されるコンテンツ・ユニットを処理するためのリソースは、これらのコンテンツ・ユニットを提供するよう求める要求を記憶システムに送信する前に割り振る必要はない。そうではなく、記憶システムは、反復の中で識別されたコンテンツ・ユニットを処理するためにリソースが利用可能になるのに伴って、これらのコンテンツ・ユニットをリソースに提供することができ、利用不可能になったリソース（例えば他の処理タスクに必要とされるリソース）へのコンテンツ・ユニットの提供は停止することができる。
【００７３】
図６に、記憶システム１０１と、複数のホスト・コンピュータ６０１ａ、６０１ｂ、６０１ｃ、および６０１ｄとを備えるコンピュータ・システムを示す。各ホスト・コンピュータは、アプリケーション・プログラム６０３ａ〜ｄ（例えばコンテンツ・ユニットからのコンテンツを処理するプログラム）を実行することができ、インタフェース６０５ａ〜ｄを備えることができる。インタフェース６０５ａ〜ｄを介して、アプリケーション・プログラム（例えばアプリケーション・プログラム６０１）は、記憶システム１０１と通信して、反復を生み出し、かつ／または反復に加わる。インタフェース６０５は、アプリケーション・プログラムが他のタイプのアクセス要求（例えば読取り要求、書込み要求、およびクエリ要求）のために記憶システム１０１と通信する際に介するインタフェースとは別個のインタフェースであってもよく、あるいはそのインタフェースの一部を形成してもよく、本発明はこれに関して限定されない。例えば、インタフェース６０５は、図５のインタフェース５０３とは別個のインタフェースであってもよく、あるいはインタフェース５０３の一部を形成してもよい。
【００７４】
インタフェース６０５がＡＰＩ５０３とは別個である実施形態では、各インタフェース６０５は、上の例でＡＰＩ５０３によって実施されるものとして記載した操作のいくつかを実施することができる。インタフェース６０５はこれらの操作を、ＡＰＩ５０３に追加でまたはその代わりに実施することができる。例えば、記憶システムから受信したコンテンツ・ユニットがホスト・コンピュータ上のファイル・システムに記憶される実施形態では、インタフェース６０５は、コンテンツ・ユニットをファイル・システム中の適切なディレクトリに記憶することができ、かつ／または、ファイル・システムのディレクトリ構造を作成および管理することができる。
【００７５】
図７に、記憶システム１０１上で反復を生み出すことができ、追加のホスト・コンピュータが反復に加わることができるための、例示的な工程を示す。工程は動作７０１で開始し、ホスト・コンピュータ（例えばホスト・コンピュータ６０１ａ）が最初に、指定された１つまたは複数の選択基準を満たすコンテンツ・ユニットを求める要求を記憶システム１０１に送信する。次いで工程は動作７０３に進み、記憶システムは、要求を受信し、要求に対応する反復を生み出す（すなわちコンテンツ・ユニットの検索を開始する）。
【００７６】
いくつかの実施形態では、記憶システム１０１は分散記憶システムとすることができる。分散記憶システムの例８００を図８に示す。分散記憶環境８００は、複数のアクセス・ノード８０１ａ〜８０１ｃ、および複数の記憶ノード８０３ａ〜８０３ｅを含む。アクセス・ノード８０１は、ホスト・コンピュータからのアクセス要求を受信してこれらに応答することができ、記憶ノード８０３は、ホスト・コンピュータによって記憶環境８００に送信されたコンテンツを記憶することができる。アクセス・ノード８０１および記憶ノード８０３は、各ノードがネットワーク（図示せず）上におけるその存在を他のノードに知られることができるように、ネットワークによって結合させることができ、ネットワークを介して通信することができる。このようにして、ノードは協働して、ホスト・コンピュータに対してアクセス要求を処理しデータを記憶することができる。
【００７７】
各ノードは、処理リソース（例えばプロセッサおよびメモリ）ならびに記憶デバイスを備えることができる。ノードは、相互と通信して、コンテンツを記憶し、アクセス要求に応答し、他の環境機能を実施する。記憶環境のユーザ（例えば、ホスト・コンピュータ、またはホスト・コンピュータ上で実行されているアプリケーション・プログラム）にとっては、記憶環境は単一のエンティティに見えるものとすることができる。すなわち、ユーザは、記憶環境が複数の別々のノードを含むこと、または、あるデータ・ユニットがどの記憶ノード上で記憶またはミラーリングされているかを意識する必要はない。
【００７８】
記憶システム１０１が分散記憶システムである実施形態では、１つまたは複数の選択基準を満たすコンテンツ・ユニットが記憶されている可能性のある、記憶システム中の各記憶ノード上で、反復を生み出すことができる。すなわち、分散記憶システム中のアクセス・ノードは、選択基準を満たすコンテンツ・ユニットを求める要求を受信することができ、これらのコンテンツ・ユニットのいずれかを記憶している可能性のある各記憶ノードに、選択基準を満たす記憶されているコンテンツ・ユニットの検索を開始するよう指示する。選択基準を満たすコンテンツ・ユニットを記憶ノードが識別したとき、記憶ノードは、これらのコンテンツ・ユニットを、反復の中の１つまたは複数のホスト・コンピュータに逆に提供されるように、指示したアクセス・ノードに返すことができ、あるいは、これらのコンテンツ・ユニットを、反復に加えられたホスト・コンピュータの１つに直接提供することができる。
【００７９】
分散記憶システムでは、コンテンツ・ユニットを２つ以上の記憶ノード上でミラーリングすることができる。すなわち、同じコンテンツ・ユニットの２つ以上のコピーを、分散記憶システム中の異なる記憶ノード上に記憶することができる。これは例えば、コンテンツ・ユニットのコピーの１つが破損した場合、またはコンテンツ・ユニットが記憶されている記憶ノードが利用不可能になった場合（例えばハードウェア障害のせいで）に、コンテンツ・ユニットが利用可能であるようにするために行うことができる。要求に応答して反復が各記憶ノード上で生み出される実施形態では、２つ以上の記憶ノードが同じコンテンツ・ユニットを識別することができ、これらの記憶ノードはそれぞれ、それに記憶されている、コンテンツ・ユニットのミラーリングされたコピーを識別することができる。
【００８０】
したがって、いくつかの実施形態では、反復に加えられた１つまたは複数のアプリケーション・プログラムに、同じコンテンツ・ユニットのミラーリングされたコピーの一方のみが提供されるように、コンテンツ・ユニットのコピーをフィルタにかけることができる。ミラーリングされたコピーは、任意の適した方式でフィルタにかけることができ、本発明はこれに関して限定されない。例えば、１実施形態では、コンテンツ・ユニットに関連するまたは含まれるメタデータは、コンテンツ・ユニットがプライマリ・コピーであるかミラーリングされたコピーであるかを示すことができる。記憶ノードは、メタデータを読み取って、コンテンツ・ユニットのプライマリ・コピーのみを返すことができる。記憶ノードが、選択基準を満たすコンテンツ・ユニットを、指示したアクセス・ノード（すなわち要求を受信したアクセス・ノード）に提供し、アクセス・ノードが、反復に加えられたホスト・コンピュータにこれらのコンテンツ・ユニットを返す別の実施形態では、アクセス・ノードは、どのコンテンツ・ユニットが送信されたかを追跡し（例えばそれらのオブジェクト識別子を使用して）、複製があればそれらをフィルタにかけて除去することができる。
【００８１】
いくつかの実施形態では、複製コンテンツ・ユニット（例えばミラー・コピー）をフィルタにかけて除去しなくてもよく、本発明は複製をフィルタにかけて除去することに限定されない。したがって例えば、同じコンテンツ・ユニットの２つのコピーを反復の中の１つまたは複数のアプリケーション・プログラムに提供することができ、各コピーをアプリケーション・プログラムの１つによって処理することができる。
【００８２】
反復が生み出された後、工程は動作７０５に進み、記憶システムは、反復を識別するセッション識別子を作成して、要求を発行したホスト・コンピュータ（この例ではホスト・コンピュータ６０１ａ）にセッション識別子を返す。記憶システム１０１は、インタフェース６０５ａを介してアプリケーション・プログラム６０３ａにセッション識別子を返すことができ、あるいは他の任意の適した方式で返すことができる。セッション識別子の使用により、記憶システムは、複数の反復を同時に処理することができる。実際、同じホスト・コンピュータ上の異なるアプリケーション・プログラムが、同時に異なる反復に参与する場合があり、あるいは、同じアプリケーションが、同時に２つの異なる反復に参与する場合がある。
【００８３】
次に工程は動作７０７に進み、アプリケーション・プログラムは、他のホスト・コンピュータ上で実行されている他のアプリケーション・プログラムに、セッション識別子を配信することができる。
【００８４】
次に工程は動作７０９に進み、他のホスト・コンピュータ上で実行されている他のアプリケーション・プログラムは、セッション識別子を使用して反復に加わる。これは任意の適した方式で行ってよく、本発明はこれに関して限定されない。例えば、ホスト・コンピュータ６０１ｂ上で実行されているアプリケーション・プログラム６０３ｂは、アプリケーション・プログラム６０３ａからセッション識別子を受信した後、受信したセッション識別子に対応する記憶システム１０１上の反復に加わりたいことをインタフェース６０５ｂに示すことができる。アプリケーション・プログラム６０３ｂは、インタフェース６０５ｂにコールバックを登録することができる。すなわち、アプリケーション・プログラム６０３ｂは、反復から生成されたコンテンツ・ユニットをインタフェース６０５ｂが記憶システム１０１から受信したときにインタフェース６０５ｂが呼び出すことになるサブルーチンの名前を提供することができる。サブルーチンは、受信したコンテンツ・ユニットをアプリケーション・プログラムに提供するサブルーチンとするか、あるいは、コンテンツ・ユニットが受信されてホスト・コンピュータ上に（例えばファイル・システムに）記憶されたことをアプリケーション・プログラムに通知するサブルーチンとすることができる。
【００８５】
上の例では、インタフェース６０５ｂが、登録されたサブルーチンを呼び出すことによってコンテンツ・ユニットをアプリケーション・プログラム６０３ｂに「プッシュ」する。しかし、本発明はコールバック・サブルーチンの使用に限定されず、アプリケーション・プログラムは、任意の適した方式でコンテンツ・ユニットをインタフェースから受信することができる。例えば、アプリケーション・プログラムが、インタフェースのサブルーチンを呼び出すことによってコンテンツ・ユニットをインタフェースから「プル」することもできる。
【００８６】
セッション識別子によって識別される反復に加わることを要求するアプリケーション・プログラムからの指示をインタフェース６０５ｂが受信したとき、インタフェースは、ホスト・コンピュータ６０１ｂがこの反復に加わりたいことを示す命令を記憶システム１０１に送信することができる。記憶システム１０１は、各反復につき、反復に加えられたホスト・コンピュータの情報を（例えば記録中で）維持することができる。指定されたセッション識別子に対応する反復にホスト・コンピュータが加わりたいことを示す命令を記憶システム１０１が（例えばインタフェースから）受信したとき、記憶システムは、反復に加えられたホスト・コンピュータを識別する情報にこのホスト・コンピュータを追加することができる。
【００８７】
１実施形態によれば、ホスト・コンピュータを反復に追加する命令は、コンテンツ・ユニットを求める最初の要求が記憶システムによって受信された後から反復が完了する前までのいつでも、記憶システム１０１に送信することができ、本発明はこれに関して限定されない。したがって、指定された１つまたは複数の検索基準を満たすいくつかの（さらにはほとんどの）コンテンツ・ユニットが識別されて、前に反復に加えられた１つまたは複数のホスト・コンピュータに提供された後でさえ、ホスト・コンピュータは反復に加わることができる。
【００８８】
次に工程は動作７１１に進み、記憶システムは、反復に加わったホスト・コンピュータにコンテンツ・ユニットを提供する。上で説明したように、記憶システム１０１は、反復に加えられたすべてのホスト・コンピュータの記録を維持することができる。指定された選択基準を満たすとしてコンテンツ・ユニットが識別され、記憶システムがコンテンツ・ユニットにアクセスし、反復に加えられたホスト・コンピュータの１つにコンテンツ・ユニットを返す用意ができたとき、記憶システムは、コンテンツ・ユニットを受信することになるこれらのホスト・コンピュータの１つを選択することができる。これは任意の適した方式で行うことができ、本発明はこれに関して限定されない。例えば、１実施形態では、記憶システムは、コンテンツ・ユニットを受信することになるホスト・コンピュータの１つを、自由にまたは擬似乱数を使用して選択することができる。別の実施形態では、ロード・バランシング方式を使用して、ホスト・コンピュータの１つを選択することができる。任意の適したロード・バランシング方式を使用することができ、本発明はこれに関して限定されない。例えば、ラウンドロビン方式、各ホスト・コンピュータ上の利用可能な処理リソースおよび／または機能に関する情報を用いる方式、あるいは他の任意の適したロード・バランシング方式を使用することができる。
【００８９】
本発明は複数のホスト・コンピュータにコンテンツ・ユニットを提供することに限定されず、いくつかの実施形態では、反復の中で識別されたコンテンツ・ユニットが、単一のホスト・コンピュータ、例えば要求を発行したホスト・コンピュータなどのみに提供されることを理解されたい。さらに、いくつかの実施形態では、反復の中で識別されたコンテンツ・ユニットを複数のホスト・コンピュータに提供する能力が実装されない場合があり、あるいは、実装されたときであっても、ホスト・コンピュータを動的に反復に追加するかまたは反復から削除する能力は実装されない場合があり、本発明はこれに関して限定されない。加えて、いくつかの実施形態では、ホスト・コンピュータを動的に反復に追加する能力は実装されるが、ホスト・コンピュータを動的に削除する能力は実装されない場合があり、あるいは、ホスト・コンピュータを動的に反復から削除する能力は実装されるが、ホスト・コンピュータを動的に追加する能力は実装されない場合があり、本発明はこれに関して限定されない。
【００９０】
１実施形態によれば、反復に加えられたホスト・コンピュータは、反復が完了する前のいつでも反復から出ることができ、記憶システムは、このホスト・コンピュータにコンテンツ・ユニットを提供するのを停止することができる。これは任意の適した方式で行うことができ、本発明はこれに関して限定されない。例えば、記憶システム１０１上の反復に加えられたアプリケーション・プログラム６０３ｂは、インタフェース６０５ｂに指示を送信して、セッション識別子を指定し、対応する反復を出ることを要求することができる。インタフェース６０５ｂは、セッション識別子によって識別される反復をホスト・コンピュータが出たいと思っていることを示す要求を、記憶システム１０１に送信することができる。これに応答して、記憶システム１０１は、反復に加えられたホスト・コンピュータを識別する記録から、このホスト・コンピュータを削除することができる。したがって、記憶システム１０１は、もはやこの反復からのコンテンツ・ユニットをこのホスト・コンピュータに提供し続けることはない。
【００９１】
本明細書において、記憶システムから受信された種々のコンテンツ・ユニットを記憶するために別々の記憶空間を割り振られた、かつ／または種々のコンテンツ・ユニットを別々に処理する、並列コンピュータの各ノード、プロセッサ、またはプロセッサ・コアは、別々のホスト・コンピュータ、システム、またはサーバと考えることができるが、同じコンテンツ・ユニットを共に処理するノード、プロセッサ、またはプロセッサ・コア（すなわち共同で単一のコンテンツ・ユニットを処理する複数のノード、プロセッサ、またはプロセッサ・コア）は、単一のホスト・コンピュータ、システム、またはサーバとして集合的に考えることができる。
【００９２】
１実施形態では、記憶システム１０１は、反復にサービスすると同時に、反復に関係のない他のアクセス要求を受信することもできる。例えば、反復にサービスする間、記憶システム１０１は、反復に参与していないホスト・コンピュータまたは反復に参与しているホスト・コンピュータから、読取りおよび／または書込み要求（例えば反復に関係のないもの）を受信することができる。したがって、１実施形態では、記憶システムは、反復に対して相対的なこのようなアクセス要求の優先度を決定し、このようなアクセス要求の優先度が高いと判定された場合は、反復を減速して、これらのアクセス要求を処理するためのリソースを解放することができる。
【００９３】
記憶システムは、任意の適した方式でアクセス要求の優先度を決定することができ、本発明はこれに関して限定されない。例えば、１実施形態では、記憶システムは、アクセス要求を発行したホスト・コンピュータまたはアプリケーション・プログラムに基づいて、優先度を決定することができる。別の実施形態では、アクセス要求は優先度レーティングを含むことができ、記憶システムは、この優先度レーティングを使用して、要求にサービスするために処理リソースを解放すべきかどうか、およびどの程度解放すべきかを決定することができる。
【００９４】
記憶システムは、任意の適した方式で、反復にサービスするのに使用されている処理リソースを解放することができる。例えば、記憶システムは、１つまたは複数のマルチタスキング・プロセッサを備えることができ、これらのプロセッサの１つまたは複数で実行される１つまたは複数の工程は、反復にサービスする工程であり、他の１つまたは複数の工程は、アクセス要求にサービスする工程である。記憶システムは、１つまたは複数のプロセッサが、その時間のうち一定の量または割合を、反復にサービスする工程を実行するのに費やすよう指定することができる。優先度の高いアクセス要求が受信されたときは、記憶システムは、反復にサービスする１つまたは複数の工程に１つまたは複数のプロセッサが費やす時間量を低減させることができる。
【００９５】
１実施形態では、記憶システム１０１は、記憶システムの連合体とすることができる。すなわち、記憶システム１０１は、２つ以上の別々の記憶システムを含むことができ、各記憶システムは、別々の処理リソースを備えるが、いずれかの記憶システム上のコンテンツにアクセスするエンティティには単一の記憶システムに見える。記憶システムの連合体の例は、以下で表１に列挙する出願のいくつかに詳細に記載されている。
【００９６】
ホスト・コンピュータが、指定された１つまたは複数の選択基準を満たすコンテンツ・ユニットを求める要求を連合体に送信すると、１実施形態では、この要求は、連合体中の記憶システムの１つのみによって受信されるものとすることができる。しかし、これらのコンテンツ・ユニットが、要求を受信した記憶システム上に記憶されているか、連合体中の他の記憶システム上に記憶されているかにかかわらず、１つまたは複数の選択基準を満たす、連合体に記憶された任意のコンテンツ・ユニットが返されることが予想される。
【００９７】
記憶システム１０１が記憶システムの連合体である本発明の１実施形態によれば、連合体中の記憶システムの１つが、指定された１つまたは複数の選択基準を満たすコンテンツ・ユニットを求める要求を受信すると、この記憶システムは、この記憶システム上で反復を生み出し、反復のセッション識別子を生成することができる。加えて、この記憶システムは、要求を満たすコンテンツ・ユニットを記憶している可能性のある連合体中の他の記憶システムにも、反復を生み出してこれらの反復に同じセッション識別子を割り当てるよう指示することができる。記憶システムはまた、要求を発行したホスト・コンピュータを指定することができ、それにより、連合体中の他の記憶システムは、１つまたは複数の選択基準を満たすコンテンツ・ユニットをこのホスト・コンピュータに返すことができる。連合体中の記憶システムのいずれか１つが、ホスト・コンピュータを反復に追加する命令を後で受信した場合、命令を受信した記憶システムは、命令を連合体中の他のホスト・コンピュータに転送することができ、各記憶システムは、このホスト・コンピュータを反復に追加することができる。
【００９８】
本発明の前述の実施形態は、任意の適したコンピュータまたは記憶システム上で実施することができる。適したコンピュータおよび／または記憶システムの例は、以下で表１に列挙する特許出願（「ＯＡＳ出願」と総称する）に記載されており、これらの各出願を本願明細書に援用する。これらの出願に記載されているコンピュータおよび記憶システムは、本発明の実施形態をその上で実施することのできるコンピュータおよび記憶システムの例に過ぎず、本発明は、これらのオブジェクト・アドレス指定可能な記憶システムのいずれでの実施にも限定されず、またオブジェクト・アドレス指定可能な記憶システムにも全く限定されないことを理解されたい。
【００９９】
【表１】
2009533723.tif 000003
2009533723.tif 000004
本発明の前述の実施形態は、多くの方式のいずれでも実施することができる。例えば、これらの実施形態は、ハードウェア、ソフトウェア、またはこれらの組合せを使用して実施することができる。ソフトウェア中で実施されるときは、単一のコンピュータに備わっているか複数のコンピュータ間に分散しているかにかかわらず任意の適したプロセッサまたはプロセッサの集まりにおいて、ソフトウェア・コードを実行することができる。前述の機能を実施する任意のコンポーネントまたはコンポーネントの集まりは、上で説明した機能を制御する１つまたは複数のコントローラとして一般に考えることができることを理解されたい。１つまたは複数のコントローラは、専用ハードウェアによって実現したり、あるいは上に挙げた機能を実施するようにマイクロコードまたはソフトウェアを使用してプログラムされた汎用ハードウェア（例えば１つまたは複数のプロセッサ）によって実現したりするなど、多くの方式で実現することができる。
【０１００】
これに関して、本発明の実施形態の１実装形態は、プロセッサ上で実行されたときに上に論じた本発明の実施形態の機能を実施するコンピュータ・プログラム（すなわち複数の命令）によってエンコードされた、少なくとも１つのコンピュータ可読媒体（例えばコンピュータ・メモリ、フロッピー・ディスク、コンパクト・ディスク、テープなど）を含むことを理解されたい。
【０１０１】
コンピュータ可読媒体は可搬型とすることができ、それにより、コンピュータ可読媒体に記憶されたプログラムを任意のコンピュータ環境リソースにロードして、本明細書で説明した本発明の態様を実施することができる。加えて、実行されたときに上で説明した機能を実施するコンピュータ・プログラムへの言及は、ホスト・コンピュータ上で稼動するアプリケーション・プログラムに限定されないことを理解されたい。本明細書ではむしろ、コンピュータ・プログラムという用語は、上で説明した本発明の態様を実施するようにプロセッサをプログラムするのに利用することのできる任意のタイプのコンピュータ・コード（例えばソフトウェアまたはマイクロコード）を指すために、一般的な意味で使用される。
【０１０２】
コンピュータ可読媒体中に工程が実装される本発明のいくつかの実施形態によれば、コンピュータによって実施されるこれらの工程は、実行される間に手動で（例えばユーザから）入力を受け取ることができることを理解されたい。
【０１０３】
本明細書で使用される言葉遣いおよび用語は、説明のためのものであり、限定と見なすべきではない。「含む」、「備える」、「有する」、「伴う」、およびこれらの活用形の使用は、その後に挙げる項目および追加の項目を包含するものとする。
【０１０４】
本発明のいくつかの実施形態を詳細に記載したが、当業者なら様々な修正および改良をすぐに思いつくであろう。そのような修正および改良も、本発明の趣旨および範囲の内にあるものとする。したがって、前述の記述は例示に過ぎず、限定とはしない。本発明は、添付の特許請求の範囲およびその均等物によって定義されるようにのみ限定される。
【図面の簡単な説明】
【０１０５】
【図１】本発明の１実施形態による、要求に応答して複数のコンテンツ・ユニットが記憶システムから転送されるコンピュータ・システムのブロック図。
【図２】１実施形態による、コンテンツ・ユニットを記憶システムから転送するための例示的な工程を示すフロー・チャート。
【図３】いくつかの実施形態による、複数のブロブを参照するコンテンツ記述子ファイル（ＣＤＦ）の図であって、ＣＤＦは、参照されるブロブに関連するメタデータを含む図。
【図４】いくつかの実施形態による、記憶システムからコンテンツを転送できる転送先ホスト・コンピュータ上で利用することのできる、オブジェクト識別子に基づいて編成されたディレクトリ構造のブロック図。
【図５】いくつかの実施形態による、ホスト・コンピュータ上で実行されているアプリケーション・プログラムがアプリケーション・プログラミング・インタフェース（ＡＰＩ）を介して記憶システムと通信するコンピュータ・システムのブロック図。
【図６】１実施形態による、複数のホスト・コンピュータが記憶システム上で生み出された反復に加わって記憶システムからのコンテンツ・ユニットを転送することができるコンピュータ・システムのブロック図。
【図７】１実施形態による、ホスト・コンピュータが記憶システム上の進行中の反復に加わることができるための例示的な工程を示すフロー・チャート。
【図８】本発明の実施形態をその上で実施することのできる分散記憶システムのブロック図。
【図１】
2009533723.tif 000005
【図２】
2009533723.tif 000006
【図３】
2009533723.tif 000007
【図４】
2009533723.tif 000008
【図５】
2009533723.tif 000009
【図６】
2009533723.tif 000010
【図７】
2009533723.tif 000011
【図８】
2009533723.tif 000012
【国際調査報告】
2009533723.tif 000013
2009533723.tif 000014
2009533723.tif 000015
2009533723.tif 000016
2009533723.tif 000017