(57)【特許請求の範囲】
【請求項１】
散在ストレージ・ネットワーク（ＤＳＮ）の１以上のコンピューティング・デバイスの１以上の処理モジュールによって実行される方法であって、
データ・オブジェクト名に基づいて、メタデータ・アドレス情報を読み取るための第１の読取要求を生成するステップであって、前記第１の読取要求は、前記ＤＳＮの読取要求フォーマットに従ってフォーマットされる、前記ステップと、
読み出されたメタデータ・アドレス情報に基づいて、メタデータを読み取るための第２の読取要求を生成するステップであって、前記第２の読取要求は、前記ＤＳＮの前記読取要求フォーマットに従ってフォーマットされる、前記ステップと、
読み出されたメタデータに基づいて、前記データ・オブジェクト名に関連するデータ・オブジェクトの少なくとも一部を読み取るための第３の読取要求を生成するステップであって、前記第３の読取要求は、前記ＤＳＮの前記読取要求フォーマットに従ってフォーマットされる、前記ステップと、を含み、
前記第１の読取要求を生成する前記ステップは、
前記データ・オブジェクト名に対して確定関数を実行してデジタル値を作成するステップと、
前記デジタル値の第１の部分を、前記ＤＳＮの前記読取要求フォーマットの世代識別子として使用するステップと、
前記デジタル値の第２の部分を、前記ＤＳＮの前記読取要求フォーマットのオブジェクト識別子として使用するステップと、
を含む方法。
【請求項２】
前記第１の読取要求を生成する前記ステップは、
前記データ・オブジェクトが格納された格納域識別子を、前記データ・オブジェクト名に基づいて決定するステップと、
前記ＤＳＮの前記読取要求フォーマットの格納域識別子フィールドにおいて前記格納域識別子を使用するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記第２の読取要求を生成する前記ステップは、
前記メタデータ・アドレス情報から世代識別子およびオブジェクト識別子を抽出するステップと、
前記データ・オブジェクトに関連する格納域識別子を決定するステップと、
前記ＤＳＮの前記読取要求フォーマットの世代識別子フィールドにおいて前記世代識別子を使用するステップと、
前記ＤＳＮの前記読取要求フォーマットのオブジェクト識別子フィールドにおいて前記オブジェクト識別子を使用するステップと、
前記ＤＳＮの前記読取要求フォーマットの格納域識別子フィールドにおいて前記格納域識別子を使用するステップと、
を含む、請求項１に記載の方法。
【請求項４】
散在ストレージ・ネットワーク（ＤＳＮ）の１以上のコンピューティング・デバイスに、
データ・オブジェクト名に基づいて、メタデータ・アドレス情報を読み取るための第１の読取要求を生成することであって、前記第１の読取要求は、前記ＤＳＮの読取要求フォーマットに従ってフォーマットされる、前記生成すること、
読み出されたメタデータ・アドレス情報に基づいて、メタデータを読み取るための第２の読取要求を生成することであって、前記第２の読取要求は、前記ＤＳＮの前記読取要求フォーマットに従ってフォーマットされる、前記生成すること、
読み出されたメタデータに基づいて、前記データ・オブジェクト名に関連するデータ・オブジェクトの少なくとも部分を読み取るための第３の読取要求を生成することであって、前記第３の読取要求は、前記ＤＳＮの前記読取要求フォーマットに従ってフォーマットされる、前記生成すること、を実行させるためのプログラムであって、
前記コンピューティング・デバイスに、さらに、
前記データ・オブジェクト名に対して確定関数を実行してデジタル値を作成すること、
前記デジタル値の第１の部分を、前記ＤＳＮの前記読取要求フォーマットの世代識別子として使用すること、
前記デジタル値の第２の部分を、前記ＤＳＮの前記読取要求フォーマットのオブジェクト識別子として使用すること、
によって、前記第１の読取要求を生成することを実行させるためのプログラム。
【請求項５】
前記コンピューティング・デバイスに、さらに、
前記データ・オブジェクトが格納された格納域識別子を、前記データ・オブジェクト名に基づいて決定すること、
前記ＤＳＮの前記読取要求フォーマットの格納域識別子フィールドにおいて前記格納域識別子を使用すること、
によって、前記第１の読取要求を生成することを実行させるための請求項４に記載のプログラム。
【請求項６】
前記コンピューティング・デバイスに、さらに、
前記メタデータ・アドレス情報から世代識別子およびオブジェクト識別子を抽出すること、
前記データ・オブジェクトに関連する格納域識別子を決定すること、
前記ＤＳＮの前記読取要求フォーマットの世代識別子フィールドにおいて前記世代識別子を使用すること、
前記ＤＳＮの前記読取要求フォーマットのオブジェクト識別子フィールドにおいて前記オブジェクト識別子を使用すること、
前記ＤＳＮの前記読取要求フォーマットの格納域識別子フィールドにおいて前記格納域識別子を使用すること、
によって、前記第２の読取要求を生成することを実行させるための請求項４に記載のプログラム。
【請求項７】
散在ストレージ・ネットワーク（ＤＳＮ）において、コンピューティング・デバイスを複数含むグループのうちの一つのコンピューティング・デバイスであって、
インターフェースと、
ローカル・メモリと、
前記インターフェースおよび前記ローカル・メモリに動作可能に結合された処理モジュールと、
を備え、前記処理モジュールは、
データ・オブジェクト名に基づいて、メタデータ・アドレス情報を読み取るための第１の読取要求を生成することであって、前記第１の読取要求は、前記ＤＳＮの読取要求フォーマットに従ってフォーマットされる、前記生成することと、
読み出されたメタデータ・アドレス情報に基づいて、メタデータを読み取るための第２の読取要求を生成することであって、前記第２の読取要求は、前記ＤＳＮの前記読取要求フォーマットに従ってフォーマットされる、前記生成することと、
読み出されたメタデータに基づいて、前記データ・オブジェクト名に関連するデータ・オブジェクトの少なくとも部分を読み取るための第３の読取要求を生成することであって、前記第３の読取要求は、前記ＤＳＮの前記読取要求フォーマットに従ってフォーマットされる、前記生成することと、を行うように機能し、
前記処理モジュールは、さらに、
前記データ・オブジェクト名に対して確定関数を実行してデジタル値を作成することと、
前記デジタル値の第１の部分を、前記ＤＳＮの前記読取要求フォーマットの世代識別子として使用することと、
前記デジタル値の第２の部分を、前記ＤＳＮの前記読取要求フォーマットのオブジェクト識別子として使用することと、
によって、前記第１の読取要求を生成することを行うように機能する、コンピューティング・デバイス。
【請求項８】
前記処理モジュールは、
前記データ・オブジェクトが格納された格納域識別子を、前記データ・オブジェクト名に基づいて決定することと、
前記ＤＳＮの前記読取要求フォーマットの格納域識別子フィールドにおいて前記格納域識別子を使用することと、
によって、前記第１の読取要求を生成することを行うように機能する、請求項７に記載のコンピューティング・デバイス。
【請求項９】
前記処理モジュールは、
前記メタデータ・アドレス情報から世代識別子およびオブジェクト識別子を抽出することと、
前記データ・オブジェクトに関連する格納域識別子を決定することと、
前記ＤＳＮの前記読取要求フォーマットの世代識別子フィールドにおいて前記世代識別子を使用することと、
前記ＤＳＮの前記読取要求フォーマットのオブジェクト識別子フィールドにおいて前記オブジェクト識別子を使用することと、
前記ＤＳＮの前記読取要求フォーマットの格納域識別子フィールドにおいて前記格納域識別子を使用することと、
によって、前記第２の読取要求を生成することを行うように機能する、請求項７に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連特許の相互参照
本出願は、２０１４年４月３０日に出願された「ACCESSING METADATA IN A DISPERSED STORAGE NETWORK」という名称の米国仮出願第６１／９８６，３６１号、および２０１５年５月４日に出願された「RETRIEVING MULTI-GENERATIONAL STORED DATA IN A DISPERSED STORAGENETWORK」という名称の米国特許出願第１４／６３８，１７５号の優先権を主張するものであり、それらはいずれも参照により全体が本明細書に組み込まれ、あらゆる目的で本出願の一部を構成する。
【０００２】
連邦政府支援の研究または開発に関する陳述−該当なし
【０００３】
コンパクト・ディスクで提出された資料の参照による組み込み−該当なし
【０００４】
本発明は、一般にコンピュータ・ネットワークに関し、より詳細には、データの散在ストレージ（dispersed storage）およびデータの分散タスク処理（distributedtask processing）に関する。
【背景技術】
【０００５】
コンピューティング・デバイスは、データの通信、データの処理、またはデータの記憶、あるいはそれらの組合せを行うことが知られている。そのようなコンピューティング・デバイスは、ワイヤレス・スマートフォン、ラップトップ、タブレット、パーソナル・コンピュータ（ＰＣ）、ワーク・ステーション、およびビデオ・ゲーム・デバイスから、日々の何百万ものウェブ検索、株式取引、またはオンライン購入をサポートするデータ・センタにまで及ぶ。一般に、コンピューティング・デバイスは、中央処理装置（ＣＰＵ）、メモリ・システム、ユーザ入出力インターフェース、周辺デバイス・インターフェース、および相互接続バス構造を含む。
【０００６】
さらに知られているように、コンピュータは、「クラウド・コンピューティング」を使用してコンピュータの代わりに１つまたは複数のコンピューティング機能（たとえば、サービス、アプリケーション、アルゴリズム、算術論理機能など）を実行することによって、そのＣＰＵを効果的に拡張することができる。さらに、大きなサービス、アプリケーション、または機能、あるいはそれらの組合せについて、サービス、アプリケーション、または機能、あるいはそれらの組合せの完了のための応答時間を改善するために、クラウド・コンピューティングは、分散様式で複数のクラウド・コンピューティング・リソースによって実行されることがある。たとえば、Ｈａｄｏｏｐは、数千のコンピュータによるアプリケーションの実行を可能にする分散アプリケーションをサポートするオープン・ソース・ソフトウェア・フレームワークである。
【０００７】
クラウド・コンピューティングに加えて、コンピュータは、そのメモリ・システムの一部として「クラウド・ストレージ」を使用することができる。知られているように、クラウド・ストレージは、ユーザがそのコンピュータを介してインターネット・ストレージ・システム上にファイルやアプリケーションなどを記憶することを可能にする。インターネット・ストレージ・システムは、記憶するデータを符号化するためにエラー訂正方式を使用するＲＡＩＤ（独立ディスク冗長アレイ）システムまたは散在ストレージシステム、あるいはその両方を含み得る。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国仮出願第６１／９８６，３６１号
【特許文献２】米国特許出願第１４／６３８，１７５号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
散在ストレージ・ネットワークにおける多世代記憶されたデータを読み取ることを目的とする。
【課題を解決するための手段】
【００１０】
方法は、散在ストレージ・ネットワーク（ＤＳＮ）の処理モジュールによって開始して、データ・オブジェクト名に基づいて、メタデータ・アドレス情報を取り出すための第１の取出し要求を生成し、第１の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる。この方法は、続いて、処理モジュールによって、取り出されたメタデータ・アドレス情報に基づいて、メタデータを取り出すための第２の取出し要求を生成し、第２の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる。この方法は、続いて、処理モジュールによって、取り出されたメタデータに基づいて、データ・オブジェクト名に関連するデータ・オブジェクトの少なくとも部分を取り出すための第３の取出し要求を生成し、第３の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる。
【図面の簡単な説明】
【００１１】
【図１】本発明による、分散コンピューティング・システムの実施形態の概略ブロック図である。
【図２】本発明による、コンピューティング・コアの実施形態の概略ブロック図である。
【図３】本発明による、散在ストレージおよびタスク処理の例の図である。
【図４】本発明による、アウトバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理の実施形態の概略ブロック図である。
【図５】本発明による、アウトバウンドＤＳＴ処理のための方法の例の論理図である。
【図６】本発明による、分散エラー符号化の実施形態の概略ブロック図である。
【図７】本発明による、分散エラー符号化のセグメント処理の例の図である。
【図８】本発明による、分散エラー符号化のエラー符号化およびスライス化処理の例の図である。
【図９】本発明による、アウトバウンドＤＳＴ処理のグルーピング選択処理の例の図である。
【図１０】本発明による、データをスライス・グループに変換する例の図である。
【図１１】本発明による、ＤＳＴ実行ユニットの実施形態の概略ブロック図である。
【図１２】本発明による、ＤＳＴ実行ユニットの例の概略ブロック図である。
【図１３】本発明による、インバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理の実施形態の概略ブロック図である。
【図１４】本発明による、インバウンドＤＳＴ処理のための方法の例の論理図である。
【図１５】本発明による、インバウンドＤＳＴ処理のグルーピング解除選択処理の例の図である。
【図１６】本発明による、分散エラー復号の実施形態の概略ブロック図である。
【図１７】本発明による、分散エラー復号のスライス解除およびエラー復号処理の例の図である。
【図１８】本発明による、分散エラー復号のセグメント解除処理の例の図である。
【図１９】本発明による、スライス・グループをデータに変換する例の図である。
【図２０】本発明による、分散コンピューティング・システム内の散在ストレージの例の図である。
【図２１】本発明による、データを記憶するためのアウトバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理の動作の例の概略ブロック図である。
【図２２】本発明による、図２１の例のための分散エラー符号化の例の概略ブロック図である。
【図２３】本発明による、記憶のためにデータをピラースライス（pillar slice）グループに変換する例の図である。
【図２４】本発明による、ＤＳＴ実行ユニットの記憶動作の例の概略ブロック図である。
【図２５】本発明による、分散エラー符号化データ（dispersed error encoded data）を取り出すためのインバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理の動作の例の概略ブロック図である。
【図２６】本発明による、図２５の例のための分散エラー復号の例の概略ブロック図である。
【図２７】本発明による、複数のデータおよび複数のタスク・コードを記憶する散在ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。
【図２８】本発明による、記憶されたデータに対してタスクを実行する分散コンピューティング・システムの例の概略ブロック図である。
【図２９】本発明による、図２８の例を推進するタスク分散モジュールの実施形態の概略ブロック図である。
【図３０】本発明による、記憶されたデータに対してタスクを実行する分散コンピューティング・システムの具体例の図である。
【図３１】本発明による、図３０の例のためのデータおよびタスク・コードを記憶する散在ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。
【図３２】本発明による、図３０の例のためのＤＳＴ割り振り情報の例の図である。
【図３３】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３４】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３５】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３６】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３７】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３８】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３９】本発明による、図３０の例のための結果情報を最終結果として組み合わせる例の図である。
【図４０】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図である。
【図４１】本発明による、データを取り出すために利用される確定関数モジュールの実施形態を示す概略ブロック図である。
【図４２】本発明による、多世代記憶された（multi-generational stored）データを取り出す例を示すフローチャートである。
【図４３】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４４】本発明による、データ・オブジェクトの記憶を確認する例を示すフローチャートである。
【図４５】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４６】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４７】本発明による、反復ストレージ・ユニット・アクセス・プロセスを委任する例を示すフローチャートである。
【図４８】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４９】本発明による、データ・アクセス・リソースをインデックスに関連付ける例を示すフローチャートである。
【図５０】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５１】本発明による、散在階層インデックスを更新する例を示すフローチャートである。
【図５２】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５３】本発明による、複数の記憶世代の概略ブロック図である。
【図５４】本発明による、記憶世代を散在ストレージ・ネットワーク（ＤＳＮ）に追加する例を示すフローチャートである。
【図５５】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５６】本発明による、重要情報を取得する例を示すフローチャートである。
【図５７】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５８】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５９】本発明による、書込み要求競合を解決する例を示す表である。
【図６０】本発明による、書込み要求競合を解決する例を示すフローチャートである。
【図６１】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図６２】本発明による、記憶世代をアクティブ化する例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
図１は、分散コンピューティング・システム１０の実施形態の概略ブロック図であり、分散コンピューティング・システム１０は、ユーザ・デバイス１２またはユーザ・デバイス１４あるいはその両方、散在ストレージおよび／またはタスク（ＤＳＴ）処理ユニット１６、散在ストレージおよび／またはタスク・ネットワーク（ＤＳＴＮ）管理ユニット１８、ＤＳＴ整合性処理ユニット２０、ならびに散在ストレージおよび／またはタスク・ネットワーク（ＤＳＴＮ）モジュール２２を含む。分散コンピューティング・システム１０のコンポーネントは、ネットワーク２４を介して結合され、ネットワーク２４は、１つまたは複数の無線または有線あるいはその両方の通信システム、１つまたは複数の私用イントラネット・システムまたは公衆インターネット・システムあるいはその両方、あるいは１つまたは複数のローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）あるいはその両方、あるいはこれらの組合せを含み得る。
【００１３】
ＤＳＴＮモジュール２２は、複数の散在ストレージおよび／またはタスク（ＤＳＴ）実行ユニット３６を含み、これらのユニットは、地理的に異なる場所（たとえば、１つはシカゴ、１つはミルウォーキーなど）に配置され得る。ＤＳＴ実行ユニットのそれぞれは、分散エラー符号化データを記憶すること、または分散様式でデータに対して１つまたは複数のタスクを実行すること、あるいはその両方を行うように動作可能である。タスクは、単純な機能（たとえば、数学関数、論理関数、識別機能、発見機能、検索エンジン機能、置換機能など）、複雑な機能（たとえば、圧縮、人間またはコンピュータあるいはその両方の言語の翻訳、テキスト−音声変換、音声−テキスト変換など）、複数の単純または複雑なあるいはその両方の機能、１つまたは複数のアルゴリズム、１つまたは複数のアプリケーションなどであり得る。
【００１４】
ユーザ・デバイス１２〜１４、ＤＳＴ処理ユニット１６、ＤＳＴＮ管理ユニット１８、およびＤＳＴ整合性処理ユニット２０のそれぞれは、コンピューティング・コア２６を含み、携帯型コンピューティング・デバイスまたは固定型コンピューティング・デバイスあるいはその両方であり得る。携帯型コンピューティング・デバイスは、ソーシャル・ネットワーキング・デバイス、ゲーミング・デバイス、携帯電話、スマートフォン、携帯情報端末、デジタル音楽プレーヤ、デジタル・ビデオ・プレーヤ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、タブレット、ビデオ・ゲーム・コントローラ、またはコンピューティング・コアを含む任意の他の携帯型デバイス、あるいはそれらの組合せであり得る。固定型コンピューティング・デバイスは、パーソナル・コンピュータ（ＰＣ）、コンピュータ・サーバ、ケーブル・セットトップ・ボックス、衛星受信器、テレビ・セット、プリンタ、ファックス装置、家庭用娯楽機器、ビデオ・ゲーム機、または任意のタイプの家庭用もしくは業務用コンピューティング機器、あるいはそれらの組合せであり得る。ユーザ・デバイス１２およびＤＳＴ処理ユニット１６は、ＤＳＴクライアント・モジュール３４を含むように構成される。
【００１５】
インターフェースに関しては、各インターフェース３０、３２、および３３が、ネットワーク２４を介して間接的にまたは直接的にあるいはその両方で１つまたは複数の通信リンクをサポートするためのソフトウェアまたはハードウェアあるいはその両方を含む。たとえば、インターフェース３０は、ユーザ・デバイス１４とＤＳＴ処理ユニット１６との間の通信リンク（たとえば、有線、無線、直接、ＬＡＮを介する、ネットワーク２４を介するなど）をサポートする。別の例として、インターフェース３２は、ユーザ・デバイス１２とＤＳＴＮモジュール２２との間ならびにＤＳＴ処理ユニット１６とＤＳＴＮモジュール２２との間の通信リンク（たとえば、有線接続、無線接続、ＬＡＮ接続、または任意の他のタイプのネットワーク２４へ／からの接続、あるいはそれらの組合せ）をサポートする。さらに別の例として、インターフェース３３は、ネットワーク２４に対するＤＳＴＮ管理ユニット１８およびＤＳＴ整合性処理ユニット２０のそれぞれの通信リンクをサポートする。
【００１６】
分散コンピューティング・システム１０は、散在ストレージ（ＤＳ）エラー符号化データの記憶および取出しをサポートすること、受け取られたデータに対する分散タスク処理をサポートすること、または記憶されたデータに対する分散タスク処理をサポートすること、あるいはそれらの組合せを行うように動作可能である。一般に、またＤＳエラー符号化データの記憶および取出しに関して、分散コンピューティング・システム１０は、３つの主要な動作、すなわち、記憶管理、データ記憶および取出し、（その例については図２０〜図２６を参照して論じる）、ならびにデータ記憶整合性検証をサポートする。これら３つの主要機能により、データが符号化され、物理的に異なる位置に分散されて記憶され、信頼できるセキュアな様式で後で取り出されることが可能である。そのようなシステムは、個別のストレージ・デバイスの障害またはネットワーク機器の障害あるいはその両方に起因し得るかなりの数の障害に対して、（たとえば、ピラー幅（pillar width）マイナス復号閾値マイナス１以上であり得る障害レベルまで）耐性があり、データの損失がなく、冗長またはバックアップ・コピーの必要がない。さらに、そのシステムは、データ損失なしに無期限にデータを記憶することを可能にし、セキュアな（たとえば、システムが、データのハッキングの試みに対してかなりの耐性がある）様式で記憶する。
【００１７】
第２の主要機能（すなわち、分散データ記憶および取出し）は、ユーザ・デバイス１２〜１４で開始し終了する。たとえば、第２のタイプのユーザ・デバイス１４が、ＤＳＴＮモジュール２２に記憶するデータ４０を有する場合、ユーザ・デバイス１４は、そのインターフェース３０を介してデータ４０をＤＳＴ処理ユニット１６に送る。インターフェース３０は、従来のオペレーティング・システム（ＯＳ）ファイル・システム・インターフェース（たとえば、ネットワーク・ファイル・システム（ＮＦＳ）、フラッシュ・ファイル・システム（ＦＦＳ）、ディスク・ファイル・システム（ＤＦＳ）、ファイル転送プロトコル（ＦＴＰ）、ウェブベースの分散オーサリングおよびバージョン管理（ＷｅｂＤＡＶ）など）、またはブロック・メモリ・インターフェース（たとえば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）など）、あるいはその両方を模倣するように機能する。加えて、インターフェース３０は、ユーザ識別コード（ＩＤ）をデータ４０に取り付けることができる。
【００１８】
記憶管理をサポートするために、ＤＳＴＮ管理ユニット１８はＤＳ管理サービスを実行する。１つのそのようなＤＳ管理サービスは、ＤＳＴＮ管理ユニット１８が、ユーザ・デバイス１２〜１４について個々に、またはユーザ・デバイスのグループの一部として、分散データ記憶パラメータ（たとえば、格納域（vault）作成、分散記憶パラメータ、セキュリティ・パラメータ、課金情報、ユーザ・プロファイル情報など）を確立することを含む。たとえば、ＤＳＴＮ管理ユニット１８は、ユーザ・デバイス、デバイスのグループ、またはパブリック・アクセスのためのＤＳＴＮモジュール２２のメモリ内の格納域（たとえば仮想メモリ・ブロック）の作成を調整し、格納域に対する散在ストレージ（ＤＳ）エラー符号化パラメータを格納域ごとに確立する。ＤＳＴＮ管理ユニット１８は、分散コンピューティング・システム１０のためのレジストリ情報を更新することによって、複数の格納域の格納域ごとのＤＳエラー符号化パラメータの記憶を推進することができる。この推進は、更新されたレジストリ情報を、ＤＳＴＮモジュール２２、ユーザ・デバイス１２、ＤＳＴ処理ユニット１６、およびＤＳＴ整合性処理ユニット２０のうちの１つまたは複数に記憶することを含む。
【００１９】
ＤＳエラー符号化パラメータ（たとえば、すなわち散在ストレージ・エラー・コード化パラメータ）は、データ・セグメント化情報（たとえば、いくつのセグメント・データ（たとえば、ファイル、ファイルのグループ、データ・ブロックなど）として分割されるか）、セグメント・セキュリティ情報（たとえば、セグメントごとの暗号化、圧縮、整合性チェックサムなど）、エラー・コード化情報（たとえば、ピラー幅、復号閾値、読取り閾値、書込み閾値など）、スライス化情報（たとえば、各データ・セグメントについて作り出されることになる符号化されたデータ・スライスの数）、およびスライス・セキュリティ情報（たとえば、符号化データ・スライスごとの暗号化、圧縮、整合性チェックサムなど）を含む。
【００２０】
ＤＳＴＮ管理ユニット１８は、ユーザ・プロファイル情報（たとえばアクセス制御リスト（ＡＣＬ））を作り出し、ローカル・メモリ内またはＤＳＴＮモジュール２２のメモリ内、あるいはその両方に記憶する。ユーザ・プロファイル情報は、認証情報、許可、またはセキュリティ・パラメータ、あるいはそれらの組合せを含む。セキュリティ・パラメータは、暗号化／解読方式、１つまたは複数の暗号化鍵、鍵生成方式、またはデータ符号化／復号方式、あるいはそれらの組合せを含むことができる。
【００２１】
ＤＳＴＮ管理ユニット１８は、特定のユーザ、ユーザ・グループ、格納域アクセス、パブリック格納域アクセスなどに対する課金情報を作り出す。たとえば、ＤＳＴＮ管理ユニット１８は、プライベート格納域またはパブリック格納域あるいはその両方にユーザがアクセスした回数を追跡し、それがアクセスごとの課金情報を生成するために使用され得る。別の例では、ＤＳＴＮ管理ユニット１８は、ユーザ・デバイスまたはユーザ・グループあるいはその両方によって記憶または取出しあるいはその両方が行われたデータの量を追跡し、それがデータ量ごとの課金情報を生成するために使用され得る。
【００２２】
別のＤＳ管理サービスは、ＤＳＴＮ管理ユニット１８がネットワーク動作、ネットワーク管理、またはネットワーク保守、あるいはそれらの組合せを実行することを含む。ネットワーク動作は、ユーザ・データ割り振り要求（たとえば、読取り要求または書込み要求あるいはその両方）を認証すること、格納域の作成を管理すること、ユーザ・デバイスに対する認証証明を確立すること、分散コンピューティング・システム１０のコンポーネント（たとえば、ユーザ・デバイス、ＤＳＴ実行ユニット、またはＤＳＴ処理ユニット、あるいはそれらの組合せ）を追加／削除すること、またはＤＳＴ実行ユニット３６に対する認証証明を確立すること、あるいはそれらの組合せを含む。ネットワーク管理は、デバイスまたはユニットあるいはその両方の障害を監視すること、格納域情報を保持すること、デバイスまたはユニットあるいはその両方のアクティブ化ステータスを決定すること、デバイスまたはユニットあるいはその両方のロードを決定すること、またはシステム１０のパフォーマンス・レベルに影響する任意の他のシステム・レベル動作を決定すること、あるいはそれらの組合せを含む。ネットワーク保守は、システム１０のデバイスまたはユニットあるいはその両方の交換、アップグレード、修理、または拡張、あるいはそれらの組合せを推進することを含む。
【００２３】
分散コンピューティング・システム１０内のデータ記憶整合性検証をサポートするために、ＤＳＴ整合性処理ユニット２０は、「不良」または欠損の符号化されたデータ・スライスの再構築を実行する。高レベルでは、ＤＳＴ整合性処理ユニット２０は、ＤＳＴＮモジュール２２から、符号化されたデータ・スライス、または符号化されたデータ・スライスのスライス名、あるいはその両方を取り出す／リストに挙げることを定期的に試みることによって再構築を実行する。取り出された符号化スライスについて、それらは、データ破損、古いバージョンなどに起因するエラーがあるかどうかがチェックされる。スライスがエラーを含む場合、それは「不良」スライスとしてフラグが立てられる。受け取られずまたはリストに挙げられない、あるいはその両方の符号化されたデータ・スライスについては、欠損スライスとしてフラグが立てられる。不良スライスまたは欠損スライスあるいはその両方は、その後、再構築されたスライスを作成するために良好なスライスとみなされる他の取り出された符号化データ・スライスを使用して再構築される。再構築されたスライスは、ＤＳＴＮモジュール２２のメモリに記憶される。ＤＳＴ整合性処理ユニット２０は、図示されるように別個のユニットであってよく、ＤＳＴＮモジュール２２に含まれてもよく、ＤＳＴ処理ユニット１６に含まれてもよく、またはＤＳＴ実行ユニット３６間に分散されてもよく、あるいはそれらの組合せであってもよいことに留意されたい。
【００２４】
受け取られたデータに対する分散タスク処理をサポートするために、分散コンピューティング・システム１０は、２つの主要な動作、すなわち、ＤＳＴ（散在ストレージおよび／またはタスク処理）管理、ならびに受け取られたデータに対するＤＳＴ実行（その例については図３〜図１９を参照して論じる）を有する。ＤＳＴ管理の記憶部分に関して、ＤＳＴＮ管理ユニット１８は先に説明されたように機能する。ＤＳＴ管理のタスク処理に関して、ＤＳＴＮ管理ユニット１８は分散タスク処理（ＤＴＰ）管理サービスを実行する。１つのそのようなＤＴＰ管理サービスは、ＤＳＴＮ管理ユニット１８が、ユーザ・デバイス１２〜１４について個々に、またはユーザ・デバイスのグループの一部として、ＤＴＰパラメータ（たとえば、ユーザ格納域関連情報、課金情報、ユーザ・タスク情報など）を確立することを含む。
【００２５】
別のＤＴＰ管理サービスは、ＤＳＴＮ管理ユニット１８が、ＤＴＰネットワーク動作、（上述されたのと本質的に同じ）ネットワーク管理、または（上述されたのと本質的に同じ）ネットワーク保守、あるいはそれらの組合せを実行することを含む。ネットワーク動作は、以下に限定されないが、ユーザ・タスク処理要求（たとえば、有効な要求、有効なユーザなど）を認証すること、結果または部分的結果あるいはその両方を認証すること、ユーザ・デバイスに対するＤＴＰ認証証明を確立すること、分散コンピューティング・システムのコンポーネント（たとえば、ユーザ・デバイス、ＤＳＴ実行ユニット、またはＤＳＴ処理ユニット、あるいはそれらの組合せ）を追加／削除すること、またはＤＳＴ実行ユニットに対するＤＴＰ認証証明を確立すること、あるいはそれらの組合せを含む。
【００２６】
記憶されたデータに対する分散タスク処理をサポートするために、分散コンピューティング・システム１０は、２つの主要な動作、すなわち、ＤＳＴ（散在ストレージおよび／またはタスク）管理、ならびに記憶されたデータに対するＤＳＴ実行を有する。記憶されたデータに対するＤＳＴ実行に関して、第２のタイプのユーザ・デバイス１４が、ＤＳＴＮモジュール２２によって実行されるタスク要求３８を有する場合、ユーザ・デバイス１４は、そのインターフェース３０を介してタスク要求３８をＤＳＴ処理ユニット１６に送る。記憶されたデータに対するＤＳＴ実行の例については、図２７〜図３９を参照してより詳細に論じる。ＤＳＴ管理に関して、それは、受け取られたデータに対する分散タスク処理をサポートするためのＤＳＴ管理と実質的に同様である。
【００２７】
図２は、コンピューティング・コア２６の実施形態の概略ブロック図であり、コンピューティング・コア２６は、処理モジュール５０、メモリ・コントローラ５２、メイン・メモリ５４、ビデオ・グラフィック処理ユニット５５、入力／出力（ＩＯ）コントローラ５６、周辺コンポーネント相互接続（ＰＣＩ）インターフェース５８、ＩＯインターフェース・モジュール６０、少なくとも１つのＩＯデバイス・インターフェース・モジュール６２、読出し専用メモリ（ＲＯＭ）基本入出力システム（ＢＩＯＳ）６４、および１つまたは複数のメモリ・インターフェース・モジュールを含む。１つまたは複数のメモリ・インターフェース・モジュールは、ユニバーサル・シリアル・バス（ＵＳＢ）インターフェース・モジュール６６、ホスト・バス・アダプタ（ＨＢＡ）インターフェース・モジュール６８、ネットワーク・インターフェース・モジュール７０、フラッシュ・インターフェース・モジュール７２、ハード・ドライブ・インターフェース・モジュール７４、およびＤＳＴＮインターフェース・モジュール７６のうちの１つまたは複数を含む。
【００２８】
ＤＳＴＮインターフェース・モジュール７６は、従来のオペレーティング・システム（ＯＳ）ファイル・システム・インターフェース（たとえば、ネットワーク・ファイル・システム（ＮＦＳ）、フラッシュ・ファイル・システム（ＦＦＳ）、ディスク・ファイル・システム（ＤＦＳ）、ファイル転送プロトコル（ＦＴＰ）、ウェブベースの分散オーサリングおよびバージョン管理（ＷｅｂＤＡＶ）など）、またはブロック・メモリ・インターフェース（たとえば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）など）、あるいはその両方を模倣するように機能する。ＤＳＴＮインターフェース・モジュール７６またはネットワークインターフェース・モジュール７０あるいはその両方は、図１のユーザ・デバイス１４のインターフェース３０として機能することができる。さらに、ＩＯデバイス・インターフェース・モジュール６２またはメモリ・インターフェース・モジュールあるいはその両方は、集合的または個別にＩＯポートと呼ばれ得ることに留意されたい。
【００２９】
図３は、散在ストレージおよびタスク処理動作を実行する分散コンピューティング・システムの例の図である。分散コンピューティング・システムは、（図１のユーザ・デバイス１４またはＤＳＴ処理ユニット１６あるいはその両方の中にあり得る）ＤＳＴ（散在ストレージおよび／またはタスク）クライアント・モジュール３４、ネットワーク２４、（図１のＤＳＴＮモジュール２２の少なくとも部分を形成する）図１の２つ以上のＤＳＴ実行ユニット３６を含む複数のＤＳＴ実行ユニット１〜ｎ、ＤＳＴ管理モジュール（図示せず）、ならびにＤＳＴ整合性検証モジュール（図示せず）を含む。ＤＳＴクライアント・モジュール３４は、アウトバウンドＤＳＴ処理部８０およびインバウンドＤＳＴ処理部８２を含む。ＤＳＴ実行ユニット１〜ｎのそれぞれは、コントローラ８６、処理モジュール８４、メモリ８８、ＤＴ（分散タスク）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。
【００３０】
動作の例として、ＤＳＴクライアント・モジュール３４は、データ９２、およびデータ９２に対して実行されるべき１つまたは複数のタスク９４を受け取る。データ９２は、任意のサイズおよび任意のコンテンツを有してよく、サイズ（たとえば数テラバイトより大きい）、コンテンツ（たとえばセキュア・データなど）、またはタスク（たとえばＭＩＰＳ集約）、あるいはそれらの組合せに応じて、データに対するタスクの分散処理が望ましい。たとえば、データ９２は、１つもしくは複数のデジタル書籍、会社の電子メールのコピー、大規模なインターネット検索、ビデオ・セキュリティ・ファイル、１つもしくは複数の娯楽ビデオ・ファイル（たとえば、テレビ番組、映画など）、データ・ファイル、または任意の他の大量の（たとえば数テラバイトより大きい）データ、あるいはそれらの組合せであり得る。
【００３１】
ＤＳＴクライアント・モジュール３４内で、アウトバウンドＤＳＴ処理部８０がデータ９２およびタスク９４を受け取る。アウトバウンドＤＳＴ処理部８０は、データ９２を処理してスライス・グルーピング９６を作成する。そのような処理の例として、アウトバウンドＤＳＴ処理部８０は、データ９２をパーティション化して複数のデータ・パーティションにする。各データ・パーティションについて、アウトバウンドＤＳＴ処理部８０は、データ・パーティションを散在ストレージ（ＤＳ）エラー符号化して符号化されたデータ・スライスを作成し、符号化されたデータ・スライスをグループ化してスライス・グルーピング９６にする。加えて、アウトバウンドＤＳＴ処理部８０は、タスク９４をパーティション化して部分的タスク９８にする。ここで、部分的タスク９８の数は、スライス・グルーピング９６の数に対応し得る。
【００３２】
次いで、アウトバウンドＤＳＴ処理部８０は、スライス・グルーピング９６および部分的タスク９８を、ネットワーク２４を介して図１のＤＳＴＮモジュール２２のＤＳＴ実行ユニット１〜ｎに送る。たとえば、アウトバウンドＤＳＴ処理部８０は、スライス・グループ１および部分的タスク１をＤＳＴ実行ユニット１に送る。別の例として、アウトバウンドＤＳＴ処理部８０は、スライス・グループ＃ｎおよび部分的タスク＃ｎをＤＳＴ実行ユニット＃ｎに送る。
【００３３】
各ＤＳＴ実行ユニットは、そのスライス・グループ９６に対してその部分的タスク９８を実行して部分的結果１０２を作成する。たとえば、ＤＳＴ実行ユニット＃１は、スライス・グループ＃１に対して部分的タスク＃１を実行して結果として部分的結果＃１を作成する。より具体的な例として、スライス・グループ＃１は、デジタル書籍のシリーズのデータ・パーティションに対応し、部分的タスク＃１は、特定のフレーズを求めて検索し、どこでフレーズが発見されたかを記録し、フレーズのカウントを確定することに対応する。このより具体的な例では、部分的結果＃１は、どこでフレーズが発見されたかに関する情報を含み、またフレーズのカウントを含む。
【００３４】
それぞれの部分的結果１０２の生成が完了すると、ＤＳＴ実行ユニットは、ネットワーク２４を介して、それらの部分的結果１０２を、ＤＳＴクライアント・モジュール３４のインバウンドＤＳＴ処理部８２に送る。インバウンドＤＳＴ処理部８２は、受け取った部分的結果１０２を処理して結果１０４を作成する。上記の段落の具体的な例を続けると、インバウンドＤＳＴ処理部８２は、ＤＳＴ実行ユニット３６のそれぞれからのフレーズのカウントを組み合わせて、合計フレーズ・カウントを作成する。加えて、インバウンドＤＳＴ処理部８２は、それぞれのデータ・パーティション内の各ＤＳＴ実行ユニット３６からの「どこでフレーズが発見されたか」情報を組み合わせて、デジタル書籍のシリーズについての「どこでフレーズが発見されたか」情報を作成する。
【００３５】
動作の別の例では、ＤＳＴクライアント・モジュール３４は、ＤＳＴ実行ユニット３６のメモリ（たとえば、ＤＳＴＮモジュールのメモリ）内の記憶されたデータの取出しを要求する。この例では、タスク９４は、ＤＳＴＮモジュールのメモリに記憶されたデータを取り出すことである。したがって、アウトバウンドＤＳＴ処理部８０は、タスク９４を複数の部分的タスク９８に変換し、部分的タスク９８をそれぞれのＤＳＴ実行ユニット１〜ｎに送る。
【００３６】
記憶されたデータを取り出す部分的タスク９８に応答して、ＤＳＴ実行ユニット３６は、対応する符号化されたデータ・スライス１００を識別し、それらを取り出す。たとえば、ＤＳＴ実行ユニット＃１は、部分的タスク＃１を受け取り、それに応答して取り出されるスライス＃１を取り出す。ＤＳＴ実行ユニット３６は、それぞれの取り出されたスライス１００をネットワーク２４を介してインバウンドＤＳＴ処理部８２に送る。
【００３７】
インバウンドＤＳＴ処理部８２は、取り出されたスライス１００をデータ９２に変換する。たとえば、インバウンドＤＳＴ処理部８２は、取り出されたスライス１００をグルーピング解除して、データ・パーティションごとの符号化されたスライスを作成する。次いで、インバウンドＤＳＴ処理部８２は、データ・パーティションごとの符号化されたスライスをＤＳエラー復号（DS error decode）して、データ・パーティションを作成する。インバウンドＤＳＴ処理部８２は、データ・パーティションをパーティション解除してデータ９２を再捕捉する。
【００３８】
図４は、図１のＤＳＴＮモジュール２２（たとえば、複数のｎ個のＤＳＴ実行ユニット３６）にネットワーク２４を介して結合された図１のＤＳＴクライアント・モジュール３４のアウトバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理部８０の実施形態の概略ブロック図である。アウトバウンドＤＳＴ処理部８０は、データ・パーティション化モジュール１１０、散在ストレージ（ＤＳ）エラー符号化モジュール１１２、グルーピング選択モジュール１１４、制御モジュール１１６、および分散タスク制御モジュール１１８を含む。
【００３９】
動作の例として、データ・パーティション化モジュール１１０は、データ９２をパーティション化して複数のデータ・パーティション１２０にする。パーティションの数およびパーティションのサイズは、データ９２（たとえば、そのサイズ、そのコンテンツなど）、実行される対応するタスク９４（たとえば、単純な、複雑な、単一のステップ、複数のステップなど）、ＤＳ符号化パラメータ（たとえば、ピラー幅、復号閾値、書込み閾値、セグメント・セキュリティ・パラメータ、スライス・セキュリティ・パラメータなど）、ＤＳＴ実行ユニット３６の性能（たとえば、処理リソース、処理リソースの可用性など）、または、ユーザ、システム管理者、もしくは他のオペレータ（人間もしくは自動）によって行われ得る入力、あるいはそれらの組合せに基づいて、制御１６０を介して制御モジュール１１６によって選択することができる。たとえば、データ・パーティション化モジュール１１０は、データ９２（たとえば、１００テラバイト）をパーティション化して、各々のサイズが１ギガバイトの１００，０００個のデータ・セグメントにする。あるいは、データ・パーティション化モジュール１１０は、データ・セグメントのいくつかが異なるサイズ、同じサイズ、またはそれらの組合せである複数のデータ・セグメントになるように、データ９２をパーティション化する。
【００４０】
ＤＳエラー符号化モジュール１１２は、直列様式または並列様式あるいはその組合せでデータ・パーティション１２０を受け取る。各データ・パーティション１２０について、ＤＳエラー符号化モジュール１１２は、制御モジュール１１６からの制御情報１６０に従って、データ・パーティション１２０をＤＳエラー符号化（DS error encode）して、符号化されたデータ・スライス１２２を作成する。ＤＳエラー符号化は、データ・パーティションをデータ・セグメントにセグメント化すること、セグメント・セキュリティ処理（たとえば、暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣ）など）、エラー符号化、スライス化、またはスライス単位セキュリティ処理（たとえば暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣ）など）、あるいはそれらの組合せを含む。制御情報１６０は、所与のデータ・パーティションについてＤＳエラー符号化のどのステップがアクティブであるかを示し、アクティブなステップについては、そのステップに対するパラメータを示す。たとえば、制御情報１６０は、エラー符号化がアクティブであることを示し、エラー符号化パラメータ（たとえば、ピラー幅、復号閾値、書込み閾値、読取り閾値、エラー符号化のタイプなど）を含む。
【００４１】
グルーピング選択モジュール１１４は、データ・パーティションの符号化されたスライス１２２を、１セットのスライス・グルーピング９６にグループ化する。スライス・グルーピングの数は、特定のタスク９４について識別されたＤＳＴ実行ユニット３６の数に対応する。たとえば、５つのＤＳＴ実行ユニット３６が特定のタスク９４について識別された場合、グループ選択モジュールは、データ・パーティションの符号化されたスライス１２２をグループ化して５つのスライス・グルーピング９６にする。グルーピング選択モジュール１１４は、スライス・グルーピング９６をネットワーク２４を介して対応するＤＳＴ実行ユニット３６に出力する。
【００４２】
分散タスク制御モジュール１１８は、タスク９４を受け取り、タスク９４を部分的タスク９８のセットに変換する。たとえば、分散タスク制御モジュール１１８は、データ（たとえば書籍のシリーズ）内のどこでフレーズが出現するか、およびデータ内のフレーズの使用の総数を見出すためのタスクを受け取る。この例では、分散タスク制御モジュール１１８は、各ＤＳＴ実行ユニット３６についてタスク９４を複製して部分的タスク９８を作成する。別の例では、分散タスク制御モジュール１１８は、データ内のどこで第１のフレーズが出現するか、データ内のどこで第２のフレーズが出現するか、およびデータ内の各フレーズの使用の総数を見出すためのタスクを受け取る。この例では、分散タスク制御モジュール１１８は、第１のフレーズを見つけ出しカウントするための第１のセットの部分的タスク９８、および第２のフレーズを見つけ出しカウントするための第２のセットの部分的タスクを生成する。分散タスク制御モジュール１１８は、各ＤＳＴ実行ユニット３６に、それぞれの第１または第２あるいはその両方の部分的タスク９８を送る。
【００４３】
図５は、ステップ１２６から開始するアウトバウンド散在ストレージおよびタスク（ＤＳＴ）処理のための方法の例の論理図であり、ステップ１２６では、ＤＳＴクライアント・モジュールがデータおよび１つまたは複数の対応するタスクを受け取る。方法はステップ１２８に続き、このステップでは、ＤＳＴクライアント・モジュールが、１つまたは複数のデータ・パーティションについてのタスクをサポートするためのＤＳＴユニットの数を決定する。たとえば、ＤＳＴクライアント・モジュールは、データのサイズ、要求されたタスク、データのコンテンツ、所定の数（たとえば、ユーザに指示された数、システム管理者に決定された数など）、使用可能なＤＳＴユニット、ＤＳＴユニットの性能、またはデータの分散タスク処理に関する任意の他の因子、あるいはそれらの組合せに基づいて、タスクをサポートするためのＤＳＴユニットの数を決定することができる。ＤＳＴクライアント・モジュールは、各データ・パーティションに対して同じＤＳＴユニットを選択してもよく、各データ・パーティションに対して異なるＤＳＴユニットを選択してもよく、またはそれらの組合せを選択してもよい。
【００４４】
方法はステップ１３０に続き、このステップでは、ＤＳＴクライアント・モジュールが、分散タスク処理のために選択されたＤＳＴの数に基づいて、データの処理パラメータを決定する。処理パラメータは、データ・パーティション化情報、ＤＳ符号化パラメータ、またはスライス・グルーピング情報、あるいはそれらの組合せを含む。データ・パーティション化情報は、データ・パーティションの数、各データ・パーティションのサイズ、またはデータ・パーティションの編成（たとえば、パーティション内のデータ・ブロックの数、データ・ブロックのサイズ、およびデータ・ブロックの配列）、あるいはそれらの組合せを含む。ＤＳ符号化パラメータは、セグメント化情報、セグメント・セキュリティ情報、エラー符号化情報（たとえば、ピラー幅、復号閾値、書込み閾値、読取り閾値、生成行列のうちの１つまたは複数を含む散在ストレージ・エラー符号化機能パラメータ）、スライス化情報、またはスライス単位セキュリティ情報、あるいはそれらの組合せを含む。スライス・グルーピング情報は、選択されたＤＳＴユニットに対して符号化されたデータ・スライスをどのようにグループにするかに関する情報を含む。具体的な例として、ＤＳＴクライアント・モジュールが、タスクをサポートするために５つのＤＳＴユニットが必要とされると決定した場合、それは、エラー符号化パラメータが５のピラー幅および３の復号閾値を含むと決定する。
【００４５】
方法はステップ１３２に続き、このステップでは、ＤＳＴクライアント・モジュールが、選択されたＤＳＴユニットおよびデータ処理パラメータに基づいてタスク・パーティション化情報（たとえば、どのようにタスクをパーティション化するか）を決定する。データ処理パラメータは、処理パラメータおよびＤＳＴユニット性能情報を含む。ＤＳＴユニット性能情報は、ＤＴ（分散タスク）実行ユニットの数、各ＤＴ実行ユニットの実行性能（たとえば、ＭＩＰＳ性能、処理リソース（たとえば、マイクロプロセッサ、ＣＰＵ、デジタル・シグナル・プロセッサ、コプロセッサ、マイクロコントローラ、算術論理回路、または他のアナログまたはデジタルあるいはその両方の処理回路、あるいはそれらの組合せの量および性能））、処理リソースの可用性、メモリ情報（たとえば、タイプ、サイズ、可用性など）、または１つもしくは複数のタスクの実行に関する任意の情報、あるいはそれらの組合せを含む。
【００４６】
方法はステップ１３４に続き、このステップでは、ＤＳＴクライアント・モジュールが、処理パラメータに従ってデータを処理してスライス・グルーピングを作成する。方法はステップ１３６に続き、このステップでは、ＤＳＴクライアント・モジュールが、タスク・パーティション化情報に基づいてタスクをパーティション化して部分的タスクのセットを作成する。方法はステップ１３８に続き、このステップでは、ＤＳＴクライアント・モジュールが、スライス・グルーピングおよび対応する部分的タスクをそれぞれのＤＳＴユニットに送る。
【００４７】
図６は、アウトバウンド散在ストレージおよびタスク（ＤＳＴ）処理部の散在ストレージ（ＤＳ）エラー符号化モジュール１１２の実施形態の概略ブロック図である。ＤＳエラー符号化モジュール１１２は、セグメント処理モジュール１４２、セグメント・セキュリティ処理モジュール１４４、エラー符号化モジュール１４６、スライス化モジュール１４８、およびスライス単位セキュリティ処理モジュール１５０を含む。これらのモジュールのそれぞれは制御モジュール１１６に結合されて、それから制御情報１６０を受け取る。
【００４８】
動作の例として、セグメント処理モジュール１４２は、データ・パーティション化モジュールからデータ・パーティション１２０を受け取り、制御モジュール１１６から制御情報１６０としてセグメント化情報を受け取る。セグメント化情報は、セグメント処理モジュール１４２がデータ・パーティション１２０をどのようにセグメント化するかを示す。たとえば、セグメント化情報は、エラー符号化方式の復号閾値に基づいていくつの行にデータをセグメント化するかを示し、データ・パーティション１２０内のデータ・ブロックの数およびサイズに基づいていくつの列にデータをセグメント化するかを示し、また、いくつの列をデータ・セグメント１５２に含めるかを示す。セグメント処理モジュール１４２は、セグメント化情報に従ってデータ１２０をセグメント化してデータ・セグメント１５２にする。
【００４９】
セグメント・セキュリティ処理モジュール１４４は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったセグメント・セキュリティ情報に基づいて、データ・セグメント１５２をセキュアにする。セグメント・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえば周期的冗長検査（ＣＲＣ）など）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、セグメント・セキュリティ処理モジュール１４４は、有効にされると、データ・セグメント１５２を圧縮し、圧縮されたデータ・セグメントを暗号化し、暗号化されたデータ・セグメントに対するＣＲＣ値を生成して、セキュアなデータ・セグメント１５４を作成することができる。セグメント・セキュリティ処理モジュール１４４が有効にされない場合、それは、データ・セグメント１５２をエラー符号化モジュール１４６に渡し、またはバイパスされてデータ・セグメント１５２がエラー符号化モジュール１４６に提供される。
【００５０】
エラー符号化モジュール１４６は、制御モジュール１１６から制御情報１６０として受け取ったエラー訂正符号化パラメータに従って、セキュア・データ・セグメント１５４を符号化する。エラー訂正符号化パラメータ（たとえば、散在ストレージ・エラー・コード化パラメータとも呼ばれる）は、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、オンライン・コード化アルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正符号化パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。これらのパラメータから、エラー符号化モジュール１４６は、データ・セグメント１５４を符号化して、符号化されたデータ・セグメント１５６を作成する。
【００５１】
スライス化モジュール１４８は、制御情報１６０として受け取ったエラー訂正符号化パラメータのピラー幅に従って、符号化されたデータ・セグメント１５６をスライス化する。たとえば、ピラー幅が５である場合、スライス化モジュール１４８は、符号化されたデータ・セグメント１５６をスライス化して、５つの符号化されたデータ・スライスのセットにする。したがって、所与のデータ・パーティションに対する複数の符号化されたデータ・セグメント１５６について、スライス化モジュールは、複数のセットの符号化されたデータ・スライス１５８を出力する。
【００５２】
スライス単位セキュリティ処理モジュール１５０は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったスライス・セキュリティ情報に基づいて、各符号化されたデータ・スライス１５８をセキュアにする。スライス・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえば、ＣＲＣなど）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、スライス単位セキュリティ処理モジュール１５０は、有効にされると、符号化されたデータ・スライス１５８を圧縮し、圧縮された符号化データ・スライスを暗号化し、暗号化された符号化データ・スライスに対するＣＲＣ値を生成して、セキュアな符号化データ・スライス１２２を作成する。スライス単位セキュリティ処理モジュール１５０が有効にされない場合、それは符号化されたデータ・スライス１５８を通過させ、またはバイパスされて、符号化されたデータ・スライス１５８がＤＳエラー符号化モジュール１１２の出力になる。制御モジュール１１６が省略されてもよく、各モジュールがそれ自体のパラメータを記憶することに留意されたい。
【００５３】
図７は、散在ストレージ（ＤＳ）エラー符号化モジュールのセグメント処理の例の図である。この例では、セグメント処理モジュール１４２は、４５個のデータ・ブロック（たとえば、ｄ１〜ｄ４５）を含むデータ・パーティション１２０を受け取り、制御モジュールからセグメント化情報（すなわち制御情報１６０）を受け取り、制御情報１６０に従ってデータ・パーティション１２０をセグメント化してデータ・セグメント１５２を作成する。各データ・ブロックは、他のデータ・ブロックと同じサイズまたは異なるサイズであり得る。加えて、各データ・ブロックのサイズは、数バイトから数メガバイトのデータであってよい。前述のように、セグメント化情報は、データ・パーティションをいくつの行にセグメント化するか、データ・パーティションをいくつの列にセグメント化するか、およびデータ・セグメントにいくつの列を含めるかを示す。
【００５４】
この例では、エラー符号化方式の復号閾値は３であり、データ・パーティションを分割する行の数は３である。各行の列の数は１５に設定され、これはデータ・ブロックの数およびサイズに基づく。データ・パーティションのデータ・ブロックは行および列に順に配列される（すなわち、第１の行は最初の１５個のデータ・ブロックを含み、第２の行は次の１５個のデータ・ブロックを含み、第３の行は最後の１５個のデータ・ブロックを含む）。
【００５５】
データ・ブロックが望ましい順に配列された状態で、それらはセグメント化情報に基づいてデータ・セグメントに分割される。この例では、データ・パーティションは８つのデータ・セグメントに分割され、最初の７つは３行で２列を含み、最後は３行で１列を含む。８個のデータ・セグメントの第１の行は、最初の１５個のデータ・ブロックの順序になり、８個のデータ・セグメントの第２の行は、次の１５個のデータ・ブロックの順序になり、８個のデータ・セグメントの第３の行は、最後の１５個のデータ・ブロックの順序になることに留意されたい。データ・ブロックの数、データ・ブロックのセグメントへのグループ化、およびデータ・ブロックのサイズは、望ましい分散タスク処理機能に対応して異なり得ることに留意されたい。
【００５６】
図８は、図７のデータ・セグメントを処理する分散エラー符号化のエラー符号化およびスライス化処理の例の図である。この例では、データ・セグメント１は、３つの行を含み、各行は、符号化のための１つのワードとして扱われる。したがって、データ・セグメント１は、符号化のための３つのワード、すなわち、データ・ブロックｄ１およびｄ２を含むワード１、データ・ブロックｄ１６およびｄ１７を含むワード２、ならびにデータ・ブロックｄ３１およびｄ３２を含むワード３を含む。データ・セグメント２〜７のそれぞれは３つのワードを含み、各ワードは２つのデータ・ブロックを含む。データ・セグメント８は３つのワードを含み、各ワードは単一のデータ・ブロック（たとえば、ｄ１５、ｄ３０、およびｄ４５）を含む。
【００５７】
動作において、エラー符号化モジュール１４６およびスライス化モジュール１４８は、制御情報１６０としてのエラー訂正符号化パラメータに従って、各データ・セグメントを符号化されたデータ・スライスのセットに変換する。より具体的には、エラー訂正符号化パラメータが、ユニティ行列（unity matrix）リードソロモンベースの符号化アルゴリズム、５つのピラー、および３の復号閾値を示すとき、データ・セグメントに対する符号化されたデータ・スライスのセットの最初の３つの符号化されたデータ・スライスが、データ・セグメントの対応するワードと実質的に同様である。たとえば、ユニティ行列リードソロモンベースの符号化アルゴリズムがデータ・セグメント１に適用されると、（たとえばデータ・セグメント１に対応する）符号化されたデータ・スライスの第１のセットの第１の符号化されたデータ・スライスのコンテンツ（ＤＳ１＿ｄ１＆２）は、第１のワードのコンテンツ（たとえばｄ１＆ｄ２）と実質的に同様であり、符号化されたデータ・スライスの第１のセットの第２の符号化されたデータ・スライスのコンテンツ（ＤＳ１＿ｄ１６＆１７）は、第２のワードのコンテンツ（たとえばｄ１６＆ｄ１７）と実質的に同様であり、符号化されたデータ・スライスの第１のセットの第３の符号化されたデータ・スライスのコンテンツ（ＤＳ１＿ｄ３１＆３２）は、第３のワードのコンテンツ（たとえばｄ３１＆ｄ３２）と実質的に同様である。
【００５８】
符号化されたデータ・スライスの第１のセットの第４および第５の符号化されたデータ・スライスのコンテンツ（たとえばＥＳ１＿１およびＥＳ１＿２）は、第１のデータ・セグメントの第１〜第３のワードに基づくエラー訂正データを含む。このような符号化およびスライス化方式を用いて、５つの符号化されたデータ・スライスのうちの任意の３つを取り出すことにより、データ・セグメントを正確に再構成することが可能になる。
【００５９】
データ・セグメント２〜７の符号化およびスライスは、データ・セグメント１の符号化されたデータ・スライスのセットと同様の符号化されたデータ・スライスのセットを生じさせる。たとえば、符号化されたデータ・スライスの第２のセットの第１の符号化されたデータ・スライスのコンテンツ（ＤＳ２＿ｄ３＆４）は、第１のワードのコンテンツ（たとえばｄ３＆ｄ４）と実質的に同様であり、符号化されたデータ・スライスの第２のセットの第２の符号化されたデータ・スライスのコンテンツ（ＤＳ２＿ｄ１８＆１９）は、第２のワードのコンテンツ（たとえばｄ１８＆ｄ１９）と実質的に同様であり、符号化されたデータ・スライスの第２のセットの第３の符号化されたデータ・スライスのコンテンツ（ＤＳ２＿ｄ３３＆３４）は、第３のワードのコンテンツ（たとえばｄ３３＆ｄ３４）と実質的に同様である。符号化されたデータ・スライスの第２のセットの第４および第５の符号化されたデータ・スライスのコンテンツ（たとえばＥＳ１＿１およびＥＳ１＿２）は、第２のデータ・セグメントの第１〜第３のワードに基づくエラー訂正データを含む。
【００６０】
図９は、制御モジュールからの制御情報１６０としてのグループ選択情報に従うアウトバウンド散在ストレージおよびタスク（ＤＳＴ）処理のグルーピング選択処理の例の図である。データ・パーティション１２２の符号化されたスライスは、制御情報１６０に従ってグループ化されてスライス・グルーピング９６が作成される。この例では、グルーピング選択モジュール１１４は、符号化されたデータ・スライスを５つのスライス・グルーピング（たとえば、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールの各ＤＳＴ実行ユニットに対して１つ）に編成する。具体的な例として、グルーピング選択モジュール１１４は、ＤＳＴ実行ユニット＃１に対する第１のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第１の符号化されたスライスを含む。したがって、第１のＤＳＴ実行ユニットは、データ・ブロック１〜１５に対応する符号化されたデータ・スライス（たとえば、連続したデータの符号化されたデータ・スライス）を受け取る。
【００６１】
グルーピング選択モジュール１１４はまた、ＤＳＴ実行ユニット＃２に対する第２のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第２の符号化されたスライスを含む。したがって、第２のＤＳＴ実行ユニットは、データ・ブロック１６〜３０に対応する符号化されたデータ・スライスを受け取る。グルーピング選択モジュール１１４はさらに、ＤＳＴ実行ユニット＃３に対する第３のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第３の符号化されたスライスを含む。したがって、第３のＤＳＴ実行ユニットは、データ・ブロック３１〜４５に対応する符号化されたデータ・スライスを受け取る。
【００６２】
グルーピング選択モジュール１１４は、ＤＳＴ実行ユニット＃４に対する第４のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第４の符号化されたスライスを含む。したがって、第４のＤＳＴ実行ユニットは、第１のエラー符号化情報に対応する符号化されたデータ・スライス（たとえば、エラー・コード化（ＥＣ）データの符号化されたデータ・スライス）を受け取る。グルーピング選択モジュール１１４はさらに、ＤＳＴ実行ユニット＃５に対する第５のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第５の符号化されたスライスを含む。したがって、第５のＤＳＴ実行ユニットは、第２のエラー符号化情報に対応する符号化されたデータ・スライスを受け取る。
【００６３】
図１０は、上述の図を詳しく説明する、データ９２をスライス・グループに変換する例の図である。図示されるように、データ９２は、パーティション化機能１６４に従って複数のデータ・パーティション（１〜ｘ、ここでｘは４より大きい整数）にパーティション化される。各データ・パーティション（またはデータのチャンクセット）は、先に論じられたように、符号化およびグループ化機能１６６によって符号化されスライス・グルーピングにグループ化される。所与のデータ・パーティションに関して、スライス・グルーピングが散在ストレージおよびタスク（ＤＳＴ）実行ユニットに送られる。データ・パーティションごとに、ＤＳＴ実行ユニットへのスライス・グルーピングの順序付けが変わり得る。
【００６４】
たとえば、データ・パーティション＃１のスライス・グルーピングは、第１のＤＳＴ実行部が、第１のデータ・パーティションの第１の連続データ・チャンクに対応する、符号化されたデータ・スライスのセットのそれぞれの第１の符号化されたデータ・スライスを受け取り（たとえば図９参照）、第２のＤＳＴ実行部が、第１のデータ・パーティションの第２の連続データ・チャンクに対応する、符号化されたデータ・スライスのセットのそれぞれの第２の符号化されたデータ・スライスを受け取るように、ＤＳＴ実行ユニットに送られる。
【００６５】
第２のデータ・パーティションに関して、スライス・グルーピングは、第１のデータ・パーティションに関して行われたのと異なる順序でＤＳＴ実行ユニットに送られ得る。たとえば、第２のデータ・パーティションの第１のスライス・グルーピング（たとえばスライス・グループ２＿１）は第２のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第２のスライス・グルーピング（たとえばスライス・グループ２＿２）は第３のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第３のスライス・グルーピング（たとえばスライス・グループ２＿３）は第４のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第４のスライス・グルーピング（たとえば、第１のエラー・コード化情報を含むスライス・グループ２＿４）は第５のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第５のスライス・グルーピング（たとえば、第２のエラー・コード化情報を含むスライス・グループ２＿５）は第１のＤＳＴ実行ユニットに送られる。
【００６６】
スライス・グルーピングをＤＳＴ実行ユニットのセットに送るパターンは、データ・パーティションごとに、予測パターンまたはランダム・パターンあるいはその組合せで変わり得る。加えて、データ・パーティションごとに、ＤＳＴ実行ユニットのセットが変更され得る。たとえば、第１のデータ・パーティションについてＤＳＴ実行ユニット１〜５が使用され、第２のデータ・パーティションについてＤＳＴ実行ユニット６〜１０が使用され、第３のデータ・パーティションについてＤＳＴ実行ユニット３〜７が使用されるなどにしてもよい。また、図示されているように、データ・パーティションのスライス・グルーピングと共に、タスクが、ＤＳＴ実行ユニットに送られる部分的タスクに分割される。
【００６７】
図１１は、ＤＳＴ（散在ストレージおよび／またはタスク）実行ユニットの実施形態の概略ブロック図であり、ＤＳＴ実行ユニットは、インターフェース１６９、コントローラ８６、メモリ８８、１つまたは複数のＤＴ（分散タスク）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。メモリ８８は、かなりの数の符号化されたデータ・スライス（たとえば、数千から数億のスライス）を記憶するために十分なサイズがあり、１つもしくは複数のハード・ドライブまたは１つもしくは複数のソリッドステート・メモリ・デバイス（たとえば、フラッシュ・メモリ、ＤＲＡＭなど）あるいはその両方を含み得る。
【００６８】
スライス・グループを記憶する例において、ＤＳＴ実行モジュールは、インターフェース１６９を介してスライス・グルーピング９６（たとえばスライス・グループ＃１）を受け取る。スライス・グルーピング９６は、パーティションごとに、連続データの符号化されたデータ・スライスまたはエラー・コード化（ＥＣ）データの符号化されたデータ・スライスを含む。スライス・グループ＃１について、ＤＳＴ実行モジュールは、パーティション＃１および＃ｘ（ならびに場合によっては３とｘの間の他のパーティション）の連続データの符号化されたデータ・スライスを受け取り、また、パーティション＃２および＃３（ならびに場合によっては３とｘの間の他のパーティション）のＥＣデータの符号化されたデータ・スライスを受け取る。連続データの符号化されたデータ・スライス、およびエラー・コード化（ＥＣ）データの符号化されたデータ・スライスの例については、図９を参照して論じられている。メモリ８８は、それがコントローラ８６から受け取ったメモリ制御情報１７４に従って、スライス・グルーピング９６の符号化されたデータ・スライスを記憶する。
【００６９】
コントローラ８６（たとえば、処理モジュール、ＣＰＵなど）は、メモリ制御情報１７４を生成し、その生成は、部分的タスク９８、および分散コンピューティング情報（たとえば、ユーザ情報（たとえば、ユーザＩＤ、分散コンピューティング許可、データアクセス許可など）、格納域情報（たとえば、ユーザに割り当てられた仮想メモリ、ユーザ・グループ、タスク処理のための一時記憶など）、タスク妥当性確認情報など）に基づく。たとえば、コントローラ８６は、分散コンピューティング情報を考慮して部分的タスク９８を解釈して、要求元がタスク９８を実行することを承認されるか、データにアクセスすることを承認されるか、またはこの特定のデータに対してタスクを実行することを承認されるか、あるいはそれらの組合せを決定する。要求元が承認された場合、コントローラ８６は、タスク９８または別の入力あるいはその両方に基づいて、スライス・グルーピング９６の符号化されたデータ・スライスが一時的に記憶されるべきかあるいは永続的に記憶されるべきかを決定する。上記に基づいて、コントローラ８６は、スライス・グルーピング９６の符号化されたデータ・スライスをメモリ８８に書き込むため、およびスライス・グルーピング９６が一時的に記憶されるかあるいは永続的に記憶されるかを示すためにメモリ制御情報１７４を生成する。
【００７０】
スライス・グルーピング９６がメモリ８８に記憶されて、コントローラ８６は部分的タスク９８の実行を推進する。一例では、コントローラ８６は、ＤＴ実行モジュール９０の性能を考慮して部分的タスク９８を解釈する。そうした性能は、ＭＩＰＳ性能、処理リソース（たとえば、マイクロプロセッサ、ＣＰＵ、デジタル・シグナル・プロセッサ、コプロセッサ、マイクロコントローラ、算術論理回路、または任意の他のアナログまたはデジタルあるいはその両方の処理回路、あるいはそれらの組合せの量および性能）、処理リソースの可用性などのうちの１つまたは複数を含む。コントローラ８６は、ＤＴ実行モジュール９０が十分な性能を有すると決定した場合、タスク制御情報１７６を生成する。
【００７１】
タスク制御情報１７６は、包括的命令（たとえば、記憶されたスライス・グルーピングに対してタスクを実行する）または一連の操作コードであり得る。前者の例では、ＤＴ実行モジュール９０が、望ましいタスク９８を実行するように特に構成された（固定またはプログラムされた）コプロセッサ機能を含む。後者の例では、ＤＴ実行モジュール９０が、特定のタスク９８に対応するアルゴリズムをコントローラが記憶する汎用プロセッサ・トポロジを含む。この例では、コントローラ８６は、アルゴリズムの操作コード（たとえば、アセンブリ言語、プログラミング言語のソース・コード、オブジェクトコードなど）を実行のためにＤＴ実行モジュール９０に提供する。
【００７２】
タスク９８の性質に応じて、ＤＴ実行モジュール９０は、メモリ８８にまたはＤＴ実行モジュール９０内のキャッシュ・メモリ（図示せず）に記憶される、中間の部分的結果１０２を生成することができる。いずれの場合も、ＤＴ実行モジュール９０が部分的タスク９８の実行を完了したとき、それが１つまたは複数の部分的結果１０２を出力する。その部分的結果１０２もメモリ８８に記憶され得る。
【００７３】
コントローラ８６が、ＤＴ実行モジュール９０の性能が部分的タスク９８をサポートできるかどうかを解釈しているとき、コントローラ８６が、ＤＴ実行モジュール９０がタスク９８を十分にサポートできない（たとえば、適切なリソースを持っていない、十分な使用可能なリソースを持っていない、使用可能なリソースが遅すぎるなど）と決定した場合、それは、部分的タスク９８が完全にオフロードされるべきかそれとも部分的にオフロードされるべきかを決定する。
【００７４】
コントローラ８６が、部分的タスク９８が完全にオフロードされるべきと決定した場合、それは、ＤＳＴ制御情報１７８を生成し、ＤＳＴクライアント・モジュール３４に提供する。ＤＳＴ制御情報１７８は、部分的タスク９８、スライス・グルーピング９６に関するメモリ・ストレージ情報、および分散命令を含む。分散命令は、部分的タスク９８をサブ部分的タスク１７２に分割し、スライス・グルーピング９６をサブ・スライス・グルーピング１７０に分割し、他のＤＳＴ実行ユニットを識別するように、ＤＳＴクライアント・モジュール３４に命令する。ＤＳＴクライアント・モジュール３４は、図３〜図１０のＤＳＴクライアント・モジュール３４と同様に機能して、分散命令に従ってサブ部分的タスク１７２およびサブ・スライス・グルーピング１７０を生成する。
【００７５】
ＤＳＴクライアント・モジュール３４は、タスクがオフロードされた先のＤＳＴ実行ユニットからインターフェース１６９を介してＤＳＴフィードバック１６８（たとえばサブ部分的結果）を受け取る。ＤＳＴクライアント・モジュール３４は、サブ部分的結果をＤＳＴ実行ユニットに提供し、ＤＳＴ実行ユニットが、サブ部分的結果を処理して部分的結果１０２を生成する。
【００７６】
コントローラ８６が、部分的タスク９８が部分的にオフロードされるべきと決定した場合、それは、タスク９８またはスライス・グルーピング９６あるいはその両方のどの部分がローカルに処理されるべきか、およびどの部分がオフロードされるべきかを決定する。ローカルに処理されている部分については、コントローラ８６は、先に論じられたようにタスク制御情報１７６を生成する。オフロードされている部分については、コントローラ８６は、先に論じられたようにＤＳＴ制御情報１７８を生成する。
【００７７】
ＤＳＴクライアント・モジュール３４が、タスクの一部分がオフロードされた先のＤＳＴ実行ユニットからＤＳＴフィードバック１６８（たとえばサブ部分的結果）を受け取ると、それは、サブ部分的結果をＤＴ実行モジュール９０に提供する。ＤＴ実行モジュール９０は、そのサブ部分的結果を、それが作り出したサブ部分的結果と共に処理して、部分的結果１０２を作成する。
【００７８】
さらに、メモリ８８はＤＴ実行モジュール９０が部分的結果１０２または結果１０４あるいはその両方をメモリ８８に記憶する場合、記憶されたスライス１００、記憶された結果１０４、部分的結果１０２のうちの１つまたは複数を取り出すために利用され得る。たとえば、部分的タスク９８が取出し要求を含むとき、コントローラ８６は、メモリ制御１７４をメモリ８８に出力して、スライス１００または結果１０４あるいはその両方の取出しを推進する。
【００７９】
図１２は、散在ストレージおよびタスク（ＤＳＴ）実行ユニットの動作の例の概略ブロック図であり、ＤＳＴユニットは、符号化されたデータ・スライスを記憶し、それに対するタスクを実行する。スライス・グルーピング１のパーティション１の符号化されたデータ・スライスを記憶するために、コントローラ８６は、メモリ制御情報１７４として書込みコマンドを生成して、符号化されたスライスがメモリ８８内の（たとえば、一時的または永続的な）望ましい位置に記憶されるようにする。
【００８０】
符号化されたスライスが記憶されると、コントローラ８６は、タスク制御情報１７６を分散タスク（ＤＴ）実行モジュール９０に提供する。タスク制御情報１７６に従ってタスクを実行する第１のステップとして、ＤＴ実行モジュール９０がメモリ８８から符号化されたスライスを取り出す。次いで、ＤＴ実行モジュール９０は、データ・パーティションの連続データ・ブロックを再構成する。この例で示されるように、データ・パーティション１の再構成された連続データ・ブロックは、データ・ブロック１〜１５（たとえばｄ１〜ｄ１５）を含む。
【００８１】
連続データ・ブロックが再構成されると、ＤＴ実行モジュール９０は再構成された連続データ・ブロックに対してタスクを実行する。たとえば、タスクは、再構成された連続データ・ブロックを特定のワードもしくはフレーズを求めて検索すること、再構成された連続データ・ブロックにおいてどこで特定のワードもしくはフレーズが出現したかを識別すること、または再構成された連続データ・ブロックにおける特定のワードもしくはフレーズの出現をカウントすること、あるいはそれらの組合せであり得る。ＤＳＴ実行ユニットは、スライス・グルーピング１における他のパーティションの符号化されたデータ・スライスについて同様の方法を続ける。前述のユニティ行列エラー符号化方式を使用すると、連続データの符号化されたデータ・スライスが破損していないならば、それらの復号がデータを抽出する比較的簡単なプロセスであることに留意されたい。
【００８２】
しかしながら、連続データの符号化されたデータ・スライスが破損（または欠損）している場合、それは、破損した符号化されたデータ・スライスの符号化されたデータ・スライスのセットの他の符号化されたデータ・スライスを記憶している他のＤＳＴ実行ユニットにアクセスすることによって再構築され得る。この例では、破損した符号化されたデータ・スライスを有するＤＳＴ実行ユニットが、他のＤＳＴ実行ユニットからセット内の（連続データおよびエラー・コード化データの）少なくとも３つの符号化されたデータ・スライスを取り出す（前述のように、たとえば、ピラー幅が５であり、復号閾値が３である）。ＤＳＴ実行ユニットは、取り出されたデータ・スライスをＤＳエラー符号化パラメータを使用して復号して、対応するデータ・セグメントを再捕捉する。次いで、ＤＳＴ実行ユニットは、ＤＳエラー符号化パラメータを使用してデータ・セグメントを再符号化して、破損した符号化されたデータ・スライスを再構築する。符号化されたデータ・スライスが再構築されると、ＤＳＴ実行ユニットは前述されたように機能する。
【００８３】
図１３は、ネットワーク２４を介して散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールのＤＳＴ実行ユニットに結合されたＤＳＴクライアント・モジュールのインバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理部８２の実施形態の概略ブロック図である。インバウンドＤＳＴ処理部８２は、グルーピング解除モジュール１８０、ＤＳ（散在ストレージ）エラー復号モジュール１８２、データ・パーティション解除モジュール１８４、制御モジュール１８６、および分散タスク制御モジュール１８８を含む。制御モジュール１８６または分散タスク制御モジュール１８８あるいはその両方は、アウトバウンドＤＳＴ処理部の対応するモジュールと別個のモジュールであってもよく、あるいは同じモジュールであってもよいことに留意されたい。
【００８４】
動作の例として、ＤＳＴ実行ユニットは、部分的結果１０２を作成するために対応するスライス・グルーピングに対する対応する部分的タスクの実行を完了している。インバウンドＤＳＴ処理部８２は、分散タスク制御モジュール１８８を介して部分的結果１０２を受け取る。次いで、インバウンドＤＳＴ処理部８２は、部分的結果１０２を処理して最終結果または結果１０４を作成する。たとえば、タスクが、データ内の特定のワードまたはフレーズを見つけ出すことであった場合、部分的結果１０２は、データの所定の部分のそれぞれにおける対応するＤＳＴ実行ユニットが特定のワードまたはフレーズを見つけ出した場所を示す。分散タスク制御モジュール１８８は、データの対応する部分に対する個々の部分的結果１０２を組み合わせて、データ全体としての最終結果１０４にする。
【００８５】
動作の別の例では、インバウンドＤＳＴ処理部８２は、ＤＳＴ実行ユニット（すなわちＤＳＴＮモジュール）から、記憶されたデータを取り出している。この例では、ＤＳＴ実行ユニットは、データ取出し要求に対応する符号化されたデータ・スライス１００を出力する。グルーピング解除モジュール１８０は、取り出されたスライス１００を受け取り、それらをグループ解除して、データ・パーティションごとの符号化されたデータ・スライス１２２を作成する。ＤＳエラー復号モジュール１８２は、ＤＳエラー符号化パラメータに従ってデータ・パーティションごとの符号化されたデータ・スライス１２２を復号して、データ・パーティション１２０を作成する。
【００８６】
データ・パーティション解除モジュール１８４は、データ・パーティション１２０を組み合わせてデータ９２にする。制御モジュール１８６は、モジュールのそれぞれに対する制御信号１９０を使用して、取出しスライス１００のデータ９２への変換を制御する。たとえば、制御モジュール１８６は、グルーピング解除情報をグルーピング解除モジュール１８０に提供し、ＤＳエラー符号化パラメータをＤＳエラー復号モジュール１８２に提供し、パーティション解除情報をデータ・パーティション解除モジュール１８４に提供する。
【００８７】
図１４は、インバウンドＤＳＴ処理に関する散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュールによって実行可能な方法の例の論理図である。方法はステップ１９４から開始し、このステップでは、ＤＳＴクライアント・モジュールが部分的結果を受け取る。方法はステップ１９６に続き、このステップでは、ＤＳＴクライアント・モジュールは、部分的結果に対応するタスクを取り出す。たとえば、部分的結果は、要求されたタスクに関係する要求エンティティを識別するヘッダ情報を含む。
【００８８】
方法はステップ１９８に続き、このステップでは、ＤＳＴクライアント・モジュールがタスクに基づいて結果処理情報を決定する。たとえば、タスクがデータ内の特定のワードまたはフレーズを識別することであった場合、結果処理情報は、データの対応する部分についての部分的結果を集約して最終結果を作成することを示すことになる。別の例として、タスクがデータ内の特定のワードまたはフレーズの出現をカウントすることであった場合、情報を処理する結果は、最終結果を作成するために部分的結果を足し合わせることを示すことになる。方法はステップ２００に続き、このステップでは、ＤＳＴクライアント・モジュールが結果処理情報に従って部分的結果を処理して、最終結果または結果を作成する。
【００８９】
図１５は、ＤＳＴクライアント・モジュールのインバウンド散在ストレージおよびタスク（ＤＳＴ）処理部のグルーピング解除選択処理の例の図である。一般に、これは、図９のアウトバウンドＤＳＴ処理部のグルーピング・モジュールの逆プロセスである。したがって、各データ・パーティション（たとえば、パーティション＃１）について、グルーピング解除モジュールが、ＤＳＴ実行ユニット（ＥＵ）（たとえばＤＳＴ１〜５）からの対応するスライス・グルーピングを取り出す。
【００９０】
図示されるように、ＤＳＴ実行ユニット＃１は、第１のスライス・グルーピングを提供し、第１のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第１の符号化されたスライス（たとえば、データ・ブロック１〜１５の連続データの符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃２は、第２のスライス・グルーピングを提供し、第２のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第２の符号化されたスライス（たとえば、データ・ブロック１６〜３０の連続データの符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃３は、第３のスライス・グルーピングを提供し、第３のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第３の符号化されたスライス（たとえば、データ・ブロック３１〜４５の連続データの符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃４は、第４のスライス・グルーピングを提供し、第４のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第４の符号化されたスライス（たとえば、エラー・コード化（ＥＣ）データの第１の符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃５は、第５のスライス・グルーピングを提供し、第５のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第５の符号化されたスライス（たとえば、エラー・コード化（ＥＣ）データの第１の符号化されたデータ・スライス）を含む。
【００９１】
グルーピング解除モジュールは、例で示されるように制御信号１９０によって制御されるグルーピング解除選択器１８０を使用してスライス・グルーピング（たとえば、受け取られたスライス１００）をグループ解除して、複数のセットの符号化されたデータ・スライス（たとえば、スライスのセットになるパーティションに対する取り出されたスライス１２２）を作成する。各セットは、データ・パーティションのデータ・セグメントに対応している。
【００９２】
図１６は、インバウンド散在ストレージおよびタスク（ＤＳＴ）処理部の散在ストレージ（ＤＳ）エラー復号モジュール１８２の実施形態の概略ブロック図である。ＤＳエラー復号モジュール１８２は、逆スライス単位セキュリティ処理モジュール２０２、スライス解除モジュール２０４、エラー復号モジュール２０６、逆セグメント・セキュリティ・モジュール２０８、セグメント解除処理モジュール２１０、および制御モジュール１８６を含む。
【００９３】
動作の例として、逆スライス単位セキュリティ処理モジュール２０２は、制御モジュール１８６によって有効にされたとき、制御モジュール１８６から受け取られた制御情報１９０として受け取られたスライス・セキュリティ解除情報（たとえば、図６を参照して論じられたスライス・セキュリティ情報の相補情報（compliment））に基づいて、各符号化されたデータ・スライス１２２を非セキュアにする。スライス・セキュリティ情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえばＣＲＣ検証など）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆スライス単位セキュリティ処理モジュール２０２は、有効にされると、各符号化されたデータ・スライス１２２の整合性情報（たとえばＣＲＣ値）を検証し、各検証された符号化データ・スライスを解読し、各解読された符号化データ・スライスを圧縮解除して、スライス符号化データ１５８を作成する。逆スライス単位セキュリティ処理モジュール２０２が有効にされない場合、それは、符号化データ・スライス１２２をスライス化された符号化データ１５８として渡し、またはバイパスされて、取り出された符号化データ・スライス１２２がスライス化された符号化データ１５８として提供される。
【００９４】
スライス解除モジュール２０４は、制御モジュール１８６から制御情報１９０として受け取ったエラー訂正符号化パラメータのピラー幅に従って、スライス化された符号化データ１５８をスライス解除して、符号化されたデータ・セグメント１５６にする。たとえば、ピラー幅が５である場合、スライス解除モジュール２０４は、５つの符号化されたデータ・スライスからなるセットをスライス解除して、符号化されたデータ・セグメント１５６にする。エラー復号モジュール２０６は、制御モジュール１８６から制御情報１９０として受け取ったエラー訂正復号パラメータに従って、符号化されたデータ・セグメント１５６を復号してセキュアなデータ・セグメント１５４を作成する。エラー訂正復号パラメータは、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正復号パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。
【００９５】
逆セグメント・セキュリティ処理モジュール２０８は、制御モジュール１８６によって有効にされたとき、制御モジュール１８６から制御情報１９０として受け取ったセグメント・セキュリティ情報に基づいて、セキュアにされたデータ・セグメント１５４を非セキュアにする。セグメント・セキュリティ情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえば、ＣＲＣなど）検証、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆セグメント・セキュリティ処理モジュール２０８は、有効にされると、各セキュアなデータ・セグメント１５４の整合性情報（たとえばＣＲＣ値）を検証し、各検証されたセキュアなデータ・セグメントを解読し、各解読されたセキュアなデータ・セグメントを圧縮解除して、データ・セグメント１５２を作成する。逆セグメント・セキュリティ処理モジュール２０８が有効にされない場合、それは、復号されたデータ・セグメント１５４をデータ・セグメント１５２として渡すか、またはバイパスされる。
【００９６】
セグメント解除処理モジュール２１０は、データ・セグメント１５２を受け取り、制御モジュール１８６から制御情報１９０としてセグメント解除情報を受け取る。セグメント解除情報は、セグメント解除処理モジュール２１０がどのようにデータ・セグメント１５２をセグメント解除してデータ・パーティション１２０にするかを示す。たとえば、セグメント解除情報は、データ・パーティション１２０を得るためにデータ・セグメントの行および列がどのように再配列されるかを示す。
【００９７】
図１７は、分散エラー復号モジュールのスライス解除およびエラー復号処理の例の図である。スライス解除モジュール２０４は、制御情報１９０に従って各データ・セグメントについて少なくとも復号閾値数の符号化されたデータ・スライス１５８を受け取り、符号化されたデータ１５６を提供する。この例では、復号閾値は３である。したがって、符号化されたデータ・スライス１５８の各セットは、データ・セグメントごとに３つの符号化されたデータ・スライスを有するように示されている。スライス解除モジュール２０４は、データ・セグメントごとに３つの符号化されたデータ・スライスを受け取ることができる。なぜならば、関連した散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュールが、セグメントごとに３つのみの符号化されたデータ・スライスの取出しを要求したか、または取り出された符号化データ・スライスのうち３つをデータ・セグメントごとに選択したためである。図示されているように、図８を参照して先に論じられたユニティ行列符号化に基づき、符号化されたデータ・スライスは、データをベースにした符号化データ・スライス（たとえばＤＳ１＿ｄ１＆ｄ２）、またはエラー・コードをベースにした符号化データ・スライス（たとえばＥＳ３＿１）であり得る。
【００９８】
エラー復号モジュール２０６は、制御情報１９０のエラー訂正復号パラメータに従って、各データ・セグメントの符号化されたデータ１５６を復号して、セキュアにされたセグメント１５４を作成する。この例では、データ・セグメント１は、３行を有し、各行が符号化のために１つのワードとして扱われる。したがって、データ・セグメント１は、３つのワードを含み、ワード１はデータ・ブロックｄ１およびｄ２を含み、ワード２はデータ・ブロックｄ１６およびｄ１７を含み、ワード３はデータ・ブロックｄ３１およびｄ３２を含む。データ・セグメント２〜７のそれぞれが３つのワードを含み、各ワードが２つのデータ・ブロックを含む。データ・セグメント８は３つのワードを含み、各ワードは単一のデータ・ブロック（たとえば、ｄ１５、ｄ３０、およびｄ４５）を含む。
【００９９】
図１８は、インバウンド散在ストレージおよびタスク（ＤＳＴ）処理のセグメント解除処理の例の図である。この例では、セグメント解除処理モジュール２１０は、データ・セグメント１５２（たとえば１〜８）を受け取り、制御情報１９０のセグメント解除情報に従ってデータ・セグメントのデータ・ブロックを行および列に再配列して、データ・パーティション１２０を作成する。行の数は、復号閾値（たとえば、この具体的な例では３）に基づき、列の数は、データ・ブロックの数およびサイズに基づくことに留意されたい。
【０１００】
セグメント解除モジュール２１０は、データ・ブロックの行および列をデータ・パーティション１２０に変換する。各データ・ブロックは、他のデータ・ブロックと同じサイズであっても異なるサイズであってもよいことに留意されたい。加えて、各データ・ブロックはサイズが数バイトから数メガバイトのデータであり得る。
【０１０１】
図１９は、インバウンド散在ストレージおよびタスク（ＤＳＴ）処理部におけるスライス・グループをデータ９２に変換する例の図である。図示されるように、データ９２は、複数のデータ・パーティション（１〜ｘ、ここでｘは４より大きい整数）から再構成される。各データ・パーティション（または、データのチャンク・セット）は、先に論じられたように、グルーピング解除および復号機能２１２ならびにパーティション解除機能２１４を使用してスライス・グルーピングから復号され再グループ化される。所与のデータ・パーティションについて、スライス・グルーピング（たとえば、少なくともデータ・セグメントごとの復号閾値の符号化されたデータ・スライス）がＤＳＴ実行ユニットから受け取られる。図１０を参照して論じられてように、データ・パーティションごとに、ＤＳＴ実行ユニットから受け取られるスライス・グルーピングの順序付けが異なり得る。
【０１０２】
図２０は、分散コンピューティング・システム内の散在ストレージまたは取出しあるいはその両方の例の図である。分散コンピューティング・システムは、複数の散在ストレージおよび／またはタスク（ＤＳＴ）処理クライアント・モジュール３４（１つが図示される）を含み、このモジュールは、ネットワーク２４を介して、散在ストレージおよび／またはタスク処理ネットワーク（ＤＳＴＮ）モジュールあるいは複数のＤＳＴＮモジュールに結合される。ＤＳＴクライアント・モジュール３４は、アウトバウンドＤＳＴ処理部８０およびインバウンドＤＳＴ処理部８２を含む。ＤＳＴＮモジュールは、複数のＤＳＴ実行ユニットを含む。各ＤＳＴ実行ユニットは、コントローラ８６、メモリ８８、１つまたは複数の分散タスク（ＤＴ）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。
【０１０３】
データ記憶の例において、ＤＳＴクライアント・モジュール３４が、ＤＳＴＮモジュールに記憶したいデータ９２を有する。データ９２は、ファイル（たとえば、ビデオ、オーディオ、テキスト、グラフィックスなど）、データ・オブジェクト、データ・ブロック、ファイルに対する更新、データ・ブロックに対する更新などであり得る。この例では、アウトバウンドＤＳＴ処理モジュール８０は、図２１〜図２３を参照してさらに説明されるように、データ９２を符号化されたデータ・スライス２１６に変換する。アウトバウンドＤＳＴ処理モジュール８０は、図２４を参照してさらに説明されるように、記憶のためにネットワーク２４を介してＤＳＴ実行ユニットに送る。
【０１０４】
データ取出しの例において、ＤＳＴクライアント・モジュール３４は、所望のデータ９２を求めて取出し要求をＤＳＴ実行ユニットに発行する。取出し要求は、所望のデータの符号化されたデータ・スライスを記憶する各ＤＳＴ実行ユニットに宛てる、アドレス復号閾値数のＤＳＴ実行ユニットに宛てる、アドレス読取り閾値数のＤＳＴ実行ユニットに宛てる、または他のいくつかの数のＤＳＴ実行ユニットに宛てることができる。要求に応答して、各宛先のＤＳＴ実行ユニットは、所望のデータのその符号化されたデータ・スライス１００を取り出し、それらをネットワーク２４を介してインバウンドＤＳＴ処理部８２に送る。
【０１０５】
各データ・セグメントについて、インバウンドＤＳＴ処理部８２は、少なくとも復号閾値数の符号化されたデータ・スライス１００を受け取り、それらの符号化されたデータ・スライス１００をデータ・セグメントに変換する。インバウンドＤＳＴ処理部８２は、データ・セグメントを集約して取り出されたデータ９２を作成する。
【０１０６】
図２１は、ネットワーク２４を介して散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュール（たとえば、複数のＤＳＴ実行ユニット）に結合されたＤＳＴクライアント・モジュールのアウトバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理部８０の実施形態の概略ブロック図である。アウトバウンドＤＳＴ処理部８０は、データ・パーティション化モジュール１１０、散在ストレージ（ＤＳ）エラー符号化モジュール１１２、グルーピング選択モジュール１１４、制御モジュール１１６、および分散タスク制御モジュール１１８を含む。
【０１０７】
動作の例として、データ・パーティション化モジュール１１０は、データ９２がＤＳエラー符号化モジュール１１２に直接提供されるようにバイパスされる。制御モジュール１１６は、バイパス２２０のメッセージをデータ・パーティション化モジュール１１０に出力することによって、データ・パーティション化モジュール１１０のバイパスを調整する。
【０１０８】
ＤＳエラー符号化モジュール１１２は、直列様式または並列様式あるいはその組合せでデータ９２を受け取る。ＤＳエラー符号化モジュール１１２は、制御モジュール１１６からの制御情報１６０に従って、データをＤＳエラー符号化して、符号化されたデータ・スライス２１８を作成する。ＤＳエラー符号化は、データ９２をデータ・セグメントにセグメント化すること、セグメント・セキュリティ処理（たとえば、暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど））、エラー符号化、スライス化、またはスライス単位セキュリティ処理（たとえば、暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど））、あるいはそれらの組合せを含む。制御情報１６０は、データ９２についてＤＳエラー符号化のどのステップがアクティブであるかを示し、アクティブなステップについては、そのステップに対するパラメータを示す。たとえば、制御情報１６０は、エラー符号化がアクティブであることを示し、エラー符号化パラメータ（たとえば、ピラー幅、復号閾値、書込み閾値、読取り閾値、エラー符号化のタイプなど）を含む。
【０１０９】
グルーピング選択モジュール１１４は、データ・セグメントの符号化されたスライス２１８を、スライスのピラー２１６にグループ化する。ピラーの数は、ＤＳエラー符号化パラメータのピラー幅に対応する。この例では、分散タスク制御モジュール１１８が記憶要求を推進する。
【０１１０】
図２２は、図２１の例に関する散在ストレージ（ＤＳ）エラー符号化モジュール１１２の例の概略ブロック図である。ＤＳエラー符号化モジュール１１２は、セグメント処理モジュール１４２、セグメント・セキュリティ処理モジュール１４４、エラー符号化モジュール１４６、スライス化モジュール１４８、およびスライス単位セキュリティ処理モジュール１５０を含む。これらのモジュールのそれぞれは、制御モジュール１１６に結合されて、それから制御情報１６０を受け取る。
【０１１１】
動作の例として、セグメント処理モジュール１４２は、データ９２を受け取り、また制御モジュール１１６から制御情報１６０としてセグメント化情報を受け取る。セグメント化情報は、セグメント処理モジュールがデータをどのようにセグメント化するかを示す。たとえば、セグメント化情報は、各データ・セグメントのサイズを示す。セグメント処理モジュール１４２は、セグメント化情報に従ってデータ９２をセグメント化してデータ・セグメント１５２にする。
【０１１２】
セグメント・セキュリティ処理モジュール１４４は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったセグメント・セキュリティ情報に基づいて、データ・セグメント１５２をセキュアにする。セグメント・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、セグメント・セキュリティ処理モジュール１４４は、有効にされると、データ・セグメント１５２を圧縮し、圧縮されたデータ・セグメントを暗号化し、暗号化されたデータ・セグメントに対するＣＲＣ値を生成して、セキュアなデータ・セグメントを作成することができる。セグメント・セキュリティ処理モジュール１４４が有効にされない場合、それは、データ・セグメント１５２をエラー符号化モジュール１４６に渡し、またはバイパスされてデータ・セグメント１５２がエラー符号化モジュール１４６に提供される。
【０１１３】
エラー符号化モジュール１４６は、制御モジュール１１６から制御情報１６０として受け取ったエラー訂正符号化パラメータに従って、セキュアなデータ・セグメントを符号化する。エラー訂正符号化パラメータは、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正符号化パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。これらのパラメータから、エラー符号化モジュール１４６は、データ・セグメントを符号化して、符号化されたデータ・セグメントを作成する。
【０１１４】
スライス化モジュール１４８は、エラー訂正符号化パラメータのピラー幅に従って、符号化されたデータ・セグメントをスライス化する。たとえば、ピラー幅が５である場合、スライス化モジュールは、符号化されたデータ・セグメントをスライス化して、５つの符号化されたデータ・スライスのセットにする。したがって、複数のデータ・セグメントについて、スライス化モジュール１４８は、説明されたように符号化およびスライス化機能２２２において示されるように複数のセットの符号化されたデータ・スライスを出力する。
【０１１５】
スライス単位セキュリティ処理モジュール１５０は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったスライス・セキュリティ情報に基づいて、各符号化されたデータ・スライスをセキュアにする。スライス・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、スライス単位セキュリティ処理モジュール１５０は、有効にされると、符号化されたデータ・スライスを圧縮し、圧縮された符号化データ・スライスを暗号化し、暗号化された符号化データ・スライスに対するＣＲＣ値を生成して、セキュアな符号化データ・スライス微調整を作成することができる。スライス単位セキュリティ処理モジュール１５０が有効にされない場合、それは符号化されたデータ・スライスを通過させ、またはバイパスされて、符号化されたデータ・スライス２１８がＤＳエラー符号化モジュール１１２の出力になる。
【０１１６】
図２３は、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールのメモリへの記憶のために、符号化、スライス化、およびピラーグループ化機能２２４を利用して、データ９２をピラースライス・グループに変換する例の図である。先に論じられたように、データ９２は符号化されスライス化されて、複数のセットの符号化されたデータ・スライスにされ、データ・セグメントごとに１つのセットとなる。グルーピング選択モジュールは、符号化されたデータ・スライスをデータ・スライスのピラーに編成する。この例では、ＤＳエラー符号化パラメータは、５のピラー幅および３の復号閾値を含む。したがって、各データ・セグメントについて、５つの符号化されたデータ・スライスが作り出される。
【０１１７】
グルーピング選択モジュールは、それらのセットのそれぞれの第１の符号化されたデータ・スライスを取り入れて第１のピラーを形成し、第１のピラーは第１のＤＳＴ実行ユニットに送られ得る。同様に、グルーピング選択モジュールは、セットの第２のスライスから第２のピラーを作り出し、セットの第３のスライスから第３のピラーを作り出し、セットの第４のスライスから第４のピラーを作り出し、セットの第５のスライスから第５のピラーを作り出す。
【０１１８】
図２４は、散在ストレージおよび／またはタスク（ＤＳＴ）実行ユニットの実施形態の概略ブロック図であり、ＤＳＴ実行ユニットは、インターフェース１６９、コントローラ８６、メモリ８８、１つまたは複数の分散タスク（ＤＴ）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。コンピューティング・コア２６は、１つまたは複数のＤＴ実行モジュール９０およびＤＳＴクライアント・モジュール３４を実装するために利用され得る。メモリ８８は、かなりの数の符号化されたデータ・スライス（たとえば、数千から数億のスライス）を記憶するために十分なサイズがあり、１つもしくは複数のハード・ドライブまたは１つもしくは複数のソリッドステート・メモリ・デバイス（たとえば、フラッシュ・メモリ、ＤＲＡＭなど）あるいはその両方を含み得る。
【０１１９】
スライスのピラー２１６を記憶する例において、ＤＳＴ実行ユニットは、インターフェース１６９を介してスライスのピラー２１６（たとえば、ピラー＃１スライス）を受け取る。メモリ８８は、それがコントローラ８６から受け取ったメモリ制御情報１７４に従って、スライスのピラーの符号化されたデータ・スライス２１６を記憶する。コントローラ８６（たとえば、処理モジュール、ＣＰＵなど）は、散在ストレージ情報（たとえば、ユーザ情報（たとえば、ユーザＩＤ、散在ストレージ許可、データ・アクセス許可など）、格納域情報（たとえば、ユーザに割り当てられた仮想メモリ、ユーザ・グループなど）など）に基づいて、メモリ制御情報１７４を生成する。同様に、スライスを取り出すとき、ＤＳＴ実行ユニットは、インターフェース１６９を介してスライス取出し要求を受け取る。メモリ８８は、それがコントローラ８６から受け取ったメモリ制御情報１７４に従って、スライスを取り出す。メモリ８８は、インターフェース１６９を介して要求エンティティにスライス１００を出力する。
【０１２０】
図２５は、分散エラー符号化データ９２を取り出すためのインバウンド散在ストレージおよび／またはタスク（ＤＳＴ）処理部８２の動作の例の概略ブロック図である。インバウンドＤＳＴ処理部８２は、グルーピング解除モジュール１８０、散在ストレージ（ＤＳ）エラー復号モジュール１８２、データ・パーティション解除モジュール１８４、制御モジュール１８６、および分散タスク制御モジュール１８８を含む。制御モジュール１８６または分散タスク制御モジュール１８８あるいはその両方は、アウトバウンドＤＳＴ処理部の対応するモジュールと別個のモジュールであってもよく、あるいは同じモジュールであってもよいことに留意されたい。
【０１２１】
動作の例として、インバウンドＤＳＴ処理部８２は、ＤＳＴ実行ユニット（すなわちＤＳＴＮモジュール）から、記憶されたデータ９２を取り出している。この例では、ＤＳＴ実行ユニットは、分散タスク制御モジュール１８８からのデータ取出し要求に対応する符号化されたデータ・スライスを出力する。グルーピング解除モジュール１８０は、スライスのピラー１００を受け取り、制御モジュール１８６からの制御情報１９０に従ってそれらをグループ解除して、セットの符号化されたデータ・スライス２１８を作成する。ＤＳエラー復号モジュール１８２は、制御モジュール１８６から制御情報１９０として受信したＤＳエラー符号化パラメータに従って、各セットの符号化されたデータ・スライス２１８を復号してデータ・セグメントを作成し、データ・セグメントは、取り出されたデータ９２に集約される。データ・パーティション解除モジュール１８４は、この動作モードでは、制御モジュール１８６からの制御情報１９０のバイパス信号２２６を用いてバイパスされる。
【０１２２】
図２６は、インバウンド散在ストレージおよびタスク（ＤＳＴ）処理部の散在ストレージ（ＤＳ）エラー復号モジュール１８２の実施形態の概略ブロック図である。ＤＳエラー復号モジュール１８２は、逆スライス単位セキュリティ処理モジュール２０２、スライス解除モジュール２０４、エラー復号モジュール２０６、逆セグメント・セキュリティ・モジュール２０８、およびセグメント解除処理モジュール２１０を含む。分散エラー復号モジュール１８２は、スライス解除および復号機能２２８を利用して、データ・セグメントごとの符号化されたスライス２１８をスライス解除および復号して、複数のデータ・セグメントを作成し、これらのデータ・セグメントはセグメント解除機能２３０を利用してセグメント解除されて、データ９２が復元される。
【０１２３】
動作の例として、逆スライス単位セキュリティ処理モジュール２０２は、制御モジュール１８６によって制御情報１９０を介して有効にされたとき、制御モジュール１８６から制御情報１９０として受け取ったスライス・セキュリティ解除情報（たとえば、図６を参照して論じられたスライス・セキュリティ情報の相補情報）に基づいて、各符号化されたデータ・スライス２１８を非セキュアにする。スライス・セキュリティ解除情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえばＣＲＣ検証など）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆スライス単位セキュリティ処理モジュール２０２は、有効にされると、各符号化されたデータ・スライス２１８の整合性情報（たとえばＣＲＣ値）を検証し、各検証された符号化データ・スライスを解読し、各解読された符号化データ・スライスを圧縮解除して、スライス符号化データを作成する。逆スライス単位セキュリティ処理モジュール２０２が有効にされない場合、それは、符号化データ・スライス２１８をスライス化された符号化データとして渡し、またはバイパスされて、取り出された符号化データ・スライス２１８がスライス化された符号化データとして提供される。
【０１２４】
スライス解除モジュール２０４は、制御モジュール１８６からの制御情報１９０として受け取ったエラー訂正符号化パラメータのピラー幅に従って、スライス化された符号化データをスライス解除して、符号化されたデータ・セグメントにする。たとえば、ピラー幅が５である場合、スライス解除モジュールは、５つの符号化されたデータ・スライスからなるセットをスライス解除して、符号化されたデータ・セグメントにする。あるいは、符号化されたデータ・セグメントは、（たとえば、復号閾値が３のとき）３つだけの符号化されたデータ・スライスを含むことができる。
【０１２５】
エラー復号モジュール２０６は、制御モジュール１８６から制御情報１９０として受け取ったエラー訂正復号パラメータに従って、符号化されたデータ・セグメントを復号してセキュアなデータ・セグメントを作成する。エラー訂正復号パラメータは、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正復号パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。
【０１２６】
逆セグメント・セキュリティ処理モジュール２０８は、制御モジュール１８６によって有効にされたとき、制御モジュール１８６から制御情報１９０として受け取ったセグメント・セキュリティ情報に基づいて、セキュアにされたデータ・セグメントを非セキュアにする。セグメント・セキュリティ情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえば、ＣＲＣなど）検証、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆セグメント・セキュリティ処理モジュールは、有効にされると、各セキュアなデータ・セグメントの整合性情報（たとえばＣＲＣ値）を検証し、各検証されたセキュアなデータ・セグメントを解読し、各解読されたセキュアなデータ・セグメントを圧縮解除して、データ・セグメント１５２を作成する。逆セグメント・セキュリティ処理モジュール２０８が有効にされない場合、それは、復号されたデータ・セグメント１５２をデータ・セグメントとして渡すか、またはバイパスされる。セグメント解除処理モジュール２１０は、制御モジュール１８６からの制御情報１９０に従って、データ・セグメント１５２をデータ９２に集約する。
【０１２７】
図２７は、複数の散在ストレージおよびタスク（ＤＳＴ）実行ユニット（＃１〜＃ｎ、ここで、たとえばｎは３以上の整数である）を含む散在ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。ＤＳＴ実行ユニットのそれぞれは、ＤＳＴクライアント・モジュール３４、コントローラ８６、１つまたは複数のＤＴ（分散タスク）実行モジュール９０、およびメモリ８８を含む。
【０１２８】
この例では、ＤＳＴＮモジュールは、ＤＳＴ実行ユニットのメモリに、複数のＤＳ（散在ストレージ）符号化データ（たとえば１〜ｎ、ここでｎは２以上の整数である）を記憶し、また、複数のＤＳ符号化タスク・コード（たとえば１〜ｋ、ここでｋは２以上の整数である）を記憶する。ＤＳ符号化データは、図３〜図１９を参照して説明された１つまたは複数の例に従って符号化される（たとえば、スライス・グルーピングに編成される）、あるいは図２０〜図２６を参照して説明された１つまたは複数の例に従って符号化される（たとえば、ピラーグループに編成される）ことが可能である。ＤＳ符号化データへ符号化されたデータは、任意のサイズまたは任意のコンテンツあるいはその両方を有してよい。たとえば、データは、１つもしくは複数のデジタル書籍、会社の電子メールのコピー、大規模なインターネット検索、ビデオ・セキュリティ・ファイル、１つもしくは複数の娯楽ビデオ・ファイル（たとえば、テレビ番組、映画など）、データ・ファイル、または任意の他の大量の（たとえば数テラバイトより大きい）データ、あるいはそれらの組合せであり得る。
【０１２９】
ＤＳ符号化タスク・コードへ符号化されたタスクは、単純な機能（たとえば、数学関数、論理関数、識別機能、発見機能、検索エンジン機能、置換機能など）、複雑な機能（たとえば、圧縮、人間またはコンピュータあるいはその両方の言語の翻訳、テキスト−音声変換、音声−テキスト変換など）、複数の単純または複雑なあるいはその両方の機能、１つまたは複数のアルゴリズム、１つまたは複数のアプリケーションなどであり得る。タスクは、ＤＳ符号化されたタスク・コードへ、図３〜図１９を参照して説明された１つまたは複数の例に従って符号化される（たとえば、スライス・グルーピングに編成される）、あるいは図２０〜図２６を参照して説明された１つまたは複数の例に従って符号化される（たとえば、ピラーグループに編成される）ことが可能である。
【０１３０】
動作の例として、ユーザ・デバイスまたはＤＳＴ処理ユニットのＤＳＴクライアント・モジュールが、ＤＳＴ要求をＤＳＴＮモジュールへ発行する。ＤＳＴ要求は、記憶されたデータまたはその部分を取り出す要求を含むこと、ＤＳＴ要求に含まれたデータを記憶する要求を含むこと、記憶されたデータに対して１つまたは複数のタスクを実行する要求を含むこと、ＤＳＴ要求に含まれたデータに対して１つまたは複数のタスクを実行する要求を含むことなどができる。ＤＳＴ要求が、データを記憶するまたはデータを取り出す要求を含む場合、クライアント・モジュールまたはＤＳＴＮモジュールあるいはその両方は、図３〜図１９（たとえばスライス・グルーピング）または図２０〜図２６（たとえばピラーグルーピング）あるいはその両方の１つまたは複数を参照して先に論じられたように要求を処理する。ＤＳＴ要求が、ＤＳＴ要求に含まれたデータに対して１つまたは複数のタスクを実行する要求を含む場合、ＤＳＴクライアント・モジュールまたはＤＳＴＮモジュールあるいはその両方は、図３〜図１９の１つまたは複数を参照して先に論じられたようにＤＳＴ要求を処理する。
【０１３１】
ＤＳＴ要求が、記憶されたデータに対して１つまたは複数のタスクを実行する要求を含む場合、ＤＳＴクライアント・モジュールまたはＤＳＴＮモジュールあるいはその両方は、図２８〜図３９の１つまたは複数を参照して後述されるようにＤＳＴ要求を処理する。一般に、ＤＳＴクライアント・モジュールは、データを識別するとともに、識別したデータに対してＤＳＴＮモジュールが実行すべき１つまたは複数のタスクを識別する。ＤＳＴ要求は、タスクの１回限りの実行、またはタスクの継続的実行を求める場合がある。後者の例として、会社が日常的な電子メールを作成する場合、ＤＴＳ要求が、不適切なコンテンツに関して日常的に新しい電子メールを検索し、発見した場合、そのコンテンツ、電子メール送信者、電子メール受信者、電子メール・ルーティング情報を記録し、識別した電子メールを人事部に通知することができる。
【０１３２】
図２８は、記憶されたデータに対してタスクを実行する分散コンピューティング・システムの例の概略ブロック図である。この例では、２つの散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュール１〜２が示されており、１つ目は、ユーザ・デバイスに関連付けられてよく、２つ目は、ＤＳＴ処理ユニット、または高優先度のユーザ・デバイス（たとえば、高優先許可ユーザ、システム管理者など）に関連付けられてよい。各ＤＳＴクライアント・モジュールは、記憶されたデータのリスト２３４、およびタスク・コードのリスト２３６を含む。記憶されたデータのリスト２３４は、情報を識別するデータの１つまたは複数のエントリを含み、各エントリは、ＤＳＴＮモジュール２２に記憶されたデータを識別する。情報を識別するデータ（たとえばデータＩＤ）は、データ・ファイル名、データ・ファイル・ディレクトリ項目、データのＤＳＴＮアドレス情報、データ・オブジェクト識別子などのうちの１つまたは複数を含む。タスクのリスト２３６は、情報を識別するタスク・コードの１つまたは複数のエントリを含み、各エントリは、ＤＳＴＮモジュール２２に記憶されたタスク・コードを識別する。情報を識別するタスク・コード（たとえばタスクＩＤ）は、タスク・ファイル名、タスク・ファイル・ディレクトリ項目、タスクのＤＳＴＮアドレス情報、タスクを識別する他のタイプの識別子などのうちの１つまたは複数を含む。
【０１３３】
図示されるように、データのリスト２３４およびタスクのリスト２３６のそれぞれは、第１のＤＳＴクライアント・モジュールについてのエントリの数が、第２のＤＳＴクライアント・モジュールの対応するリストのそれよりも小さい。これは、第１のＤＳＴクライアント・モジュールに関連付けられたユーザ・デバイスが、第２のＤＳＴクライアント・モジュールに関連付けられたデバイスよりも分散コンピューティング・システムにおける特権が少ないために生じることがある。あるいは、これは、第１のＤＳＴクライアント・モジュールに関連付けられたユーザ・デバイスが、第２のＤＳＴクライアント・モジュールに関連付けられたデバイスよりも少ないユーザにサービスし、それに応じて分散コンピューティング・システムによって制約されるために生じることがある。さらに別の可能性として、これは、分散コンピューティング・システムによる制約により生じるのではなく、単に、第１のＤＳＴクライアント・モジュールに関連付けられたユーザ・デバイスのオペレータが、第２のＤＳＴクライアント・モジュールに関連付けられたデバイスのオペレータよりも少ないデータまたは少ないタスクあるいはその両方を選択しているために生じることがある。
【０１３４】
動作の例として、第１のＤＳＴクライアント・モジュールは、１つまたは複数のデータ・エントリ２３８および１つまたは複数のタスク２４０を、そのそれぞれのリストから選択する（たとえば、選択されたデータＩＤおよび選択されたタスクＩＤ）。第１のＤＳＴクライアント・モジュールは、その選択をタスク分散モジュール２３２に送る。タスク分散モジュール２３２は、分散コンピューティング・システムのスタンドアロン・デバイス内、第１のＤＳＴクライアント・モジュールを含むユーザ・デバイス内、またはＤＳＴＮモジュール２２内にあってよい。
【０１３５】
タスク分散モジュールの位置に拘わらず、それは、選択されたタスクＩＤ２４０および選択されたデータＩＤ２３８からＤＳＴ割り振り情報２４２を生成する。ＤＳＴ割り振り情報２４２は、データ・パーティション化情報、タスク実行情報、または中間結果情報、あるいはそれらの組合せを含む。タスク分散モジュール２３２は、ＤＳＴ割り振り情報２４２をＤＳＴＮモジュール２２に送る。ＤＳＴ割り振り情報の１つまたは複数の例については、図２９〜図３９の１つまたは複数を参照して論じられることに留意されたい。
【０１３６】
ＤＳＴＮモジュール２２は、ＤＳＴ割り振り情報２４２を解釈して、記憶されたＤＳ符号化データ（たとえばＤＳエラー符号化データ２）を識別し、記憶されたＤＳエラー符号化タスク・コード（たとえばＤＳエラー符号化タスク・コード１）を識別する。加えて、ＤＳＴＮモジュール２２は、ＤＳＴ割り振り情報２４２を解釈して、データがどのようにパーティション化されるか、およびタスクがどのようにパーティション化されるかを決定する。ＤＳＴＮモジュール２２はまた、選択されたＤＳエラー符号化データ２３８がピラーグルーピングからスライス・グルーピングに変換される必要があるかどうかを決定する。必要がある場合、ＤＳＴＮモジュール２２は、選択されたＤＳエラー符号化データをスライス・グルーピングに変換し、ピラーグルーピングＤＳエラー符号化データを上書きすることによって、またはスライス・グルーピングＤＳエラー符号化データをＤＳＴＮモジュール２２のメモリ内の異なる位置に記憶する（すなわち、ピラーグルーピングＤＳエラー符号化データを上書きしない）ことによって、スライス・グルーピングＤＳエラー符号化データを記憶する。
【０１３７】
ＤＳＴＮモジュール２２は、ＤＳＴ割り振り情報２４２に示されているように、データおよびタスクをパーティション化し、それらのパーティションを、ＤＳＴＮモジュール２２の選択されたＤＳＴ実行ユニットに送る。選択されたＤＳＴ実行ユニットのそれぞれは、そのスライス・グルーピングに対してその部分的タスクを実行して部分的結果を作成する。ＤＳＴＮモジュール２２は、選択されたＤＳＴ実行ユニットから部分的結果を収集し、それらを結果情報２４４としてタスク分散モジュールに提供する。結果情報２４４は、収集された部分的結果、ＤＳＴ割り振り情報２４２に従って部分的結果を処理することでＤＳＴＮモジュール２２によって作成される１つまたは複数の最終結果、あるいはＤＳＴ割り振り情報２４２に従って部分的結果を処理することでＤＳＴＮモジュール２２によって作成される１つまたは複数の中間結果であり得る。
【０１３８】
タスク分散モジュール２３２は、結果情報２４４を受け取り、それからの１つまたは複数の最終結果１０４を第１のＤＳＴクライアント・モジュールに提供する。最終結果１０４は、結果情報２４４、または結果情報２４４のタスク分散モジュールの処理の結果とすることができる。
【０１３９】
第１のＤＳＴクライアント・モジュールの選択されたタスクを処理するのと同時に、分散コンピューティング・システムは、第２のＤＳＴクライアント・モジュールの選択されたデータに対する第２のＤＳＴクライアント・モジュールの選択されたタスクを処理することができる。あるいは、分散コンピューティング・システムは、第２のＤＳＴクライアント・モジュールの要求を、第１のＤＳＴクライアント・モジュールの要求の後または前に処理してもよい。ＤＳＴクライアント・モジュール要求の順序付けまたは並列処理あるいはその両方に拘わらず、第２のＤＳＴクライアント・モジュールは、その選択されたデータ２３８および選択されたタスク２４０をタスク分散モジュール２３２に提供する。タスク分散モジュール２３２が分散コンピューティング・システムの別個のデバイスまたはＤＳＴＮモジュール内である場合、第１および第２のＤＳＴクライアント・モジュールに結合されたタスク分散モジュール２３２は同じモジュールとすることができる。タスク分散モジュール２３２は、それが第１のＤＳＴクライアント・モジュールの要求を処理したのと同様の様式で第２のＤＳＴクライアント・モジュールの要求を処理する。
【０１４０】
図２９は、図２８の例を推進するタスク分散モジュール２３２の実施形態の概略ブロック図である。タスク分散モジュール２３２は、ＤＳＴクライアント・モジュールから受け取った選択されたデータおよび選択されたタスクについて散在ストレージおよびタスク（ＤＳＴ）割り振り情報２４２を生成するために使用する複数のテーブルを含む。テーブルは、データ記憶情報２４８、タスク記憶情報２５０、分散タスク（ＤＴ）実行モジュール情報２５２、および、タスク⇔サブ・タスク・マッピング情報２４６を含む。
【０１４１】
データ記憶情報テーブル２４８は、データ識別（ＩＤ）フィールド２６０、データ・サイズ・フィールド２６２、アドレス情報フィールド２６４、散在ストレージ（ＤＳ）情報２６６を含み、さらに、データに関する他の情報、それをどのように記憶するか、またはそれをどのように処理するか、あるいはそれらの組合せを含むことができる。たとえば、ＤＳ符号化データ＃１は、データＩＤ：１、データ・サイズ：ＡＡ（たとえば、数テラバイト以上のバイト・サイズ）、アドレス情報：Ａｄｄｒ＿１＿ＡＡ、ならびにＤＳパラメータ：３／５；ＳＥＧ＿１；およびＳＬＣ＿１を有する。この例では、アドレス情報は、他のアドレスをどのように計算するかに関するデータおよび情報の第１の記憶ワード（たとえば１つまたは複数のバイト）の仮想アドレスに対応する仮想アドレス、データの記憶ワードの仮想アドレスの範囲、データの記憶ワードの第１の記憶ワードもしくは複数の記憶ワードの物理アドレス、データの符号化されたデータ・スライスのスライス名のリストなどであり得る。ＤＳパラメータは、エラー符号化方式のアイデンティティ、復号閾値／ピラー幅（たとえば、第１のデータ・エントリについて３／５）、セグメント・セキュリティ情報（たとえば、ＳＥＧ＿１）、スライス単位セキュリティ情報（たとえば、ＳＬＣ＿１）、またはデータがどのようにデータ・スライスに符号化されたかに関する任意の他の情報、あるいはそれらの組合せを含むことができる。
【０１４２】
タスク記憶情報テーブル２５０は、タスク識別（ＩＤ）フィールド２６８、タスク・サイズ・フィールド２７０、アドレス情報フィールド２７２、散在ストレージ（ＤＳ）情報２７４を含み、さらに、タスクに関する他の情報、それをどのように記憶するか、またはデータを処理するためにそれをどのように使用できるか、あるいはそれらの組合せを含むことができる。たとえば、ＤＳ符号化タスク＃２は、タスクＩＤ：２、タスク・サイズ：ＸＹ、アドレス情報：Ａｄｄｒ＿２＿ＸＹ、ならびにＤＳパラメータ：３／５；ＳＥＧ＿２；およびＳＬＣ＿２を有する。この例では、アドレス情報は、他のアドレスをどのように計算するかに関するタスクおよび情報の第１の記憶ワード（たとえば１つまたは複数のバイト）の仮想アドレスに対応する仮想アドレス、タスクの記憶ワードの仮想アドレスの範囲、タスクの記憶ワードの第１の記憶ワードもしくは複数の記憶ワードの物理アドレス、タスク・コードの符号化されたスライスのスライス名のリストなどであり得る。ＤＳパラメータは、エラー符号化方式の識別子、復号閾値／ピラー幅（たとえば、第１のデータ・エントリについて３／５）、セグメント・セキュリティ情報（たとえば、ＳＥＧ＿２）、スライス単位セキュリティ情報（たとえば、ＳＬＣ＿２）、またはタスクがどのように符号化タスク・スライスに符号化されたかに関する任意の他の情報、あるいはそれらの組合せを含むことができる。セグメントまたはスライス単位セキュリティ情報あるいはその両方は、暗号化のタイプ（有効な場合）、圧縮のタイプ（有効な場合）、ウォーターマーキング情報（有効な場合）、または整合性チェック方式（有効な場合）、あるいはそれらの組合せを含むことに留意されたい。
【０１４３】
タスク⇔サブ・タスク・マッピング情報テーブル２４６は、タスク・フィールド２５６およびサブ・タスク・フィールド２５８を含む。タスク・フィールド２５６は、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールのメモリに記憶されたタスクを識別し、対応するサブ・タスク・フィールド２５８は、タスクがサブ・タスクを含むかどうかを示し、さらに含む場合は、サブ・タスクのいくつが順序付けられているか、およびサブ・タスクのいずれかが順序付けられているかを示す。この例では、タスク⇔サブ・タスク・マッピング情報テーブル２４６は、ＤＳＴＮモジュールのメモリに記憶された各タスク（たとえば、タスク１〜タスクｋ）についてのエントリを含む。特に、この例は、タスク１が７つのサブ・タスクを含み、タスク２がサブ・タスクを含まず、タスクｋがｒ個のサブ・タスク（ここでｒは２以上の整数）を含むことを示している。
【０１４４】
ＤＴ実行モジュールテーブル２５２は、ＤＳＴ実行ユニットＩＤフィールド２７６、ＤＴ実行モジュールＩＤフィールド２７８、およびＤＴ実行モジュール性能フィールド２８０を含む。ＤＳＴ実行ユニットＩＤフィールド２７６は、ＤＳＴＮモジュール内のＤＳＴユニットのアイデンティティを含む。ＤＴ実行モジュールＩＤフィールド２７８は、各ＤＳＴユニット内の各ＤＴ実行ユニットのアイデンティティを含む。たとえば、ＤＳＴユニット１は、３つのＤＴ実行モジュール（たとえば、１＿１、１＿２、および１＿３）を含む。ＤＴ実行性能フィールド２８０は、対応するＤＴ実行ユニットの性能のアイデンティティを含む。たとえば、ＤＴ実行モジュール１＿１は、性能Ｘを含み、Ｘは、ＭＩＰＳ性能、処理リソース（たとえば、マイクロプロセッサ、ＣＰＵ、デジタル・シグナル・プロセッサ、コプロセッサ、マイクロコントローラ、算術論理回路、または任意の他のアナログまたはデジタルあるいはその両方の処理回路、あるいはそれらの組合せの量および性能）、処理リソースの可用性、メモリ情報（たとえば、タイプ、サイズ、可用性など）、または１つもしくは複数のタスクの実行に関する任意の情報、あるいはそれらの組合せのうちの１つまたは複数を含む。
【０１４５】
これらのテーブルから、タスク分散モジュール２３２は、ＤＳＴ割り振り情報２４２を生成し、ＤＳＴ割り振り情報２４２は、データがどこに記憶されるか、データをどのようにパーティション化するか、タスクがどこに記憶されるか、タスクをどのようにパーティション化するか、どのＤＴ実行ユニットがどのデータ・パーティションに対してどの部分的タスクを実行するべきか、中間結果がどこにどのように記憶されるべきかなどを示す。複数のタスクが同じデータまたは異なるデータに対して実行されている場合、タスク分散モジュールは、そのような情報を考慮に入れてＤＳＴ割り振り情報を生成する。
【０１４６】
図３０は、タスク・フロー３１８として記憶されたデータに対してタスクを実行する分散コンピューティング・システムの具体例の図である。この例では、選択されたデータ９２は、データ２であり、選択されたタスクは、タスク１、２および３である。タスク１は、ある言語から別の言語（たとえば、人間言語またはコンピュータ言語）へのデータの翻訳を解析することに対応し、タスク２は、データ内の特定のワードまたはフレーズあるいはその両方を見つけ出すことに対応し、タスク３は、翻訳されたデータ内の特定の翻訳されたワードまたはフレーズあるいはその両方を見つけ出すことに対応する。
【０１４７】
この例では、タスク１は、７個のサブ・タスクを含み、タスク１＿１は、非ワード（non-word）を識別すること（順序付けなし）、タスク１＿２は、固有のワードを識別すること（順序付けなし）、タスク１＿３は、翻訳すること（順序付けなし）、タスク１＿４は、逆翻訳すること（タスク１＿３の後に順序付けられる）、タスク１＿５は、エラーを識別するために比較すること（タスク１＿４の後に順序付けられる）、タスク１＿６は、非ワード翻訳エラーを決定すること（タスク１＿５および１＿１の後に順序付けられる）、タスク１＿７は、正しい翻訳を決定すること（１＿５および１＿２の後に順序付けられる）である。サブ・タスクはさらに、それらが、順序付けタスク（すなわち、他のタスクの結果に依存する）であるか、それとも順序なし（すなわち、他のタスクの結果から独立している）であるかを示す。タスク２はサブ・タスクを含まず、タスク３は２つのサブ・タスクを含み、タスク３＿１は翻訳することであり、タスク３＿２は翻訳されたデータ内で特定のワードまたはフレーズを見つけ出すことである。
【０１４８】
一般に、それら３つのタスクが、翻訳精度、翻訳エラー、翻訳不整合、データ内の特定のワードまたはフレーズの出現、および翻訳されたデータ内の特定のワードまたはフレーズの出現に関するデータを分析するために、まとめて選択される。図示のように、データ９２は、翻訳されたデータ２８２へ翻訳３０６され、特定のワードまたはフレーズあるいはその両方３００について分析されて特定のワードまたはフレーズあるいはその両方のリスト２８６を作成し、非ワード３０２（たとえば参照辞書にない）について分析されて非ワードのリスト２９０を作成し、データ９２に含まれる固有のワード３１６について（すなわち、いくつの異なるワードがデータに含まれているか）分析されて固有のワードのリスト２９８が作成される。これらの各タスクは互いに独立しており、したがって所望に応じて並列に処理され得る。
【０１４９】
翻訳されたデータ２８２は、特定の翻訳されたワードまたはフレーズ３０４について分析されて（たとえばサブ・タスク３＿２）、特定の翻訳されたワードまたはフレーズのリストを作成する。翻訳されたデータ２８２は、元のデータの言語に逆翻訳３０８されて（たとえばサブ・タスク１＿４）、再翻訳されたデータ２８４を作成する。これら２つのタスクは、翻訳タスク（たとえばタスク１＿３）に依存しており、したがって翻訳タスクの後に順序付けられる必要があり、それはパイプライン順序または直列順序であり得る。次いで、再翻訳されたデータ２８４は、（一方向または他方向あるいはその両方で）適切に翻訳されなかったワードまたはフレーズあるいはその両方を見つけ出すために元のデータ９２と比較３１０されて、誤って翻訳されたワード２９４のリストを作成する。したがって、比較タスク（たとえばサブ・タスク１＿５）３１０は、翻訳３０６および再翻訳タスク３０８（たとえばサブ・タスク１＿３および１＿４）の後に順序付けられる。
【０１５０】
誤って翻訳されたワードのリスト２９４は、ワードが非ワードであるために適切に翻訳されなかったワードを識別するために非ワードのリスト２９０と比較３１２されて、非ワードによるエラーのリスト２９２を作成する。加えて、誤って翻訳されたワードのリスト２９４は、適切に翻訳された固有のワードを識別するために固有のワードのリスト２９８と比較３１４されて、正しく翻訳されたワードのリスト２９６を作成する。この比較は、適切に翻訳されなかった固有のワードを識別して、適切に翻訳されなかった固有のワードのリストを作成することもできる。ワード（たとえば、特定のワードまたはフレーズあるいはその両方、非ワード、固有のワード、翻訳されたワードまたはフレーズあるいはその両方など）の各リストは、ワードまたはフレーズあるいはその両方、それが何回使用されるか、データ内でそれが使用されるか、またはワードまたはフレーズあるいはその両方に関する要求された任意の他の情報、あるいはそれらの組合せを含み得ることに留意されたい。
【０１５１】
図３１は、図３０の例のためのデータおよびタスク・コードを記憶する散在ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。図示されるように、ＤＳ符号化データ２は、符号化されたデータ・スライスとしてＤＳＴ実行ユニット１〜５のメモリを横切って記憶され（たとえば、メモリ８８に記憶され）、（タスク１の）ＤＳ符号化タスク・コード１、およびＤＳ符号化タスク３は、符号化されたタスク・スライスとしてＤＳＴ実行ユニット１〜５のメモリを横切って記憶され、（タスク２の）ＤＳ符号化タスク・コード２は、符号化されたタスク・スライスとしてＤＳＴ実行ユニット３〜７のメモリを横切って記憶される。図２９のデータ記憶情報テーブルおよびタスク記憶情報テーブルに示されるように、各データ／タスクは、それらの復号閾値／ピラー幅に関して３／５のＤＳパラメータを有し、したがって５つのＤＳＴ実行ユニットのメモリにまたがっている。
【０１５２】
図３２は、図３０の例のための散在ストレージおよびタスク（ＤＳＴ）割り振り情報２４２の例の図である。ＤＳＴ割り振り情報２４２は、データ・パーティション化情報３２０、タスク実行情報３２２、および中間結果情報３２４を含む。データ・パーティション化情報３２０は、データ識別子（ＩＤ）、データを分割するパーティションの数、各データ・パーティションについてのアドレス情報、および、ＤＳ符号化データがピラーグルーピングからスライス・グルーピングに変換されるべきかどうかを含む。タスク実行情報３２２は、タスク識別フィールド３２６、タスク順序付けフィールド３２８、データ・パーティション・フィールドＩＤ３３０、およびデータ・パーティションごとの分散タスク処理に使用するＤＴ実行モジュールのセット３３２を有する、表形式情報を含む。中間結果情報３２４は、ＩＤフィールド３３４、対応する中間結果を処理するために割り当てられたＤＳＴ実行ユニットのＩＤ３３６、スクラッチ・パッド・ストレージ・フィールド３３８、および中間結果ストレージ・フィールド３４０を有する、表形式情報を含む。
【０１５３】
タスク１〜３がデータ２に対して分散されて実行される図３０の例に引き続き、データ・パーティション化情報はデータ２のＩＤを含む。加えて、タスク分散モジュールは、ＤＳ符号化データ２が、分散コンピューティングに対して適切なフォーマットである（たとえば、スライス・グルーピングとして記憶されている）かどうかを決定する。そうでない場合、タスク分散モジュールは、ＤＳ符号化データ２のフォーマットがピラーグルーピング・フォーマットからスライス・グルーピング・フォーマットに変更される必要があることを示し、変更がＤＳＴＮモジュールによって行われることになる。加えて、タスク分散モジュールは、データを分割するパーティションの数（たとえば、２＿１〜２＿ｚ）、および各パーティションについてのアドレス情報を決定する。
【０１５４】
タスク分散モジュールは、実行されるべき各サブ・タスクに対するタスク実行情報部におけるエントリを生成する。たとえば、タスク１＿１（たとえば、データ上の非ワードを識別する）は、タスク順序付けを持たず（すなわち、他のサブ・タスクの結果から独立し）、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１によってデータ・パーティション２＿１〜２＿ｚに対して実行されることになる。たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、データ・パーティション２＿１〜２＿ｚにおいて非ワードを検索して、タスク１＿１中間結果（Ｒ１−１、すなわち非ワードのリスト）を作成する。タスク１＿２（たとえば、固有のワード識別する）は、タスク１＿１と同様のタスク実行情報を有し、タスク１＿２中間結果（Ｒ１−２、すなわち固有のワードのリスト）を作成する。
【０１５５】
タスク１＿３（たとえば、翻訳する）は、順序付けられていない（すなわち独立した）タスク実行情報を含み、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１にデータ・パーティション２＿１〜２＿４を翻訳させ、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２にデータ・パーティション２＿５〜２＿ｚを翻訳させて、タスク１＿３中間結果（Ｒ１−３、すなわち翻訳されたデータ）を作成する。この例では、データ・パーティションがグループ化され、異なるセットのＤＴ実行モジュールが、各データ・パーティション・グループに対して分散サブ・タスク（またはタスク）を実行し、それにより、さらなる並列処理が可能になる。
【０１５６】
タスク１＿４（たとえば、逆翻訳する）は、タスク１＿３の後に順序付けられ、タスク１＿３の中間結果（たとえばＲ１−３＿１）（たとえば翻訳されたデータ）に対して実行されることになる。ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、タスク１＿３中間結果パーティションＲ１−３＿１〜Ｒ１−３＿４を逆翻訳するように割り振られ、ＤＴ実行モジュール１＿２、２＿２、６＿１、７＿１、および７＿２は、タスク１＿３中間結果パーティションＲ１−３＿５〜Ｒ１−３＿ｚを逆翻訳するように割り振られて、タスク１＿４中間結果（Ｒ１−４、すなわち逆翻訳されたデータ）を作成する。
【０１５７】
タスク１＿５（たとえば、データと翻訳されたデータを比較して翻訳エラーを識別する）は、タスク１＿４の後に順序付けられ、タスク１＿４の中間結果（Ｒ４−１）およびデータに対して実行されることになる。ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、データ・パーティション（２＿１〜２＿ｚ）をタスク１＿４中間結果パーティションＲ１−４＿１〜Ｒ１−４＿ｚのパーティションと比較して、タスク１＿５中間結果（Ｒ１−５、すなわち誤って翻訳されたワードのリスト）を作成するように割り振られる。
【０１５８】
タスク１＿６（たとえば、非ワード翻訳エラーを決定する）は、タスク１＿１および１＿５の後に順序付けられ、タスク１＿１および１＿５の中間結果（Ｒ１−１およびＲ１−５）に対して実行されることになる。ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、タスク１＿１中間結果（Ｒ１−１＿１〜Ｒ１−１＿ｚ）のパーティションをタスク１＿５中間結果パーティション（Ｒ１−５＿１〜Ｒ１−５＿ｚ）のパーティションと比較して、タスク１＿６中間結果（Ｒ１−６、すなわち非ワードによる翻訳エラーのリスト）を作成するように割り振られる。
【０１５９】
タスク１＿７（たとえば、正しく翻訳されたワードを決定する）は、タスク１＿２および１＿５の後に順序付けられ、タスク１＿２および１＿５の中間結果（Ｒ１−１およびＲ１−５）に対して実行されることになる。ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２は、タスク１＿２中間結果（Ｒ１−２＿１〜Ｒ１−２＿ｚ）のパーティションをタスク１＿５中間結果パーティション（Ｒ１−５＿１〜Ｒ１−５＿ｚ）のパーティションと比較して、タスク１＿７中間結果（Ｒ１−７、すなわち正しく翻訳されたワードのリスト）を作成するように割り振られる。
【０１６０】
タスク２（たとえば、特定のワードまたはフレーズあるいはその両方を見つけ出す）は、タスク順序付けを持たず（すなわち、他のサブ・タスクの結果から独立し）、ＤＴ実行モジュール３＿１、４＿１、５＿１、６＿１、および７＿１によってデータ・パーティション２＿１〜２＿ｚに対して実行されることになる。たとえば、ＤＴ実行モジュール３＿１、４＿１、５＿１、６＿１、および７＿１は、データ・パーティション２＿１〜２＿ｚにおいて特定のワードまたはフレーズあるいはその両方を検索して、タスク２中間結果（Ｒ２、すなわち特定のワードまたはフレーズあるいはその両方のリスト）を作成する。
【０１６１】
タスク３＿２（たとえば、特定の翻訳されたワードまたはフレーズあるいはその両方を見つけ出す）は、タスク１＿３（たとえば、翻訳する）の後に順序付けられ、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２によってパーティションＲ１−３＿１〜Ｒ１−３＿ｚに対して実行されることになる。たとえば、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２は、翻訳されたデータのパーティション（Ｒ１−３＿１〜Ｒ１−３＿ｚ）において特定の翻訳されたワードまたはフレーズあるいはその両方を検索して、タスク３＿２中間結果（Ｒ３−２、すなわち特定の翻訳されたワードまたはフレーズあるいはその両方のリスト）を作成する。
【０１６２】
各タスクについて、中間結果情報は、どのＤＳＴユニットがタスクの実行の監督を担っているかを示し、必要な場合、割り振られたＤＴ実行ユニットのセットによって生成された部分的結果の処理を示す。加えて、中間結果情報は、タスクのためのスクラッチパッド・メモリ、および対応する中間結果がどこに記憶されるべきかを示す。たとえば、中間結果Ｒ１−１（タスク１＿１の中間結果）に関して、ＤＳＴユニット１は、タスク１＿１の実行の監督を担い、ＤＳＴ実行ユニット１〜５のメモリに記憶される符号化中間結果スライスとして中間結果のストレージを調整する。一般に、スクラッチ・パッドは、非ＤＳ符号化中間結果の記憶向けであり、中間結果ストレージは、ＤＳ符号化中間結果の記憶向けである。
【０１６３】
図３３〜図３８は、図３０の例を実行する散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールの概略ブロック図である。図３３では、ＤＳＴＮモジュールが、データ９２にアクセスし、散在ストレージおよびタスク・ネットワーク（ＤＳＴ）割り振り情報に従って複数のパーティション１〜ｚにパーティション化する。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク（たとえば、データ・パーティション内の非ワード（すなわち参照辞書にない）を識別する）を実行するために、そのＤＴ（分散タスク）実行モジュール９０のセットを識別する。データ・パーティションごとに、ＤＴ実行モジュール９０のセットは、同じ、異なる、またはその組合せであり得る（たとえば、いくつかのデータ・パーティションが同じセットを使用する一方、他のデータ・パーティションは異なるセットを使用する）。
【０１６４】
第１のデータ・パーティションについて、第１のセットのＤＴ実行モジュール（たとえば、図３２のＤＳＴ割り振り情報における１＿１、２＿１、３＿１、４＿１、および５＿１）が、タスク１＿１を実行して、第１のデータ・パーティションで見つけ出された非ワードの第１の部分的結果１０２を作成する。第２のセットのＤＴ実行モジュール（たとえば、図３２のＤＳＴ割り振り情報における１＿１、２＿１、３＿１、４＿１、および５＿１）が、タスク１＿１を実行して、第２のデータ・パーティションで見つけ出された非ワードの第２の部分的結果１０２を作成する。（ＤＳＴ割り振り情報におけるような）ＤＴ実行モジュールのセットがデータに対してタスク１＿１を行い、これは、ＤＴ実行モジュールの「ｚ」セットが「第ｚ」のデータ・パーティションに対してタスク１＿１を実行して「第ｚ」のデータ・パーティションで見つけ出された非ワードの「第ｚ」の部分的結果１０２を作成するまで行われる。
【０１６５】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット１は、第１〜「第ｚ」の部分的結果を処理して、データ内で見つけ出された非ワードのリストである第１の中間結果（Ｒ１−１）を作成するように割り当てられる。たとえば、各セットのＤＴ実行モジュール９０は、（ＤＳＴ割り振りで識別されるまたはＤＳＴ実行ユニット１により決定され得る）ＤＳＴ実行ユニット１のスクラッチパッド・メモリにそれぞれの部分的結果を記憶する。ＤＳＴ実行１の処理モジュールは、第１〜「第ｚ」の部分的結果を集約して第１の中間結果（たとえばＲ１＿１）を作成するように従事する。処理モジュールは、スクラッチパッド・メモリまたはＤＳＴ実行ユニット１のメモリの別の部分に、非ＤＳエラー符号化データとして第１の中間結果を記憶する。
【０１６６】
ＤＳＴ実行ユニット１は、そのＤＳＴクライアント・モジュールを、第１の中間結果（たとえば非ワードのリスト）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、非ワードのリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、第１の中間結果（Ｒ１−１）をパーティション化して複数のパーティション（たとえば、Ｒ１−１＿１〜Ｒ１−１＿ｍ）にする。第１の中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１６７】
第１の中間結果の各パーティションに対してまたは第１の中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜５のメモリにおける割り振られたメモリ）に記憶される。
【０１６８】
図３４では、ＤＳＴＮモジュールは、データ９２に対してタスク１＿２（たとえば、固有のワードを見つけ出す）を実行している。開始するために、ＤＳＴＮモジュールは、データ９２にアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティション１〜ｚにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿２を実行するために、そのＤＴ実行モジュールのセットを識別する。データ・パーティションごとに、ＤＴ実行モジュールのセットは、同じ、異なる、またはその組合せであり得る。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿２を実行してデータ・パーティションで見つけ出された固有のワードの部分的結果（たとえば、第１〜「第ｚ」）を作成する。
【０１６９】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット１は、タスク１＿２の第１〜「第ｚ」の部分的結果１０２を処理して、データ９２内で見つけ出された固有のワードのリストである第２の中間結果（Ｒ１−２）を作成するように割り当てられる。ＤＳＴ実行１の処理モジュールは、固有のワードの第１〜「第ｚ」の部分的結果を集約して第２の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット１のメモリの別の部分に、非ＤＳエラー符号化データとして第２の中間結果を記憶する。
【０１７０】
ＤＳＴ実行ユニット１は、そのＤＳＴクライアント・モジュールを、第２の中間結果（たとえば非ワードのリスト）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、固有のワードのリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、第２の中間結果（Ｒ１−２）をパーティション化して複数のパーティション（たとえば、Ｒ１−２＿１〜Ｒ１−２＿ｍ）にする。第２の中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１７１】
第２の中間結果の各パーティションに対してまたは第２の中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜５のメモリにおける割り振られたメモリ）に記憶される。
【０１７２】
図３５では、ＤＳＴＮモジュールは、データ９２に対してタスク１＿３（たとえば、翻訳する）を実行している。開始するために、ＤＳＴＮモジュールは、データ９２にアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティション１〜ｚにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿３を実行するために、そのＤＴ実行モジュールのセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、データ・パーティション２＿１〜２＿４を翻訳し、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２は、データ・パーティション２＿５〜２＿ｚを翻訳する）。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュール９０は、翻訳されたデータの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１７３】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット２は、タスク１＿３の第１〜「第ｚ」の部分的結果を処理して、翻訳されたデータである第３の中間結果（Ｒ１−３）を作成するように割り当てられる。ＤＳＴ実行２の処理モジュールは、翻訳されたデータの第１〜「第ｚ」の部分的結果を集約して第３の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット２のメモリの別の部分に、非ＤＳエラー符号化データとして第３の中間結果を記憶する。
【０１７４】
ＤＳＴ実行ユニット２は、そのＤＳＴクライアント・モジュールを、第３の中間結果（たとえば翻訳されたデータ）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第３の中間結果（Ｒ１−３）をパーティション化して複数のパーティション（たとえば、Ｒ１−３＿１〜Ｒ１−３＿ｙ）にする。第３の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット２〜６のメモリにおける割り振られたメモリ）に記憶される。
【０１７５】
図３５にさらに示されるように、ＤＳＴＮモジュールは、第３の中間結果の翻訳されたデータに対してタスク１＿４（たとえば、再翻訳する）を実行している。開始するために、ＤＳＴＮモジュールは、（スクラッチパッド・メモリまたは中間結果メモリにおける）翻訳されたデータにアクセスし（それを復号し）、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化する。第３の中間結果の各パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿４を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、パーティションＲ１−３＿１〜Ｒ１−３＿４を逆翻訳するように割り振られ、ＤＴ実行モジュール１＿２、２＿２、６＿１、７＿１、および７＿２は、パーティションＲ１−３＿５〜Ｒ１−３＿ｚを逆翻訳するように割り振られる）。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿４を実行して、再翻訳されたデータの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１７６】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット３は、タスク１＿４の第１〜「第ｚ」の部分的結果を処理して、再翻訳されたデータである第４の中間結果（Ｒ１−４）を作成するように割り当てられる。ＤＳＴ実行３の処理モジュールは、翻訳されたデータの第１〜「第ｚ」の部分的結果を集約して第４の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット３のメモリの別の部分に、非ＤＳエラー符号化データとして第４の中間結果を記憶する。
【０１７７】
ＤＳＴ実行ユニット３は、そのＤＳＴクライアント・モジュールを、第４の中間結果（たとえば再翻訳されたデータ）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第４の中間結果（Ｒ１−４）をパーティション化して複数のパーティション（たとえば、Ｒ１−４＿１〜Ｒ１−４＿ｚ）にする。第４の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット３〜７のメモリにおける割り振られたメモリ）に記憶される。
【０１７８】
図３６では、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールは、図３５のデータ９２および再翻訳されたデータに対してタスク１＿５（たとえば、比較する）を実行している。開始するために、ＤＳＴＮモジュールは、データ９２にアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。ＤＳＴＮモジュールはまた、スクラッチパッド・メモリまたは中間結果メモリにおける再翻訳されたデータにアクセスし、それを復号し、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化する。再翻訳されたデータのパーティションの数は、データのパーティションの数に対応する。
【０１７９】
パーティションの各ペア（たとえば、データ・パーティション１および再翻訳されたデータ・パーティション１）について、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿５を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１）。パーティションの各ペアに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿５を実行して、誤って翻訳されたワードまたはフレーズあるいはその両方のリストの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１８０】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット１は、タスク１＿５の第１〜「第ｚ」の部分的結果を処理して、誤って翻訳されたワードまたはフレーズあるいはその両方のリストである第５の中間結果（Ｒ１−５）を作成するように割り当てられる。特に、ＤＳＴ実行１の処理モジュールは、誤って翻訳されたワードまたはフレーズあるいはその両方のリストの第１〜「第ｚ」の部分的結果を集約して第５の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット１のメモリの別の部分に、非ＤＳエラー符号化データとして第５の中間結果を記憶する。
【０１８１】
ＤＳＴ実行ユニット１は、そのＤＳＴクライアント・モジュールを、第５の中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第５の中間結果（Ｒ１−５）をパーティション化して複数のパーティション（たとえば、Ｒ１−５＿１〜Ｒ１−５＿ｚ）にする。第５の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット１〜５のメモリにおける割り振られたメモリ）に記憶される。
【０１８２】
図３６にさらに示されるように、ＤＳＴＮモジュールは、誤って翻訳されたワードまたはフレーズあるいはその両方のリスト（たとえば、第５の中間結果Ｒ１−５）、および非ワードのリスト（たとえば、第１の中間結果Ｒ１−１）に対して、タスク１＿６（たとえば、非ワードによる翻訳エラー）を実行している。開始するために、ＤＳＴＮモジュールは、リストにアクセスし、それらを対応する数のパーティションにパーティション化する。
【０１８３】
パーティションの各ペア（たとえば、パーティションＲ１−１＿１およびパーティションＲ１−５＿１）について、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿６を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１）。パーティションの各ペアに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿６を実行して、誤って翻訳されたワードまたはフレーズあるいはその両方のリストの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１８４】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット２は、タスク１＿６の第１〜「第ｚ」の部分的結果を処理して、非ワードのため誤って翻訳されたワードまたはフレーズあるいはその両方のリストである第６の中間結果（Ｒ１−６）を作成するように割り当てられる。特に、ＤＳＴ実行２の処理モジュールは、非ワードのため誤って翻訳されたワードまたはフレーズあるいはその両方のリストの第１〜「第ｚ」の部分的結果を集約して第６の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット２のメモリの別の部分に、非ＤＳエラー符号化データとして第６の中間結果を記憶する。
【０１８５】
ＤＳＴ実行ユニット２は、そのＤＳＴクライアント・モジュールを、第６の中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第６の中間結果（Ｒ１−６）をパーティション化して複数のパーティション（たとえば、Ｒ１−６＿１〜Ｒ１−６＿ｚ）にする。第６の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット２〜６のメモリにおける割り振られたメモリ）に記憶される。
【０１８６】
図３６にさらに示されるように、ＤＳＴＮモジュールは、誤って翻訳されたワードまたはフレーズあるいはその両方のリスト（たとえば、第５の中間結果Ｒ１−５）、および固有のワードのリスト（たとえば、第２の中間結果Ｒ１−２）に対して、タスク１＿７（たとえば、正しく翻訳されたワードまたはフレーズあるいはその両方）を実行している。開始するために、ＤＳＴＮモジュールは、リストにアクセスし、それらを対応する数のパーティションにパーティション化する。
【０１８７】
パーティションの各ペア（たとえば、パーティションＲ１−２＿１およびパーティションＲ１−５＿１）について、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿７を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２）。パーティションの各ペアに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿７を実行して、正しく翻訳されたワードまたはフレーズあるいはその両方のリストの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１８８】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット３は、タスク１＿７の第１〜「第ｚ」の部分的結果を処理して、正しく翻訳されたワードまたはフレーズあるいはその両方のリストである第７の中間結果（Ｒ１−７）を作成するように割り当てられる。特に、ＤＳＴ実行３の処理モジュールは、正しく翻訳されたワードまたはフレーズあるいはその両方のリストの第１〜「第ｚ」の部分的結果を集約して第７の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット３のメモリの別の部分に、非ＤＳエラー符号化データとして第７の中間結果を記憶する。
【０１８９】
ＤＳＴ実行ユニット３は、そのＤＳＴクライアント・モジュールを、第７の中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第７の中間結果（Ｒ１−７）をパーティション化して複数のパーティション（たとえば、Ｒ１−７＿１〜Ｒ１−７＿ｚ）にする。第７の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット３〜７のメモリにおける割り振られたメモリ）に記憶される。
【０１９０】
図３７では、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールは、データ９２に対してタスク２（たとえば、特定のワードまたはフレーズあるいはその両方を見つけ出す）を行っている。開始するために、ＤＳＴＮモジュールは、データにアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティション１〜ｚにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク２を実行するために、そのＤＴ実行モジュールのセットを識別する。データ・パーティションごとに、ＤＴ実行モジュールのセットは、同じ、異なる、またはその組合せであり得る。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュールは、タスク２を実行して、データ・パーティションで見つけ出された特定のワードまたはフレーズあるいはその両方の部分的結果１０２（たとえば、第１〜第ｚ）を作成する。
【０１９１】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット７は、タスク２の第１〜「第ｚ」の部分的結果を処理して、データ内で見つけ出された特定のワードまたはフレーズあるいはその両方のリストであるタスク２中間結果（Ｒ２）を作成するように割り当てられる。ＤＳＴ実行７の処理モジュールは、特定のワードまたはフレーズあるいはその両方の第１〜「第ｚ」の部分的結果を集約してタスク２中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット７のメモリの別の部分に、非ＤＳエラー符号化データとしてタスク２中間結果を記憶する。
【０１９２】
ＤＳＴ実行ユニット７は、そのＤＳＴクライアント・モジュールを、タスク２中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、特定のワードまたはフレーズあるいはその両方のリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、タスク２中間結果（Ｒ２）をパーティション化して複数のパーティション（たとえば、Ｒ２＿１〜Ｒ２＿ｍ）にする。タスク２中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１９３】
タスク２中間結果の各パーティションに対してまたはタスク２中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜４および７のメモリにおける割り振られたメモリ）に記憶される。
【０１９４】
図３８では、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールは、翻訳されたデータ（Ｒ１−３）に対してタスク３（たとえば、特定の翻訳されたワードまたはフレーズあるいはその両方を見つけ出す）を実行している。開始するために、ＤＳＴＮモジュールは、（スクラッチパッド・メモリまたは中間結果メモリにおける）翻訳されたデータにアクセスし（それを復号し）、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化する。各パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク３を実行するために、そのＤＴ実行モジュールのセットを識別する。データ・パーティションごとに、ＤＴ実行モジュールのセットは、同じ、異なる、またはその組合せであり得る。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュール９０は、タスク３を実行して、データ・パーティションで見つけ出された特定の翻訳されたワードまたはフレーズあるいはその両方の部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１９５】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット５は、タスク３の第１〜「第ｚ」の部分的結果を処理して、翻訳されたデータ内で見つけ出された特定のワードまたはフレーズあるいはその両方のリストであるタスク３中間結果（Ｒ３）を作成するように割り当てられる。特に、ＤＳＴ実行５の処理モジュールは、特定の翻訳されたワードまたはフレーズあるいはその両方の第１〜「第ｚ」の部分的結果を集約してタスク３中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット７のメモリの別の部分に、非ＤＳエラー符号化データとしてタスク３中間結果を記憶する。
【０１９６】
ＤＳＴ実行ユニット５は、そのＤＳＴクライアント・モジュールを、タスク３中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、特定の翻訳されたワードまたはフレーズあるいはその両方のリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、タスク３中間結果（Ｒ３）をパーティション化して複数のパーティション（たとえば、Ｒ３＿１〜Ｒ３＿ｍ）にする。タスク３中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１９７】
タスク３中間結果の各パーティションに対してまたはタスク３中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜４、５、および７のメモリにおける割り振られたメモリ）に記憶される。
【０１９８】
図３９は、図３０の例のための結果情報を最終結果１０４として組み合わせる例の図である。この例では、結果情報は、データ内で見つけ出された特定のワードまたはフレーズあるいはその両方のリスト（タスク２中間結果）、データ内で見つけ出された特定の翻訳されたワードまたはフレーズあるいはその両方のリスト（タスク３中間結果）、データ内で見つけ出された非ワードのリスト（タスク１の第１の中間結果Ｒ１−１）、データ内で見つけ出された固有のワードのリスト（タスク１の第２の中間結果Ｒ１−２）、非ワードによる翻訳エラーのリスト（タスク１の第６の中間結果Ｒ１−６）、および正しく翻訳されたワードまたはフレーズあるいはその両方のリスト（タスク１の第７の中間結果Ｒ１−７）を含む。タスク分散モジュールは、結果情報を結果１０４として要求元ＤＳＴクライアント・モジュールに提供する。
【０１９９】
図４０は、散在ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、図１の散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュール３４、図１のネットワーク２４、ならびに記憶世代１〜５を含む複数の記憶世代を含む。ＤＳＴクライアント・モジュール３４は、確定関数モジュール３５０を含む。確定関数モジュール３５０は、図３の処理モジュール８４を利用して実装され得る。各記憶世代は、ＤＳＴ実行（ＥＸ）ユニット１〜ｎのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。
【０２００】
ＤＳＮは、複数の記憶世代から多世代記憶されたデータを取り出すように機能する。多世代記憶されたデータを取り出す動作の例において、ＤＳＴクライアント・モジュール３４は、データ・オブジェクトに関連付けられたアクセス要求３５２を受け取る。アクセス要求３５２は、データ・オブジェクト名（たとえば、ｆｏｏ）、要求タイプ・インジケータ（たとえば、読取り、書込み、削除、更新、リスト、すなわち取出し要求）、および要求エンティティ識別子（ＩＤ）のうちの１つまたは複数を含む。アクセス要求３５２を受け取ると、ＤＳＴクライアント・モジュール３４は、アクセス要求３５２に関連付けられた格納域識別子（ＩＤ）を入手する。その入手することは、データ・オブジェクト名を使用して探索を実行すること、および、アクセス要求と格納域ＩＤとの間の関連（たとえば、要求エンティティＩＤと格納域ＩＤの関係）を識別することのうちの少なくとも一方を含む。たとえば、ＤＳＴクライアント・モジュール３４は、格納域ＩＤを探索するために要求エンティティＩＤを使用してシステム・レジストリ情報にアクセスする。
【０２０１】
格納域ＩＤを入手すると、ＤＳＴクライアント・モジュール３４は、データ・オブジェクト名に基づいて、メタデータ・アドレス情報を取り出すための第１の取出し要求を生成し、第１の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる（たとえば、スライス読取り要求３５４）。その生成することは、少なくとも復号閾値数のメタデータ・アドレス情報スライスを取り出すための第１レベル読取り要求（たとえば取出し要求１）のセットを生成する。ここで、メタデータ・アドレス情報は、ＤＳＮ内のメタデータの記憶に関するアドレス情報（たとえば記憶世代識別子）を含んでおり、メタデータ・アドレス情報は、散在ストレージ・エラー符号化されて、メタデータ・アドレス情報スライスのセットを作成しており、復号閾値数のメタデータ・アドレス情報スライスは、メタデータ・アドレス情報を復元するために必要とされる、メタデータ・アドレス情報スライスのセットのうちの最少数のメタデータ・アドレス情報スライスを表す。その生成することはさらに、アクセス要求３５２に基づいて複数の記憶世代のうちから記憶世代を識別することを含む。たとえば、確定関数モジュール３５０は、アクセス要求３５２のデータ・オブジェクト名に対して確定関数を実行して、第１レベル読取り要求のセットに関連付けられたＤＳＮアドレスの少なくとも部分を作成する（たとえば、複数の世代のうちの固定された世代、すなわち世代４を識別する）。確定関数は、ハッシュベースのメッセージ認証コード、ハッシュ関数、マスク生成関数、およびスポンジ関数のうちの少なくとも１つを含む。確定関数モジュール３５０の動作については図４１を参照してより詳細に論じられる。
【０２０２】
第１の取出し要求の第１レベル読取り要求のセットを生成すると、ＤＳＴクライアント・モジュール３４は、ネットワーク２４を介して、取出し要求１を記憶世代４（たとえば、データ・オブジェクト名に関連付けられた識別された固定世代）のＤＳＴ実行ユニットに送り、取出し応答１を含むスライス読取り応答３５６を受け取り、スライス読取り応答３５６から少なくとも復号閾値数のメタデータ・アドレス情報スライスを抽出する。少なくとも復号閾値数のメタデータ・アドレス情報スライスを作成すると、ＤＳＴクライアント・モジュール３４は、少なくとも復号閾値数のメタデータ・アドレス情報スライスを散在ストレージ・エラー復号して、メタデータ・アドレス情報を復元する。メタデータ・アドレス情報を復元すると、ＤＳＴクライアント・モジュール３４は、メタデータの記憶に関するアドレス情報を抽出する。たとえば、ＤＳＴクライアント・モジュール３４は、メタデータの記憶に関するアドレス情報を抽出して、記憶世代２を識別する（たとえば、メタデータが記憶世代２に前もって記憶されている）。
【０２０３】
メタデータ・アドレス情報を取り出すと、ＤＳＴクライアント・モジュール３４は、取り出されたメタデータ・アドレス情報に基づいて、（たとえばデータ・オブジェクトの）メタデータを取り出すための第２の取出し要求を生成し、第２の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる。メタデータは、ＤＳＮ内のデータ・オブジェクトの符号化されたデータ・スライスの複数のセットの記憶に関するアドレス情報（たとえば、データ・オブジェクトのソース名、データ・オブジェクトのスライス名の複数のセット、データ・オブジェクトの記憶に関連付けられた仮想ＤＳＮアドレス）、データ・サイズ・インジケータ、データ・タイプ・インジケータ、データ優先度インジケータ、データ所有者識別子、データ受信者識別子、データのアクセス制御リスト、タイムスタンプ、データ・オブジェクト名、格納域識別子、ディレクトリのＤＳＮアドレス、散在階層インデックスのインデックス・ノードのＤＳＮアドレス、世代ポインタＤＳＮアドレス（たとえば、第１レベル読取り要求のセットに関連付けられたＤＳＮアドレス）、およびデータ・オブジェクトに関連付けられた任意の他の情報のうちの１つまたは複数を含む。
【０２０４】
第２の取出し要求を生成することは、メタデータ・アドレス情報に基づいて、少なくとも復号閾値数（たとえば、メタデータ・アドレス情報スライスの復号閾値数と同じまたは異なる復号閾値数）のメタデータ・スライスを取り出すための第２レベル読取り要求（たとえば取出し要求２）のセットを生成することを含むここで、メタデータは、ＤＳＮ内のデータ・オブジェクトの符号化されたデータ・スライスの複数のセットの記憶に関するアドレス情報を含んでおり、メタデータは、散在ストレージ・エラー符号化されて、メタデータ・スライスのセットを作成しており、復号閾値数のメタデータ・スライスは、メタデータを復元するために必要とされるメタデータ・スライスのセットのうちの最少数のメタデータ・スライスを表す。
【０２０５】
第２の取出し要求の第２レベル要求のセットを生成すると、ＤＳＴクライアント・モジュール３４は、ネットワーク２４を介して、取出し要求２を（たとえばメタデータ・アドレス情報によって示されるように）記憶世代２のＤＳＴ実行ユニットに送り、取出し応答２を含むさらなるスライス読取り応答３５６を受け取り、当該さらなるスライス読取り応答３５６から、少なくとも復号閾値数のメタデータ・スライスを抽出する。少なくとも復号閾値数のメタデータ・スライスを作成すると、ＤＳＴクライアント・モジュール３４は、少なくとも復号閾値数のメタデータ・スライスを散在ストレージ・エラー復号して、取り出されたメタデータとしてメタデータを復元する。
【０２０６】
メタデータを復元すると、ＤＳＴクライアント・モジュール３４は、取り出されたメタデータに基づいて、データ・オブジェクト名に関連付けられたデータ・オブジェクトの少なくとも部分を取り出すための第３の取出し要求を生成し、第３の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる。第３の取出し要求を生成することは、取り出されたメタデータに基づいて、少なくとも復号閾値数（たとえば、メタデータ・アドレス情報およびメタデータに関連付けられた復号閾値数と同じまたは異なる復号閾値数）の符号化されたデータ・スライスを取り出すための第３レベル読取り要求（たとえば取出し要求３）の少なくとも１つのセットを生成することを含む。ここで、データ・オブジェクトは、散在ストレージ・エラー符号化されて、対応する記憶世代に記憶された符号化データ・スライスの複数のセットを作成しており、復号閾値数の符号化されたデータ・スライスは、データ・オブジェクトの上記部分を復元するために必要とされる符号化されたデータ・スライスの複数のセットのうち１つのセットのうちの最少数の符号化されたデータ・スライスを表す。
【０２０７】
第３レベル読取り要求の少なくとも１つのセットを生成すると、ＤＳＴクライアント・モジュール３４は、ネットワーク２４を介して、取出し要求３を（たとえばメタデータによって示されるように）記憶世代５のＤＳＴ実行ユニットに送り、取出し応答３を含むさらに他のスライス読取り応答３５６を受け取り、当該さらに他のスライス読取り応答３５６から、少なくとも復号閾値数の符号化されたデータ・スライスを抽出する。符号化されたデータ・スライスの各セットについて、少なくとも復号閾値数の符号化されたデータ・スライスを作成すると、ＤＳＴクライアント・モジュール３４は、符号化されたデータ・スライスの各セットについて、少なくとも復号閾値数の符号化されたデータ・スライスを散在ストレージ・エラー復号して、復元されたデータ・オブジェクトとしてデータ・オブジェクトを復元する。データ・オブジェクトを復元すると、ＤＳＴクライアント・モジュール３４は、復元されたデータ・オブジェクトを含むアクセス応答３５８を発行する。
【０２０８】
図４１は、データを取り出すために使用される図４０の確定関数モジュール３５０の実施形態を示す概略ブロック図である。図４０を参照して論じられた多世代記憶されたデータを取り出す動作のさらに他の例として、確定関数モジュール３５０が、アクセス要求３５２のデータ・オブジェクト名に対して確定関数を実行して、世代ポインタ・ソース名情報３６０を含むデジタル値を作成する。たとえば、確定関数モジュール３５０は、ｆｏｏのデータ・オブジェクト名に対してマスク生成関数を実行してデジタル値を作成する。確定関数を実行すると、確定関数モジュール３５０（たとえば、あるいは以下では任意の他の処理モジュール）が、デジタル値の第１の部分を、ＤＳＮの読取り要求フォーマットの世代識別子として使用し、デジタル値の第２の部分を、ＤＳＮの読取り要求フォーマットのオブジェクト識別子として使用する。たとえば、確定関数モジュール３５０は、第１の部分を世代識別子（ＩＤ）４として、第２の部分をオブジェクトＩＤ  ５Ｅ８として使用する。
【０２０９】
世代ＩＤおよびオブジェクトＩＤを識別すると、確定関数モジュール３５０は、データ・オブジェクトに関連付けられた格納域識別子を決定することによって、第１の取出し要求を生成する。たとえば、確定関数モジュール３５０は、要求エンティティの識別子を利用してシステム・レジストリ探索を実行して、格納域ＩＤである４５７を識別する。格納域ＩＤを識別すると、確定関数モジュール３５０は、ＤＳＮの読取り要求フォーマットの格納域識別子フィールドにおいて格納域識別子を使用する。たとえば、確定関数モジュール３５０は、格納域ＩＤである４５７、世代ＩＤ  ４、およびオブジェクトＩＤである５Ｅ８を含むように、ソース名ｆｏｏメタデータ世代ポインタ（source name for a foo metadata generation pointer）３６２を生成し、ｆｏｏメタデータ世代ポインタ３６２を含むように第１の取出し要求を生成する。
【０２１０】
第１の取出し要求を生成すると、確定関数モジュール３５０は、第１の取出し要求を記憶世代４に送ることによってＤＳＮにアクセスし、ｆｏｏの世代ポインタ３６４のメタデータ・アドレス情報スライスを受け取り、受け取られたメタデータ・アドレス情報スライスを復号してメタデータ・アドレス情報３６６を再現する。メタデータ・アドレス情報３６６は、ｆｏｏメタデータオブジェクト番号ＣＡ９、およびｆｏｏメタデータ世代ＩＤ  ２を含む。
【０２１１】
メタデータ・アドレス情報３６６を再現すると、確定関数モジュール３５０は、メタデータ・アドレス情報３６６から世代識別子（たとえば世代２）およびオブジェクト識別子（たとえばＣＡ９）を抽出することによって、第２の取出し要求を生成する。次に、確定関数モジュール３５０は、データ・オブジェクトに関連付けられた格納域識別子を決定する。格納域ＩＤを決定すると、確定関数モジュール３５０は、ＤＳＮの読取り要求フォーマットの世代識別子フィールドにおいて世代識別子（たとえば２）を使用し、ＤＳＮの読取り要求フォーマットのオブジェクト識別子フィールドにおいてオブジェクト識別子（たとえばＣＡ９）を使用し、ＤＳＮの読取り要求フォーマットの格納域識別子フィールドにおいて格納域識別子（たとえば４５７）を使用することよって、第２の取出し要求のソース名ｆｏｏメタデータ３６８を生成する。
【０２１２】
第２の取出し要求を生成すると、確定関数モジュール３５０は、第２の取出し要求を記憶世代２に送ることによってＤＳＮにアクセスし、ｆｏｏメタデータオブジェクト３７０のメタデータ・スライスを受け取り、受け取られたメタデータ・スライスを復号して（たとえばｆｏｏについての）メタデータ３７２を再現する。ｆｏｏのメタデータ３７２は、ソース名ｆｏｏデータ・オブジェクト３７４を含む。
【０２１３】
ｆｏｏのメタデータ３７２を再現すると、確定関数モジュール３５０は、ソース名ｆｏｏデータ・オブジェクト３７４のフィールド（たとえば、格納域ＩＤ  ４５７、世代ＩＤ  ５、オブジェクトＩＤ  Ｂ９３）を使用することによって第３の取出し要求を生成する。第３の取出し要求を生成すると、確定関数モジュール３５０は、第３の取出し要求を記憶世代５に送ることによってＤＳＮにアクセスし、記憶されたｆｏｏデータ・オブジェクト３７６の符号化されたデータ・スライスを受け取り、受け取られた符号化データ・スライスを散在ストレージ・エラー復号してデータ・オブジェクトｆｏｏを再現する。
【０２１４】
図４２は、多世代記憶されたデータを取り出す例を示すフローチャートである。特に、図１〜図３９、図４０〜図４１、さらに図４２と関連して説明される１つまたは複数の機能および特徴と共に用いる方法が提示される。
【０２１５】
方法はステップ３８０から開始し、このステップでは、散在ストレージ・ネットワーク（ＤＳＮ）の１つまたは複数のコンピューティング・デバイスのうちのコンピューティング・デバイスの処理モジュールが、取り出すデータ・オブジェクトのデータ・オブジェクト名に対して確定関数を実行して、デジタル値を作成する。デジタル値を作成すると、処理モジュールは、デジタル値の第１の部分を、第１の取出し要求に関するＤＳＮの読取り要求フォーマットの世代識別子（ＩＤ）として使用し、デジタル値の第２の部分を、第１の取出し要求に関するＤＳＮの読取り要求フォーマットのオブジェクト識別子として使用する。
【０２１６】
方法はステップ３８２に続き、このステップでは、処理モジュールは、データ・オブジェクトに関連付けられた格納域識別子を決定する。たとえば、処理モジュールは、要求エンティティＩＤを利用して、システム・レジストリ探索を実行して格納域ＩＤを作成する。別の例として、処理モジュールは、データ・オブジェクト名を利用し、ディレクトリ探索を実行して格納域ＩＤを作成する。格納域ＩＤを作成すると、処理モジュールは、第１の取出し要求に関するＤＳＮの読取り要求フォーマットの格納域識別子フィールドにおいて格納域識別子を使用する。
【０２１７】
方法はステップ３８４に続き、このステップでは、処理モジュールは、データ・オブジェクト名に基づいて、メタデータ・アドレス情報を取り出すための第１の取出し要求を生成し、第１の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる（たとえば、第１の取出し要求は、メタデータ・アドレス情報に関連付けられたＤＳＮアドレスに対応する格納域ＩＤ、世代ＩＤ、およびオブジェクトＩＤを含む）。第１の取出し要求を生成することは、少なくとも復号閾値数のメタデータ・アドレス情報スライスを取り出すための第１レベル読取り要求のセットを生成することを含む。ここで、メタデータ・アドレス情報は、ＤＳＮ内のメタデータの記憶に関するアドレス情報を含んでおり、メタデータ・アドレス情報は、散在ストレージ・エラー符号化されて、メタデータ・アドレス情報スライスのセットを作成しており、復号閾値数のメタデータ・アドレス情報スライスは、メタデータ・アドレス情報を復元するために必要とされる、メタデータ・アドレス情報スライスのセットのうちの最少数のメタデータ・アドレス情報スライスを表す。
【０２１８】
方法はステップ３８６に続き、このステップでは、処理モジュールは、少なくとも復号閾値数のメタデータ・アドレス情報スライスを復号して、メタデータ・アドレス情報を復元する。たとえば、処理モジュールは、第１レベル読取り要求をＤＳＮのストレージ・ユニットに送り、少なくとも復号閾値数のメタデータ・アドレス情報スライスを受け取り、少なくとも復号閾値数のメタデータ・アドレス情報スライスを散在ストレージ・エラー復号して、取り出されたメタデータ・アドレス情報を作成する。
【０２１９】
方法はステップ３８８に続き、このステップでは、処理モジュールは、メタデータ・アドレス情報から世代識別子およびオブジェクト識別子を抽出する。オブジェクトＩＤおよび世代ＩＤを抽出すると、処理モジュールは、第２の取出し要求に関するＤＳＮの読取り要求フォーマットの世代識別子フィールドにおいて世代識別子を使用し、第２の取出し要求に関するＤＳＮの読取り要求フォーマットのオブジェクト識別子フィールドにおいてオブジェクト識別子を使用する。処理モジュールはさらに、データ・オブジェクトに（たとえばメタデータに）関連付けられた格納域識別子を決定し、第２の取出し要求に関するＤＳＮの読取り要求フォーマットの格納域識別子フィールドにおいて格納域識別子を使用することができる。
【０２２０】
方法はステップ３９０に続き、このステップでは、処理モジュールは、取り出されたメタデータ・アドレス情報に基づいて、メタデータを取り出すための第２の取出し要求を生成し、第２の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる（たとえば、第２の取出し要求は、メタデータに関連付けられたＤＳＮアドレスに対応するメタデータの格納域ＩＤ、メタデータの世代ＩＤ、およびメタデータのオブジェクトＩＤを含む）。第２の取出し要求を生成することは、メタデータ・アドレス情報に基づいて、少なくとも復号閾値数のメタデータ・スライスを取り出すための第２レベル読取り要求のセットを生成する。ここで、メタデータは、ＤＳＮ内のデータ・オブジェクトの符号化されたデータ・スライスの複数のセットの記憶に関するアドレス情報を含んでおり、メタデータは、散在ストレージ・エラー符号化されて、メタデータ・スライスのセットを作成しており、復号閾値数のメタデータ・スライスは、メタデータを復元するために必要とされるメタデータ・スライスのセットのうちの最少数のメタデータ・スライスを表す。
【０２２１】
方法はステップ３９２に続き、このステップでは、処理モジュールは、少なくとも復号閾値数のメタデータ・スライスを復号して、メタデータを復元する。たとえば、処理モジュールは、第２レベル読取り要求をＤＳＮのストレージ・ユニットに送り、少なくとも復号閾値数のメタデータ・スライスを受け取り、少なくとも復号閾値数のメタデータ・スライスを散在ストレージ・エラー復号して、取り出されたメタデータを作成する。
【０２２２】
方法はステップ３９４に続き、このステップでは、処理モジュールは、取り出されたメタデータに基づいて（たとえば、データ・オブジェクトの符号化されたデータ・スライスの複数のセットの記憶に関するアドレス情報を使用して）、データ・オブジェクト名に関連付けられたデータ・オブジェクトの少なくとも部分を取り出すための第３の取出し要求を生成し、第３の取出し要求は、ＤＳＮの読取り要求フォーマットに従ってフォーマットされる。その生成することは、処理モジュールが、メタデータに基づいて、少なくとも復号閾値数の符号化されたデータ・スライスを取り出すための第３レベル読取り要求の少なくとも１つのセットを生成することを含む。ここで、データ・オブジェクトは、散在ストレージ・エラー符号化されて、符号化されたデータ・スライスの複数のセットを作成しており、復号閾値数の符号化されたデータ・スライスは、データ・オブジェクトの上記部分を復元するために必要とされる符号化されたデータ・スライスの複数のセットのうち１つのセットのうちの最少数の符号化されたデータ・スライスを表す。たとえば、処理モジュールは、第３レベル読取り要求をＤＳＮのストレージ・ユニットに送り、符号化されたデータ・スライスの複数のセットの各セットについて、少なくとも復号閾値数の符号化されたデータ・スライスを受け取り、少なくとも復号閾値数の符号化されたデータ・スライスのそれぞれを散在ストレージ・エラー復号して、取り出されたデータ・オブジェクトを作成する。
【０２２３】
処理モジュールと関連して上述された方法は、散在ストレージ・ネットワークの他のモジュール、または他のデバイスによって代わりに実行され得る。加えて、動作命令を記憶する少なくとも１つのメモリ部（たとえばコンピュータ可読記憶媒体）が、散在ストレージ・ネットワーク（ＤＳＮ）の１つまたは複数のコンピューティング・デバイスの１つまたは複数の処理モジュールによって実行されたとき、上述された任意またはすべての方法ステップを１つまたは複数のコンピューティング・デバイスに実行させることができる。
【０２２４】
図４３は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、２つ以上の散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュール１〜２、図１のネットワーク２４、ならびにＤＳＴ実行（ＥＸ）ユニット・セット４００を含む。ＤＳＴ実行ユニット・セット４００は、ＤＳＴ実行ユニット１〜ｎのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。各ＤＳＴクライアント・モジュールは、図１のＤＳＴクライアント・モジュール３４を利用して実装され得る。
【０２２５】
ＤＳＮは、ＤＳＴ実行ユニット・セット４００にデータ・オブジェクトを記憶し、ＤＳＴ実行ユニット・セットへのデータ・オブジェクトの記憶の確認を提供するように機能する。データ・オブジェクトを記憶する動作の例において、ＤＳＴクライアント・モジュール１は、データ・オブジェクトおよびそのデータ・オブジェクトのオブジェクト名を含むデータ・オブジェクト記憶要求４０１を受け取る。ＤＳＴクライアント・モジュール１は、ＤＳＴ実行ユニット・セット４００へのデータ・オブジェクトの記憶を推進する。たとえば、ＤＳＴクライアント・モジュール１は、データ・オブジェクトを散在ストレージ・エラー符号化して、符号化されたデータ・スライスの複数のセットを作成し、符号化されたデータ・スライスの複数のセットに対応するようにスライス名の複数のセットを生成し、符号化されたデータ・スライスの複数のセットおよびスライス名の複数のセットを含む１つまたは複数のセットのスライス書込み要求４０２を生成し、ネットワーク２４を介して、１つまたは複数のセットのスライス書込み要求４０２をＤＳＴ実行ユニット１〜ｎのセットに送る。
【０２２６】
ＤＳＴ実行ユニット・セットへのデータ・オブジェクトの記憶を推進すると、ＤＳＴクライアント・モジュール１が、Ｋ個の固有の確定関数をオブジェクト名に適用して、Ｋ個の確定値（deterministic value）１〜Ｋを作成し、各確定値は１〜Ｍの範囲にわたり、Ｍはバケットの数を示す。各ＤＳＴ実行ユニットは、バケット・マッピング方式（bucket mapping scheme）に従って、１〜Ｍの確定範囲値の一部に関連付けられる。たとえば、各ＤＳＴ実行ユニットは、バケット・マッピング方式が均一な分布を含む場合にＭ／ｎのバケットに関連付けられる。たとえば、ＤＳＴ実行ユニット１が、確定範囲値１〜Ｍの最初のｎ分の１の量に関係付けられ、ＤＳＴ実行ユニット２が、確定範囲値１〜Ｍの次の量に関連付けられるなどである。
【０２２７】
各確定値１〜Ｋについて、ＤＳＴクライアント・モジュール１は、確定値およびバケット・マッピング方式に基づいて、ＤＳＴ実行ユニットのセットのうちの対応するＤＳＴ実行ユニットを識別する。各確定値について対応するＤＳＴ実行ユニットを識別すると、ＤＳＴクライアント・モジュール１は、識別された対応するＤＳＴ実行ユニットに従ってＤＳＴ実行ユニットの少なくともいくつかへバケット更新要求１〜Ｋを発行する。各バケット要求は、範囲１〜Ｍの対応する確定値を含む。
【０２２８】
ＤＳＴ実行ユニット（たとえばＫまたはＫ未満）は、バケット更新要求１〜Ｋを受け取り、ローカルに記憶されたバケットの値を更新し、バケットに関連付けられた確定値に対応するバケット更新要求を受け取っているアクティブ状態を示す。たとえば、ＤＳＴ実行ユニット２は、Ｍ＝１００万のバケットおよびｎ＝１０のＤＳＴ実行ユニットである（たとえば、各ＤＳＴ実行ユニットが１００，０００個のバケットにマッピングされる）とき、バケット更新要求１を受け取って１５０，０００の確定値に関連付けられたバケットを更新する。
【０２２９】
データ・オブジェクトの記憶の確認を提供する動作の例において、ＤＳＴクライアント・モジュール２は、データ・オブジェクト記憶確認要求４０４を受け取り、データ・オブジェクト記憶確認要求４０４は、データ・オブジェクトのオブジェクト名を含んでいる。ＤＳＴクライアント・モジュール２は、受け取られたオブジェクト名にＫ個の固有の確定関数を適用して、Ｋ個の確定値１〜Ｋを作成する。各確定値について、ＤＳＴクライアント・モジュール２は、バケット・マッピング方式に従って対応するＤＳＴ実行ユニットを識別する。
【０２３０】
各対応するＤＳＴ実行ユニットを識別すると、ＤＳＴクライアント・モジュール２は、ネットワーク２４を介して、バケット状態要求１〜Ｋを対応するＤＳＴ実行ユニットに送り、バケット状態要求１〜Ｋは、確定値１〜Ｋを含んでいる。ＤＳＴクライアント・モジュール２は、ＤＳＴ実行ユニットからバケット状態応答１〜Ｋを受け取り、各バケット状態応答は、バケットの状態（たとえば、アクティブ、非アクティブ）を示す。
【０２３１】
バケット状態応答を受け取ると、ＤＳＴクライアント・モジュール２は、受け取られたバケット状態応答に基づいて、データ・オブジェクトがＤＳＴ実行ユニット・セットに記憶されているかどうかを決定する。具体的な例として、ＤＳＴクライアント・モジュール２は、アクティブ状態を示す受け取られたバケット状態応答の数が高い閾値レベル以上であるときに、データ・オブジェクトが記憶されている可能性があることを示す。たとえば、ＤＳＴクライアント・モジュール２は、Ｋ個すべての応答がアクティブ状態を示し、高い閾値レベルがＫであるとき、データ・オブジェクトが記憶されている可能性があることを示す。別の具体的な例として、ＤＳＴクライアント・モジュール２は、非アクティブ状態を示す受け取られたバケット状態応答の数が低い閾値レベル以上であるとき、データ・オブジェクトが記憶されていないことを示す。たとえば、ＤＳＴクライアント・モジュール２は、Ｋ個の応答の１つのみが非アクティブ状態を示し、低い閾値レベルが１であるとき、データ・オブジェクトが記憶されていないことを示す。データ・オブジェクトが記憶されているかどうかを決定すると、ＤＳＴクライアント・モジュール２は、可能な記憶の標識または非記憶の標識を含むデータ・オブジェクト記憶確認応答４０６を出力する。
【０２３２】
図４４は、データ・オブジェクトの記憶を確認する例を示すフローチャートである。データが記憶されるときに、方法はステップ４１０から開始または継続し、このステップでは、（たとえば、散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュールの）処理モジュールが、データ・オブジェクトおよびそのデータ・オブジェクトのオブジェクト名を含むデータ・オブジェクト記憶要求を受け取る。方法はステップ４１２に続き、このステップでは、処理モジュールは、散在ストレージ・エラー・符号化機能を使用してストレージ・ユニットのセットにデータ・オブジェクトを記憶することを推進する。方法はステップ４１４に続き、このステップでは、処理モジュールは、Ｋ個の固有の確定関数をオブジェクト名に適用してＫ個の確定値を作成する。各確定値は、１〜Ｍの範囲内にある。
【０２３３】
各確定値について、方法はステップ４１６に続き、このステップでは、処理モジュールは、確定値に基づいて、ストレージ・ユニットのセットのうちの対応するストレージ・ユニットを識別する。たとえば、処理モジュールは、バケット・マッピング方式を利用して、各確定値に関連付けられた各ストレージ・ユニットを識別する。方法はステップ４１８に続き、このステップでは、処理モジュールは、バケット更新要求を対応するストレージ・ユニットに送り、バケット更新要求は確定値を含んでいる。方法はステップ４２０に続き、このステップでは、各ストレージ・ユニットが、バケットに関連付けられた確定値を含むバケット更新要求を受け取ったときにバケットの状態値を（たとえばアクティブに）更新する。
【０２３４】
データの記憶を確認するときに、方法はステップ４２２に続き、このステップでは、処理モジュールが、データ・オブジェクト記憶確認要求を受け取る。データ・オブジェクト記憶確認要求は、データ・オブジェクトのオブジェクト名である。方法はステップ４２４に続き、このステップでは、処理モジュールは、Ｋ個の固有の確定関数をオブジェクト名に適用してＫ個の確定値１〜Ｋを作成する。
【０２３５】
各確定値について、方法はステップ４２６に続き、このステップでは、処理モジュールは、確定値およびバケット・マッピング方式に基づいて、ストレージ・ユニットのセットのうちの対応するストレージ・ユニットを識別する。方法はステップ４２８に続き、このステップでは、処理モジュールは、確定値を含むバケット状態要求を、対応するストレージ・ユニットに送る。
【０２３６】
方法はステップ４３０に続き、このステップでは、処理モジュールは、ストレージ・ユニットの少なくともいくつかからバケット状態応答を受け取り、各バケット状態応答はバケットの状態値を示す。方法はステップ４３２に続き、このステップでは、処理モジュールは、受け取られたバケット状態応答に基づいて、データ・オブジェクトの記憶の標識を生成する。
【０２３７】
図４５および図４６は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、図１の散在ストレージおよびタスク（ＤＳＴ）処理ユニット１６、広域ネットワーク４４０、ならびにＤＳＴ実行（ＥＸ）ユニット・セット４４２を含む。広域ネットワーク４４０は、図１のネットワーク２４の広域部分を利用して実装され得る。ＤＳＴ実行ユニット・セット４４２は、ＤＳＴ実行ユニット１〜ｎのセットを含む。少なくとも１つのＤＳＴ実行ユニットが、図１のＤＳＴクライアント・モジュール３４を含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。以下では、各ＤＳＴ実行ユニットは、複数のストレージ・ユニットまたはセットのストレージ・ユニットあるいはその両方のうちのストレージ・ユニットと交換可能に称され得る。ＤＳＴ実行ユニットの少なくとも２つ以上は、ローカル・エリア・ネットワーク４４４によって動作可能に結合される。ローカル・エリア・ネットワーク４４４は、ネットワーク２４のローカル・エリア・ネットワーク部分を利用して実装され得る。
【０２３８】
ＤＳＮは、ＤＳＴ実行ユニット・セット４４２内に記憶されたデータに対するアクセスを提供するために反復ストレージ・ユニット・アクセス・プロセスを委任するように機能する。反復ストレージ・ユニット・アクセス・プロセスは、（たとえば、ＤＳＴ処理ユニット１６、ＤＳＴクライアント・モジュール３４の）１つまたは複数の処理モジュールが、１つまたは複数のデータ記憶アドレス決定ステップを実行して、アドレス情報を利用してデータに対するアクセスを可能にするように、データに関するアドレス情報を作成することを含む。
【０２３９】
１つまたは複数のデータ記憶アドレス決定ステップは、アドレス情報を作成するために、データに関連付けられた情報を利用してアドレス情報構造に反復してアクセスすることを含む。アドレス情報構造は、ＤＳＮディレクトリ（たとえばフラット・リスト）、確定関数の利用（たとえば、データに関連付けられた情報に対して確定関数を実行してアドレス情報の少なくとも部分を作成する）、および散在階層インデックス（たとえばインデックス・ツリー）のうちの少なくとも１つを含む。分散アーティクル・インデックス（dispersed article index）は、複数のレベルを利用するツリー・インデックス構造を含み、この構造において、トップ・レベルが検索用のインデックスへのエントリのためのルート・ノードを含み、また、ツリーの他のノードを指すインデックス・キー参照を含むインデックス・ノードを含む一連の中間レベル（たとえば、データに関連付けられた情報としてインデックス・キーを利用して反復して検索される）、および、各葉ノードが、データ・ストレージに関連付けられたＤＳＮアドレスと検索インデックス・キーの関連付けを含む、最も低いレベルの葉ノードを含む。たとえば、データに関連付けられた散在階層インデックスは、ＤＳＴ実行ユニット・セット４４２内の複数のインデックス・ノードとして記憶され、各インデックス・ノードは散在ストレージ・エラー符号化されて、ＤＳＴ実行ユニット１〜ｎのセットに記憶されるインデックス・スライスのセットを作成する。したがって、ＤＳＴ処理ユニット１６およびＤＳＴクライアント・モジュール３４のうちの１つまたは複数が、ＤＳＴ実行ユニット・セット４４２から記憶されたインデックス・スライスにアクセスすることにより、インデックス・ノードのうちの１つまたは複数にアクセスする。たとえば、ＤＳＴクライアント・モジュール３４は、ＤＳＴ実行ユニット１〜ｎのセットから５つのインデックス・ノード・オブジェクトを反復して復元することによって分散アーティクル・インデックスの５つのインデックス・ノードにアクセスして、最終的に、データの復元を可能にするためにデータに関連付けられたＤＳＮアドレスを作成する。
【０２４０】
図４５は、反復ストレージ・ユニット・アクセス・プロセスの委任の動作の例のステップを示し、ここで、ＤＳＴ処理ユニット１６は、データにアクセスするための要求エンティティからのＤＳＮアクセス要求４４６を受け取る。そのアクセスすることは、データを記憶すること、データを取り出すこと、データをリストすること、およびデータを削除することのうちの少なくとも１つを含む。ＤＳＮアクセス要求４４６は、１つまたは複数の検索基準を有するデータに関するアドレス情報（たとえばインデックス・キー）を求める要求であって、反復ストレージ・ユニット・アクセス・プロセスが、１つまたは複数の検索基準に基づいてデータを識別するためにインデックス・ツリーを全探索するように実行される、要求と、１つまたは複数の検索基準を有するデータを求める要求との少なくとも一方を含む。
【０２４１】
ＤＳＮアクセス要求４４６を受け取ると、ＤＳＴ処理ユニット１６は、ＤＳＮアクセス要求４４６が反復ストレージ・ユニット・アクセス・プロセスを必要とするかどうかを決定する。たとえば、ＤＳＴ処理ユニット１６は、ＤＳＮアクセス要求４４６が検索基準を含むとき、ＤＳＮアクセス要求４４６が反復ストレージ・ユニット・アクセス・プロセスを必要とすることを示す。
【０２４２】
ＤＳＮアクセス要求４４６が反復ストレージ・ユニット・アクセス・プロセスを必要とする場合、ＤＳＴ処理ユニット１６は、ＤＳＮアクセス要求４４６に関連付けられたデータ・オブジェクトを記憶する複数のストレージ・ユニットの構成に基づいて、複数のストレージ・ユニットのうちのストレージ・ユニットがＤＳＴ処理ユニット１６（たとえばコンピューティング・デバイス）よりも良好に反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行できると決定する。たとえば、ＤＳＴ実行ユニット１が、ＬＡＮ接続４４４を介して、複数のＤＳＴ実行ユニットのうちの望ましい数（たとえば、復号閾値数マイナス１、ただし、符号化されたデータ・スライスのセットごとの復号閾値数が復元のために必要となる）の他のＤＳＴ実行ユニットに結合されている場合、ＤＳＴ処理ユニット１６が、ＤＳＴ処理ユニット１６よりも良好にＤＳＴ処理ユニット１が反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行できると決定すると、ＤＳＴ処理ユニット１６は、ＤＳＴ処理ユニット１６よりも良好にＤＳＴ処理ユニット１がプロセスにおける反復記憶の少なくとも部分を実行できることを示す。
【０２４３】
別の例として、ＤＳＴ処理ユニット１６が、ローカル・エリア・ネットワーク（ＬＡＮ）４４４接続を介して、ＤＳＴ実行ユニット１が、複数のＤＳＴ実行ユニット（たとえばストレージ・ユニット）のうちの１つまたは複数の他のＤＳＴ実行ユニットに結合されていると決定した場合、かつ、ＤＳＴ処理ユニット１６が、（たとえば広域ネットワーク４４０を介する）広域ネットワーク（ＷＡＮ）通信の低減が、反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分のより良好な実行を構成する（たとえば、広域ネットワーク４４０を介してよりもＬＡＮ４４４を介してインデックス・ツリーのインデックス・ノードにアクセスすることが効率的である）と決定した場合に、ＤＳＴ処理ユニット１６は、ＤＳＴ処理ユニット１６よりも良好にＤＳＴ処理ユニット１が反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行できることを示す。ＷＡＮ通信の低減は、ＷＡＮトラフィックの低減、および反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を処理する待ち時間の低減の少なくとも一方を含む。
【０２４４】
ＤＳＴ処理ユニット１６よりも良好に反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行できるＤＳＴ実行ユニット（たとえばＤＳＴ実行ユニット１）を識別すると、ＤＳＴ処理ユニット１６は、（たとえば、広域ネットワーク４４０を介して結合されたときに）広域ネットワーク４４０を介して、ＤＳＮアクセス要求４４６および制御コマンド４４８をストレージ・ユニット（たとえばＤＳＴ実行ユニット１）に送り、制御コマンド４４８は、反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行するようにストレージ・ユニットに命令する。制御コマンド４４８は、反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行しながらアクセスするために複数のストレージ・ユニットのうちの復号閾値数のストレージ・ユニットを示す命令であって、復号閾値数のストレージ・ユニットのうちの少なくとも１つはＷＡＮ接続を介してストレージ・ユニットに結合されている、命令、反復ストレージ・ユニット・アクセス・プロセス（たとえば検索基準）を実行する命令、および（たとえばデータを含む）完了応答をＤＳＮアクセス要求に提供する命令のうちの１つまたは複数を含む。
【０２４５】
代わりにまたは加えて、ＤＳＴ処理ユニット１６が、広域ネットワーク４４０を介して、ＤＳＮアクセス要求４４６および別の制御コマンド４４８を、複数のストレージ・ユニットの第２のサブセットのうちの１つまたは複数のストレージ・ユニットに送るが、これは、ストレージ・ユニットが、集合的応答を後で提供するための複数のストレージ・ユニットのサブセットを表すときに、処理モジュールが、ＤＳＮアクセス要求４４６および制御コマンド４４８をストレージ・ユニットに送る場合に行われる。たとえば、ＤＳＴ処理ユニット１６は、ＤＳＴ実行ユニットｎが、反復ストレージ・ユニット・アクセス・プロセスに必要とされるが、ＬＡＮ４４４を介してＤＳＴ実行ユニット１に動作可能に結合されていないとき、別の制御コマンド４４８をＤＳＴ実行ユニットｎに送る。
【０２４６】
図４６は、反復ストレージ・ユニット・アクセス・プロセスの委任の動作の例のさらなるステップを示し、ここで、ＤＳＴ処理ユニット１６は、ＤＳＴ実行ユニット１から広域ネットワーク４４０を介して、ＤＳＮアクセス要求４４６に対する少なくとも部分応答４５２を受け取る。部分応答４５２は、復元されたデータを含む完了応答、データに関するアドレス情報、および、複数のストレージ・ユニットのサブセットの集合的応答を表すＤＳＴ実行ユニット１からのグループ反復部分応答のうちの少なくとも１つを含む。たとえば、ＤＳＴクライアント・モジュール３４は、ＬＡＮ４４４を介して、スライス・アクセス４５０を実行して、データのアドレス情報を識別するために復号閾値数のＤＳＴ実行ユニットから反復ストレージ・ユニット・アクセス・プロセスに従って各インデックス・ノードについて復号閾値数のインデックス・スライスを復元し、符号化されたデータ・スライスの各セットについて、復号閾値数のＤＳＴ実行ユニットからデータの複数の符号化されたデータ・スライスの各セットについて少なくとも復号閾値数の符号化されたデータ・スライスを取り出し、取り出された復号閾値数の符号化されたデータ・スライスを散在ストレージ・エラー復号してデータを再現し、再現されたデータを含む部分応答４５２を広域ネットワーク４４０を介してＤＳＴ処理ユニット１６へ発行する。再現されたデータを受け取ると、ＤＳＴ処理ユニット１６は、再現されたデータを含むＤＳＮアクセス応答４５４を要求エンティティへ発行する。
【０２４７】
代わりにまたは加えて、反復ストレージ・ユニット・アクセス・プロセスの反復ごとに、複数のストレージ・ユニットのサブセットの集合的応答を表すＤＳＴ実行ユニット１からのグループ反復部分応答を受け取りながら、ＤＳＴ処理ユニット１６は、複数のストレージ・ユニットの第２のサブセットの１つまたは複数のＤＳＴ実行ユニットから反復部分応答（たとえば、ＤＳＴ実行ユニットｎからの反復部分応答４５６）を受け取り、グループ反復部分応答４５６および反復部分応答４５２を処理して、反復応答を含むＤＳＮアクセス応答４５４（たとえば復元されたデータ）を作成する
【０２４８】
図４７は、反復ストレージ・ユニット・アクセス・プロセスを委任する例を示すフローチャートである。特に、図１〜図３９、図４５〜図４６、さらに図４７と関連して説明される１つまたは複数の機能および特徴と共に用いる方法が提示される。方法はステップ４６０から開始し、このステップでは、散在ストレージ・ネットワーク（ＤＳＮ）の１つまたは複数のコンピューティング・デバイスのうちのコンピューティング・デバイスの処理モジュールが、ＤＳＮアクセス要求が反復ストレージ・ユニット・アクセス・プロセスを必要とするかどうかを決定する。たとえば、処理モジュールは、取り出されるべきデータに対する検索基準を受け取るとき、ＤＳＮアクセス要求が反復ストレージ・ユニット・プロセスを必要とすることを示す。
【０２４９】
ＤＳＮアクセス要求が反復ストレージ・ユニット・アクセス・プロセスを必要とする場合、方法はステップ４６２に続き、このステップでは、処理ユニットは、ＤＳＮアクセス要求に関連付けられたデータ・オブジェクトを記憶する複数のストレージ・ユニットの構成に基づいて、複数のストレージ・ユニットのうちのストレージ・ユニットがコンピューティング・デバイスよりも良好に反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行できると決定する。たとえば、ストレージ・ユニットが、ＬＡＮ接続を介して、複数のストレージ・ユニットのうちの望ましい数の他のストレージ・ユニット（たとえば、合計で復号閾値数）に結合されている場合、処理モジュールは、ストレージ・ユニットが、（たとえば処理モジュールに関連付けられた）コンピューティング・デバイスよりも良好に反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行できることを示す。別の例として、処理モジュールが、ローカル・エリア・ネットワーク（ＬＡＮ）接続を介して、ストレージ・ユニットが、複数のストレージ・ユニットのうちの１つまたは複数の他のストレージ・ユニットに結合されていると決定した場合、かつ、処理モジュールが、広域ネットワーク（ＷＡＮ）通信の低減が、反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分のより良好な実行を構成すると決定した場合に、処理モジュールは、コンピューティング・デバイスよりも良好にストレージ・ユニットが反復ストレージ・ユニット・プロセスの少なくとも部分を実行できることを示す。
【０２５０】
方法はステップ４６４に続き、このステップでは、処理モジュールは、ＤＳＮアクセス要求および制御コマンドをストレージ・ユニットに送り、制御コマンドは、反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行するようにストレージ・ユニットに命令する。制御コマンドは、反復ストレージ・ユニット・アクセス・プロセスの少なくとも部分を実行しながらアクセスするために複数のストレージ・ユニットのうちの復号閾値数のストレージ・ユニットを示す命令であって、復号閾値数のストレージ・ユニットのうちの少なくとも１つはＷＡＮ接続を介してストレージ・ユニットに結合されている、命令、反復ストレージ・ユニット・アクセス・プロセスを実行する命令、および完了応答をＤＳＮアクセス要求に提供する命令のうちの１つまたは複数を含む。代わりにまたは加えて、処理モジュールが、ＤＳＮアクセス要求および別の制御コマンドを、複数のストレージ・ユニットの第２のサブセットのうちのストレージ・ユニットに送るが、これは、ストレージ・ユニットが、集合的応答（たとえば復元されたデータ）を後で提供するための複数のストレージ・ユニットのサブセットを表すときに、処理モジュールが、ＤＳＮアクセス要求および制御コマンドをストレージ・ユニットに送るときに行われる。
【０２５１】
方法はステップ４６６に続き、このステップでは、処理モジュールは、ストレージ・ユニットから、ＤＳＮアクセス要求に対する少なくとも部分応答を受け取る。部分応答は、復元されたデータを含む完了応答、データに関するアドレス情報、および、複数のストレージ・ユニットのサブセットの集合的応答を表すストレージ・ユニットからのグループ反復部分応答のうちの少なくとも１つを含む。他の制御コマンドが利用されるとき、反復ストレージ・ユニット・アクセス・プロセスの反復ごとに、方法はステップ４６８に続き、このステップでは、複数のストレージ・ユニットのサブセットの集合的応答を表すストレージ・ユニットからのグループ反復部分応答を受け取りながら、処理モジュールは、複数のストレージ・ユニットの第２のサブセットのストレージ・ユニットから反復部分応答を受け取り、処理モジュールは、グループ反復部分応答および反復部分応答を処理して、反復応答（たとえば復元されたデータ）を作成する。
【０２５２】
処理モジュールと関連して上述された方法は、散在ストレージ・ネットワークの他のモジュール、または他のデバイスによって代わりに実行され得る。加えて、動作命令を記憶する少なくとも１つのメモリ部（たとえばコンピュータ可読記憶媒体）が、散在ストレージ・ネットワーク（ＤＳＮ）の１つまたは複数のコンピューティング・デバイスの１つまたは複数の処理モジュールによって実行されたとき、上述された任意またはすべての方法ステップを１つまたは複数のコンピューティング・デバイスに実行させることができる。
【０２５３】
図４８は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、複数のユーザ・デバイス１〜Ｕ、複数の散在ストレージおよびタスク（ＤＳＴ）処理ユニット１〜１００、図１のネットワーク２４、ならびにＤＳＴ実行（ＥＸ）ユニット・セット４７０を含む。ＤＳＴ実行ユニット・セット４７０は、ＤＳＴ実行ユニット１〜ｎのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。各ユーザ・デバイスは、図１のユーザ・デバイス１２および図１のユーザ・デバイス１４のうちの少なくとも１つを利用して実装され得る。各ＤＳＴ処理ユニットは、図１のＤＳＴ処理ユニット１６を利用して実装され得る。
【０２５４】
ＤＳＮは、ＤＳＮに記憶されたデータにアクセスするとき、複数のデータ・アクセス・リソース（たとえばＤＳＴ処理ユニット）を利用するように機能する。複数のデータ・アクセス・リソースを利用する動作の例において、ＤＳＴ処理ユニットは、散在階層インデックスのインデックス・ノード・インデックス・キー範囲割当てを複数のＤＳＴ処理ユニット１〜１００に関連付ける命名関連情報４７８を更新するかどうかを決定する。その決定することは、分岐因子変更（たとえば、基準ノードより低いレベルのノードの数）の検出に基づいて更新を示すこと、使用可能なＤＳＴ処理ユニットの数の変更を検出すること、および、１つまたは複数のＤＳＴ処理ユニットのパフォーマンス情報を解釈することのうちの少なくとも１つを含む。
【０２５５】
散在階層インデックスは、１つのルート・インデックス・ノード、１つまたは複数の親インデックス・ノード、および１つまたは複数のインデックス・ノードを含む。各ノード（たとえば、ルート・インデックス・ノード、親インデックス・ノード、インデックス・ノード）は、データ・オブジェクトを利用して実装することができ、関連付けられたインデックス・キー範囲の１つまたは複数のエントリ、他のノードへのポインタ、および散在ストレージ・ネットワーク（ＤＳＮ）に記憶されたデータ・オブジェクトへのポインタを含む。そのようなポインタは、ＤＳＴ実行ユニット・セット内のノードまたはデータ・オブジェクトあるいはその両方の記憶位置に対応する仮想ＤＳＮアドレス（たとえばソース名）を含む。親インデックス・ノードは、親子関係を形成する子インデックス・ノードへのポインタを含む。ノードは、インデックスの共通レベルにおける兄弟レベル・ノードへのポインタを含んでもよい。各ノードは、散在ストレージ・エラー符号化されてノード・スライスのセットを作成し、ノード・スライスの各セットは、スライス・アクセス４７４を介してノードのＤＳＮアドレスに対応する位置においてＤＳＮのストレージ・ユニットのセットに記憶される。
【０２５６】
散在階層インデックスは、１つまたは複数のインデックス属性に関連付けられた次元を含むように構築され維持され得る。インデックス属性は、レベルの最大数、（たとえば、最も高いレベルのルート・インデックス・ノードから最も低いレベルのインデックス・ノードへの）レベルの最少数、親子ノード関係における子ノードの最大数、親子ノード関係における子ノードの最少数、共通レベルにおける兄弟ノードの最大数、共通レベルにおける兄弟ノードの最少数、インデックス・ノードにおけるエントリの最大数、およびインデックス・ノードにおけるエントリの最少数のうちの１つまたは複数を含む。
【０２５７】
散在階層インデックスは、ＤＳＮのＤＳＴ実行ユニット・セットに記憶されたデータ・オブジェクトに関連付けられた記憶位置を突き止めるために利用され得る。たとえば、ルート・インデックス・ノードから開始して、散在階層インデックスは、最も低いレベルでインデックス・ノードのエントリ内でインデックス・キーに所望のインデックス・キーをマッチングすることによって検索され、インデックス・ノードのエントリは、所望のデータ・オブジェクトに対応する。検索は、ルート・インデックス・ノードと所望のデータ・オブジェクトに関連付けられた最も低いレベルのインデックス・ノードとの間のノードに関連付けられたインデックス・キー範囲と、所望のインデックス・キーを比較することによって、インデックスのより低い後続のレベルにアクセスすることを含むことができる。インデックス・ノードの最も低いレベルは、ＤＳＮに記憶されたデータ・オブジェクトに関連付けられたエントリを含む。
【０２５８】
各ＤＳＴ処理ユニットは、インデックス・ノード・インデックス・キー範囲に関連付けられ、また、散在階層インデックスの任意のレベルに関連付けられ得る。たとえば、ＤＳＴ処理ユニット１は、最大２０００のうちの０〜１９のインデックス・ノード・インデックス・キー範囲に関連付けられ、ＤＳＴ処理ユニット２は、最大２０００のうちの２０〜３９のインデックス・ノード・インデックス・キー範囲に関連付けられ、以下同様に続き、ＤＳＴ処理ユニット１００は、最大２０００のうちの１９８０〜１９９９のインデックス・ノード・インデックス・キー範囲に関連付けられ、上記の場合、ルート・ノード・レベルより１つ低いレベルでインデックス・キー範囲が最大の２０００を含み、マッピング方式がインデックス・キー範囲の各部分の均一な分布を含む。
【０２５９】
命名関連情報４７８を更新するとき、ＤＳＴ処理ユニットは、使用可能なＤＳＴ処理ユニットの数を識別する。その識別することは、問合せを開始すること、問合せ応答を受け取ること、探索を実行すること、およびエラー・メッセージを解釈することのうちの少なくとも１つを含む。使用可能なＤＳＴ処理ユニットの数を識別すると、ＤＳＴ処理ユニットは、散在階層インデックスの参照分岐因子を決定する。たとえば、ＤＳＴ処理ユニットは、ルート・ノードより１つ低いレベルの子ノードの数を分岐因子としてカウントする。
【０２６０】
分岐因子を決定すると、ＤＳＴ処理ユニットは、散在階層インデックスに関連付けられたインデックス・キー・タイプを識別する。たとえば、ＤＳＴ処理ユニットは、分散粒子インデックスに関連付けられたメタデータ・ファイルにアクセスして、インデックス・キー・タイプを抽出する。インデックス・キー・タイプを識別すると、ＤＳＴ処理ユニットは、区分化方式（partitioning scheme）に従って、使用可能なＤＳＴ処理ユニットの数に基づいて分岐因子を区分して、インデックス・ノード対ＤＳＴ処理ユニットのマッピングを作成する。たとえば、ＤＳＴ処理ユニットは、各ＤＳＴ処理ユニットにいくつのインデックス・ノードが関連付けられるべきか、および各ＤＳＴ処理ユニットにどのインデックス・ノードが関連付けられるべきかを示す。
【０２６１】
分岐因子を区分すると、ＤＳＴ処理ユニットは、インデックス・ノード対ＤＳＴ処理ユニットのマッピングおよびインデックス・キー・タイプ基づいて、更新された命名関連情報４７８を生成する。たとえば、ＤＳＴ処理ユニットは、インデックス・ノードの分岐因子の数に関するインデックス・キー・タイプに従って連続したインデックス・キーにおけるブレークポイントを識別し、使用可能なＤＳＴ処理ユニットのそれぞれにブレークポイントを関連付けて、更新された命名関連情報４７８を作成する。更新された命名関連情報４７８を生成すると、ＤＳＴ処理ユニットは、複数のＤＳＴ処理ユニットおよび複数のユーザ・デバイスのうちの１つまたは複数への更新された命名関連情報４７８の分散を推進する。
【０２６２】
命名関連を更新すると、ＤＳＮは、更新された命名関連情報４７８に従って、ユーザ・デバイスによるＤＳＴ処理ユニットとのデータ・アクセス４７２を推進する。具体的な例として、ユーザ・デバイス３は、更新されたデータ関連情報４７８に従って、ＤＳＴ処理ユニット４のインデックス・ノード範囲に基づいてインデックス・キー６２と関連したＤＳＴ処理ユニット４を選択する。ＤＳＴ処理ユニットを選択すると、ユーザ・デバイス３は、選択されたＤＳＴ処理ユニット４とデータ・アクセス４７２の交換をする（たとえば、データ・アクセス要求をＤＳＴ処理ユニット４に送り、ＤＳＴ処理ユニット４からデータ・アクセス応答を受け取る）。ＤＳＴ処理ユニット４は、ＤＳＴ実行ユニット１〜ｎのセットとスライス・アクセス４７４（たとえばスライス・アクセス１〜ｎ）の交換をして、データ・アクセス４７２を推進する。
【０２６３】
図４９は、データ・アクセス・リソースをインデックスに関連付ける例を示すフローチャートである。方法はステップ４８０から開始または継続し、このステップでは、（たとえば、散在ストレージおよびタスク（ＤＳＴ）処理ユニットの）処理モジュールが、散在階層インデックスのインデックス・ノード・インデックス・キー範囲割当てを複数のデータ・アクセス・リソース（たとえば複数のＤＳＴ処理ユニット）に関連付ける命名関連情報を更新するかどうかを決定する。その決定することは、更新スケジュールを解釈すること、分岐因子変更を検出すること、使用可能なデータ・アクセス・リソースの数を検出すること、およびパフォーマンス情報を解釈することのうちの１つまたは複数に基づくことができる。
【０２６４】
更新するとき、方法はステップ４８２に続き、このステップでは、処理モジュールは、使用可能なデータ・アクセス・リソースの数を識別する。その識別することは、エラー・メッセージを解釈すること、問合せを開始すること、問合せ応答を受け取ること、および探索を実行することのうちの少なくとも１つを含む。方法はステップ４８４に続き、このステップでは、処理モジュールは、散在階層インデックスの分岐因子を決定する。その決定することは、散在階層インデックスにアクセスすること、およびルート・ノード・レベルより少なくとも１つ低いレベルに関連付けられたインデックス・ノードの数をカウントすることのうちの少なくとも一方を含む。
【０２６５】
方法はステップ４８６に続き、このステップでは、処理モジュールは、散在階層インデックスに関連付けられたインデックス・キー・タイプを識別する。たとえば、処理モジュールは、散在階層インデックスに関連付けられた共通インデックス情報にアクセスして、インデックス・キー・タイプを抽出する。方法はステップ４８８に続き、このステップでは、処理モジュールは、使用可能なデータ・アクセス・リソースの数に基づいて分岐因子を区分して、インデックス・ノード対データ・アクセス・リソースのマッピングを作成する。たとえば、処理モジュールは、使用可能なデータ・アクセス・リソースの数で分岐因子を分割して、インデックス・ノード対データ・アクセス・リソースのマッピングを作成する。
【０２６６】
方法はステップ４９０に続き、このステップでは、処理モジュールは、インデックス・ノード対データ・アクセス・リソースのマッピングおよびインデックス・キー・タイプに基づいて、更新された命名関連情報を生成する。たとえば、処理モジュールは、データ・アクセス・リソースのマッピングおよびインデックス・キー・タイプに基づいて、データ・アクセス・リソースのそれぞれに関連付けられたインデックス・キー範囲を識別する。方法はステップ４９２に続き、このステップでは、処理モジュールは、更新された命名関連情報を利用してデータ・アクセスを推進する。たとえば、処理モジュールは、更新された命名関連情報をアクセス・デバイスおよびデータ・アクセス・リソースへ分散する。別の例として、アクセス・デバイスは、更新された命名関連情報を利用してデータ・アクセス・リソースにアクセスする。
【０２６７】
図５０は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、複数のユーザ・デバイス１〜Ｕ、２つ以上の散在ストレージおよびタスク（ＤＳＴ）処理ユニット１〜２、図１のネットワーク２４、ならびにＤＳＴ実行ユニット・セット４９４を含む。ＤＳＴ実行ユニット・セット４９４は、ＤＳＴ実行ユニット１〜ｎのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。各ユーザ・デバイスは、図１のユーザ・デバイス１２および図１のユーザ・デバイス１４のうちの少なくとも１つを利用して実装され得る。各ＤＳＴ処理ユニットは、図１のＤＳＴ処理ユニット１６を利用して実装され得る。
【０２６８】
ＤＳＮは、符号化されたデータ・スライスのセットとしてＤＳＴ実行ユニット・セット４９４に記憶されたデータへの複数のユーザ・デバイスのデータ・アクセス４９６を提供するように機能し、符号化されたデータ・スライスのセットの仮想ＤＳＮアドレスは、散在階層インデックスに保持されている。ＤＳＮはさらに、ＤＳＴ実行ユニット・セットに記憶された散在階層インデックスを更新するように機能する。散在階層インデックスを更新する動作の例において、ＤＳＴ処理ユニット１は、保留中の更新に従って散在階層インデックスのインデックス・ノードを更新することを決定する（たとえば、新しいエントリを識別する、変更されたエントリを識別する、削除するエントリを識別する）。インデックス・ノードを更新することを決定すると、ＤＳＴ処理ユニット１はインデックス・ノードの更新を開始する。たとえば、ＤＳＴ処理ユニット１は、インデックス・ノードを更新して、更新されたインデックス・ノードを作成し、更新されたインデックス・ノードを散在ストレージ・エラー符号化して、更新されたインデックス・ノード・スライスのセットを作り出し、ネットワーク２４を介してＤＳＴ実行ユニットのセットにスライス・アクセス要求１〜ｎを送って、更新されたインデックス・ノードに関連付けられた更新されたインデックス・ノード・スライスのセットの記憶を要求することにより、インデックス・ノード・アクセス４９８を送出し、更新されたインデックス・ノード・スライスのセットの記憶が成功したかどうかを示すスライス・アクセス応答１〜ｎとしてインデックス・ノード・アクセス４９８を受け取る。
【０２６９】
インデックス・ノードの更新が成功しなかったとき（たとえば、ＤＳＴ処理ユニット１が、スライス・アクセス応答を解釈し、更新されたインデックス・ノードの書込みの不成功を示したとき）、ＤＳＴ処理ユニット１は、インデックス・ノードに関連付けられたタスク・キューのタスク・エントリを生成する。ＤＳＴ処理ユニット１は、更新されたインデックス・ノード、またはインデックス・ノードの一部分に対する更新、あるいはその両方を含むように、エントリを生成する。タスク・エントリを生成すると、ＤＳＴ処理ユニット１は、タスク・エントリをタスク・キューに記憶する。たとえば、ＤＳＴ処理ユニット１は、インデックス・ノードのソース名に対して確定関数を実行し、インクリメントを実行する（たとえば、エントリ・カウントを１だけ増分する）ことによって、タスク・エントリのＤＳＮアドレスを生成し、ソース名を使用してタスク・エントリを記憶する。その記憶することは、タスク・エントリを散在ストレージ・エラー符号化して、タスク・スライスのセットを作成すること、タスク・エントリのＤＳＮアドレスに基づいて、タスク・スライスのセットに対するタスク・スライス名のセットを生成すること、タスク・スライスのセットおよびタスク・スライス名のセットを含むスライス書込み要求１〜ｎのセットを含むように、タスク・キュー・アクセス５００を生成すること、ならびにスライス書込み要求１〜ｎのセットをＤＳＴ実行ユニット１〜ｎのセットに送ることを含む。
【０２７０】
次いで、ＤＳＴ処理ユニット２はインデックス・ノードにアクセスする。インデックス・ノードにアクセスすると、ＤＳＴ処理ユニット２は、インデックス・ノードに関連付けられたタスク・キューが少なくとも１つのエントリを含んでいるかどうかを決定する。その決定することは、インデックス・ノードからのエントリ・カウントを解釈すること、およびタスク・キューの第１のエントリにアクセスを試みた結果を解釈することのうちの少なくとも一方を含む。
【０２７１】
タスク・キューが少なくとも１つのエントリを含むとき、ＤＳＴ処理ユニット２は、少なくとも１つのエントリに従ってインデックス・ノードの更新を開始する。たとえば、ＤＳＴ処理ユニット２は、エントリの復元された更新インデックス・ノードまたはエントリの復元された更新によってインデックス・ノードを更新して、新しく更新されたインデックス・ノードを生成する。新しく更新されたインデックス・ノードを生成すると、ＤＳＴ処理ユニット２は、新しく更新されたインデックス・ノードをＤＳＴ実行ユニットのセットに記憶しようと試みる（たとえば、スライス書込み要求を発行する、スライス書込み応答を受け取る）。新しく更新されたインデックス・ノードの更新が成功したとき、ＤＳＴ処理ユニット２は、インデックス・ノードに関連付けられたタスク・キューからその少なくとも１つのエントリを削除する。たとえば、ＤＳＴ処理ユニット２は、スライス削除要求をＤＳＴ実行ユニットのセットへ発行し、スライス削除要求は、キューのエントリに関連付けられたスライス名のセットを含んでいる。
【０２７２】
図５１は、散在階層インデックスを更新する例を示すフローチャートである。方法はステップ５０２から開始または継続し、このステップでは、（たとえば、散在ストレージおよびタスク（ＤＳＴ）処理ユニットの）処理モジュールが、保留中の更新に従って散在階層インデックスのインデックス・ノードを更新することを決定する。方法はステップ５０４に続き、このステップでは、処理モジュールは、インデックス・ノードの更新を開始する。たとえば、処理モジュールは、更新されたインデックス・ノードを生成し、更新されたインデックス・ノードを符号化してインデックス・スライスのセットを作成し、インデックス・スライスのセットを含むスライス書込み要求をストレージ・ユニットのセットへ発行し、スライス書込み応答を受け取り、受け取られたスライス書込み応答に基づいて更新が成功したかどうかを決定する。たとえば、処理モジュールは、書込み閾値数の好ましいスライス書込み応答を受け取っていない場合、更新が不成功であることを示す。
【０２７３】
インデックス・ノードの更新が成功していないとき、方法はステップ５０６に続き、このステップでは、処理モジュールは、インデックス・ノードに関連付けられたタスク・キューのタスク・エントリを生成する。たとえば、処理モジュールは、インデックス・ノードの保留中の更新を含むようにタスク・エントリを生成する。方法はステップ５０８に続き、このステップでは、処理モジュールは、タスク・エントリをタスク・キューに記憶する。たとえば、処理モジュールは、インデックス・ノードのＤＳＮアドレスに基づいて、タスク・エントリに対するＤＳＮアドレスを生成し、符号化されたタスク・スライスのセットを生成し、符号化されたタスク・スライスのセットとタスク・エントリに対するＤＳＮアドレスから導出されたスライス名とを含むスライス書込み要求のセットを生成し、スライス書込み要求のセットをストレージ・ユニットのセットに送る。
【０２７４】
方法はステップ５１０に続き、このステップでは、処理モジュールは次いで、インデックス・ノードにアクセスする。たとえば、処理モジュールは、インデックス・ノードのＤＳＮアドレスを識別し、インデックス・ノードのＤＳＮアドレスを利用してスライス読取り要求のセットをストレージ・ユニットのセットへ発行し、スライス読取り応答を受け取り、受け取られたスライス読取り応答のインデックス・ノード・スライスを復号して、インデックス・ノードを再現する。
【０２７５】
方法はステップ５１２に続き、このステップでは、処理モジュールは、インデックス・ノードに関連付けられたタスク・キューが少なくとも１つのタスク・エントリを含むかどうかを決定する。たとえば、処理モジュールは、再現されたインデックス・ノードのエントリ・カウントを解釈し、カウントが０よりも大きいとき、インデックス・ノードが少なくとも１つのタスク・エントリを含んでいることを示す。別の例として、処理モジュールは、第１のタスク・エントリへのアクセスを開始し、第１のタスク・エントリを成功裏に復号したとき、少なくとも１つのタスク・エントリが含まれていることを示す。
【０２７６】
インデックス・ノードに関連付けられたタスク・キューが少なくとも１つのタスク・エントリを含むとき、方法はステップ５１４に続き、このステップでは、処理モジュールは、インデックス・ノードの更新を開始する。たとえば、タスク・キューの各タスク・エントリについて、処理モジュールは、タスク・エントリに従ってインデックス・ノードの更新を推進する。たとえば、処理モジュールは、再現されたインデックス・ノードをタスク・エントリに従って変更し、変更されたインデックス・ノードを散在ストレージ・エラー符号化して、変更されたインデックス・スライスのセットを作成し、変更されたインデックス・スライスのセットをストレージ・ユニットのセットに送り、スライス書込み応答を受け取り、受け取られたスライス読取り応答を解釈して、インデックス・ノードの更新が成功したかどうかを決定する。
【０２７７】
インデックス・ノードの更新が成功したとき、方法はステップ５１６に続き、このステップでは、処理モジュールは、その少なくとも１つのエントリをタスク・キューから削除する。たとえば、処理モジュールは、スライス削除要求のセットを、タスク・キューの各対応する成功裏に更新されたエントリに関連付けられたＤＳＮアドレスへ発行する。
【０２７８】
図５２は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、複数の記憶世代１〜Ｇ、図１の散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）管理ユニット１８、ならびに図１のネットワーク２４を含む。各記憶世代は、ＤＳＴ実行（ＥＸ）ユニット１〜ｎのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。
【０２７９】
ＤＳＮは、ソース・アドレス範囲に関連付けられた符号化されたデータ・スライスのセットとしてデータを記憶するように機能する。ソース・アドレス範囲は、符号化されたデータ・スライスのセットに関連付けられたスライス名の一部分を含む。各記憶世代は、動作の準備の２つの状態に関連付けられる。２つの状態は、アクティブと非アクティブである。記憶世代は、記憶世代がアクティブであるとき、符号化されたデータ・スライスのセットの記憶および取出しを行うために使用可能である。記憶世代は、記憶世代が非アクティブ（たとえば、休眠、未割当て状態）であるとき、符号化されたデータ・スライスのセットの記憶および取出しを行うために使用可能ではない。たとえば、時間ｔ０で、記憶世代１はアクティブであり、記憶世代２〜Ｇは非アクティブである。
【０２８０】
記憶世代がアクティブであるとき、記憶世代は、ソース・アドレス範囲の一部分に関連付けられている。ソース・アドレス範囲は、スライス名の範囲の一部分を含み、それにより、ＤＳＮが、関連付けられた記憶世代を利用することにより、スライス名のその範囲に関連付けられた符号化データ・スライスにアクセスするようにされる。スライス名は、ピラーインデックス（たとえば、情報伝播アルゴリズム（ＩＤＡ）幅の１に対して１〜ｎ）、格納域識別子、世代識別子、およびソース・フィールドを含む。ソース・フィールドは、記憶されるデータ・オブジェクトに関連付けられたオブジェクト番号を含むことができ、データ・オブジェクトの分割に基づくセグメント番号が、複数のデータ・セグメントを作成するために必要とされる。たとえば、時間ｔ０における記憶世代１が、０〜９のソース・アドレス範囲全体に関連付けられ、それにより、ソース・アドレス範囲０〜９に関連付けられたすべての符号化されたデータ・スライスが、記憶世代１を利用してアクセスされるようになる。第１世代のデータが格納域Ｚに記憶されている間、記憶世代１のＤＳＴ実行ユニット１は、Ｐ１−ＶＺ−Ｇ１−Ｓ０からＰ１−ＶＺ−Ｇ１−Ｓ９の範囲のスライス名を有する符号化されたデータ・スライスに関連付けられ、記憶世代１のＤＳＴ実行ユニット２は、Ｐ２−ＶＺ−Ｇ１−Ｓ０からＰ２−ＶＺ−Ｇ１−Ｓ９の範囲のスライス名を有する符号化されたデータ・スライスに関連付けられるなどが行われる。
【０２８１】
動作の例において、ＤＳＴＮ管理ユニット１８は、第１の記憶世代を確立することを決定する。その決定することは、マネージャ入力を受け取ること、スケジュールを解釈すること、アクティブ化要求を受け取ること、構成情報を解釈すること、ストレージ・ユニットの新しいセットが使用可能であることを検出すること、および、追加の記憶容量が必要とされる（たとえば、他の記憶世代利用レベルが最大記憶世代利用閾値レベルと比べて好ましくない）ことを検出することのうちの１つまたは複数に基づくことができる。
【０２８２】
第１の記憶世代を確立することを決定すると、ＤＳＴＮ管理ユニット１８は、少なくとも１つの格納域がその記憶世代に関連付けられるように記憶パラメータを割り当てる。記憶パラメータは、格納域ＩＤ、およびＩＤＡタイプ、およびＩＤＡ幅、書込み閾値数、読取り閾値数、再構築閾値数、および復号閾値数のうちの１つまたは複数を含む。その割り当てることは、マネージャ入力を受け取ること、システム・レジストリを解釈すること、ＤＳＮパフォーマンスを推定すること、およびＤＳＮパフォーマンス目標レベルを解釈することのうちの１つまたは複数を含む。たとえば、ＤＳＴＮ管理ユニット１８は、マネージャ入力に基づいて格納域ＩＤであるＺを含むように記憶パラメータを設定する。
【０２８３】
記憶パラメータを割り当てると、ＤＳＴＮ管理ユニット１８は、記憶世代についての世代番号およびソース・アドレス範囲対世代マップを決定する。たとえば、ＤＳＴＮ管理ユニット１８は、第１の記憶世代を確立するときに世代１を決定する。別の例として、ＤＳＴＮ管理ユニット１８は、マネージャ入力に基づいて、記憶世代１にマッピングされる０〜９のソース・アドレス範囲を決定する。
【０２８４】
世代番号およびソース・アドレス範囲対世代マップを決定すると、ＤＳＴＮ管理ユニット１８は、割当てメッセージを、記憶世代に関連付けられたＤＳＴ実行ユニットのセットへ発行し、このメッセージは、世代番号、ソース・アドレス範囲、ＤＳＴ実行ユニットの識別子、および割り当てられた記憶パラメータの一部分のうちの１つまたは複数を含んでいる。たとえば、ＤＳＴＮ管理ユニット１８は、ネットワーク２４を介して割当てメッセージ１を記憶世代１のＤＳＴ実行ユニット１〜ｎのセットに送って、格納域Ｚの世代１について０〜９のソース・アドレス範囲にＤＳＴ実行ユニットのセットを関連付ける。新しい記憶世代を追加する方法が、図５３を参照してより詳細に論じられる。
【０２８５】
図５３は、記憶世代アクティブ化方式に従って、図５２のＤＳＴＮ管理ユニット１８によって時間ｔ０〜ｔ３にわたってアクティブ化される複数の記憶世代１〜４の概略ブロック図である。記憶世代のアクティブ化の動作の例において、ＤＳＴＮ管理ユニット１８は、１つまたは複数の現行記憶世代に別の記憶世代を追加することを決定する。その決定することは、好ましくないストレージ使用レベルを検出すること、好ましくないレベルの入力／出力動作を検出すること、１つまたは複数の現行記憶世代に記憶された好ましくない数のメタデータ・オブジェクトを検出すること、マネージャ入力を受け取ること、スケジュールを解釈すること、アクティブ化要求を受け取ること、構成情報を解釈すること、ストレージ・ユニットの新しいセットが使用可能であることを検出すること、追加の記憶容量が必要とされることを検出することのうちの１つまたは複数に基づくことができる。
【０２８６】
別の記憶世代を追加することを決定すると、ＤＳＴＮ管理ユニット１８は、ソース・アドレス範囲対世代マップを入手する。その入手することは、ＤＳＴ実行ユニットから取り出すこと、ローカル・メモリから取り出すこと、およびシステム・レジストリから抽出することのうちの少なくとも１つを含む。ソース・アドレス範囲対世代マップを入手すると、ＤＳＴＮ管理ユニット１８は、１つまたは複数の現行の記憶世代に世代を追加したときの世代の数を決定する。その決定することは、好ましくないストレージ使用のレベルを解釈すること、好ましくない入力／出力動作のレベルを解釈すること、および１つまたは複数の現行世代に記憶されたメタデータ・オブジェクトの数のレベルを解釈することのうちの１つまたは複数に基づくことができる。たとえば、ＤＳＴＮ管理ユニット１８は、好ましくないストレージ使用のレベルが、最大閾値レベルより高くかつ臨界閾値レベルより低いときに、１つの新しい記憶世代を追加することを決定する。
【０２８７】
世代の数を決定すると、ＤＳＴＮ管理ユニット１８は、記憶世代の数、および確定的アドレス再割り振り方式（deterministic address reallocation scheme）に基づいて、ソース・アドレス範囲対世代マップを更新する。ここで、各記憶世代には、世代の数に従ってソース・アドレス範囲の等しい部分が割り当てられ、現行世代ごとに、ソース・アドレス範囲の現行の割当ての一部分が他の記憶世代に再割当てされる。たとえば、時間ｔ１において、ＤＳＴＮ管理ユニット１８は、ソース・アドレス範囲の一方の半分が記憶世代１に留まり、ソース・アドレス範囲の他方の半分がここで新しい記憶世代２に割り当てられるように、ソース・アドレス範囲対世代マップを更新する。別の例として、時間ｔ２において、ＤＳＴＮ管理ユニットは、記憶世代１、２および新しい記憶世代３のそれぞれがソース・アドレス範囲の３分の１に関連付けられるように、ソース・アドレス範囲対世代マップを更新する。さらに別の例として、時間ｔ３において、各記憶世代はソース・アドレス範囲の４分の１に関連付けられる。
【０２８８】
ソース・アドレス範囲対世代マップを更新すると、ＤＳＴＮ管理ユニット１８は、他の世代および１つまたは複数の現行世代のそれぞれへの更新されたソース・アドレス範囲対世代マップの分散を推進する。たとえば、ＤＳＴＮ管理ユニット１８は、割当てメッセージ５２０を記憶世代へ発行し、割当てメッセージ５２０は、世代マップの更新されたソース・アドレス範囲を含んでいる。
【０２８９】
更新されたソース・アドレス範囲対世代マップを分散すると、ＤＳＴＮ管理ユニット１８は、更新されたソース・アドレス範囲対世代マップに従って、１つまたは複数の現行記憶世代のそれぞれから別の記憶世代へ、符号化された・データ・スライスを移行することを推進する。その推進することは、スライスの取出しおよび記憶を行うこと、他の各記憶世代に要求を送ってスライス読取り要求を発行すること、ならびに１つまたは複数の現行記憶世代のそれぞれへ要求を発行してスライス書込み要求を発行することのうちの少なくとも１つを含む。たとえば、時間ｔ１において、記憶世代１に記憶されたスライスの半分が記憶世代２へ移行される。別の例として、時間ｔ２において、記憶世代１に記憶されたスライスの３分の１が記憶世代３へ移行され、記憶世代２に記憶されたスライスの３分の１が記憶世代３へ移行される。さらに別の例として、時間ｔ３において、記憶世代１に記憶されたスライスの４分の１が記憶世代４へ移行され、記憶世代２に記憶されたスライスの４分の１が記憶世代４へ移行され、記憶世代３に記憶されたスライスの４分の１が記憶世代４へ移行される。
【０２９０】
図５４は、記憶世代を散在ストレージ・ネットワーク（ＤＳＮ）に追加する例を示すフローチャートである。方法はステップ５２２から開始または継続し、このステップでは、（たとえば、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）管理ユニットの）処理モジュールが、別の記憶世代を１つまたは複数の現行記憶世代に追加することを決定する。その決定することは、好ましくないストレージ使用レベルを検出すること、好ましくないレベルの入力／出力動作を検出すること、１つまたは複数の現行世代に記憶された好ましくない数のメタデータ・オブジェクトを検出することのうちの１つまたは複数に基づくことができる。
【０２９１】
方法はステップ５２４に続き、このステップでは、処理モジュールは、１つまたは複数の現行記憶世代に関連付けられたソース・アドレス範囲対世代マップを入手する。その入手することは、記憶世代から取り出すこと、システム・レジストリから抽出すること、問合せを開始すること、および問合せ応答を受け取ることのうちの少なくとも１つを含む。
【０２９２】
方法はステップ５２６に続き、このステップでは、処理モジュールは、当該別の記憶世代を追加した結果の記憶世代の数を決定する。たとえば、処理モジュールは、ソース・アドレス範囲対世代マップからの現行世代の数と新しい世代の数を足して、世代の数Ｎを作成する。
【０２９３】
方法はステップ５２８に続き、このステップでは、処理モジュールは、記憶世代の数、および確定的アドレス再割り振り方式に基づいて、ソース・アドレス範囲対世代マップを更新する。たとえば、処理モジュールは、確定的アドレス再割り振り方式をアドレス範囲に適用して、等しいサイズのアドレス範囲を提供する。たとえば、範囲全体をＮで割って各世代についての部分を形成して、先行アドレス範囲の割当てのうちの等しいサイズの部分（たとえば、それぞれから１／Ｎ）が新しい世代に割り当てられるようにする。アドレス再割り振り方式は、連続したアドレス範囲を１つの可能な範囲として利用することをさらに含むことができる。
【０２９４】
方法はステップ５３０に続き、このステップでは、処理モジュールは、更新されたソース・アドレス範囲対世代マップの各記憶世代への分散を推進する。たとえば、処理モジュールは、すべての世代へマップを発行し、将来の発行のためにマップをシステム・レジストリ情報に追加する。方法はステップ５３２に続き、このステップでは、処理モジュールは、更新されたソース・アドレス範囲対世代マップに従って、１つまたは複数の現行記憶世代のそれぞれから当該別の記憶世代へスライスを移行することを推進する。たとえば、処理モジュールは、移行要求を１つまたは複数の現行世代に送る。別の例として、処理モジュールは、移行要求を当該別の記憶世代に送り、移行要求は、移行されるスライスのアドレス範囲に関して１つまたは複数の現行記憶世代にスライス読取り要求を発行する命令を含んでいる。
【０２９５】
図５５は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、図１のネットワーク２４、ならびに散在ストレージおよびタスク（ＤＳＴ）実行（ＥＸ）ユニット・セット５３４を含む。ＤＳＴ実行ユニット・セット５３４は、ＤＳＴ実行ユニット１〜ｎのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。ＤＳＮは、後で取り出すための重要情報を記憶するように機能する。重要情報は、ソフトウェア、セキュリティ資格証明、証明書チェーン、暗号化鍵、暗号化鍵シード、構成情報、動作パラメータ、アクセス制御リスト、システム・レジストリ情報、システム管理情報、およびＤＳＮの動作に重要な任意の他の情報のうちの１つまたは複数を含む。
【０２９６】
以前に記憶された重要情報を取り出す動作の例として、ＤＳＴ実行ユニット１は、重要情報を外部から取得することを決定する。その決定することは、以前にローカルに記憶された重要情報の欠損を検出すること、破損した重要情報を検出すること、および重要情報の必要性を識別することのうちの１つまたは複数に基づくことができる。たとえば、重要情報の必要性が識別され、その重要情報がＤＳＴ実行ユニット１で使用可能でない（たとえば、全くローカルに記憶されていない）とき、ＤＳＴ実行ユニット１は、重要情報を外部から取得することを決定する。
【０２９７】
重要情報を外部から取得することを決定すると、ＤＳＴ実行ユニット１は、重要情報に関連付けられた定足数の候補デバイスを識別する。ここで、定足数の候補デバイスは、重要情報の重複コピーを記憶し得るものである。その識別することは、システム・レジストリ情報を解釈すること、リストにアクセスすること、問合せを開始すること、問合せ応答を受け取ること、および取出し信頼性目標レベルを達成するための所望の候補デバイスの最少数を決定することのうちの少なくとも１つを含む。たとえば、ＤＳＴ実行ユニット１は、候補デバイスのリストがＤＳＴ実行ユニットのセットを示すとき、ＤＳＴ実行ユニットのセットの他の各ＤＳＴ実行ユニットを定足数の候補デバイスとして識別する。
【０２９８】
定足数の候補デバイスを識別すると、ＤＳＴ実行ユニット１は、重要情報の問合せのための定足数の候補デバイスからデバイスを選択する。その選択することは、デバイス・パフォーマンス・レベル、信頼インジケータのデバイス・レベル、デバイス応答履歴情報、事前決定、要求、デバイス可用性情報、および最少数の選択デバイスのうちの１つまたは複数に基づくことができる。たとえば、ＤＳＴ実行ユニット１は、ＤＳＴ実行ユニット２〜ｎを、各ＤＳＴ実行ユニットが最小信頼閾値レベルより高い信頼レベルに関連付けられているときに選択する。
【０２９９】
デバイスを選択すると、ＤＳＴ実行ユニット１は、選択されたデバイスへ重要情報の問合せを発行する。たとえば、ＤＳＴ実行ユニット１は、ネットワーク２４を介して重要情報要求５３６（たとえば重要情報要求２〜ｎ）をＤＳＴ実行ユニット２〜ｎへ発行する。ＤＳＴ実行ユニットのそれぞれが、受け取った重要情報要求５３６を認証および承認し、認証および承認が行われると、重要情報応答５３８をＤＳＴ実行ユニット１へ発行する。
【０３００】
ＤＳＴ実行ユニット１は、選択されたデバイスの少なくともいくつかから重要情報応答５３８を受け取る。たとえば、ＤＳＴ実行ユニット１は重要情報応答２〜ｎを受け取る。重要情報応答５３８を受け取ると、ＤＳＴ実行ユニット１は、２つ以上の比べて好ましい（たとえば、受け取られた重要情報が実質的に同じ）受け取られた重要情報応答を識別する。
【０３０１】
２つ以上の比べて好ましい受け取られた重要情報応答を識別すると、ＤＳＴ実行ユニット１は、２つ以上の比べて好ましい受け取られた重要情報応答の数を、最少閾値数と比較する。比較結果が好ましいとき（たとえば、数が最少閾値数より大きいとき）、ＤＳＴ実行ユニット１は、２つ以上の比べて好ましい受け取られた重要情報応答の重要情報が有効であることを示す。有効な重要情報を識別すると、ＤＳＴ実行ユニット１は有効な重要情報を利用する。有効な重要情報を利用したら、ＤＳＴ実行ユニット１は、有効な重要情報を即座に削除することができる。たとえば、ＤＳＴ実行ユニット１は、アクセス要求の処理が完了すると、アクセス制御リストを含む有効な重要情報を削除する。
【０３０２】
図５６は、重要情報を取得する例を示すフローチャートである。方法はステップ５４０から開始または継続し、このステップでは、（たとえば、散在ストレージおよびタスク（ＤＳＴ）実行ユニットの）処理モジュールが、重要情報を外部から取得することを決定する。その決定することは、重要情報の要求を受け取ること、破損したローカルに記憶された重要情報を検出すること、重要情報の欠損を検出すること、および重要情報の変更を検出することのうちの１つまたは複数に基づくことができる。
【０３０３】
方法はステップ５４２に続き、このステップでは、処理モジュールは、候補デバイスを識別する。これらの各候補デバイスは重要情報のコピーを記憶し得る。その識別することは、関連したデバイス（たとえば他のＤＳＴ実行ユニット）を識別すること、信頼されるデバイスを識別すること、リストを受け取ること、問合せを開始すること、および問合せ応答を受け取ることのうちの１つまたは複数を含む。方法はステップ５４４に続き、このステップでは、処理モジュールは、定足数の識別された候補デバイスを選択する。その選択することは、システム・レジストリから定足数を識別すること、最高パフォーマンスのデバイスを識別すること、重要情報に関連付けられたデバイスを識別すること、最も信頼されるデバイスを識別すること、および最も使用可能なデバイスを識別することを含む。
【０３０４】
方法はステップ５４６に続き、このステップでは、処理モジュールは、重要情報要求を、選択された定足数の識別されたデバイスへ発行する。たとえば、処理モジュールは、重要情報の識別子を含むように重要情報要求を生成し、重要情報要求を、選択された定足数の識別されたデバイスに送る。方法はステップ５４８に続き、このステップでは、処理モジュールは、重要情報応答を受け取る。
【０３０５】
方法はステップ５５０に続き、このステップでは、処理モジュールは、比べて好ましい重要情報応答を識別する。たとえば、処理モジュールは、２つの重要情報応答が実質的に同じであるとき、比べて好ましいものとして、これら２つの重要情報を示す。方法はステップ５５２に続き、このステップでは、処理モジュールは、比べて好ましい重要情報応答の数が最少閾値レベルと比べて好ましいとき、有効な復元重要情報を示す。たとえば、処理モジュールは、最少閾値レベルを入手し（たとえば、定足数のマジョリティの数として取り出して決定し）、上記数と閾値を比較し、上記数が最少閾値レベルより大きいときに有効であると示す。
【０３０６】
方法はステップ５５４に続き、このステップでは、処理モジュールは、有効な復元重要情報を利用する。たとえば、処理モジュールは、有効な復元重要情報をローカル・メモリに記憶し、有効な復元重要情報を利用するさらなる処理を起動する。代わりにまたは加えて、処理モジュールは、さらなる処理が完了していて重要情報が削除されるべきと決定したとき、ローカルに記憶された有効な復元重要情報を削除する。
【０３０７】
図５７および図５８は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、２つ以上の散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュールＡ、Ｂなど、図１のネットワーク２４、ならびにＤＳＴ実行（ＥＸ）ユニット・セット５６０を含む。ＤＳＴ実行ユニット・セット５６０は、情報伝播アルゴリズム（ＩＤＡ）の伝播パラメータに従う数のＤＳＴ実行ユニットを含む。たとえば、ＤＳＴ実行ユニット・セット５６０は、ＩＤＡが５であるとき、５つのＤＳＴ実行ユニット１〜５を含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。以下では、各ＤＳＴ実行ユニットはストレージ・ユニットと交換可能に称され、ＤＳＴ実行ユニットのセットはストレージ・ユニットのセットと交換可能に称され得る。各ＤＳＴクライアント・モジュールは、図１のＤＳＴクライアント・モジュール３４を利用して実装され得る。
【０３０８】
ＤＳＮは、多段階記憶プロセスを利用して、ＤＳＴ実行ユニット１〜５のセットへのデータ・オブジェクトの実質的に同時の記憶から生じる書込み要求競合を解決するように機能する。特に、ＤＳＴクライアント・モジュールＡ、Ｂ、Ｃ、Ｄなどのそれぞれが、ＤＳＴ実行ユニット・セット５６０内にデータ・オブジェクトを記憶しながら、書込み要求競合を解決するように機能する。多段階記憶プロセスは、符号化データ・スライスのセットがストレージ・ユニットに送られ、ストレージ・ユニットが、受け取られた符号化データ・スライスの一時的ロッキングを提供する、書込み段階と、書込み閾値数のセットの符号化データ・スライスがストレージ・ユニットのセットによって受け取られている場合、ストレージ・ユニットによって受け取られた符号化データ・スライスが、取出しのために使用可能にされる（たとえばコミットされる）、コミット段階と、最終処理段階２とを含み、多段階記憶プロセス、および受け取られた符号化データ・スライスのロッキングが、記憶されたデータのその後の更新を可能にする。
【０３０９】
図５７は、書込み要求競合を解決する動作の例のステップを示し、ここで、ＤＳＴクライアント・モジュールＡは、記憶されるべきリビジョンＡのデータ・オブジェクトｆｏｏを含むデータ記憶要求ｆｏｏを受け取る。記憶されるべきデータ・オブジェクトｆｏｏを受け取ると、ＤＳＴクライアント・モジュールＡは、ＤＳＴクライアント・モジュールＡに関連付けられたインターフェース、およびネットワーク２４を介して、散在ストレージ・エラー符号化されたバージョンのデータ・オブジェクトｆｏｏの書込み要求をＤＳＮのストレージ・ユニットへ発行する。データ・オブジェクトに関する（たとえば、ＤＳＴクライアント・モジュールＢ、Ｃ、Ｄなどからの）実質的に同時の書込み要求が、そうした書込み要求を含む。書込み要求の発行は、ＤＳＴクライアント・モジュールＡがデータ・オブジェクトｆｏｏを散在ストレージ・エラー符号化して、複数のセットの符号化されたデータ・スライスを作成することを含む。複数のセットの符号化されたデータ・スライスを作成すると、ＤＳＴクライアント・モジュールＡは、データ・オブジェクトｆｏｏに対応する複数のセットのスライス名を生成する。複数のセットのスライス名を作成すると、ＤＳＴクライアント・モジュールＡは、複数のセットの符号化されたデータ・スライスおよび複数のセットのスライス名を含む、１つまたは複数のセットのスライス書込み要求を生成する。たとえば、ＤＳＴクライアント・モジュールＡはスライス書込み要求Ａ１〜Ａ５を生成する。１つまたは複数のセットのスライス書込み要求を生成すると、ＤＳＴクライアント・モジュールＡは、ネットワーク２４を介して、スライス書込み要求Ａ１〜Ａ５をＤＳＴ実行ユニット１〜５のセットに送る。
【０３１０】
実質的に同時に、少なくともＤＳＴクライアント・モジュールＢが、データ・オブジェクトｆｏｏのリビジョンＢ（たとえば、リビジョンＡと比較して前または後のバージョン）を含む別のデータ記憶要求ｆｏｏを受け取る。ＤＳＴクライアント・モジュールＡによるスライス書込み要求の作成と同様のやり方で、ＤＳＴクライアント・モジュールＢは、別の複数のセットの符号化されたデータ・スライスおよび別の複数のセットのスライス名を含む、別のセットのスライス書込み要求Ｂ１〜Ｂ５を生成し、当該別の複数のセットのスライス名は、スライス書込み要求Ａ１〜Ａ５に関連付けられた複数のセットのスライス名と実質的に同じである。スライス書込み要求Ｂ１〜Ｂ５のセットを作成すると、ＤＳＴクライアント・モジュールＢは、ネットワーク２４を介して、スライス書込み要求Ｂ１〜Ｂ５のセットをＤＳＴ実行ユニット１〜５のセットに送る。
【０３１１】
書込み競合が、スライス書込み要求Ａ１〜Ａ５のセットの書込みとスライス書込み要求Ｂ１〜Ｂ５のセットの書込みとの間で発生する可能性がある。スライス書込み要求を受け取る各ＤＳＴ実行ユニットは、スライス書込み要求ＡおよびＢの第１のスライス書込み要求を受け取り、第１のスライス書込み要求を受け取った後にスライス書込み要求ＡおよびＢの第２のスライス書込み要求を受け取る。ここで、第１のスライス書込み要求は、書込みのさらなるステップを可能にするためのロッキングおよび関連付けられたスライス名に関連付けられ、第２のスライス書込み要求は、競合エラーに関連付けられる。たとえば、ＤＳＴ実行ユニット１は、スライス書込み要求Ａ１を第１のスライス書込み要求として受け取り、スライス書込み要求Ａ１をロッキングに関連付け、スライス書込み要求Ａ１がロッキングに既に関連付けられているとき、スライス書込み要求Ｂ１を第２のスライス書込み要求として受け取り、スライス書込み要求Ｂ１を競合エラーに関連付ける。
【０３１２】
ＤＳＴクライアント・モジュールＡの書込み段階およびＤＳＴクライアント・モジュールＢの書込み段階は、ＤＳＴクライアント・モジュールＡまたはＢのいずれかが、対応する書込み閾値数の符号化されたデータ・スライスがロックに関係付けられたという標識を受け取ると、コミット段階に進むことができる。多段階記憶プロセスの書込み段階中のロッキングのさらなる例では、ＤＳＴクライアント・モジュールＡが、符号化されたデータ・スライス１、２、および３のロッキングに関連付けられる一方、ＤＳＴクライアント・モジュールＢが、符号化されたデータ・スライス４および５のロッキングに関連付けられる。したがって、書込み競合により書込み閾値数の符号化されたデータ・スライスのロッキングをＤＳＴクライアント・モジュールのいずれも達成していないとき、一時的膠着が発生している。
【０３１３】
図５８は、書込み要求競合を解決する動作の例のさらなるステップを示し、ここでは、書込み要求に応答して、ＤＳＴクライアント・モジュールＡが、ＤＳＴ実行ユニットの少なくともいくつかから書込み応答（たとえばスライス書込み応答Ａ１〜Ａ５）を受け取り、各書込み応答は、ロック標識、または非ロック標識および競合情報を含んでいる。たとえば、ＤＳＴクライアント・モジュールＡは、ロック標識を含むスライス書込み応答Ａ１〜Ａ３を受け取り、また、非ロック標識および競合情報を有するスライス書込み応答Ａ４〜Ａ５を受け取る。
【０３１４】
競合情報は、ロック標識を受け取った第２のコンピューティング・デバイス（たとえばＤＳＴクライアント・モジュールＢ）によって発行された散在ストレージ・エラー符号化されたバージョンのデータ・オブジェクトの第２の書込み要求（たとえばスライス書込み要求Ｂ４またはＢ５）のアイデンティティ、第２のコンピューティング・デバイス（たとえばＤＳＴクライアント・モジュールＢ）のアイデンティティ、ロック標識を受け取らなかった第３のコンピューティング・デバイス（たとえばＤＳＴクライアント・モジュールＣ）によって発行された散在ストレージ・エラー符号化されたバージョンのデータ・オブジェクトの第３の書込み要求のアイデンティティ、第３のコンピューティング・デバイス（たとえばＤＳＴクライアント・モジュールＣ）のアイデンティティ、および、少なくともいくつかのストレージ・ユニットのうちの１つの書込み要求処理特性に関する情報のうちの１つまたは複数を含む。書込み要求処理特性に関する情報は、ロックの期間、種々の時間フレームにわたって生成された競合の数、種々の時間フレームにわたる固有の要求元の数、前のロックの期間、複数の書込み要求の受信に関連付けられたタイムスタンプ、複数の書込み要求の受信の順序付け、および要求エンティティ優先レベルのうちの１つまたは複数を含む。
【０３１５】
書込み応答を受け取ると、ＤＳＴクライアント・モジュールＡは、ロック標識を含む少なくとも書込み閾値数の書込み応答が受け取られているかどうかを決定する。たとえば、ＤＳＴクライアント・モジュールＡは、ロック標識を含むスライス書込み応答Ａ１〜Ａ３（たとえば３つの応答）のみを受け取り、書込み閾値数が４である場合、ロック標識を含む少なくとも書込み閾値数の書込み応答よりも少ない書込み応答が受け取られたことを示す。
【０３１６】
ロック標識を含む少なくとも書込み閾値数の書込み応答が受け取られていないとき、ＤＳＴクライアント・モジュールは、競合情報を処理して、当該書込み要求よりも高い優先度を有する実質的に同時の書込み要求のうちの１つまたは複数の他の書込み要求を識別する。具体的な例として、ＤＳＴクライアント・モジュールＢは、１つまたは複数の他の書込み要求のそれぞれに応答して、当該書込み要求に関して受け取られたよりも多数のロック標識が受け取られたことを決定する（たとえば、ＤＳＴクライアント・モジュールＡが３つのロック標識を受け取ったのに対して、ＤＳＴクライアント・モジュールＢは２つのみのロック標識を受け取ったことに留意されたい）。別の具体的な例として、１つまたは複数の他の書込み要求のうちの１つに関して当該書込み要求に関して受け取られたのと等しい数のロック標識が受け取られた場合、ＤＳＴクライアント・モジュールは、１つまたは複数の他の書込み要求のうちの１つに応答して、当該書込み要求に関して受け取られたのと等しい数のロック標識が受け取られた（たとえば、タイ）と決定し、再試行タイブレーク・プロトコル（retry tie-breaking protocol）を実行する。
【０３１７】
再試行タイブレーク・プロトコルは、ＤＳＴクライアント・モジュールが、１つまたは複数の他の書込み要求のうちの１つに優先権を与えることを含むが、これは、１つまたは複数の他の書込み要求のうちの１つに関連付けられた別のコンピューティング・デバイス（たとえば別のＤＳＴクライアント・モジュール）が、このコンピューティング・デバイスよりも高いデバイス優先度を有するときである。たとえば、ＤＳＴクライアント・モジュールＢは、別のシナリオでタイが発生したとき、ＤＳＴクライアント・モジュールＡの要求に優先権を与える。あるいは、再試行タイブレーク・プロトコルは、ＤＳＴクライアント・モジュールが、コンピューティング・デバイスの書込み要求あるいは他のコンピューティング・デバイスの１つまたは複数の他の書込み要求に対してのロック標識を提供しなかったストレージ・ユニットの少なくともいくつかのストレージ・ユニットからの競合情報を解釈して、書込み要求と１つまたは複数の他の書込み要求との間の再試行優先度を決定することを含む。たとえば、ＤＳＴクライアント・モジュールは、ＤＳＴクライアント・モジュールの書込み要求が他のＳＴクライアント・モジュールの優先度より高いか低いかを決定する。
【０３１８】
書込み要求よりも高い優先度を有する実質的に同時の書込み要求のうちの１つまたは複数の他の書込み要求を識別すると、ＤＳＴクライアント・モジュールＡは、より高い優先度を有する１つまたは複数の他の書込み要求に基づいて、書込み要求再試行時間フレームを設定する。たとえば、ＤＳＴクライアント・モジュールＡは、ロック状態が関連付けられたＤＳＴクライアント・モジュールＢの２つのスライス書込み要求が解放される時の推定（たとえば、ストレージ・ユニットにおけるタイムアウト、ストレージ・ユニットがＤＳＴクライアント・モジュールＢから不当な要求を受け取る）に基づいて、書込み要求再試行時間フレームを設定する。
【０３１９】
書込み要求再試行時間フレームを設定すると、書込み要求再試行時間フレームの満了時に、ＤＳＴクライアント・モジュールＡは、散在ストレージ・エラー符号化されたバージョンのデータ・オブジェクトの再試行書込み要求を発行する。たとえば、ＤＳＴクライアント・モジュールＡが、再試行書込み要求を試みる間、ＤＳＴ実行ユニット１〜３に関連付けられた符号化データ・スライス１〜３に対するロックが満了しないと決定するとき、ＤＳＴクライアント・モジュールＡは、ネットワーク２４を介して、再試行スライス書込み要求Ａ４およびＡ５をＤＳＴ実行ユニット４および５へ発行する。別の例として、ＤＳＴクライアント・モジュールＡが、再試行書込み要求を試みる間、符号化データ・スライス１〜３に対するロックがおそらく満了すると決定するとき、ＤＳＴクライアント・モジュールＡは、ネットワーク２４を介して、再試行スライス書込み要求Ａ１〜Ａ５を発行する。
【０３２０】
再試行書込み要求を発行すると、ＤＳＴクライアント・モジュールＡは、再試行書込み要求に応答して、ストレージ・ユニットの少なくともいくつかから再試行書込み応答を受け取り、各再試行書込み応答は、ロック標識、または非ロック標識および更新された競合情報を含んでいる。たとえば、ＤＳＴクライアント・モジュールＡは、別のスライス書込み応答Ａ４および別のスライス書込み応答Ａ５を含む再試行書込み応答を受け取り、少なくとも１つのスライス書込み応答が、ロック標識を含んでいる。
【０３２１】
再試行書込み応答を受け取ると、ＤＳＴクライアント・モジュールＡは、ロック標識を含む少なくとも書込み閾値数の再試行書込み応答（たとえば、スライス書込み要求または再試行スライス書込み要求あるいはその両方に由来するスライス書込み応答）が、受け取られているかどうかを決定する。たとえば、ＤＳＴクライアント・モジュールＡは、ロック状態を示すスライス書込み応答Ａ１〜Ａ５を受け取るとき、および少なくとももう１つのロック状態を示す他のスライス書込み応答Ａ４〜Ａ５を受け取るときに、書込み閾値数の再試行書込み応答が受け取られていることを示す。ロック標識を含む少なくとも再試行書込み閾値数の再試行書込み応答が受け取られている場合、ＤＳＴクライアント・モジュールＡは、コミット・コマンドをストレージ・ユニットの少なくともいくつかに発行する。たとえば、ＤＳＴクライアント・モジュールＡは、ネットワーク２４を介して、ＤＳＴ実行ユニット・セット５６０の各ＤＳＴ実行ユニットへトランザクション・コミット要求を発行して、コミット段階を実行する。ＤＳＴ実行ユニットのセットによる書込み閾値数のトランザクション・コミット要求の受信の確認の後、ＤＳＴクライアント・モジュールＡは、ネットワーク２４を介して、ＤＳＴ実行ユニット・セット５６０のＤＳＴ実行ユニットへトランザクション最終処理要求を発行して、最終処理段階を完了する。
【０３２２】
図５９は、書込み要求競合を解決する例を示す表である。特に、この表は、書込み要求競合を解決する動作の別の例のステップを表し、ここでは、４つのＤＳＴ処理モジュールＡ〜Ｄが、図５７〜５８のストレージ・ユニット１〜５のセットへのデータ・オブジェクトの書込みについて競合している。表は、要求シークエンシング部５６２、ロック情報部５６４、および推定優先度部５６６を含む。要求シークエンシング部５６２は、ストレージ・ユニット・フィールド５６８、ロック元フィールド５７０、および要求の受信順序フィールド５７２を含む。ロック情報部５６４は、ＤＳＴ処理モジュールＡ〜Ｄのそれぞれに対する優先順序応答のフィールドを含む。推定優先度部５６６は、ＤＳＴ処理モジュールＡ〜Ｄのそれぞれによる自己ランキングおよび優先順序推定のフィールドを含む。
【０３２３】
動作の例において、ストレージ・ユニット・フィールド５６８のエントリは、ストレージ・ユニット１〜５のうちの特定のストレージ・ユニットを示す。ロック元フィールド５７０は、対応するストレージ・ユニットによるロッキング選択を示す。たとえば、ストレージ・ユニット２は、ＤＳＴ処理モジュールＢに対してロック標識を含む書込み応答を返す。要求の受信順序フィールド５７２のエントリは、対応するストレージ・ユニットによるＤＳＴ処理モジュールから受け取られる書込み要求の順序付けを示す。たとえば、ストレージ・ユニット２は、最初にＤＳＴ処理モジュールＢからスライス書込み要求を受け取り、２番目にＤＳＴ処理モジュールＡからスライス書込み要求を受け取り、３番目にＤＳＴ処理モジュールＤからスライス書込み要求を受け取り、４番目にＤＳＴ処理モジュールＣからスライス書込み要求を受け取る。
【０３２４】
書込み要求を受け取ると、各ストレージ・ユニットは、書込み応答を対応する要求元ＤＳＴ処理モジュールへ発行する。第１のスライス書込み要求を受け取ると、ストレージ・ユニットは、ロック標識を含む書込み応答（たとえば、その時点で、対応するＤＳＴ処理モジュールがロックを所有し競合が存在しないことを示す）を発行する。たとえば、ストレージ・ユニット２は、ＤＳＴ処理モジュールＢから第１のスライス書込み要求を受け取り、第１のスライス書込み応答をＤＳＴ処理モジュールＢへ発行して、ＤＳＴ処理モジュールＢがロックを所有することを示す。第２のスライス書込み要求を受け取ると、ストレージ・ユニットは、非ロック標識および競合情報を含む第２のスライス書込み応答を発行する。たとえば、ストレージ・ユニット２は、ＤＳＴ処理モジュールＡから第２のスライス書込み要求を受け取り、第２のスライス書込み応答をＤＳＴ処理モジュールＡへ発行する。ここで、第２のスライス書込み応答は、非ロック標識および競合情報を含んでおり、競合情報は、ＤＳＴ処理モジュールＢがロックを所有し、ＤＳＴ処理モジュールＡが第２のスライス書込み要求（たとえば第２の優先度）に関連付けられていることを示す。
【０３２５】
スライス書込み応答を受け取る各ＤＳＴ処理モジュールは、ロック標識、非ロック標識、および競合情報のうちの１つまたは複数を解釈して、他のＤＳＴ処理モジュールに対する優先順位を推定する。推定することは、競合情報を処理して、書込み要求よりも高い優先度を有する実質的に同時の書込み要求のうちの１つまたは複数の他の書込み要求を識別することを含む。たとえば、ＤＳＴ処理モジュールＢは、１つまたは複数の他の書込み要求のそれぞれに応答して、ＤＳＴ処理モジュールＢに関連付けられた書込み要求に関して受け取られたよりも大きな数のロック標識が受け取られた（たとえば、ＤＳＴ処理モジュールＡおよびＣの両方は２つのロックを受け取り、ＤＳＴ処理モジュールＢは１つのみのロックを受け取った）ことを決定する。
【０３２６】
別の例として、ＤＳＴ処理モジュールＡおよびＣの両方は、１つまたは複数の他の書込み要求のうちの１つに応答して、ＤＳＴ処理モジュールＡおよびＣに関連付けられた書込み要求に関して受け取られたのと等しい数のロック標識が受け取られた（たとえば、ＤＳＴ処理モジュールＡおよびＣの両方が２つのロックを受け取った）ことを決定する。等しい数のロック標識が受け取られると、ＤＳＴ処理モジュールＡおよびＣの両方が再試行タイブレーク・プロトコルを実行する。再試行タイブレーク・プロトコルは、１つまたは複数の他の書込み要求のうちの１つに優先権を与えることを含むが、そうするのは、１つまたは複数の他の書込み要求のうちの１つに関連付けられた別のコンピューティング・デバイスが、このコンピューティング・デバイスよりも高いデバイス優先度を有するときである。たとえば、ＤＳＴ処理モジュールＣは、ＤＳＴ処理モジュールＣへ発行されたスライス書込み応答に基づいて、ＤＳＴ処理モジュールＡがより高い優先度を有すると推定し（たとえば、優先順序応答Ｂ、Ａ、Ｃ、Ｄ）、第２の優先度レベルをＤＳＴ処理モジュールＣに関連付ける。同様の例において、ＤＳＴ処理モジュールＡも、ＤＳＴ処理モジュールＡがより高い優先度を有すると推定し、第１の優先度レベルをＤＳＴ処理モジュールＡに関連付ける。
【０３２７】
ＤＳＴ処理モジュールＡおよびＣがそれぞれ２つのロックを所有し、ＤＳＴ処理モジュールＢが優先順序応答に示されるようにＤＳＴ処理モジュールＤよりも高い優先度を有することを、ロック標識が示すとき、ＤＳＴ処理モジュールＢは、ＤＳＴ処理モジュールＢが５つのストレージ・ユニットから受け取った５つのスライス書込み応答を解釈して、ランクを３に推定する。ＤＳＴ処理モジュールＡおよびＣがそれぞれ２つのロックを所有し、ＤＳＴ処理モジュールＢの優先順序がＤＳＴ処理モジュールＤの優先順序よりも常に高いことを、ロック標識が示すとき、ＤＳＴ処理モジュールＢは、ＤＳＴ処理モジュールＢが５つのストレージ・ユニットから受け取った５つの書込み応答を解釈して、ランクを４に推定する。
【０３２８】
優先順位を推定すると、各ＤＳＴ処理モジュールは、より高い優先度を有する１つまたは複数の他の書込み要求に基づいて、書込み要求再試行時間フレームを設定し、書込み要求再試行時間フレームの満了時に、再試行書込み要求を１つまたは複数のストレージ・ユニットへ発行する。書込み要求再試行時間フレームの設定は、さらに競合情報の１つまたは複数の態様に基づいてもよい。たとえば、ＤＳＴ処理モジュールは、多段階書込みプロセスを処理する推定時間、推定ロック期間、ロック・タイムアウト期間、過去の競合レート、および過去の各再試行の成功の確率のうちの１つまたは複数に基づいて、書込み要求再試行時間フレームを設定する。たとえば、ＤＳＴ処理モジュールＡは、第１の優先順位を推定するときに多段階書込みプロセスを実行するための推定時間と実質的に同じになるように関連の書込み要求再試行時間フレームを設定し、ＤＳＴ処理モジュールＣは、第２の優先順位を推定するときに多段階書込みプロセスを実行するための推定書込み時間の２倍になるように関連の書込み要求再試行時間フレームを設定し、ＤＳＴ処理モジュールＢは、第３の優先順位を推定するときに多段階書込みプロセスを実行するための推定書込み時間の３倍になるように関連の書込み要求再試行時間フレームを設定し、ＤＳＴ処理モジュールＤは、第４の優先順位を推定するときに多段階書込みプロセスを実行するための推定書込み時間の４倍になるように関連の書込み要求再試行時間フレームを設定する。したがって、方法は、さらなる競合なしに逐次的な効率的な様式で、競合する書込み要求を効率的に処理するための、改善されたレベルのシステム動作を提供することができる。
【０３２９】
図６０は、実質的に同時の書込み要求から生じるデータ・オブジェクトに関する書込み要求競合を解決する例を示すフローチャートである。特に、図１〜図３９、図５７〜図５９、さらに図６０と関連して説明される１つまたは複数の機能および特徴と共に用いる方法が提示される。方法はステップ５８０から開始し、このステップでは、散在ストレージ・ネットワーク（ＤＳＮ）の１つまたは複数のコンピューティング・デバイスのうちのコンピューティング・デバイス（たとえば散在ストレージおよびタスク処理モジュール）の処理モジュールが、データ・オブジェクトの散在ストレージ・エラー符号化バージョンの書込み要求をＤＳＮのストレージ・ユニットへ発行する。たとえば、コンピューティング・デバイスは、データ・オブジェクトを散在ストレージ・エラー符号化して、複数のセットの符号化されたデータ・スライスを作成し、複数のセットの符号化されたデータ・スライスをＤＳＮのストレージ・ユニットのセットに送る。
【０３３０】
方法はステップ５８２に続き、このステップでは、コンピューティング・デバイスは、ストレージ・ユニットの少なくともいくつかから書込み応答を受け取り、各読取り応答は、ロック標識、または非ロック標識および競合情報を含んでいる。方法はステップ５８４に続き、このステップでは、コンピューティング・デバイスは、ロック標識を含む少なくとも書込み閾値数の書込み応答が受け取られているかどうかを決定する。
【０３３１】
ロック標識を含む少なくとも書込み閾値数の書込み応答が受け取られていないとき、方法はステップ５８６に続き、このステップでは、コンピューティング・デバイスは、競合情報を処理して、書込み要求よりも高い優先度を有する実質的に同時の書込み要求のうちの１つまたは複数の他の書込み要求を識別する。たとえば、コンピューティング・デバイスは、１つまたは複数の他の書込み要求のそれぞれに応答して、当該書込み要求に関して受け取られたよりも多数のロック標識が受け取られたことを決定する。別の例として、コンピューティング・デバイスは、１つまたは複数の他の書込み要求のうちの１つに応答して、当該書込み要求に関して受け取られたのと等しい数のロック標識が受け取られたことを決定する。１つまたは複数の他の書込み要求のうちの１つに関して、当該書込み要求に関して受け取られたのと等しい数のロック標識が受け取られたとき、コンピューティング・デバイスは再試行タイブレーク・プロトコルを実行する。たとえば、コンピューティング・デバイスは、１つまたは複数の他の書込み要求のうちの１つに関連付けられた別のコンピューティング・デバイスがこのコンピューティング・デバイスよりも高いデバイス優先度を有するとき、１つまたは複数の他の書込み要求のうちの１つに優先権を与える。別の例として、コンピューティング・デバイスは、コンピューティング・デバイスの書込み要求あるいは他のコンピューティング・デバイスの１つまたは複数の他の書込み要求に対してのロック標識を提供しなかったストレージ・ユニットの少なくともいくつかのストレージ・ユニットからの競合情報を解釈して、書込み要求と１つまたは複数の他の書込み要求との間の再試行優先度を決定する。
【０３３２】
方法はステップ５８８に続き、このステップでは、コンピューティング・デバイスは、より高い優先度を有する１つまたは複数の他の書込み要求に基づいて、書込み要求再試行時間フレームを設定する。書込み要求再試行時間フレームが満了すると、方法はステップ５９０に続き、このステップでは、コンピューティング・デバイスは、データ・オブジェクトの散在ストレージ・エラー符号化バージョンの再試行書込み要求を発行する。方法はステップ５９２に続き、このステップでは、コンピューティング・デバイスは、再試行書込み要求に応答して、ストレージ・ユニットの少なくともいくつかから再試行書込み応答を受け取り、各再試行書込み応答は、ロック標識、または非ロック標識および更新された競合情報を含んでいる。
【０３３３】
方法はステップ５９４に続き、このステップでは、コンピューティング・デバイスは、ロック標識を含む少なくとも書込み閾値数の再試行書込み応答が受け取られているかどうかを（たとえば、書込み応答およびロック標識を含む再試行書込み応答の総数から）決定する。ロック標識を含む少なくとも再試行書込み閾値数の再試行書込み応答が受け取られているとき、方法はステップ５９６に続き、このステップでは、コンピューティング・デバイスは、コミット・コマンドをストレージ・ユニットの少なくともいくつかに発行する。
【０３３４】
処理モジュールと関連して上述された方法は、散在ストレージ・ネットワークの他のモジュール、または他のデバイスによって代わりに実行され得る。加えて、動作命令を記憶する少なくとも１つのメモリ部（たとえばコンピュータ可読記憶媒体）が、散在ストレージ・ネットワーク（ＤＳＮ）の１つまたは複数のコンピューティング・デバイスの１つまたは複数の処理モジュールによって実行されたとき、上述された任意またはすべての方法ステップを１つまたは複数のコンピューティング・デバイスに実行させることができる。
【０３３５】
図６１は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、複数の散在ストレージおよびタスク（ＤＳＴ）クライアント・モジュール１〜Ｄ、図５２の散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）管理ユニット１８、図１のネットワーク２４、ならびに図５２の複数の記憶世代１〜Ｇを含む。ＤＳＮは、記憶世代の１つまたは複数に大量のデータ記憶を取り込み、データの取込みに従って記憶世代をアクティブ化するように機能する。たとえば、ＤＳＴクライアント・モジュール１は、取込みデータ１を受け取り、取込みデータを散在ストレージ・エラー符号化して、符号化されたデータ・スライスのセットを作成し、符号化されたデータ・スライスのセットを、前もってアクティブ化された記憶世代１に記憶する。
【０３３６】
動作の例において、ＤＳＴＮ管理ユニット１８は、各現在アクティブな記憶世代についてストレージ使用レベルを入手する。その入手することは、ストレージ使用レベル要求を発行すること、ストレージ使用レベル応答を受け取ること、エラー・メッセージを解釈すること、ＤＳＮログを解釈すること、散在階層インデックス内の記憶標識を解釈すること、および探索を実行することのうちの少なくとも１つを含む。
【０３３７】
ストレージ使用レベルを入手すると、ＤＳＴＮ管理ユニット１８は、現在アクティブな記憶世代のそれぞれについてデータ取込みレートを入手する。その入手することは、データ取込みレート要求を発行すること、データ取込みレート応答を受け取ること、ＤＳＮログを解釈すること、散在階層インデックス内の記憶標識を解釈すること、探索を実行すること、問合せを１つまたは複数のＤＳＴクライアント・モジュールへ発行すること、少なくとも１つのＤＳＴクライアント・モジュールから問合せ応答を受け取ること、および探索を実行することのうちの少なくとも１つを含む。
【０３３８】
データ取込みレートを入手すると、ＤＳＴＮ管理ユニット１８は、ストレージ使用レベルおよびデータ取込みレートに基づいて、１つまたは複数の他の記憶世代をアクティブ化するかどうかを決定する。たとえば、ＤＳＴＮ管理ユニット１８は、ストレージ使用レベルが最大ストレージ使用閾値レベルよりも高いとき、追加の記憶世代をアクティブ化することを示す。別の例として、ＤＳＴＮ管理ユニット１８は、データ取込みレートが最大データ取込み閾値レベルよりも高いとき、追加の記憶世代をアクティブ化することを示す。
【０３３９】
１つまたは複数の他の記憶世代をアクティブ化するとき、ＤＳＴＮ管理ユニット１８は、ストレージ使用レベル、データ取込みレート、および最大データ取込み閾値レベルのうちの１つまたは複数に基づいて、アクティブ化する記憶世代の数を決定する。たとえば、ＤＳＴＮ管理ユニット１８は、データ取込みレートが最大データ取込み閾値レベルよりも高いとき、２つ以上の世代をアクティブ化することを決定する。別の例として、ＤＳＴＮ管理ユニット１８は、最大データ取込みレート閾値レベルがどの記憶世代についても犠牲にされないように必要とされる世代の数を推定する。
【０３４０】
アクティブ化する記憶世代の数を決定すると、ＤＳＴＮ管理ユニット１８は、アクティブ化する記憶世代の数に従って、記憶世代を非アクティブ化するための割当てメッセージを発行する。割当てメッセージは、アクティブ化する標識、割り当てられたＤＳＮアドレス範囲、および記憶のために割り振る記憶容量の量のうちの１つまたは複数を含む。たとえば、ＤＳＴＮ管理ユニット１８は、ネットワーク２４を介して割当てメッセージ２〜３を記憶世代２〜３へ発行してアクティブ化を開始する。
【０３４１】
図６２は、記憶世代をアクティブ化する例を示すフローチャートである。方法はステップ６００から開始または継続し、このステップでは、（たとえば、散在ストレージおよびタスク・ネットワーク（ＤＳＴＮ）管理ユニットの）処理モジュールが、１つまたは複数の現行記憶世代のそれぞれについてストレージ使用レベルを入手する。その入手することは、問合せを開始すること、問合せ応答を受け取ること、探索を実行すること、およびシステム・アクティビティ・ログを解釈することのうちの少なくとも１つを含む。各現行記憶世代について、方法はステップ６０２に続き、このステップでは、処理モジュールはデータ取込みレートを入手する。その入手することは、問合せを開始すること、問合せ応答を受け取ること、探索を実行すること、およびシステム・アクティビティ・ログを解釈することのうちの少なくとも１つを含む。
【０３４２】
方法はステップ６０４に続き、このステップでは、処理モジュールは、１つまたは複数の他の記憶世代をアクティブ化するかどうかを決定する。たとえば、処理モジュールは、ストレージ使用レベルの少なくとも１つが最大ストレージ使用閾値レベルよりも高いとき、およびデータ取込みレートが最大データ取込み閾値レベルよりも高いときにアクティブ化することを示す。
【０３４３】
１つまたは複数の他の記憶世代をアクティブ化するとき、方法はステップ６０６に続き、このステップでは、処理モジュールは、アクティブ化する記憶世代の数を決定する。たとえば、処理モジュールは、１つまたは複数の他の記憶世代のそれぞれにおける１つまたは複数の現行記憶世代のそれぞれのデータ取込みレートが低いデータ取込み閾値レベルよりも低くなるように、必要とされる世代の数を推定する。
【０３４４】
方法はステップ６０８に続き、このステップでは、処理モジュールは、アクティブ化する記憶世代の数に従って１つまたは複数の非アクティブ記憶世代のそれぞれへ割当てメッセージを発行する。たとえば、処理モジュールは、割り当てられたＤＳＮアドレス範囲および割り振られる記憶容量の量を含むように割当てメッセージを生成し、割当てメッセージを１つまたは複数の他の記憶世代のストレージ・ユニットに送る。
【０３４５】
本明細書で使用され得るように、用語「実質的に」および「およそ」は、その対応する用語または要素間の関係性あるいはその両方について業界で受け入れられる許容範囲を与える。そのような業界で受け入れられる許容範囲は、１パーセント未満から５０パーセントの範囲に及び、成分値、集積回路プロセス変動、温度変動、立ち上がりおよび立ち下がり時間、または熱雑音、あるいはその組合せに対応するがこれらに限定されない。そのような要素間の関係性は、数パーセントの差から大規模な差に及ぶ。やはり本明細書で使用され得るように、用語「動作可能に結合された」、「結合された」または「結合」あるいはその組合せは、要素間の直接結合または介在要素を介する要素間の間接結合、あるいはその両方を含む（たとえば、要素は、コンポーネント、エレメント、回路、またはモジュール、あるいはその組合せを含むが、これらに限定されない）。ここで、間接結合については、介在要素は、信号の情報を変更しないが、その電流レベル、電圧レベル、または電力レベル、あるいはその組合せを調整し得る。さらに本明細書で使用され得るように、推論結合（inferred coupling）（すなわち、１つのエレメントが別のエレメントに推論によって結合される）は、「結合される」と同じように２つの要素の間の直接および間接結合を含む。さらに本明細書で使用され得るように、用語「動作可能」または「動作可能に結合された」は、要素が、アクティブにされたときに１つまたは複数のその対応する機能を実行するための電力接続、入力、出力などのうちの１つまたは複数を含むことを示し、さらに１つまたは複数の他の要素に推論結合することを含み得る。さらに本明細書で使用され得るように、用語「関連付けられた」は、別々の要素、または別の要素内に埋め込まれている要素、あるいはその両方の直接または間接あるいはその両方の結合を含む。本明細書で使用され得るように、用語「比較して好ましい」は、２つ以上の要素、信号などの間の比較が望ましい結果を与えることを示す。たとえば、望ましい関係が、信号１が信号２より大きな強度を有することである場合、信号１の強度が信号２の強度よりも大きいとき、または信号２の強度が信号１の強度よりも小さいときに、好ましい比較が達成され得る。
【０３４６】
また本明細書で使用され得るように、用語「処理モジュール」、「処理回路」、または「処理ユニット」、あるいはその組合せは、単一処理デバイスまたは複数の処理デバイスであり得る。そのような処理デバイスは、マイクロプロセッサ、マイクロコントローラ、デジタル・シグナル・プロセッサ、マイクロコンピュータ、中央処理装置、フィールド・プログラマブル・ゲート・アレイ、プログラマブル論理デバイス、状態機械、論理回路、アナログ回路、デジタル回路、または回路のハード・コーディングまたは動作命令あるいはその両方に基づいて信号（アナログまたはデジタルあるいはその両方）を操作する任意のデバイス、あるいはその組合せであり得る。処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せは、メモリまたは集積メモリ要素あるいはその両方であり得る、あるいはそれらをさらに含み、それらは、単一のメモリ・デバイス、複数のメモリ・デバイス、または別の処理モジュール、モジュール、処理回路または処理ユニットあるいはその組合せの組み込み回路、あるいはその組合せであり得る。そのようなメモリ・デバイスは、読出し専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、スタティック・メモリ、ダイナミック・メモリ、フラッシュ・メモリ、キャッシュ・メモリ、またはデジタル情報を記憶する任意のデバイス、あるいはその組合せであり得る。処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが、複数の処理デバイスを含む場合、処理デバイスは、中央に配置されてよく（たとえば、有線または無線あるいはその両方のバス構造を介して一緒に直接結合される）、あるいは分散して配置されてもよい（たとえば、ローカル・エリア・ネットワークまたは広域ネットワークあるいはその両方を介した間接結合によるクラウド・コンピューティング）ことに留意されたい。さらに、処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが、状態機械、アナログ回路、デジタル回路、または論理回路、あるいはその組合せを介してその機能の１つまたは複数を実装する場合、対応する動作命令を記憶するメモリまたはメモリ要素あるいはその両方は、状態機械、アナログ回路、デジタル回路、または論理回路、あるいはその組合せを備える回路の内部あるいは外部に組み込まれ得ることに留意されたい。さらに、図の１つまたは複数に示されたステップまたは機能あるいはその両方の少なくともいくつかに対応するハード・コード命令または動作命令あるいはその両方を、メモリ要素が記憶し、処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが実行することができることに留意されたい。そのようなメモリ・デバイスまたはメモリ要素は、製造品に含まれ得る。
【０３４７】
本発明は、指定された機能およびそれらの関係の特性を示す方法ステップを用いて上記に説明されている。これらの機能的構成ブロックおよび方法ステップの範囲および順序は、本明細書では任意に説明の便宜のために定義されている。指定された機能および関係が適切に実施される限り、代替の範囲および順序が定義され得る。したがって、いずれのそのような代替の範囲または順序も、特許請求される発明の範囲および趣旨の範囲内にある。さらに、これらの機能構成ブロックの範囲は、任意に説明の便宜のために定義されている。特定の重要な機能が適切に実施される限り、代替の範囲が定義され得る。同様に、フロー図のブロックは、特定の重要な機能を示すために任意に本明細書では定義されている。使用できる限り、フロー図ブロックの範囲および順序は、別様に定義されてよく、依然として特定の重要な機能を実施し得る。したがって、機能構成ブロックおよびフロー図ブロックのそのような代替的定義は、特許請求される発明の範囲および趣旨の範囲内にある。当業者にはやはり認識されるように、本明細書における機能構成ブロック、および他の例示的ブロック、モジュール、およびコンポーネントは、例示されたように実装されてよく、あるいは、ディスクリート部品、特定用途向け集積回路、適切なソフトウェアなどを実行するプロセッサ、または任意のこれらの組合せによって実装されてもよい。
【０３４８】
本発明はまた、少なくとも部分的に１つまたは複数の実施形態に関して説明されている。本発明の実施形態は、本明細書において、本発明、その態様、その特徴、その概念、またはその例、あるいはその組合せを示すために使用されている。本発明を具体化する装置、製造品、機械、またはプロセス、あるいはその組合せの物理的実施形態は、本明細書に論じられた実施形態の１つまたは複数を参照して説明されている態様、特徴、概念、例などの１つまたは複数を含むことができる。さらに、図ごとに、実施形態は、同じもしくは異なる参照番号を使用し得る同じまたは類似した名前の機能、ステップ、モジュールなどを含んでよく、したがって、それらの機能、ステップ、モジュールなどは、同じまたは類似の機能、ステップ、モジュールなどであってよく、あるいはそれらは異なってもよい。
【０３４９】
上記に説明された図におけるトランジスタは電界効果トランジスタ（ＦＥＴ）として示されているが、当業者には理解されるように、トランジスタは、任意のタイプのトランジスタ構造を使用して実装されてもよく、それらのトランジスタ構造は、バイポーラ、金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）、Ｎ型ウェル・トランジスタ、Ｐ型ウェル・トランジスタ、エンハンスメント・モード、デプレッション・モード、ゼロ電圧閾値（ＶＴ）トランジスタを含むが、これらに限定されない。
【０３５０】
特に記述されていない限り、本明細書に提示された図面の任意の図における要素への、要素からの、または要素間の、あるいはその組合せの信号は、アナログまたはデジタル、連続時間または離散時間、およびシングルエンドまたは差動であり得る。たとえば、信号経路がシングルエンド経路として示されている場合に、それは差動信号経路も表す。同様に、信号経路が差動経路として示されている場合に、それはシングルエンド信号経路も表す。１つまたは複数の特定のアーキテクチャが本明細書に説明されているが、当業者には認識されるように、明示されていない１つまたは複数のデータ・バス、要素間の直接接続、または他の要素間の間接接続、あるいはその組合せを使用する他のアーキテクチャが同様に実装されてもよい。
【０３５１】
用語「モジュール」は、本発明の様々な実施形態の説明で使用されている。モジュールは、本明細書に説明され得るような１つまたは複数の機能を実行するための処理モジュール、機能ブロック、ハードウェア、またはメモリに記憶されたソフトウェア、あるいはその組合せを含む。モジュールがハードウェアによって実装される場合、ハードウェアは、ソフトウェアまたはファームウェアあるいはその両方と独立してまたは関連してあるいはその両方で動作することができることに留意されたい。本明細書で使用される場合、モジュールは、１つまたは複数のサブ・モジュールを含むことができ、各サブ・モジュールは、１つまたは複数のモジュールであり得る。
【０３５２】
本明細書では本発明の様々な機能および特徴の特定の組合せが明示的に説明されているが、これらの特徴および機能の他の組合せも同様に可能である。本発明は、本明細書に開示された特定の例によって限定されず、これらの他の組合せを明白に組み込んでいる。
【図１】
0006522008.tif 000002
【図２】
0006522008.tif 000003
【図３】
0006522008.tif 000004
【図４】
0006522008.tif 000005
【図５】
0006522008.tif 000006
【図６】
0006522008.tif 000007
【図７】
0006522008.tif 000008
【図８】
0006522008.tif 000009
【図９】
0006522008.tif 000010
【図１０】
0006522008.tif 000011
【図１１】
0006522008.tif 000012
【図１２】
0006522008.tif 000013
【図１３】
0006522008.tif 000014
【図１４】
0006522008.tif 000015
【図１５】
0006522008.tif 000016
【図１６】
0006522008.tif 000017
【図１７】
0006522008.tif 000018
【図１８】
0006522008.tif 000019
【図１９】
0006522008.tif 000020
【図２０】
0006522008.tif 000021
【図２１】
0006522008.tif 000022
【図２２】
0006522008.tif 000023
【図２３】
0006522008.tif 000024
【図２４】
0006522008.tif 000025
【図２５】
0006522008.tif 000026
【図２６】
0006522008.tif 000027
【図２７】
0006522008.tif 000028
【図２８】
0006522008.tif 000029
【図２９】
0006522008.tif 000030
【図３０】
0006522008.tif 000031
【図３１】
0006522008.tif 000032
【図３２】
0006522008.tif 000033
【図３３】
0006522008.tif 000034
【図３４】
0006522008.tif 000035
【図３５】
0006522008.tif 000036
【図３６】
0006522008.tif 000037
【図３７】
0006522008.tif 000038
【図３８】
0006522008.tif 000039
【図３９】
0006522008.tif 000040
【図４０】
0006522008.tif 000041
【図４１】
0006522008.tif 000042
【図４２】
0006522008.tif 000043
【図４３】
0006522008.tif 000044
【図４４】
0006522008.tif 000045
【図４５】
0006522008.tif 000046
【図４６】
0006522008.tif 000047
【図４７】
0006522008.tif 000048
【図４８】
0006522008.tif 000049
【図４９】
0006522008.tif 000050
【図５０】
0006522008.tif 000051
【図５１】
0006522008.tif 000052
【図５２】
0006522008.tif 000053
【図５３】
0006522008.tif 000054
【図５４】
0006522008.tif 000055
【図５５】
0006522008.tif 000056
【図５６】
0006522008.tif 000057
【図５７】
0006522008.tif 000058
【図５８】
0006522008.tif 000059
【図５９】
0006522008.tif 000060
【図６０】
0006522008.tif 000061
【図６１】
0006522008.tif 000062
【図６２】
0006522008.tif 000063