(57)【要約】  複数サイト・パーティション群で構成される分散ストレージ群を利用してシェアードナッシング（Ｓｈａｒｅｄ  Ｎｏｔｈｉｎｇ：共有なし）並列検索を実行出来るデータベース管理システムにおいて、シェアードナッシング並列検索結果で不具合を発生させることなく、稼働率を最大にさせる運用を実現する。具体的には、シェアードナッシング並列検索結果で不具合が生じない様に検索処理途上でエラーが発生した際に対処する補償処理手法を複数選択する。また、前述分散ストレージ群に関する性能統計情報・信頼性情報から計算した稼働率・故障率等から補償処理を見込んだ総処理コスト期待値を当該補償処理手法の各々で計算し、総処理コスト期待値の小さい補償処理に基づき並列検索のクエリ分割を定める。
2011118427.tif 000002
【特許請求の範囲】
【請求項１】
複数サイト・パーティション群で構成される分散ストレージ群を利用してシェアードナッシング（Ｓｈａｒｅｄ  Ｎｏｔｈｉｎｇ）並列検索を実行出来るデータベース管理システムにおいて、シェアードナッシング並列検索処理途上でエラーが発生した際に対処する補償処理手法を複数選択する手段と、
前記分散ストレージ群に関する性能統計情報・信頼性情報から稼働率・故障率を計算する手段と、
前記計算された稼働率・故障率から補償処理を見込んだ総処理コスト期待値を前記複数の補償処理手法の各々で計算する手段と、
総処理コスト期待値が最も小さい補償処理に基づき並列検索のクエリ分割を定める手段と
を具備する
クエリ装置。
【請求項２】
請求項１に記載のクエリ装置であって、
前記分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測する手段と、
任意時点での稼働率・故障率を予め計算しておき、任意時点での稼働率・故障率を基に、総処理コスト期待値を計算する手段と
を更に具備する
クエリ装置。
【請求項３】
請求項１又は２に記載のクエリ装置であって、
クエリを構成する結合演算を複数の要素クエリに分解する手段と、
前記複数の要素クエリの各々を実施することで発生する中間成果と前記各要素クエリとを改めて結合するクエリ最適化手法を利用する手段と
を更に具備する
クエリ装置。
【請求項４】
請求項３に記載のクエリ装置であって、
前記各要素クエリをシェアードナッシング並列検索結果で実施する度に、前記分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果に基づいて、その時点での稼働率・故障率を取得する手段と、
前記稼働率・故障率を基に処理コスト期待値を計算し、最適化内容を変更する手段と
を更に具備する
クエリ装置。
【請求項５】
請求項３又は４に記載のクエリ装置であって、
クエリ対象とするデータに偏在性があることを確認する手段と、
前記データを３種類に分割した上で要素クエリを実施する手段と
を更に具備する
クエリ装置。
【請求項６】
請求項３乃至５のいずれか一項に記載のクエリ装置であって、
前記各要素クエリをシェアードナッシング並列検索結果で実施する場合、前記分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果に基づいて、その時点から指定期間の推定稼働率・推定故障率を取得する手段と、
前記推定稼働率・推定故障率を基に処理コスト期待値を計算し、最適化内容を変更する手段と
を更に具備する
クエリ装置。
【請求項７】
複数サイト・パーティション群で構成される分散ストレージ群を利用してシェアードナッシング（Ｓｈａｒｅｄ  Ｎｏｔｈｉｎｇ）並列検索を実行出来るデータベース管理システムにおいて、シェアードナッシング並列検索処理途上でエラーが発生した際に対処する補償処理手法を複数選択することと、
前記分散ストレージ群に関する性能統計情報・信頼性情報から稼働率・故障率を計算することと、
前記計算された稼働率・故障率から補償処理を見込んだ総処理コスト期待値を前記複数の補償処理手法の各々で計算することと、
総処理コスト期待値が最も小さい補償処理に基づき並列検索のクエリ分割を定めることと
を含む
クエリ分割方法。
【請求項８】
請求項７に記載のクエリ分割方法であって、
前記分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測することと、
任意時点での稼働率・故障率を予め計算しておき、任意時点での稼働率・故障率を基に総処理コスト期待値を計算することと
を更に含む
クエリ分割方法。
【請求項９】
請求項７又は８に記載のクエリ分割方法であって、
クエリを構成する結合演算を複数の要素クエリに分解することと、
前記複数の要素クエリの各々を実施することで発生する中間成果と前記各要素クエリを改めて結合するクエリ最適化手法を利用することと
を更に含む
クエリ分割方法。
【請求項１０】
請求項９に記載のクエリ分割方法であって、
前記各要素クエリをシェアードナッシング並列検索結果で実施する度に、前記分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果に基づいて、その時点での稼働率・故障率を取得することと、
前記稼働率・故障率を基に処理コスト期待値を計算し、最適化内容を変更することと
を更に含む
クエリ分割方法。
【請求項１１】
請求項９又は１０に記載のクエリ分割方法であって、
クエリ対象とするデータに偏在性があることを確認することと、
前記データを３種類に分割した上で要素クエリを実施することと
を更に含む
クエリ分割方法。
【請求項１２】
請求項９乃至１１のいずれか一項に記載のクエリ分割方法であって、
前記各要素クエリをシェアードナッシング並列検索結果で実施する場合、前記分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果に基づいて、その時点から指定期間の推定稼働率・推定故障率を取得することと、
前記推定稼働率・推定故障率を基に処理コスト期待値を計算し、最適化内容を変更することと、
を更に含む
クエリ分割方法。
【請求項１３】
請求項９乃至１２のいずれか一項に記載のクエリ分割方法を、計算機に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クエリ装置に関し、特にシェアードナッシング（Ｓｈａｒｅｄ  Ｎｏｔｈｉｎｇ：共有なし）並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置に関する。
【背景技術】
【０００２】
２００９年現在でのシェアードナッシング並列検索のパーティショニング化に関する既存技術の最も先進的な方式は、＜非特許文献１＞に記載されている方式である。【０００３】
＜非特許文献１＞Ｙｕ  Ｘｕ  ｅｔ  ａｌ，  “Ｈａｎｄｌｉｎｇ  Ｄａｔａ  Ｓｋｅｗ  ｉｎ  Ｐａｒａｌｌｅｌ  Ｊｏｉｎｓ  ｉｎ  Ｓｈａｒｅｄ−Ｎｏｔｈｉｎｇ  Ｓｙｓｔｅｍｓ”，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＳＩＧＭＯＤ’０８  Ｃｏｎｆｅｒｅｎｃｅ，  ２００８．【０００４】
ところが、＜非特許文献１＞に記載されている方式は、シェアードナッシング並列検索のパーティショニング化に関する既存技術を説明するに留まり、当該検索処理の実行品質が悪化する場合の対策を具体的に記述している訳ではない。【０００５】
特許文献では、＜特許文献１＞が関係を持つが、＜非特許文献１＞と同様に、当該検索処理の実行品質が悪化する場合の対策を具体的に記述している訳ではない。【０００６】
＜特許文献１＞特開２００４−２８０５２８号公報【０００７】
当該検索処理の実行品質が悪化する場合の対策に直接関係する既存技術は、＜特許文献２＞にて開示されている。そこで、当該＜特許文献２＞を基に、既存技術による装置構成を説明したものが、図１Ａ、図１Ｂであり、既存技術による従来手法の処理手順（従来手順）を記したものが、図２Ａ、図２Ｂである。【０００８】
＜特許文献２＞特願２００７−５０３９１２号公報【０００９】
図１Ａ、図１Ｂの装置構成は、大きく１つ以上のネットワークと、少なくとも３つの機能層を含む。ネットワークとして、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）／ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）／Ｉｎｔｅｒｎｅｔ等、各種ネットワーク４００１、４００２を別のものとして定義しているが、これらと同じものと考えることも可能である。また、その種類に関して、ここでは区別する理由は存在しない。【００１０】
３つの機能層のうち、第１の機能層は、データベースアクセスクライアント部４００５が含まれるアプリケーションプログラム１：４００３、並びにアプリケーションプログラムＬ：４００４に相当する機能層である。第２の機能層は、データベース・マスタノード部１：４００６、データベース・マスタノード部２：４００７、データベース・マスタノード部３：４００８が含まれる機能層である。第３の機能層は、データベース・スレーブノード部１−１：４００９、データベース・スレーブノード部１−２：４０１０、データベース・スレーブノード部１−３：４０１１、データベース・スレーブノード部２−１：４０１２、データベース・スレーブノード部２−２：４０１３、データベース・スレーブノード部２−３：４０１４、データベース・スレーブノード部３−１：４０１５、データベース・スレーブノード部３−２：４０１６、データベース・スレーブノード部３−３：４０１７が含まれる機能層である。各々の機能層は、ＬＡＮ／ＷＡＮ／Ｉｎｔｅｒｎｅｔ等、各種ネットワーク４００１、４００２を介して相互にアクセスする。【００１１】
当該データベース・マスタノード部１：４００６、当該データベース・マスタノード部２：４００７、当該データベース・マスタノード部３：４００８、当該データベース・スレーブノード部１−１：４００９、当該データベース・スレーブノード部１−２：４０１０、当該データベース・スレーブノード部１−３：４０１１、当該データベース・スレーブノード部２−１：４０１２、当該データベース・スレーブノード部２−２：４０１３、当該データベース・スレーブノード部２−３：４０１４、当該データベース・スレーブノード部３−１：４０１５、当該データベース・スレーブノード部３−２：４０１６、当該データベース・スレーブノード部３−３：４０１７は独立の計算機である。【００１２】
このため、当該データベース・マスタノード部１：４００６は、データ処理部（ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）処理部）４０２４と、データキャッシュ管理部４０２５と、リソース管理／トランザクション処理部４０２６と、ストレージ４０２７を含む。【００１３】
同様に、当該データベース・マスタノード部２：４００７は、データ処理部（ＣＰＵ処理部）４０２８と、データキャッシュ管理部４０２９と、リソース管理／トランザクション処理部４０３０と、ストレージ４０３１を含む。【００１４】
同様に、当該データベース・マスタノード部３：４００８は、データ処理部（ＣＰＵ処理部）４０３２と、データキャッシュ管理部４０３３と、リソース管理／トランザクション処理部４０３４と、ストレージ４０３５を含む。【００１５】
同様に、当該データベース・スレーブノード部１−１：４００９は、データ処理部（ＣＰＵ処理部）４０３６と、データキャッシュ管理部４０３７と、リソース管理／トランザクション処理部４０３８と、ストレージ４０３９を含む。【００１６】
同様に、当該データベース・スレーブノード部１−２：４０１０は、データ処理部（ＣＰＵ処理部）４０４０と、データキャッシュ管理部４０４１と、リソース管理／トランザクション処理部４０４２と、ストレージ４０４３を含む。【００１７】
同様に、当該データベース・スレーブノード部１−３：４０１１は、データ処理部（ＣＰＵ処理部）４０４４と、データキャッシュ管理部４０４５と、リソース管理／トランザクション処理部４０４６と、ストレージ４０４７を含む。【００１８】
前述のデータベース・マスタノード部１は、主従関係定義４０１８を通して、前述のデータベース・スレーブノード部１−１：４００９と、前述のデータベース・スレーブノード部１−２：４０１０と、前述のデータベース・スレーブノード部１−３：４０１１と対応付けられる。【００１９】
同様に、前述のデータベース・マスタノード部２は、主従関係定義４０１９を通して、前述のデータベース・スレーブノード部２−１：４０１２と、前述のデータベース・スレーブノード部２−２：４０１３と、前述のデータベース・スレーブノード部２−３：４０１４と対応付けられる。【００２０】
同様に、前述のデータベース・マスタノード部３は、主従関係定義４０２０を通して、前述のデータベース・スレーブノード部３−１：４０１５と、前述のデータベース・スレーブノード部３−２：４０１６と、前述のデータベース・スレーブノード部３−３：４０１７と対応付けられる。【００２１】
また、データベース・スレーブノード部については、故障対策として２重化を実施しており、フェールオーバパートナーが定義される。この場合、同じデータが分散化環境上に２重化して保持されることになる。例えば、データベース・スレーブノード部１−１：４００９の一部のファイルは、前述のデータベース・スレーブノード部１−２：４０１０とフェールオーバパートナー関係定義４０２１を介して２重化が実施される。【００２２】
同様に、前述のデータベース・スレーブノード部１−２：４０１０の別ファイルは、前述のデータベース・スレーブノード部１−３：４０１１とフェールオーバパートナー関係定義４０２２を介して２重化が実施される。【００２３】
同様に、前述のデータベース・スレーブノード部１−３：４０１１の別ファイルは、前述のデータベース・スレーブノード部１−１：４００９とフェールオーバパートナー関係定義４０２３を介して２重化が実施される。【００２４】
従来手法の処理手順は、図２Ａ、図２Ｂに従い、下記の様に実施される。
前述のデータベースアクセスクライアント部４００５は、データベース・マスタノード部１：４００６をアクセスする場合、要求実行クエリ（ｑｕｅｒｙ）を当該データベース・マスタノード部１：４００６内のクエリ受付部にメッセージｓ４０１として送信する。そこにはＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）での記述が記されている。【００２５】
当該データベース・マスタノード部１：４００６は、内部のデータ処理部（ＣＰＵ処理部）４０２４を用いて、要求実行クエリを並列に実行可能な形式に分解し、サブ要求実行クエリに変形・生成する。その変形方法は、図３を含めた方式によって実施される。【００２６】
図３は、偏在データと、シェアードナッシング並列検索を実行する単位との関係を記した説明図である。ここで、データベース管理システムが保持するデータは、通常、分散ストレージを含めたストレージのデータベース上の表領域、索引領域上の表Ｔａｂｌｅとして表現される。ここで、ある任意の２つの表ＴａｂｌｅであるＴａｂｌｅ．（ｎ−１）とＴａｂｌｅ．（ｎ）の結合演算処理を実施する場合を想定する。【００２７】
表Ｔａｂｌｅ内のデータは、そのデータ値に応じて種々の分類により分類することが出来るが、特に結合演算処理を想定する場合、３つの分類を適用することが可能である。【００２８】
一番目の分類は偏在データであり、ある結合演算処理の対象データに相当する結合カラムの値に対してある偏在性を持つもので、値の分布に一様性がないものを意味する。これに対して、二番目の分類は被偏在データであり、結合演算処理を行う相手表Ｔａｂｌｅの結合演算処理の対象データに相当する結合カラムの値に対してある偏在性を持つもので、値の分布に一様性がないものを意味する。最後のものは、一般データであり、上記一番目の分類、二番目の分類のいずれにも属さないものである。【００２９】
この場合、一番目の分類に属する表Ｔａｂｌｅ内のデータ集合、並びに二番目の分類に属する表Ｔａｂｌｅ内のデータ集合、並びに三番目の分類に属する表Ｔａｂｌｅ内のデータ集合の任意の２つの積集合は常に空集合として定義される。【００３０】
以上の前述の三つの分類を前述の２つの表ＴａｂｌｅであるＴａｂｌｅ．（ｎ−１）とＴａｂｌｅ．（ｎ）に適用した場合、表Ｔａｂｌｅデータは、以下の様に分類されることになる。ここで、表Ｔａｂｌｅ．（ｎ−１）の偏在データをシンボルＴａｂｌｅ．（ｎ−１）（ｓ）：２００１で表現する。また、表Ｔａｂｌｅ．（ｎ−１）の被偏在データをシンボルＴａｂｌｅ．（ｎ−１）（ｊ）：２００２で表現する。最後に、表Ｔａｂｌｅ．（ｎ−１）の一般データをシンボルＴａｂｌｅ．（ｎ−１）（ｃ）：２００３で表現する。同様に、表Ｔａｂｌｅ．（ｎ）の偏在データをシンボルＴａｂｌｅ．（ｎ）（ｓ）：２００４で表現する。また、表Ｔａｂｌｅ．（ｎ）の被偏在データをシンボルＴａｂｌｅ．（ｎ）（ｊ）：２００５で表現する。最後に、表Ｔａｂｌｅ．（ｎ）の一般データをシンボルＴａｂｌｅ．（ｎ）（ｃ）：２００６で表現する。【００３１】
当該２つの表ＴａｂｌｅであるＴａｂｌｅ．（ｎ−１）とＴａｂｌｅ．（ｎ）の結合演算処理は、結合演算シンボル２０３２を用いて、図３の指定クエリ２００７の様に表現することが可能である。【００３２】
ここで、前述の表Ｔａｂｌｅ．（ｎ−１）は、表Ｔａｂｌｅ．（ｎ−１）の偏在データＴａｂｌｅ．（ｎ−１）（ｓ）：２００１と、表Ｔａｂｌｅ．（ｎ−１）の被偏在データＴａｂｌｅ．（ｎ−１）（ｊ）：２００２と、表Ｔａｂｌｅ．（ｎ−１）の一般データＴａｂｌｅ．（ｎ−１）（ｃ）：２００３の和集合として計算することが可能である。【００３３】
同様に、前述の当該表Ｔａｂｌｅ．（ｎ）は、表Ｔａｂｌｅ．（ｎ）の偏在データＴａｂｌｅ．（ｎ）（ｓ）：２００４と、表Ｔａｂｌｅ．（ｎ）の被偏在データＴａｂｌｅ．（ｎ）（ｊ）：２００５と、表Ｔａｂｌｅ．（ｎ）の一般データＴａｂｌｅ．（ｎ）（ｃ）：２００６の和集合として計算することが可能である。【００３４】
当該和集合を用いると、図３の指定クエリ２００７を図３の指定クエリ２００８の様に変形することが可能になる。ここで、当該和演算と結合演算シンボル２０３２で表現される結合演算については、偏在データの場合に限り、図３の指定クエリ２００９の様に変形出来ることについて、前述の＜非特許文献１＞にて説明されている。【００３５】
この結果、表Ｔａｂｌｅ．（ｎ−１）の偏在データＴａｂｌｅ．（ｎ−１）（ｓ）：２００１と、表Ｔａｂｌｅ．（ｎ）の被偏在データＴａｂｌｅ．（ｎ）（ｊ）：２００５間の結合演算による部分集合２０１０、並びに表Ｔａｂｌｅ．（ｎ）の偏在データＴａｂｌｅ．（ｎ）（ｓ）：２００４と、表Ｔａｂｌｅ．（ｎ−１）の被偏在データＴａｂｌｅ．（ｎ−１）（ｊ）：２００２間の結合演算による部分集合２０１１、並びに表Ｔａｂｌｅ．（ｎ−１）の一般データＴａｂｌｅ．（ｎ−１）（ｃ）：２００３と、表Ｔａｂｌｅ．（ｎ）の一般データＴａｂｌｅ．（ｎ）（ｃ）：２００６間の結合演算による部分集合２０１２、の和集合として表現されることになる。【００３６】
この場合、前述の部分集合２０１０、前述の部分集合２０１１、前述の部分集合２０１２は、共有するデータ等の依存性が存在しないため、独立に結合演算を実施することが可能である。そのため、複数の処理実行部にそれぞれの偏在データの任意部分間の結合演算を割り付けることで処理を実施させることが可能となる。【００３７】
図３の例では、以下の様に実施される。
処理実行部１−１：２０１３では、表Ｔａｂｌｅ．（ｎ−１）の偏在データＴａｂｌｅ．（ｎ−１）（ｓ）：２００１の任意部分２０２０と、表Ｔａｂｌｅ．（ｎ）の被偏在データＴａｂｌｅ．（ｎ）（ｊ）：２００５の任意部分２０２１間の結合演算が割り付けられる。【００３８】
処理実行部１−２：２０１４では、表Ｔａｂｌｅ．（ｎ）の偏在データＴａｂｌｅ．（ｎ）（ｓ）：２００４の任意部分２０２３と、表Ｔａｂｌｅ．（ｎ−１）の被偏在データＴａｂｌｅ．（ｎ−１）（ｊ）：２００２の任意部分２０２２間の結合演算が割り付けられる。【００３９】
処理実行部１−３：２０１５では、表Ｔａｂｌｅ．（ｎ−１）の一般データＴａｂｌｅ．（ｎ−１）（ｃ）：２００３の任意部分２０２４と、表Ｔａｂｌｅ．（ｎ）の一般データＴａｂｌｅ．（ｎ）（ｃ）：２００６の任意部分２０２５間の結合演算が割り付けられる。【００４０】
また、別の装置に存在する処理実行部Ｎ−１：２０１６では、表Ｔａｂｌｅ．（ｎ−１）の偏在データＴａｂｌｅ．（ｎ−１）（ｓ）：２００１の任意部分２０２６と、表Ｔａｂｌｅ．（ｎ）の被偏在データＴａｂｌｅ．（ｎ）（ｊ）：２００５の任意部分２０２７間の結合演算が割り付けられる。【００４１】
処理実行部Ｎ−２：２０１７では、表Ｔａｂｌｅ．（ｎ）の偏在データＴａｂｌｅ．（ｎ）（ｓ）：２００４の任意部分２０２９と、表Ｔａｂｌｅ．（ｎ−１）の被偏在データＴａｂｌｅ．（ｎ−１）（ｊ）：２００２の任意部分２０２８間の結合演算が割り付けられる。【００４２】
処理実行部Ｎ−３：２０１８では、表Ｔａｂｌｅ．（ｎ−１）の一般データＴａｂｌｅ．（ｎ−１）（ｃ）：２００３の任意部分２０３０と、表Ｔａｂｌｅ．（ｎ）の一般データＴａｂｌｅ．（ｎ）（ｃ）：２００６の任意部分２０３１間の結合演算が割り付けられる。【００４３】
ここで、前述の処理実行部１−１：２０１３と前述の処理実行部Ｎ−１：２０１６間の関係、並びに、前述の処理実行部１−２：２０１４と前述の処理実行部Ｎ−２：２０１７間の関係、並びに、前述の処理実行部１−３：２０１５と前述の処理実行部Ｎ−３：２０１８間の関係については、複製の場合、若しくは分割の場合が存在する。【００４４】
複製の場合は、前述の処理実行部１−１：２０１３は、前述の処理実行部Ｎ−１：２０１６と同じ内容のデータが割り付けられる。その場合、前述の処理実行部１−２：２０１４は、前述の処理実行部Ｎ−２：２０１７と同じ内容のデータが割り付けられる。更に、前述の処理実行部１−３：２０１５は、前述の処理実行部Ｎ−３：２０１８と同じ内容のデータが割り付けられる。【００４５】
これに対して、分割の場合は、前述の処理実行部１−１：２０１３と前述の処理実行部Ｎ−１：２０１６の両者で全体のデータ集合となる様に割付される。同様に、前述の処理実行部１−２：２０１４と前述の処理実行部Ｎ−２：２０１７の両者で全体のデータ集合となる様に割付される。同様に、前述の処理実行部１−３：２０１５と前述の処理実行部Ｎ−３：２０１８の両者で全体のデータ集合となる様に割付される。【００４６】
通常は、当該複製、若しくは当該分割が固定的に選択され、実施されることになる。特に計算結果の信頼性を実現する場合は、複製が選択される場合が一般的である。【００４７】
前述の処理実行部１−１：２０１３、並びに前述の処理実行部Ｎ−１：２０１６、並びに前述の処理実行部１−２：２０１４、並びに前述の処理実行部Ｎ−２：２０１７、並びに、前述の処理実行部１−３：２０１５、並びに前述の処理実行部Ｎ−３：２０１８は、独立、且つ並列に実施して得られた結果を、集約処理として１箇所に集積し、結果Ｒ：２０１９を生成する。【００４８】
当該集約処理では、特に前述の複製で実施した結果を集約した結果、同じ内容のデータを重複して保持する場合は、重複部分から１つのみを選択して、重複を排除することが為される。【００４９】
図２Ａ、図２Ｂに戻り、その後、前述の主従関係定義４０１８に基づき、配下の前述のデータベース・スレーブノード部１−１：４００９に、当該サブ要求実行クエリのＳＱＬ記述を含んだメッセージｓ４０２を送信する。同様に、前述のデータベース・スレーブノード部１−２：４０１０に、当該サブ要求実行クエリのＳＱＬ記述を含んだメッセージｓ４０３を送信する。同様に、前述のデータベース・スレーブノード部１−３：４０１１に、当該サブ要求実行クエリのＳＱＬ記述を含んだメッセージｓ４０４を送信する。【００５０】
前述のデータベース・スレーブノード部１−１：４００９は、内部のデータ処理部（ＣＰＵ処理部）４０３６を用いて、要求実行クエリを並列に実行可能な形式に分解し、サブ要求実行クエリに変形・生成する。その変形方法は、図３を含めた方式によって実施される。【００５１】
その後、前述のデータベース・スレーブノード部１−１：４００９は、前述のサブ実行クエリを実施するため、内部のデータ処理部（ＣＰＵ処理部）４０３６を用いて、ストレージ４０３９への読み込みを行う。その際、前述のデータ処理部（ＣＰＵ処理部）４０３６は、読み込んだ結果を、データキャッシュ管理部４０３７に格納し、管理する。前述のデータベース・スレーブノード部１−１：４００９は、必要に応じて、リソース管理／トランザクション処理部４０３８を利用して中間生成表現を作成する。【００５２】
その後、前述のデータベース・スレーブノード部１−１：４００９は、処理でエラーが発生していない場合は、前述のメッセージｓ４０２に対する正常応答として、検索結果を含んだメッセージｓ４０５を、前述のデータベース・マスタノード部１：４００６に送信する。【００５３】
続けて、前述のデータベース・スレーブノード部１−２：４０１０は、前述のサブ実行クエリを実施するため、内部のデータ処理部（ＣＰＵ処理部）４０４０を用いて、ストレージ４０４３への読み込みを行う。その際、前述のデータ処理部（ＣＰＵ処理部）４０４０は、読み込んだ結果を、データキャッシュ管理部４０４１に格納し、管理する。前述のデータベース・スレーブノード部１−２：４０１０は、必要に応じて、リソース管理／トランザクション処理部４０４２を利用して中間生成表現を作成する。【００５４】
その後、前述のデータベース・スレーブノード部１−２：４０１０は、処理でエラーが発生していない場合は、前述のメッセージｓ４０３に対する正常応答として、検索結果を含んだメッセージｓ４０６を、前述のデータベース・マスタノード部１：４００６に送信する。【００５５】
続けて、前述のデータベース・スレーブノード部１−３：４０１１は、前述のサブ実行クエリを実施するため、内部のデータ処理部（ＣＰＵ処理部）４０４４を用いて、ストレージ４０４７への読み込みを行う。その際、前述のデータ処理部（ＣＰＵ処理部）４０４４は、読み込んだ結果を、データキャッシュ管理部４０４５に格納し、管理する。前述のデータベース・スレーブノード部１−３：４０１１は、必要に応じて、リソース管理／トランザクション処理部４０４６を利用して中間生成表現を作成する。【００５６】
その後、前述のデータベース・スレーブノード部１−３：４０１１は、処理でエラーが発生していない場合は、前述のメッセージｓ４０４に対する正常応答として、検索結果を含んだメッセージｓ４０７を、前述のデータベース・マスタノード部１：４００６に送信する。【００５７】
前述のデータベース・マスタノード部１：４００６は、応答メッセージｓ４０５、応答メッセージｓ４０６、応答メッセージｓ４０７の全てを行うと、図３における集約処理を実施し、結果を統合化した後に、正常応答メッセージｓ４０８を生成し、要求元であるデータベースアクセスクライアント部４００５に送信する。【００５８】
次に、既存技術による従来手法で故障が発生した場合の処理手順について、簡単に説明する。故障は大きくは、データベース・スレーブノード部で発生する場合とデータベース・マスタノード部で発生した場合に大別され、その各々で処理手順が異なる。【００５９】
データベース・スレーブノード部に故障が発生した場合について説明する。例えば、前述のデータベース・スレーブノード部１−１：４００９内の処理で問題が発生し、エラーを含んだ応答が前述の応答メッセージｓ４０５に含まれる場合、前述のデータベース・マスタノード部１：４００６は、送信出来る場合に限り、ロールバック要求を含んだメッセージｓ４０９を送信する。送信出来ない場合は、この処理は行わない。【００６０】
続けて、前述のデータベース・マスタノード部１：４００６は、前述のデータベース・スレーブノード部１−２：４０１０に対して、前述のメッセージｓ４０２と同等のＳＱＬ記述を含んだメッセージｓ４１０を前述のメッセージｓ４０２の補償処理として、送信する。【００６１】
前述のデータベース・スレーブノード部１−２：４０１０は、当該メッセージｓ４１０を受信すると、前述のメッセージｓ４０３を受信した場合と同等の処理を実施する。この結果、処理でエラーが発生していない場合は、前述のメッセージｓ４１０に対する正常応答として、検索結果を含んだメッセージｓ４１１を前述のデータベース・マスタノード部１：４００６に送信する。【００６２】
その後、前述のデータベース・マスタノード部１：４００６は、通常処理と同様に、図３における集約処理を実施し、結果を統合した後に、正常応答メッセージｓ４０８を生成し、要求元であるデータベースアクセスクライアント部４００５に送信する。【００６３】
データベース・スレーブノード部が故障した場合は、以上の処理手順で対応する。これに対して、データベース・マスタノード部で故障が発生した場合、実行状況に応じて幾つかの対処方式が存在する。ここでは、代表的な方式である別のデータベース・マスタノード部を選択する方式を説明する。【００６４】
この場合、前述のデータベース・マスタノード部１：４００６は、一部の処理実施が可能である場合、前述のデータベースアクセスクライアント部４００５の要求した前述のメッセージｓ４０１の内容を含んだ、異常発生を通知するメッセージｓ４１２を、別のデータベース・マスタノード部に送信する。通知先の選択方法を含めて、その方法については、種々の方式があり、ここでは特に説明しない。【００６５】
異常発生を通知する前述のメッセージｓ４１２を別のデータベース・マスタノード部２：４００７が受信した場合、当該データベース・マスタノード部２：４００７は、その処理を引き継ぐことを宣言するため、他のデータベース・マスタノード部に引継ぎを通知するメッセージｓ４１３を送信する。【００６６】
図２Ａ、図２Ｂにおいては、他のデータベース・マスタノード部はデータベース・マスタノード部３：４００８に限定される。そこで、当該データベース・マスタノード部３：４００８は、当該メッセージｓ４１３を受信すると、引継ぎの是認を行うメッセージｓ４１４を送信することで、前述のデータベースアクセスクライアント部４００５の要求した前述のメッセージｓ４０１に対応するデータベース・マスタノード部が移動したことを確認・是認する。【００６７】
その後、当該データベース・マスタノード部２：４００７は、他のデータベース・マスタノード部全てから前述のメッセージｓ４１４を含む、引継ぎの是認を行うメッセージを受信する。【００６８】
新たに前述のメッセージｓ４０１に対応するデータベース・マスタノード部となった当該データベース・マスタノード部２：４００７は、最初に内部のデータ処理部（ＣＰＵ処理部）４０２８を用いて、前述のデータベース・マスタノード部１：４００６が持つ主従関係定義４０１８配下のデータベース・スレーブノード部１−１：４００９、データベース・スレーブノード部１−２：４０１０、データベース・スレーブノード部１−３：４０１１で実施されたサブ要求実行クエリの実行結果を無効にすることを実施する。【００６９】
具体的には、当該データベース・マスタノード部２：４００７は、前述のデータベース・スレーブノード部１−１：４００９に、ロールバック要求を含むメッセージｓ４１５を送信する。【００７０】
同様に、当該データベース・マスタノード部２：４００７は、前述のデータベース・スレーブノード部１−２：４０１０に、ロールバック要求を含むメッセージｓ４１６を送信する。【００７１】
同様に、当該データベース・マスタノード部２：４００７は、前述のデータベース・スレーブノード部１−３：４０１１に、ロールバック要求を含むメッセージｓ４１７を送信する。【００７２】
その後、当該データベース・マスタノード部２：４００７は、内部のデータ処理部（ＣＰＵ処理部）４０２８を用いて、指定された前述のメッセージｓ４０１に含まれたＳＱＬの記述である実行要求クエリを改めて並列に実行可能な形式に分解し、サブ要求実行クエリに変形・生成する。その変形方法は、図３を含めた方式によって実施される。【００７３】
その後、前述のデータベース・マスタノード部２：４００７は、前述の主従関係定義４０１９に基づき、配下の前述のデータベース・スレーブノード部２−１：４０１２に、当該サブ要求実行クエリのＳＱＬ記述を含んだメッセージｓ４１８を送信する。同様に、前述のデータベース・スレーブノード部２−２：４０１３に、当該サブ要求実行クエリのＳＱＬ記述を含んだメッセージｓ４１９を送信する。同様に、前述のデータベース・スレーブノード部２−３：４０１４に、当該サブ要求実行クエリのＳＱＬ記述を含んだメッセージｓ４２０を送信する。【００７４】
前述のデータベース・スレーブノード部２−１：４０１２は、当該メッセージｓ４１８に含まれるサブ要求実行クエリのＳＱＬ記述を図３により記載された方法に基づき、並列に実行可能な形式に分解の上で実行する。その処理で、特にエラーが発生していない場合は、前述のメッセージｓ４１８に対する正常応答として、検索結果を含んだメッセージｓ４２１を、データベース・マスタノード部２：４００７に送信する。【００７５】
前述のデータベース・スレーブノード部２−２：４０１３は、当該メッセージｓ４１９に含まれるサブ要求実行クエリのＳＱＬ記述を図３により記載された方法に基づき、並列に実行可能な形式に分解の上で実行する。その処理で、特にエラーが発生していない場合は、前述のメッセージｓ４１９に対する正常応答として、検索結果を含んだメッセージｓ４２２を、データベース・マスタノード部２：４００７に送信する。【００７６】
前述のデータベース・スレーブノード部２−３：４０１４は、当該メッセージｓ４２０に含まれるサブ要求実行クエリのＳＱＬ記述を図３により記載された方法に基づき、並列に実行可能な形式に分解の上で実行する。その処理で、特にエラーが発生していない場合は、前述のメッセージｓ４２０に対する正常応答として、検索結果を含んだメッセージｓ４２３を、データベース・マスタノード部２：４００７に送信する。【００７７】
その後、前述のデータベース・マスタノード部２：４００７では、通常処理と同様に、図３における集約処理を実施し、結果を統合した後に、応答メッセージｓ４２４を生成し、要求元であるデータベースアクセスクライアント部４００５に送信することになる。【００７８】
以上のように、従来のシェアードナッシング並列検索の技術領域では、大きく２系統の関連技術が存在する。【００７９】
第一の技術は、＜非特許文献１＞で言及されている様にシェアードナッシング並列検索を効果的に実行するためパーティショニング化において偏在データを考慮して結合演算処理を行い、最後に統合和演算処理、並びに射影・制限演算処理を行う方法である。【００８０】
第二の技術は、図１Ａ、図１Ｂ、図２Ａ、図２Ｂの様な＜特許文献２＞で言及されている様な方法であり、データベース・スレーブノード部とデータベース・マスタノード部の、エラー発生時の後処理に関するプロトコルを記したものである。【００８１】
第一の技術により、効率的に並列検索を実施することが可能となるが、前述の通り、割り付けられた一つの処理実行部でエラーが発生した場合、それを補償しなければシェアードナッシング並列検索結果で不具合が発生する課題が存在する。しかし、＜非特許文献１＞では、その補償の方法は開示されていない。【００８２】
第二の技術は、分散コミットメント方法に準拠した良く見られる方式であり、且つフェールオーバパートナー関係定義を記すことで、第一の技術で生じる課題について部分的に応じている様にも思われる。【００８３】
しかし、第二の技術は、分散コミットメント方法に準拠している故にプロトコル上、不経済な点が２つの点で存在する。【００８４】
第一の点として、常にフェールオーバパートナー関係定義を行う必要があるにも関わらず、シェアードナッシング並列検索での明示的な実行関係が定義されていないため、稼働率を最大化した運用について実現出来ない場合が存在する。【００８５】
第二の点として、＜非特許文献１＞で言及されている様な偏在データを考慮したパーティショニング化を実施した場合、クエリの実行途上でエラーが発生しても、分散コミットメント方法に準拠している故に局所的な対応が不可能となる場合が存在し、完全に当初結果から実行のし直しが必要になる、という可能性も存在する。
【先行技術文献】
【特許文献】
【００８６】
【特許文献１】特開２００４−２８０５２８号公報
【特許文献２】特願２００７−５０３９１２号公報
【非特許文献】
【００８７】
【非特許文献１】Ｙｕ  Ｘｕ  ｅｔ  ａｌ，  “Ｈａｎｄｌｉｎｇ  Ｄａｔａ  Ｓｋｅｗ  ｉｎ  Ｐａｒａｌｌｅｌ  Ｊｏｉｎｓ  ｉｎ  Ｓｈａｒｅｄ−Ｎｏｔｈｉｎｇ  Ｓｙｓｔｅｍｓ”，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＳＩＧＭＯＤ’０８  Ｃｏｎｆｅｒｅｎｃｅ，  ２００８．
【発明の概要】
【００８８】
本発明の目的は、複数サイト（ｓｉｔｅ）・パーティション（ｐａｒｔｉｔｉｏｎ）群で構成される分散ストレージ群を利用してシェアードナッシング並列検索を実行出来るデータベース管理システムにおいて、シェアードナッシング並列検索結果で不具合が生じない様に検索処理途上でエラーが発生した際に対処する補償処理手法に関し、当該補償処理手法を複数選択し、前述の分散ストレージ群に関する性能統計情報・信頼性情報から計算した稼働率・故障率等から補償処理を見込んだ総処理コスト期待値を当該補償処理手法の各々で計算し、総処理コスト期待値が最も小さい補償処理に基づき並列検索のクエリ分割を定めることで、シェアードナッシング並列検索結果で不具合を発生させることなく、稼働率を最大にさせる運用を実現することである。
【００８９】
上記目的を達成するため、本発明は第一の態様として補償処理手法を複数選択し、前述分散ストレージ群に関する性能統計情報・信頼性情報から計算した稼働率・故障率等から補償処理を見込んだ総処理コスト期待値を当該補償処理手法の各々で計算し、総処理コスト期待値が最も小さい補償処理に基づき並列検索のクエリ分割を定める機能を提供する。
【００９０】
上記目的を達成するため、本発明では、第二の態様として第一の態様に加え、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測し、任意時点での稼働率・故障率を予め計算しておき、それを基に総処理コスト期待値を計算する機能を提供する。
【００９１】
上記目的を達成するため、本発明は第三の態様として第一の態様に加え、クエリを構成する結合演算を複数の要素クエリに分解し、当該要素クエリを実施することで発生する中間成果と、要素クエリを改めて結合するクエリ最適化手法を利用することを前提とし、前述の要素クエリをシェアードナッシング並列検索結果で実施する度に、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点での稼働率・故障率を取得し、当該稼働率・故障率を基に処理コスト期待値を計算の上で、最適化内容を変更する最適化部を提供する。
【００９２】
上記目的を達成するため、本発明は第四の態様として第三の態様に加え、クエリ対象とするデータに偏在性があることを確認し、当該データを３種類に分割した上で要素クエリを実施する機能を提供する。
【００９３】
上記目的を達成するため、本発明は第五の態様として第三の態様に加え、クエリを構成する結合演算を複数の要素クエリに分解し、当該要素クエリを実施することで発生する中間成果と、要素クエリを改めて結合するクエリ最適化手法を利用することを前提とし、前述の要素クエリをシェアードナッシング並列検索結果で実施する場合、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点から指定期間の推定稼働率・推定故障率を取得し、当該推定稼働率・推定故障率を基に処理コスト期待値を計算の上で、最適化内容を変更する最適化部を提供する。
【００９４】
上記目的を達成するため、本発明は第六の態様として第五の態様に加え、クエリ対象とするデータに偏在性があることを確認し、当該データを３種類に分割した上で要素クエリを実施する機能を提供する。
【００９５】
本発明により、大きくは２つの面で効果が見込める。
第一に、本発明では、予め補償処理が実施されることを前提としているため、従来第一の技術において不備であったエラー時の補償には対応出来る様になる。
第二に、本発明では、クエリを構成する結合演算を複数の要素クエリに分解し、当該要素クエリを実施することで発生する中間成果と、要素クエリを改めて結合するクエリ最適化手法を利用することを前提とし、前述の要素クエリをシェアードナッシング並列検索結果で実施する場合、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点から指定期間の推定稼働率・推定故障率を取得し、当該推定稼働率・推定故障率を基に処理コスト期待値を計算の上で、最適化内容を変更するので、従来第二の技術が分散コミットメント方法に準拠している故に局所的な対応が不可能となり、不経済と為る課題に対しては対応出来る様になる。
【図面の簡単な説明】
【００９６】
【図１Ａ】「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」の属する技術領域において、従来手法を実現し得る装置構成を記したブロック図である。
【図１Ｂ】図１Ａに記した構成のうち、第３の機能層の構成の詳細を記したブロック図である。
【図２Ａ】従来手法を実現し得る装置構成の上で従来手法の処理内容を記した手順図である。
【図２Ｂ】図２Ａに記した処理内容のうち、第３の機能層の処理内容の詳細を記した手順図である。
【図３】本発明の「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」を実現する上で取り扱われる偏在データと、シェアードナッシング並列検索を実行する単位との関係を記した説明図である。
【図４Ａ】本発明の「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」の内、最も複雑な手順を実現する装置構成を記したブロック図である。
【図４Ｂ】図４Ａに記した構成のうち、第３の機能層の構成の一部の詳細を記したブロック図である。
【図４Ｃ】図４Ａに記した構成のうち、第３の機能層の構成の残りの詳細を記したブロック図である。
【図５Ａ】本発明の「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」を実現する装置構成の上で、最も基本的な第一実施例の全体処理内容を記した手順図である。
【図５Ｂ】図５Ａに記した処理内容のうち、第３の機能層の処理内容の一部の詳細を記した手順図である。
【図５Ｃ】図５Ａに記した処理内容のうち、第３の機能層の処理内容の残りの詳細を記した手順図である。
【図６】本発明の「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」を実現する上で取り扱われる評価式について記した説明図である。
【図７Ａ】本発明の「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」を実現する装置構成の上で、第二実施例の全体処理内容を記した手順図である。
【図７Ｂ】図７Ａに記した処理内容のうち、第３の機能層の処理内容の一部の詳細を記した手順図である。
【図７Ｃ】図７Ａに記した処理内容のうち、第３の機能層の処理内容の残りの詳細を記した手順図である。
【図８Ａ】本発明の「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」を実現する装置構成の上で、第三実施例、並びに第四実施例の全体処理内容を記した手順図である。
【図８Ｂ】図８Ａに記した処理内容のうち、第３の機能層の処理内容の一部の詳細を記した手順図である。
【図８Ｃ】図８Ａに記した処理内容のうち、第３の機能層の処理内容の残りの詳細を記した手順図である。
【図９Ａ】本発明の「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」を実現する装置構成の上で、第五実施例、並びに第六実施例の全体処理内容を記した手順図である。
【図９Ｂ】図９Ａに記した処理内容のうち、第３の機能層の処理内容の一部の詳細を記した手順図である。
【図９Ｃ】図９Ａに記した処理内容のうち、第３の機能層の処理内容の残りの詳細を記した手順図である。
【発明を実施するための形態】
【００９７】
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００９８】
＜基本構成に関する説明＞
本発明である「シェアードナッシング（Ｓｈａｒｅｄ  Ｎｏｔｈｉｎｇ）並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」は、図４Ａ〜図４Ｃ（図４Ａ、図４Ｂ、図４Ｃ）の様な装置構成を前提とし、その環境において、図３、図５Ａ〜図５Ｃ（図５Ａ、図５Ｂ、図５Ｃ）、図７Ａ〜図７Ｃ（図７Ａ、図７Ｂ、図７Ｃ）、図８Ａ〜図８Ｃ（図８Ａ、図８Ｂ、図８Ｃ）、図９Ａ〜図９Ｃ（図９Ａ、図９Ｂ、図９Ｃ）の様な手順で、図６の記述要素を含むことを前提として実施される。
【００９９】
図４Ａ〜図４Ｃの装置構成は、最も複雑な手順である実施例を実行する場合に必要となる構成要素を含んでいる。しかし、最も基本的な実施例を実行するに当たっては、その全てが必要となる訳ではない。このため、図５Ａ〜図５Ｃで定義する第一実施例を実施するに当たって利用していない要素群は省略可能であると伴に、図４Ａ〜図４Ｃ記載以外の構成要素を含んでも構わない。
【０１００】
図４Ａ〜図４Ｃに示す様に、本発明のクエリ装置は、大きく１つ以上のネットワークと、少なくとも３つの機能層を含む。ネットワークとして、ＬＡＮ／ＷＡＮ／Ｉｎｔｅｒｎｅｔ等、各種ネットワーク１００１、１００２を別のものとして定義しているが、これらと同じものと考えることも可能である。また、その種類に関して、ここでは区別する理由は存在しない。なお、各種ネットワーク１００１、１００２には、ルータやスイッチ等の中継装置も含まれるものとする。
【０１０１】
３つの機能層のうち、第１の機能層は、アプリケーションプログラムであるデータベースアクセスクライアント部１００３が含まれる機能層である。第２の機能層は、データベースアクセス部１００４が含まれる機能層である。第３の機能層は、リソース管理／トランザクション制御部１０１７、１０１８、１０１９、１０２０や分散ストレージ１００５、１００６、１００７、１００８、１００９、１０１０、１０１１、１０１２等が含まれる機能層である。各々の機能層は、前述のＬＡＮ／ＷＡＮ／Ｉｎｔｅｒｎｅｔ等、各種ネットワーク１００１、１００２を介して相互にアクセスする。なお、各々の機能層は、ＰＣ（パソコン）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機により実現される。
【０１０２】
データベースアクセス部１００４は、クエリ受付部１０２１と、実行制御部１０２２と、クエリ解析部１０２３と、ディクショナリアクセス部１０２４と、最適化部１０２５と、処理実行部１：１０２７と、処理実行部２：１０２８と、処理実行部（Ｎ−１）：１０２９と、処理実行部Ｎ：１０３０を含む。クエリ受付部１０２１は、データベースアクセスクライアント部１００３からの要求実行クエリを受け付ける。ディクショナリアクセス部１０２４は、その要求実行クエリに含まれるべき定義情報を管理するディクショナリに対するアクセスを行う。クエリ解析部１０２３は、当該ディクショナリアクセス部１０２４の情報を基に要求実行クエリを分析する。最適化部１０２５は、解析した要求実行クエリの最適化を行う。処理実行部１：１０２７、処理実行部２：１０２８、処理実行部（Ｎ−１）：１０２９、及び処理実行部Ｎ：１０３０は、当該最適化部１０２５の結果を受けて、前述の要求実行クエリを分解し、個別の実行単位を実施する。実行制御部１０２２は、当該処理実行部のグループを制御する。
【０１０３】
更に、データベースアクセス部１００４は、統計情報管理部エージェント管理部１０２６と、レプリカ作成管理部１０９６も含む。統計情報管理部エージェント管理部１０２６は、実際の要求実行クエリの要素を実施した結果を収集し、前述の最適化部１０２５の処理に反映する。レプリカ作成管理部１０９６は、分散ストレージ１００５、１００６、１００７、１００８、１００９、１０１０、１０１１、１０１２上に同等なレプリカを作成する。
【０１０４】
前述のクエリ受付部１０２１は、実際に要求された要求実行クエリである指定クエリ１０３１を保持する。前述の処理実行部１：１０２７、前述の処理実行部２：１０２８、前述の処理実行部（Ｎ−１）：１０２９、並びに前述の処理実行部Ｎ：１０３０の各々は、当該指定クエリ１０３１を分解した実行単位である１０３２、１０３３、１０３４、並びに１０３５を含む。
【０１０５】
図４Ａ〜図４Ｃでは、前述のリソース管理／トランザクション制御部１０１７や前述の分散ストレージ１００５等が含まれる機能層に４つのサイトを記しているが、これに限定される訳ではない。各サイトは、各々、リソース管理／トランザクション制御部１０１７、１０１８、１０１９、１０２０を含む。
【０１０６】
更に、通常は、リソース管理／トランザクション制御部１０１７を持つサイト、リソース管理／トランザクション制御部１０１８を持つサイト、リソース管理／トランザクション制御部１０１９を持つサイト、リソース管理／トランザクション制御部１０２０を持つサイトは、同等レベルのレプリカに相当する。このため、前述のリソース管理／トランザクション制御部１０１７を持つサイト、リソース管理／トランザクション制御部１０１８を持つサイト、リソース管理／トランザクション制御部１０１９を持つサイト、リソース管理／トランザクション制御部１０２０を持つサイトは、互いに同じ構成を取ることを前提とする。
【０１０７】
しかし、要求に応じて、リソース管理／トランザクション制御部１０１７を持つサイト、リソース管理／トランザクション制御部１０１８を持つサイト、リソース管理／トランザクション制御部１０１９を持つサイト、リソース管理／トランザクション制御部１０２０を持つサイトのうち２つは等価である運用でも良い。
【０１０８】
なお、本発明では、レプリカを維持管理する仕組みについては、言及しない。このため、レプリカの反映時間に遅れが出る方法を含めて、どの様な方法を採用しても良い。
【０１０９】
リソース管理／トランザクション制御部１０１７を持つサイトには、分散ストレージ１００５、並びに１００６が関係付けられて配置されている。当該分散ストレージ１００５は、データベースの表領域、索引領域を持つ。別の分散ストレージ１００６には、Ｌｏｇ（ログ），ジャーナル等が配置される。この場合、分散ストレージは２つとは限らず、１つ若しくは３つ以上でも良い。すなわち、分散ストレージは、少なくとも１つ存在する。
【０１１０】
更に、リソース管理／トランザクション制御部１０１７を持つサイトは、性能／エラー情報／統計情報サービス１０１３も含む。
【０１１１】
当該分散ストレージ１００５内のデータベースの表領域、索引領域には、関係Ｒ１に相当し偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０３６と、被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０３７と、一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０３８と、関係Ｒ２に相当し偏在データを扱う表Ｔａｂｌｅ．２（ｓ）：１０３９と、被偏在データを扱う表Ｔａｂｌｅ．２（ｊ）：１０４０と、一般データを扱う表Ｔａｂｌｅ．２（ｃ）：１０４１と、関係Ｒｎに相当し偏在データを扱う表Ｔａｂｌｅ．ｎ（ｓ）：１０４２と、被偏在データを扱う表Ｔａｂｌｅ．ｎ（ｊ）：１０４３と、一般データを扱う表Ｔａｂｌｅ．ｎ（ｃ）：１０４４が格納される。
【０１１２】
また、索引領域には、索引１０４５が格納される。一時領域には、中間成果１：１０４６、中間成果２：１０９２が格納される。
【０１１３】
前述の分散ストレージ１００６は、Ｌｏｇ／ジャーナル１０４７と、性能情報／エラー情報１０４８と、オブジェクト毎の統計情報１０４９を含む。性能情報／エラー情報１０４８は、全般的な性能情報やエラー情報を管理する。なお、情報の管理手法としては、情報の統合／リスト化／グループ化／データベース化等が考えられる。但し、実際には、これらの例に限定されない。オブジェクト毎の統計情報１０４９は、分散ストレージ１００５上の前述の表Ｔａｂｌｅ．１（ｓ）：１０３６、前述の表Ｔａｂｌｅ．１（ｊ）：１０３７、前述の表Ｔａｂｌｅ．１（ｃ）：１０３８、前述の表Ｔａｂｌｅ．２（ｓ）：１０３９、前述の表Ｔａｂｌｅ．２（ｊ）：１０４０、前述の表Ｔａｂｌｅ．２（ｃ）：１０４１、前述の表Ｔａｂｌｅ．ｎ（ｓ）：１０４２、前述の表Ｔａｂｌｅ．ｎ（ｊ）：１０４３、前述の表Ｔａｂｌｅ．ｎ（ｃ）：１０４４、前述の索引１０４５に対するアクセス性能の統計情報を管理する。
【０１１４】
リソース管理／トランザクション制御部１０１８を持つサイトには、分散ストレージ１００７、並びに１００８が関係付けられて配置されている。当該分散ストレージ１００７は、データベースの表領域、索引領域を持つ。別の分散ストレージ１００８には、Ｌｏｇやジャーナル等が配置される。この場合、分散ストレージは２つとは限らず、１つ若しくは３つ以上でも良い。すなわち、分散ストレージは、少なくとも１つ存在する。
【０１１５】
更に、リソース管理／トランザクション制御部１０１８を持つサイトは、性能／エラー情報／統計情報サービス１０１４も含む。
【０１１６】
当該分散ストレージ１００７内のデータベースの表領域、索引領域には、関係Ｒ１に相当し偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０５０と、被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０５１と、一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０５２と、関係Ｒ２に相当し偏在データを扱う表Ｔａｂｌｅ．２（ｓ）：１０５３と、被偏在データを扱う表Ｔａｂｌｅ．２（ｊ）：１０５４と、一般データを扱う表Ｔａｂｌｅ．２（ｃ）：１０５５と、関係Ｒｎに相当し偏在データを扱う表Ｔａｂｌｅ．ｎ（ｓ）：１０５６と、被偏在データを扱う表Ｔａｂｌｅ．ｎ（ｊ）：１０５７と、一般データを扱う表Ｔａｂｌｅ．ｎ（ｃ）：１０５８が格納される。
【０１１７】
また、索引領域には、索引１０５９が格納される。一時領域には、中間成果１、１０６０、中間成果２、１０９３が格納される。
【０１１８】
前述の分散ストレージ１００８には、Ｌｏｇ／ジャーナル１０６１と、オブジェクト毎の統計情報１０６３と、性能情報／エラー情報１０６２を含む。性能情報／エラー情報１０６２は、全般的な性能情報やエラー情報を管理する。オブジェクト毎の統計情報１０６３は、分散ストレージ１００７上の前述の表Ｔａｂｌｅ．１（ｓ）：１０５０、前述の表Ｔａｂｌｅ．１（ｊ）：１０５１、前述の表Ｔａｂｌｅ．１（ｃ）：１０５２、前述の表Ｔａｂｌｅ．２（ｓ）：１０５３、前述の表Ｔａｂｌｅ．２（ｊ）：１０５４、前述の表Ｔａｂｌｅ．２（ｃ）：１０５５、前述の表Ｔａｂｌｅ．ｎ（ｓ）：１０５６２、前述の表Ｔａｂｌｅ．ｎ（ｊ）：１０５７、前述の表Ｔａｂｌｅ．ｎ（ｃ）：１０５８、前述の索引１０５９に対するアクセス性能の統計情報を管理する。
【０１１９】
リソース管理／トランザクション制御部１０１９を持つサイトには、分散ストレージ１００９、並びに１０１０が関係付けられて配置されている。当該分散ストレージ１００９は、データベースの表領域、索引領域を持つ。別の分散ストレージ１０１０には、Ｌｏｇやジャーナル等が配置される。この場合、分散ストレージは２つとは限らず、１つ若しくは３つ以上でも良い。すなわち、分散ストレージは、少なくとも１つ存在する。
【０１２０】
更に、リソース管理／トランザクション制御部１０１９を持つサイトは、性能／エラー情報／統計情報サービス１０１５も含む。
【０１２１】
当該分散ストレージ１００９内のデータベースの表領域、索引領域には、関係Ｒ１に相当し偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０６４と、被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０６５と、一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０６６と、関係Ｒ２に相当し偏在データを扱う表Ｔａｂｌｅ．２（ｓ）：１０６７と、被偏在データを扱う表Ｔａｂｌｅ．２（ｊ）：１０６８と、一般データを扱う表Ｔａｂｌｅ．２（ｃ）：１０６９と、関係Ｒｎに相当し偏在データを扱う表Ｔａｂｌｅ．ｎ（ｓ）：１０７０と、被偏在データを扱う表Ｔａｂｌｅ．ｎ（ｊ）：１０７１と、一般データを扱う表Ｔａｂｌｅ．ｎ（ｃ）：１０７２が格納される。
【０１２２】
また、索引領域には、索引１０７３が格納される。一時領域には、中間成果１、１０７４、中間成果２、１０９４が格納される。
【０１２３】
前述の分散ストレージ１０１０は、Ｌｏｇ／ジャーナル１０７５と、性能情報／エラー情報１０７６と、オブジェクト毎の統計情報１０７７を含む。性能情報／エラー情報１０７６は、全般的な性能情報やエラー情報を管理する。オブジェクト毎の統計情報１０７７は、分散ストレージ１００９上の前述の表Ｔａｂｌｅ．１（ｓ）：１０６４、前述の表Ｔａｂｌｅ．１（ｊ）：１０６５、前述の表Ｔａｂｌｅ．１（ｃ）：１０６６、前述の表Ｔａｂｌｅ．２（ｓ）：１０６７、前述の表Ｔａｂｌｅ．２（ｊ）：１０６８、前述の表Ｔａｂｌｅ．２（ｃ）：１０６９、前述の表Ｔａｂｌｅ．ｎ（ｓ）：１０７０、前述の表Ｔａｂｌｅ．ｎ（ｊ）：１０７１、前述の表Ｔａｂｌｅ．ｎ（ｃ）：１０７２、前述の索引１０７３に対するアクセス性能の統計情報を管理する。
【０１２４】
リソース管理／トランザクション制御部１０２０を持つサイトには、分散ストレージ１０１１、並びに１０１２が関係付けられて配置されている。当該分散ストレージ１０１１は、データベースの表領域、索引領域を持つ。別の分散ストレージ１０１２には、Ｌｏｇやジャーナル等が配置される。この場合、分散ストレージは２つとは限らず、１つ若しくは３つ以上でも良い。すなわち、分散ストレージは、少なくとも１つ存在する。
【０１２５】
更に、リソース管理／トランザクション制御部１０２０を持つサイトは、性能／エラー情報／統計情報サービス１０１６も含む。
【０１２６】
当該分散ストレージ１０１１内のデータベースの表領域、索引領域には、関係Ｒ１に相当し偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０７８と、被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０７９と、一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０８０と、関係Ｒ２に相当し偏在データを扱う表Ｔａｂｌｅ．２（ｓ）：１０８１と、被偏在データを扱う表Ｔａｂｌｅ．２（ｊ）：１０８２と、一般データを扱う表Ｔａｂｌｅ．２（ｃ）：１０８３と、関係Ｒｎに相当し偏在データを扱う表Ｔａｂｌｅ．ｎ（ｓ）：１０８４と、被偏在データを扱う表Ｔａｂｌｅ．ｎ（ｊ）：１０８５と、一般データを扱う表Ｔａｂｌｅ．ｎ（ｃ）：１０８６が格納される。
【０１２７】
また、索引領域には、索引１０８７が格納される。一時領域には、中間成果１、１０８８、中間成果２、１０９５が格納される。
【０１２８】
前述の分散ストレージ１０１１には、Ｌｏｇ／ジャーナル１０８９と、性能情報／エラー情報１０９０と、オブジェクト毎の統計情報１０９１を含む。性能情報／エラー情報１０９０は、全般的な性能情報やエラー情報を管理する。オブジェクト毎の統計情報１０９１は、分散ストレージ１０１２上の前述の表Ｔａｂｌｅ．１（ｓ）：１０７８、前述の表Ｔａｂｌｅ．１（ｊ）：１０７９、前述の表Ｔａｂｌｅ．１（ｃ）：１０８０、前述の表Ｔａｂｌｅ．２（ｓ）：１０８１、前述の表Ｔａｂｌｅ．２（ｊ）：１０８２、前述の表Ｔａｂｌｅ．２（ｃ）：１０８３、前述の表Ｔａｂｌｅ．ｎ（ｓ）：１０８４、前述の表Ｔａｂｌｅ．ｎ（ｊ）：１０８５、前述の表Ｔａｂｌｅ．ｎ（ｃ）：１０８６、前述の索引１０８７に対するアクセス性能の統計情報を管理する。
【０１２９】
＜第一実施例＞
ここでは、本発明である「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」の第一実施例について図５Ａ〜図５Ｃ、図６を用いて、説明する。
【０１３０】
第一実施例の特徴は、分散ストレージに関して別途計測された信頼性情報を基に、指定クエリの分割方針を変更することである。分散ストレージの信頼性が低い場合は、指定クエリの実行単位を多重化して実施し、信頼性が高い場合は、分割して並列に実施する。
【０１３１】
データベースアクセス部１００４配下にあるクエリ受付部１０２１は、データベースアクセスクライアント部１００３からＳＱＬ記述で表現される要求実行クエリを含んだメッセージｓ００１を受け付けると、指定クエリ１０３１として保持した後、処理実行部のグループを制御する実行制御部１０２２に要求実行クエリｓ００２として渡す。
【０１３２】
当該実行制御部１０２２は、当該要求実行クエリｓ００２を分解し、個別の実行単位の実行クエリ群を生成するため、更に、クエリ解析部１０２３に要求実行クエリｓ００３として渡す。
【０１３３】
前述のクエリ解析部１０２３は、要求実行クエリｓ００３を受理すると、要求実行クエリｓ００３の構文解析を実施する。構文解析の際は、ディクショナリアクセス部１０２４を介してディクショナリから定義情報ｓ００４を検索して解析を実施する。
【０１３４】
クエリ解析部１０２３は、その解析結果を中間解析結果ｓ００５として一度、前述の実行制御部１０２２に返信する。その後、当該実行制御部１０２２は、当該中間解析結果ｓ００５の最適化を実施するため、最適化部１０２５に当該中間解析結果ｓ００５を引数で含めた実行要求ｓ００６を送信する。
【０１３５】
最適化部１０２５は、図３に基づいた方式に基づき、前述の中間解析結果ｓ００５の変形を行う。特に、図６の（式１）に基づき、実際の要求実行クエリの要素を実行した結果により得られた性能統計情報・信頼性情報に基づいて評価を行うため、必要に応じて、統計情報管理部エージェント管理部１０２６から性能統計情報・信頼性情報ｓ００７を入手する。
【０１３６】
第一実施例では、実際の要求実行クエリの要素を実行した結果により得られた性能統計情報・信頼性情報を用いる訳ではなく、事前に別途計測された信頼性情報を用いるため、性能統計情報・信頼性情報ｓ００７は、事前に固定的に定義・登録された値となる。
【０１３７】
当該最適化部１０２５は、実際の実行単位となる複数の要求実行要素クエリ群ｓ００８を生成することになる。その生成手法は、以降に示すエラー補償の手順に基づく。
【０１３８】
＜シェアードナッシング並列検索のパーティショニング依存のエラー補償手法＞
以下に、シェアードナッシング並列検索のパーティショニング依存のエラー補償の手順について示す。
【０１３９】
なお、ここでは記述の制約上サイトのみを記しているが、第五実施例では、図３で説明しているシェアードナッシング並列検索のパーティショニングを実施しており、実際には割付単位はサイトとは限らない。従って、本文説明ではサイト（パーティション）として記載する。
【０１４０】
当該補償手法では、シェアードナッシング並列検索のパーティショニングの具体的な方法として、「再配分プロトコル」並びに「多重化プロトコル」が選択的に採用される。
【０１４１】
「再配分プロトコル」とは、１つのクエリを分割して、シェアードナッシング並列検索のパーティショニングにおいて実施する際にエラーが発生し、その補償手法としてエラーの発生した要求実行要素クエリ部分の再実行を、エラーの発生したサイト以外の全てのサイトで再度、代替実施するものである。
【０１４２】
これに対して「多重化プロトコル」とは、１つのクエリを分割して、シェアードナッシング並列検索のパーティショニングにおいて実施する際にエラーが発生しても対応出来る様に、同じクエリ内容を完全に多重化して行う方法であり、要求実行要素クエリ部分の再実行は行わない。
【０１４３】
まず、手順が開始されると、当該最適化部１０２５は、前述の中間解析結果ｓ００５で表現されるクエリ内容に応じて部分多重化に対して多重化せず「シェアードナッシング」で処理する範囲を特定する（ステップ．１）。
【０１４４】
その後、前述の最適化部１０２５は、独立して利用出来るリソース管理／トランザクション処理部を持つサイト（パーティション）群の集合を全て特定する。ここでは、そのサイト（パーティション）群集合をＳ：｛ｓ（１），．．．，ｓ（Ｎ）｝で表現する（ステップ．２）。
【０１４５】
その後、前述の最適化部１０２５は、指定クエリの分割方針を決定するため、図６の（式１）を利用して、「再配分プロトコル」並びに「多重化プロトコル」の評価を実施する。まずは、「再配分プロトコル」に関する評価を実施する（ステップ．３）。
【０１４６】
前述の最適化部１０２５は、「再配分プロトコル」として前述のサイト（パーティション）群集合Ｓから多重化向けに利用するサイト（パーティション）群集合ＳＲ：｛ｓｒ（１），．．，ｓｒ（ｍ）｝を指定する（ステップ．３．１）。その後、前述の最適化部１０２５は、前述のサイト（パーティション）群から多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲを指定する（ステップ．３．２）。
【０１４７】
前述の（ステップ．３．２）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲの台数ｎを求める（ステップ．３．３）。
【０１４８】
続けて、前述の最適化部１０２５は、実施クエリの想定件数を前述の台数ｎで均等割りし指定クエリの実行単位をｎ作成し、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲの各サイト（パーティション）へ割付を行う（ステップ．３．４）。
【０１４９】
前述の（ステップ．３．４）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲから１サイト（パーティション）ｓ（ｋ）を順次選択する（ステップ．３．５）。
【０１５０】
（ステップ．３．５）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する。前述の最適化部１０２５は、ｊｏｉｎｃｏｓｔ関数で計算する際、通常、結合演算コスト値を計算し、単一Ｔａｂｌｅを扱う場合、その検索コスト値を計算する。その際、前述の最適化部１０２５は、「再配分プロトコル」と発生するデータ件数を指定する（ステップ．３．５．１）。
【０１５１】
前述の（ステップ．３．５．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｋ））を前述のコスト値に重畳し、失敗なし時の期待ｊｏｉｎｃｏｓｔ１値（ｓ（ｋ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｋ））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ００７、若しくはｓ１０７からその都度、読み込まれた値より求める（ステップ．３．５．２）。
【０１５２】
前述の（ステップ．３．５．２）に続いて、前述の最適化部１０２５は、当該稼働率に対する故障率Ｆ（ｓ（ｋ））を前述のコスト値に重畳し、失敗時の期待ｊｏｉｎｃｏｓｔ２値（ｓ（ｋ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく故障率Ｆ（ｓ（ｋ））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ００７、若しくはｓ１０７からその都度、読み込まれた値より求める（ステップ．３．５．３）。
【０１５３】
前述の（ステップ．３．５．３）に続いて、前述の最適化部１０２５は、失敗した指定クエリの実行単位内容を（ｎ−１）分割し、現在選択していないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓ（ｋ）｝の各サイト（パーティション）に割付ける（ステップ．３．５．４）。
【０１５４】
前述の（ステップ．３．５．４）に続いて、前述の最適化部１０２５は、多重化に利用しないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓ（ｋ）｝から１サイト（パーティション）ｓ（ｌ）を選択する（ステップ．３．５．５）。
【０１５５】
（ステップ．３．５．５）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する（ステップ．３．５．５．１）。
【０１５６】
前述の（ステップ．３．５．５．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、前述の故障率Ｆ（ｓ（ｋ））を前述のコスト値に重畳し、期待ｊｏｉｎｃｏｓｔ３値（ｓ（ｌ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、前述の故障率Ｆ（ｓ（ｋ））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ００７、若しくはｓ１０７からその都度、読み込まれた値より求める（ステップ．３．５．５．２）。
【０１５７】
前述の最適化部１０２５は、次のサイト（パーティション）ｓ（ｌ＋１）を選択する。前述の最適化部１０２５は、これを選択出来なくなるまで繰り返す（ステップ．３．５．５．３）。
【０１５８】
前述の（ステップ．３．５．５）に続いて、前述の最適化部１０２５は、サイト（パーティション）群集合Ｓ−ＳＲ−｛ｓ（ｋ）｝の全サイト（パーティション）ｓ（ｌ）に渡る期待ｊｏｉｎｃｏｓｔ３値（ｓ（ｋ））の合計値を求める（ステップ．３．５．６）。
【０１５９】
前述の最適化部１０２５は、次のサイト（パーティション）ｓ（ｋ＋１）を選択する。前述の最適化部１０２５は、これを選択出来なくなるまで繰り返す（ステップ．３．５．７）。
【０１６０】
前述の（ステップ．３．５）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲから任意サイト（パーティション）の組合せ集合ＳＣ：｛（ｓ（１），ｓ（２）），…，（ｓ（ｋ），ｓ（ｋ＋１））｝を定義する（ステップ．３．６）。
【０１６１】
前述の（ステップ．３．６）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）の組合せ集合ＳＣから１組合せｓｃ（ｋ）（要素をｓ（ｋ１），ｓ（ｋ２）とする。）を順次選択する（ステップ．３．７）。
【０１６２】
（ステップ．３．７）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数を基に２回呼び出し、組合要素毎に計算する（ステップ．３．７．１）。
【０１６３】
前述の（ステップ．３．７．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく故障率Ｆ（ｓ（ｋ１）），Ｆ（ｓ（ｋ２））を前述のコスト値に重畳し、失敗時の期待ｊｏｉｎｃｏｓｔ４値（ｓ（ｋ１））と期待ｊｏｉｎｃｏｓｔ４値（ｓ（ｋ２））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく故障率Ｆ（ｓ（ｋ１）），Ｆ（ｓ（ｋ２））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ００７、若しくはｓ１０７からその都度、読み込まれた値より求める（ステップ．３．７．２）。
【０１６４】
前述の（ステップ．３．７．２）に続いて、前述の最適化部１０２５は、失敗した指定クエリの実行単位内容を（ｎ−２）分割し、現在選択していないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１），ｓ（ｋ２））｝の各サイト（パーティション）に割付ける（ステップ．３．７．３）。
【０１６５】
前述の（ステップ．３．７．３）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１），ｓ（ｋ２））｝から１サイト（パーティション）ｓ（ｌ）を選択する（ステップ．３．７．４）。
【０１６６】
（ステップ．３．７．４）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する（ステップ．３．７．４．１）。
【０１６７】
前述の（ステップ．３．７．４．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、並びに前述の故障率｛Ｆ（ｓ（ｋ１））＋Ｆ（ｓ（ｋ２））｝を前述のコスト値に重畳し、期待ｊｏｉｎｃｏｓｔ５値（ｓ（ｌ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、並びに前述の故障率｛Ｆ（ｓ（ｋ１））＋Ｆ（ｓ（ｋ２））｝を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ００７、若しくはｓ１０７からその都度、読み込まれた値より求める（ステップ．３．７．４．２）。
【０１６８】
前述の（ステップ．３．７．４．２）に続いて、前述の最適化部１０２５は、サイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１），ｓ（ｋ２））｝から次のサイト（パーティション）ｓ（ｌ＋１）を選択する。前述の最適化部１０２５は、これを選択出来なくなるまで繰り返す（ステップ．３．７．４．３）。
【０１６９】
前述の（ステップ．３．７．４）に続いて、前述の最適化部１０２５は、サイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１），ｓ（ｋ２））｝の全サイト（パーティション）ｓ（ｌ）に渡る期待ｊｏｉｎｃｏｓｔ５値（ｓｃ（ｋ））の合計値を求める（ステップ．３．７．５）。
【０１７０】
前述の（ステップ．３．７．５）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）の組合せ集合ＳＣから次の組合せｓｃ（ｋ＋１）を選択する（ステップ．３．７．６）。
【０１７１】
前述の（ステップ．３．７）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合Ｓ−ＳＲの全サイト（パーティション）に渡る期待ｊｏｉｎｃｏｓｔ１値（ｓ（ｋ））＋期待ｊｏｉｎｃｏｓｔ２値（ｓ（ｋ））＋期待ｊｏｉｎｃｏｓｔ３値（ｓ（ｋ））の合計値を求める（ステップ．３．８）。
【０１７２】
前述の（ステップ．３．８）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合Ｓ−ＳＲの全サイト（パーティション）組合せに対する期待ｊｏｉｎｃｏｓｔ４値（ｓ（ｋ））＋期待ｊｏｉｎｃｏｓｔ５値（ｓ（ｋ））の合計値を求める（ステップ．３．９）。
【０１７３】
前述の（ステップ．３．９）に続いて、前述の最適化部１０２５は、３サイト（パーティション）以上で同時故障を考慮するべきか、否か（同時故障を評価するか、しないか）を判定する（ステップ．３．１０）。
【０１７４】
「評価する」とした場合、前述の最適化部１０２５は、以下の２つのステップを連続して実施する。前述の最適化部１０２５は、最初に多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲから３以上のＮの任意サイト（パーティション）の組合せ集合ＳＣ：｛（ｓ（１），ｓ（２）…），…，（ｓ（ｋ），ｓ（ｋ＋１）…）｝を定義し直す（ステップ．３．１０．１）。
【０１７５】
続けて、前述の最適化部１０２５は、前述の（ステップ．３．７）と同等の処理を行う（ステップ．３．１０．２）。
【０１７６】
「評価しない」とした場合、前述の最適化部１０２５は、次の（ステップ．３．１１）に進む（ステップ．３．１０．３）。
【０１７７】
続けて、前述の最適化部１０２５は、多重化向けに利用するサイト（パーティション）群集合ＳＲからペアとなる２サイト（パーティション）ｓｒ（ｋ１）、ｓｒ（ｋ２）を順次選択する（ステップ．３．１１）。
【０１７８】
（ステップ．３．１１）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する。その際、「多重化プロトコル」と発生するデータ件数が指定される（ステップ．３．１１．１）。
【０１７９】
前述の（ステップ．３．１１．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓｒ（ｋ１））、Ｒ（ｓｒ（ｋ２））を前述のコスト値に重畳し、失敗なし時の期待ｊｏｉｎｃｏｓｔ６値（ｓｒ（ｋ１））、ｊｏｉｎｃｏｓｔ６値（ｓｒ（ｋ２））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓｒ（ｋ１））、Ｒ（ｓｒ（ｋ２））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ００７、若しくはｓ１０７からその都度、読み込まれた値より求める（ステップ．３．１１．２）。
【０１８０】
前述の（ステップ．３．１１．２）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲから次のペアとなる２サイト（パーティション）ｓｒ（ｋ１＋１）、ｓｒ（ｋ２＋１）を選択する（ステップ．３．１１．３）。
【０１８１】
前述の（ステップ．３．１１）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲから全サイト（パーティション）組合せに対する期待ｊｏｉｎｃｏｓｔ６値（ｓ（ｋ））の合計値を求める（ステップ．３．１２）。
【０１８２】
前述の（ステップ．３．１２）に続いて、前述の最適化部１０２５は、期待ｊｏｉｎｃｏｓｔ１値，期待ｊｏｉｎｃｏｓｔ２値，期待ｊｏｉｎｃｏｓｔ３値，期待ｊｏｉｎｃｏｓｔ４値，期待ｊｏｉｎｃｏｓｔ５値，期待ｊｏｉｎｃｏｓｔ６値の対象件数に対する和演算である図６の（式１）中のｕｎｉｔｏｎｃｏｓｔ値を計算する。更に、前述の最適化部１０２５は、射影演算である図６の（式１）中のｒｅｓｔｒｉｃｔｉｏｎｃｏｓｔ値を計算する（ステップ．３．１３）。
【０１８３】
前述の（ステップ．３．１３）に続いて、前述の最適化部１０２５は、当該「再配分プロトコル」に対する図６の（式１）のＴｏｔａｌＣｏｓｔ１（Ｐ＝‘再配分プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値を計算する（ステップ．３．１４）。
【０１８４】
前述の最適化部１０２５は、「多重化プロトコル」としてシェアードナッシングによるクエリ実施の分割を想定せずに、全てを多重化する場合の評価を実施する（ステップ．４）。
【０１８５】
（ステップ．４）配下として、前述の最適化部１０２５は、前述のリソース管理／トランザクション処理部を持つサイト（パーティション）群の集合Ｓ：｛ｓ（１），．．．，ｓ（Ｎ）｝全てを多重化向けに利用するサイト（パーティション）群集合ＳＲに指定する（ステップ．４．１）。
【０１８６】
前述の（ステップ．４．１）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲからペアとなる２サイト（パーティション）ｓｒ（ｋ１）とｓｒ（ｋ２）を順次選択する（ステップ．４．２）。
【０１８７】
（ステップ．４．２）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する。その際、「多重化プロトコル」と発生するデータ件数が指定される（ステップ．４．２．１）。
【０１８８】
前述の（ステップ．４．２．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓｒ（ｋ１））、並びにＲ（ｓｒ（ｋ２））を前述のコスト値に重畳し、失敗なし時の期待ｊｏｉｎｃｏｓｔ７値（ｓｒ（ｋ１））、ｊｏｉｎｃｏｓｔ７値（ｓｒ（ｋ２））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓｒ（ｋ１））、Ｒ（ｓｒ（ｋ２））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ００７、若しくはｓ１０７からその都度、読み込まれた値より求める（ステップ．４．２．２）。
【０１８９】
前述の（ステップ．４．２．２）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲから次のペアとなる２サイト（パーティション）ｓｒ（ｋ１＋１）とｓｒ（ｋ２＋１）を選択する（ステップ．４．２．３）。
【０１９０】
前述の（ステップ．４．２）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲの全サイト（パーティション）組合せに対する期待ｊｏｉｎｃｏｓｔ７値（ｓ（ｋ））の合計値を求める（ステップ．４．３）。
【０１９１】
前述の（ステップ．４．３）に続いて、前述の最適化部１０２５は、期待ｊｏｉｎｃｏｓｔ７値の対象件数に対する和演算である図６の（式１）中のｕｎｉｔｏｎｃｏｓｔ値を計算する。更に、前述の最適化部１０２５は、射影演算である図６の（式１）中のｒｅｓｔｒｉｃｔｉｏｎｃｏｓｔ値を計算する（ステップ．４．４）。
【０１９２】
前述の最適化部１０２５は、当該「多重化プロトコル」に対する図６の（式１）ＴｏｔａｌＣｏｓｔ１（Ｐ＝‘多重化プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値を計算する（ステップ．４．５）。
【０１９３】
前述の（ステップ．４）に続いて、前述の最適化部１０２５は、前述のＴｏｔａｌＣｏｓｔ１（Ｐ＝‘再配分プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値と、前述のＴｏｔａｌＣｏｓｔ１（Ｐ＝‘多重化プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値とを比較して、値の小さい方を採用する（ステップ．５）。
【０１９４】
前述の（ステップ．５）に続いて、前述の最適化部１０２５は、採用されたものにより要求実行要素クエリ群ｓ００８を生成する（ステップ．６）。
＜付記＞
【０１９５】
ここで、図６の（式１）は、クエリを実施する上での全体のコスト期待値を表現したものであり、当該コスト期待値とは、処理が完了するまでに費やす処理コスト全体の平均期待値を意味する。この場合、主に以下の３つの部分を含む。
【０１９６】
第一の部分は、結合演算のコスト期待値であり、図６では３００１で記される項による。これはｊｏｉｎｃｏｓｔ関数の和により全体の期待値和が算出される。通常は、当該ｊｏｉｎｃｏｓｔ関数では、複数Ｔａｂｌｅを結合する結合演算コスト値を計算し、結合が伴わない単一Ｔａｂｌｅを扱う場合は、その検索コスト値を計算する。従って、対象となるデータ件数により変化し、且つ性能統計情報・信頼性情報を用いて、エラー発生の有無を評価し、エラーの場合は、前述の「再配分プロトコル」、前述の「多重化プロトコル」のいずれか指定された方式で終了するまで計算をする。
【０１９７】
なお、性能統計情報・信頼性情報による稼働率や故障率は、状態を持ち、時間と伴に変化するため、第一は結合演算のコスト期待値では、時刻ｔにおける稼働率Ｒ（ｋ）（ｔ）をパラメータとして保持している。
【０１９８】
第二の部分は、統合和演算のコスト期待値であり、図６では３００２で記される項による。これは、個々の結果を統合する処理であり、対象となるデータ件数により変化する。図３では集約処理結果Ｒ：２０１９を求めるため、全ての結合演算結果を統合する。
【０１９９】
第三の部分は、統合和演算の結果、発生する同一の結果を排除し、適切な形式とする射影・制限演算のコスト期待値であり、図６では３００３で記される項による。これは、ソート処理等の後、重複しているものを排除する処理であるため、対象となるデータ件数により変化する。
【０２００】
図６の（式２）では、第六実施例で利用出来る様に、状態を持ち時間と伴に変化する稼働率や故障率に関して、ある時刻ｔの近傍時間Δｔ：３００４における稼働率Ｒ（ｋ−１）（ｔ）、Ｒ（ｋ）（ｔ）、Ｒ（ｋ＋１）（ｔ）推定値を明示的に表現しており、連続実数である時刻ｔの代わりに、量子化された期間（ｋ−１）、（ｋ）、（ｋ＋１）で、それぞれＲ（ｋ−１）（ｔ）：３００５、Ｒ（ｋ）（ｔ）：３００６、Ｒ（ｋ＋１）（ｔ）：３００７で表現している。
【０２０１】
以上を受けて、シェアードナッシング並列検索のパーティショニング依存のエラー補償の手順で「再配分プロトコル」の特徴的な事項を記すと、（ステップ．３．５）と（ステップ．３．７）と（ステップ．３．１０）になる。
【０２０２】
（ステップ．３．５）では、１つのクエリを分割して、シェアードナッシング並列検索のパーティショニングにおいて実施する際に、任意サイト（パーティション）においてエラーが発生しない場合の結合演算コスト値、並びに任意１つのサイト（パーティション）においてエラーが発生した故に「再配分プロトコル」を実施した結果の結合演算コスト値の総和を求めている。
【０２０３】
これに対して、（ステップ．３．７）では、１つのクエリを分割して、シェアードナッシング並列検索のパーティショニングにおいて実施する際に、任意２つのサイト（パーティション）の組合せにおいてエラーが発生した故に「再配分プロトコル」を実施した結果の結合演算コスト値の総和を求めている。
【０２０４】
また、（ステップ．３．１０）では、１つのクエリを分割して、シェアードナッシング並列検索のパーティショニングにおいて実施する際に、任意３つ以上のサイト（パーティション）の組合せにおいてエラーが発生した故に「再配分プロトコル」を実施した結果の結合演算コスト値の総和を求めている。
【０２０５】
以上から、結合演算コスト値の総和を求めることが出来る。これに対して、シェアードナッシング並列検索のパーティショニング依存のエラー補償の手順で「多重化プロトコル」の特徴的な事項を記すと（ステップ．４）になる。この場合、多重化は完全同一のレプリカを１つ以上作成することを前提としており、（ステップ．４）では、レプリカは１つ作成されることとしている。１つ以上の場合でも大きな差異は存在しない。「多重化プロトコル」においては、前述の「再配分プロトコル」と異なり、故障率に関する評価については、不要のため、（ステップ．４）では斯様な評価は行わない。
【０２０６】
＜要求実行要素クエリ群ｓ００８の生成後＞
その後、実行制御部１０２２は、当該要求実行要素クエリ群ｓ００８を受理すると、その各々を各処理実行部に割り付けて行くことになる。例えば、図５Ａ〜図５Ｃでは、要求実行クエリに相当する前述の指定クエリ１０３１に対して、０より大きく１０００より小さい制限条件が付与されている場合、実行制御部１０２２は、検索の並列度を向上させるため、０より大きく５００以下の制限条件その１と５００より大きく１０００より小さい制限条件その２の２つに分解した上、事前に別途計測された信頼性情報を用いて、それぞれを２重化している。
【０２０７】
そして、実行制御部１０２２は、当該制限条件その１を処理実行部１：１０２７の指定クエリの実行単位１０３２に割り付けており、当該制限条件その１を２重化したものを処理実行部２：１０２８の指定クエリの実行単位１０３３に割り付けている。
【０２０８】
同様に、実行制御部１０２２は、当該制限条件その２を処理実行部（Ｎ−１）：１０２９の指定クエリの実行単位１０３４に割り付けており、当該制限条件その２を２重化したものを処理実行部Ｎ：１０３０の指定クエリの実行単位１０３５に割り付けている。
【０２０９】
具体的な割り付けについては、前述の実行制御部１０２２から複数の処理実行部に要求実行要素クエリ群が渡されることになる。
【０２１０】
例えば、前述の処理実行部１：１０２７には、要求実行要素クエリｓ００９が渡され、指定クエリの実行単位１０３２を生成することで起動され、割り付けが為される。
【０２１１】
同様に、前述の処理実行部２：１０２８には、要求実行要素クエリｓ０１０が渡され、指定クエリの実行単位１０３３を生成することで起動され、割り付けが為される。
【０２１２】
同様に、前述の処理実行部（Ｎ−１）：１０２９には、要求実行要素クエリｓ０１１が渡され、指定クエリの実行単位１０３４を生成することで起動され、割り付けが為される。
【０２１３】
同様に、前述の処理実行部Ｎ：１０３０には、要求実行要素クエリｓ０１２が渡され、指定クエリの実行単位１０３５を生成することで起動され、割り付けが為される。
【０２１４】
なお、第一実施例では、実行制御部１０２２の割り付けは１度のみの実行を想定している訳ではなく、指定クエリの内容に応じて複数回の割り付け〜実行を考慮する。
【０２１５】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３２を実行するため、前述の処理実行部１：１０２７に割り付いている指定クエリである要求実行要素クエリ１０３２をリソース管理／トランザクション処理部１０１７にメッセージｓ０１３を介して送信する。
【０２１６】
その後、前述のリソース管理／トランザクション処理部１０１７は、分散ストレージ１００５等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第一実施例では、前述のリソース管理／トランザクション処理部１０１７は、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０３６、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０３７、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０３８を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ０１３に含まれた要求実行要素クエリｓ０１７を送信している。
【０２１７】
その後、前述の分散ストレージ１００５は、当該要求実行要素クエリｓ０１７に対する検索結果ｓ０２１を、前述のリソース管理／トランザクション処理部１０１７に戻す。更に、前述のリソース管理／トランザクション処理部１０１７は、当該検索結果ｓ０２１を含んだメッセージｓ０２５により、当該検索結果を前述の処理実行部１：１０２７に送信することになる。
【０２１８】
更に、前述の処理実行部１：１０２７は、前述の検索結果ｓ０２１と等価な検索結果ｓ０２９を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部１：１０２７は、再起動待ちとなる。
【０２１９】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３３を実行するため、前述の処理実行部２：１０２８に割り付いている指定クエリである要求実行要素クエリ１０３３をリソース管理／トランザクション処理部１０１８にメッセージｓ０１４を介して送信する。
【０２２０】
その後、前述のリソース管理／トランザクション処理部１０１８は、分散ストレージ１００７等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第一実施例では、前述のリソース管理／トランザクション処理部１０１８は、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０５０、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０５１、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０５２を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ０１４に含まれた要求実行要素クエリｓ０１８を送信している。
【０２２１】
その後、前述の分散ストレージ１００７は、当該要求実行要素クエリｓ０１８に対する検索結果ｓ０２２を、前述のリソース管理／トランザクション処理部１０１８に戻す。更に、前述のリソース管理／トランザクション処理部１０１８は、当該検索結果ｓ０２２を含んだメッセージｓ０２６により、当該検索結果を前述の処理実行部２：１０２８に送信することになる。
【０２２２】
更に、前述の処理実行部２：１０２８は、前述の検索結果ｓ０２２と等価な検索結果ｓ０３０を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部２：１０２８は、再起動待ちとなる。
【０２２３】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３４を実行するため、前述の処理実行部（Ｎ−１）：１０２９に割り付いている指定クエリである要求実行要素クエリ１０３４をリソース管理／トランザクション処理部１０１９にメッセージｓ０１５を介して送信する。
【０２２４】
その後、前述のリソース管理／トランザクション処理部１０１９は、分散ストレージ１００９等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第一実施例では、前述のリソース管理／トランザクション処理部１０１９は、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０６４、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０６５、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０６６を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ０１５に含まれた要求実行要素クエリｓ０１９を送信している。
【０２２５】
その後、前述の分散ストレージ１００９は、当該要求実行要素クエリｓ０１９に対する検索結果ｓ０２３を、前述のリソース管理／トランザクション処理部１０１９に戻す。更に、前述のリソース管理／トランザクション処理部１０１９は、当該検索結果ｓ０２３を含んだメッセージｓ０２７により、当該検索結果を前述の処理実行部（Ｎ−１）：１０２９に送信することになる。
【０２２６】
更に、前述の処理実行部（Ｎ−１）：１０２９は、前述の検索結果ｓ０２３と等価な検索結果ｓ０３１を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部（Ｎ−１）：１０２９は、再起動待ちとなる。
【０２２７】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３５を実行するため、前述の処理実行部Ｎ：１０３０に割り付いている指定クエリである要求実行要素クエリ１０３５をリソース管理／トランザクション処理部１０２０にメッセージｓ０１６を介して送信する。
【０２２８】
その後、前述のリソース管理／トランザクション処理部１０２０は、分散ストレージ１０１１等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第一実施例では、前述のリソース管理／トランザクション処理部１０２０は、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０７８、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０７９、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０８０を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ０１６に含まれた要求実行要素クエリｓ０２０を送信している。
【０２２９】
その後、分散ストレージ１０１１は、当該要求実行要素クエリｓ０２０に対する検索結果ｓ０２４を、前述のリソース管理／トランザクション処理部１０２０に戻す。更に、前述のリソース管理／トランザクション処理部１０２０は、当該検索結果ｓ０２４を含んだメッセージｓ０２８により、当該検索結果を前述の処理実行部Ｎ：１０３０に送信することになる。
【０２３０】
更に、前述の処理実行部Ｎ：１０３０は、前述の検索結果ｓ０２４と等価な検索結果ｓ０３２を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部Ｎ：１０３０は、再起動待ちとなる。
【０２３１】
前述の実行制御部１０２２は、前述の検索結果ｓ０２９、前述の検索結果ｓ０３０、前述の検索結果ｓ０３１、前述の検索結果ｓ０３２を入手すると、指定クエリの内容に応じて、複数回の割り付け〜実行が無い場合、図３の集約処理に相当する処理を実施し、その結果を生成し、当該結果を含む結果メッセージｓ０３３として、起動元であるデータベースアクセスクライアント部１００３に返信し、一連の処理を終了する。
【０２３２】
＜第二実施例＞
ここでは、本発明である「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」の第二実施例について、図７Ａ〜図７Ｃ、図６を用いて、説明する。
【０２３３】
第二実施例の特徴は、分散ストレージに関して適宜、信頼性情報を計測し、当該計測された信頼性情報を基に、指定クエリの分割方針を変更することである。分散ストレージの信頼性が低い場合は、指定クエリの実行単位を多重化して実施し、信頼性が高い場合は、分割して並列に実施する。
【０２３４】
データベースアクセス部１００４配下にあるクエリ受付部１０２１は、データベースアクセスクライアント部１００３からＳＱＬ記述で表現される要求実行クエリを含んだメッセージｓ１０１を受け付けると、指定クエリ１０３１として保持した後、処理実行部のグループを制御する実行制御部１０２２に要求実行クエリｓ１０２として渡す。
【０２３５】
当該実行制御部１０２２は、当該要求実行クエリｓ１０２を分解し、個別の実行単位の実行クエリ群を生成するため、更に、クエリ解析部１０２３に要求実行クエリｓ１０３として渡す。
【０２３６】
前述のクエリ解析部１０２３は、要求実行クエリｓ１０３を受理すると、要求実行クエリｓ１０３の構文解析を実施する。前述のクエリ解析部１０２３は、構文解析の際、ディクショナリアクセス部１０２４を介してディクショナリから定義情報ｓ１０４を検索して解析を実施する。
【０２３７】
前述のクエリ解析部１０２３は、その解析結果を中間解析結果ｓ１０５として一度、前述の実行制御部１０２２に返信する。その後、当該実行制御部１０２２は、当該中間解析結果ｓ１０５の最適化を実施するため、最適化部１０２５に当該中間解析結果ｓ１０５を引数で含めた実行要求ｓ１０６を送信する。
【０２３８】
最適化部１０２５は、図３に基づいた方式に基づき、前述の中間解析結果ｓ１０５の変形を行う。最適化部１０２５は、特に図６の（式１）に基づき、実際の要求実行クエリの要素を実行した結果により得られた性能統計情報・信頼性情報に基づいて評価を行うため、必要に応じて、統計情報管理部エージェント管理部１０２６から性能統計情報・信頼性情報ｓ１０７を入手する。
【０２３９】
第二実施例では、実際の要求実行クエリの要素を実行した結果により得られた性能統計情報・信頼性情報を用いるため、性能統計情報・信頼性情報ｓ１０７は、時間に応じて変動する値となる。
【０２４０】
＜シェアードナッシング並列検索のパーティショニング依存のエラー補償手法＞
当該最適化部１０２５は、実際の実行単位となる複数の要求実行要素クエリ群ｓ１０８を生成することになる。その生成手法は、第一実施例と同様、シェアードナッシング並列検索のパーティショニング依存のエラー補償手法で記した手順に基づく。但し、（ステップ．３．５．２）、（ステップ．３．５．３）、（ステップ．３．５．５．２）、（ステップ．３．７．２）、（ステップ．３．７．４．２）、（ステップ．３．１１．２）、（ステップ．４．２．２）における稼働率と故障率は、第一実施例とは異なり、予め設定される固定的な値ではなく、時間に応じて変動する値を採用する。
【０２４１】
＜要求実行要素クエリ群ｓ１０８の生成後＞
その後、実行制御部１０２２は、当該要求実行要素クエリ群ｓ１０８を受理すると、その各々を各処理実行部に割り付けて行くことになる。例えば、図５Ａ〜図５Ｃでは、要求実行クエリに相当する前述の指定クエリ１０３１に対して、０より大きく１０００より小さい制限条件が付与されている場合、実行制御部１０２２は、検索の並列度を向上させるため、０より大きく５００以下の制限条件その１と５００より大きく１０００より小さい制限条件その２の２つに分解した上、事前に別途計測された信頼性情報を用いて、それぞれを２重化している。
【０２４２】
そして、実行制御部１０２２は、当該制限条件その１を処理実行部１：１０２７の指定クエリの実行単位１０３２に割り付けており、当該制限条件その１を２重化したものを処理実行部２：１０２８の指定クエリの実行単位１０３３に割り付けている。
【０２４３】
同様に、実行制御部１０２２は、当該制限条件その２を処理実行部（Ｎ−１）：１０２９の指定クエリの実行単位１０３４に割り付けており、当該制限条件その２を２重化したものを処理実行部Ｎ：１０３０の指定クエリの実行単位１０３５に割り付けている。
【０２４４】
具体的な割り付けについては、前述の実行制御部１０２２から複数の処理実行部に要求実行要素クエリ群が渡されることになる。
【０２４５】
例えば、前述の処理実行部１：１０２７には、要求実行要素クエリｓ１０９が渡され、指定クエリの実行単位１０３２を生成することで起動され、割り付けが為される。
【０２４６】
同様に、前述の処理実行部２：１０２８には、要求実行要素クエリｓ１１０が渡され、指定クエリの実行単位１０３３を生成することで起動され、割り付けが為される。
【０２４７】
同様に、前述の処理実行部（Ｎ−１）：１０２９には、要求実行要素クエリｓ１１１が渡され、指定クエリの実行単位１０３４を生成することで起動され、割り付けが為される。
【０２４８】
同様に、前述の処理実行部Ｎ：１０３０には、要求実行要素クエリｓ１１２が渡され、指定クエリの実行単位１０３５を生成することで起動され、割り付けが為される。
【０２４９】
なお、第二実施例でも、実行制御部１０２２の割り付けは１度のみの実行を想定している訳ではなく、指定クエリの内容に応じて複数回の割り付け〜実行を考慮する。
【０２５０】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３２を実行するため、前述の処理実行部１：１０２７に割り付いている指定クエリである要求実行要素クエリ１０３２をリソース管理／トランザクション処理部１０１７にメッセージｓ１１３を介して送信する。
【０２５１】
その後、前述のリソース管理／トランザクション処理部１０１７は、分散ストレージ１００５等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第一実施例では、前述のリソース管理／トランザクション処理部１０１７は、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０３６、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０３７、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０３８を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ０１３に含まれた要求実行要素クエリｓ１１７を送信している。
【０２５２】
その後、前述の分散ストレージ１００５は、当該要求実行要素クエリｓ１１７に対する検索結果ｓ１２１を、前述のリソース管理／トランザクション処理部１０１７に戻す。更に、前述のリソース管理／トランザクション処理部１０１７は、当該検索結果ｓ１２１を含んだメッセージｓ１２５により、当該検索結果を前述の処理実行部１：１０２７に送信することになる。
【０２５３】
更に、前述の処理実行部１：１０２７は、前述の検索結果ｓ１２１と等価な検索結果ｓ１２９を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部１：１０２７は、再起動待ちとなる。
【０２５４】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３３を実行するため、前述の処理実行部２：１０２８に割り付いている指定クエリである要求実行要素クエリ１０３３をリソース管理／トランザクション処理部１０１８にメッセージｓ１１４を介して送信する。
【０２５５】
その後、前述のリソース管理／トランザクション処理部１０１８は、分散ストレージ１００７等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第一実施例では、前述のリソース管理／トランザクション処理部１０１８は、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０５０、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０５１、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０５２を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ１１４に含まれた要求実行要素クエリｓ１１８を送信している。
【０２５６】
その後、分散ストレージ１００７は、当該要求実行要素クエリｓ１１８に対する検索結果ｓ１２２を、前述のリソース管理／トランザクション処理部１０１８に戻す。更に、前述のリソース管理／トランザクション処理部１０１８は、当該検索結果ｓ１２２を含んだメッセージｓ１２６により、当該検索結果を前述の処理実行部２：１０２８に送信することになる。
【０２５７】
更に、前述の処理実行部２：１０２８は、前述の検索結果ｓ１２２と等価な検索結果ｓ１３０を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部２：１０２８は、再起動待ちとなる。
【０２５８】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３４を実行するため、前述の処理実行部（Ｎ−１）：１０２９に割り付いている指定クエリである要求実行要素クエリ１０３４をリソース管理／トランザクション処理部１０１９にメッセージｓ１１５を介して送信する。
【０２５９】
その後、前述のリソース管理／トランザクション処理部１０１９は、分散ストレージ１００９等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第一実施例では、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０６４、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０６５、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０６６を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ１１５に含まれた要求実行要素クエリｓ１１９を送信している。
【０２６０】
その後、分散ストレージ１００９は、当該要求実行要素クエリｓ１１９に対する検索結果ｓ１２３を、前述のリソース管理／トランザクション処理部１０１９に戻す。更に、前述のリソース管理／トランザクション処理部１０１９は、当該検索結果ｓ１２３を含んだメッセージｓ１２７により、当該検索結果を前述の処理実行部（Ｎ−１）：１０２９に送信することになる。
【０２６１】
更に、前述の処理実行部（Ｎ−１）：１０２９は、前述の検索結果ｓ１２３と等価な検索結果ｓ１３１を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部（Ｎ−１）：１０２９は、再起動待ちとなる。
【０２６２】
前述の実行制御部１０２２は、前述の指定クエリの実行単位１０３５を実行するため、前述の処理実行部Ｎ：１０３０に割り付いている指定クエリである要求実行要素クエリ１０３５をリソース管理／トランザクション処理部１０２０にメッセージｓ１１６を介して送信する。
【０２６３】
その後、前述のリソース管理／トランザクション処理部１０２０は、分散ストレージ１０１１等に格納されている表Ｔａｂｌｅ群に問い合わせを行う。第二実施例では、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０７８、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０７９、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０８０を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述のメッセージｓ１１６に含まれた要求実行要素クエリｓ１２０を送信している。
【０２６４】
その後、分散ストレージ１０１１は、当該要求実行要素クエリｓ１２０に対する検索結果ｓ１２４を、前述のリソース管理／トランザクション処理部１０２０に戻す。更に、前述のリソース管理／トランザクション処理部１０２０は、当該検索結果ｓ１２４を含んだメッセージｓ１２８により、当該検索結果を前述の処理実行部Ｎ：１０３０に送信することになる。
【０２６５】
更に、前述の処理実行部Ｎ：１０３０は、前述の検索結果ｓ１２４と等価な検索結果ｓ１３２を前述の実行制御部１０２２に返信する。その後、前述の様に指定クエリの内容に応じて、複数回の割り付け〜実行があるまで、前述の処理実行部Ｎ：１０３０は、再起動待ちとなる。
【０２６６】
前述の実行制御部１０２２は、前述の検索結果ｓ１２９、前述の検索結果ｓ１３０、前述の検索結果ｓ１３１、前述の検索結果ｓ１３２を入手すると、指定クエリの内容に応じて、複数回の割り付け〜実行が無い場合、図３の集約処理に相当する処理を実施し、その結果を生成し、当該結果を含む結果メッセージｓ１３３として、起動元であるデータベースアクセスクライアント部１００３に返信し、一連の処理を終了する。
【０２６７】
第二実施例では、前述の実行制御部１０２２は、時間に応じて変動する性能統計情報・信頼性情報ｓ１０７を維持するため、前述の性能／エラー情報／統計情報サービス１０１３，１０１４，１０１５，１０１６等により各分散ストレージ上の最新の性能統計情報・信頼性情報ｓ１５０，ｓ１５１，ｓ１５２，ｓ１５３を得る。
【０２６８】
このために、前述の実行制御部１０２２は、前述の要求実行要素クエリｓ１１７に一時的且つ仮更新系処理が含まれる場合は、前述の分散ストレージ１００６のＬｏｇ／ジャーナル１０４７に対して当該処理を記述すると伴に、前述の検索結果ｓ１２１に対して性能情報やエラー情報を記録するため、時刻印と伴に性能・エラー情報記録ｓ１３５を書き込む。
【０２６９】
前述の実行制御部１０２２は、概ね同時にアクセスしたＴａｂｌｅ，索引等の分散ストレージ内部のオブジェクト毎のアクセス性能統計を取るため、前述のオブジェクト毎の統計情報１０４９に時刻印と伴に統計情報ｓ１３４を書き込む。
【０２７０】
前述の実行制御部１０２２は、前述の性能・エラー情報記録ｓ１３５を、前述の性能／エラー情報／統計情報サービス１０１３から性能・エラー情報記録ｓ１４３として取り出す。同様に、前述の実行制御部１０２２は、前述の統計情報ｓ１３４を、前述の性能／エラー情報／統計情報サービス１０１３から統計情報ｓ１４２として取り出す。その後、前述の実行制御部１０２２は、当該性能／エラー情報／統計情報サービス１０１３を、若干の加工処理を施した後、各分散ストレージ上の最新の性能統計情報・信頼性情報ｓ１５０として、前述の統計情報管理部・エージェント管理部１０２６に送信する。
【０２７１】
同様に、前述の実行制御部１０２２は、前述の要求実行要素クエリｓ１１８に一時的且つ仮更新系処理が含まれる場合は、前述の分散ストレージ１００８のＬｏｇ／ジャーナル１０６１に対して当該処理を記述すると伴に、前述の検索結果ｓ１２２に対して性能情報やエラー情報を記録するため、時刻印と伴に性能・エラー情報記録ｓ１３７を書き込む。
【０２７２】
概ね同時にアクセスしたＴａｂｌｅ，索引等の分散ストレージ内部のオブジェクト毎のアクセス性能統計を取るため、前述のオブジェクト毎の統計情報１０６３に時刻印と伴に統計情報ｓ１３６を書き込む。
【０２７３】
前述の実行制御部１０２２は、前述の性能・エラー情報記録ｓ１３７を、前述の性能／エラー情報／統計情報サービス１０１４から性能・エラー情報記録ｓ１４５として取り出す。同様に、前述の実行制御部１０２２は、前述の統計情報ｓ１３６を、前述の性能／エラー情報／統計情報サービス１０１４から統計情報ｓ１４４として取り出す。その後、前述の実行制御部１０２２は、当該性能／エラー情報／統計情報サービス１０１４を、若干の加工処理を施した後、各分散ストレージ上の最新の性能統計情報・信頼性情報ｓ１５１として、前述の統計情報管理部・エージェント管理部１０２６に送信する。
【０２７４】
同様に、前述の実行制御部１０２２は、前述の要求実行要素クエリｓ１１９に一時的且つ仮更新系処理が含まれる場合は、前述の分散ストレージ１０１０のＬｏｇ／ジャーナル１０７５に対して当該処理を記述すると伴に、前述の検索結果ｓ１２３に対して性能情報やエラー情報を記録するため、時刻印と伴に性能・エラー情報記録ｓ１３９を書き込む。
【０２７５】
前述の実行制御部１０２２は、概ね同時にアクセスしたＴａｂｌｅ，索引等の分散ストレージ内部のオブジェクト毎のアクセス性能統計を取るため、前述のオブジェクト毎の統計情報１０７７に時刻印と伴に統計情報ｓ１３８を書き込む。
【０２７６】
前述の実行制御部１０２２は、前述の性能・エラー情報記録ｓ１３９を、前述の性能／エラー情報／統計情報サービス１０１５から性能・エラー情報記録ｓ１４７として取り出す。同様に、前述の実行制御部１０２２は、前述の統計情報ｓ１３８を、前述の性能／エラー情報／統計情報サービス１０１５から統計情報ｓ１４６として取り出す。その後、前述の実行制御部１０２２は、当該性能／エラー情報／統計情報サービス１０１５を、若干の加工処理を施した後、各分散ストレージ上の最新の性能統計情報・信頼性情報ｓ１５２として、前述の統計情報管理部・エージェント管理部１０２６に送信する。
【０２７７】
同様に、前述の実行制御部１０２２は、前述の要求実行要素クエリｓ１２０に対して一時的且つ仮更新系処理が含まれる場合は、前述の分散ストレージ１０１２のＬｏｇ／ジャーナル１０８９に対して記述すると伴に、前述の検索結果ｓ１２４に対して性能情報やエラー情報を記録するため、時刻印と伴に性能・エラー情報記録ｓ１４１を書き込む。
【０２７８】
前述の実行制御部１０２２は、概ね同時にアクセスしたＴａｂｌｅ，索引等の分散ストレージ内部のオブジェクト毎のアクセス性能統計を取るため、前述のオブジェクト毎の統計情報１０９１に時刻印と伴に統計情報ｓ１４０を書き込む。
【０２７９】
前述の実行制御部１０２２は、前述の性能・エラー情報記録ｓ１４１を、前述の性能／エラー情報／統計情報サービス１０１６から性能・エラー情報記録ｓ１４９として取り出す。同様に、前述の実行制御部１０２２は、前述の統計情報ｓ１４０を、前述の性能／エラー情報／統計情報サービス１０１６から統計情報ｓ１４８として取り出す。その後、前述の実行制御部１０２２は、当該性能／エラー情報／統計情報サービス１０１６を、若干の加工処理を施した後、各分散ストレージ上の最新の性能統計情報・信頼性情報ｓ１５３として、前述の統計情報管理部・エージェント管理部１０２６に送信する。
【０２８０】
＜第三実施例、第四実施例＞
本発明である「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」の第三実施例、第四実施例については、図８Ａ〜図８Ｃに記載している。
【０２８１】
第三実施例の特徴は、第一実施例で一段構成された指定クエリを、複数段構成された指定クエリにまで拡張することである。このため、各段に分割された指定クエリに対して、第一実施例での手法を応用した手法を利用するが、エラーが発生した場合の対応を実行期待値として評価することで最小のコストを想定した実施を実現する。
【０２８２】
第四実施例の特徴は、第二実施例で一段構成された指定クエリを、複数段構成された指定クエリにまで拡張したことである。この場合、各段に分割された指定クエリに対して、第一実施例でのシェアードナッシング並列検索のパーティショニング依存のエラー補償手法を応用した手法を利用するが、エラーが発生した場合の対応を実行期待値として評価することで最小のコストを想定した実施を実現する。
【０２８３】
＜シェアードナッシング並列検索のパーティショニング依存のエラー補償手法を応用した手法＞
以下に、第一実施例でのシェアードナッシング並列検索のパーティショニング依存のエラー補償手法を応用した手法の手順について示す。
【０２８４】
なお、第一実施例での手法と同様に、ここでも記述の制約上サイトのみを記しているが、第五実施例では、図３で説明しているシェアードナッシング並列検索のパーティショニングを実施しており、実際には割付単位はサイトとは限らない。従って、本文説明ではサイト（パーティション）として記載する。
【０２８５】
ここで、第一実施例での処理手順と比較して、本実施例における処理手順の特徴的な事項を簡単に概説する。一段構成された指定クエリを、複数段構成された指定クエリにまで拡張する場合、実行制御部１０２２の割り付けは１度のみの実行を想定している訳ではなく、指定クエリの内容に応じて複数回の割り付け〜実行が為される。しかし、当該処理手順は、１回呼び出されるのではなく、前回の結果を記録しながら複数回の割り付け〜実行の度に呼び出されることになる。当該処理手順を呼び出すのは、前述の最適化部１０２５になる。
【０２８６】
このため、本実施例の処理手順では、新たに（ステップ．１）と（ステップ．６）と（ステップ．７）と（ステップ．８）と（ステップ．１０）が追加される。これらは、前回の結果を記録しながら複数回の割り付け〜実行の度に呼び出されることに対応し、評価は複数段構成された指定クエリ全体に対して実施することである。
【０２８７】
まず、本実施例の手順が開始されると、当該最適化部１０２５は、前段の要求実行要素クエリ群、並びにそれらの評価値が存在する場合は、読み込んだ上、一時的に保存する（ステップ．１）。
【０２８８】
前述の（ステップ．１）に続いて、前述の最適化部１０２５は、前述の中間解析結果ｓ００５で表現されるクエリ内容に応じて部分多重化に対して多重化せず「シェアードナッシング」で処理する範囲を特定する（ステップ．２）。
【０２８９】
その後、前述の最適化部１０２５は、独立して利用出来るリソース管理／トランザクション処理部を持つサイト（パーティション）群の集合を全て特定する。ここでは、そのサイト（パーティション）群集合をＳ：｛ｓ（１），．．．，ｓ（Ｎ）｝で表現する（ステップ．３）。
【０２９０】
その後、前述の最適化部１０２５は、指定クエリの再分割方針を決定するため「再配分プロトコル」並びに「多重化プロトコル」の評価を図６の（式１）を利用して実施する。まず「再配分プロトコル」に関する評価を実施する（ステップ．４）。
【０２９１】
前述の最適化部１０２５は、「再配分プロトコル」として前述のサイト（パーティション）群集合Ｓから多重化向けに利用するサイト（パーティション）群集合ＳＲ：｛ｓｒ（１），．．，ｓｒ（ｍ）｝を指定する（ステップ．４．１）。その後、前述の最適化部１０２５は、前述のサイト（パーティション）群から多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲを指定する（ステップ．４．２）。
【０２９２】
前述の（ステップ．４．２）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲの台数ｎを求める（ステップ．４．３）。
【０２９３】
続けて、前述の最適化部１０２５は、実施クエリの想定件数を前述の台数ｎで均等割りし指定クエリの実行単位をｎ作成し、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲの各サイト（パーティション）へ割付を行う。その際、前述の最適化部１０２５は、（ステップ．１）での前段の要求実行要素クエリ群との関係を維持する様に割り付けを実施する（ステップ．４．４）。
【０２９４】
前述の（ステップ．４．４）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲから１サイト（パーティション）ｓ（ｋ）を順次選択する（ステップ．４．５）。
【０２９５】
（ステップ．４．５）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する。前述の最適化部１０２５は、ｊｏｉｎｃｏｓｔ関数で計算する際、通常、結合演算コスト値を計算し、単一Ｔａｂｌｅを扱う場合、その検索コスト値を計算する。その際、前述の最適化部１０２５は、「再配分プロトコル」と発生するデータ件数を指定する（ステップ．４．５．１）。
【０２９６】
前述の（ステップ．４．５．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｋ））を前述のコスト値に重畳し、失敗なし時の期待ｊｏｉｎｃｏｓｔ１値（ｓ（ｋ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｋ））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求める（ステップ．４．５．２）。
【０２９７】
前述の（ステップ．４．５．２）に続いて、前述の最適化部１０２５は、当該稼働率に対する故障率Ｆ（ｓ（ｋ））を前述のコスト値に重畳し、失敗時の期待ｊｏｉｎｃｏｓｔ２値（ｓ（ｋ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく故障率Ｆ（ｓ（ｋ））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求める（ステップ．４．５．３）。
【０２９８】
前述の（ステップ．４．５．３）に続いて、前述の最適化部１０２５は、失敗した指定クエリの実行単位内容を（ｎ−１）分割し、現在選択していないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓ（ｋ）｝の各サイト（パーティション）に割付ける（ステップ．４．５．４）。
【０２９９】
前述の（ステップ．４．５．４）に続いて、前述の最適化部１０２５は、多重化に利用しないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓ（ｋ）｝から１サイト（パーティション）ｓ（ｌ）を選択する（ステップ．４．５．５）。
【０３００】
（ステップ．４．５．５）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する（ステップ．４．５．５．１）。
【０３０１】
前述の（ステップ．４．５．５．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、前述の故障率Ｆ（ｓ（ｋ））を前述のコスト値に重畳、期待ｊｏｉｎｃｏｓｔ３値（ｓ（ｌ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、前述の故障率Ｆ（ｓ（ｋ））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求める（ステップ．４．５．５．２）。
【０３０２】
前述の最適化部１０２５は、次のサイト（パーティション）ｓ（ｌ＋１）を選択する。前述の最適化部１０２５は、これを選択出来なくなるまで繰り返す（ステップ．４．５．５．３）。
【０３０３】
前述の（ステップ．４．５．５）に続いて、前述の最適化部１０２５は、サイト（パーティション）群集合Ｓ−ＳＲ−｛ｓ（ｋ）｝の全サイト（パーティション）ｓ（ｌ）に渡る期待ｊｏｉｎｃｏｓｔ３値（ｓ（ｋ））の合計値を求める（ステップ．４．５．６）。
【０３０４】
前述の最適化部１０２５は、次のサイト（パーティション）ｓ（ｋ＋１）を選択する。前述の最適化部１０２５は、これを選択出来なくなるまで繰り返す（ステップ．４．５．７）。
【０３０５】
前述の（ステップ．４．５）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲから任意サイト（パーティション）の組合せ集合ＳＣ：｛（ｓ（１），ｓ（２）），…，（ｓ（ｋ），ｓ（ｋ＋１））｝を定義する（ステップ．４．６）。
【０３０６】
前述の（ステップ．４．６）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）の組合せ集合ＳＣから１組合せｓｃ（ｋ）（要素をｓ（ｋ１）、ｓ（ｋ２）とする。）を順次選択する（ステップ．４．７）。
【０３０７】
（ステップ．４．７）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数を基に２回呼び出し、組合要素毎に計算する（ステップ．４．７．１）。
【０３０８】
前述の（ステップ．４．７．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく故障率Ｆ（ｓ（ｋ１）），Ｆ（ｓ（ｋ２））を前述のコスト値に重畳し、失敗時の期待ｊｏｉｎｃｏｓｔ４値（ｓ（ｋ１））と期待ｊｏｉｎｃｏｓｔ４値（ｓ（ｋ２））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく故障率Ｆ（ｓ（ｋ１））、Ｆ（ｓ（ｋ２））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求める（ステップ．４．７．２）
【０３０９】
前述の（ステップ．４．７．２）に続いて、前述の最適化部１０２５は、失敗した指定クエリの実行単位内容を（ｎ−２）分割し、現在選択していないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１），ｓ（ｋ２））｝の各サイト（パーティション）に割付ける（ステップ．４．７．３）。
【０３１０】
前述の（ステップ．４．７．３）に続いて、前述の最適化部１０２５は、多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１）、ｓ（ｋ２））｝から１サイト（パーティション）ｓ（ｌ）を選択する（ステップ．４．７．４）。
【０３１１】
（ステップ．４．７．４）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する（ステップ．４．７．４．１）。
【０３１２】
前述の（ステップ．４．７．４．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、並びに前述の故障率｛Ｆ（ｓ（ｋ１））＋Ｆ（ｓ（ｋ２））｝を前述のコスト値に重畳し、期待ｊｏｉｎｃｏｓｔ５値（ｓ（ｌ））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｌ））、並びに前述の故障率｛Ｆ（ｓ（ｋ１））＋Ｆ（ｓ（ｋ２））｝を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求める（ステップ．４．７．４．２）。
【０３１３】
前述の（ステップ．４．７．４．２）に続いて、前述の最適化部１０２５は、サイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１）、ｓ（ｋ２））｝から次のサイト（パーティション）ｓ（ｌ＋１）を選択する。前述の最適化部１０２５は、これを選択出来なくなるまで繰り返す（ステップ．４．７．４．３）。
【０３１４】
前述の（ステップ．４．７．４）に続いて、前述の最適化部１０２５は、サイト（パーティション）群集合Ｓ−ＳＲ−｛ｓｃ（ｋ）：（ｓ（ｋ１）、ｓ（ｋ２））｝の全サイト（パーティション）ｓ（ｌ）に渡る期待ｊｏｉｎｃｏｓｔ５値（ｓｃ（ｋ））の合計値を求める（ステップ．４．７．５）。
【０３１５】
前述の（ステップ．４．７．５）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）の組合せ集合ＳＣから次の組合せｓｃ（ｋ＋１）を選択する（ステップ．４．７．６）。
【０３１６】
前述の（ステップ．４．７）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合Ｓ−ＳＲの全サイト（パーティション）に渡る期待ｊｏｉｎｃｏｓｔ１値（ｓ（ｋ））＋期待ｊｏｉｎｃｏｓｔ２値（ｓ（ｋ））＋期待ｊｏｉｎｃｏｓｔ３値（ｓ（ｋ））の合計値を求める（ステップ．４．８）。
【０３１７】
前述の（ステップ．４．８）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合Ｓ−ＳＲの全サイト（パーティション）組合せに対する期待ｊｏｉｎｃｏｓｔ４値（ｓ（ｋ））＋期待ｊｏｉｎｃｏｓｔ５値（ｓ（ｋ））の合計値を求める（ステップ．４．９）。
【０３１８】
前述の（ステップ．４．９）に続いて、前述の最適化部１０２５は、３サイト（パーティション）以上で同時故障を考慮するべきか、否か（同時故障を評価するか、しないか）を判定する（ステップ．４．１０）。
【０３１９】
「評価する」とした場合、前述の最適化部１０２５は、以下の２つのステップを連続して実施する。最初に多重化向けに利用しないサイト（パーティション）群集合Ｓ−ＳＲから３以上のＮの任意サイト（パーティション）の組合せ集合ＳＣ：｛（ｓ（１），ｓ（２）…），…，（ｓ（ｋ），ｓ（ｋ＋１）…）｝を定義し直す（ステップ．４．１０．１）。
【０３２０】
続けて、前述の最適化部１０２５は、前述の（ステップ．４．７）と同等の処理を行う（ステップ．４．１０．２）。
【０３２１】
「評価しない」とした場合、前述の最適化部１０２５は、次の（ステップ．４．１１）に進む（ステップ．４．１０．３）。
【０３２２】
続けて、前述の最適化部１０２５は、多重化向けに利用するサイト（パーティション）群集合ＳＲからペアとなる２サイト（パーティション）ｓｒ（ｋ１）、ｓｒ（ｋ２）を順次選択する（ステップ．４．１１）。
【０３２３】
（ステップ．４．１１）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する。その際、前述の最適化部１０２５は、「多重化プロトコル」と発生するデータ件数を指定する（ステップ．４．１１．１）。
【０３２４】
前述の（ステップ．４．１１．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓｒ（ｋ１））、Ｒ（ｓｒ（ｋ２））を前述のコスト値に重畳し、失敗なし時の期待ｊｏｉｎｃｏｓｔ６値（ｓｒ（ｋ１））、  ｊｏｉｎｃｏｓｔ６値（ｓｒ（ｋ２））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率稼動率Ｒ（ｓｒ（ｋ１））、Ｒ（ｓｒ（ｋ２））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求める（ステップ．４．１１．２）。
【０３２５】
前述の（ステップ．４．１１．２）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲから次のペアとなる２サイト（パーティション）ｓｒ（ｋ１＋１）、ｓｒ（ｋ２＋１）を選択する（ステップ．４．１１．３）。
【０３２６】
前述の（ステップ．４．１１）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲから全サイト（パーティション）組合せに対する期待ｊｏｉｎｃｏｓｔ６値（ｓ（ｋ））の合計値を求める（ステップ．４．１２）。
【０３２７】
前述の（ステップ．４．１２）に続いて、前述の最適化部１０２５は、期待ｊｏｉｎｃｏｓｔ１値，期待ｊｏｉｎｃｏｓｔ２値，期待ｊｏｉｎｃｏｓｔ３値，期待ｊｏｉｎｃｏｓｔ４値，期待ｊｏｉｎｃｏｓｔ５値，期待ｊｏｉｎｃｏｓｔ６値の対象件数に対する和演算である、図６の（式１）中のｕｎｉｔｏｎｃｏｓｔ値を計算する。更に、前述の最適化部１０２５は、射影演算である図６の（式１）中のｒｅｓｔｒｉｃｔｉｏｎｃｏｓｔ値を計算する（ステップ．４．１３）。
【０３２８】
前述の（ステップ．４．１２）に続いて、前述の最適化部１０２５は、当該「再配分プロトコル」に対する図６の（式１）ＴｏｔａｌＣｏｓｔ１（Ｐ＝‘再配分プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値を計算する（ステップ．４．１４）。
【０３２９】
前述の最適化部１０２５は、「多重化プロトコル」としてシェアードナッシングによるクエリ実施の分割を想定せずに、全てを多重化する「多重化プロトコル実施」に関する評価を実施する（ステップ．５）。
【０３３０】
（ステップ．５）配下として、前述の最適化部１０２５は、前述のリソース管理／トランザクション処理部を持つサイト（パーティション）群の集合Ｓ：｛ｓ（１），．．．，ｓ（Ｎ）｝全てを多重化向けに利用するサイト（パーティション）群集合ＳＲに指定する（ステップ．５．１）。
【０３３１】
前述の（ステップ．５．１）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲからペアとなる２サイト（パーティション）ｓｒ（ｋ１）とｓｒ（ｋ２）を順次選択する（ステップ．５．２）。
【０３３２】
（ステップ．５．２）配下として、前述の最適化部１０２５は、失敗なしの検索コスト値を図６の（式１）中のｊｏｉｎｃｏｓｔ関数で計算する。その際、前述の最適化部１０２５は、「多重化プロトコル」と発生するデータ件数を指定する（ステップ．５．２．１）。
【０３３３】
前述の（ステップ．５．２．１）に続いて、前述の最適化部１０２５は、指定サイト（パーティション）の性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓｒ（ｋ１））、並びにＲ（ｓｒ（ｋ２））を前述のコスト値に重畳し、失敗なし時の期待ｊｏｉｎｃｏｓｔ７値（ｓｒ（ｋ１））、ｊｏｉｎｃｏｓｔ７値（ｓｒ（ｋ２））を計算する。前述の最適化部１０２５は、当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓｒ（ｋ１））、並びにＲ（ｓｒ（ｋ２））を、前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求める（ステップ．５．２．２）。
【０３３４】
前述の（ステップ．５．２．２）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲから次のペアとなる２サイト（パーティション）ｓｒ（ｋ１＋１）とｓｒ（ｋ２＋１）を選択する（ステップ．５．２．３）。
【０３３５】
前述の（ステップ．５．２）に続いて、前述の最適化部１０２５は、前述のサイト（パーティション）群集合ＳＲの全サイト（パーティション）組合せに対する期待ｊｏｉｎｃｏｓｔ７値（ｓ（ｋ））の合計値を求める（ステップ．５．３）。
【０３３６】
前述の（ステップ．５．３）に続いて、前述の最適化部１０２５は、期待ｊｏｉｎｃｏｓｔ７値の対象件数に対する和演算である図６の（式１）中のｕｎｉｔｏｎｃｏｓｔ値を計算する。更に、射影演算である図６の（式１）中のｒｅｓｔｒｉｃｔｉｏｎｃｏｓｔ値を計算する（ステップ．５．４）。
【０３３７】
前述の最適化部１０２５は、当該「多重化プロトコル」に対する図６の（式１）ＴｏｔａｌＣｏｓｔ１（Ｐ＝‘多重化プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値を計算する（ステップ．５．５）。
【０３３８】
前述の（ステップ．５）に続いて、前述の最適化部１０２５は、前述のＴｏｔａｌＣｏｓｔ１（Ｐ＝‘再配分プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値に対して前述の（ステップ．１）に関連する評価値を重畳し、拡張ＴｏｔａｌＣｏｓｔ１（Ｐ＝‘再配分プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値を計算する（ステップ．６）。
【０３３９】
前述の（ステップ．６）に続いて、前述の最適化部１０２５は、前述のＴｏｔａｌＣｏｓｔ１（Ｐ＝‘多重化プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値に対して前述の（ステップ．１）に関連する評価値を重畳し、拡張ＴｏｔａｌＣｏｓｔ１（Ｐ＝‘多重化プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値を計算する（ステップ．７）。
【０３４０】
前述の（ステップ．７）に続いて、前述の最適化部１０２５は、拡張ＴｏｔａｌＣｏｓｔ１（Ｐ＝‘再配分プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値と、拡張ＴｏｔａｌＣｏｓｔ１（Ｐ＝‘多重化プロトコル’，ｔ＝ｃｏｎｓｔａｎｔ）値とを比較して、値の小さい方を採用する（ステップ．８）。
【０３４１】
前述の（ステップ．８）に続いて、前述の最適化部１０２５は、採用されたものにより要求実行要素クエリ群ｓ００８を生成する（ステップ．９）。
【０３４２】
前述の（ステップ．９）に続いて、前述の最適化部１０２５は、失敗したサイト（パーティション）を、独立して利用出来るリソース管理／トランザクション処理部を持つサイト（パーティション）群の集合Ｓ：｛ｓ（１），．．．，ｓ（Ｎ）｝から削除する（ステップ．１０）。
【０３４３】
前述の（ステップ．１０）に続いて、前述の最適化部１０２５は、当段における当該要求実行要素クエリ群、並びにそれらの評価値、独立して利用出来るリソース管理／トランザクション処理部を持つサイト（パーティション）群の集合Ｓ：｛ｓ（１），．．．，ｓ（Ｎ）｝を一時的に保存する（ステップ．１１）。
【０３４４】
上記のシェアードナッシング並列検索のパーティショニング依存のエラー補償手法を応用した手法の処理手順を用いることで、前述の最適化部１０２５は、実際の実行単位となる複数の要求実行要素クエリ群ｓ１０８を生成することになる。
【０３４５】
特に（ステップ．４．５．２）、（ステップ．４．５．３）、（ステップ．４．５．５．２）、（ステップ．４．７．２）、（ステップ．４．７．４．２）、（ステップ．４．１１．２）、（ステップ．５．２．２）における稼働率と故障率は、第三実施例では、予め設定される固定的な値となる。これに対して、第四実施例では、前述の性能／エラー情報／統計情報サービス１０１３，１０１４，１０１５，１０１６等により得た各分散ストレージ上の最新性能統計情報・信頼性情報ｓ２８５，ｓ２８６，ｓ２８７，ｓ２８８から算出された値を用いる。
【０３４６】
＜第五実施例、第六実施例＞
ここでは、図９Ａ〜図９Ｃを参照して、本発明である「シェアードナッシング並列検索のパーティショニング依存のエラー補償を見込んだクエリ装置」の第五実施例、第六実施例について説明する。
【０３４７】
第五実施例の特徴は、第四実施例で偏在データの存在を明示的に扱い、指定クエリで、当該偏在データの対処をした分割を行う方法である。第一実施例〜第四実施例では、検索対象の関係は関係Ｒ１のみであるため、関係Ｒ１の偏在データを扱う表Ｔａｂｌｅ．１（ｓ）：１０７８、関係Ｒ１の被偏在データを扱う表Ｔａｂｌｅ．１（ｊ）：１０７９、関係Ｒ１の一般データを扱う表Ｔａｂｌｅ．１（ｃ）：１０８０を含んだ関係Ｒ１を扱う表Ｔａｂｌｅ．１に対して、前述の処理実行部１：１０２７、前述の処理実行部２：１０２８、前述の処理実行部（Ｎ−１）：１０２９、前述の処理実行部Ｎ，１０３０の割付では偏在データの存在を考慮しない粗い割付となる。
【０３４８】
これに対して、第一実施例〜第四実施例では、図３の様な偏在データと非偏在データとを考慮するため、図３における前述の処理実行部１−１：２０１３、前述の処理実行部１−２：２０１４、前述の処理実行部１−３：２０１５、前述の処理実行部Ｎ−１：２０１６、前述の処理実行部Ｎ−２：２０１７、前述の処理実行部Ｎ−３：２０１８の様な細かい割付となる。
【０３４９】
更に、シェアードナッシング並列検索のパーティショニング依存のエラー補償手法を応用した手法における処理手順でも、サイト毎の割付単位ではなく、パーティション毎の割付単位を前提とする。
【０３５０】
第五実施例では、パーティション毎の割付単位とするが、性能統計情報・信頼性情報の計測単位は分散ストレージ全体に対して計測されたものになる。特に、第五実施例では、複数段で構成される指定クエリの実行単位１０３２，１０３３，１０３４，１０３５に分割し、実行する度に当該性能統計情報・信頼性情報に基づく稼動率Ｒ（ｓ（ｋ））、故障率Ｆ（ｓ（ｋ））を前述の統計情報管理部エージェント管理部１０２６から入手した性能統計情報・信頼性情報ｓ１０７、ｓ２０７、ｓ３０７からその都度、読み込まれた値より求めており、実行時点の最新情報に基づき、シェアードナッシング並列検索のパーティショニング依存のエラー補償手法を応用した手法の処理手順で指定クエリの割付処理を実施する。
【０３５１】
これに対して、第六実施例では、図６の（式２）で記されるある時刻ｔの近傍時間Δｔ：３００４における稼動率Ｒ（ｓ（ｋ））、故障率Ｆ（ｓ（ｋ））の推定値を利用することを前提とする。そして、ある時刻ｔの近傍時間Δｔ：３００４の２倍時間以内であれば、当該稼働率と故障率の変動は予め見込めるものとする。この結果、（ステップ．４．５．２）、（ステップ．４．５．３）、（ステップ．４．５．５．２）、（ステップ．４．７．２）、（ステップ．４．７．４．２）、（ステップ．４．１１．２）、（ステップ．５．２．２）において、その都度、稼動率Ｒ（ｓ（ｋ））（ｔ）、故障率Ｆ（ｓ（ｋ））（ｔ）を読み込むのではなく、一度、読み込んだものを利用する。そして、一度、当該稼動率Ｒ（ｓ（ｋ））（ｔ）、故障率Ｆ（ｓ（ｋ））（ｔ）を読み込み、近傍時間Δｔ：３００４の２倍時間以上を経過した場合は、改めて読み直す様にする。この様にすることで、前述の統計情報管理部・エージェント管理部１０２６を必要以上にアクセスすることが抑制出来る様になる。
【０３５２】
＜まとめ＞
以上のように、本発明は、データベース管理システムの内、検索処理を複数独立なサイトに分割して並列に実施するシェアードナッシング方式の並列処理に関するもので、当該検索処理を最適化するための最適化部に関連する。特に、単一のシステム内の機能モジュールからネットワーク全体に広く、且つ緩やかに連携する環境に分散し、大規模に展開された結果、当該検索処理の実行品質が悪化することに対して、適性検索品質で最大限に検索処理能力を上げる手法に関するものである。
【０３５３】
本発明のクエリ装置は、複数サイト・パーティション群で構成される分散ストレージ群を利用してシェアードナッシング並列検索を実行出来るデータベース管理システムにおいて、シェアードナッシング並列検索結果で不具合が生じない様に検索処理途上でエラーが発生した際に対処する補償処理手法に関するものである。本発明のクエリ装置は、当該補償処理手法を複数選択し、前述の分散ストレージ群に関する性能統計情報・信頼性情報から計算した稼働率・故障率等から補償処理を見込んだ総処理コスト期待値を当該補償処理手法の各々で計算し、総処理コスト期待値が最も小さい補償処理に基づき並列検索のクエリ分割を定める。
【０３５４】
また、本発明のクエリ装置は、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測し、任意時点での稼働率・故障率を予め計算しておき、それを基に総処理コスト期待値を計算する。
【０３５５】
また、本発明のクエリ装置は、クエリを構成する結合演算を複数の要素クエリに分解し、当該要素クエリを実施することで発生する中間成果と、要素クエリを改めて結合するクエリ最適化手法を利用することを前提とする。
【０３５６】
また、本発明のクエリ装置は、前述の要素クエリをシェアードナッシング並列検索結果で実施する度に、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点での稼働率・故障率を取得し、当該稼働率・故障率を基に処理コスト期待値を計算の上で、最適化内容を変更する最適化部を含むことを特徴とする。
【０３５７】
また、本発明のクエリ装置は、クエリ対象とするデータに偏在性があることを確認し、当該データを３種類に分割した上で要素クエリを実施することを前提とする。
【０３５８】
また、本発明のクエリ装置は、前述の要素クエリをシェアードナッシング並列検索結果で実施する場合、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点から指定期間の推定稼働率・推定故障率を取得し、当該推定稼働率・推定故障率を基に処理コスト期待値を計算の上で、最適化内容を変更する最適化部を含むことで、計算上の効率を向上させることを図る。
【０３５９】
また、本発明のクエリ装置は、前述の要素クエリをシェアードナッシング並列検索結果で実施する場合、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点から指定期間の推定稼働率・推定故障率を取得し、当該推定稼働率・推定故障率を基に処理コスト期待値を計算の上で、最適化内容を変更する最適化部を含むことで、計算上の効率を向上させることを図る。
【０３６０】
本発明のクエリ分割方法では、１つのクエリを分割して複数の要求実行要素クエリ（要求実行要素クエリ群）を定義しシェアードナッシング並列検索のパーティショニングにおいて実施する際に任意の要求実行要素クエリでエラーが発生した場合、エラーの発生した要求実行要素クエリの再実行を、エラーの発生したサイト若しくはパーティション以外の全てで再度、代替実施することで補償する再配分プロトコルを選択する。また、シェアードナッシング並列検索のパーティショニングにおいて実施する際に、エラーが発生しても対応出来る様に、同じ要求実行要素クエリを完全多重化して補償し、再度、代替実施することは行わない多重化プロトコルを選択する。また、分散ストレージ群に関する推定稼働率・推定故障率を取得し、当該推定稼働率・推定故障率を基に前述の再配分プロトコル、及び多重化プロトコルの総処理コスト期待値を計算する。また、前述の再配分プロトコルの総処理コスト期待値、及び前述の多重化プロトコルの総処理コスト期待値を比較し小さい方に基づき最適化された並列検索のクエリ分割を決める。
【０３６１】
本発明のクエリ分割用プログラムは、複数サイト・パーティション群で構成される分散ストレージ群を利用してシェアードナッシング並列検索を実行出来るデータベース管理システムにおいて、シェアードナッシング並列検索結果で不具合が生じない様に検索処理途上でエラーが発生した際に対処する補償処理手法に関するものであり、当該補償処理手法を複数選択し、前述の分散ストレージ群に関する性能統計情報・信頼性情報から計算した稼働率・故障率等から補償処理を見込んだ総処理コスト期待値を当該補償処理手法の各々で計算し、総処理コスト期待値が最も小さい補償処理に基づき並列検索のクエリ分割を定める処理をコンピュータに実行させるためのソフトウエアである。なお、本発明のクエリ分割用プログラムは、記憶装置や記憶媒体に格納することが可能である。
【０３６２】
また、本発明のクエリ分割用プログラムは、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測し、任意時点での稼働率・故障率を予め計算しておき、それを基に総処理コスト期待値を計算する処理をコンピュータに実行させるためのソフトウエアである。
【０３６３】
また、本発明のクエリ分割用プログラムでは、クエリを構成する結合演算を複数の要素クエリに分解し、当該要素クエリを実施することで発生する中間成果と、要素クエリを改めて結合するクエリ最適化手法を利用することを前提とする。
【０３６４】
また、本発明のクエリ分割用プログラムは、前述の要素クエリをシェアードナッシング並列検索結果で実施する度に、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点での稼働率・故障率を取得し、当該稼働率・故障率を基に処理コスト期待値を計算の上で、最適化内容を変更する処理をコンピュータに実行させるためのソフトウエアである。
【０３６５】
また、本発明のクエリ分割用プログラムでは、クエリ対象とするデータに偏在性があることを確認し、当該データを３種類に分割した上で要素クエリを実施することを前提とする。
【０３６６】
また、本発明のクエリ分割用プログラムは、前述の要素クエリをシェアードナッシング並列検索結果で実施する場合、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点から指定期間の推定稼働率・推定故障率を取得し、当該推定稼働率・推定故障率を基に処理コスト期待値を計算の上で、最適化内容を変更することで、計算上の効率を向上させるための処理をコンピュータに実行させるためのソフトウエアである。
【０３６７】
また、本発明のクエリ分割用プログラムは、前述の要素クエリをシェアードナッシング並列検索結果で実施する場合、分散ストレージ群に関する性能統計情報・信頼性情報を定期的に計測した結果から、その時点から指定期間の推定稼働率・推定故障率を取得し、当該推定稼働率・推定故障率を基に処理コスト期待値を計算の上で、最適化内容を変更することで、計算上の効率を向上させるための処理をコンピュータに実行させるためのソフトウエアである。
【０３６８】
本発明は、並列処理データベース管理システムの内、特にシェアードナッシングによる検索の高速化を行うものであり、並列処理データベース管理システムの要素技術が、単一のシステム内の機能モジュールからネットワーク全体に広く、且つ緩やかに連携する環境に分散し、大規模に展開された結果、従来の環境を前提としているクエリ並列化の手法も影響を受け、ネットワーク全体に分散した環境を前提とし、且つ当該環境下で最適に実施する手法に進化する際の一形態と考えることが出来る。
【０３６９】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０３７０】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記の様記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０３７１】
（付記１）
１つのクエリを分割して複数の要求実行要素クエリを定義し、シェアードナッシング（Ｓｈａｒｅｄ  Ｎｏｔｈｉｎｇ）並列検索のパーテショニングにおいて実施する際に任意の要求実行要素クエリでエラーが発生した場合、エラーの発生した要求実行要素クエリの再実行を、エラーの発生したサイト若しくはパーティション以外の全てで再度、代替実施して補償する再配分プロトコルを選択することと、
シェアードナッシング並列検索のパーテショニングにおいて実施する際に、同じ要求実行要素クエリを完全多重化して補償し、再度、代替実施することは行わない多重化プロトコルを選択することと、
前記分散ストレージ群に関する推定稼働率・推定故障率を取得し、前記推定稼働率・推定故障率を基に前記再配分プロトコル、及び多重化プロトコルの総処理コスト期待値を計算することと、
前記再配分プロトコルの総処理コスト期待値、及び前記多重化プロトコルの総処理コスト期待値を比較し小さい方に基づき最適化された並列検索のクエリ分割を決めることと
を含む
クエリ分割方法。
【０３７２】
＜備考＞
なお、本出願は、日本出願番号２０１０−０６８８３５に基づく優先権を主張するものであり、日本出願番号２０１０−０６８８３５における開示内容は引用により本出願に組み込まれる。
【図１Ａ】
2011118427.tif 000003
【図１Ｂ】
2011118427.tif 000004
【図２Ａ】
2011118427.tif 000005
【図２Ｂ】
2011118427.tif 000006
【図３】
2011118427.tif 000007
【図４Ａ】
2011118427.tif 000008
【図４Ｂ】
2011118427.tif 000009
【図４Ｃ】
2011118427.tif 000010
【図５Ａ】
2011118427.tif 000011
【図５Ｂ】
2011118427.tif 000012
【図５Ｃ】
2011118427.tif 000013
【図６】
2011118427.tif 000014
【図７Ａ】
2011118427.tif 000015
【図７Ｂ】
2011118427.tif 000016
【図７Ｃ】
2011118427.tif 000017
【図８Ａ】
2011118427.tif 000018
【図８Ｂ】
2011118427.tif 000019
【図８Ｃ】
2011118427.tif 000020
【図９Ａ】
2011118427.tif 000021
【図９Ｂ】
2011118427.tif 000022
【図９Ｃ】
2011118427.tif 000023
【国際調査報告】
2011118427.tif 000024
2011118427.tif 000025
2011118427.tif 000026
2011118427.tif 000027