(57)【要約】  各ノードが他の各ノードとネットワークを介してデータを交換しながら分散処理を行う分散システムにおいて、ノード間でネットワークを介して正常にデータの送受が行われたかどうかの検証を簡易な手続きによって行う。各ノードが他の各ノードとネットワークを介してデータを交換して分散処理を行う分散システムにおいて、各ノード（Ｎｉｊ）は、自ノードで作成し他のノードに転送したデータと、他の各ノードから自ノードに転送された全てのデータとの総和を検証データとして生成してコントローラ（ＣＯＮＴ)に送信し、コントローラ（ＣＯＮＴ)において、各ノードから受信した検証データの一致／不一致から各ノード間でのデータの転送が正常に行われたかどうかを検出する。
2019003275.tif 000002
【特許請求の範囲】
【請求項１】
分散処理を行う分散処理システムであって、
一つの処理を分割した部分である部分処理を並行して各々実行する複数のノードと、
検証部とを有し、
前記各ノードは、
前記部分処理を行う部分処理実行手段と、
検証データ送信手段とを有し、
前記各ノードの部分処理実行手段は、前記部分処理において、他の全てのノードに、当該部分処理において生成したデータを転送すると共に、他の全てのノードの各々から転送されたデータを用いた処理を行い、
前記各ノードの前記検証データ送信手段は、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータの値と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から受信したデータの値とに応じた値をとる検証データを作成して前記検証部に送信し、
前記検証部は、前記各ノードから受信した検証データの一致の有無を検出することを特徴とする分散処理システム。
【請求項２】
請求項１記載の分散処理システムであって、
前記検証部は、前記複数のノードのうちの一つのノードに設けられていることを特徴とする分散処理システム。
【請求項３】
請求項１または２記載の分散処理システムであって、
ｎ（但し、ｎは２以上の任意の自然数）個の前記ノードをチャネルでリング状に接続したリングを複数有し、
各リングに含まれるノードの数は等しく、
前記各リングの各ノードは、当該ノードを送信側とするチャネルで、当該ノードを含むリング以外の各リングのノードと、同じリングに含まれる各ノードが、当該ノードを送信側とするチャネルで、他のリングの異なるノードにそれぞれ接続されるように、接続されており、
前記各ノードは、
当該ノードの部分処理実行手段が前記部分処理において生成したデータと、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの前の順番のノードに接続したチャネルから受信した他の任意のノードの前記部分処理実行手段が前記部分処理において生成したデータとを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信するデータ送受動作を行うデータ転送手段を有し、
各ノードの前記データ転送手段のデータ送受動作によって、各ノードについて、当該ノードの部分処理実行手段が前記部分処理において生成したデータの他の全てのノードへのデータの転送が行われることを特徴とする分散処理システム。
【請求項４】
分散処理を行う分散処理システムであって、
一つの処理を分割した部分である部分処理を並行して各々実行する複数のノードを有し、
前記各ノードは、
前記部分処理を行う部分処理実行手段と、
検証データ送信手段と、
検証処理部とを有し、
前記各ノードの部分処理実行手段は、前記部分処理において、他の全てのノードに、当該部分処理において生成したデータを転送すると共に、他の全てのノードの各々から転送されたデータを用いた処理を行い、
前記各ノードの前記検証データ送信手段は、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータの値と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から受信したデータの値とに応じた値をとる検証データを作成して他の所定のノードに転送し、
前記各ノードの前記検証処理部は、前記検証データ送信手段において作成した検証データと、他のノードから転送された検証データの一致の有無を検出することを特徴とする分散処理システム。
【請求項５】
請求項４記載の分散処理システムであって、
ｎ（但し、ｎは２以上の任意の自然数）個の前記ノードをチャネルでリング状に接続したリングを複数有し、
各リングに含まれるノードの数は等しく、
前記各リングの各ノードは、当該ノードを送信側とするチャネルで、当該ノードを含むリング以外の各リングのノードと、同じリングに含まれる各ノードが、当該ノードを送信側とするチャネルで、他のリングの異なるノードにそれぞれ接続されるように、接続されており、
各ノードの前記検証データ送信手段は、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードを、前記作成した検証データを転送する前記他の所定のノードとして、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルを用いて、当該他の所定のノードに作成した検証データを送信することにより、当該他の所定のノードに作成した検証データを転送すると共に、
一つのリングにつき少なくとも一つのノードの前記検証データ送信手段は、さらに、当該ノードを送信側とするチャネルが接続する当該ノードが含まれるリング以外の他のリングのノードも、前記作成した検証データを転送する前記他の所定のノードとして、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルを用いて、当該他の所定のノードとした他のリングのノードに作成した検証データを送信することにより、当該他の所定のノードとした他のリングのノードに作成した検証データを転送することを特徴とする分散処理システム。
【請求項６】
請求項５記載の分散処理システムであって、
各ノードの前記検証データ送信手段は、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードと、当該ノードを送信側とするチャネルが接続する当該ノードが含まれるリング以外の他のリングのノードとを、前記作成した検証データを転送する前記他の所定のノードとして、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルを用いて、当該他の所定のノードに作成した検証データを送信することにより、当該他の所定のノードに作成した検証データを転送することを特徴とする分散処理システム。
【請求項７】
請求項５または６記載の分散処理システムであって、
前記各ノードは、
当該ノードの部分処理実行手段が前記部分処理において生成したデータと、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの前の順番のノードに接続したチャネルから受信した他の任意のノードの前記部分処理実行手段が前記部分処理において生成したデータとを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信するデータ送受動作を行うデータ転送手段を有し、
各ノードの前記データ転送手段のデータ送受動作によって、各ノードについて、当該ノードの部分処理実行手段が前記部分処理において生成したデータの他の全てのノードへのデータの転送が行われることを特徴とする分散処理システム。
【請求項８】
請求項１、２、３、４、５、６または７記載の分散処理システムであって、
前記各ノードの前記検証データ送信手段は、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータの値と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から転送されたデータの値との総和を、前記検証データとして作成することを特徴とする分散処理システム。
【請求項９】
請求項１、２、３、４、５、６、７または８記載の分散処理システムであって、
前記処理は、複数のフィールドより形成されるレコードを複数有するテーブルのレコードを特定のフィールドをキーとしてソートする処理であり、
各ノードの前記部分処理実行手段が実行する前記部分処理は、前記テーブルを分割した複数の部分テーブルのうちの当該ノードに割り当てられた部分テーブルのレコードを、前記特定のフィールドをキーとしてソートする処理であり、
前記各ノードの部分処理実行手段は、前記部分処理において、自ノードに割り当てられた部分テーブルの各レコードの、前記テーブル中の順番と当該レコードの前記特定のフィールドの値の識別番号とを含めて前記データを作成して、他の全てのノードに転送すると共に、当該データと他の全てのノードの各々から転送されたデータを用いて、自ノードに割り当てられた部分テーブルの各レコードのソート後の前記テーブル中の順番を算定し、
前記各ノードの前記検証データ送信手段は、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータに含まれる前記順番と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から転送されたデータに含まれる前記順番との総和と、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータに含まれる前記識別番号と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から転送されたデータに含まれる前記識別番号との総和とを前記検証データとして作成することを特徴とする分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードを備えた分散システムにおける分散処理の技術に関するものである。
【背景技術】
【０００２】
複数のノードを備えた分散システムにおける分散処理の技術としては、複数のレコードよりなるテーブルをレコード単位で分割して形成した複数の部分テーブルの各々を各ノードに割り当て、各ノードにおいて、テーブルに対する処理の、割り当てられた部分テーブルについての部分を行う技術が知られている（たとえば、特許文献１）。【０００３】
ここで、この技術では、テーブルに対する処理としてレコードのソートを行う場合に、各ノードは、ネットワークを介して、他の各ノードと、自ノードに割り当てられている部分テーブルの各レコードの元のテーブルにおける順番と値とのデータを交換して、自己に割り当てられている各レコードの、ソート後のテーブルにおける順番を算出している。
なお、この技術では、各ノードを双方向のチャネルでリング状に接続してリング型のネットワークを構成し、各ノードにおいてリングに沿ってデータを順次中継していくことにより、データ発信元のノードがリングに送出したデータを他の全てのノードに転送している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００５／０７３８８０号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のようなテーブルのレコードのソートのように、各ノードが他の各ノードとデータを交換しながら分散処理を行う場合、ノード間で正常にデータの転送が行われたかどうかを検証できることが望ましい。また、当該検証は、当該検証のための処理によってパフォーマンスが低化しないよう、できるだけ簡易な手続きによって行うことが望ましい。【０００６】
なお、これまでの多数のノード（コンピュータ）をつないだシステムでは、データの転送の正常性が保証された信頼性の高い通信を行うためには、送信側がデータ送出した後、何らかのタイミングで受信側から送信側に受信確認を送信することが必要であった。【０００７】
ここで、実質上の通信速度は、転送速度（スループット）と、確認応答（レイテンシ）の二つの要素で定まる。そして、スループットは容易に向上できるが、レイテンシの向上は難しく、実質的な通信性能の向上は滞っている。【０００８】
一方、データの転送の処理全体が正しく行われたかどうかを簡易な手続きによって検出することが可能になれば、個々のデータ転送についての確認応答（レイテンシ）を省くことが可能になる。そして、このことによる、実質的な通信性能の向上は大きく、その分、分散処理システムの性能が向上することになる。【０００９】
そこで、本発明は、複数のノードを備え、各ノードが他の各ノードとデータを交換しながら分散処理を行う分散システムにおいて、ノード間で正常にデータの転送が行われたかどうかの検証を簡易な手続きによって実現することを課題とする。
【課題を解決するための手段】
【００１０】
前記課題達成のために、本発明は、分散処理を行う分散処理システムを、一つの処理を分割した部分である部分処理を並行して各々実行する複数のノードと、検証部とを含めて構成したものである。ここで、前記各ノードには、前記部分処理を行う部分処理実行手段と、検証データ送信手段と備える。ここで、前記各ノードの部分処理実行手段は、前記部分処理において、他の全てのノードに、当該部分処理において生成したデータを転送すると共に、他の全てのノードの各々から転送されたデータを用いた処理を行うものである。また、前記各ノードの前記検証データ送信手段において、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータの値と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から受信したデータの値とに応じた値をとる検証データを作成して前記検証部に送信する。そして、前記検証部は、前記各ノードから受信した検証データの一致の有無を検出する。【００１１】
このような分散処理システムによれば、各ノードにおいて、自ノードで作成し他の各ノードに転送したデータの値と、全ての他の各ノードから転送されたデータの値とに応じた値をとる検証データを作成して検証部に送信し、検証部において、各ノードから受信した検証データの一致／不一致を検出するだけの簡易な手順によって、各ノード間でのデータの転送が正常に行われたかどうかを検証することができる。【００１２】
ここで、このような分散処理システムにおいて、前記検証部は、前記複数のノードのうちの一つのノードに配置するようにしてもよい。
また、以上の分散処理システムは、ｎ（但し、ｎは２以上の任意の自然数）個の前記ノードをチャネルでリング状に接続したリングを複数有し、各リングに含まれるノードの数は等しく、前記各リングの各ノードは、当該ノードを送信側とするチャネルで、当該ノードを含むリング以外の各リングのノードと、同じリングに含まれる各ノードが、当該ノードを送信側とするチャネルで、他のリングの異なるノードにそれぞれ接続されるように、接続されているものであってもよい。また、この場合には、前記各ノードは、当該ノードの部分処理実行手段が前記部分処理において生成したデータと、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの前の順番のノードに接続したチャネルから受信した他の任意のノードの前記部分処理実行手段が前記部分処理において生成したデータとを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信するデータ送受動作を行うデータ転送手段を備えたものとしてもよい。ここで、この場合、各ノードの前記データ転送手段のデータ送受動作によって、各ノードについて、当該ノードの部分処理実行手段が前記部分処理において生成したデータの他の全てのノードへのデータの転送が行われる。【００１３】
また、前記課題達成のために、本発明は、分散処理を行う分散処理システムを、一つの処理を分割した部分である部分処理を並行して各々実行する複数のノードを含めて構成し、前記各ノードに、前記部分処理を行う部分処理実行手段と、検証データ送信手段と、検証処理部とを設けたものである。ここで、前記各ノードの部分処理実行手段は、前記部分処理において、他の全てのノードに、当該部分処理において生成したデータを転送すると共に、他の全てのノードの各々から転送されたデータを用いた処理を行う。また、前記各ノードの前記検証データ送信手段は、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータの値と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から受信したデータの値とに応じた値をとる検証データを作成して他の所定のノードに転送する。そして、前記各ノードの前記検証処理部は、前記検証データ送信手段において作成した検証データと、他の各ノードから転送された検証データの一致の有無を検出する。【００１４】
このような分散処理システムによれば、ノードにおいて、部分処理において自ノードで作成し他の各ノードに転送したデータの値と、部分処理において全ての他の各ノードから転送されたデータの値とに応じた値をとる検証データを作成して他の所定のノードに転送すると共に、作成した検証データと、他のノードから転送された検証データの一致の有無を検出するだけの簡易な手順によって、各ノード間でのデータの転送が正常に行われたかどうかを検証することができる。【００１５】
ここで、このような分散処理システムは、ｎ（但し、ｎは２以上の任意の自然数）個の前記ノードをチャネルでリング状に接続したリングを複数有し、各リングに含まれるノードの数は等しく、前記各リングの各ノードは、当該ノードを送信側とするチャネルで、当該ノードを含むリング以外の各リングのノードと、同じリングに含まれる各ノードが、当該ノードを送信側とするチャネルで、他のリングの異なるノードにそれぞれ接続されるように、接続されているものであってもよい。【００１６】
また、この場合には、各ノードの前記検証データ送信手段は、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードを、前記作成した検証データを転送する前記他の所定のノードとして、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルを用いて、当該他の所定のノードに作成した検証データを送信することにより、当該他の所定のノードに作成した検証データを転送すると共に、一つのリングにつき少なくとも一つのノードの前記検証データ送信手段は、さらに、当該ノードを送信側とするチャネルが接続する当該ノードが含まれるリング以外の他のリングのノードも、前記作成した検証データを転送する前記他の所定のノードとして、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルを用いて、当該他の所定のノードとした他のリングのノードに作成した検証データを送信することにより、当該他の所定のノードとした他のリングのノードに作成した検証データを転送するものとしてもよい。【００１７】
または、この場合には、各ノードの前記検証データ送信手段は、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードと、当該ノードを送信側とするチャネルが接続する当該ノードが含まれるリング以外の他のリングのノードを、前記作成した検証データを転送する前記他の所定のノードとして、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルを用いて、当該他の所定のノードに作成した検証データを送信することにより、当該他の所定のノードに作成した検証データを転送するものとしてもよい。【００１８】
また、この場合には、さらに、前記各ノードを、当該ノードの部分処理実行手段が前記部分処理において生成したデータと、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの前の順番のノードに接続したチャネルから受信した他の任意のノードの前記部分処理実行手段が前記部分処理において生成したデータとを、当該ノードが含まれるリングの当該リングにおける接続上の順番が当該ノードの次の順番のノードに接続するチャネルと、当該ノードを送信側とするチャネルであって当該ノードが含まれるリング以外の他のリングのノードに接続するチャネルに送信するデータ送受動作を行うデータ転送手段を備えたものとしてもよい。ここで、この各ノードの前記データ転送手段のデータ送受動作によって、各ノードについて、当該ノードの部分処理実行手段が前記部分処理において生成したデータの他の全てのノードへのデータの転送が行われることとなる。【００１９】
ここで、以上のような分散処理システムは、前記各ノードの前記検証データ送信手段は、当該ノードの前記部分処理実行手段において、前記部分処理において生成したデータの値と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から転送されたデータの値との総和を、検証データとして作成するように構成してもよい。【００２０】
また、以上の分散処理システムにおいて、前記処理を、複数のフィールドより形成されるレコードを複数有するテーブルのレコードを特定のフィールドをキーとしてソートする処理とし、各ノードの前記部分処理実行手段が実行する前記部分処理は、前記テーブルを分割した複数の部分テーブルのうちの当該ノードに割り当てられた部分テーブルのレコードを、前記特定のフィールドをキーとしてソートする処理としてもよい。この場合、前記各ノードの部分処理実行手段は、前記部分処理において、自ノードに割り当てられた部分テーブルの各レコードの、前記テーブル中の順番と当該レコードの前記特定のフィールドの値の識別番号とを含めて前記データを作成して、他の全てのノードに転送すると共に、当該データと他の全てのノードの各々から転送されたデータを用いて、自ノードに割り当てられた部分テーブルの各レコードのソート後の前記テーブル中の順番を算定し、前記各ノードの前記検証データ送信手段は、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータに含まれる前記順番と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から転送されたデータに含まれる前記順番との総和と、当該ノードの前記部分処理実行手段が、前記部分処理において生成したデータに含まれる前記識別番号と、当該ノードの前記部分処理実行手段が、前記部分処理において前記他の全てのノードの各々から転送されたデータに含まれる前記識別番号との総和とを前記検証データとして作成するようにしてもよい。
【発明の効果】
【００２１】
以上のように、本発明によれば、複数のノードを備え、各ノードが他の各ノードとデータを交換しながら分散処理を行う分散システムにおいて、ノード間で正常にデータの転送が行われたかどうかの検証を簡易な手続きによって行うことができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係る分散システムを示す図である。
【図２】本発明の実施形態に係るノードの構成を示すブロック図である。
【図３】本発明の実施形態に係る転送制御装置の構成を示すブロック図である。
【図４】本発明の実施形態に係る分散システムのデータ転送のようすを示す図である。
【図５】本発明の実施形態に係るソート処理の手順を示す図である。
【図６】本発明の実施形態に係るソート処理の手順を示す図である。
【図７】本発明の実施形態に係るソート処理の手順を示す図である。
【図８】本発明の実施形態に係るソート処理の手順を示す図である。
【図９】本発明の実施形態に係るソート処理の手順を示す図である。
【図１０】本発明の第実施形態に係るソート制御処理を示すフローチャートである。
【図１１】本発明の第実施形態に係る検証動作の他の例を示す図である。
【発明を実施するための形態】
【００２３】
以下、本発明に係る分散システムの実施形態について説明する。
図１に、本実施形態に係る分散システムの構成を示す。
図示するように、分散システムは、一つのコントローラ（ＣＯＮＴ)と、複数のリング （Ｒi）を有し、各リングiは、それぞれ同数のノード（Ｎij）を含んでいる。なお、Ｒi は、i 番目のリングを表しており、Ｎijは、i番目のリングのｊ番目のノードを表している。
【００２４】
ここで、図１ａは、リング数が２、リング内のノード数が３の場合を示しており、図１ｂは、リング数が３、リング内のノード数が４の場合を示している。
そして、図示するように、各リング中において、当該リングに含まれる各ノードをチャネルでリング状に順次接続したリング型のネットワークが形成されている。
また、i番目のリングのｊ番目のノードは、i番目のリング以外の各リングのｊ番目のノードとそれぞれ双方向のチャネルで接続されている。
一方、コントローラ（ＣＯＮＴ)は、各リング （Ｒi）の各ノード（Ｎij）と直接接続されている。
コントローラ（ＣＯＮＴ)と各ノード（Ｎij）との接続は、ノード（Ｎij）毎に設けたチャネルで、ノード（Ｎij）とコントローラ（ＣＯＮＴ)とをそれぞれ接続するようにしてもよいし、バス型のチャネルでコントローラ（ＣＯＮＴ)と各ノード（Ｎij）を接続するようにしてもよい。
【００２５】
次に、図２に各ノードの構成を示す。
図示するように、ノードは、ストレージ１とプロセッサ２を備えており、プロセッサ２はストレージ１を用いて他のノードとは独立にデータ処理を行うことができる。
また、ノードは、他のノードとの間のデータ転送のために、転送制御装置３と、当該ノードに接続しているチャネルを用いたデータ伝送を行う、チャネル毎に設けられたチャネルインタフェース４とを備えている。ただし、転送制御装置３は、プロセッサ２がソフトウエアの実行による実現する機能として、ノードに備えるようにしてもよい。
【００２６】
ここで、転送制御装置３は、当該ノードに接続している各チャネルとプロセッサ２との各々間のデータの中継を制御する。
そして、転送制御装置３は、図３に示すように、受信バッファ３１、送信バッファ３２、重複転送抑止部ＣＨＫ３２を備えている。
そして、受信バッファ３１は、プロセッサ２が他のノードに送信するデータを格納するバッファＰ（ｒ）、自ノードと同じリングに含まれている当該リング上の順番が一つ前のノードからチャネルインタフェース４が受信したデータが格納されるバッファＲＳ（ｒ）を備えている。
【００２７】
ここで、リング上の順番とは、リングに沿ってチャネルのデータの転送方向に進んだときに通るノードの順番である。
また、受信バッファ３１は、自ノードが含まれるリングと異なる他のリングのリング中の順番が同じノードからチャネルインタフェース４が受信したデータが格納される、当該他のリングの数と同数のバッファＲi（ｒ）を備えている。
【００２８】
また、送信バッファ３２は、プロセッサ２に送信するデータが格納されるバッファＰ（ｓ）、自ノードと同じリングに含まれている当該リング上の順番が一つ後のノードにチャネルインタフェース４を介して送信するデータを格納するバッファＲＳ（ｓ）を備えている。また、送信バッファ３２は、自ノードが含まれるリングと異なる他のリングのリング中の順番が同じノードにチャネルインタフェース４を介して送信するデータを格納する、当該他のリングの数と同数のバッファＲi（ｓ）を備えている。
【００２９】
そして、転送制御装置３は、バッファ間の転送を次のように行う。
すなわち、受信バッファ３１のバッファＰ（ｒ）にプロセッサ２によって格納されたデータは、送信バッファ３２のバッファＲＳ（ｓ）と各バッファＲi（ｓ）に転送し、自ノードと同じリングに含まれている当該リング上の順番が一つ後のノードと、自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードの各々に送信する。
【００３０】
また、自ノードと同じリングに含まれている当該リング上の順番が一つ前のノードから受信し、受信バッファ３１のバッファＲＳ（ｒ）に格納されたデータは、重複転送抑止部ＣＨＫ３２に転送する。重複転送抑止部ＣＨＫ３２は、自ノードのプロセッサ２が発信元のデータであるかどうかを調べ、同じデータでない場合のみ、当該データを出力し、自ノードのプロセッサ２が発信元のデータであれば当該データを破棄する。
【００３１】
そして、重複転送抑止部ＣＨＫ３２から出力されたデータは、送信バッファ３２の送信バッファ３２のバッファＰ（ｓ）とバッファＲＳ（ｓ）と各バッファＲi（ｓ）に転送され、当該データを、プロセッサ２と、自ノードと同じリングに含まれている当該リング上の順番が一つ後のノードと、自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードの各々に送信される。
【００３２】
また、自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードの各々から受信し各Ｒi（ｒ）に格納されたデータは、送信バッファ３２のバッファＰ（ｓ）に転送し、プロセッサ２に送信する。
【００３３】
さて、プロセッサ２は、このようにして転送制御装置３から送信されたデータ、すなわち、自ノードと同じリングに含まれている当該リング上の順番が一つ前のノードから受信したデータのうちの当該プロセッサ２が発信元でないデータと、当該ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードの各々から受信したデータを受信し、その処理を行う。
【００３４】
以下、このような転送制御装置３の動作によって実現されるノード間のデータ転送動作について、リング数が２、リング内のノード数が３の分散システムを例にとり説明する。
いま、図４ａに示すようにリングＲ１のノードＮ１１のプロセッサ２から発信されたデータは、図示するように、ノードＮ１１からノードＮ１２とノードＮ２１に転送され、ノードＮ１２とノードノードＮ２１のプロセッサ２に送られる。また、ノードＮ１２に送られたデータは、ノードＮ１２によって、ノードＮ１３とノードＮ２２に中継され、ノードＮ１３とノードＮ２２のプロセッサ２に送られる。また、ノードＮ１３に送られたデータは、ノードＮ１３によって、ノードＮ２３に中継され、ノードＮ２３のプロセッサ２に送られる。
結果、リングＲ１のノードＮ１１のプロセッサ２が発信したデータは、順次ノードを一つずつ上述のように伝搬し、自ノード以外の全てのノードのプロセッサ２に転送される。
【００３５】
同様に、図４ｂに示すように、リングＲ１のノードＮ１２のプロセッサ２から発信されたデータは、図示するように、ノードＮ１２からノードＮ１３とノードＮ２２に転送され、ノードＮ１３とノードノードＮ２２のプロセッサ２に送られる。また、ノードＮ１３に送られたデータは、ノードＮ１３によってノードＮ１１とノードＮ２３に中継され、ノードＮ１１とノードＮ２３のプロセッサ２に送られる。また、ノードＮ１１に送られたデータは、ノードＮ１１によって、ノードＮ２１に中継され、ノードＮ２１のプロセッサ２に送られる。
結果、リングＲ１のノードＮ１２のプロセッサ２が発信したデータは、順次ノードを一つずつ上述のように伝搬し、自ノード以外の全てのノードのプロセッサ２に転送される。
【００３６】
以下、同様に、任意のリングの任意のノードのプロセッサ２が発信したデータは、自ノード以外の全てのノードのプロセッサ２に転送される。
したがって、各リングの各ノード（Ｎij）のプロセッサ２が、それぞれ、データを送信すると、各リングの各ノードのプロセッサ２には、他の全てのノードのプロセッサ２が送信したデータの全てが転送されることになる。
【００３７】
なお、以上では、他のノードとの間のデータ転送に関する転送制御装置３の構成、動作について説明したが、転送制御装置３は、この他に、コントローラ（ＣＯＮＴ)とデータを送受するための構成を備えており、プロセッサ２とコントローラ（ＣＯＮＴ)との間でデータを転送する動作も行う。
【００３８】
以下、このような分散処理システムにおいて行う、RDB（Relational Database）のテーブルのソート処理について説明する。
ここで、ソート処理とは、図５ａに示すような複数のフィールド（図では、GenderとAgeとHeightとWeight）を持つレコードを行とするテーブルのレコードを、キーとしたフィールドの値の順に並び替える処理である。
【００３９】
ここで、このテーブルの各レコードにはテーブル中の当該レコードの（図では、0から9の）順番を示すグローバル順番値GOrdが付与されている。また、図５ｂに示すように、各フィールド毎に、当該フィールドに出現する各値に、値を昇順にソートした順番を表すグローバル値順番値GVOrdが付与されている。
【００４０】
さて、ソート処理では、テーブルを複数のレコードを単位として複数の部分テーブルに分割し、各部分テーブルを異なるノードに割り当て、各ノードに、割り当てた部分テーブルについてのソートを行う処理である部分ソート処理を行わせることにより、ソート処理を分散処理する。
【００４１】
以下では、一例として、図５ａに示すように、テーブルを、PMM-0、PMM-1、PMM-2、PMM-3の４つの部分テーブルに分割し、ノード＃０、ノード＃１、ノード＃２、ノード＃３の、４つのノードにそれぞれ割り当てて、ソート処理を行う場合について説明する。
【００４２】
この場合、各ノードのストレージ１には、図６ａに示す当該ノードに割り当てられた部分テーブルを表すデータとして、図６ｂに示す部分テーブルデータが格納されている。
そして、各部分テーブルデータは、順番値対応リストOrdCLとインデックスセットより構成される。
順番値対応リストOrdCLは、部分テーブルデータが表す部分テーブルの各レコードについて、レコードのグローバル順番値GOrdと、レコードの部分テーブル内での順番を表す部分テーブル内順番値Ordを、部分テーブル内のレコードの順番に従った順番で配列したリストである。
【００４３】
次に、インデックスセットは、テーブルのレコードのフィールド毎に対応して設けられたインデックスより構成される。
そして、各インデックスは、VNoL、VL、GVordLよりなる。
VLは、部分テーブルデータが表す部分テーブルの対応するフィールドに出現する値を昇順にソートして各エントリに登録したリストである。
また、GVordLは、VLに登録された値のグローバル値順番値GVOrdを、当該値が登録されているVLのエントリと同じ順位のエントリに登録したリストである。
次に、VNoLは、部分テーブルデータが表す部分テーブルのレコード数と同数のエントリよりなるリストであり、VNoLのn番目のエントリには、対応する部分テーブルのレコード番号nのレコードの対応するフィールドの値が登録されているVLのエントリのVL中の順位を示す値が登録される。
【００４４】
さて、このようなインデックスによれば、部分テーブルデータが表す部分テーブルの部分テーブル内順番値Ordより、そのレコードの対応するフィールドの値を、Ordと同じ順位のVNoLのエントリが示す順位のVLのエントリの値として求めることができる。また、その値の、グローバル値順番値GVordを、Ordと同じ順位のGVordLのエントリの値として求めることができる。
【００４５】
したがって、テーブルのレコードのフィールド毎に対応して設けられたインデックスよりなるインデックスセットによれば、部分テーブルの各レコードの各フィールドの値と、レコードの各フィールドの値のグローバル値順番値GVordを求めることができる。また、OrdCLより、部分テーブルの各レコードのグローバル順番値GOrdを求めることができる。
【００４６】
次に、各ノードにおいて行う、当該ノードに割り当てられた部分テーブルについてのソートを行う部分ソート処理について説明する。
ここでは、一例として、フィールド“Age”をキーに昇順のソート処理を行う場合について説明する。
この場合、各ノードでは、フィールド“Age”のインデックスと、順番値対応リストOrdCLを用いて、ワーキングリストWLを作成する。
図７に示すように、ワーキングリストWLは、部分テーブルの各レコードのフィールド“Age”の値のグローバル値順番値GVordと、当該レコードのグローバル順番値Gordと、当該レコードの部分テーブル内順番値Ordのセットを、グローバル値順番値GVordの昇順、すなわち、フィールド“Age”の値の昇順に登録したリストである。ここで、以下では、便宜上、ワーキングリストWLに登録したソート前の、グローバル順番値Gordと、部分テーブル内順番値Ordを、ダッシュを付与して、Gord'、Ord'として示す。
【００４７】
そして、ワーキングリストWLに登録した（GVord、Gord'）の各セットの各々をデータとするデータグループDG#nを作成する。ここで、DG#nは、ノード#nで作成されたデータグループであることを表す。
【００４８】
そして、作成したデータグループのデータを、上述のように、転送制御装置３を介して、自ノード以外の他の全てのノードのプロセッサ２に転送する。
次に、各ノードは、自ノードで作成したデータグループDGと、他のノードから受信した各データグループDGについてカウント処理を行う。
ここで、この各ノードが行うカウント処理をノード＃１が行うカウント処理を例にとり説明する。
まず、データグループDG#1に含まれるデータ（GVord、Gord'）の値の大小は、GVordが大きいほど大きく、GVordが等しい場合には、Gord'が大きいほど大きいものとする。
そして、ノード＃１では、図８ａに示すように、自ノード＃１で作成したデータグループDG#1に含まれるデータ（０、３）のみを含む値の範囲と、（５、４）のみを含む値の範囲とに各々対応するエントリと、DG#1に含まれるデータ（０、３）のみを含む値の範囲と、（５、４）のみを含む値の範囲で区切られる値の範囲、すなわち、範囲“（０、３）未満”、範囲“（０、３）超（５、４）未満”、範囲“（５、４）超”の各々に対応するエントリを、対応する値の範囲の小さい順に配列したカウントリストCNT#1を作成する。
【００４９】
そして、カウントリストCNT#1の各エントリに、当該エントリに対応する値の範囲内の値を持つ、データグループDG#1内のデータの数を登録する。
また、図８ｂ１、ｂ２、ｂ３に示すように、ノード＃１は、他のノード＃０、＃２、＃３から受信した各データグループDG#0、DG#2、DG#3についても同様の処理を行う。
すなわち、他のノード#nからDG#nを受信したならば、自ノード＃１で作成したデータグループDG#1に含まれるデータ（０、３）のみを含む値の範囲、（５、４）のみを含む値の範囲に各々対応するエントリと、範囲“（０、３）未満”、範囲“（０、３）超（５、４）未満”、範囲“（５、４）超”の各々に対応するエントリを、対応する値の範囲の小さい順に配列したカウントリストCNT#nを作成する。
【００５０】
そして、カウントリストCNT#nの各エントリに、当該エントリに対応する値の範囲内の値を持つ、データグループDG#n内のデータの数を登録する。
なお、自ノードで作成したデータグループには、当該データグループに含まれるデータ以外のデータは含まれないので、自ノードで作成したデータグループDGについて作成するカウントリストには、自ノードで作成したデータグループDGに含まれるデータのみを含む値の範囲に対応するエントリ以外のエントリは、実際には作成しなくてもよい。また、他のノードから受信したデータグループDGには、自ノードで作成したデータグループDGに含まれるデータと同じデータは含まれていないので、他のノードから受信したデータグループDGについて作成するカウントリストには、自ノードで作成したデータグループDGに含まれるデータのみを含む値の範囲に対応するエントリは実際には作成しなくてもよい。
【００５１】
そして、他の全てのノードからデータグループDG#nを受信終え、自ノードで作成したデータグループDG#1、及び、他の全てのノードから受信した各データグループDG#0、DG#2、DG#3について以上のカウント処理が終了し、カウントリストCNT#1、CNT#0、CNT#2、CNT#3を作成したならば、次に、図８ｃに示すように、各値の範囲に対応するエントリ毎に、各カウントリストCNT#1、CNT#0、CNT#2、CNT#3の値の総和を求め、総和リストSUMCNTに登録する。すなわち、総和リストSUMCNTは、自ノード＃１で作成したデータグループDG#1に含まれるデータ（０、３）のみを含む値の範囲と、（５、４）のみを含む値の範囲とに各々対応するエントリと、範囲“（０、３）未満”、範囲“（０、３）超（５、４）未満”、範囲“（５、４）超”の各々に対応するエントリを、対応する値の範囲の小さい順に配列したリストであり、総和リストSUMCNTの各エントリには、そのエントリが対応する範囲と同じ範囲に対応する、カウントリストCNT#1、CNT#0、CNT#2、CNT#3のエントリに登録されている値の総和が登録される。
【００５２】
そして、次に、図８ｄに示すように、総和リストSUMCNT の各エントリの値を、当該エントリと当該エントリより小さい値の範囲に対応する各エントリとに登録されている値の和に置換した積算リストCUMを作成する。
【００５３】
そして、図８ｅに示すように、ワーキングリストWLに登録されているGVord、Gord'、ord'の各セットのGord'を、当該セットの（GVord、Gord'）の値のみを含む範囲に対応する、積算リストCUMのエントリに登録されている値から１差し引いた値に置換する。
【００５４】
なお、ここで、１差し引くのは、GOrdを０から開始する値としているため、k番目のレコードのGOrdがk-１となるためである。
そして、図８ｆに示すように、部分テーブルデータの順番値対応リストOrdCLをクリアし、ワーキングリストWLの各順位のエントリに登録されているGord'の値を、当該エントリと同じ順位の順番値対応リストOrdCLのGordのエントリに登録し、ワーキングリストWLの各順位のエントリに登録されているord'の値を、当該エントリと同じ順位の順番値対応リストOrdCLのordのエントリに登録する。
【００５５】
さて、以上の処理を各ノードが行うことにより、各ノードの部分テーブルデータは、図９ｂに示すように更新される。
すなわち、図９ｂに示すように、各部分テーブルデータにおいて順番値対応リストOrdCLが更新され、部分テーブルの各レコードに対応するテーブルのレコードのグローバル順番値GOrdは、図９ａに示すフィールド“Age”をキーとしてレコードを昇順にソートしたテーブルにおける順番に一致するように振り直される。また、各部分テーブルデータにおいて、順番値対応リストOrdCLにおけるグローバル順番値GOrdと部分テーブル内順番値Ordの対応の登録順もグローバル順番値GOrdの順に更新される。したがって、各部分テーブルデータの集合は、全体として図９ａに示すフィールド“Age”をキーとしてレコードを昇順にソートしたテーブルを表すものとなる。
【００５６】
さて、各ノードは、以上のようにして順番値対応リストOrdCLを更新したならば、ノード＃１について図８ｇに示すように、自ノードで作成したデータグループDGに含まれるデータと、他の各ノードから受信したデータグループDGに含まれるデータとより検証データを作成し、コントローラ（ＣＯＮＴ)に送信し、部分ソート処理を終了する。
【００５７】
ここで、検証データは、自ノードで作成したデータグループDGに含まれるデータと、他の各ノードから受信したデータグループDGに含まれるデータのGVordの総和と、Gord'の総和を算出し、算出したGVord、Gord'の総和（ΣGVord、ΣGord'）を検証データとすることにより作成する。
【００５８】
すなわち、ノード＃１であれば、図８に示したように、自ノードで作成したデータグループDG#1に含まれるデータ（GVord、Gord'）は、(0,3)と(5,4)、ノード＃０から受信したデータグループDG#0に含まれるデータ（GVord、Gord'）は、(1,0)と(3,1)と(4.2)、ノード＃２から受信したデータグループDG#0に含まれるデータ（GVord、Gord'）は、(0,6)と(2,5)と(6.7)、ノード＃３から受信したデータグループDG#0に含まれるデータ（GVord、Gord'）は、(1,9)と(4,8)となるので、（ΣGVord、ΣGord'）＝（0+5+1+3+4+0+2+6+1+4、3+4+0+1+2+6+5+7+9+8）＝（26、45）を検証データとする。
【００５９】
さて、ここで、各ノードにおいて、このようにして作成される検証データは、全てのノードの各々で作成されたデータグループDGに含まれるデータ（GVord、Gord'）の要素GVord、Gord'毎の総和（ΣGVord、ΣGord'）であるので、各ノードのデータグループDGの転送が各ノード間で正常に行われた場合は全て同じ値となる。
【００６０】
以上、分散処理システムにおいて行うソート処理について説明した。
以下、以上のようなソート処理の実行を制御するコントローラ（ＣＯＮＴ)の動作について説明する。
図１０に、コントローラ（ＣＯＮＴ)が行うソート実行制御処理の手順を示す。
図示するように、分散処理システムにおいてソート処理を実行する場合、コントローラ（ＣＯＮＴ)は上述した部分ソート処理の実行要求を、ソートのキーとするフィールドの指定やソートの方向（昇順、降順）の指定を含めて各ノードに発行する（ステップ１００２）。
【００６１】
部分ソート処理の実行要求を受けた各ノードのプロセッサ２は、上述した部分ソート処理を、指定されたフィールドをソートのキーとして、指定された方向をソート方向として実行してテーブルのソートを行うと共に、検証データをコントローラ（ＣＯＮＴ)に送信する。
【００６２】
そして、コントローラ（ＣＯＮＴ)は、ノードからの検証データの受信を待ち（ステップ１００４）、検証データを受信したならば、受信した検証データは、先行して他のノードから受信した検証データと不一致であるかどうかを調べる（ステップ１００６）。
【００６３】
ただし、ステップ１００６では、ノードから最初に受信した検証データについては、先行して他のノードから受信した検証データと不一致でないと判定する。
ここで、上述のように各ノードから受信する検証データは、各ノードのデータグループDGの転送が各ノード間で正常に行われた場合は一致している。よって、ステップ１００６で、検証データの不一致を検出することにより、各ノードのデータグループDGの各ノード間の転送に発生したエラーを検出することができる。
【００６４】
そして、不一致でなければ、全てのノードから検証データを受信したかどうかを調べ（ステップ１００８）、全てのノードから検証データを受信していなければ、ステップ１００４に戻って、次の検証データの受信を待つ。
【００６５】
また、全てのノードから検証データを受信している場合には（ステップ１００８）、ソート実行制御処理を終了する。
一方、ステップ１００６において、受信した検証データが先行して他のノードから受信した検証データと不一致であると判定された場合には、ソート処理が失敗したものと認識し、オペレータに対するエラー通知、ソート処理実行開始前への状態の復帰制御、ソート処理の再実行などの所定の対エラー処理を実行し（ステップ１０１０）、ソート実行制御処理を終了する。
【００６６】
以上、本発明の実施形態について説明した。
以上のように、本実施形態によれば、各ノードにおいて、自ノードで作成し他の各ノードに転送したデータと、他の各ノードから転送されたデータとのデータ要素（GVordとGord'）毎の総和を検証データとして生成してコントローラ（ＣＯＮＴ)に送信し、コントローラ（ＣＯＮＴ)において、各ノードから受信した検証データの一致／不一致を検出するだけの簡易な手順によって、各ノード間でのデータの転送が正常に行われたかどうかを検証することができる。
【００６７】
ところで、以上の実施形態では、各ノードにおいて、自ノードで作成したデータグループDGに含まれるデータと他の各ノードから受信したデータグループDGに含まれるデータのGVordの総和と、Gord'の総和（ΣGVord、ΣGord'）を検証データとしたが、自ノードで作成したデータグループDGに含まれるデータと他の各ノードから受信したデータグループDGに含まれるデータの値に依存して異なる値をとるものであれば、検証データとしては他の値を用いるようにしてよい。
【００６８】
すなわち、たとえば、コントローラ（ＣＯＮＴ)において、より簡易的に検証したい場合には、GVordの総和と、Gord'の総和の和ΣGVord+ΣGord'を検証データとしたり、Gord' の総和とGVordの総和との差ΣGord'-ΣGVordを検証データとするようにしてもよい。
【００６９】
また、以上では、テーブルのソート処理を分散処理で行う場合について示したが、以上の実施形態で示した、各ノードにおいて、他の各ノードから受信したデータの値に依存して異なる値をとる検証データを作成してコントローラ（ＣＯＮＴ)に送信し、コントローラ（ＣＯＮＴ)において各ノードから受信した検証データの一致／不一致から各ノード間でのデータの転送が正常に行われたかどうかを検証する技術は、任意の処理を各ノードでデータを交換しながら分散処理する場合について同様に適用することができる。
【００７０】
なお、以上の実施形態は、リング中のノード（Ｎij）を、コントローラ（ＣＯＮＴ)としても機能させるように構成してもよい。
また、以上の実施形態では、各ノード（Ｎij）が検証データをコントローラ（ＣＯＮＴ)に送信し、コントローラ（ＣＯＮＴ)において各ノードから受信した検証データの一致／不一致から各ノード間でのデータの転送が正常に行われたかどうかを検証するようにしたが、当該検証はノード（Ｎij）において行うようにしてもよい。
【００７１】
すなわち、この場合には、各ノード（Ｎij）のプロセッサ２は、部分ソート処理において検証データを作成したならば、転送制御装置３を介して、作成した検証データ（Ｃｍｎ）を、自ノードと同じリングに含まれている当該リング上の順番が一つ後のノードと、自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードの各々に送信する。
【００７２】
すなわち、図１１ａに示したリング数が３、リング内のノード数が４の分散処理システムの場合であれば、たとえば、ノードＮ12は、ノードＮ13とノードＮ22とノードＮ32に、ノードＮ12で作成した検証データＣ12を転送し、ノードＮ23は、ノードＮ24とノードＮ13とノードＮ33に、ノードＮ13で作成した検証データＣ23を転送する。
【００７３】
また、各ノード（Ｎij）の転送制御装置３において、他のノードから受信した検証データを、自ノードのプロセッサ２にのみ転送し、他のノードには転送しないようにする。これは、たとえば、検証データに検証データであることを表す識別子を付加して送信し、各ノードの転送制御装置３において、バッファＲＳ（ｒ）やバッファＲi（ｒ）に格納された、検証データであることを表す識別子が付加されているデータは、バッファＰ（ｓ）にのみ転送し、バッファＲＳ（ｓ）やバッファＲi（ｓ）には転送しないように転送制御装置３を構成すること等により実現できる。
【００７４】
そして、各ノード（Ｎij）のプロセッサ２において、自ノードの部分ソート処理において作成した検証データと、他のノードから受信した検証データの一致／不一致を検出し、不一致を検出したならば、コントローラ（ＣＯＮＴ)にエラー発生を通知する検証処理を行うようにする。
【００７５】
すなわち、図１１ａに示したリング数が３、リング内のノード数が４の分散処理システムの場合であれば、たとえば、ノードＮ12は、ノードＮ11から検証データＣ11が転送されたならば、ノードＮ12で作成した検証データＣ12と転送された検証データＣ11との一致／不一致を検出し、不一致を検出したならば、コントローラ（ＣＯＮＴ)にエラー発生を通知する。また、ノードＮ12は、ノードＮ22から検証データＣ22が転送されたならば、ノードＮ12で作成した検証データＣ12と転送された検証データＣ22との一致／不一致を検出し、不一致を検出したならば、コントローラ（ＣＯＮＴ)にエラー発生を通知する。また、ノードＮ12は、ノードＮ32から検証データＣ32が転送されたならば、ノードＮ12で作成した検証データＣ12と転送された検証データＣ32との一致／不一致を検出し、不一致を検出したならば、コントローラ（ＣＯＮＴ)にエラー発生を通知する。
【００７６】
また、同様に、ノードＮ23は、ノードＮ22から検証データＣ22が転送されたならば、ノードＮ23で作成した検証データＣ23と転送された検証データＣ22との一致／不一致を検出し、不一致を検出したならば、コントローラ（ＣＯＮＴ)にエラー発生を通知する。また、ノードＮ23は、ノードＮ13から検証データＣ13が転送されたならば、ノードＮ23で作成した検証データＣ23と転送された検証データＣ13との一致／不一致を検出し、不一致を検出したならば、コントローラ（ＣＯＮＴ)にエラー発生を通知する。また、ノードＮ23は、ノードＮ33から検証データＣ33が転送されたならば、ノードＮ23で作成した検証データＣ23と転送された検証データＣ33との一致／不一致を検出し、不一致を検出したならば、コントローラ（ＣＯＮＴ)にエラー発生を通知する。
【００７７】
このように、各ノードにおいて検証処理を行うことにより、各ノードで作成された検証データが一つでも一致していない場合には、必ずコントローラ（ＣＯＮＴ)に、いずれかのノードからエラー発生が通知されるようになる。
【００７８】
なお、以上では、各ノード（Ｎij）において、作成した検証データ（Ｃｍｎ）を、図１１ａに示すように、自ノードと同じリングに含まれている当該リング上の順番が一つ後のノードと、自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードの各々に送信するようにしたが、作成した検証データの自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードへの転送は、たとえば、図１１ｂに示すように、一つのリングにつき、一つのノードが行うようにしてもよい。このようにしても、各ノードで作成された検証データが一つでも一致していない場合には、必ずコントローラ（ＣＯＮＴ)に、いずれかのノードからエラー発生が通知されるようになる。なお、この、作成した検証データの自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードへの転送を行う一つのリングにつき一つのノードは、任意のノードであってよい。また、一つのリングにつき任意の複数のノードが、作成した検証データの自ノードが含まれるリングと異なる他の各リングのリング中の順番が同じノードへの転送を行うようにしてもよい。
【００７９】
そして、コントローラ（ＣＯＮＴ)において、いずれかのノードからエラー発生を通知されたならば、ソート処理が失敗したものと認識し、オペレータに対するエラー通知、ソート処理実行開始前への状態の復帰制御、ソート処理の再実行などの所定の対エラー処理を実行するようにする。
【００８０】
このようにすることにより、検証データの検証処理の負荷を各ノードに分散し、コントローラ（ＣＯＮＴ)への負荷の集中を軽減することができる。
【符号の説明】
【００８１】
１…ストレージ、２…プロセッサ、３…転送制御装置、４…チャネルインタフェース、３１…受信バッファ、３２…送信バッファ、３２…重複転送抑止部ＣＨＫ。
【図１】
2019003275.tif 000003
【図２】
2019003275.tif 000004
【図３】
2019003275.tif 000005
【図４】
2019003275.tif 000006
【図５】
2019003275.tif 000007
【図６】
2019003275.tif 000008
【図７】
2019003275.tif 000009
【図８】
2019003275.tif 000010
【図９】
2019003275.tif 000011
【図１０】
2019003275.tif 000012
【図１１】
2019003275.tif 000013
【国際調査報告】
2019003275.tif 000014
2019003275.tif 000015
2019003275.tif 000016