"データを格納するための複数の記憶装置からなり、前記記憶装置上に格納したデータセグメントおよび対応する冗長情報を前記複数の記憶装置間でランダムに分散する、分散データ記憶システム。セグメントに対応する前記情報性情報は、当該セグメントのコピーである、請求項1記載の分散データ記憶システム。各セグメントの各コピーを前記記憶装置の異なるものに格納する請求項2記載の分散記憶システム。各セグメントの各コピーは、前記記憶装置の相対的仕様の関数として定義した確率分布にしたがって、前記複数の記憶装置の1つに割り当てられる請求項3記載の分散データ記憶システム。更に、コンピュータ読み取り可能ロジックを格納し、データセグメントの指示を用いてコンピュータによるアクセスが可能なセグメントテーブルを定義するコンピュータ読み取り可能媒体を備え、前記セグメントおよび対応する冗長情報を格納した前記複数の記憶装置から、該記憶装置の指示を検索する請求項1記載の分散データ記憶システム。前記複数の記憶装置が、コンピュータネットワークに接続した第1記憶装置と、前記コンピュータネットワークに接続した第2記憶装置と、前記コンピュータネットワークに接続した第3記憶装置と、を備える請求項1記載の分散データ記憶システム。セグメントに対応する前記冗長情報は、2つ以上のセグメントに基づく請求項1記載の分散データ記憶システム。前記2つ以上のセグメントおよび前記冗長情報を前記記憶装置の異なるものに格納する請求項7記載の分散データ記憶システム。コンピュータ用ファイルシステムであって、前記コンピュータが、当該コンピュータ上で実行するアプリケーションからの要求に応答してコンピュータネットワークを通じて独立したリモート記憶装置にアクセスし、前記記憶装置上に格納してあるデータを読み出すことを可能とし、前記データのセグメントおよび対応する冗長情報を前記複数の記憶装置間でランダムに分散するファイルシステムにおいて、前記要求に応答してデータを読み出し、前記選択したデータの各セグメント毎に、前記セグメントを格納する記憶装置を特定する手段と、前記要求したデータの各セグメントを、当該セグメントに対して特定した記憶装置から、読み出す手段と、前記特定した記憶装置からデータを受信したとき、前記アプリケーションに前記データを供給する手段と、を備えるファイルシステム。セグメントに対応する前記冗長情報は前記セグメントのコピーであり、前記セグメントを記憶する前記記憶装置を特定する前記手段は、前記選択したデータの各セグメント毎に、当該セグメントを格納する記憶装置の1つを選択する手段を含む請求項9記載のファイルシステム。前記記憶装置の1つを選択する手段は、前記複数の記憶装置上の要求の負荷が実質的に均衡するように記憶装置を選択することを特徴とする請求項10記載のファイルシステム。前記選択手段は、前記セグメントのためのどの記憶装置が、前記要求に応じるための推定時間が最も短いかについての推定に基づいて、前記セグメントのための前記記憶装置を選択する請求項11記載のファイルシステム。前記選択手段が、前記ファイルシステムにおいて、前記記憶装置の1つからデータを要求し、推定時間を示す手段と、前記第1記憶装置が前記要求を拒絶した場合、前記記憶装置の他のものからデータを要求し、推定時間を示す手段と、前記第2記憶装置が前記要求を拒絶した場合、前記第1記憶装置から前記データを要求する手段と、を含み、各記憶装置において、前記要求が前記推定時間以内に前記記憶装置によって対応することができない場合、データの要求を拒絶する手段と、前記要求が前記推定時間以内に前記記憶装置によって対応することができる場合、データの要求を受け入れる手段と、を含む請求項12記載のファイルシステム。各セグメントを読み出す前記手段は、前記選択した記憶装置からの前記データの転送をスケジュールし、前記記憶装置が効率的にデータ転送を行なうようにする手段を備える請求項11記載のファイルシステム。転送をスケジュールする前記手段は、前記ファイルシステムにおいて、前記選択した記憶装置から前記データの転送を要求し、待ち時間を示す手段と、前記選択した記憶装置が前記データを転送する前記要求を拒絶した場合、別の記憶装置から前記データを要求する手段と、を含み、前記記憶装置において、前記データが前記指示した待ち時間までに前記記憶装置から転送することができない場合、データ転送要求を拒絶する手段と、前記選択した記憶装置が前記待ち時間以内に前記データを転送することができる場合、前記データを転送する手段と、を含む請求項14記載のファイルシステム。各セグメントを読み出す前記手段は、前記選択した記憶装置からの前記データの転送をスケジュールし、前記記憶装置が効率的にデータ転送を行なうようにする手段を備える請求項9記載のファイルシステム。各セグメントを読み出す前記手段は、前記選択した記憶装置からの前記データの転送をスケジュールし、前記記憶装置が効率的にデータ転送を行なうようにする手段を備える請求項7記載のファイルシステム。転送をスケジュールする前記手段は、前記ファイルシステムにおいて、前記選択した記憶装置から前記データの転送を要求し、待ち時間を示す手段と、前記選択した記憶装置が前記データを転送する前記要求を拒絶した場合、別の記憶装置から前記データを要求する手段と、を含み、前記記憶装置において、前記データが前記指示した待ち時間までに前記記憶装置から転送することができない場合、データ転送要求を拒絶する手段と、前記選択した記憶装置が前記待ち時間以内に前記データを転送することができる場合、前記データを転送する手段と、を含む請求項17記載のファイルシステム。前記データを複数のセグメントに分割し、各セグメントをコピーし、各セグメントの各コピーを前記記憶装置の異なるものに格納する請求項10記載のファイルシステム。各セグメントの各コピーを、前記記憶装置の相対的仕様の関数として定義した確率分布にしたがって、前記複数の記憶装置の1つに割り当てる請求項19記載のファイルシステム。更に、コンピュータ読み取り可能ロジックを格納し、データセグメントの指示を用いてコンピュータによるアクセスが可能なセグメントテーブルを定義するコンピュータ読み取り可能媒体を備え、前記セグメントおよび対応する冗長情報を格納した前記複数の記憶装置から、該記憶装置の指示を検索する請求項9記載のファイルシステム。前記複数の記憶装置が、前記コンピュータネットワークに接続した第1記憶装置と、前記コンピュータネットワークに接続した第2記憶装置と、前記コンピュータネットワークに接続した第3記憶装置と、を備える請求項9記載のファイルシステム。セグメントに対応する前記冗長情報は、2つ以上のセグメントに基づく請求項9記載の分散データ記憶システム。前記冗長情報および該冗長情報の基となる前記2つ以上のセグメントは、各々前記記憶装置の異なる1つに記憶されている請求項23記載のファイルシステム。コンピュータ用ファイルシステムであって、前記コンピュータが、当該コンピュータ上で実行するアプリケーションからの、要求に応答してコンピュータネットワークを通じて独立したリモート記憶装置にアクセスし、前記記憶装置上にデータを格納することを可能とするファイルシステムにおいて、前記データを格納する前記要求に応答して、前記データを複数のセグメントに分割する手段と、各セグメントおよび該セグメントに対応する冗長情報を前記複数の記憶装置間でランダムに分散する手段と、前記データを格納したか否かについて前記アプリケーションに確証する手段と、を備えるファイルシステム。セグメントに対応する前記冗長情報は当該セグメントのコピーである請求項25記載のファイルシステム。前記ランダムに分散する手段は、各セグメント毎に、ランダムにかつ他のセグメントのために選択した記憶装置とは独立して、少なくとも2つの前記記憶装置を選択する手段と、前記選択した記憶手段に、各セグメントに対するデータを格納するように要求する手段と、を備える請求項26記載のファイルシステム。前記選択する手段は、前記記憶装置の部分集合を選択する手段と、前記選択した部分集合内にある前記記憶装置の中から少なくとも2つの前記記憶装置を選択する手段とを含む請求項27記載のファイルシステム。各セグメントの各コピーは、前記記憶装置の相対的仕様の関数として定義した確率分布にしたがって、前記複数の記憶装置の1つに割り当てられる請求項27記載のファイルシステム。更に、コンピュータ読み取り可能ロジックを格納し、データセグメントの指示を用いてコンピュータによるアクセスが可能なセグメントテーブルを定義するコンピュータ読み取り可能媒体を備え、前記セグメントおよび対応する冗長情報を格納した前記複数の記憶装置から、該記憶装置の指示を検索する請求項25記載のファイルシステム。前記複数の記憶装置が、前記コンピュータネットワークに接続した第1記憶装置と、前記コンピュータネットワークに接続した第2記憶装置と、前記コンピュータネットワークに接続した第3記憶装置と、を備える請求項25記載のファイルシステム。セグメントに対応する前記冗長情報は、2つ以上のセグメントに基づく請求項25記載の分散データ記憶システム。前記冗長情報および該冗長情報の基となる前記2つ以上のセグメントは、各々前記記憶装置の異なる1つに記憶されている請求項32記載のファイルシステム。データを格納するための複数の記憶装置を備えた分散データ記憶システムにおいてデータを復元するプロセスであって、前記記憶装置上に格納した前記データのセグメントおよび対応する冗長情報は、前記複数の記憶装置間にランダムに分散してあり、前記プロセスは、前記記憶装置の1つの故障が検出されたときに実行され、前記故障した記憶装置上に格納してあったコピーのセグメントを特定するステップと、前記特定したセグメントに対応する前記冗長情報を格納した記憶装置を特定するステップと、前記複数の記憶装置間において、前記特定した冗長情報に応じて前記特定したセグメントをランダムに分散するステップと、からなるプロセス。セグメントに対応する前記冗長情報は当該セグメントのコピーであり、記憶装置を特定する前記ステップは、前記特定したセグメントの別のコピーがストレージであった記憶装置を特定するステップを含み、ランダムに分散する前記ステップは、前記特定した記憶装置からの前記特定したコピーのコピーを前記複数の記憶装置間でランダムに分散するステップを含む、請求項24記載のプロセス。セグメントに対応する前記冗長情報は、2つ以上のセグメントに基づき、更に、前記特定したセグメントに対応する前記冗長情報にしたがって、前記特定したセグメントを再構成するステップを含み、前記ランダムに分散するステップは、前記再構成した特定セグメントを前記複数の記憶装置間で分散するステップを含む、請求項34記載のプロセス。ビデオデータストリームを組み合わせて複合ビデオデータを生成し、ビデオデータを格納するための複数の記憶装置を備えた分散システムに前記複合ビデオデータを格納するプロセスであって、前記記憶装置上に格納した前記ビデオデータのセグメントおよび対応する冗長情報を、前記複数の記憶装置間でランダムに分散する際に、前記複数の記憶装置から前記ビデオデータストリームを読み出すステップと、前記ビデオデータストリームを組み合わせ、前記複合ビデオデータを生成するステップと、前記複合ビデオデータをセグメントに分割するステップと、前記複合ビデオデータのセグメントおよび対応する冗長情報を前記複数の記憶装置間でランダムに分散するステップと、からなるプロセス。これらのシステムには、多数の記憶装置および多数のアプリケーション間においてスケーラブルにかつ信頼性高く、多数の独立した高帯域データストリーム、特に、ビデオおよび関連するオーディオデータのような等時性メディアデータを個別に転送可能なものはない。このようなデータ転送の必要性は、特に、マルチメディアデータのキャプチャ、オーサリング、および再生に対応するシステムでは困難である。特に、オーサリングシステムでは、データへのアクセスは、典型的に、より大きなデータファイルの、クリップと呼ばれる、小断片を単位として行われる。これらのクリップは、どのようにデータを格納するかに関しては、任意に即ちランダムな順序でアクセスする場合が多く、効率的なデータ転送を行なうことが困難である。コンピュータネットワークを用いて、多数のアプリケーションと接続してある多数の記憶装置上にデータをランダムに分散する。データをセグメントに分割する。各セグメントを記憶装置の1つに格納する。また、1つ以上のセグメントに基づく冗長情報も、基本となるセグメントとは異なる記憶装置上に格納する。冗長情報は、各セグメントのコピーとすればよく、あるいは2つ以上のセグメントに対して行なう排他的OR演算によって計算してもよい。セグメントまたは冗長情報を格納した各記憶装置の選択はランダムまたは疑似ランダムであり、他のデータセグメントが格納されている記憶装置とは独立することができる。冗長情報が2つ以上のセグメントに基づく場合、セグメントの各々を異なる記憶装置上に格納する。このデータセグメントのランダム分散によって、スケーラビリティscalabilityおよび信頼性双方が向上する。例えば、セグメントにアクセスすることによってデータを処理するので、データフラグメント即ちクリップもデータの全てと同様に効率的に処理される。アプリケーションは、データ転送が効率的な場合にのみ、記憶装置からのデータ転送を要求することができ、更に記憶装置にリード要求を前処理するように要求することも可能である。コンピュータネットワーク上での帯域幅利用は、クライアントおよび記憶装置間におけるデータ転送をスケジューリングすることによって最適化することができる。記憶装置の1つが故障した場合、その負荷も残りの記憶装置全体にランダムにそしてほぼ均一に分散される。記憶装置の故障から復元する手順も備えることができる。記憶装置およびアプリケーションは、中央制御部を用いずに、独立して動作することも可能である。例えば、各クライアントは、ローカル情報のみを用いて、記憶装置との通信をスケジュールすることができる。したがって、記憶装置およびアプリケーションのシステムに対する追加および除去が可能となる。その結果、システムは動作中でも拡張可能となる。冗長情報が1セグメントのコピーである場合、システム性能を向上させることができるが、記憶増大が犠牲となる。例えば、アプリケーションが選択したデータセグメントを要求する場合、要求は、要求のキューが最も短い記憶装置によって処理することができるので、多数の記憶装置上の多数のアプリケーションによって加えられる負荷におけるランダムな変動は統計的にそして一層等しく記憶装置全てにわたって均衡化される。この技法の組み合わせによって、多数の記憶装置および多数のアプリケーション間でスケーラブルにかつ信頼性高く多数の独立した高帯域幅データストリームを転送することができるシステムが得られる。したがって、一態様では、分散データ記憶システムは、データを格納する複数の記憶装置を含み、記憶装置上に格納したデータのセグメントを、複数の記憶装置間で分散する。各セグメントに対応する冗長情報も、記憶装置間にランダムに分散する。冗長データが1セグメントのコピーである場合、各セグメントの各コピーは、記憶装置の異なるものに格納することができる。各セグメントの各コピーは、記憶装置の相対的仕様relativespecificationの関数として定義した確率分布にしたがって、複数の記憶装置の1つに割り当てることができる。分散データ記憶システムは、コンピュータ読み取り可能媒体を含むことができる。この媒体上にはコンピュータ読み取り可能なロジックを格納してあり、データセグメントの指示を用いてコンピュータによってアクセス可能なセグメントテーブルを定義し、セグメントのコピーを格納してある複数の記憶装置から、記憶装置の指示を検索する。複数の記憶装置は、コンピュータネットワークに接続してある、第1、第2および第3記憶装置を含むことができる。別の態様では、コンピュータ用ファイルシステムは、コンピュータ上で実行するアプリケーションからの、要求に応答してコンピュータネットワークを通じて独立したリモート記憶装置にアクセスし、前記記憶装置上に格納してあるデータを読み出すことを可能とする。前記データのセグメントおよび対応する冗長情報を前記複数の記憶装置間でランダムに分散する。冗長情報がセグメントのコピーである場合、ファイルシステムは、要求に応答してデータを読み出し、選択したデータの各セグメント毎に、セグメントを格納する記憶装置の1つを選択する。ファイルシステムは、他のセグメントおよび冗長情報から、失われたセグメントを再構成することができる。要求データの各セグメントは、当該セグメントのために選択した記憶装置から読み出される。選択した記憶装置からデータを受信すると、データをアプリケーションに供給する。このファイルシステムでは、複数の記憶装置上の要求の負荷が実質的に均衡化するように、記憶装置を選択することができる。セグメントのための記憶装置は、要求に対応する推定時間が最も短い、セグメントのための記憶装置の推定値に応じて選択することができる。更に特定すれば、ファイルシステムは、記憶装置の1つからデータを要求し、推定時間を示すことができる。第1記憶装置が要求を拒絶した場合、ファイルシステムは別の記憶装置からデータを要求することができ、別の推定時間を示すことができる。第2記憶装置が要求を拒絶した場合、ファイルシステムは第1記憶装置からデータを要求する。各記憶装置は、推定時間以内に当該記憶装置が要求に応じられないときに、データ要求を拒絶する。記憶装置は、推定時間以内に当該記憶装置が要求に応じられるときに、要求を受け入れる。ファイルシステムは、選択した記憶装置からのデータ転送をスケジュールし、記憶装置が効率的にデータを転送するように、各セグメントを読み出すことができる。更に特定すれば、ファイルシステムは、選択した記憶装置からのデータ転送を要求し、待ち時間を示すことができる。選択した記憶装置がデータを転送する要求を拒絶した場合、他の記憶装置からデータを要求することができ、またはファイルシステムが後の時点で同じ記憶装置からデータを要求することも可能である。各記憶装置は、示された待ち時間以内に記憶装置からデータを転送することができない場合、データ転送の要求を拒絶する。記憶装置は、示された待ち時間以内に、選択した記憶装置がデータを転送することができる場合、データを転送する。別の態様では、コンピュータ用ファイルシステムは、コンピュータ上で実行するアプリケーションからの要求に応答して、コンピュータネットワークを通じて独立したリモート記憶装置にアクセスし、前記記憶装置上にデータを格納することを可能とする。ファイルシステムは、データ格納要求に応答して、データを複数のセグメントに分割する。各セグメントは、1つ以上のセグメントに基づく冗長情報と共に、複数の記憶装置間でランダムに分散される。ファイルシステムは、アプリケーションに、そのデータが格納されているか否か確証する。このファイルシステムでは、冗長データがセグメントのコピーである場合、データのランダム分散は、各セグメント毎に、ランダムにかつ他のセグメントに選択した記憶装置には独立して、少なくとも2つの記憶装置を選択することによって行なうことができる。選択した記憶装置に、各セグメント毎にデータを格納するように要求することができる。ファイルシステムは、記憶装置の部分集合を選択することができ、選択した部分集合内にある記憶装置から、セグメントを格納する記憶装置を選択することができる。また、ファイルシステムの機能性は、他のアプリケーションによって、またはアプリケーションプログラムインターフェースを通じてアクセス可能なコードライブラリによっても得ることができる。したがって、別の態様は、記憶装置の選択およびネットワーク転送のスケジューリングを含む、リードまたはライト機能を実行するように実現したクライアントまたはプロセスである。別の態様は、記憶装置の選択およびネットワーク転送のスケジューリングを含むリードまたはライト機能を実行するために、これによって実現した記憶装置またはプロセスである。別の態様は、このような機能性を実現する分散コンピュータシステムである。これらの動作は、クライアントまたは記憶装置によって、ローカル情報のみを用いて実行することができ、システムを容易に拡張可能とする。別の態様では、データを記憶するための複数の記憶装置を有する分散データ記憶システムにおいてデータを復元する。記憶装置の1つの故障が検出された場合、記憶装置上に格納したデータセグメントおよび冗長情報を複数の記憶装置間にランダムに分散する。データを復元するために、故障した記憶装置上にコピーを格納したセグメントを特定する。特定したセグメントに対応する冗長データを格納した記憶装置を特定する。冗長情報を用いて、特定したセグメントのコピーを再構成し、次いでこれらを複数の記憶装置間でランダムに分散する。このようなデータ復元は、ここに記載するファイルシステムまたは分散記憶システムのリードおよびライト機能性と組み合わせて用いることができる。別の態様では、ビデオデータストリームを組み合わせて複合ビデオデータを生成し、ビデオデータを格納するための複数の記憶装置を備えた分散システムに格納する。記憶装置上に格納したビデオデータのセグメントのコピーを、複数の記憶装置間でランダムに分散する。ビデオデータストリームを含むの記憶装置から読み出す。これらのビデオデータストリームを組み合わせて、複合ビデオデータを生成する。複合ビデオデータをセグメントに分割する。複合ビデオデータのセグメントのコピーを、複数の記憶装置間でランダムに分散する。データの読み取りおよび格納は、ここに記載する技法を用いて行なうことができる。多数のアプリケーションおよび多数の記憶装置間において、データ転送、特に、モーションビデオおよび関連するオーディオ、ならびにその他の時間的に連続するメディアのような、多数の独立した高帯域幅時間厳守データストリームの転送に対応するスケーラブルで信頼性の高い分散システムの設計において、いくつかの問題点が生ずる。このようなシステムでは、例えば、モーションビデオプログラムのオーサリングを行なうために用いるアプリケーションは、数個の記憶装置にわたって分散している可能性がある数個の異なるファイルの数個の小部分にランダムにアクセスする場合がある。数個のアプリケーションが同じデータに即時かつ同時のアクセスを要求する場合もあり、いずれのアプリケーションもいずれの時点でもいずれのメディアピースにもアクセスすることができなければならない。放送またはその他時間厳守再生に用いるシステムでは、フォールトトレランスも望ましい。最後に、システムは、新たな記憶装置や新たなアプリケーションの追加を、システムの動作中においても簡単にできるように、拡張可能かつスケーラブルでなければならない。このようなシステムに望ましいその他の特性には、故障までの平均時間が長いこと、単一点で故障しないこと、迅速にかつ動作しながらでも修理可能であること、動作を中断することなく記憶装置の故障に対する耐性があること、そして失われたデータを復元可能であることが含まれる。一実施形態において、本システムは、コンピュータネットワークによって多数の別個で独立したデータ記憶用記憶装置に接続した多数のアプリケーションを含む。データはセグメントに分割する。各セグメント毎の冗長情報を決定し、セグメントおよびその冗長情報を別々の記憶装置上に格納する。セグメントに対する記憶装置の選択はランダムまたは疑似ランダムであり、直前のセグメントのような、他のセグメントに選択した記憶装置とは独立とすることもできる。冗長情報およびランダムなデータ分散双方によって、アプリケーションおよびストレージ間において双方向にデータを効率的に転送するシステムの機能が向上し、フォールトトレランス性が高くなる。冗長情報は、セグメントのコピーとすることができる。このセグメントの複製により、システムは、要求のキューが最も短い記憶装置を選択することによる等のように、特定のアプリケーションがどの記憶装置をアクセスするのかも制御することが可能となる。その結果、負荷のランダムな変動は、記憶装置全てにほぼ均等に分散される。また、アプリケーションは、転送が効率的な場合にのみ、記憶装置にデータ転送を要求することも可能である。ネットワーク上での通信を適切にスケジュールすることにより、ネットワークの輻輳を低減することができ、ネットワークの帯域幅を一層効率的に使用することができる。各クライアントにローカル情報を使用して記憶装置との通信をスケジュールさせることによって、中央制御点を不要とすることも可能である。図1Aは、一例としてのコンピュータシステム40を示す。このコンピュータシステムは複数の記憶装置42を含む。記憶装置とは、ディスクのような不揮発性コンピュータ読み取り可能媒体を備え、その上にデータを格納することができるデバイスのことである。また、記憶装置は、高速な、典型的に不揮発性のメモリも有し、その中に媒体からのデータを読み出す。各記憶装置は、それ自体の独立したコントローラも有し、リードおよびライトアクセスを含みこれらには限定されない、媒体上に格納してあるデータへのアクセス要求に応答する。例えば、記憶装置42は、サーバコンピュータとすることができ、サーバのファイルシステム内にあるデータファイルにデータを格納する。コンピュータシステム40には任意の数の記憶装置があり得る。アプリケーション44は、コンピュータネットワーク46を通じて記憶装置への要求を介して、記憶装置42へのアクセスを要求するシステムである。記憶装置42は、コンピュータネットワーク46を通じて、アプリケーション44にデータを送出したり、あるいはアプリケーション44からのデータを受け取る。アプリケーション44は、ディジタルまたはアナログソースから受け取ったデータを捕獲し、記憶装置42上にデータを格納するシステムを含むことができる。また、アプリケーション44は、マルチメディアプログラムのオーサリング、処理または再生用システムのように、記憶装置からデータを読み出すシステムも含むことができる。他のアプリケーション44は、種々の故障回復タスクを実行することができる。また、アプリケーション44をクライアントと呼ぶ場合もある。1つ以上のカタログマネージャ49も使用可能である。カタログマネージャとは、アプリケーション44によるアクセスが可能なデータベースであり、記憶装置42上で利用可能なデータに関する情報を保持している。この実施形態は、1997年10月23日付けのPCT公開WO97/39411に示されるような放送ニュースシステムを実現するために用いることも可能である。記憶装置42に格納するデータは、セグメントに分割する。1つ以上のセグメントに基づいて、冗長情報を作成する。例えば、各セグメントをコピーすればよい。その結果、少なくとも2つの記憶装置42上に各セグメントを格納することになる。あるいは、2つ以上のセグメントの排他的ORによって、冗長情報を作成することも可能である。各セグメントは、その冗長情報とは異なる記憶装置42に格納する。セグメントおよびその冗長情報を格納する記憶装置の選択はランダムまたは疑似ランダムであり、他のデータセグメントを格納する記憶装置からは独立とすることも可能である。一実施形態では、同じ記憶装置には、2つの連続するセグメントを格納しない。セグメントおよびその冗長情報を格納する記憶装置を選択するための確率分布は、記憶装置全体にわたって均一とするとよく、容量、帯域幅、およびレイテンシというような、記憶装置の仕様は同様とする。この確率分布は、各記憶装置の仕様の関数とすることも可能である。データセグメントおよび対応する冗長情報のランダム分散により、スケーラビリティおよび信頼性双方が向上する。データセグメントのコピーのランダム分散の一例を図1Aに示す。図1Aにおいて、w,x,yおよびzで示す4つの記憶装置42が、1,2,3および4で示す4つのセグメントに分割したデータを格納する。セグメントおよびそのコピーのランダム分散の一例を示す。ここで、セグメント1および3を記憶装置wに格納し、セグメント3および2を記憶装置xに格納し、セグメント4および1を記憶装置yに格納し、セグメント2および4を記憶装置zに格納する。図1Bは、セグメントおよびその対応する冗長情報を記憶装置間でランダムに分散した一実施形態を示す。図1Bでは、w,x,yおよびzで示す4つの記憶装置42が、1,2,3および4で示す4つのセグメントに分割したデータを格納する。セグメントに対する冗長情報は、1つ以上のセグメントに基づくことができる。この例では、ここでは冗長セットと呼ぶものにおいて、2つのセグメントを用いる。冗長セットにおけるセグメントi,jの排他的ORを計算して、冗長情報Rijを得る。冗長情報Rijおよびセグメントiの排他的ORにより、セグメントjを生成する。同様に、冗長情報Rijおよびセグメントjの排他的ORにより、セグメントiを生成する。冗長セット内の各セグメントおよび冗長情報は、異なる記憶装置上に格納する。セグメントおよび冗長情報のランダム分散の一例を図1Bに示す。ここでは、セグメント3および4に対する冗長情報R34を記憶装置w上に格納し、セグメント2および3を記憶装置x上に格納し、セグメント1を記憶装置y上に格納し、セグメント4および冗長情報R12を記憶装置z上に格納する。また、フォールトトレランスの技術分野においては公知である他の多くの技法を用いて、冗長情報を作成することも可能である。冗長情報がセグメントのコピーである場合、セグメントのランダム分散は、図2Aに示すようなセグメントテーブル90またはカタログにおいて表わし、それによって追跡することができる。即ち、所与のソースから捕獲したデータまたは所与のファイルからのデータでは、行92Aで表わす各セグメントは、AおよびBと呼ぶ2つのコピーを有する。これらは列94Aで表わされている。セグメントテーブル90Aにおける列94Aは、ここでは、それぞれAリストまたはBリストと呼ぶ場合もある。あるいは、各リストは、当該リストを生成する際に用いた疑似乱数発生器に対するシード番号seednumberによって、あるいはリストまたはレコードリンクリスト、アレイ、ツリー、テーブル等のようなその他の適当なデータ構造によって表わすことができる。疑似乱数発生器を用いる場合、AおよびBリスト内のいずれの所与のセグメントに対する番号によって示される記憶装置も同一ではないことを保証するように注意しなければならない。列94Aの内容は、セグメントのコピーを格納してある記憶装置を示す。セグメントおよび2つ以上のセグメントに基づく冗長情報のランダム分散は、セグメントテーブル90Bまたは図2Bに示すようなカタログ内に表わし、これによって追跡することができる。即ち、所与のソースから捕獲したデータまたは所与のファイルからのデータでは、行92Bで表わす各セグメントは、列94B内に表わす、Aと呼ぶコピーを有する。列96Bは、対応する冗長情報が記憶されている場所を示すために用いることができる。冗長情報が格納されている場所を示すには、いくつかの方法がある。冗長セグメントがテーブル内におけるものとして識別された場合、テーブル内におけるセグメントの順序を用いて、どのセグメントが所与の冗長セグメントに対応するのか推論することができる。この場合、列96Bを省略してもよい。例えば、冗長情報は、セグメントテーブル90B内にそれ自体の行92Bを有する、別のセグメントとして扱うことも可能である。あるいは、列96Bは、セグメントが含まれる冗長セット内の最後のセグメントを示すことも可能である。この実施形態では、冗長セットの最後のセグメントの行92Bは、当該冗長セットに対する冗長情報を格納してある記憶装置を示す。図2Bに示す実施態様では、列96Bは、冗長情報に対する冗長セット内のセグメントを示す。各セグメントテーブルまたはファイルマップは、他のセグメントテーブルとは別個に格納することもできる。セグメントテーブルは、カタログとして、一緒に格納することができる。カタログは、個々のクライアントにおいて、中央データベースにあるカタログマネージャ49上に格納することができ、あるいはいくつかのデータベースまたはクライアント間で分散することも可能である。例えば、異なる種類のメディアプログラム毎に、別個のカタログを維持することも可能である。例えば、放送ニュースの編成は、スポーツニュース、天気予報、ヘッドラインニュース等に対して別個のカタログを有することができる。また、カタログは、他のデータと同様に記憶装置上に格納することも可能である。例えば、各クライアントは、乱数発生器のシードを用いて、カタログにアクセスすることができる。このようなカタログは、例えば、ネットワークブロードキャストメッセージを全てのカタログマネージャまたはクライアントに送り、個々のセグメントテーブルのカタログのコピーを得ることによって、他のクライアントが特定してデータにアクセスしたり、または復元要求を処理することができる。データセグメントにアクセスするためには、各セグメントは一意の識別子を有していなければならない。セグメントのコピーは同じ一意の識別子を有することができる。2つ以上のセグメントに基づく冗長情報はそれ自体の識別子を有する。セグメントに対する一意の識別子は、ファイルのようなソースに対する一意の識別子、およびセグメント番号の組み合わせである。ソースまたはファイルに対する一意の識別子は、例えば、システム時間、またはデータをソースから捕獲した時に判定したその他の一意の識別子によって、あるいはファイルの作成時に決定することができる。以下で説明するが、ファイルシステムは、カタログマネージャにアクセスし、各ソース毎のセグメントテーブル、またはセグメント識別子ならびにセグメントおよび冗長情報を格納してある記憶装置をリストに纏めたファイルを得ることができる。また、各記憶装置は、別個のファイルシステムも有することができ、これには、セグメント識別子、およびこれらを格納してある記憶装置上の位置のディレクトリを収容する。クライアントが実行するアプリケーションプログラムは、ソースまたはファイルの識別子、および恐らくは当該ソースまたはファイル内のある範囲のバイトを用いて、クライアントのファイルシステムからデータを要求することができる。すると、クライアントのファイルシステムは、一意のセグメント識別子を用いて、そのソースまたはファイルのセグメントテーブルを突き止め、どのセグメントにアクセスする必要があるかについて判定を行い、各セグメント毎にデータを読み出す記憶装置を選択する。再度図1Aおよび図1Bを参照する。アプリケーション44が記憶装置42の1つにおいて選択したデータセグメントへのアクセスを要求する場合、記憶装置はその要求をキュー48上に置く。キュー48は、記憶装置が維持している。アプリケーションはこのような要求を、互いにまたはあらゆる中央制御部にも独立して行なうことができ、このためシステムは容易にスケーラブルとなっている。冗長情報がセグメントのコピーである場合、要求を送る先の記憶装置の選択は、多数の記憶装置42上の多数のアプリケーション44によって加えられる負荷のランダムな変動が、記憶装置42全てにわたって統計的にかつ一層等しく均衡化されるように、制御することができる。例えば、アプリケーション44からの各要求は、最も短い要求のキューを有する記憶装置によって処理することができる。あらゆる種類の冗長情報でも、アプリケーションおよび記憶装置間のデータの転送は、ネットワークの輻輳を低減するようにスケジュールすることができる。データ要求は、2段階で実行することができる。即ち、データをディスクから記憶装置上のバッファに転送する予備リード要求と、ネットワークを通じてバッファからアプリケーションにデータを転送するネットワーク転送要求である。これら2つの異なる要求を処理するために、キュー48は、ディスクキューおよびネットワークキューを含むとよい。このランダムに分散したデータセグメントおよび対応する冗長情報の組み合わせ、ならびにネットワークを通じたデータ転送のスケジューリングにより、多数の記憶装置および多数のアプリケーション間でスケーラブルにかつ信頼性高く双方向に、多数の独立した高帯域幅データストリームを転送することができるシステムが得られる。セグメントのコピーを冗長データとして用いることにより、リードアクセスのための記憶装置の選択は、記憶装置の相対的な負荷に基づいて行なうことができ、処理能力の向上を図ることができる。次に図3を参照し、いくつかの記憶装置にランダムに分散してデータセグメントの多数のコピーを格納するプロセス例について、更に詳しく説明する。1つ以上のセグメントに基づく冗長情報を用いたプロセス例については、図24に関連付けて以下で説明する。以下の説明は、モーションビデオデータのリアルタイムキャプチャに基づくものである。この例は、オーディオのような他の時間的に連続するメディア、静止画像やテキストのような離散メディア、または知覚データのようなその他のデータをも含むがこれらには限定されない、他の形態のデータに一般化することができる。米国特許第5,640601号および第5,577,190に記載されているように、どのようにしてリアルタイムモーションビデオ情報をコンピュータデータファイル取り込むかは、一般的に周知である。この手順は、取り込んだデータをセグメントに分割し、コピーし、セグメントのコピーを記憶装置間でランダムに分散するためのステップを含むように変更することも可能である。最初に、ステップ120において、キャプチャシステムはセグメントテーブル90A図2Aを作成する。典型的に、取り込むデータストリームへのオフセットに、各画像をマップする画像インデックスも作成する。インデックス化したデータは、例えば、フィールドまたはフレームに対応することができる。インデックスは、オーディオのような別の種類のデータについては、時間期間のような他のサンプル境界を引用することができる。また、キャプチャシステムは、利用可能な記憶装置のリストも取得する。どの記憶装置が利用可能かを識別する方法については、図10ないし図12に関連付けて以下で更に詳しく説明する。ステップ121において、キャプチャシステムはデータセグメントを作成する。セグメントのサイズは、例えば、モーションビデオ情報では1/4メガバイト、1/2メガバイト、または1メガバイトとするとよい。オーディオ情報は、例えば、1/4メガバイトのようなサイズを有するセグメントに分割するとよい。セグメントサイズの格納および送信の分割に対する整合を得るためには、可能であれば、セグメントのサイズは、未圧縮または固定データレート、ディスクブロックおよびトラックサイズ、メモリバッファサイズ、ネットワークパケット例えば、64Kおよび/またはセルサイズ例えば、ATMでは53バイトの倍数に関係付けるとよい。データが未圧縮かまたは固定レートの圧縮を用いて圧縮されている場合、セグメントは、時間的なサンプル境界で分割すれば、画像インデックスとセグメントテーブルとの間に整合を得ることができる。概して言えば、セグメントサイズは、システムオーバーヘッドを低減するためには、大きくする方がよい。システムオーバーヘッドは、セグメントが小さい程増大する。一方、記憶装置の全てにデータが分散されないような格納データ量およびセグメントサイズである場合、コンボイ効果が発生する確率は高くなる。加えて、セグメントサイズが大きい程、ディスク要求およびネットワーク要求を完了するためのレイテンシも増大する。次に、ステップ122において、キャプチャシステムは、選択したセグメントを格納するために利用可能な記憶装置のリストから、少なくとも2つの記憶装置42を選択する。一方のセグメントのコピーのための記憶装置の選択は、ランダムまたは疑似ランダムである。この選択は、直前または直後のセグメントに対して行なう選択とは独立とすることも可能である。また、選択を行なった記憶装置の集合は、利用可能な記憶装置全ての部分集合とすることも可能である。1組の記憶装置の選択は、各ソースまたはファイル毎にランダムまたは疑似ランダムとすることもできる。この部分集合のサイズは、各記憶装置が少なくとも1つの異なるデータセグメントを有し、コンボイ効果の発生確度を極力低下させるようにしなければならない。即ち、データは、1組の記憶装置の数の少なくとも2倍の長さセグメントにおいてとしなければならない。部分集合のサイズも、いずれの所与の時点においても、部分集合内の2つ以上の記憶装置が故障する、即ち、二重故障が発生する確度を低下させるためには、制限しなければならない。例えば、5つの内2つの記憶装置が故障し得る確率は、100個の内2つの記憶装置が故障し得る確率よりも低く、したがって、データを分散する記憶装置の数を制限しなければならない。しかしながら、性能と部分集合のサイズとの間にはトレードオフがある。例えば、100個の記憶装置から10個の部分集合をランダムに選択して用いる場合、100個の記憶装置の内2つが故障すると、ファイルの10パーセントが悪影響を受ける。部分集合がないと、典型的に、ファイルの100パーセントが悪影響を受けることになる。二重故障、即ち、2つ以上の記憶装置が故障するという稀な確度では、データセグメントが失われる可能性がある。標準的なビデオストリームでは、1セグメントの損失のために、プログラム素材1分において1または2フレームが失われる可能性がある。所与のソースまたはファイルに対するこのような故障の頻度は、その帯域幅および記憶装置数の関数である。即ち、s=メガバイトMB単位での失われたデータのサイズn=記憶装置の初期数b=MB単位での1秒当たりの記憶装置の平均帯域幅MTBF=故障間平均時間MTTR=故障または交換までの平均時間MTDF=二重故障不良の平均時間SMTBF=故障間の全システム平均時間とすると、となる。一例として、100個の記憶装置を有し、各々50ギガバイトの容量を有するシステムでは、MTTRが1時間、MTBFが1000時間即ち6週間の場合、115年で二重故障不良が発生する確度となる。MTTRが24時間に増大すると、4.8年で二重故障不良が発生する確度となる。再び図3を参照する。2つの記憶装置を選択した後、ステップ124において現セグメントを選択した記憶装置の各々に送り格納する。これらのライト要求は、順次ではなく、非同期とすることも可能である。次に、キャプチャシステムは、ステップ126において、記憶装置がセグメントの格納完了を承認するのを待つ。捕獲しながらデータをリアルタイムで格納する場合、ステップ124におけるデータ転送は、以下で更に詳しく論ずるリード動作と同様、2段階で行なうとよい。即ち、最初にクライアントが記憶装置に、データを格納するための空きバッファを準備するように要求することができる。記憶装置は、バッファが利用可能な推定時間を回答することができる。この推定時間に到達した場合、キャプチャシステムは、記憶装置にデータを受け取るように要求することができる。次いで、記憶装置はそのバッファ内のデータを受け取り、そのバッファ内のデータをその記憶媒体に転送し、承認をキャプチャシステムに送ればよい。キャプチャシステムが承認を受け取る前に、時間切れとなった場合、セグメントを再度同じ記憶装置または異なる記憶装置に送ることもできる。他のエラーも、キャプチャシステムによって処理することができる。選択した記憶装置上での格納成功を確実にする動作を、セグメントの各コピー毎に別個のスレッドによって行なうことも可能である。データを記憶装置に格納することに成功した後、ステップ127においてチャプチャシステムはセグメントテーブル90を更新する。キャプチャが完了したとステップ128において判断した場合、プロセスは終了する。それ以外の場合、ステップ121に戻って、次のセグメントのためにプロセスを繰り返す。セグメントテーブルは、例えば、キャプチャシステムの主メモリ内に、ファイルシステムの一部として維持することができる。本例では、キャプチャシステムはセグメントテーブルおよび記憶装置の選択を管理するが、カタログマネージャ49のようなシステムの他の部分が、これらのアクティビティを調整することも同様に可能である。ステップ129において、更新したセグメントテーブルは、例えば、カタログマネージャに送ることができる。あるいは、カタログマネージャは、蓄積したシステム動作の知識を用いることによって、セグメントテーブルを生成することもでき、更に要求に応じてこのテーブルをキャプチャシステムに送ることもできる。図4は、記憶装置がどのようにして捕獲したデータセグメントまたは冗長情報を格納するのかについて更に詳細に記載したフローチャートである。ステップ140において、記憶装置は、キャプチャシステムからデータセグメントを受け取り、記憶装置のバッファにデータを格納する。記憶装置は格納のためにデータファイルを用いると仮定すると、ステップ142において記憶装置はデータファイルを開き、ステップ144においてデータファイルにデータを格納する。カタログマネージャは、セグメントを格納するロケーションを指定することも可能である。データは、既存のデータファイルに添付することができ、あるいは別個のデータファイルに格納することもできる。先に論じたように、ステップ145において、記憶装置またはカタログマネージャは、各セグメント毎の一意の識別子を用いることにより、更にセグメント識別子を記憶装置上のそのロケーションにマップするテーブルを格納することにより、セグメントを追跡することも可能である。このテーブルは、記憶装置上におけるデータファイルの抜き取りabstractionを実現することができる。記憶装置がいつデータを実際にその主ストレージに書き込むかは、他のアプリケーションで保留となっているその他のリードおよびライト要求に左右される。これら同時要求の管理については、以下で更に詳しく扱うことにする。次に、ステップ146において、ファイルを閉じることができる。ステップ148において、承認をキャプチャシステムに送ることができる。図3および図4のプロセスが完了したなら、捕獲したデータを、各セグメント毎に少なくとも2つのコピーを用いて、数個の記憶装置にランダムに分散する。多数のアプリケーションがこのデータへのアクセスを要求することができる。このアクセスを行なう態様は、恐らくランダムである。したがって、いずれの記憶装置も、多数のアプリケーションから、記憶装置上に格納してあるファイルからデータを読み出す要求およびファイルにデータを書き込む要求を多数受ける可能性があることは明白である。要求を管理するために、前述のように、要求キュー48を記憶装置42の各々によって維持する。実施形態の一例についての以下の説明では、記憶装置は2つのキュー、即ち、一方はディスクアクセス要求のため、他方はネットワーク転送要求のために維持する。これらのディスクおよびネットワークキューの一実施形態については、以下で図19に関連付けて更に詳しく説明する。クライアント44上で実行するアプリケーションプログラムがデータを要求した場合、各データセグメントを少なくとも2つの記憶装置上に格納する際に、要求を満たすように記憶装置を選択する。要求データに対するセグメントテーブル90をこの目的のために用いる。記憶装置の選択は、データを要求するアプリケーションプログラムによって、アプリケーションプログラムを実行するクライアントのファイルシステムによって、記憶装置間の調整によって、またはカタログマネージャのような別のアプリケーションによって行なうことができる。選択はランダムでも疑似ランダムでもよく、あるいは最低使用頻度アルゴリズムに基づいて、または記憶装置のキューの相対的な長さに基づいて行なうことも可能である。利用可能な記憶装置上のキューの相対的長さに基づいて記憶装置を選択することによって、多数のアプリケーションの負荷を記憶装置の集合全体に一層等しく分散することが可能となる。このような選択については、図16ないし図18に関連付けて以下で更に詳しく説明する。これより、特定的な一実施形態の詳細について更に説明する。この目的のためには、記憶装置42は、サーバまたは独立制御記憶装置として実現するとよく、アプリケーション44をクライアントと呼ぶことにする。クライアントは種々のタスクを実行するアプリケーションプログラムを実行することができる。サーバまたはクライアントを実現するのに適したコンピュータシステムは、典型的に、主ユニットを含み、これは通常バスまたはスイッチのような相互接続機構を介してメモリシステムに接続するプロセッサを含む。サーバおよびクライアント双方は、これらをコンピュータネットワークに接続するネットワークインターフェースも有する。ネットワークインターフェースは、フォールトトレランスに対応するために冗長化するとよい。また、クライアントは、ディスプレイのような出力デバイスや、キーボードのような入力デバイスを有することができる。入力デバイスおよび出力デバイスは双方とも、相互接続機構を介して、プロセッサおよびメモリシステムに接続することができる。尚、1つ以上の出力デバイスをクライアントシステムに接続してもよいことは理解されよう。出力デバイスの例には、陰極線管CRTディスプレイ、液晶ディスプレイLCD、プリンタ、モデムまたはネットワークインターフェースのような通信デバイス、ならびにビデオおよびオーディオ出力が含まれる。また、1つ以上の入力デバイスをクライアントシステムに接続してもよいことも理解されよう。入力デバイスの例には、キーボード、キーパッド、トラックボール、マウス、ペンおよびタブレット、モデムまたはネットワークインターフェースのような通信デバイス、ビデオおよびオーディオディジタイザ、ならびにスキャナが含まれる。尚、本発明は、コンピュータシステムと組み合わせて用いる特定の入力デバイスにも出力デバイスにも、更にはここに記載されるものにも限定されないことは理解されよう。コンピュータシステムは、CおよびCプログラミング言語のような、高級コンピュータプログラミング言語を用いてプログラム可能な汎用コンピュータシステムとすることができる。また、コンピュータシステムは、特別にプログラムした特殊目的ハードウエアとすることもできる。汎用コンピュータシステムでは、プロセッサは典型的に市販のプロセッサであり、その例には、Intelインテル社から入手可能な、MMX技術を用いたPentiumIIのようなx86シリーズプロセッサや、AMDやCyrixから入手可能な同様のデバイス、Motorolaから入手可能な680X0シリーズマイクロプロセッサ、DigitalEquipmentCorporationディジタルエクイップメント社から入手可能なAlphaシリーズ、およびIBMから入手可能なPowerPCプロセッサがある。多くのその他のプロセッサも利用可能である。このようなマイクロプロセッサは、オペレーティングシステムと呼ばれるプログラムを実行することができ、その例には、WindowsNT、Windows95、UNIX登録商標、IRIX、Solaris、DOS、VMS、VxWorks、OS/Warp、MacOSSystem7およびOS8オペレーティングシステムがある。オペレーティングシステムは、他のコンピュータプログラムの実行を制御し、スケジューリング、デバッギング、入出力制御、コンパイル、ストレージ割り当て、データ管理およびメモリ管理、ならびに通信制御および関連サービスを行なう。プロセッサおよびオペレーティングシステムは、高級プログラミング言語でアプリケーションプログラムを各ためのコンピュータプラットフォームを定義する。各サーバは、大量の主メモリ、例えば、32メガバイトよりも遥かに多いメモリや、例えば、数ギガバイトのディスク容量を有する安価なコンピュータを用いて実現することができる。ディスクは、1つ以上の単体ディスク、または独立したディスクの冗長アレイRAID、あるいはその組み合わせとすることができる。例えば、サーバは、WindowsNTまたはVxWorksのようなリアルタイムオペレーティングシステムを有する、Pentium登録商標または486マイクロプロセッサを用いたシステムとすることができる。オーサリングシステム、キャプチャシステム、および再生システムは、この主の製品のために当技術分野において現在用いられているプラットフォームを用いて実現することができる。例えば、マサチューセッツ州TewksburyのAvidTechnology,Inc.アビッドテクノロジ社からのMEDIACOMPOSERは、PowerPCマイクロプロセッサおよびMacOSSystem7オペレーティングシステムを有するAppleComputer,Inc.アップルコンピュータ社からのPowerMacintoshコンピュータを用いている。WindowsNTオペレーティングシステムを備え、IntelからのMMX技術を用いたPentiumIIプロセッサに基づくシステムも使用可能である。再生システムの例には、コロラド州BoulderのPlutoTechnologiesInternationalInc.プルートテクノロジーズインターナショナル社からのSPACEシステム、またはMachintoshプラットフォームを用いたAvidTechnologyからのAIRPLAYシステムが含まれる。カタログマネージャは、Informixデータベースのような、適当なデータベースシステムに対応するいずれかのプラットフォームを用いて実現することができる。同様に、システム内で利用可能なデータの種類を追跡するアセットマネージャも、このようなデータベースを用いて実現することができる。コンピュータにおけるメモリシステムは、典型的に、コンピュータ読み取り可能および書き込み可能不揮発性記録媒体を含み、その例には、磁気ディスク、光ディスク、フラッシュメモリおよびテープがある。ディスクは、フロップディスクまたはCD-ROMのようなリムーバブルでも、ハードドライブのように固定でもよい。ディスクは多数のトラックを有し、その中に、典型的に二進形態、即ち、一連の1および0として解釈した形態で、信号を格納する。このような信号は、マイクロプロセッサが実行するアプリケーションプログラム、またはディスク上に格納してありアプリケーションプログラムが処理する情報を定義することができる。典型的に、動作において、プロセッサは不揮発性記録媒体から集積回路メモリ素子にデータを読み出す。集積回路メモリ素子は、典型的に、ダイナミックランダムアクセスメモリDRAMまたはスタティックメモリSRAMのような、揮発性ランダムアクセスメモリである。集積回路メモリ素子は、ディスクよりも、プロセッサによる情報への速いアクセスを可能とする。プロセッサは通常集積回路メモリ内でデータを操作し、次いで処理が完了すると、データをディスクにコピーする。ディスクと集積回路メモリ素子との間のデータ移動を管理する機構には、様々なものが公知であり、本発明はそれに限定されるものではない。また、本発明は特定のメモリシステムにも限定される訳ではないことも理解されよう。本発明は、特定のコンピュータプラットフォーム、特定のプロセッサ、特定の高級プログラム言語にも限定される訳ではないことは理解されよう。加えて、コンピュータシステムは、マイクロプロセッサコンピュータシステムとしてもよく、あるいはコンピュータネットワークを通じて接続した多数のコンピュータを含むことも可能である。前述のように、各記憶装置42は、サーバを通じてアクセスされた場合、各アプリケーション44はファイルシステムを有することができる。ファイルシステムは、典型的に、オペレーティングシステムの一部であり、データのファイルを維持する。ファイルは、有名論理構造であり、ファイルシステムによって定義されかつ実現され、データの論理レコードの名称およびシーケンスを、物理的なストレージメディア上のロケーションにマップする。ファイルシステムは、データの物理的ロケーションをアプリケーションプログラムからマスクするが、ファイルシステムは通常隣接するブロック内にある1つのファイルのデータを物理的ストレージメディアに格納しようとする。ファイルは、種々のレコード型に特定して対応することができ、あるいは未定義として、アプリケーションプログラムに解釈または制御させることも可能である。ファイルは、その名称またはその他の識別子でアプリケーションプログラムによって呼ばれ、オペレーティングシステムが定義するコマンドを用いて、ファイルシステムを通じてアクセスされる。オペレーティングシステムは、ファイルを作成し、ファイルを開き、ファイルに書き込み、ファイルを読み取り、ファイルを閉じるための基本的ファイル動作を行なう。これらの動作は、ファイルシステムに応じて、同期でも非同期でもよい。ここで記載する場合、ファイルまたはソースのデータはセグメント単位で格納し、そのコピーまたはその他の形態の冗長情報を多数の記憶装置の間でランダムに分散する。殆どのファイルシステムについて概して言えば、ファイルを作成するためには、オペレーティングシステムは最初に、ファイルシステムが制御するストレージ内において、空間を特定する。次に、新たなファイルに対するエントリをカタログ内に作成する。カタログは、利用可能なファイルの名称およびファイルシステム内におけるそれらのロケーションを示すエントリを含む。ファイルの作成は、一定の利用可能な空間をファイルに割り当てることを含むこともある。一実施形態では、ファイルに対してセグメントテーブルを作成することができる。ファイルを開くと、典型的に、ハンドルがアプリケーションプログラムに戻され、これを用いてそのファイルにアクセスする。ファイルを閉じると、ハンドルは無効となる。ファイルシステムはハンドルを用いて、ファイルに対するセグメントテーブルを識別する。ファイルにデータを書き込むために、アプリケーションプログラムはコマンドをオペレーティングシステムに発行し、オペレーティングシステムは、ファイル名、ハンドルまたはその他の記述子のようなファイルのインディケータ、およびファイルに書き込む情報の双方を指定する。概して言えば、ファイルのインディケータが与えられると、オペレーティングシステムはヂレクトリを探索して、ファイルのロケーションを見つけ出す。データは、ファイル内の既知のロケーションまたはファイルの終端に書き込むことができる。ディレクトリエントリは、ライトポインタと呼ばれる、ポインタを現在のファイル終端に格納することができる。このポインタを用いて、ストレージの次に利用可能なブロックの物理的ロケーションを計算し、そのブロックに情報を書き込むことができる。ライトポインタをディレクトリ内において更新し、新たなファイル終端を示すことができる。一実施形態では、ライト動作は、ファイルのセグメントのコピーを記憶装置間でランダムに分散し、ファイルに対するセグメントテーブルを更新する。また、ライト動作も、セグメントおよび対応する冗長情報を異なる記憶装置に格納することができる。ファイルからデータを読み出すためには、アプリケーションプログラムは、オペレーティングシステムにコマンドを発行し、ファイルのインディケータ、およびアプリケーションに割り当てられているメモリロケーションの内リードデータが位置するメモリロケーションを指定する。概して言えば、ファイルのインディケータが与えられると、オペレーティングシステムはそのディレクトリを探索して関連するエントリを求める。アプリケーションプログラムは、用いるファイルの開始からのオフセットを指定することができ、あるいはシーケンシャルファイルシステムでは、ディレクトリは次に読み取るデータブロックへのポインタを与えることができる。一実施形態では、記憶装置の選択やデータ転送のスケジューリングは、クライアントのファイルシステムのリード動作の一部として実現する。クライアントは、既定のアプリケーションプログラミングインターフェースAPIと共にファイルシステムまたは特殊コードライブラリを用いて、ファイルの一部に対する要求を、選択した記憶装置からのデータセグメントに対する要求に変換する。記憶装置は、クライアントのファイルシステムとは完全に分離した、それ自体のファイルシステムを有することも可能である。記憶装置上のセグメントは全て、例えば、記憶装置の単一ファイル内に格納することができる。あるいは、クライアントファイルシステムは、ネットワーク上で記憶装置を生ストレージrawstrageとして用い、カタログマネージャおよびセグメントテーブルを用いてファイルの抜き取りを実現することも可能である。ファイルのセグメントテーブルは、各セグメントに選択した記憶装置上における当該セグメントのロケーションも示すことができる。ファイルシステムを用いる主要な利点の1つは、アプリケーションプログラムにとっては、ファイルは、物理的な記憶媒体やオペレーティングシステムがデータを格納するために用いる当該媒体上のロケーションについて何の懸念もなく、作成し、開き、書き込み、読み出し、そして閉じることができる論理構造であるという点にある。ネットワークファイルシステムでは、ファイルシステムは、種々の記憶装置からの指定ファイルからのデータ要求を管理し、アプリケーションプログラムは、データが格納されている物理的ストレージまたはコンピュータネットワークに関する詳細を知る必要は全くない。記憶装置がそれ自体の独立したファイルシステムを有する場合、クライアントファイルシステムも、記憶装置の記憶機構の詳細を知る必要はない。記憶装置は、例えば、WindowsNTファイルシステムと関連するファイルシステム、またはVxWorksのようなリアルタイムオペレーティングシステムのファイルシステム、または非同期動作を許すファイルシステムを用いることができる。記憶装置は、クライアント、およびオプションとしてコンピュータネットワークを用いてカタログマネージャと相互接続されている。コンピュータネットワークは、1組の通信チャネルであり、互いに通信可能な1組のコンピュータデバイスまたはノードを相互接続する。ノードは、クライアントのようなコンピュータ、記憶装置およびカタログマネージャ、またはスイッチ、ルータ、ゲートウェイおよびその他のネットワークデバイスのような様々な種類の通信デバイスとすることができる。通信チャネルは、光ファイバ、同軸ケーブル、銅の撚り線対、衛星リンク、ディジタルマイクロ波無線等を含む種々の伝送媒体を用いることができる。コンピュータネットワークは、ネットワークによるノードの接続の幾何学的構成であるトポロジを有する。トポロジの種類には、二点間接続、線形バス、環状接続、星形結線、および多重接続ネットワークが含まれる。ネットワークは、これら基本的なトポロジの様々な組み合わせを用いることができる。トポロジは、物理的な設置に応じて変化する可能性がある。各ノード、即ち、クライアントまたは記憶装置を直接同じスイッチに接続する、遮断のないスイッチに基づくネットワークを用いることができる。実施態様によっては、多数のクライアントおよび記憶装置を物理的ループまたはサブネットワークに接続し、これらを切り替え構造switchingfabricに相互接続することができる。また、本システムは、多数のスイッチを用いて接続することも可能である。また、ネットワークは、プロトコル、メッセージフォーマット、および通信ハードウエアおよびソフトウエアがネットワーク上のデバイス間で通信を行なうためのその他の規格を規定するネットワークアーキテクチャも有する。一般的に用いられるネットワークアーキテクチャは、OpenSystemsInterconnectionreferencemodelオープンシステムズ相互接続基準モデルとして知られている、InternationalStandardsOrganizationseven-layermodel国際標準機構7レイヤモデルである。7レイヤとは、アプリケーション、プレゼンテーション、セッション、トランスポート、ネットワーク、リンクおよび物理レイヤである。各機械は、これらの層の1つにおいて、同じ通信プロトコルを用いて他のあらゆる機械と通信を行なう。一実施形態では、リンク層は、好ましくは、パッケージがクライアントに受信される順序を保持し、無限のレイテンシの潜在的可能性を回避するようにしたものである。したがって、適当なリンクレイヤプロトコルはOC3、OC12、または更に高い帯域幅ネットワークのような、非同期転送モードATMネットワークを含む。AAL15モードで動作するATMシステムが好ましい。100Txないしギガビット1,000Txの容量を有するイーサネットネットワークも、ソースから宛先に効率的なパケット伝送を提供する。適当なイーサネットネットワークプラットフォームは、例えば、カリフォルニア州、SantaClaraの3Comから入手可能である。ATMシステムの一例は、ペンシルベニア州、WarrendaleのForeSystemsフォアシステムズ社、またはマサチューセッツ州、ConcordのGiga-Netギガネット社から入手可能である。FibreChannel、FDDI、またはHIPPIネットワークも使用可能である。異なるクライアント、カタログマネージャおよび記憶装置は全て、リンクレイヤプロトコルを用いて通信することができる。また、このレイヤにおける通信は、各レイヤのプロトコル毎にカプセル化したデータを処理するために実行するメモリコピーによるオーバーヘッドを低減する。マサチューセッツ州、TyngsboroのPolybusSystemsCorporationポリバスシステムズ社からの帯域幅分散ネットワークファイルシステムも使用可能である。これまで一実施形態のコンピュータプラットフォームについて説明してきたが、以下では一実施形態の動作および詳細について更に追加説明を行なう。一実施形態では、記憶装置および当該記憶装置上に格納してあるデータを維持するためのプロセスがある。例えば、故障回復プロシージャは、ファイルの追加コピーの作成を含む場合がある。加えて、ファイルの可用性、即ち、ファイルに対するアクセスの信頼性の必要性に基づいて、ファイルを削除または追加することも可能である。最後に、保守手順によっては、記憶装置上のファイル削除、別の記憶装置へのファイルコピー、およびシステムからの記憶装置の除去を伴う場合もある。また、ファイルは、保管したり、あるいはシステムからアーカイブシステムに移動させることも可能である。これらのプロセスについて、図5ない図9に関連付けて更に詳しく説明する。このようなデータ管理プロセスは、カタログマネージャ、別の記憶装置、またはクライアントによって行なうことができる。これらのプロセスをクライアントが行なう場合でも、カタログマネージャまたは記憶装置のリソースを占有することはなく、クライアントのデータ要求に対して回答するというような、他の重要性が高いタスクに用いることができる。図5は、記憶装置が利用不能となり、その故障を検出した後にどのようにして故障回復を行なうことができるかについて、更に詳細に記載したフローチャートである。このような故障を検出する1つの方法について、図10ないし図12に関連付けて以下で更に詳しく説明する。要求に対して繰り返し応答し損なうことを、故障を示すために用いることもできる。このプロセスの成功は、システムないにある各セグメントのコピー数、または冗長集合内のセグメント数に依存する。コピー数をNとすると、N-1個の記憶装置が故障しても、システムはデータ損失なく動作する。ある記憶装置が故障した後、新たな記憶装置を代わりに設置し、失われたデータを再現するか、または失われたデータを再度作成し、残りの記憶装置全てに分配することができる。図5は、冗長データがセグメントのコピーである場合のプロセスを記載する。以下で説明する図25は、冗長情報が2つ以上のセグメントに基づく場合のプロセスを示す。ステップ200において、データの追加コピーを、最初にデータ、例えば、再現すべきファイルまたはソースを選択することによって行なうことができる。再現するファイルは、優先順序によって選択することができ、更に自動的または手作業のいずれかで選択することも可能である。この種の復元は、いくつかのファイルからのデータを再構成し、他のファイルからのデータが復元される前に利用可能とすることができる。ステップ202において、ソースのセグメントテーブルを用いて、失われたデータセグメント、即ち、失われた記憶装置上に格納してあったデータを特定する。ステップ204において、典型的にデータを最初に捕獲するときと同様に、故障した記憶装置と交換するために新たな記憶装置が利用できない場合、失われたセグメント毎に新たな記憶装置を選択する。あるいは、交換記憶装置を選択する。ステップ206において、失われたセグメントのコピーを代替記憶装置から読み出し、選択した記憶装置に格納する。ステップ204ないし208のファイル動作は、非同期とし、各セグメント毎に別個のスレッドによって実行することができる。このような動作は、このネットワークアーキテクチャに備えた、多数対多数のリード/ライト機能を利用する。次に、ステップ208において、コピー動作の完了成功次に、ファイルのセグメントテーブルを更新する。プロセスが完了した場合、カタログマネージャがセグメントテーブルを維持するのであれば、ステップ209において、新たなセグメントテーブルを用いてカタログマネージャを更新することができる。基のセグメントテーブルが、疑似ランダムシーケンス発生器へのシードによって表わされる場合、実際のテーブルを作成し変更しなければならない場合がある。このプロセスを用いた未ロードシステムに対する再入力repopulationの速度および冗長性復元は、次の式で定義する。ここで、s=メガバイト単位MBで示す、失われたデータのサイズn=記憶装置の初期数b=MB/秒で表わす、記憶装置の平均帯域幅d=MB/秒で表わす、ユーザデマンドの負荷例えば、10個の記憶装置の内1つが故障したために50ギガバイトのストレージへのアクセスが失われた場合、n=10記憶装置、単位帯域幅b=10MB/秒とすると、n-1=9およびb/2=5となる。したがって、他に負荷がなければ、復元には約20分を要する。この絶対復元速度は、通常、クライアントへの変動再生負荷の逆数として減少する。例えば、50負荷の場合、入力時間は200増大する。呼び出されると、再分散タスクは速いレートで実行することができ、多元記憶装置チェッカボードを多数の記憶装置に切り替えるが、再入力アクティビティは適宜クライアントファイルサービス要求にしたがって行われる。実際の影響は、故障した記憶装置によって記憶装置の全帯域幅に多少の損失が出る程度である。復元のためのファイル選択の優先順位を決定することにより、最も重要なファイルを真っ先に復元することを保証する。図6は、どのようにしてデータの追加コピーを作成することができるかについて更に詳細に記載したフローチャートである。このプロセスを呼び出すと、ミッションクリティカルmissioncriticalな即ち要求の多いデータの追加データコピーが得られるようになる。新たなコピーに日付スタンプを与え、いつそのコピーを削除できるかを示すこともできる。選択したデータが与えられると、ステップ210において、データのセグメントを選択する。ステップ212において、各セグメントには、新たな記憶装置がランダムに割り当てられ、各記憶装置が所与のセグメントのコピーを多くても1つ有することを保証する。次に、ステップ214において、選択した記憶装置上にセグメントを格納する。このセグメントの格納完了に成功した場合、ステップ216においてデータのセグメントテーブルを更新する。データのセグメント全てを未だコピーしていないとステップ217で判定した場合、プロセスを繰り返し、ステップ210に戻って、次のデータセグメントを選択する。プロセスが完了した場合、カタログマネージャがセグメントテーブルを有しているのであれば、ステップ218において、新たなセグメントテーブルによってカタログマネージャを更新することができる。このプロセスはセグメント全体にわたって連続的であるが、各セグメントは、別個のスレッドを用いて処理することができ、ステップ214のファイル動作は非同期とすることもできる。このような処理によって、コピーを素早く作成することを保証する。この手順により、疑似乱数発生器のシードを用いて、なおもセグメントテーブルを表わすことができる。図7は、データのコピーをどのようにして削除するのかについて詳細に記載したフローチャートである。このプロセスは、例えば、データがもはやさほど要求されなくなった場合に呼び出すことができる。例えば、コピー上の日付スタンプを用いて、いつデータを削除するかを示すことができる。所与のデータに対して図2に示したセグメントテーブルを仮定すると、ステップ220において、コピー集合の1つ、即ち、テーブル内の1列を選択する。ステップ222において、列内の各セグメントを削除する。ステップ222において各セグメント毎に削除動作完了に成功した場合、ステップ224においてセグメントテーブルを更新する。ステップ222および224は、セグメント毎に繰り返す。このプロセスは、セグメント全体を通じて連続的でもよく、または各セグメントを別個のスレッドによって処理することも可能である。プロセスが完了した場合、カタログマネージャがセグメントテーブルを維持しているのであれば、ステップ226において、カタログマネージャを新たなセグメントテーブルを用いて更新することができる。図8は、さもなければアクティブの記憶装置をどのようにしてシステムから除去するのかについて記載したフローチャートである。例えば、そのファイルシステムを用いて、そのファイルのリストを識別することによって、記憶装置上で利用可能なデータを識別する。最初に、記憶装置を、新たなセグメントを書き込むために利用可能とする。このステップは、例えば、カタログマネージャに通知することによって、または同報通信メッセージを全クライアントに送ることによって実行することができる。各ファイルのセグメントを他の記憶装置上に再分散し、その後に記憶装置をシステムから除去する。このファイルリストが与えられると、ステップ230において、処理する次のファイルを選択する。ステップ232において、セグメントテーブルを用いて、冗長情報を収容するセグメントを含む、記憶装置上のこのファイルのセグメント全てを識別する。ステップ234において、次に処理するセグメントを選択する。ステップ235において、残りの記憶装置からのランダム選択により、選択したセグメントに新たな記憶装置を割り当て、所与のセグメントのコピーを1つよりも多く有する記憶装置がないことを保証する。次に、ステップ236において、新たに選択した記憶装置にデータを書き込む。このライト動作の完了に成功した場合、ステップ237において、セグメントテーブルを更新する。所与のファイルのセグメント全てを再分散したとステップ238において判定した場合、ステップ239において、セグメントテーブルを適宜カタログマネージャに送ることができる。セグメントは、順次または非同期ファイル処理を用いる別個のスレッドによって処理することができる。カタログマネージャを更新した後に、古い記憶装置からセグメントを削除することができる。ステップ240において次のファイルがあると判定されたなら、処理は次のファイルに進む。全てのファイルを再分散し終えた場合、このプロセスは完了し、記憶装置をシステムから除去することができる。図9は、保管またはバックアップのためにデータをどのようにコピーすることができるかについて記載するフローチャートである。このプロセスは、利用可能な記憶装置からのデータの各セグメントの1つのコピーを、アーカイブ記憶媒体のようなバックアップ記憶システムにコピーすることを伴う。各コピーセットおよびあらゆる冗長情報も、全ての記憶ユニットから削除することができる。このプロセスは、ステップ250において、コピーセット、例えば、Aリストをセグメントテーブルのコラムから選択することによって実行することができる。あるいは、前述のように他のアプリケーションによって適用される技法を用いて、各セグメントを順に読み出し、各セグメント毎に記憶装置の選択を行なうことも可能である。ステップ252において、選択したコピーセットからの各セグメントは、その記憶装置から読み出し、記憶媒体上に格納する。各セグメントを記憶媒体にコピーするのに成功したなら、ステップ254において、全ての残りのコピーセットまたはあらゆる冗長情報からの残りのセグメント全てを、記憶装置から削除することができる。セグメントは、順次処理することも、非同期ファイル処理を用いて別個のスレッドによって処理することも可能である。次に、ステップ256において、カタログマネージャを更新することができる。図10ないし図12に関連付けて、記憶装置を監視してどのようにして可用性を判断し、故障を検出するかについてこれより説明する。記憶装置が利用可能か否かについて判定するには、いくつかの方法があり、記憶装置をポールすること、記憶装置からの例外を処理すること、または記憶装置が周期的にアプリケーションまたは複数のアプリケーションにその可用性について通知することを含む。一実施形態では、カタログマネージャ49またはその他のいずれかのクライアントに加えて、双方がシステム内においてどの記憶装置42がアクティブであるか監視し、各ファイル毎にセグメントテーブルのカタログを維持することができる。記憶装置を監視する方法の1つを図10ないし図12に示す。システム上で利用可能な各記憶装置は、カタログマネージャにそれが利用可能であることを周期的に知らせるプロセスを確立する。即ち、このプロセスは、記憶装置が周期的にシステムタイマからのタイマ割込またはイベントに応答してカウンタを増分する、第1段階60を有する状態機械と見なすことができる。このカウンタが、100ミリ秒というような、ある所定量に到達した場合、別の状態62への遷移が発生する。状態62への遷移において、ピングと呼ぶ信号を記憶装置がカタログマネージャに送る。この信号は、1ATMセル程の小さいなメッセージとし、送信するために多くの帯域幅を用いないことが好ましい。この信号は、記憶装置の識別子、ならびに可能性として容量、効率および/または記憶装置の帯域幅可用性というような他の情報も含むことができる。次のタイマ割込またはイベント時に、カウンタをリセットし、状態60に戻る遷移が行われる。カタログマネージャは、利用可能な記憶装置を追跡するとよい。この目的のために、カタログマネージャは記憶装置のリスト70を用いることができる。その一例を図11に示す。この記憶装置リストは、72に示す記憶装置に識別子でインデックスしたテーブルとして実施することができる。記憶装置が存在する即ち利用可能な場合、帯域幅、メモリ容量、または記憶装置のパワーに関するその他の情報を、列74において得られるようにする。列76に示すように、記憶装置からの最後のピング以来のカウントもある。このカウントが、300ミリ秒というような所定量を超過した場合、記憶装置は使用不能と見なされ、続いて前述のような故障回復手順を行なうことができる。記憶装置のリスト70を維持する追跡プロセスの一例について、図12に関連付けてこれより詳細に説明する。図12は、カタログマネージャがどの記憶装置が利用可能かについて判定を行なう際に実行することができる追跡プロセスを記載した状態機械である。これらの状態機械の1つは、カタログマネージャ上のプロセスとして、各記憶装置毎に確立することも可能である。第1状態80は、待ち状態であり、記憶装置のリスト70内の記憶装置に対するカウント値76を、周期的なタイマ割込に応答して、当該記憶装置に対して増分する。記憶装置からピングを受信した場合、状態82への遷移が起こる。状態82において、リスト70内のこの記憶装置の存在を検証する。記憶装置がリスト70内にある場合、この記憶装置のカウント76をリセットし、この記憶装置に関する情報を更新することができ、そして状態80に戻る遷移が行われる。記憶装置がリストにない場合、これをリストに追加し、カウントをリセットし、状態80に戻る遷移が行われる。所与の増分の後、記憶装置のカウントが、300ミリ秒というような所定のタイムアウト値よりも大きくなった場合、故障回復手順を実行する。即ち、リスト70から記憶装置を除去し、状態84において、フォールトトレラント手順を実行する。記憶装置からのピングをカタログマネージャが受信し、その記憶装置が対応する追跡プロセスを有していない場合、カタログマネージャは記憶装置をリストに追加し、この記憶装置に対して追跡プロセスを作成する。カタログマネージャ49を有することに加えて、システムは、アセットマネージャと呼ぶデータベースも含むことができる。アセットマネージャは、各ファイル毎のインデックスのように、システムにおいて利用可能なメディアソースに関する種々の情報を格納する。カタログマネージャおよびアセットマネージャは組み合わせることも可能である。アセットマネージャに格納する有用な一種の情報は、図13に示すテーブルであり、これは、ソース識別子および、米国特許第5,267,351号に示されるような、当該ソース内における範囲に基づいて、等価データファイルを関係付けるものである。ソース識別子は、データの原ソースの指示であり、アナログソースとすることができる。これに対して実際に利用可能なデータは、記憶装置上に格納してある当該ソースのディジタル化したコピーである。即ち、テーブルは、ソース識別子のエントリ、ソース識別子102内の範囲、および、データファイルのリストのような、当該ソースからの等価なデータの指示104を有する。リスト104は、ソースに対するデータファイルの1つを特定し次いで当該ファイルに対するセグメントテーブルにアクセスし、データのセグメントが種々の記憶装置上のどこに分散されたかについて判定するために用いることができる。図2Aのセグメントテーブル90Aは、106および108に示すように、図13のこのリストに組み込むこともできる。図2Bのセグメントテーブル90Bも同様に、リスト104に組み込むことができる。このようなデータ間の等価性は、あらゆるアプリケーションプログラムによっても維持することができる。カタログマネージャは、種々の記憶装置上にどのようにデータを分散したかを監視するデータベースであるので、フォールトトレランスおよび可用性を高め、ボトルネックのなるその確度を低下するように設計して当然である。したがって、カタログマネージャは、従来の分散データベース管理技法を用いて実現する。また、MrathonTechonologiesマラソンテクノロジ社、TandemComputersタンデムコンピュータズ社、Stratusストラタス、およびTexasMicro,Inc.テキサスマイクロ社からのもののような、非常に可用性が高い機械を用いて、カタログマネージャを実現することも可能である。また、別個のクライアントアプリケーションが用いるカタログマネージャもいくつかあり得る。あるいは、各クライアントアプリケーションは、標準的な技法を用いて多数のデータコピー間の一貫性を維持し、それ自体のカタログのコピーをローカルに維持することも可能である。このように、カタログマネージャは、故障の中心点ではない。また、クライアントは、それ自体のカタログマネージャとして作用することも可能である。また、カタログは、データとして扱うことも可能であり、そのセグメントおよび冗長データを記憶装置間でランダムに分散する。各クライアントは、各カタログ毎に、セグメントテーブル、または、セグメントテーブルを表わす乱数発生器のシードを有することもできる。以上、どのようにしてデータを捕獲し記憶装置に格納することができるか、そしてどのようにして記憶装置上のデータ格納を管理することができるかについて説明したので、これよりオーサリングおよび再生を行なうクライアントアプリケーションについて、図4および図15に関連付けて更に詳しく説明する。マルチメディアデータのオーサリング、処理および表示を行なうには、いくつかの種類のシステムを用いることができる。これらのシステムは、データを修正し、異なるデータの組み合わせを定義し、新たなデータを作成し、データをユーザに表示する際に用いることができる。これらの種類のシステムを実現する種々の技法が、当技術分野では公知である。マルチメディアオーサリング、処理および再生システムは、典型的に、マルチメディア合成marutimediacompositionを表わすデータ構造を有する。このデータ構造は、最終的に、一意の識別子またはファイル名のようなソース素材の識別子、そして可能性としてクリップを定義するソース素材内の時間的範囲を用いて、ディジタル化ビデオまたはオーディオのような、ソース素材のクリップを引用する。識別子は、等価データファイルのリストと共に用いて、ソース素材のファイル名を特定するものであれば、いずれの形式でもよい。インデックスを用いて、ソース内の時間範囲を、対応するファイル内のバイト範囲に変換することも可能である。このバイト範囲を、ファイルのセグメントテーブルと共に用い、必要とされるセグメントおよびデータを検索する記憶装置を特定することができる。図14は、マルチメディア合成の一部を表わすために用いることができる、リスト構造の一例を示す。図14に示す例では、数個のクリップ260があり、その各々が、262で示す、ソース識別子への引用、および264で示すように、ソース内の範囲を含む。一般に、時間合成において、メディアの各トラック毎に、このようなリストがあるとよい。合成を表わすために使用可能な種々のデータ構造がある。リスト構造に加えて、1993年10月28日に公開されたPCT公開出願WO93/21636には、更に複雑な構造が示されている。他のマルチメディア合成の代表例には、AvidTechnology,Inc.からのOpenMediaFrameworkInterchangeSpecification、MultimediaTaskForceからのAdvancedAuthoringFormatAAF、MicrosoftからのDirectShow、およびPCT公開wo96/26600に示されているような、AppleComputerからのBentoが含まれる。先に述べ、マルチメディアプログラムを表わすために用いられるデータ構造は、多数の形式のデータを用い、これらを同期させて表示することができる。最も一般的な例は、モーションビデオ多くの場合、2つ以上のストリーム即ちトラックおよび付随するオーディオ多くの場合、4つ以上のストリーム即ちトラックを含む、テレビジョン番組または映画の製作である。図15に示すように、クライアントコンピュータは、主メモリ内に割り当てたメモリバッファ294の対応するセット290を有することができる。各バッファは、直列化バッファとして実現することができる。言い換えると、クライアントは、記憶装置から受信したデータを、これら独立してアクセス可能な部分に挿入し、バッファ集合から順次読み出す。要求を数個の記憶装置に送ることができ、データは同じストリームに対して異なる時点で受信することができるので、バッファは、書き込み時には、連続的に満たされないこともあるが、読み出しは順次行われ表示される。図15では、バッファ内の充填は、バッファ内におけるデータの存在によって示す。293および295で示すように、空のバッファはいずれも、いずれの時点でも充填することができる。しかしながら、各バッファ集合は、現リードロケーション291を有し、ここからデータを読み出し、かつ297に示すように、時間の進展に連れて前進する。これらのバッファの部分集合292,296を各データストリームに割り当てることも可能である。バッファ集合内の各バッファは、固定数のデータセグメントに対応するサイズを有し、セグメントサイズとは、記憶装置上に格納したセグメントのサイズである。オーディオデータストリーム292当たり数個、例えば、4つのオーディオバッファがあるとした場合、各バッファは、数個、例えば、4つのセグメントを収容することができる。同様に、各ビデオストリーム296は、数個、例えば、4つのバッファを有することができ、その各々は、数個、例えば、4つのセグメントを収容する。バッファの各々は、独立してアクセス可能な部分298に分割することができる。部分298のサイズは、ネットワークを通じた転送を予定しているデータパケットのサイズに対応する。ビデオおよびオーディオデータは異なるデータファイルに格納することができ、しかも任意に組み合わせることができるので、クライアント側でこれら異なるストリームのデータ要求を効率的に管理すれば、一層の性能向上が得られる。例えば、クライアントアプリケーションは、データを読み取ることができるストリームを識別し、次いで、データがあれば読み取るべきデータ量を決定することができる。この種のリード動作管理を行なうプロセスが、米国特許第5,045,940号に示されている。一般に、クライアントは、表示に利用可能なデータ量が最少のストリームはどれであるかについて判定を行なう。ある量のデータを効率的に読み出すために当該ストリームのために十分な量のバッファ空間がバッファ集合にある場合、そのデータを要求する。一般に、選択したストリームに対してメモリ内で利用可能な空間が十分に広く1ネットワーク伝送データ単位を保持できる場合、データは効率的に読み取られる。あるストリームのデータを要求すると判定した場合、各セグメントが格納されている記憶装置から選択した記憶装置から、データの各セグメントを要求する。ある合成をデータ要求に変換し、当該データを表示するプロセスについて、図16に関連付けてこれより説明する。記憶装置からどのファイルを要求するか知るために、クライアントシステム上で実行するアプリケーションプログラムは、図14に示すような合成を表わすデータ構造を、図16のステップにおいてこれらのファイル内におけるファイル名および範囲に変換することができる。例えば、各ソース識別子およびそのソース内の範囲毎に、要求をアセットマネージャに送ることができる。これに応答して、アセットマネージャは、受信したソース識別子および範囲に対応する等価なメディアを収容するファイルのファイル名を戻すことができる。ファイルのセグメントテーブルおよび利用可能な記憶装置のリストも、カタログマネージャとなることができる。クライアントが特定のデータストリームに対してデータセグメントを要求する場合、クライアントはステップ272において、要求したセグメントのために記憶装置を選択する。各セグメントをコピーすることによって冗長性を備えた一実施形態におけるこの選択について、図17および図18に関連付けて以下で更に詳しく説明する。一般に、キュー48図1が最も短い記憶装置を選択すればよい。次にクライアントは、ステップ274ないし278において、選択した記憶装置から、そのセグメントに対するデータを読み出す。ステップ274は、プレリードステップとして理解するとよく、ここで、クライアントは記憶装置に要求を送り、所望のデータを、不揮発性ストレージからより高速な典型的に揮発性のストレージに読み出す。記憶装置に対する要求は、要求を行なってからクライアントにおいて要求データを受信しなければならないまで、即ち、期限までに要する時間がどれ位かかるかの指示を含むことができる。プレリード要求が受け入れられると、クライアントはステップ276において待機する。要求は記憶装置のキュー48に置かれ、次いで期限を用いて以下に説明するように要求の優先順位を決める。ステップ278において、記憶装置のバッファにおいてデータが利用可能となった後、記憶装置からデータを転送する。このステップは、ネットワークの使用をスケジューリングしネットワーク利用効率を最大に高めることを含むとよい。受信したデータは、クライアントにおける適切なバッファに格納し、最終的にステップ280において処理し表示する。記憶装置においてセグメントが失われていた場合、冗長情報を用いてセグメントを再現する。プレリード要求を開始する方法はいくつかあり、ステップ274における記憶装置の選択、およびステップ278におけるデータ転送を含む。例えば、マサチューセッツ州、TewksburyのAvidTechnology,Inc.からのMediaComposerは、ユーザがクリップ数または時間量のいずれかをルックアヘッド値look-aheadvalueとして設定させ、合成においてどの位先でアプリケーションがデータリード要求を開始すべきかを示す。テレビジョン放送説明のためのプログラムスケジュールもこの目的のために使用可能である。このような情報は、記憶装置の選択およびプレリード要求を開始するために用いることができる。このようなプレリードは、1995年9月9日公開のヨーロッパ特許出願第0674414A2号に示されるように、バッファ290図15内にバッファ空間が得られない場合でも実行可能である。バッファ290図15における利用可能な空間量を用いて、ステップ278図16においてデータ転送を開始するか、あるいはプレリードステップ274およびデータ転送ステップ278を開始することができる。利用可能な記憶装置全てを洗いざらい探索する必要なく、クライアントが、最も短い要求キューを有する記憶装置の適切な推定を行なうことを可能にする1つのプロセスについて、図17および図18に関連付けてこれより説明する。最初に、クライアントは、ステップ330において、スレシホルドE1を有する要求を第1記憶装置に送る。スレシホルドE1は、要求に答えなければならない時間の推定値を示す。この推定値は、時間値、4というような記憶装置のディスクキュー内の要求数、またはその他の尺度として表わすことができる。このスレシホルドの意味は、例えば、記憶装置が特定の時間制限の内に要求に答えることができる場合に、記憶装置によって要求が受け入れられなければならないということである。クライアントは、ステップ332において、記憶装置から回答を受信する。回答は、要求が受け入れられ記憶装置のディスクキューに入力されたか、または要求が拒絶されたかを示す。これは、ステップ334において判定される。要求が受け入れられた場合、ステップ336において、記憶装置のバッファにおいてデータが利用可能となる時点の推定値がクライアントには与えられる。例えば、要求したセグメントのデータが既にバッファ内にある場合、記憶装置はデータが直ちに利用可能であることを示す。次いで、クライアントは、推定時間が経過して少し後に、データの転送を要求する時刻になるまで待てばよい。要求が拒絶された場合、ディスクキューのエントリ数の実際のサイズのような、記憶装置が実際に要する可能性がある時間量の推定値が、記憶装置から戻される。ステップ340において、この実際の推定値を値Kに加算し、スレシホルドE2を得る。値Kは、ディスクキューのエントリ数を表わす場合は、2となる。スレシホルドE1および値Kはユーザが定義可能である。ステップ342において、スレシホルドE2を示す要求を第2記憶装置に送る。次に、ステップ344において、クライアントは、ステップ332において受信した回答と同様に、回答を受信する。要求が受け入れらたことを回答が示すと346において判定した場合、クライアントは、ステップ336に示すように、第2記憶装置においてデータが利用可能となる時点の推定値を有し、その後クライアントは、データ転送をスケジュールするために待つことができる。それ以外の場合、ステップ348において、無条件要求、即ち、大きなスレシホルドを有する要求を第1記憶装置に送る。次に、ステップ350において承認を受信し、ステップ336において示したように、記憶装置のバッファにおいてデータが利用可能となる時点の推定値を示す。一方、記憶装置は、要求を受信したときには、それがクライアントによって選択された第1記憶装置なのかまたは第2記憶装置なのかはわからない。逆に、記憶装置は、ステップ360に示すように、単に要求を受信するだけである。ステップ362において、要求内で示されるスレシホルドは、記憶装置自体の、クライアントが待たなければならない時間の推定値と比較される。例えば、記憶装置のディスクキューのサイズを指定されたスレシホルドと比較する。供給内のスレシホルドが、記憶装置の推定値よりも大きい場合、ディスクキューに要求を入力し、ステップ364において、記憶装置のバッファにおいてデータが利用可能となる時点の推定値を決定する。この推定値は、例えば、ディスクアクセス速度、ディスクキューの長さ、そして可能性として最新のパフォーマンスの移動平均に基づいて決定することができる。ステップ366において、承認をクライアントに送る。これは、記憶装置のバッファにおけるデータ可能性の推定時点を含む。それ以外の場合、ステップ368において拒絶を送り、ディスクキューの実際の長さのような、この推定値を示す。記憶装置は、記憶装置上のどのバッファに、どのセグメントがあるのか追跡することも可能である。セグメントデータは、記憶媒体からいずれかの空きバッファまたは最近最も使用されていないセグメントが占有するバッファに読み出すことができる。このように、あるセグメントに対するデータは、当該セグメントを2回要求すれば、あるバッファにおいて直ちに利用可能とすることができる。代替案として、クライアントは別の方法を用いて、データを検索する記憶装置を選択することも可能である。これについては、以下で論ずる。要求を送った後、クライアントは、記憶装置から、その要求が記憶装置のディスクキュー内に入ったことを示す承認を受信する。記憶装置のバッファにおいてデータが利用可能となる時点の推定値を受信する代わりに、クライアントは、記憶装置が要求データを記憶装置の指定バッファメモリに読み込んだことを示すレディ信号を受信するまで待つこともできる。この待ち時間中、クライアントは、別のデータセグメントの要求を発行したり、データを表示したり、データを処理するというような、別のタスクを実行することができる。この代替案に伴う1つの問題は、クライアントが未要請メッセージ、即ち、記憶装置からのレディ信号を受け入れ、それに応答して、クライアントがコンテクストを変更し、メッセージを処理することである。クライアントは、他の動作を実行していて使用中の可能性もある。このプロセスは記憶装置のバッファにおいてデータが利用可能となる時点の更に精度が高い推定値を与えるが、コンテクストを変更し着信メッセージを処理する可能性のために、直ちにクライアントにおける複雑化を招くことになる。セグメントテーブルが各セグメントのコピーを追跡する場合に、あるファイルのためにセグメントテーブルから記憶装置を選択する方法は、他にもいくつかある。例えば、クライアントがファイルリード要求を行なっている場合、クライアントは、問題のファイルのために、AリストまたはBリストのいずれかからランダムに抽出することができる。あるいは、クライアントは、その現在未処理の要求全て、即ち、送られたが未だ実行していない要求を見直し、AおよびBリスト上の記憶装置の内、最も少ない未処理の要求を有する記憶装置を、ファイルに抽出することができる。この選択方法は、クライアントがそれ自体の未処理要求と競合する可能性を低下させることができ、要求を全ての記憶装置全体に一層等しく拡散するようになる。あるいは、未処理の要求を調べる代わりに、クライアントは、その最新要求の履歴、例えば最後のnの要求を調べ、次の要求のために、これまで最も使用されていないセグメントに対するAリストおよびBリストからいずれかの記憶装置を抽出することができる。この選択方法は、要求を全ての記憶装置全体に一層等しく拡散するようになり、更に特定の記憶装置に要求が集中するのを回避することができる。また、クライアントは、各記憶装置から、そのディスクキューの長さの尺度を要求することもできる。クライアントは、最もディスクキューが短い記憶装置に要求を発行することができる。別の可能性として、クライアントは、2つの記憶装置に要求を送り、最終的に一方のみからデータを受信することもできる。この方法をローカルエリアネットワーク上で用いると、クライアントは未使用の要求を取り消すことができる。ワイドエリアネットワーク上では、最終的に選択された記憶装置は、他の記憶装置において未使用の要求を取り消すことができる。記憶装置は、多数のアプリケーションから多数の要求を受信する可能性もある。多数のアプリケーションからの要求を管理し、最も重要な要求を最初に処理することを保証するために、各記憶装置毎にキュー48図1を維持する。キューは、システムの複雑度に応じて、いくつかの部分に維持することも可能である。即ち、記憶装置は、ディスクアクセスのためおよびネットワーク転送のために異なるキューを維持することができる。キューは、例えば、再生から放送のために特定の時間期限があるデータを用いる時間厳守アプリケーションからの要求を、キャプチャシステム、オーサリングツールまたはサービスおよび保守アプリケーションのようなその他のアプリケーションからの要求から、分離することも可能である。更に、格納要求は、オーサリングツールからの要求、ならびにサービスおよび保守プログラムからの要求から分けることができる。オーサリングツールからの要求は、更にサービスおよび保守要求から分けることができる。図19は、ディスクキュー300およびネットワークキュー320を利用するキュー48の一実施形態を示す。ディスクキューは4つのサブキュー302,304,306および308を有し、それぞれ、再生、キャプチャ、オーAリング、ならびにサービスおよび保守クライアントプログラムに1つずつである。同様に、ネットワークキュー320も4つのサブキュー322,324,326および328を有する。各キューは、1つ以上のエントリ310を含み、その各々は、要求を行なったクライアントおよび要求された動作を示す要求フィールド312、要求の優先度を示す優先度フィールド314、ならびに要求に関連するバッファを示すバッファフィールド316を含む。要求の優先度の指示は、デッドライン、タイムスタンプ、クライアントにおいて利用可能なメモリ量の指示、またはクライアントにおいて現在利用可能なデータ量の指示とすることができる。記憶装置に優先度スケジューリング機構があれば、使用する優先度スタンプの種類を指示することができよう。優先度値は多くの方法で生成することができる。オーサリングまたは再生システムに対する優先度値は、一般に、アプリケーションが要求データを受信しなければならない時点の尺度である。例えば、リード動作では、アプリケーションは、データがなくなる目に、再生に利用できるデータがどの位あるかについてミリ秒単位またはフレーム単位またはバイト単位で報告することができる。キャプチャシステムに対する優先度指示は、一般に、クライアントがそのバッファから記憶装置にデータを転送しなければならない時点の尺度である。例えば、ライト動作では、アプリケーションは、バッファが溢れる前に満たすことができる空のバッファ空間がどれ位あるかについてミリ秒単位、フレーム単位またはバイト単位で報告することができる。ミリ秒を尺度単位として用いた場合、システムは、絶対的な時間クロックを有し、これをキュー49における要求の順番を決定するための基礎として用いることができ、全てのアプリケーションおよび記憶装置をこの絶対時間クロックに同期させることができる。この同期が実用的でない場合、アプリケーションは、当該アプリケーションに関係し、要求を行って渡されてから、要求データがクライアントによって受信されるまでどれ位の時間を要するかを示す時間を用いることも可能である。通信レイテンシが低いと仮定すると、記憶装置は、この相対時間を、記憶装置と一貫性のある絶対時間に変換することも可能である。記憶装置は、そのサブキュー301ないし308において、要求をその優先度の順に処理する。即ち、最初に最も優先度が高いキューにある要求をそれらの優先度値の順に処理し、次いで、次第に優先度が低くなるキューにおける要求を処理する。各要求毎に、記憶装置は、ディスクと要求によって示されるバッファとの間でデータを転送する。リード要求では、要求を処理した後、ディスクキューからネットワークキューに要求を移管する。ライト要求では、ライト動作の完了に成功した後、ディスクキューから要求を除去する。以下で更に詳しく説明する一実施形態では、記憶装置はネットワークキューを用いて、これらの転送をスケジュールするプロセスにおいて、ネットワーク転送の優先順位を決定する。この実施形態では、クライアントは、ネットワークを通じてデータの転送を要求する。記憶装置がこのような要求を2つほぼ同時に受信した場合、記憶装置は、そのネットワークキューにおいて優先度が高い方の要求を処理する。リード要求では、要求を処理した後、ネットワークキューから要求を除去する。ライト要求では、転送完了が成功した後、要求をネットワークキューからディスクキューに移管する。優先度は、空きバッファの可用性に依存する。ネットワークキュー内にある要求を処理する時間が過ぎた場合、要求を欠落させ、クライアントはもはや動作していないか、またはネットワーク転送を時間内に要求しなかったことを示す。記憶装置とクライアントとのコンピュータネットワークを通じたデータ転送をスケジュールし、効率を向上させることも可能である。即ち、データ転送のスケジューリングにより、コンピュータネットワークの帯域幅利用度を高める。このようなネットワーク使用のスケジューリングは、特にクライアントとスイッチとの間のリンクの帯域幅が、記憶装置とスイッチとの間のリンクの帯域幅と同程度の大きさである場合に実行するとよい。即ち、記憶装置がデータを送り、クライアントがそれらそれぞれのネットワーク接続のリンク速度でデータを受信する場合、データはネットワークスイッチにおいて蓄積したり、他の大幅な遅れが生ずる可能性は低くなる。このようなネットワークの利用度を高めるために、いずれの所与の時点においても、各クライアントに1つの記憶装置のみからデータを受信させ、各記憶装置に1つのクライアンとのみにデータを送らせる機構を備えるとよい。例えば、各クライアントがトークンを1つのみ有するようにするとよい。クライアントは、このトークンを1つの記憶装置のみに送り、選択したセグメントに対するデータの転送を要求する。トークンは、クライアントがデータを受信しなければならないデッドライン、即ち、優先度の尺度および指定セグメントを示すことができる。各記憶装置は一度に、それがトークンを受信した1つのクライアントだけにデータを送る。記憶装置は、一度に1つのトークンのみを受信する。データを転送した後、記憶装置はトークンも返す。図20および図21に関連付けて他のネットワークスケジューリングプロセスについてこれより説明する。このプロセスは、同様の結果を与えるが、トークンを使用しない。むしろ、クライアントが記憶装置との通信チャネルを要求し、セグメント、およびクライアントが転送が行われるのを待つ時間量E3を指定する。また、クライアントは、クライアントがデータを受信しなければならない新たな時間期限をセグメントに対して指定することもできる。これより図20を参照して、ネットワークを通じてデータを転送するクライアントプロセスについて説明する。合成の再生中のいずれかの時点において、各バッファは、それに関連するデータセグメント、および連続再生のためにバッファ内においてデータが利用可能でなければならない時点を有する。当技術分野では公知であるが、アプリケーションは、再生プロセスの間、バッファの各々をセグメントに関連付ける。図17および図18に関連付けて先に示したように、クライアントが準備した各セグメントには、記憶装置においてデータが利用可能となる推定時間が関連付けられている。したがって、クライアントは、バッファをそれらの時間期限によって、および要求データが記憶装置のバッファ内において利用可能であることが求められているか否かによって順序付けることができる。この順序付けは、クライアントが、ステップ500においてデータを転送するために次のバッファを選択するために用いることができる。クライアントは、ステップ502において、記憶装置との通信チャネルを要求し、待ち時間E3を指定する。クライアントがデータを早急に必要としない場合、またはクライアントが他の動作をより効率的に実行できる場合、この値E3は、例えば、100ミリ秒と短くてよい。この値E3は、クライアントが早急にデータを必要とする場合には、例えば、そのバッファの1つでデータが無くならないように長くすることも可能である。ステップ504において、クライアントは記憶装置から回答を受信する。記憶装置が要求を拒絶したとステップ506において判定した場合、ステップ508において改訂推定時間をメッセージと共に受信する。ステップ510において、この改訂推定時間を用いて、バッファを選択するバッファリストを更新することができる。処理はステップ500に戻り、別のバッファを選択する。セグメントが、以前に選択したセグメントと同じ記憶装置上にあるバッファは、恐らく選択すべきでない。記憶装置が別の方法で要求を受け入れた場合、最終的にステップ518でデータを受信する。記憶装置の観点からの処理について、図21に関連付けてこれより説明する。ステップ520において、記憶装置は、待ち時間E3を示す要求をクライアントから受信する。この記憶装置のバッファにではデータが未だ利用可能でないとステップ522において判定した場合、ステップ524において記憶装置は要求を拒絶し、改訂推定時間を計算し、これをクライアントに送る。逆に、データが利用可能であり、記憶装置のネットワーク接続が使用中でないとステップ526において判定した場合、ステップ528においてクライアントはアクティブクライアントとなり、記憶装置によって通信チャネルが付与され、データの転送が可能となる。記憶装置のネットワーク接続が他のクライアントにデータを転送するために稼働している場合、記憶装置は待機クライアントからの要求を維持し、アクティブクライアントに対するデータ転送が完了した後に、待機クライアントにデータを転送する。現クライアントが待機クライアントか否かについて判定を行なうために、ステップ530において、記憶装置は、ネットワークキューにおいてデッドラインが速い要求の数に、各要求毎のネットワーク伝送時間を乗算した値に基づいて、転送を行なうことができるまでの時間を推定する。計算した利用可能推定時間が待ち時間E3よりも大きいとステップ532で判定した場合、クライアントはそんなに長く待ちたくないことを示し、ステップ524において要求を拒絶する。また、この要求の指定優先度が、いずれの現待機クライアントの優先度よりも低いとステップ534において判定した場合、ステップ524において要求を拒絶する。それ以外の場合、ステップ536において、いずれの現待機クライアントからの要求も拒絶し、この新たなクライアントを現待機クライアントとして指定する。アクティブクライアントへの転送が完了すると、待機クライアントがアクティブクライアントとなり、データを転送する。クライアントから記憶装置にデータを転送するためには、同様のプロセスを用いて、ネットワーク転送をスケジュールし、記憶装置内のバッファから不揮発性ストレージにデータを転送することができる。クライアントの観点から、このプロセスについて図22に関連付けてこれより説明する。このプロセスは、図3におけるステップ124および126を実行するために用いることができる。クライアントがデータをそのバッファ集合内の任意の点に入力することができるリードプロセスとは異なり、記憶装置に転送するデータは、典型的に、キャプチャシステムが使用するバッファ集合からのリードポインタから来る。キャプチャシステムは、典型的に、1つ以上のビデオ情報ストリーム、および1つ以上のオーディオ情報ストリームを生成する。したがって、キャプチャシステムは、ストリーム内の空きバッファ空間量に応じて、データストリームの1つを選択し、捕獲したデータを受信することができる。この選択したストリームの現リードポインタにおけるバッファを、ステップ600において選択する。次に、ステップ602においてライト要求を記憶装置に送る。要求は、セグメントの識別子、時間期限またはその他の優先度値、およびクライアントが待とうとする時間量を示すスレシホルドE4を含む。時間期限は、記憶装置がネットワーク転送要求の優先度を決定するために用いる。スレシホルドE4は、先に論じたスレシホルドE3と同様、クライアントが用い、それ自体の動作を効率的にスケジュールすることを可能にする。クライアントは、要求を記憶装置に送った後、最終的にステップ604において回答を受信する。ライト要求が拒絶されたことを要求が示すとステップ606において判断した場合、回答は、ステップ607においてデータを受信するために記憶装置が利用可能となるまでの推定時間を含む。この推定時間は、クライアントが他の動作をスケジュールするために用いることができる。記憶装置がデータを書き込む要求を受け入れた場合、ステップ608において、クライアントは、データのセグメントの一部を記憶装置に送る。ステップ610において、ライト要求が成功したか否かを示す回答をステップ610で受信することができる。これは、ステップ612において分析する。ステップ614において、不良の場合には、復元プロセスを伴う場合もある。それ以外の場合、ステップ616に示すように、プロセスは完了する。記憶装置の観点から、記憶装置はステップ620においてクライアントからのライト要求を受信する。要求は、時間期限またはその他の優先度スタンプを含み、これを用いて要求をネットワークキューに入力する。次に、ステップ622において、記憶装置はデータを受信するためにバッファが利用可能か否かについて判定を行なう。利用可能なバッファがないというありそうもない場合には、ステップ624において要求が拒絶される場合もある。それ以外の場合に、ステップ626において要求をネットワークキューに入力し、データ、その優先度スタンプ、および転送に関するその他の情報を受信するためにバッファを割り当てたことを示す。次に、記憶装置は、ステップ628において、ネットワーク接続が使用中か否かについて判定を行なう。ネットワーク接続が使用中でない場合、記憶装置はステップ630において要求を受け入れ、その旨のメッセージをクライアントに送る。すると、クライアントはデータを転送し、これがステップ632において記憶装置によって受信され、指定のバッファに入力される。指定のバッファが現在満杯であるとステップ634において判定した場合、ステップ636において、適切な優先度スタンプと共にバッファをディスクキューに入力する。記憶装置のディスクキューの処理によって、最終的にデータはバッファから永続ストレージに転送される。それ以外の場合、ステップ638に示すように、クライアントがバッファを満たすのに十分なデータを送るまで、記憶装置は待機する。記憶装置のネットワーク接続が使用中であるとステップ628において判定した場合、記憶装置はステップ640において、記憶装置のネットワーク接続が利用可能となるまでの推定時間を計算する。この計算時間が、ステップ642に判定した指定の待ち時間E4よりも大きい場合、ステップ643において、記憶装置の利用可能時間の推定値によって、要求を拒絶する。記憶装置が、クライアントによって示された待ち時間E4以内にデータを転送することができる場合、ステップ644において、記憶装置は、要求の優先度を、現在待機中のあらゆるクライアントの要求の優先度と比較する。この要求の優先度が、現在待機中のクライアントの要求よりも低い場合、この要求を拒絶する。それ以外の場合、現在待機中のクライアントからの要求を拒絶し、この新たな要求を次の要求とし、ステップ646において処理する。冗長情報を2つ以上のセグメントから作成する場合に用いる追加実施形態について、これより図24および図25に関連付けて説明する。まず図24を参照して、数個の記憶装置にわたってランダムに分散して冗長情報と共にデータセグメントを格納するプロセス例について詳細に説明する。このプロセスは、図3に関連付けて先に説明したプロセスと全体的に類似している。最初に、ステップ700において、キャプチャシステムはセグメントテーブル90B図2Bを作成する。典型的に、各画像を、捕獲するデータストリームにおけるオフセットにマップする画像インデックスも作成する。インデックス化した画像は、例えば、ビデオのフィールドまたはフレームに対応することができる。インデックスは、オーディオのような他の種類のデータに対する、時間期間のような、別のサンプル境界を基準とすることができる。また、キャプチャシステムは、前述のような、利用可能な記憶装置のリストも得る。また、キャプチャシステムは、冗長セットサイズの指示を、利用可能な記憶装置のリストに基づいて自動的に、またはユーザから受け取る。一般に、冗長セットサイズは、利用可能な記憶装置の数未満でなければならず、非常に小さい部分集合であってもよい。また、カウンタを用いて、どのセグメントが所与の冗長セット内にあるか追跡する。このカウンタは、ステップ700においてゼロにリセットする。排他的ORメモリも用い、全て二進無アサート値、例えば、0にリセットする。次に、ステップ720で、データセグメントをキャプチャシステムにおいて作成する。このセグメントに適切なサイズについては、図3の説明との関係で先に論じた。また、ステップ720ではカウンタの増分も行なう。ステップ722において、現セグメントは、排他的ORメモリに既に格納したあらゆるセグメントの排他的ORとしてローカルに格納する。ステップ724において、記憶装置をこのセグメントのために選択する。セグメントのための記憶装置の選択は、ランダムまたは疑似ランダムである。この選択は、以前のいずれの冗長セットに対して行なった選択にも独立とすることができる。しかしながら、選択は、冗長セット内の各セグメントが異なる記憶装置上に格納されていることを保証しなければならない。図3の説明との関係で先に論じたように、各ファイルは、利用可能な記憶装置の部分集合のみを使用することができる。セグメントに記憶装置を選択した後、ステップ726においてこのセグメントを記憶装置に送り格納する。次に、ステップ728において、キャプチャシステムは、記憶装置がセグメントの格納完了を承認するまで待つ。データを捕獲しながらリアルタイムで格納しなければならない場合、ステップ726におけるデータ転送は、先に論じたようにリード動作と同様、2段階で行なえばよい。データを記憶装置に格納するのに成功した後、ステップ730においてキャプチャシステムはセグメントテーブル90Bを更新する。カウンタが現在冗長セットのサイズに等しいとステップ732において判定した場合、ローカル排他的ORメモリの内容は冗長情報である。この場合、この冗長情報を記憶装置上に格納する。即ち、ステップ734においてカウンタをリセットする。ステップ736において、冗長情報のために記憶装置を選択する。ステップ738において、冗長情報を選択した記憶装置に送る。次いで、ステップ740において、キャプチャシステムは格納成功の承認を待つ。ステップ742において、セグメントテーブルを更新することができる。捕獲が完了したとステップ744において判断した場合、プロセスは終了する。この時点で、ステップ745において、排他的ORメモリに格納されているあらゆる冗長情報は、ステップ734ないし742と同様の手順を用いて、記憶装置に格納しなければならない。次に、ステップ746において、更新したセグメントテーブルをカタログマネージャに送る。ステップ732においてカウンタが冗長セットのサイズに等しくない場合、また捕獲が完了していないとステップ744において判断した場合、プロセスは継続し、ステップ720においてデータの次のセグメントを作成し、カウンタを増分する。図5に関連付けて先に論じたように、冗長情報は、記憶装置の1つが故障した場合に、データを復元することを可能にする。図25は、冗長情報が、2つ以上のセグメントを収容する冗長セットに基づく場合に、このような故障回復を行なうプロセスを示す。図5に示すように、復元するファイルをステップ750において選択する。ステップ752において、そのファイルの失われたセグメントを全て特定する。次に、ステップ754において、失われたセグメントを収容する冗長セットを読み取る。このステップは、当該セットにおけるセグメントの排他的ORによって作成したセットに対する冗長情報を読み出し、次いで冗長セットの残りのセグメントを読み出すことからなる。次に、ステップ756において残りのセグメントおよび冗長情報の排他的ORを計算し、失われたセグメントを再構成する。図5のステップ204と同様に、次に、ステップ758において、失われたセグメントを再構成したもの毎に記憶装置を選択する。選択した記憶装置に、失われたセグメントを再構成したものを格納する。ステップ760において、格納動作の完了成功時に、セグメントテーブルを更新する。次に、ステップ762において、更新したセグメントテーブルをカタログマネージャに送る。また、一種の冗長情報、例えば、セグメントのコピーを有するファイルを、他の種類の冗長情報、例えば、2つ以上のセグメントの排他的ORに変換することも可能である。例えば、図6に示すプロセスを用いて、データの追加コピーを作成することができる。このプロセスを完了した後、他の形態の冗長データセグメントの排他的ORの結果を削除することができる。同様に、図24に示すプロセスは、格納したデータと共に用いて、冗長情報の排他的ORを作成することも可能である。このような情報を作成した後、図7に示したプロセスを用いてデータの余分なコピーを削除することができる。ファイルが冗長情報を有する形態は、ファイル毎に異なってもよく、更に、例えば、ファイルに関連する優先度に基づくことも可能であり、冗長情報の形態の指示をカタログマネージャに格納することも可能である。ネットワークを通じたデータ転送をスケジュールすることにより、そして記憶装置上の負荷を分散し、冗長情報と共にランダムに分散したデータセグメントに対するアクセスを選択することによって、このシステムは、多数のアプリケーションと多数の記憶装置との間で双方向に多数のデータストリームを非常にスケーラブルにかつ信頼性高く、効率的に転送することが可能となる。これは、分散型マルチメディア製品にとっては特に有効である。このようなコンピュータネットワークを用いて実現可能なアプリケーションの1つは、多数のストリームを他の外部ディジタル効果システムに送りかつ戻し、ライブ製作において共通に用いる機能である。これらのシステムは複雑でコスト高となる場合がある。殆どのディスクを用いたノンリニアビデオ編集システムは、効果リターンストリームを同時に記録しながら多数の再生ストリームを維持することができない、ディスクサブシステムおよびバスアーキテクチャを有し、オンライン環境で用いる可能性を制限している。このシステムを用いれば、数種類のストリームを効果システムに送ることができ、効果システムは効果データストリームを出力し、多数の記憶装置上に格納する。数種類のストリームは、多数のカメラソース、またはデュアルディジタルビデオ効果のレイヤとすることができる。また多数の記憶装置を有し、データを1つのクライアントに供給し、他のいずれの記憶装置よりも高い帯域幅を有する高帯域幅データストリームを必要とするクライアントを満足させることも可能である。例えば、20個の記憶装置の各々がスイッチに対して10MB/sリンクを有し、クライアントがスイッチに対して200MB/sリンクを有する場合、クライアントは20個の記憶装置から同時に200MB/sを読み取ることができ、例えば、高品位テレビジョンHDTVのデータストリーム転送が可能となる。これまでに概略的に説明した手順を用いると、記憶装置およびクライアントは、ローカル情報を用い、中央のコンフィギュレーション管理または制御なく動作する。記憶装置は、システムを停止する必要なく、動作の間にシステムに追加することができる。記憶装置は単に動作を開始し、クライアントにその可用性を知らせ、次いでアクセス要求に対して応答するプロセスを確立する。この拡張性は、システムの機能および信頼性を補完するものである。以上いくつかの実施形態について説明したが、これまでに述べたことは単なる例示であって限定ではなく、一例として提示したに過ぎないことは、当業者には明白であろう。多数の変更や別の実施形態は当業者の範囲内のことであり、添付した特許請求の範囲およびその均等物に該当するものとみなすこととする。"