(57)【要約】【課題】  分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイス、及びこれによるデータの分散エラー符号化の方法を提供する。【解決手段】  方法が、コンピューティング・デバイスにより、分散ストレージ・ネットワーク（ＤＳＮ）のメモリ内に格納するために、複数の符号化データ・スライスのセットを取得することを含む。方法は、コンピューティング・デバイスにより、複数の符号化データ・スライスのセットを格納するために、ストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定することをさらに含む。方法は、コンピューティング・デバイスにより、所望のストレージ・ユニット・セット及びディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）に基づいて特定のソース名を生成することをさらに含む。方法はさらに、コンピューティング・デバイスにより、特定のソース名を含む複数の符号化データ・スライスのセットを生成することをさらに含む。方法は、コンピューティング・デバイスにより、複数の符号化データ・スライスのセットに関する、複数のスライス名のセットに従った複数の書き込み要求のセットを、所望のストレージ・ユニット・セットに送ることをさらに含む。【選択図】      図１
2019527414.tif 000002
【特許請求の範囲】
【請求項１】
分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスにより、前記ＤＳＮのメモリ内に格納するために、複数の符号化データ・スライスのセットを取得することであって、前記ＤＳＮの前記メモリは、地理的領域の全体にわたって配置される複数のストレージ・ユニットのプールを含み、データ・オブジェクトが複数のデータ・セグメントに分割され、前記複数のデータ・セグメントは、前記複数の符号化データ・スライスのセットに分散ストレージ・エラー符号化される、取得することと、
前記コンピューティング・デバイスにより、前記複数の符号化データ・スライスのセットを格納するために、前記複数のストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定することと、
前記コンピューティング・デバイスにより、前記所望のストレージ・ユニット・セット及びディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）に基づいて特定のソース名を生成することであって、前記ＤＡＰは、スライス識別子及び複数のストレージ・マッピング係数に基づいて、前記複数のストレージ・ユニットのプールのうちのストレージ・ユニット・セットを特定し、前記ＤＳＮ内のデバイスが前記ＤＡＰを実行するとき、前記デバイスは、前記特定のソース名を前記スライス識別子として用いて、前記所望のストレージ・ユニット・セットを特定する、生成することと、
前記コンピューティング・デバイスにより、前記複数の符号化データ・スライスのセットについての複数のスライス名のセットを生成することであって、前記複数のスライス名のセットは前記特定のソース名を含む、生成することと、
前記コンピューティング・デバイスにより、前記複数の符号化データ・スライス・セットに関する、前記複数のスライス名のセットに従った複数の書き込み要求のセットを、前記所望のストレージ・ユニット・セットに送ることと、
を含む、方法。
【請求項２】
前記所望のストレージ・ユニット・セットを特定することは、
前記コンピューティング・デバイスに対する所望の書き込み速度を有する、前記複数のストレージ・ユニットのプール内のストレージ・ユニット・セットを特定することと、
前記コンピューティング・デバイスに対する所望の効率を有する、前記複数のストレージ・ユニットのプール内の前記ストレージ・ユニット・セットを特定することと、
前記コンピューティング・デバイスに対する所望の信頼性を有する、前記複数のストレージ・ユニットのプール内の前記ストレージ・ユニット・セットを特定することと、
のうちの１つ又は複数を含む、請求項１に記載の方法。
【請求項３】
前記所望のストレージ・ユニット・セットを特定することは、
ルックアップを実行することと、
クエリを開始することと、
クエリ応答を受け取ることと、
履歴記録にアクセスすることと、
テーブルにアクセスすることと、
所望のストレージ・ユニット・セットのリストを受け取ることと、
のうちの１つ又は複数を含む、請求項２に記載の方法。
【請求項４】
前記特定のソース名を生成することは、
特定のデータ・オブジェクト識別子を生成することと、
前記特定のデータ・オブジェクト識別子を、ボールト識別子及び改訂レベル情報の１つ又は複数と組み合わせて、前記特定のソース名を生成することと、
を含む、請求項１に記載の方法。
【請求項５】
前記複数のスライス名のセットのスライス名を生成することは、
前記特定のソース名を、ピラー数及びデータ・セグメント数と組み合わせて、前記スライス名を生成することを含む、請求項１に記載の方法。
【請求項６】
前記ＤＡＰは、
複数のストレージ・プール係数及び前記複数の符号化データ・スライス・セットに対応する１つ又は複数のスライス識別子に基づいて、１つ又は複数の一意のスコアを生成するように動作可能な複数の関数と、
前記１つ又は複数の一意のスコアを処理して選択されたストレージ・プールを特定し、前記複数の符号化データ・スライス・セットを格納する、ランク付け関数と、
を含む、請求項１に記載の方法。
【請求項７】
前記複数のストレージ・ユニットのプールの少なくとも幾つかのストレージ・ユニットにより、コンピューティング・デバイスが、ランダムにデータ・オブジェクト識別子を生成する代わりに特定のデータ・オブジェクト識別子を有するソース名を作成した結果もたらされる、ＤＡＰの不均衡を判断することと、
前記少なくとも幾つかのストレージ・ユニットにより、前記複数のストレージ・マッピング係数の１つ又は複数のストレージ・マッピング係数を調整して、調整された複数のストレージ・マッピング係数を生成することと、
前記少なくとも幾つかのストレージ・ユニットにより、前記特定のソース名及び前記調整された複数のストレージ・マッピング係数を用いて前記ＤＡＰを実行し、前記複数のストレージ・ユニットのプール内の１つ又は複数の他のストレージ・ユニットに転送される前記複数の符号化データ・スライスのセットの１つ又は複数の符号化データ・スライスを特定することと、
前記所望のストレージ・ユニット・セットの１つ又は複数のストレージ・ユニットにより、前記１つ又は複数の符号化データ・スライスを、前記１つ又は複数の他のストレージ・ユニットに転送することと、
をさらに含む、請求項１に記載の方法。
【請求項８】
分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスにより実行されたとき、前記コンピューティング・デバイスに、
前記ＤＳＮのメモリ内に格納するために、複数の符号化データ・スライス・セットを取得することであって、前記ＤＳＮの前記メモリは、地理的領域の全体にわたって配置される複数のストレージ・ユニットのプールを含み、データ・オブジェクトは複数のデータ・セグメントに分割され、前記複数のデータ・セグメントは、前記複数の符号化データ・スライスのセットにディストリビューテッド・ストレージ・エラー符号化される、取得することと、
前記複数の符号化データ・スライス・セットを格納するために、前記複数のストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定することと、
を行わせる動作命令を格納する第１のメモリ要素と、
前記コンピューティング・デバイスにより実行されるとき、前記コンピューティング・デバイスに、
前記所望のストレージ・ユニット・セット及びディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）に基づいて特定のソース名を生成することであって、前記ＤＡＰは、スライス識別子及び複数のストレージ・マッピング係数に基づいて、前記複数のストレージ・ユニットのプールのうちのストレージ・ユニット・セットを特定し、前記ＤＳＮ内のデバイスが前記ＤＡＰを実行するとき、前記デバイスは、前記特定のソース名を前記スライス識別子として用いて、前記所望のストレージ・ユニット・セットを特定する、生成することと、
前記複数の符号化データ・スライスのセットについての複数のスライス名のセットを生成することであって、前記複数のスライス名のセットは前記特定のソース名を含む、生成することと、
を行わせる動作命令を格納する第２のメモリ要素と、
前記コンピューティング・デバイスにより実行されるとき、前記コンピューティング・デバイスに、
前記複数の符号化データ・スライスのセットに関する、前記複数のスライス名のセットに従った複数の書き込み要求のセットを、前記所望のストレージ・ユニット・セットに送ることを行わせる動作命令を格納する第３のメモリ要素と、
を含む、コンピュータ可読メモリ・デバイス。
【請求項９】
前記第１のメモリ要素は、前記コンピューティング・デバイスにより実行されるとき、前記コンピューティング・デバイスに、
前記コンピューティング・デバイスに対する所望の書き込み速度を有する、前記複数のストレージ・ユニットのプール内のストレージ・ユニット・セットを特定することと、
前記コンピューティング・デバイスに対する所望の効率を有する、前記複数のストレージ・ユニットのプール内のストレージ・ユニット・セットを特定することと、
前記コンピューティング・デバイスに対する所望の信頼性を有する、前記複数のストレージ・ユニットのプール内のストレージ・ユニット・セットを特定することと、
のうちの１つ又は複数により前記所望のストレージ・ユニット・セットを特定させる動作命令をさらに格納する、請求項８に記載のコンピュータ可読メモリ・デバイス。
【請求項１０】
前記第１のメモリ要素は、前記コンピューティング・デバイスにより実行されるとき、前記コンピューティング・デバイスに、
ルックアップを実行することと、
クエリを開始することと、
クエリ応答を受け取ることと、
履歴記録にアクセスすることと、
テーブルにアクセスすることと、
所望のストレージ・ユニット・セットのリストを受け取ることと、
のうちの１つ又は複数により前記所望のストレージ・ユニット・セットを特定させる動作命令をさらに格納する、請求項９に記載のコンピュータ可読メモリ・デバイス。
【請求項１１】
前記第２のメモリ要素は、前記コンピューティング・デバイスにより実行されるとき、前記コンピューティング・デバイスに、
特定のデータ・オブジェクト識別子を生成することと、
前記特定のデータ・オブジェクト識別子を、ボールト識別子及び改訂レベル情報の１つ又は複数と組み合わせて、前記特定のソース名を生成することと、
により前記特定のソース名を生成させる動作命令をさらに格納する、請求項８に記載のコンピュータ可読メモリ・デバイス。
【請求項１２】
前記第２のメモリ要素は、前記コンピューティング・デバイスにより実行されるとき、前記コンピューティング・デバイスに、
前記特定のソース名をピラー数及びデータ・セグメント数と組み合わせて、前記スライス名を生成することにより前記複数のスライス名のセットのスライス名を生成させる動作命令をさらに格納する、請求項８に記載のコンピュータ可読メモリ・デバイス。
【請求項１３】
前記第２のメモリ要素は、前記コンピューティング・デバイスにより実行されるとき、前記コンピューティング・デバイスに、
複数のストレージ・プール係数及び前記複数の符号化データ・スライスのセットに対応する１つ又は複数のスライス識別子に基づいて、１つ又は複数の一意のスコアを生成するように動作可能な複数の関数と、
前記１つ又は複数の一意のスコアを処理して選択されたストレージ・プールを特定し、前記複数の符号化データ・スライスのセットを格納する、ランク付け関数と、
を実行することにより前記ＤＡＰを利用させる動作命令をさらに格納する、請求項８に記載のコンピュータ可読メモリ・デバイス。
【請求項１４】
前記複数のストレージ・ユニットのプールの少なくとも幾つかのストレージ・ユニットのプールの各々により実行されるとき、前記少なくとも幾つかのストレージ・ユニットに、
ランダムにデータ・オブジェクト識別子を生成する代わりに特定のデータ・オブジェクト識別子を有するソース名を作成する結果もたらされる、ＤＡＰ不均衡を判断することを行わせる動作命令を格納する第４のメモリ要素と、
前記少なくとも幾つかのストレージ・ユニットにより実行されるとき、前記少なくとも幾つかのストレージ・ユニットに、
前記特定のソース名及び調整された複数のストレージ・マッピング係数を用いて前記ＤＡＰを実行し、前記複数のストレージ・ユニットのプール内の１つ又は複数の他のストレージ・ユニットに転送される前記複数の符号化データ・スライスのセットの１つ又は複数の符号化データ・スライスを特定することと、
前記１つ又は複数の符号化データ・スライスを、前記１つ又は複数の他のストレージ・ユニットに転送することと、
を行わせる動作命令を格納する第５のメモリ要素と、
をさらに含む、請求項８に記載のコンピュータ可読メモリ・デバイス。
【請求項１５】
分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスであって、
インターフェースと、
メモリと、
前記メモリ及び前記インターフェースに動作可能に結合された処理モジュールと、
を備え、前記処理モジュールは、
前記ＤＳＮのメモリ内に格納するために、複数の符号化データ・スライス・セットを取得することであって、前記ＤＳＮの前記メモリは、地理的領域の全体にわたって配置される複数のストレージ・ユニットのプールを含み、データ・オブジェクトは複数のデータ・セグメントに分割され、前記複数のデータ・セグメントは、前記複数の符号化データ・スライスのセットに分散ストレージ・エラー符号化される、取得することと、
前記複数の符号化データ・スライスのセットを格納するために、前記複数のストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定することと、
前記所望のストレージ・ユニット・セット及びディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）に基づいて特定のソース名を生成することであって、前記ＤＡＰは、スライス識別子及び複数のストレージ・マッピング係数に基づいて、前記複数のストレージ・ユニットのプールのうちのストレージ・ユニット・セットを特定し、前記ＤＳＮ内のデバイスが前記ＤＡＰを実行するとき、前記デバイスは、前記特定のソース名を前記スライス識別子として用いて、前記所望のストレージ・ユニット・セットを特定する、生成することと、
前記複数の符号化データ・スライスのセットについての複数のスライス名のセットを生成することであって、前記複数のスライス名のセットは前記特定のソース名を含む、生成することと、
前記複数の符号化データ・スライスのセットに関する、前記複数のスライス名のセットに従った複数の書き込み要求のセットを、前記所望のストレージ・ユニット・セットに送ることと、
を行わせるように動作可能である、コンピューティング・デバイス。
【請求項１６】
前記処理モジュールは、
前記コンピューティング・デバイスに対する所望の書き込み速度を有する、前記複数のストレージ・ユニットのプール内のストレージ・ユニット・セットを特定することと、
前記コンピューティング・デバイスに対する所望の効率を有する、前記複数のストレージ・ユニットのプール内の前記ストレージ・ユニット・セットを特定することと、
前記コンピューティング・デバイスに対する所望の信頼性を有する、前記複数のストレージ・ユニットのプール内の前記ストレージ・ユニット・セットを特定することと、
のうちの１つ又は複数により、前記所望のストレージ・ユニット・セットを特定するようにさらに動作可能である、請求項１５に記載のコンピューティング・デバイス。
【請求項１７】
前記処理モジュールは、
ルックアップを実行することと、
クエリを開始することと、
クエリ応答を受け取ることと、
履歴記録にアクセスすることと、
テーブルにアクセスすることと、
所望のストレージ・ユニット・セットのリストを受け取ることと、
のうちの１つ又は複数により前記所望のストレージ・ユニット・セットを特定するようにさらに動作可能である、請求項１６に記載のコンピューティング・デバイス。
【請求項１８】
前記処理モジュールは、
特定のデータ・オブジェクト識別子を生成することと、
前記特定のデータ・オブジェクト識別子を、ボールト識別子及び改訂レベル情報の１つ又は複数と組み合わせて、前記特定のソース名を生成することと、
により前記特定のソース名を生成するようにさらに動作可能である、請求項１５に記載のコンピューティング・デバイス。
【請求項１９】
前記処理モジュールは、
前記特定のソース名を、ピラー数及びデータ・セグメント数と組み合わせて、前記スライス名を生成することにより、前記複数のスライス名のセットのスライス名を生成するようにさらに動作可能である、請求項１５に記載のコンピューティング・デバイス。
【請求項２０】
前記処理モジュールは、
複数のストレージ・プール係数及び前記複数の符号化データ・スライス・セットに対応する１つ又は複数のスライス識別子に基づいて、１つ又は複数の一意のスコアを生成するように動作可能な複数の関数と、
前記１つ又は複数の一意のスコアを処理して選択されたストレージ・プールを特定し、前記複数の符号化データ・スライスのセットを格納する、ランク付け関数と、
を実行することにより前記ＤＡＰを利用するようにさらに動作可能である、請求項１５に記載のコンピューティング・デバイス。
【請求項２１】
前記複数のストレージ・ユニットのプールのうちの少なくとも幾つかのストレージ・ユニットにより、コンピューティング・デバイスが、ランダムにデータ・オブジェクト識別子を生成する代わりに特定のデータ・オブジェクト識別子を有するソース名を作成した結果もたらされる、ＤＡＰの不均衡を判断することと、
前記少なくとも幾つかのストレージ・ユニットにより、前記複数のストレージ・マッピング係数の１つ又は複数のストレージ・マッピング係数を調整して、調整された複数のストレージ・マッピング係数を生成することと、
前記少なくとも幾つかのストレージ・ユニットにより、前記特定のソース名及び前記調整した複数のストレージ・マッピング係数を用いて前記ＤＡＰを実行し、前記複数のストレージ・ユニットのプール内の１つ又は複数の他のストレージ・ユニットに転送される前記複数の符号化データ・スライスのセットの１つ又は複数の符号化データ・スライスを特定することと、
前記所望のストレージ・ユニット・セットの１つ又は複数のストレージ・ユニットにより、前記１つ又は複数の符号化データ・スライスを前記１つ又は複数の他のストレージ・ユニットに転送することと、
を行わせるようにさらに動作可能である、請求項１５に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・ネットワークに関し、より特定的には、データの分散エラー符号化（dispersing error encoded data）に関する。
【背景技術】
【０００２】
コンピューティング・デバイスは、データの通信、データの処理、及び／又はデータの格納を行うことが知られている。そのようなコンピューティング・デバイスは、無線スマートフォン、ラップトップ、タブレット、パーソナル・コンピュータ（ＰＣ）、ワーク・ステーション、及びビデオ・ゲーム・デバイスから、毎日何百万ものウェブ検索、株式取引、又はオンライン購入をサポートするデータ・センタにまで及ぶ。一般に、コンピューティング・デバイスは、中央処理ユニット（ＣＰＵ）、メモリ・システム、ユーザ入力／出力インターフェース、周辺機器インターフェース、及び相互接続バス構造を含む。
【０００３】
さらに知られているように、コンピュータは、「クラウド・コンピューティング」を用いて、コンピュータの代わりに１つ又は複数のコンピューティング機能（例えば、サービス、アプリケーション、アルゴリズム、演算論理関数等）を実行することによって、そのＣＰＵを事実上拡張することができる。さらに、大規模なサービス、アプリケーション、及び／又は機能については、クラウド・コンピューティングを複数のクラウド・コンピューティング・リソースによりディストリビュート方式で行って、サービス、アプリケーション、及び／又は関数の完了のための応答時間を改善することができる。例えば、Ｈａｄｏｏｐは、数千のコンピュータによるアプリケーション実行を可能にするディストリビューテッド・アプリケーションをサポートするオープンソース・ソフトウェア・フレームワークである。
【０００４】
クラウド・コンピューティングに加えて、コンピュータは、そのメモリ・システムの一部として「クラウド・ストレージ」を用いることができる。知られているように、クラウド・ストレージは、ユーザがそのコンピュータを介して、ファイル、アプリケーションなどをインターネット・ストレージ・システム上に格納することを可能にする。インターネット・ストレージ・システムは、エラー訂正スキームを用いて格納のためにデータを符号化するＲＡＩＤ（redundant array of independent disks、独立ディスク冗長アレイ）システム及び／又は分散ストレージ・システムを含むことができる。
【０００５】
複数のストレージ・ユニットを含む分散ストレージ・システムにおいては、他のストレージ・ユニット・セットではなく、特定のストレージ・ユニット・セットに書き込むことが、コンピューティング・デバイスにとってより効率的で、高速で、及び／又は信頼できる場合がある。負荷容量平衡化（load-capacity balancing）ストレージ・プロトコルを用いる分散ストレージ・システムにおいては、一般的に、特定のストレージ・ユニット・セットの選択は、許可されない。従って、コンピューティング・デバイスに、書き込むためのストレージ・ユニット・セットが割り当てられ、それは、コンピューティング・デバイスにとって最も効率的で、高速で、最も確実ではない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイス、及びこれによるデータの分散エラー符号化の方法を提供する。
【課題を解決するための手段】
【０００７】
１つの態様によると、分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスにより、ＤＳＮのメモリ内に格納するために、複数の符号化データ・スライス（encoded data slice）のセットを取得することであって、ＤＳＮのメモリは、地理的領域の全体にわたって配置される複数のストレージ・ユニットのプールを含み、データ・オブジェクトは複数のデータ・セグメントに分割され、複数のデータ・セグメントは複数の符号化データ・スライス・セットに分散ストレージ・エラー符号化される、取得することと；コンピューティング・デバイスにより、複数の符号化データ・スライス・セットを格納するために、複数のストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定することと；コンピューティング・デバイスにより、所望のストレージ・ユニット・セット及びディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）に基づいて特定のソース名を生成することであって、ＤＡＰは、スライス識別子及び複数のストレージ・マッピング係数に基づいて、複数のストレージ・ユニットのプールのうちのストレージ・ユニット・セットを特定し、ＤＳＮ内のデバイスがＤＡＰを実行するとき、デバイスは、特定のソース名をスライス識別子として用いて、所望のストレージ・ユニット・セットを特定する、生成することと；コンピューティング・デバイスにより、複数の符号化データ・スライス・セットについての複数のスライス名のセットを生成することであって、複数のスライス名のセットは特定のソース名を含む、生成することと；コンピューティング・デバイスにより、複数の符号化データ・スライス・セットに関する、複数のスライス名のセットに従った複数の書き込み要求のセットを、所望のストレージ・ユニット・セットに送ることと、を含む方法が提供される。
【０００８】
別の態様によると、分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスにより実行されたとき、コンピューティング・デバイスに、ＤＳＮのメモリ内に格納するために、複数の符号化データ・スライス・セットを取得することであって、ＤＳＮのメモリは、地理的領域の全体にわたって配置される複数のストレージ・ユニットのプールを含み、データ・オブジェクトは複数のデータ・セグメントに分割され、複数のデータ・セグメントは、複数の符号化データ・スライス・セットに分散ストレージ・エラー符号化される、取得することと、複数の符号化データ・スライス・セットを格納するために、複数のストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定することとを行わせる動作命令を格納する第１のメモリ要素と；コンピューティング・デバイスにより実行されるとき、コンピューティング・デバイスに、所望のストレージ・ユニット・セット及びディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）に基づいて特定のソース名を生成することであって、ＤＡＰは、スライス識別子及び複数のストレージ・マッピング係数に基づいて、複数のストレージ・ユニットのプールのうちのストレージ・ユニット・セットを特定し、ＤＳＮ内のデバイスがＤＡＰを実行するとき、デバイスは、特定のソース名をスライス識別子として用いて、所望のストレージ・ユニット・セットを特定する、生成することと、複数の符号化データ・スライスのセットについての複数のスライス名のセットを生成することであって、複数のスライス名のセットは特定のソース名を含む、生成することとを行わせる動作命令を格納する第２のメモリ要素と；コンピューティング・デバイスにより実行されるとき、コンピューティング・デバイスに、複数の符号化データ・スライスのセットに関する、複数のスライス名のセットに従った複数の書き込み要求のセットを、所望のストレージ・ユニット・セットに送ることを行わせる動作命令を格納する第３のメモリ要素と、を含むコンピューティング可読メモリ・デバイスが提供される。
【０００９】
別の態様によると、分散ストレージ・ネットワーク（ＤＳＮ）のコンピューティング・デバイスが提供され、このコンピューティング・デバイスは、インターフェースと、メモリと、メモリ及びインターフェースに動作可能に結合された処理モジュールとを備え、処理モジュールは、ＤＳＮのメモリ内に格納するために、複数の符号化データ・スライス・セットを取得することであって、ＤＳＮのメモリは、地理的領域の全体にわたって配置される複数のストレージ・ユニットのプールを含み、データ・オブジェクトは複数のデータ・セグメントに分割され、複数のデータ・セグメントは複数の符号化データ・スライス・セットに分散ストレージ・エラー符号化される、取得することと；複数の符号化データ・スライス・セットを格納するために、複数のストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定することと；所望のストレージ・ユニット・セット及びディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）に基づいて特定のソース名を生成することであって、ＤＡＰは、スライス識別子及び複数のストレージ・マッピング係数に基づいて、複数のストレージ・ユニットのプールのうちのストレージ・ユニット・セットを特定し、ＤＳＮ内のデバイスがＤＡＰを実行するとき、デバイスは、デバイスは、特定のソース名をスライス識別子として用いて、所望のストレージ・ユニット・セットを特定する、生成することと；複数の符号化データ・スライス・セットについての複数のスライス名のセットを生成することであって、複数のスライス名のセットは、特定のソース名を含む、生成することと；複数の符号化データ・スライス・セットに関する、複数のスライス名のセットに従った複数の書き込み要求のセットを、所望のストレージ・ユニット・セットに送ることと、を行わせるように動作可能である。
ここで、本発明の好ましい実施形態を、単なる例として以下の図面を参照して説明する。
【図面の簡単な説明】
【００１０】
【図１】本発明の好ましい実施形態による、分散（dispersed）又はディストリビューテッド（distributed）ストレージ・ネットワーク（ＤＳＮ）の実施形態の模式的なブロック図である。
【図２】本発明の好ましい実施形態による、コンピューティング・コアの実施形態の模式的なブロック図である。
【図３】本発明の好ましい実施形態による、データの分散ストレージ・エラー符号化の例の模式的なブロック図である。
【図４】本発明の好ましい実施形態による、エラー符号化関数の一般的な例の模式的なブロック図である。
【図５】本発明の好ましい実施形態による、エラー符号化関数の特定の例の模式的なブロック図である。
【図６】本発明の好ましい実施形態による、符号化データ・スライス（ＥＤＳ）のスライス名の例の模式的なブロック図である。
【図７】本発明の好ましい実施形態による、データの分散ストレージ・エラー復号の例の模式的なブロック図である。
【図８】本発明の好ましい実施形態による、エラー復号関数の一般的な例の模式的なブロック図である。
【図９】本発明の好ましい実施形態による、拡散（decentralized）又はディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）の実施形態の模式的なブロック図である。
【図１０】本発明の好ましい実施形態による、複数のスライスのセットの例の模式的なブロック図である。
【図１１】本発明の好ましい実施形態による、ストレージ・ボールトの例の模式的なブロック図である。
【図１２】本発明の好ましい実施形態による、ＤＡＰを操作して所望のストレージ・ユニット・セットを特定する例の論理図である。
【発明を実施するための形態】
【００１１】
図１は、複数のコンピューティング・デバイス１２〜１６、管理ユニット１８、完全性（integrity）処理ユニット２０、及びＤＳＮメモリ２２を含む分散又はディストリビューテッド・ストレージ・ネットワーク（ＤＳＮ）１０の実施形態の模式的なブロック図である。ＤＳＮ１０のコンポーネントは、ネットワーク２４に結合され、ネットワーク２４は、１つ又は複数の無線及び／又は有線通信システム、１つ又は複数の非パブリック・イントラネット・システム及び／又は公衆インターネット・システム；及び／又は１つ又は複数のローカル・エリア・ネットワーク（ＬＡＮ）及び／又は広域ネットワーク（ＷＡＮ）を含むことができる。
【００１２】
ＤＳＮメモリ２２は、地理的に異なる場所（例えば、１つはシカゴ、１つはミルウォーキー等）に、共通の場所に、又はその組み合わせで配置することができる複数のストレージ・ユニット３６を含む。例えば、ＤＳＮメモリ２２が８個のストレージ・ユニット３６を含む場合、各ストレージ・ユニットは、異なる場所に配置される。別の例として、ＤＳＮメモリ２２が８個のストレージ・ユニット３６を含む場合、８個のストレージ・ユニット全てが同じ場所に配置される。さらに別の例として、ＤＳＮメモリ２２が８個のストレージ・ユニット３６を含む場合、第１の対のストレージ・ユニットは第１の共通の場所にあり、第２の対のストレージ・ユニットは第２の共通の場所にあり、第３の対のストレージ・ユニットは第３の共通の場所にあり、第４の対のストレージ・ユニットは第４の共通の場所にある。ＤＳＮメモリ２２は、８個より多い又は少ないストレージ・ユニット３６を含み得ることに留意されたい。さらに、各ストレージ・ユニット３６は、コンピューティング・コア（図２又はそのコンポーネントに示されるような）と、分散エラー符号化データを格納するための複数のメモリ・デバイスとを含むことに留意されたい。
【００１３】
コンピューティング・デバイス１２〜１６、管理ユニット１８、及び完全性処理ユニット２０の各々は、コンピューティング・コア２６を含み、コンピューティング・コア２６は、ネットワーク・インターフェース３０〜３３を含む。コンピューティング・デバイス１２〜１６はそれぞれ、携帯型コンピューティング・デバイス及び／又は固定型コンピューティング・デバイスとすることができる。携帯型コンピューティング・デバイスは、ソーシャル・ネットワーキング・デバイス、ゲーミング・デバイス、携帯電話、スマートフォン、デジタル・アシスタント、デジタル音楽プレーヤ、デジタル・ビデオ・プレーヤ、ラップトップ・コンピュータ、手持ち式コンピュータ、タブレット、ビデオ・ゲーム・コントローラ、及び／又はコンピューティング・コアを含む任意の他の携帯型デバイスとすることができる。固定型コンピューティング・デバイスは、パーソナル・コンピュータ（ＰＣ）、コンピュータ・サーバ、ケーブル・セットトップ・ボックス、衛星放送受信器、テレビ・セット、プリンタ、ファックス装置、家庭用娯楽機器、ビデオ・ゲーム機、及び／又は任意のタイプの家庭用若しくはオフィス用コンピューティング機器とすることができる。管理ユニット１８及び完全性処理ユニット２０の各々は、別個のコンピューティング・デバイスであってもよく、共通のコンピューティング・デバイスであってもよく、及び／又はコンピューティング・デバイス１２〜１６の１つ又は複数及び／又はストレージ・ユニット３６の１つ又は複数に統合されてもよいことに留意されたい。
【００１４】
各インターフェース３０、３２及び３３は、ネットワーク２４を介して間接的に及び／又は直接的に１つ又は複数の通信リンクをサポートするためのソフトウェア及びハードウェアを含む。例えば、インターフェース３０は、コンピューティング・デバイス１４と１６との間の通信リンク（例えば、有線、無線、直接、ＬＡＮを介する、ネットワーク２４を介するなど）をサポートする。別の例として、インターフェース３２は、コンピューティング・デバイス１２及び１６とＤＳＮメモリ２２との間の通信リンク（例えば、有線接続、無線接続、ＬＡＮ接続、及び／又はネットワーク２４との間の任意の他のタイプの接続）をサポートする。さらに別の例として、インターフェース３３は、ネットワーク２４に対する管理ユニット１８及び完全性処理ユニット２０の各々のための通信リンクをサポートする。
【００１５】
図３〜図８の１つ又は複数を参照して後で説明されるように、コンピューティング・デバイス１２及び１６は、コンピューティング・デバイスが、データ（例えば、データ４０）を分散ストレージ・エラー符号化及び復号するのを可能にする、分散ストレージ（ＤＳ）クライアント・モジュール３４を含む。この例示的な実施形態において、コンピューティング・デバイス１６は、コンピューティング・デバイス１４のための分散ストレージ処理エージェントとして機能する。この役割において、コンピューティング・デバイス１６は、コンピューティング・デバイス１４の代わりにデータを分散ストレージ・エラー符号化及び復号する。分散ストレージ・エラー符号化及び復号を用いれば、ＤＳＮ１０は、データ損失なしに、及び、データの冗長又はバックアップ・コピーを必要とせずに、かなりの数のストレージ・ユニットの障害に対する耐性がある（障害の数は、分散ストレージ・エラー符号化関数のパラメータに基づく）。さらに、ＤＳＮ１０は、データ損失なしにセキュアな方法で無期限にデータを格納する（例えば、システムは、権限のないデータ・アクセスの試みに対して非常に耐性がある）。
【００１６】
動作において、管理ユニット１８は、ＤＳ管理サービスを行う。例えば、管理ユニット１８は、コンピューティング・デバイス１２〜１４に対して個々に、又はユーザ・デバイスのグループの一部として、ディストリビューテッド・データ・ストレージ・パラメータ（例えば、ボールト（vault）の作成、ディストリビューテッド・ストレージ・パラメータ、セキュリティ・パラメータ、課金情報、ユーザ・プロファイル情報など）を確立する。特定の例として、管理ユニット１８は、ユーザ・デバイス、デバイスのグループ、又はパブリック・アクセスのためのＤＳＮメモリ２２内のボールト（例えば、ＤＳＮのネーム空間全体の一部と関連した仮想メモリ・ブロック）の作成を調整し、ボールトについての分散ストレージ（ＤＳ）エラー符号化パラメータを、ボールトごとに確立する。管理ユニット１８は、ＤＳＮ１０のレジストリ情報を更新することによって、各ボールトについてのＤＳエラー符号化パラメータの格納を容易にし、それにより、レジストリ情報は、ＤＳＮメモリ２２、コンピューティング・デバイス１２〜１６、管理ユニット１８、及び／又は完全性処理ユニット２０内に格納され得る。
【００１７】
管理ユニット１８は、ユーザ・プロファイル情報（例えば、アクセス制御リスト（ＡＣＬ））を作成し、ローカル・メモリ内及び／又はＤＳＮメモリ２２のメモリ内に格納する。ユーザ・プロファイル情報は、認証情報、許可、及び／又はセキュリティ・パラメータを含む。セキュリティ・パラメータは、暗号化／解読スキーム、１つ又は複数の暗号化鍵、鍵生成スキーム、及び／又はデータ符号化／復号スキームを含むことができる。
【００１８】
管理ユニット１８は、特定のユーザ、ユーザ・グループ、ボールト・アクセス、パブリック・ボールト・アクセス等に対する課金情報を作成する。例えば、管理ユニット１８は、非パブリック・ボールト及び／又はパブリック・ボールトにユーザがアクセスする回数を追跡し、それを用いてアクセスごとの課金情報を生成することができる。別の例では、管理ユニット１８は、ユーザ・デバイス及び／又はユーザ・グループによって格納された及び／又は取り出されたデータの量を追跡し、それを用いてデータ量ごとの課金情報を生成することができる。
【００１９】
別の例として、管理ユニット１８は、ネットワーク動作、ネットワーク管理、及び／又はネットワーク保守を実行する。ネットワーク動作は、ユーザ・データ割り当て要求（例えば、読み出し及び／又は書き込み要求）を認証すること、ボールトの作成を管理すること、ユーザ・デバイスに対する認証資格証明を確立すること、ＤＳＮ１０へ／からコンポーネント（例えば、ユーザ・デバイス、ストレージ・ユニット、及び／又はＤＳクライアント・モジュール３４を有するコンピューティング・デバイス）を追加／削除すること、及び／又はストレージ・ユニット３６に対する認証資格証明を確立することを含む。ネットワーク管理は、デバイス及び／又はユニットの障害を監視すること、ボールト情報を保持すること、デバイス及び／又はユニットのアクティブ化ステータスを決定すること、デバイス及び／又はユニットのロードを決定すること、及び／又はＤＳＮ１０の性能レベルに影響を与える任意の他のシステム・レベル動作を決定することを含む。ネットワーク保守は、ＤＮＳ１０のデバイス及び／又はユニットの交換、アップグレード、修理、及び／又は拡張を容易にすることを含む。
【００２０】
完全性処理ユニット２０は、「不良」又は欠損している符号化データ・スライスの再構築を実行する。高レベルにおいては、完全性処理ユニット２０は、ＤＳＮメモリ２２から、符号化データ・スライス、及び／又は符号化データ・スライスのスライス名の取り出し／列挙を定期的に試みることによって再構築を実行する。取り出された符号化スライスについて、それらは、データ破損、古いバージョン等に起因するエラーに関してチェックされる。スライスがエラーを含む場合、それは「不良」スライスとしてフラグが立てられる。受け取られなかった及び／又は列挙されなかった符号化データ・スライスについては、それらは、欠損スライスとしてフラグが立てられる。不良及び／又は欠損スライスは、その後、再構築されたスライスを生成するために良好なスライスとみなされる他の取り出された符号化データ・スライスを使用して再構築される。再構築されたスライスは、ＤＳＮメモリ２２内に格納される。
【００２１】
図２は、処理モジュール５０、メモリ・コントローラ５２、メイン・メモリ５４、ビデオ・グラフィック処理ユニット５５、入力／出力（ＩＯ）コントローラ５６、周辺コンポーネント相互接続（ＰＣＩ）インターフェース５８、ＩＯインターフェース・モジュール６０、少なくとも１つのＩＯデバイス・インターフェース・モジュール６２、読み出し専用メモリ（ＲＯＭ）基本入出力システム（ＢＩＯＳ）６４、及び１つ又は複数のメモリ・インターフェース・モジュールを含むコンピューティング・コア２６の実施形態の模式的なブロック図である。１つ又は複数のメモリ・インターフェース・モジュールは、ユニバーサル・シリアル・バス（ＵＳＢ）インターフェース・モジュール６６、ホスト・バス・アダプタ（ＨＢＡ）インターフェース・モジュール６８、ネットワーク・インターフェース・モジュール７０、フラッシュ・インターフェース・モジュール７２、ハード・ドライブ・インターフェース・モジュール７４、及びＤＳＮインターフェース・モジュール７６のうちの１つ又は複数を含む。
【００２２】
ＤＳＮインターフェース・モジュール７６は、従来のオペレーティング・システム（ＯＳ）ファイル・システム・インターフェース（例えば、ネットワーク・ファイル・システム（ＮＦＳ）、フラッシュ・ファイル・システム（ＦＦＳ）、ディスク・ファイル・システム（ＤＦＳ）、ファイル転送プロトコル（ＦＴＰ）、ウェブベースのディストリビューテッド・オーサリング及びバージョニング（ＷｅｂＤＡＶ）等）、及び／又はブロック・メモリ・インターフェース（例えば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）等）を模倣するように機能する。ＤＳＮインターフェース・モジュール７６及び／又はネットワーク・インターフェース・モジュール７０は、図１のインターフェース３０〜３３の１つ又は複数として機能することができる。ＩＯデバイス・インターフェース・モジュール６２及び／又はメモリ・インターフェース・モジュール６６〜７６は、集合的に又は個々にＩＯポートと呼ぶことができることに留意されたい。
【００２３】
図３は、データの分散ストレージ・エラー符号化の一例の模式的なブロック図である。コンピューティング・デバイス１２又は１６が格納すべきデータを有するとき、コンピューティング・デバイス１２又は１６は、分散ストレージ・エラー符号化パラメータに基づく分散ストレージ・エラー符号化プロセスに従って、データを分散ストレージ・エラー符号化する。分散ストレージ・エラー符号化パラメータは、符号化関数（例えば、情報ディストリビューテッド・アルゴリズム、リード・ソロモン（Reed-Solomon）、コーシー・リード・ソロモン（Cauchy Reed-Solomon）、系統的符号化、非系統的符号化、オンライン・コード等）、データ・セグメント化プロトコル（例えば、データ・セグメント・サイズ、固定、可変等）、及びデータ・セグメント毎の符号化値を含む。データ・セグメント毎符号化値は、データ・セグメントの符号化当たりの（すなわち、符号化データ・スライスのセット内の）符号化データ・スライスの総数又はピラー幅（pillar width）数（Ｔ）；データ・セグメントを回復するのに必要な符号化データ・スライス・セットの符号化データ・スライスの復号閾値数（Ｄ）；データ・セグメントを復号するためにストレージから読み出すべきセット当たりの符号化データ・スライスの数を示す、符号化データ・スライスの読み出し閾値数（Ｒ）；及び／又は符号化データ・セグメントが適切に格納されたと見なされるまでに正確に格納されなければならないセット当たりの符号化データ・スライスの数を示す、書き込み閾値数（Ｗ）を含む。分散ストレージ・エラー符号化パラメータは、スライス（slicing）情報（例えば、各データ・セグメントに対して作成される符号化データ・スライスの数）、及び／又はスライス・セキュリティ情報（例えば、符号化データ・スライス毎の、暗号化、圧縮、完全性チェックサム等）をさらに含むことができる。
【００２４】
本例において、符号化関数としてコーシー・リード・ソロモンが選択され（一般的な例が図４に示され、特定の例が図５に示される）、データ・セグメント化プロトコルは、データ・オブジェクトを固定サイズのデータ・セグメントに分割することであり、データ・セグメント毎符号化値は、ピラー幅５、復号閾値３、読み出し閾値４、及び書き込み閾値４を含む。データ・セグメント化プロトコルに従って、コンピューティング・デバイス１２又は１６は、データ（例えば、ファイル（テキスト、ビデオ、音声等）、データ・オブジェクト、又は他のデータ配列）を複数の固定サイズのデータ・セグメント（例えば、キロバイトからテラバイト又はそれを上回る範囲の、１乃至Ｙの固定サイズ）に分割する。作成されるデータ・セグメントの数は、データのサイズ及びデータ・セグメント化プロトコルに依存する。
【００２５】
次に、コンピューティング・デバイス１２又は１６は、選択された符号化関数（例えば、コーシー・リード・ソロモン）を用いてデータ・セグメントを分散ストレージ・エラー・符号化し、符号化データ・スライスのセットを生成する。図４は、一般的なコーシー・リード・ソロモン符号化関数を示し、これは、符号化行列（encoding matrix、ＥＭ）、データ行列（ＤＭ）、及びコード化行列（coded matrix、ＣＭ）を含む。符号化行列（ＥＭ）のサイズは、選択されたデータ・セグメント毎符号化値のピラー幅数（Ｔ）及び復号閾値数（Ｄ）に依存する。データ行列（ＤＭ）を生成するために、データ・セグメントは、複数のデータブロックに分割され、データブロックは、１行当たりＺのデータブロックを有する数Ｄの行に配列される。Ｚは、データ・セグメントから作成されるデータブロックの数及び復号閾値数（Ｄ）の関数であることに留意されたい。コード化行列は、データ行列に符号化行列を行列乗算することによって生成される。
【００２６】
図５は、ピラー数（Ｔ）５及び復号閾値数３の、コーシー・リード・ソロモン符号化の特定の例を示す。この例において、第１のデータ・セグメントは、１２個のデータブロック（Ｄ１〜Ｄ１２）に分割される。コード化行列は、５行のコード化データブロックを含み、ここで第１の行Ｘ１１〜Ｘ１４は、第１の符号化データスライス（ＥＤＳ１＿１）に対応し、第２の行Ｘ２１〜Ｘ２４は、第２の符号化データスライス（ＥＤＳ２＿１）に対応し、第３の行Ｘ３１〜Ｘ３４は、第３の符号化データスライス（ＥＤＳ３＿１）に対応し、第４の行Ｘ４１〜Ｘ４４は、第４の符号化データスライス（ＥＤＳ４＿１）に対応し、第５の行Ｘ５１〜Ｘ５４は、第５の符号化データスライス（ＥＤＳ５＿１）に対応する。ＥＤＳの名称の２番目の数は、データ・セグメント数に対応することに留意されたい。
【００２７】
図３の検討に戻ると、コンピューティング・デバイスはまた、符号化データ・スライスのセット内の各符号化データスライス（ＥＤＳ）についてのスライス名（ＳＮ）も作成する。スライス名７８の典型的な形式が、図６に示される。図示のように、スライス名（ＳＮ）７８は、符号化データ・スライスのピラー数（例えば、１〜Ｔのうちの１つ）、データ・セグメント数（例えば、１〜Ｙのうちの１つ）、ボールト識別子（ＩＤ）、データ・オブジェクト識別子（ＩＤ）を含み、さらに符号化データ・スライスの改訂（revision）レベル情報を含むことができる。スライス名は、少なくとも部分的に、ＤＳＮメモリ２２への格納及びそこからの取り出しための符号化データ・スライスのためのＤＳＮアドレスとして機能する。
【００２８】
符号化の結果として、コンピューティング・デバイス１２又は１６は、複数の符号化データ・スライスのセットを生成し、これらには、格納用のストレージ・ユニットに対するそれぞれのスライス名が与えられる。図示のように、第１の符号化データ・スライスのセットは、ＥＤＳ１＿１からＥＤＳ５＿１までを含み、第１のスライス名のセットは、ＳＮ１＿１からＳＮ５＿１までを含み、最後の符号化データ・スライスのセットは、ＥＤＳ１＿ＹからＥＤＳ５＿Ｙまでを含み、最後のスライス名のセットは、ＳＮ１＿ＹからＳＮ５＿Ｙまでを含む。
【００２９】
図７は、図４の例において分散ストレージ・エラー符号化されて格納されたデータ・オブジェクトの、分散ストレージ・エラー復号の一例の模式的なブロック図である。この例において、コンピューティング・デバイス１２又は１６は、ストレージ・ユニットから、少なくとも、データ・セグメント毎の復号閾値数の符号化データ・スライスを取り出す。特定の例として、コンピューティング・デバイスは、読出し閾値数の符号化データ・スライスを取り出す。
【００３０】
復号閾値数の符号化データ・スライスからのデータ・セグメントを回復するために、コンピューティング・デバイスは、図８に示すような復号関数を用いる。図示のように、復号関数は、本質的に図４の符号化関数の逆行列である。コード化行列は、復号閾値数（例えば、この例では３）の行を含み、復号行列は、コード化行列の対応する行を含む符号化行列の逆行列である。例えば、コード化行列が行１、２及び４を含む場合、符号化行列を行１、２及び４に減らし、次いで逆行列にして、復号行列を生成する。
【００３１】
図９は、符号化データ・スライスがどこに格納されるか、又は格納された符号化データ・スライスがどこで見つかるかを判断するために、コンピューティング・デバイス、ストレージ・ユニット、及び／又はＤＳＮのいずれかの他のデバイス若しくはユニットにより実装することができる、拡散（decentralized）又はディストリビューテッド（distributed）アグリーメント・プロトコル（ＤＡＰ）８０の実施形態の模式的なブロック図である。ＤＡＰ８０は、複数の機能格付けモジュール８１を含む。の機能格付けモジュール８１の各々は、決定論的関数８３、正規化関数８５、及びスコアリング関数８７を含む。
【００３２】
各の機能格付けモジュール８１は、入力として、スライス識別子８２及びストレージ・プール（ＳＰ）係数を受け取る（例えば、第１の機能格付けモジュール８１−１は、ＳＰ１係数「ａ」及び「ｂ」を受け取る）。入力に基づいて、ＳＰ係数が、各の機能格付けモジュール８１について異なる場合、各の機能格付けモジュール８１は、一意のスコア９３（例えば、英数字の値、数値等）を生成する。ランク付け関数８４は、一意のスコア９３を受け取り、順序付け関数（例えば、最高から最低へ、最低から最高へ、アルファベット順など）に基づいてそれらを順序付けし、次に、１つを、選択されたストレージ・プール８６として選択する。ストレージ・プールは、１つ又は複数のストレージ・ユニット・セットを含むことに留意されたい。さらに、スライス識別子８２は、スライス名又はスライス名の共通の属性に対応することに留意されたい。例えば、符号化データ・スライスのセットについて、スライス識別子８２は、データ・セグメント数、ボールトＩＤ及びデータ・オブジェクトＩＤを指定するが、オープンエンドのピラー数を残す。別の例として、スライス識別子８２は、スライス名の範囲を指定する（例えば、００００  ００００からＦＦＦＦ  ＦＦＦＦまで）。
【００３３】
特定の例として、第１の機能格付けモジュール８１−１は、スライス識別子８２、及びＤＳＮのストレージ・プール１についてのＳＰ係数を受け取る。ＳＰ係数は、第１の係数（例えば、「ａ」）及び第２の係数（例えば、「ｂ」）を含む。例えば、第１の係数は、対応するストレージ・プールについての一意の識別子（例えば、ＳＰ１係数「ａ」についてのＳＰ＃１のＩＤ）であり、第２の係数は、ストレージ・プールについての重み係数（weighting factor）である。重み係数は、ストレージ・プール内のストレージ・ユニットの能力に基づき、時間の経過と共に、データがストレージ・プール内に公正にかつディストリビューテッド方式で格納されることを保証するように得られる。
【００３４】
例えば、重み係数は、ソース名がその位置にマッピングされる確率が、比較する全ての位置の全ての位置（例えば、位置はストレージ・ユニットに対応する）の重みの合計で除算した位置重みと等しくなるように、関連付けられた位置に対する選択の割合を調整する任意のバイアスを含む。特定の例として、各ストレージ・プールは、ストレージ能力に基づいて、位置重み係数に関連付けられ、ストレージ能力がより大きいストレージ・プールは、ストレージ能力がより小さいストレージ・プールよりも高い位置重み係数を有する。
【００３５】
決定論的関数８３は、ハッシング関数、ハッシュ・ベースのメッセージ認証コード関数、マスク生成関数、周期的冗長コード関数、多数の位置のハッシング・モジュール、コンシステント・ハッシング、ランデブー・ハッシング、及び／又はスポンジ関数とすることができ、スライス識別子８２及び第１のＳＰ係数（例えば、ＳＵ１係数「ａ」）の組み合わせ及び／又は連結（例えば、追加（add）、後ろに付加（append）、インターリーブ）に対して決定論的関数を実行し、暫定結果８９を生成する。
【００３６】
正規化関数８５は、暫定結果８９を正規化して、正規化暫定結果９１を生成する。例えば、正規化関数８５は、暫定結果８９を、決定論的関数８３の出力の可能な順列の数で除算して、正規化暫定結果を生成する。例えば、暫定結果が４，３２５（１０進法）であり、可能な順列の数が１０，０００である場合、正規化暫定結果は、０．４３２５である。
【００３７】
スコアリング関数８７は、正規化暫定結果９１に対して数学関数を実行して、スコア９３を生成する。数学関数は、除算、乗算、加算、減算、その組み合わせ、及び／又はいずれかの数学演算とすることができる。例えば、スコアリング関数は、第２のＳＰ係数（例えば、ＳＰ１係数「ｂ」）を、正規化結果の負の対数（例えば、ｅｙ＝ｘ及び／又はｌｎ（ｘ）＝ｙ）で除算する。例えば、第２のＳＰ係数が１７．５であり、正規化結果の負の対数が１．５４１１である場合（例えば、ｅ（０．４２３５））、スコアは、１１．３５５５である。
【００３８】
ランク付け関数８４は、機能格付けモジュール８１の各々からスコア９３を受け取り、それらを順序付けして、ストレージ・プールのランク付けを生成する。例えば、順序付けが最高から最低までであり、ＤＳＮ内に５つのストレージ・ユニットがある場合、ランク付け関数は、５つのストレージ・ユニットに対するスコアを評価し、それらをランク付けされた順序に配置する。ランク付けから、ランク付けモジュール８４は、１つのストレージ・プール８６を選択し、それが、符号化データ・スライスのセットについてのターゲットである。
【００３９】
ＤＡＰ８０をさらに用いて、ストレージ・ユニット・セット、個々のストレージ・ユニット、及び／又はストレージ・ユニット、内のメモリ・デバイスを識別することができる。異なる出力結果を達成するために、所望の位置情報に従って、係数が変更される。ＤＡＰ８０はまた、スコアのランク付けされた順序を出力することもできる。
【００４０】
図１０は、複数のスライスのセットを作成する例の略ブロックである。複数の符号化データ・スライス（ＥＤＳ）のセットの各々は、データ・オブジェクト、データ・オブジェクトの一部、又は複数のデータの符号化に対応し、ここでデータ・オブジェクトは、ファイル、テキスト、データ、デジタル情報等の１つ又は複数である。例えば、強調された複数の符号化データ・スライスは、データ識別子「ａ２」を有するデータ・オブジェクトに対応する。
【００４１】
符号化データ・スライスの各セットの各符号化データ・スライスは、そのスライス名により一意に特定され、それは、符号化データ・スライスを格納するためのＤＳＮアドレスの少なくとも一部としても用いられる。図示のように、ＥＤＳのセットは、ＥＤＳ  １＿１＿１＿ａ１乃至ＥＤＳ  ５＿１＿１＿ａ１を含む。ＥＤＳ数は、ピラー数、データ・セグメント数、ボールトＩＤ、及びデータ・オブジェクトＩＤを含む。従って、ＥＤＳ  １＿１＿１＿ａ１について、これは、データ・オブジェクト「ａ１」の第１のデータ・セグメントの第１のＥＤＳであり、ボールト１内に格納されるべきである、又は格納される。ボールトは、ＤＳＮのストレージ・ユニットによりサポートされる論理メモリ・コンテナであることに留意されたい。ボールトは、１つ又は複数のユーザ・コンピューティング・デバイスに割り当てることができる。
【００４２】
さらに図示されるように、別の複数の符号化データ・スライスのセットが、データ・オブジェクト「ｂ１」についてのボールト２内に格納される。Ｙ個のＥＤＳのセットがあり、ここで、Ｙは、データ・オブジェクトをセグメント化することにより作成されるデータ・セグメントの数に対応する。データ・オブジェクト「ｂ１」の最後のＥＤＳのセットは、ＥＤＳ  １＿Ｙ＿２＿ｂ１乃至ＥＤＳ  ５＿Ｙ＿２＿ｂ１を含む。従って、ＥＤＳ  １＿Ｙ＿２＿ｂ１について、これは、データ・オブジェクト「ｂ１」の最後のデータ・セグメント「Ｙ」の最初のＥＤＳであり、ボールト２内に格納されるべきである、又は格納される。
【００４３】
図１１は、１つ又は複数のストレージ・ボールトをサポートする複数のストレージ・プール（例えば、プール１乃至プールｎ）の例の模式的なブロック図である。各ストレージ・プール（例えば、１乃至ｎ）は、１つ又は複数のストレージ・ユニット・セットを含み、ここで、ストレージ・ユニット・セット内のストレージ・ユニットの数は、これが格納する符号化データ・スライスのセットのピラー幅数に対応する。例えば、ストレージ・プール１及びストレージ・プール２はそれぞれ、７つのストレージ・ユニットを含み、ストレージ・プールｎは、１２のストレージ・ユニットを含む。ストレージ・プールは、示されるものよりも多い又は少ないストレージ・ユニットを有することができ、ストレージ・プールごとに、異なる数のストレージ・ユニットを有し得ることに留意されたい。
【００４４】
この例において、ストレージ・プール１乃至ｎは、３つのボールト（ボールト１、ボールト２及びボールト３）をサポートする。ボールト１及びボールト２は、ストレージ・ユニットの５つを使用し、複数のストレージ・プールにわたる。ボールト３は、ストレージ・ユニットの７つを使用し、ストレージ・プール「ｎ」内にのみある。ボールト内のストレージ・ユニットの数はピラー幅数に対応し、この例では、ピラー幅数は、ボールト１及びボールト２については５であり、ボールト３については７である。ストレージ・プールは、ストレージ・ユニットの行を有することができ、ここで、ＳＵ＃１は、各々が第１のピラー数に対応するストレージ・ユニットのグループを表し、ＳＵ＃２は、各々が第２のピラー数に対応する第２の複数のストレージ・ユニットを表し、以下同様であることに留意されたい。例えば、ストレージ・プール１のストレージ・ユニットＳＵ＃１と表記されたボックスは、複数のストレージ・ユニットを表す。
【００４５】
ＤＳＮの各デバイス（例えば、コンピューティング・デバイス１２〜１６、管理ユニット１８、完全性処理ユニット２０、ストレージ・ユニット）は、図９に示されるようなディストリビューテッド・アグリーメント・プロトコル８０を含むことができる。ＤＡＰ８０は、（例えば、スライス名、及び／又はその１つ又は複数のその共通要素（例えば、ピラー数、データ・セグメント数、ボールトＩＤ、及び／又はデータ・オブジェクトＩＤ））を用いて、１つ又は複数の符号化データ・スライス・セットについて、ストレージ・ユニット・セット又はプールを特定する。図１１の３つの複数の符号化データ・スライス（ＥＤＳ）のセットに関して、ＤＡＰ８０は、ＤＳＮメモリの全体にわたって（例えば、種々のストレージ・ユニットの間で）符号化データ・スライスのセットをほぼ等しくディストリビュートさせる。
【００４６】
コンピューティング・デバイスは、ストレージ・ユニット・セットをターゲットにし、その符号化データ・スライスを格納するが、それは、コンピューティング・デバイスの観点から、コンピューティング・デバイスが、ＤＡＰを介して割り当てられたセットよりも、より効率的に、確実に、及び／又は高速にターゲットにされたストレージ・ユニット・セットに書き込むことができるためである。図１２を参照してより詳細に説明されるように、コンピューティング・デバイスは、ＤＡＰを操作し、ＤＡＰがそれを所望のストレージ・ユニット・セットに割り当てるようにすることができる。これを行うために、コンピューティング・デバイスは、１つ又は複数のランダムに生成されたコンポーネント（例えば、データ・オブジェクトＩＤ）を含むものの代わりに、特定のスライス識別子（例えば、特定のソース名）を作成する。
【００４７】
時間が経つにつれて、多くのコンポーネントがＤＡＰを操作して、所望のストレージ・ユニット・セットを取得した場合、ストレージの不均衡が生じる可能性がある。ストレージの不均衡（例えば、ＤＡＰの不均衡）は、少なくともある程度まで、ストレージ・ユニットにより是正され得る。例えば、ストレージ・ユニットは、ＤＡＰ係数（例えば、ストレージ・マッピング係数）の変更を開始し、それにより、コンピューティング・デバイスの所望のストレージ・ユニット・セット内に格納された符号化データ・スライスの一部が他のストレージ・ユニットにもたらされる。このことは、図１２を参照してより詳細に論じられる。
【００４８】
図１２は、ディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）を操作して、所望のストレージ・ユニット・セットを特定する方法の例の論理図である。方法は、分散ストレージ・ネットワークのコンピューティング・デバイスが、ＤＳＮのメモリ内に格納するために、複数の符号化データ・スライス・セットを取得する（例えば、ＤＳＮメモリは、地理的領域全体にわたって配置される複数のストレージ・ユニットのプールを含む（例えば、プールは１つ又は複数のストレージ・ユニット・セットを含む）、ステップ１００で開始する。
【００４９】
方法は、コンピューティング・デバイスが、複数の符号化データ・スライス・セットを格納するために、複数のストレージ・ユニットのプール内の所望のストレージ・ユニット・セットを特定する、ステップ１０２を続行する。例えば、コンピューティング・デバイスは、所望の書き込み速度（例えば、ＤＡＰにより特定されたストレージ・ユニット・セットよりも良好な書き込みのデータ・レート及び待ち時間）を有する複数のストレージ・ユニット・セットのプール内の所望のストレージ・ユニット・セットを特定する。別の例として、コンピューティング・デバイスは、所望のストレージ・ユニット・セットを、所望の効率を有する（例えば、格納されている符号化データ・スライスのセットの大部分について適時に書き込み閾値を満たしている及び超えている）セットとして特定する。更に別の例として、コンピューティング・デバイスは、所望のストレージ・ユニット・セットを、所望の信頼性（例えば、少なくとも、符号化データ・スライスを格納するのに利用可能なストレージ・ユニットの書き込み閾値数を有する一貫性）を有するセットとして特定する。
【００５０】
コンピューティング・デバイスが所望のストレージ・ユニット・セットを特定する方式は、種々の方法で行うことができる。例えば、コンピューティング・デバイスは、ルックアップ関数（例えば、セットを特定するためにルックアップ関数を実行している）を実行する。別の例として、コンピューティング・デバイスは、所望の書き込み速度、所望の効率、及び／又は所望の信頼性を試験するクエリを開始し、それに対する応答を受け取る。更に別の例として、コンピューティング・デバイスは、履歴記録にアクセスし、履歴記録は、ＤＳＮのストレージ・ユニット・セットに書き込むとき、コンピューティング・デバイスの書き込み速度、効率、及び／又は信頼性データを追跡する。この履歴記録から、コンピューティング・デバイスは、所望の書き込み特性（例えば、所望の書き込み速度、所望の効率、及び／又は所望の信頼性）を有するストレージ・ユニット・セットを選択する。更に別の例として、コンピューティング・デバイスは、セットを特定するために、ルックアップ・テーブルにアクセスする。
【００５１】
方法は、コンピューティング・デバイスが、ＤＡＰについての特定のソース名（例えば、ボールトＩＤと組み合わせた特定のデータ・オブジェクトＩＤ）を生成し、所望のストレージ・ユニット・セットを特定する、ステップ１０４を続行する。例えば、コンピューティング・デバイスは、ＤＡＰに基づいて特定のデータ・オブジェクトＩＤを生成するので、ＤＡＰは、複数のストレージ・ユニットのプールのうちの所望のストレージ・ユニット・セットを特定する。コンピューティング・デバイスは、特定のデータ・オブジェクト識別子を生成し、それをボールト識別子及び／又は改訂レベル情報と組み合わせることによって、特定のソース名を生成する。ＤＳＮにおいて、ＤＡＰを実行し、所望のストレージ・ユニット・セットを、複数の符号化データ・スライスのセットを格納するストレージ・ユニットとして特定するとき、デバイス（例えば、コンピューティング・デバイス、他のコンピューティング・デバイス、ストレージ・ユニット、管理ユニット、完全性ユニット等）は、特定のソース名をスライス識別子として使用する。
【００５２】
方法は、コンピューティング・デバイスが、複数の符号化データ・スライスのセットについての複数のスライス名のセットを生成する、ステップ１０６を続行する。コンピューティング・デバイスは、ピラー数及びデータ・セグメント数と組み合わせることにより、スライス名を生成する。方法は、コンピューティング・デバイスが、複数のスライス名のセットに従って、複数の符号化データ・スライス・セットに関する複数の書き込み要求のセットを所望のストレージ・ユニット・セットに送る、ステップ１０８を続行する。
【００５３】
方法は、ＤＳＮのストレージ・ユニットが、ＤＡＰの不均衡があるかどうかを判断する、ステップ１１０を続行する。ストレージ・ユニットがＤＡＰはないと判断すると、方法は、ステップ１００にループバックする。
【００５４】
ＤＡＰの不均衡がある場合、方法は、ストレージ・ユニットがマッピング係数の調整を開始する、ステップ１１２を続行する。例えば、ストレージ・ユニットの１つが、ストレージ・マッピング係数を調整する。別の例として、ストレージ・ユニットは、管理ユニットがストレージ・マッピング係数の調整を要求する。ストレージ・ユニット又は管理ユニットは、１つ又は複数の符号化データ・スライスが、所望のストレージ・ユニット・セットのストレージ・ユニットから、ＤＳＮ内の他のストレージ・ユニットに転送されるように、ストレージ・マッピング係数（例えば、図９の１つ又は複数の機能格付けモジュールについての係数ｂ）を調整する。
【００５５】
方法は、ストレージ・ユニットが、特定のソース名及び調整されたストレージ・マッピング係数を用いてＤＡＰを実行し、１つ又は複数の他のストレージ・ユニットに転送される１つ又は複数の符号化データ・スライスを特定する、ステップ１１４を続行する。方法は、所望のストレージ・ユニット・セットのストレージ・ユニットが、１つ又は複数の符号化データ・スライスを１つ又は複数の他のストレージ・ユニットに転送する、ステップ１１６を続行する。
【００５６】
本明細書で使用され得る場合、ビットストリーム、ストリーム、信号シーケンス等（又はその均等物）などの用語は、そのコンテンツが多数の所望のタイプ（例えば、いずれも一般に「データ」と呼ぶことができるデータ、ビデオ、スピーチ、音声等）のいずれかに対応するデジタル情報を記述するために互換的に用いられていることに留意されたい。
【００５７】
本明細書で使用できる場合、「実質的に」及び「約」という用語は、その対応する用語及び／又は項目間の相関性について業界で受け入れられる許容範囲を与える。そのような業界で受け入れられる許容範囲は、１パーセント未満から５０パーセントまでに及び、これらに限定されるものではないが、成分値、集積回路プロセス変動、温度変動、立ち上がり及び立ち下がり時間、及び／又は熱雑音に対応する。そのような項目間の相関性は、数パーセントの差から大規模な差に及ぶ。同じく本明細書で使用できる場合、「動作可能に結合された」、「結合された」、及び／又は「結合」という用語は、項目間の直接結合、及び／又は介在する項目を介する項目間の間接結合を含み（例えば、項目は、これらに限定されるものではないが、コンポーネント、要素、回路、及び／又はモジュール）、ここで、間接結合については、介在する項目は、信号の情報を変更しないが、その電流レベル、電圧レベル、及び／又は電力レベルを調整することができる。さらに本明細書で使用できる場合、推論結合（inferred coupling）（すなわち、１つの要素が別の要素に推論によって結合される）は、「結合される」と同じように２つの項目間の直接及び間接結合を含む。さらに本明細書で使用できる場合、「動作可能」又は「動作可能に結合された」という用語は、項目が、アクティブにされたときに１つ又は複数の対応する機能を実行するための電力接続、入力、出力等のうちの１つ又は複数を含むことを示し、１つ又は複数の他の項目に推論結合することをさらに含むことができる。さらに本明細書で使用できる場合、「関連付けられた」という用語は、別個の項目、及び／又は別の項目内に埋め込まれている１つの項目の直接及び／又は間接結合を含む。
【００５８】
本明細書で使用できる場合、「比較して好ましい（compares favorably）」という用語は、２つ又はそれより多い項目、信号等の間の比較が望ましい関係を与えることを示す。例えば、望ましい関係が、信号１が信号２より大きい強さを有することである場合、信号１の強さが信号２の強さよりも大きいとき、又は信号２の強さが信号１の強さよりも小さいときに、好ましい比較が達成され得る。本明細書で使用し得る場合、「比較して好ましくない（compares unfavorably）」という用語は、２つ又はそれより多い項目、信号等の間の比較が所望の関係を与えないことを示す。
【００５９】
また本明細書で使用できる場合、「処理モジュール」、「処理回路」、及び／又は「処理ユニット」という用語は、単一の処理デバイス又は複数の処理デバイスであり得る。そのような処理デバイスは、マイクロプロセッサ、マイクロコントローラ、デジタル・シグナル・プロセッサ、マイクロコンピュータ、中央処理装置、フィールド・プログラマブル・ゲート・アレイ、プログラマブル論理デバイス、状態機械、論理回路、アナログ回路、デジタル回路、及び／又は回路のハード・コーディング及び／又は動作命令に基づいて信号（アナログ及び／又はデジタル）を操作する任意のデバイスであり得る。処理モジュール、モジュール、処理回路、及び／又は処理ユニットは、メモリ及び／又は集積メモリ要素であることができ、又はそれらをさらに含むことができ、それらは、単一のメモリ・デバイス、複数のメモリ・デバイス、及び／又は別の処理モジュール、モジュール、処理回路、及び／又は処理ユニットの組み込み回路であり得る。そのようなメモリ・デバイスは、読み出し専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、スタティック・メモリ、ダイナミック・メモリ、フラッシュ・メモリ、キャッシュメモリ、及び／又はデジタル情報を格納する任意のデバイスであり得る。処理モジュール、モジュール、処理回路、及び／又は処理ユニットが１つより多い処理デバイスを含む場合、処理デバイスは、中央に配置されてよく（例えば、有線及び／又は無線のバス構造を介して一緒に直接結合される）、又はディストリビュートして配置されてもよい（例えば、ローカル・エリア・ネットワー及び／又は広域ネットワークを介した間接結合によるクラウド・コンピューティング）ことに留意されたい。さらに、処理モジュール、モジュール、処理回路、及び／又は処理ユニットが、状態機械、アナログ回路、デジタル回路、及び／又は論理回路を介してその機能の１つ又は複数を実装する場合、対応する動作命令を格納するメモリ及び／又はメモリ要素は、状態機械、アナログ回路、デジタル回路、及び／又は論理回路を含む回路の内部又は外部に組み込まれ得ることに留意されたい。さらに、図の１つ又は複数に示されるステップ及び／又は機能の少なくとも幾つかに対応するハード・コード命令及び／又は動作命令を、メモリ要素が格納し、処理モジュール、モジュール、処理回路、及び／又は処理ユニットが実行することができることにも留意されたい。そのようなメモリ・デバイス又はメモリ要素は、製造品内に含まれ得る。
【００６０】
１つ又は複数の実施形態は、指定された機能及びその関係の性能を示す方法ステップを用いて上記に説明されている。これらの機能的な基本構成要素（functional building block）及び方法ステップの範囲及びシーケンスは、説明の便宜のために本明細書では任意に定められている。指定された機能及び関係が適切に実施される限り、代替的な範囲及びシーケンスを定めることもできる。従って、いずれのそのような代替的な範囲又はシーケンスも、特許請求される発明の範囲内にある。さらに、これらの機能的基本構成要素の範囲は、説明の便宜のために任意に定められている。特定の重要な機能が適切に実施される限り、代替的な範囲を定めることができる。同様に、フロー図のブロックは、特定の重要な機能を示すために本明細書では任意に定められ得る。
【００６１】
使用される範囲において、フロー図のブロックの範囲及びシーケンスは、別様に定められてもよく、依然として特定の重要な機能を実施することができる。従って、機能的基本構成要素及びフロー図のブロックの両方のそうした代替的定義は、特許請求される発明の範囲内にある。当業者であれば、本明細書における機能的基本構成要素、及び他の例示的なブロック、モジュール、及びコンポーネントは、例示されたように実装されてよく、又は個別部品、特定用途向け集積回路、適切なソフトウェアなどを実行するプロセッサ、又はこれらの任意の組み合わせによって実装されてもよいことも認識するであろう。
【００６２】
加えて、フロー図は、「開始」及び／又は「続行」の表示を含むことができる。「開始」及び「続行」表示は、提示されたステップを他のルーチンに任意に組み込むことができること又は別様に他のルーチンと関連して用いることできることを反映する。この文脈において、「開始」は、提示された最初のステップの始まりを示すものであり、具体的に示されていない他の活動がその前に先立っていてもよい。さらに、「続行」表示は、提示されたステップを複数回実行することができること、及び／又は具体的に示されていない他の活動がその後に続いていてもよいことを反映する。さらに、フロー図は、ステップの特定の順序を示すが、因果律が維持される条件で、他の順序も同様に可能である。
【００６３】
１つ又はそれ以上の実施形態は、本明細書において、１つ又は複数の態様、１つ又は複数の特徴、１つ又は複数の概念、及び／又は１つ又は複数の例を示すために使用されている。装置、製品、機械、及び／又はプロセスの物理的実施形態は、本明細書で論じられる実施形態の１つ又は複数を参照して説明される態様、特徴、概念、例等の１つ又は複数を含み得る。さらに、図ごとに、実施形態は、同じ若しくは異なる参照番号を使用することができる同じ又は類似した名前の機能、ステップ、モジュール等を組み込んでもよく、従って、それらの機能、ステップ、モジュール等は、同じ又は類似した機能、ステップ、モジュール等であってもよく、又は異なるものであってもよい。
【００６４】
特に記述されていない限り、本明細書に提示された図面のいずれかの図における要素への、要素からの、及び／又は要素間の信号は、アナログ又はデジタル、連続時間又は離散時間、及びシングルエンド又は差動であり得る。例えば、信号経路がシングルエンド経路として示されている場合、それは差動信号経路も表す。同様に、信号経路が差動経路として示されている場合、それはシングルエンド信号経路も表す。１つ又は複数の特定のアーキテクチャが本明細書に説明されるが、当業者により認識されるように、明確に示されていない１つ又は複数のデータ・バス、要素間の直接接続、及び／又は他の要素間の間接結合を使用する他のアーキテクチャが同様に実装されてもよい。
【００６５】
「モジュール」という用語は、本発明の種々の実施形態の説明で使用される。モジュールは、本明細書で説明され得るような１つ又は複数の機能を実行するための処理モジュール、機能ブロック、ハードウェア、及び／又はメモリ上に格納されたソフトウェアを含む。モジュールがハードウェアによって実装される場合、ハードウェアは、ソフトウェア及び／又はファームウェアと独立して及び／又は関連して動作することができることに留意されたい。本明細書で使用される場合、モジュールは、１つ又は複数のサブ・モジュールを含むことができ、サブ・モジュールの各々は、１つ又は複数のモジュールであり得る。
【００６６】
本明細書においてさらに使用し得るように、コンピュータ可読メモリは、１つ又は複数のメモリ要素を含む。メモリ要素は、別個のメモリ・デバイス、複数のメモリ・デバイス、又はメモリ・デバイス内のメモリ位置の集合とすることができる。このようなメモリ・デバイスは、読出し専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、静的メモリ、動的メモリ、フラッシュ・メモリ、キャッシュメモリ、及び／又はデジタル情報を格納するあらゆるデバイスとすることができる。メモリ・デバイスは、固体メモリ、ハードドライブメモリ、クラウドメモリ、サムドライブ、サーバメモリ、コンピューティング・デバイスメモリ、及び／又はデジタル情報を格納するための他の物理媒体の形態とすることができる。
【００６７】
本発明の種々の機能及び特徴の特定の組み合わせが本明細書で明示的に説明されているが、これらの特徴及び機能の他の組み合わせも同様に可能である。本発明は、本明細書に開示された特定の例により限定されるものではなく、これらの他の組み合わせを明白に組み込む。
【符号の説明】
【００６８】
１０：分散又はディストリビューテッド・ストレージ・ネットワーク（ＤＳＮ）
１２〜１６：コンピューティング・デバイス
１８：管理ユニット
２０：完全性処理ユニット
２２：ＤＳＮメモリ
２４：ネットワーク
２６：コンピューティング・コア
３０〜３３：ネットワーク・インターフェース
３４：分散ストレージ（ＤＳ）クライアント・モジュール
３６：ストレージ・ユニット
４０：データ
５０：処理モジュール
５２：メモリ・コントローラ
５４：メイン・メモリ
５５：ビデオ・グラフィック処理ユニット
５６：入力／出力（ＩＯ）コントローラ
５８：相互接続（ＰＣＩ）インターフェース
６０：ＩＯインターフェース・モジュール
６２：ＩＯデバイス・インターフェース・モジュール
６４：読み出し専用メモリ（ＲＯＭ）基本入出力システム（ＢＩＯＳ）
７０：ネットワーク・インターフェース・モジュール
７６：ＤＳＮインターフェース・モジュール
７８：スライス名
８０：ディストリビューテッド・アグリーメント・プロトコル（ＤＡＰ）
８１：機能格付けモジュール
８２：スライス識別子
８３：決定論的関数
８４：ランク付け関数
８５：正規化関数
８７：スコアリング関数
８９：暫定結果
９１：正規化暫定結果
９３：スコア
【図１】
2019527414.tif 000003
【図２】
2019527414.tif 000004
【図３】
2019527414.tif 000005
【図４】
2019527414.tif 000006
【図５】
2019527414.tif 000007
【図６】
2019527414.tif 000008
【図７】
2019527414.tif 000009
【図８】
2019527414.tif 000010
【図９】
2019527414.tif 000011
【図１０】
2019527414.tif 000012
【図１１】
2019527414.tif 000013
【図１２】
2019527414.tif 000014
【国際調査報告】
2019527414.tif 000015
2019527414.tif 000016