"データ格納部を備えたストレージと、結合則を満たし、かつ加算に関して可換で、減算が定義可能な演算を適用して計算される誤り検出符号を計算する計算手段と、複数の前記誤り検出符号を合算する合算手段と、を備え、前記データ格納部に格納されたデータの変更時、前記計算手段は、変更対象の部分データに対して前記誤り検出符号を計算し、前記合算手段は、前記計算手段で計算された前記部分データの前記誤り検出符号と、変更前のデータの誤り検出符号であって既に計算又は合算され前記データ格納部に格納されている誤り検出符号とを合算し、前記合算した値を、前記変更後のデータの誤り検出符号として、前記データ格納部に格納する、ことを特徴とするストレージシステム。前記データの変更は、データの追加、挿入、削除、更新を含む、ことを特徴とする請求項1記載のストレージシステム。前記誤り検出符号の計算対象のデータから、物理的な構造に依存する情報を除く正規化手段を備え、前記計算手段は、前記誤り検出符号の計算対象のデータから前記正規化手段で物理的な構造に依存する情報が除かれた状態のデータの誤り検出符号を計算する、こと特徴とする請求項1又は2記載のストレージシステム。ストレージノードを複数備え、データを1つの前記ストレージノードに格納する場合、前記データのコピーであるレプリカを物理的に異なる形式で他の1つ又は複数の前記ストレージノードに格納するストレージシステムであって、前記ストレージノードが、請求項1乃至3のいずれか1項に記載のストレージシステムを備えている、こと特徴とするストレージシステム。ストレージノードを複数備え、データを1つの前記ストレージノードに格納する場合、前記データのコピーであるレプリカを物理的に異なる形式で他の1つ又は複数の前記ストレージノードに格納するストレージシステムであって、前記ストレージノードが、データの格納時、前記データに対して誤り検出符号を計算し、データ格納部に格納する誤り検出符号付加手段と、データ読み出し時、読み出した前記データの誤り検出符号を計算し、前記データに対応する誤り検出符号を前記データ格納部から読み出して前記計算した誤り検出符号と照合することで前記データにおける破損の有無を確認する誤り検出符号確認手段と、を備え、前記誤り検出符号付加手段は、請求項1又は2記載の前記計算手段と前記合算手段とを少なくとも備え、さらに、1つ又は複数の前記ストレージノードに対して、データの構造を変換するデータ構造変換手段と、前記ストレージノードへのデータの格納時に、前記データの誤り検出符号を付加する誤り検出符号付加手段と、前記ストレージノードからのデータの読み出し時に、データの誤りの有無を検出する誤り検出符号確認手段と、前記ストレージノードとの間でデータの送受信を行うデータアクセス手段と、を備えたデータ変換装置を備え、前記データ変換装置は、データの書き込み時、前記ストレージノードのデータ格納部に一旦格納されたデータを、前記データ構造変換手段で前記データと論理的には同一ではあるが物理的に異なる形式に変換し、前記データの誤り検出符号とともに前記ストレージノードのデータ格納部に格納し、データの読み出し時、前記ストレージノードの前記データ格納部から読み出したデータの誤り検出符号を確認した結果、前記誤り検出符号が一致した場合には、読み出し要求元である前記クライアントのアプリケーションに送信し、前記誤り検出符号の確認の結果、前記誤り検出符号が不一致の場合には、前記データ構造変換手段にて、他のストレージノードに格納されるレプリカからデータ構造を変換したデータと、前記データの誤り検出符号とを、前記ストレージノードの前記データ格納部に格納した上で、前記データを前記アプリケーションに送信する、ことを特徴とするストレージシステム。前記データ格納部は、キー欄のキー値に対応した複数の欄の値の組み合わせを1行のエントリとして、複数行を備えたテーブルを備え、前記テーブルは、行単位で書き込みが行われ、前記テーブルを行ストアRow-store形式で記憶し、前記テーブルのデータの前記誤り検出符号は、前記テーブルを構成する各行の誤り検出符号の総和として求まり、前記行の追加、挿入では、前記合算手段は、元のテーブルデータに関して保持されている誤り検出符号に、前記計算手段で計算した前記行の誤り検出符号を加算して、前記データ格納部に格納し、前記行の削除では、前記合算手段は、前記元のテーブルデータに関して保持されている誤り検出符号から、前記行の誤り検出符号を減算し、旧行を新行で置き換える更新では、前記合算手段は、前記元のテーブルデータに関して保持されている誤り検出符号から、前記旧行の誤り検出符号を減算し、前記計算手段で計算した前記新行の誤り検出符号を加算する、ことを特徴とする請求項4又は5記載のストレージシステム。前記誤り検出符号を、行単位、複数行の行グループ単位、テーブル全体の少なくともいずれかに対して1つ備えている、ことを特徴とする請求項6記載のストレージシステム。前記計算手段は、前記誤り検出符号の代わりに、結合則を満たし、かつ加算に関して可換で、減算が定義可能な演算を適用して計算される誤り検出訂正符号を計算し、前記合算手段は、誤り検出訂正符号を合算する、ことを特徴とする請求項1乃至7のいずれか1項に記載のストレージシステム。結合則を満たしかつ加算に関して可換で、減算が定義可能な演算を適用して計算される誤り検出符号を計算する計算工程と、複数の前記誤り検出符号を合算する合算工程と、を含み、データの変更時、変更対象の部分データに対して前記計算構成で誤り検出符号を計算し、前記合算工程において、前記部分データの誤り検出符号と、変更前の全体のデータに関して既に計算され、データ格納部に格納されている誤り検出符号と、を合算し、前記合算した値を、前記更新後の全体のデータの誤り検出符号として前記データ格納部に格納する、ことを特徴とするデータインテグリティのチェック方法。データ格納部を有するストレージと、結合則を満たし、かつ加算に関して可換で、減算が定義可能な演算を適用して計算される誤り検出符号を計算する計算手段と、複数の誤り検出符号を合算する合算手段と、を備え、前記データ格納部に格納されたデータの変更時、前記計算手段が変更対象の部分データに対して誤り検出符号を計算し、前記合算手段が、前記部分データの誤り検出符号と、変更前の全体のデータに関して既に計算され前記データ格納部に格納されている誤り検出符号と、を合算し、前記合算した値を、前記更新後の全体のデータの誤り検出符号として前記データ格納部に格納するコンピュータに、前記計算手段と前記合算手段の処理を実行させるプログラム。本願出願時点で、本発明の共同発明者による先願特願2011-050151号本願出願時未公開を除いて、レプリカを物理的に異なる形式で作成する構成とした分散ストレージシステムは提案されていず、当然ながら、そのようなシステム向けのデータインテグリティのチェック方法も、本願出願時には存在しない。したがって、本発明の目的は、論理的に同一内容のデータをレプリカ間で物理的に異なる形式でストレージに格納した場合でも、レプリカ間の論理的な同一性の確認を可能とするシステム、方法、プログラムを提供することにある。本発明の他の目的は、データの更新、追加、削除時において誤り検出符号の再計算の演算量の縮減を可能とするシステム、方法、プログラムを提供することにある。本発明によれば、データを格納するデータ格納部と、結合則を満たしかつ加算に関して可換で、減算が定義可能な演算から構成される誤り検出符号を計算する計算手段と、複数のデータについて計算された誤り検出符号を合算する合算手段と、を備え、前記ストレージにおけるデータの更新時、元の前記データのうち、更新対象の部分データに対して前記計算手段で計算した誤り検出符号と、それ以外のデータに関して既に計算されている誤り検出符号とを前記合算手段で合算し、前記合算した値を、前記更新後の全体のデータの誤り検出符号とするストレージシステムが提供される。本発明によれば、論理的に同一内容のデータをレプリカ間で物理的に異なる形式でストレージに格納した場合でもレプリカ間の論理的な同一性の確認を可能としている。またデータの更新、追加、削除時において、誤り検出符号の再計算の演算量の縮減を可能としている。まず、本発明の原理を説明し、つづいて、実施形態について説明する。本発明によれば、論理的には同一の内容であるデータのレプリカを、例えばレプリカ間で物理的に異なる形式で保持するストレージシステムにおいて、データインテグリティのチェックに好適な手法が提供される。本発明によれば、可用性の向上やアクセス帯域の向上例えば複数のノードからデータの読み出しを可能とすることを目的として複数のレプリカを保持する分散ストレージシステムにおいて、データを利用するアプリケーションアプリケーションソフトウェアプログラムのアクセス特性等に応じて、物理的に互いに異なる形式で保持するレプリカに対してレプリカ間の論理的な同一性の確認を可能とする手法が提供される。以下では、論理的に同一内容のデータのレプリカとして、物理的に互いに異なる形式のレプリカを少なくとも二つ作成する分散ストレージシステムの一例として、キーバリューストアKey-ValueStore:KVSのテーブル形式で、データを格納するストレージシステムへ、本発明を適用した場合について説明する。キーバリューストアは、キーKeyとデータvalue:値をセットとして書き込み、キーを指定して値を読み出す構成のデータベースである。特に制限されないが、分散ストレージシステムの上位で動作するアプリケーション例えばストレージサーバに対するクライアント上で動作するとして、大量の事象を分散ストレージに追記し、非同期にその事象を統計的に分析するアプリケーションを想定する。この場合、ストレージに対する書き込みは、事象単位例えば、ある顧客のステータス情報位置、時刻、イベント内容例えば、店を利用した、コマーシャルCMを見た、購入した、クーポン使った等、すなわち、書き込みトランザクションは、レコード1行単位で行われる。これに対して、例えば統計的な分析例えば、ある店舗を利用した人数等は、複数又は全体の事象の特定の項目、すなわち、すなわち複数又は全てのレコードの中の特定のフィールド列へのアクセスとなる。このようなアプリケーションを含むシステムにおいて、データノードストレージノードでは、テーブルデータを、行Row方向でメモリあるいはストレージ上に保存しているものとする図2のRow-store。なお、図2には、テーブルのデータ保持構造の例として、Row-store型、及び、ColumnStore型が模式的に示されている。図2のAのテーブルは、Keyカラムと、3つのValueカラムを備え、各行各レコードは、Keyと3つのValueのセットからなる。テーブルへの書き込みに関しては、行Row単位での連続アクセスとなる。すなわち、Keyと、該Keyに対応する3つの値フィールドvalue1、value2、value3を1行とし、順次、書き込みが行われる。分析用のアプリケーションによる読み出しに関しては、列Column単位、すなわち、複数行に渡るストライドアクセスとなる。このため、Row-store型のストーレッジの場合、アクセス効率が悪くなる。例えば、図2のテーブルにおいて、ある特定の列例えば図2AのテーブルのフィールドValue1の列のデータを分析するために、複数行に亘ってデータを処理する場合、Row-Store型図2C参照では、各行単位で読み出しを行い、読み出した行の中から該当列例えばフィールドValue1のデータを抽出する処理を、複数行に亘って行う必要がある。このため、大量のデータの分析においてスループットの低下、処理時間が増大する。これに対して、Column-Store型図2Bの場合、列単位での読み出しが行われることになり、例えばフィールドValue1の列単位での値の読み出しが行われる。このため、Row-Store型と比べて、アクセス効率は格段に向上する。なお、図2Dの行形式分割Row-Storeは、行形式で、テーブルデータを分割して分散配置するものである。分散KVS方式の場合、例えばテーブルの識別子とレプリカの識別子等をキーKey情報として、コンシステントハッシング方式により、当該データの配置ノードが特定されるが、本発明の主題と直接関係しないため、説明は省略する。データの書き込みから、分析用のデータの読み出しまでの非同期性を利用して、データの書き込み後、事前読み出しが行われる前に読み出しのためにデータを列方向で保持する変換処理を施しておく例えばColumn-store形式のデータ構造に変換しておくことで、分析用のアプリケーションによる列単位での読み出しにおいて、アクセス性能の向上が期待できる。ストレージにおけるデータ生成時書き込み時と、データ利用時読み出し時、さらに、データ利用時における用途に応じて、データがアクセスされる領域、及び、アクセスパターンは異なることが一般的である。そのような状況において、ストレージの容量、データ構造変換のオーバーヘッド等が許容できる場合には、用途に応じたデータ構造に、事前に変換した上でストレージに格納しておくことで、当該用途に対応したアプリケーションによるデータ読み出しにおけるアクセス性能の向上が期待できる。分散ストレージシステムでは、前述したように、可用性やアクセス帯域の向上を目的として、データの複製レプリカを1つ以上のデータノードで保持する。レプリカを、用途に応じてオリジナルデータとは異なる形式のデータ構造で保持しておくことで、ストレージ容量のデメリットを解消することができる。すなわち、複製先のデータノードでオリジナルデータと同一のデータ構造のレプリカとともに、アプリケーション用途向けのデータ構造に事前に変換したデータも保持する構成とした場合、必要なストレージ容量が増大する。一方、複製先のデータノードにおいて、レプリカとして、アプリケーションの用途向けの形式データ構造に変換したデータのみ保持することで、ストレージ容量の増大という問題は回避される。なお、前記した先願特願2011-050151には、分散ストレージシステムにおいて、耐障害性やアクセス性能向上のためにレプリカに関して、物理的に同一形式でレプリカを作成するのではなく、論理的には同一であるが、アプリケーションの用途、アクセス特性等に応じて、物理的に異なる形式例えばローストア型RowStore、カラムストア型ColumnStoreでレプリカを保持する構成が提案されている。しかしながら、アプリケーションのアクセス特性等に応じて例えばレプリカ毎に物理的に異なる形式でそれぞれに対応するデータノードストレージノードに格納した場合に、レプリカ間で論理的な同一性を確認することができない。例えば非特許文献1において、レプリカ間のデータインテグリティのチェックは、物理的な保存形式であるブロック等のデータの保存単位で行っている。したがって、論理的には同一であるが、物理的な形式としては異なるという状況下でのデータインテグリティのチェックは、非特許文献1等には想定されていない。本発明の好ましい形態の1つによれば、結合則を満たし、且つ加算に関して可換であり、減算が定義可能な演算で誤り検出訂正符号errordetectionandcorrectioncodeを計算する計算手段1と、誤り検出訂正符号を合算する合算手段2と、を備えている。計算手段1は、例えばアプリケーションからのデータアクセス単位でデータの誤り検出訂正符号を計算する。合算手段2は、データの追加、削除等、データの変更時に、変更前の元のデータの誤り検出訂正符号と、変更されたデータ部分データの誤り検出訂正符号と、を合算し、この合算値を、変更後の全体のデータの誤り検出訂正符号の値とする。本発明の好ましい形態の1つによれば、変更データの誤り検出訂正符号の計算の前に、対象データの正規化を行うようにしてもよい。本発明の好ましい形態によれば、アプリケーションのアクセス特性に応じてレプリカ毎に、物理的に異なる形式でデータノードに格納した場合にも、レプリカ間の論理的な同一性を確認することができる。本発明の好ましい形態の1つによれば、誤り検出訂正符号の計算をアプリケーションのデータアクセス単位で行い、部分データの誤り検出訂正符号からデータ全体の誤り検出訂正符号の合算として加減算のみを用いている。このため、データの更新、追加、削除の時にも、データの誤り検出符号の再計算は、多数のデータや全体に波及することなく、局所的な部分データの再計算で対応できる計算負荷の増大を抑制する。なお、チェックサム等の誤り検出符号の代わりに、誤り訂正ErrorCorrectionを行ってもよいECCErrorCorrectionCoding符号を用いる。このため、上記のとおり、誤り検出訂正符号errordetectionandcorrectioncodeと表記している。誤り検出符号では、誤りの位置は検出できないが、訂正符号を用いた場合、ある範囲のエラーなら、その場で修正することが可能となる。<実施形態1>次に、本発明の実施形態について説明する。図3は、本発明に係るストレージシステムの第1の実施の形態の構成を示す図である。図3を参照すると、第1の実施の形態は、変更データを入力し、ストレージ3に対して、更新データを反映させる変更データ入力手段4と、データの誤り検出符号を計算する誤り検出符号計算手段1と、複数の誤り検出符号の合算を行う誤り検出符号合算手段2と、データと該データに対応する誤り検出符号とを格納するストレージ3と、を含む。誤り検出符号計算手段1は、以下に示すように、結合則を満たし、且つ、加算に関して可換であり、減算が定義可能であるという演算にしたがって計算される誤り検出符号を計算する。結合則:abc=abc可換:ab=ba例えばデータA、B、Cの誤り検出符号をそれぞれa、b、cとする。誤り検出符号が結合則を満たすことから、データAに、データBとデータCを加えたデータを加える操作を行って得られるデータの誤り検出符号は、abcで与えられるが、これは、データAにデータBを加えたデータに、データCを加えた場合の誤り検出符号abcに等しいことを意味する。また加算に関して可換は、例えばデータAにデータBを加えたデータの誤り検出符号abは、データBにデータAを加えたデータの誤り検出符号baと等しい。また、減算が定義可能であることから、データAにからデータBを削除したデータの誤り検出符号はa-bで与えられる。結合則を満たし、且つ、加算に関して可換で減算が定義可能な演算から計算される誤り検出符号として、例えばチェックサムやパリティ符号等が用いられる。よく知られれているように、チェックサムは、データブロックのワード列の個々のワードの総和の例えば下位1ワードをそのまま符号値とする。パリティ符号は、例えばワード単位に1ビットを付加し、パリティビットを含め1の数を例えば偶数個又は奇数個とし、1の数が奇数個偶数個のものは誤りとして検出される。誤り検出符号合算手段2は、データの変更例えば、追加/挿入、削除、更新等に対して、誤り検出符号計算手段1で計算された誤り検出符号に対して、変更前の元のデータの誤り検出符号既に計算済みとの合算加減算を行い、元のデータに当該データの変更を反映した全体のデータの誤り検出符号を算出する。誤り検出符号合算手段2において、変更対象のデータの誤り検出符号と計算済みの元のデータの誤り検出符号の合算加減算で全体のデータの誤り検出符号が算出可能であるのは、結合則を満たし、且つ、加算に関して可換で、減算が定義可能な誤り検出符号固有の性質による。図4は、図3の第1の実施の形態の全体の動作を説明する流れ図である。図3及び図4を参照して、第1の実施の形態の全体の動作について詳細に説明する。データの管理単位例えばテーブル等に対して、変更データ入力手段4は、部分データ例えば行等の変更追加、挿入、削除、更新等を行う。誤り検出符号計算手段1は、変更データ入力手段4から変更対象データを受け取り、当該変更対象データの誤り検出符号を、結合則を満たし、且つ、加算に関して可換で減算が定義可能な演算から構成される誤り検出符号で計算するステップS11。誤り検出符号合算手段2は、ストレージ3からデータの管理単位全体の誤り検出符号を読み出すステップS12。誤り検出符号合算手段2は、前記読み出したデータの管理単位全体の誤り検出符号と、部分データ例えば行等の誤り検出符号の合算変更の内容に応じて、加減算等の組み合わせを行うステップS13。誤り検出符号合算手段2は、誤り検出符号の合算結果を、変更後のデータの管理単位全体の誤り検出符号としてストレージ3に格納するステップS14。変更データ入力手段4は、ストレージ3においてデータの管理単位に対して、部分データの変更を適用するステップS15。なお、ステップS14、S15は、一貫性の都合上、アトミックに処理する必要がある。第1の実施の形態の作用効果について説明する。第1の実施の形態では、結合則を満たし、且つ、加算に関して可換であり、減算が定義可能な演算で導出される誤り検出符号を利用し、データの更新単位の誤り検出符号と、更新単位以外の元のデータの管理単位全体の誤り検出符号との合算を、新たなデータの管理単位全体の誤り検出符号としている。この結果、アプリケーションの用途、特性等に対応させて互いに物理的に異なる形式の複数のレプリカを複数のストレージにそれぞれ格納した場合でも、これら複数のレプリカ間の論理的な同一性を確認することができる。すなわち、レプリカ間で、データの管理単位全体の誤り検出符号が一致すれば、これらレプリカ間でデータのインテグリティが保たれており、逆に、相違すれば、レプリカ間でデータのインテグリティは保証されない。第1の実施形態によれば、データを部分的に変更する場合に、誤り検出符号の再計算が多数のデータや全体に波及せずに、変更対象の部分の局所的な誤り検出符号の再計算で済ませることができる。データ全体の誤り検出符号は合算で求めることができ、計算量を特段に低減している。<実施形態2>次に、本発明の第2の実施形態を説明する。図5は、第2の実施形態の構成を示す図である。図6は、第2の実施形態の動作を説明する流れ図である。図5、図6において、図3、図4と同一の要素、ステップには、同一も参照符号が付されている。以下では、前記第1の実施形態との相違にについて説明し、同一部分の説明は省略する。第2の実施形態は、前記第1の実施形態の構成において、変更データ入力手段4と誤り検出符号計算手段1の間に、変更データ正規化手段5が追加されている。変更データ正規化手段5は、変更対象データの誤り検出符号の計算の前に、対象データの正規化を行う図6のステップS10。ここで、データの正規化とは、データの形式を指示するメタデータ等を除く。本実施の形態では、レプリカの物理的な構造に依存する情報データの形式を指示するメタデータ等を予め除外した上で、誤り検出符号の計算を行う。このため、適用可能なデータ構造、アプリケーション等が広がる。なお、結合則を満たし、且つ加算に関して可換で、減算が定義可能な演算から構成される誤り検出符号の計算の具体的な例として、チェックサムや、パリティ計算等が挙げられる。<実施形態3>以下、発明の理解を助けるために、アプリケーションのアクセス特性に応じてレプリカ毎に物理的に異なる形式で保持するタイプの分散ストレージシステムに本発明を適用した場合の概要を第3の実施形態として説明する。特に制限されないが、第3の実施の形態では、データ格納時に、レプリカを、オリジナルデータと物理的に同一の型式で一旦作成し、非同期に、データ構造の変換を行い、レプリカ作成時と異なる形式に変換する。非同期に別のデータ構造に変換する制御形態としては、例えばオリジナルデータと物理的に同一の型式のレプリカ格納のタイミングから所定の期間経過タイムアウト発生、あるいは、システム管理者のコマンド入力等のトリガー条件を格納しておき、当該トリガー発生時に、データ構造の変換を行うようにしてもよい。図7に示すように、第3の実施の形態は、クライアント10と、データ変換装置20、ストレージノードデータノード30を含む。図7では、簡単のため、クライアント10と、データ変換装置20、ストレージノードデータノード30について、各1個が図示されているが、ストレージノードデータノード30は複数備えており、クライアント10も1つ又は複数存在する。なお、データ変換装置20は、複数のストレージノード30、複数のクライアント10に対して1つ備えた構成とされる。ストレージノード30は、データを格納するデータ格納部34と、クライアント10又はデータ変換装置20からのデータアクセスリクエストを受け、データ格納部34に適切なサイズブロックで入出力を行うブロックアクセス手段31と、データ格納部34へのデータの格納時に誤り検出符号を付加する誤り検出符号付加手段32と、データ格納部34からのデータ読み出し時にデータの誤りの有無を検出する誤り検出符号確認手段33とを含む。クライアント10は、コンピュータ上で動作するアプリケーション11アプリケーションプログラムと、ストレージノード30へのアクセスインタフェースI/Fを提供するストレージアクセスインタフェースI/F12、ストレージノード30との間でデータの送受信を行うデータアクセス手段13を含む。データ変換装置20は、データの構造を変換するデータ構造変換手段21と、ストレージノード30へのアクセスインタフェースI/Fを提供するストレージアクセスインタフェースI/F22と、データの格納時に当該データの誤り検出符号を付加する誤り検出符号付加手段23と、データの読み出し時に、データの誤りの有無を検出する誤り検出符号確認手段24、ストレージノード30との間でデータの送受信を行うデータアクセス手段25を含む。これらの手段は、それぞれつぎのように動作する。なお、特に制限されないが、以下では、キーバリュー型ストアKey-ValueStore:KVSでの動作を想定する。すなわち、キーアクセスキーとデータValueがセットとしてテーブルデータベースに格納される。<クライアントからのリード>クライアント10上で動作するアプリケーション11がストレージノード30に格納されているデータを読み出す場合、ストレージアクセスI/F12を用いて、該当データの物理的な格納形式と、データのアクセスキーとそのアクセスの特性を示す識別子等に基づき、該当データの該当格納形式のレプリカが格納されているストレージノードを特定する。なお、該当データを保持するストレージノードデータノードの特定方法は、データとストレージノードの対応関係を、サーバ不図示で保持するメタサーバ方式と、データのアクセスキーに基づいて、コンシステントハッシング等の計算によって、ストレージノードを求める方式等がある。コンシステントハッシングでは、ハッシュ関数にデータのアクセスキーを入力し、ハッシュ関数の出力から、当該データを格納しているストレージノードの位置情報を得る。クライアント10は、ストレージノード30に対してデータアクセスのリクエストを発行する。クライアント10からデータアクセスリクエストを受信したストレージノード30のブロックアクセス手段31は、該当データをデータ格納部34から読み出し、誤り検出符号確認手段33にて、当該データの誤り検出符号を計算する。また、当該データの格納時等に事前に計算しておいた当該データに対応する誤り検出符号を、データ格納部34から読み出し、新たに計算した誤り検出符号と照合する一致/不一致をチェックすることで、該当データにおける破損等の有無を確認する。ストレージノード30の誤り検出符号確認手段33による誤り検出符号の確認の結果、該当データに破損が無い場合にはデータ格納部34から読み出した当該データの誤り検出符号と、新たに計算した誤り検出符号とが一致した場合、ブロックデータアクセス手段31は、当該読み出しデータを、クライアント10のデータアクセス手段13を介してアプリケーション11に送信する。ストレージノード30の誤り検出符号確認手段33による誤り検出符号確認の結果、該当データに破損が見つかった場合にはデータ格納部34から読み出した当該データの誤り検出符号と、新たに計算した誤り検出符号とが不一致の場合、データ変換装置20のデータアクセス手段25は、別のデータ構造で保存されている別のストレージノードのデータ格納部34に格納されているレプリカから、データを復元し、ストレージノード30のデータ格納部34に再度格納した上で、該当データを、クライアント10のデータアクセス手段13を介してアプリケーション11に送信する。<クライアントからのライト>クライアント10上で動作するアプリケーション11がストレージノードにデータを格納する場合、クライアント10のストレージアクセスI/F12を用いて該当データを格納するストレージノード30を複数決定する。クライアント10のデータアクセス手段13は、決定した複数のストレージノード群に対して、データ格納リクエスト書き込み要求を発行する。クライアント10からのデータ格納リクエストを受信したストレージノード群の各ノードのデータアクセス手段31は、書き込みデータを受け取り、当該書き込みデータに対して誤り検出符号付加手段32を用いて、誤り検出符号を計算し、当該書き込みデータと誤り検出符号とを合わせてデータ格納部34に格納する。これによって、複数のストレージノードにデータの複製レプリカがそれぞれ格納される。クライアント10による書き込み対象のオリジナルデータとレプリカを合わせて3つの同一内容のデータレプリカA、B、Cとするがあった場合、レプリカAはオリジナルデータそのままとしデータ構造の変換無し、レプリカBはデータ変換装置20により形式1、レプリカCは、データ変換装置20により形式2に変換する。データ変換装置20は、クライアント10によるストレージノード30のデータ格納部34へのデータ格納とは、非同期に、ストレージノード30に格納されたデータを、論理的には同一ではあるが、物理的に異なる形式1、2に変換し、再度、複製先のストレージノード30にそれぞれ格納する。具体的には、データ構造変換手段21は、図示されない制御手段からの指示、あるいは予め定められたイベント発生タイムアウト発生等を契機として、データアクセス手段25を用いて、ストレージノード30から、指示されたデータを読み出し、指示されたデータ構造にデータ構造変換手段21において変換し、変換したデータ構造を、データアクセス手段25から、ストレージノード30に格納する。クライアント10からのライトの場合と異なり、データ変換装置20では、この格納データに対するレプリカは作成しないレプリカデータのレプリカは作成しない。すなわち、変換後のレプリカのデータ構造が例えば形式1の場合、物理的に異なる形式2のレプリカも作成されるためである。なお、データ構造を変換する前のレプリカの1つオリジナルデータそのままのレプリカAは必要に応じて削除してもよい。なお、クライアント10のアプリケーション11からのオリジナルデータの変更更新要求に対応して、複数のストレージノード30の各々において、ブロックアクセス手段31はデータ格納部34に格納されているレプリカデータの変更更新を行う。その際、複数のストレージノード30の各々の誤り検出符号付加手段32は、前記第1、第2の実施形態と同様、変更データの誤り検出符号を計算し、元のデータの誤り検出符号と合算することで、変更後のレプリカデータの誤り検出符号を導出し、データ格納部34に格納する。なお、データ変換装置20において、データ構造の変換内容によっては、ストレージノード30から読み出した複数のデータから新たに複数のデータを書き出す場合もある。その際に、誤り検出符号の確認と付加を行う必要があり、その方法に関して以下に説明する。図2に示したように、複数の列と行からなるKVSキーバリュー型データストアテーブルのデータに関して、データの追加時に、行単位でデータが追加、あるいは更新され、アプリケーションによる分析時に、特定の列に関してまとめてアクセスがあるような事例を説明する。この時、書き込みデータに関しては、Row-store形式、読み出しに関してはColumn-store形式が適しているため、ストレージノード30のデータ格納部34にRow-store形式で書きこまれたデータを、データ変換装置20が、Column-store形式に変換する。データのアクセス単位は、アプリケーションの特性上、Row-store形式では行単位、Column-store形式では列単位とする。Row-store形式、Column-store形式の両形式の論理的な同一性を確認するためには、それぞれの形式のデータ全体として、同一の値を持つような、誤り検出訂正符号の計算が必要である。また、データの追加更新は、テーブル単位ではなく、行単位Row-store形式や列単位Column-store形式で行われる。このため、行又は列単位でのデータ変更があった場合に、テーブル全体の再計算を必要としない誤り検出訂正符号の計算が必要となる。本実施形態によれば、上記のような要請に対して、結合則を満たし且つ加算に関して可換で、減算が定義可能な演算から構成される誤り検出符号の計算を利用し、データの追加/挿入、削除、更新に関して以下に説明するように、誤り検出符号のアルゴリズムを定義する。図8は、図2のKey-Value方式のテーブルデータのインテグリティチェックの原理を説明する図である。Row-Store形式のテーブルデータ全体の誤り検出符号チェックサムtab_chksm_rowは、n列の各行の誤り検出符号row_chksm[i]の総和で与えられる。tabchksmrow=Σnrowchksmiなお、総和記号を本明細書では、Σnとテキスト表記で表し、mcolchksmj図8では、第1列がKey、第2、第3、第4列がValue1、Value2、Value3である同様に、第m列はValuem。テーブル全体の誤り検出符号チェックサムtab_chksmは、第1列のKeyの誤り検出符号チェックサムk_chksm第1列のn個行のKeyのチェックサムからなると、残りのj=2~mのm-1列のValueの誤り検出符号チェックサムv_chksm各列、n個のValueからなるの総和で与えられる。tabchksm=Σ1nkchksmjΣnmvchksmijRow_store形式でのテーブルデータ全体の誤り検出符号tab_chksm_row、Column-Store形式の形式でのテーブルデータ全体の誤り検出符号tab_chksm_colが等しければ、これらのデータのインテグリティは保たれていることが分かる。すなわち、同一のデータの誤り検出符号チェックサムに関して次式4が成り立つ。tabchksmrowtabchksmcol=tabchksmKey-Value方式のテーブルデータについて、Row_store形式に変換されたデータ構造から求めた誤り検出符号と、Column-Store形式に変換されたデータ構造から求めた誤り検出符号とが一致すれば、これらは論理形式が同一のデータに対応していることがわかる。以下では、図2、図8等のテーブルにおいて、部分データの変更等によるテーブルデータのインテグリティのチェックについて説明する。<Row-store形式の場合><行の追加/挿入結合可能で可換のため>テーブルに一行追加、あるいは挿入された場合、追加又は挿入された行の誤り検出符号をrow_chksmとし、元のn行の誤り検出符号をΣ_i=1^nrow_chksm[i]とすると、テーブル全体の誤り検出符号は次式5で与えられる。Σnrowchksmirowchksm<行の削除減算可能のため>n行のテーブルから一行が削除された場合、削除された行一行の誤り検出符号をrow_chksmとし、元のn行の誤り検出符号をΣ_i=1^nrow_chksm[i]とすると、テーブル全体の誤り検出符号は次式6で与えられる。Σnrowchksmirowchksm<行の更新削除、挿入可能のため>更新前の行一行の誤り検出符号をrow_chksm[old]、更新後の行一行の誤り検出符号をrow_chksm[new]、元のn行の誤り検出符号をΣ_i=1^nrow_chksm[i]とすると、更新後のテーブル全体の誤り検出符号は次式7で与えられる。Σnrowchksmirowchksmoldrowchksmnew<Column-store:追加/挿入結合可能で可換のため>元のm列の誤り検出符号をΣ_j=1^mcol_chksm[j]とし、追加行の誤り検出符号をrow_chksm[new]とすると、テーブル全体n行m列の誤り検出符号は次式8で与えられる。Σmcolchksmjrowchksm式8において、Σ_j=1^mcol_chksm[j]は、次式9のように、第1列のkey1列n行の誤り検出符号k_chksm[i]と第2~m列のvaluem-1列×n行の誤り検出符号v_chksm[i,j]とに展開される。ΣmcolchksmjΣ1nΣmnΣmΣmnこれに、追加行の誤り検出符号keyの誤り検出符号k_chksm[new]とm-1列のvalueの誤り検出符号v_chksm[new,j]の和rowchksm[new]kchksmnewΣmvchksmnewjを加えると、式8は次式11と表せる。ΣmkchksmiΣmnvchksmijkchksmnewΣmvchksmnewjΣnkchksmikchksmnewΣmnvchksmijvchksmnewj<削除減算可能のため>元のm列の誤り検出符号をΣ_j=1^mcol_chksm[j]とし、削除行の誤り検出符号をrow_chksm[old]とすると、テーブルデータ全体の誤り検出符号は、次式12で与えられる。すなわち、Σの部分は列毎の誤り検出符号col_chksm[i]をn列全列足しあわせて全体の誤り検出符号としたものから、新たに削除行の誤り検出符号row_chksm[old]を減ずる。Σmcolchksmjrowchksm[old]ここで、Σ_j=1^mcol_chksm[j]は、次式13のように第1列のkey1列n行の誤り検出符号k_chksm[i]と第2~m列のvaluem-1列n行の誤り検出符号v_chksm[i,j]とに展開される。ΣmcolchksmiΣ1nkchksmiΣmnvchksm[ij]ΣnkchksmiΣmnvchksmij式13から、rowchksmoldkchksmoldΣmvchksmoldjを減じると、式15が導かれる。ΣnkchksmiΣmnvchksmijmvchksmoldjΣnkchksmikchksmoldΣmnvchksmijvchksmoldj<更新削除して挿入>更新前の行一行の誤り検出符号をrow_chksm[old]、更新後の行一行の誤り検出符号をrow_chksm[new]、元のテーブルn行m列の誤り検出符号をΣ_i=1^mcol_chksm[i]とすると、更新後のテーブル全体の誤り検出符号は、次式16で与えられる。Σmcolchksmjrowchksm[old]rowchksmnew上式11、15から、式16は、以下の17となる。ΣnkchksmikchksmoldkchksmnewΣmnvchksmijvchksmoldjvchksmnewj上記各操作に対して、誤り検出符号チェックサムを行又は列単位よりも更に細分化した要素単位で導出したが、これは、結合則を満たし且つ加算に関して可換で、減算が定義可能な演算から構成される誤り検出符号の計算を利用し、データの追加/挿入、削除、更新に関して、データ全体の誤り検出符号が計算できることを、具体例に即して、実証するためである。<実施形態4>本発明によれば、データの誤り検出/訂正符号を複数階層で取るようなストレージシステム/ネットワークシステムにも適用できる。図9は、第4の実施形態における誤り検出符号Pの管理形態を説明する図である。図9に示すように、テーブルデータに関して、行毎に誤り検出符号P、複数行からなる行グループごと誤り検出符号GP、テーブル全体に対して誤り検出符号TBLPを備えた構成としてもよい。行、行グループ、テーブル全体等階層化された、データインテグリティのチェックが可能である。また、テーブル全体の誤り検出符号TBLPを、行グループの誤り検出符号GPともに、各ストレージノードに持たせた場合、インテグリティチェックの多くの計算をストレージノードでローカルに行うことができる。一方、テーブル全体の誤り検出符号TBLPを、図示されない管理サーバ等に持たせた場合、データの更新、追加削除時にテーブル全体の誤り検出符号の更新等の管理を簡易化することができる。上記各実施形態のシステムは、分散ストレージシステムメタサーバ方式、分散KVS方式等に適用して好適とされるが、任意のストレージシステムに適用可能であることは勿論である。なお、上記非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示請求の範囲を含むの枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。上記実施形態の一部又は全ては、以下の付記のようにも記載され得るが、以下に限られない。データ格納部を備えたストレージと、結合則を満たし、かつ加算に関して可換で、減算が定義可能な演算を適用して計算される誤り検出符号を計算する計算手段と、複数の前記誤り検出符号を合算する合算手段と、を備え、前記データ格納部に格納されたデータの変更時、前記計算手段は、変更対象の部分データに対して前記誤り検出符号を計算し、前記合算手段は、前記計算手段で計算された前記部分データの前記誤り検出符号と、変更前のデータの誤り検出符号であって既に計算又は合算され前記データ格納部に格納されている誤り検出符号とを合算し、前記合算した値を、前記変更後のデータの誤り検出符号として、前記データ格納部に格納する、ことを特徴とするストレージシステム。前記データの変更は、データの追加、挿入、削除、更新を含む、ことを特徴とする付記1記載のストレージシステム。前記誤り検出符号の計算対象のデータから、物理的な構造に依存する情報を除く正規化手段を備え、前記計算手段は、前記誤り検出符号の計算対象のデータから前記正規化手段で物理的な構造に依存する情報が除かれた状態のデータの誤り検出符号を計算する、こと特徴とする付記1又は2記載のストレージシステム。ストレージノードを複数備え、データを1つの前記ストレージノードに格納する場合、前記データのコピーであるレプリカを物理的に異なる形式で他の1つ又は複数の前記ストレージノードに格納するストレージシステム分散ストレージシステムであって、前記ストレージノードが、付記1乃至3のいずれか一に記載のストレージシステムを備えている、こと特徴とするストレージシステム。ストレージノードを複数備え、データを1つの前記ストレージノードに格納する場合、前記データのコピーであるレプリカを物理的に異なる形式で他の1つ又は複数の前記ストレージノードに格納するストレージシステム分散ストレージシステムであって、前記ストレージノードは、データの格納時、前記データに対して誤り検出符号を計算し、データ格納部に格納する誤り検出符号付加手段と、データ読み出し時、読み出した前記データの誤り検出符号を計算し、前記データに対応する誤り検出符号を前記データ格納部から読み出して前記計算した誤り検出符号と照合することで前記データにおける破損の有無を確認する誤り検出符号確認手段と、を備え、前記誤り検出符号付加手段は、付記1又は2記載の前記計算手段と前記合算手段とを少なくとも備え、さらに、1つ又は複数の前記ストレージノードに対して、データの構造を変換するデータ構造変換手段と、前記ストレージノードへのデータの格納時に、前記データの誤り検出符号を付加する誤り検出符号付加手段と、前記ストレージノードからのデータの読み出し時に、データの誤りの有無を検出する誤り検出符号確認手段と、前記ストレージノードとの間でデータの送受信を行うデータアクセス手段と、を備えたデータ変換装置を備え、前記データ変換装置は、データの書き込み時、前記ストレージノードのデータ格納部に一旦格納されたデータを、前記データ構造変換手段で前記データと論理的には同一ではあるが物理的に異なる形式に変換し、前記データの誤り検出符号とともに前記ストレージノードのデータ格納部に格納し、データの読み出し時、前記ストレージノードの前記データ格納部から読み出したデータの誤り検出符号を確認した結果、前記誤り検出符号が一致した場合には、読み出し要求元である前記クライアントのアプリケーションに送信し、前記誤り検出符号の確認の結果、前記誤り検出符号が不一致の場合には、前記データ構造変換手段にて、他のストレージノードに格納されるレプリカからデータ構造を変換したデータと、前記データの誤り検出符号とを、前記ストレージノードの前記データ格納部に格納した上で、前記データを前記アプリケーションに送信する、ことを特徴とするストレージシステム。前記データ格納部は、キー欄のキー値に対応した複数の欄の値の組み合わせを1行のエントリとして、複数行を備えたテーブルを備え、前記テーブルは、行単位で書き込みが行われ、前記テーブルを行ストアRow-store形式で記憶し、前記テーブルのデータの前記誤り検出符号は、前記テーブルを構成する各行の誤り検出符号の総和として求まり、前記行の追加、挿入では、前記合算手段は、元のテーブルデータに関して保持されている誤り検出符号に、前記計算手段で計算した前記行の誤り検出符号を加算して、前記データ格納部に格納し、前記行の削除では、前記合算手段は、前記元のテーブルデータに関して保持されている誤り検出符号から、前記行の誤り検出符号を減算し、旧行を新行で置き換える更新では、前記合算手段は、前記元のテーブルデータに関して保持されている誤り検出符号から、前記旧行の誤り検出符号を減算し、前記計算手段で計算した前記新行の誤り検出符号を加算する、ことを特徴とする付記4又は5記載のストレージシステム。前記誤り検出符号を、行単位、複数行の行グループ単位、テーブル全体の少なくともいずれかに対して1つ備えている、付記6記載のストレージシステム。前記計算手段は、前記誤り検出符号の代わりに、結合則を満たし、かつ加算に関して可換で、減算が定義可能な演算が適用される誤り検出訂正符号を計算し、前記合算手段は、誤り検出訂正符号を合算する、ことを特徴とする付記1乃至7のいずれか一に記載のストレージシステム。結合則を満たしかつ加算に関して可換で、減算が定義可能な演算が適用される誤り検出符号を計算する計算工程と、複数の誤り検出符号を合算する合算工程と、を含み、データの変更時、変更対象の部分データに対して前記計算工程で誤り検出符号を計算し、前記合算工程は、前記部分データの誤り検出符号と、変更前の全体のデータに関して既に計算され、データ格納部に格納されている誤り検出符号とを合算し、前記合算した値を、前記更新後の全体のデータの誤り検出符号として前記データ格納部に格納する、ことを特徴とするデータインテグリティのチェック方法。前記データの変更は、データの追加、挿入、削除、更新を含む、ことを特徴とする付記9記載のデータインテグリティのチェック方法。前記誤り検出符号の計算対象のデータから、物理的な構造に依存する情報を除くこと特徴とする付記9又は10記載のデータインテグリティのチェック方法。ストレージノードを複数備え、データをストレージノードに格納する場合、他の1又は複数のストレージノードに前記データのコピーであるレプリカを格納する分散ストレージシステムにおいて、前記ストレージノードは、データの格納時、前記データに対して誤り検出符号を付加し、データ格納部に格納し、前記誤り検出符号の付加は、付記9又は10の計算工程と合算工程を有し、クライアントからの読み出しアクセス時、前記ストレージノードの前記データ格納部から読み出したデータの誤り検出符号を確認した結果、前記誤り検出符号が一致した場合には、読み出し要求元である前記クライアントのアプリケーションに送信し、前記誤り検出符号の確認の結果、前記誤り検出符号が不一致の場合には、前記データ構造変換手段にて、他のストレージノードに格納されるレプリカからデータ構造を変換したデータと、前記データの誤り検出符号とを前記データ格納部に格納した上で、前記データを前記アプリケーションに送信する、ことを特徴とする、こと特徴とするデータインテグリティのチェック方法。前記データ格納部は、キー欄のキー値に対応した複数の欄の値の組み合わせを1行のエントリとして、複数行を備えたテーブルを備え、前記テーブルは、行単位で書き込みが行われ、前記テーブルを行ストアRow-store形式で記憶し、前記テーブルのデータの前記誤り検出符号は、前記テーブルを構成する各行の誤り検出符号の総和として求まり、前記行の追加、挿入では、前記合算工程は、元のテーブルデータに関して保持されている誤り検出符号に、前記計算工程で計算した前記行の誤り検出符号を加算して、前記データ格納部に格納し、前記行の削除では、前記合算工程は、前記元のテーブルデータに関して保持されている誤り検出符号から、前記行の誤り検出符号を減算し、旧行を新行で置き換える更新では、前記合算手段は、前記元のテーブルデータに関して保持されている誤り検出符号から、前記旧行の誤り検出符号を減算し、前記計算工程で計算した前記新行の誤り検出符号を加算する、ことを特徴とする付記11記載のデータインテグリティのチェック方法。前記誤り検出符号を、行単位、複数行の行グループ単位、テーブル全体に対して1つ備えている、付記12記載のデータインテグリティのチェック方法。データ格納部を有するストレージと、結合則を満たし、かつ加算に関して可換で、減算が定義可能な演算を適用して計算される誤り検出符号を計算する計算手段と、複数の誤り検出符号を合算する合算手段と、を備え、前記データ格納部に格納されたデータの変更時、前記計算手段が変更対象の部分データに対して誤り検出符号を計算し、前記合算手段は、前記部分データの誤り検出符号と、変更前の全体のデータに関して既に計算され前記データ格納部に格納されている誤り検出符号と、を合算し、前記合算した値を、前記更新後の全体のデータの誤り検出符号として前記データ格納部に格納するコンピュータに、前記計算手段と前記合算手段の処理を実行させるプログラム。前記データの変更は、データの追加、挿入、削除、更新を含む、ことを特徴とする付記15記載のプログラム。前記誤り検出符号の計算対象のデータから、物理的な構造に依存する情報を除く正規化処理を備え、前記計算処理は、前記誤り検出符号の計算対象のデータから前記正規化処理で物理的な構造に依存する情報が除かれた状態のデータの誤り検出符号を計算する、こと特徴とする付記15又は16記載のプログラム。"