(57)【特許請求の範囲】
【請求項１】
データベーストレースのための方法であって、
第１の入力データに対する第１のクエリの実行のためにキャプチャされたトレースデータを受信することであって、前記トレースデータは、前記クエリの節を、前記実行中に生じるそれぞれの評価状態と関連付ける、受信することと、
前記第１の入力データがプライベートなまま保持されるように、前記第１の入力データにアクセスすることなく前記トレースデータから第２の入力データを生成することと、
第２の入力データに対する第２のクエリの実行を実施することであって、前記第２の入力データに対する第２のクエリの前記実行の実施は、前記第１の入力データに対する前記第１のクエリの前記実行からの評価状態を再現する、実施することと、
を含む、方法。
【請求項２】
前記第１の入力データはデータ値を含み、前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第１の入力データ値のそれぞれに対応する前記第２の入力データについての値を生成することを含み、前記第２の入力データ値の各々は、前記第２のクエリの実行において、前記第２の入力データ値の各々が、前記対応する第１の入力データ値について前記トレースデータ内にキャプチャされた前記評価状態と同じ評価状態を生成するが、それ以外は前記対応する第１の入力データ値と無関係の値を有する、請求項１に記載の方法。
【請求項３】
前記トレースデータは、前記第１のクエリの前記節を前記第１の入力データの行に適用する、前記第１のクエリの前記実行からの前記評価状態のそれぞれの組み合わせのカウントを含む、請求項１乃至２のいずれかに記載の方法。
【請求項４】
前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第２の入力データに対する前記第２のクエリの実行が、所定のタイプの前記評価状態の組み合わせについて同じ数の組み合わせを再現するように範囲が制約されるランダム値を生成することを含む、請求項３に記載の方法。
【請求項５】
前記第１の入力データに対する前記第１のクエリの前記実行からの前記評価状態は、評価されない状態を含み、前記評価されない状態の各インスタンスは、クエリ節を入力データの行に適用しないインスタンスから生じる、請求項３又は請求項４のいずれかに記載の方法。
【請求項６】
前記第１の入力データに対する前記第１のクエリの前記実行からの前記評価状態は、Ｔｒｕｅ、Ｆａｌｓｅ及び評価中状態のうちの１つ又は複数を含み、前記Ｔｒｕｅ、Ｆａｌｓｅ及び評価中状態の各インスタンスは、前記クエリ節の１つを前記第１の入力データの行に適用するインスタンスから生じる、請求項３又は請求項４のいずれかに記載の方法。
【請求項７】
前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第２のクエリの前記実行に、前記第１のクエリの前記実行の評価されていない評価状態を除外した前記第１のクエリの前記実行のＴｒｕｅの評価状態を再現させる、データを生成することを含む、請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記トレースデータ内の前記評価状態の和結合結果が、前記第１のクエリ内の各節についてＴｒｕｅであるかどうかを判断することを含む、請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記第１のクエリから前記第２のクエリを生成することを含み、前記第２のクエリを生成することは、削除される前記節についての前記和結合結果がＴｒｕｅでないとき、前記第１のクエリから節を削除することを含む、請求項８に記載の方法。
【請求項１０】
前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第２のクエリの前記実行に、Ｔｒｕｅの和結合状態を有する前記節についてのみ前記第１のクエリの前記実行の評価状態を再現させる、データを生成することを含む、請求項９に記載の方法。
【請求項１１】
前記クエリの前記節は、ジョインフィルタ、述語及びインデックスのうちのいずれか１つ又は複数を含む、請求項１乃至１０のいずれかに記載の方法。
【請求項１２】
データベーストレースのためのシステムであって、
プロセッサと、
前記プロセッサに接続されたコンピュータ可読ストレージ媒体と、
を備え、前記コンピュータ可読ストレージ媒体は、前記プロセッサを制御するためのプログラムをその上に格納し、前記プロセッサは、前記プログラムにより動作して、
第１の入力データに対する第１のクエリの実行のためにキャプチャされたトレースデータの受信であって、前記トレースデータは、前記クエリの節を、前記実行中に生じるそれぞれの評価状態と関連付ける、受信を行い、
前記第１の入力データがプライベートなまま保持されるように、前記第１の入力データにアクセスすることなく前記トレースデータから第２の入力データを生成し、
第２の入力データに対する第２のクエリの前記実行の実施であって、前記第２の入力データに対する前記第２のクエリの前記実行の実施は、前記第１の入力データに対する前記第１のクエリの前記実行からの評価状態が再現する、実施を行う
ように前記プログラムを実行する、システム。
【請求項１３】
前記第１の入力データはデータ値を含み、前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第１の入力データ値のそれぞれに対応する前記第２の入力データについての値を生成することを含み、前記第２の入力データ値の各々は、前記第２のクエリの実行において、前記第２の入力データ値の各々が、前記対応する第１の入力データ値について前記トレースデータ内にキャプチャされた前記評価状態と同じ評価状態を生成するが、それ以外は前記対応する第１の入力データ値と無関係の値を有する、請求項１２に記載のシステム。
【請求項１４】
前記トレースデータは、前記第１のクエリの前記節を前記第１の入力データの行に適用する、前記第１のクエリの前記実行からの前記評価状態のそれぞれの組み合わせのカウントを含む、請求項１２又は請求項１３のいずれかに記載のシステム。
【請求項１５】
前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第２の入力データに対する前記第２のクエリの実行が、所定のタイプの前記評価状態の組み合わせについて同じ数の組み合わせを再現するように範囲が制約されるランダム値を生成することを含む、請求項１４に記載のシステム。
【請求項１６】
前記第１の入力データに対する前記第１のクエリの前記実行からの前記評価状態は、評価されない状態を含み、前記評価されない状態の各インスタンスは、クエリの節を入力データの行に適用しないインスタンスから生じる、請求項１４又は請求項１５のいずれかに記載のシステム。
【請求項１７】
前記第１の入力データに対する前記第１のクエリの前記実行からの前記評価状態は、Ｔｒｕｅ、Ｆａｌｓｅ及び評価中状態のうちの１つ又は複数を含み、前記Ｔｒｕｅ、Ｆａｌｓｅ及び評価中状態の各インスタンスは、前記クエリ節の１つを前記第１の入力データの行に適用するインスタンスから生じる、請求項１４から請求項１６までのいずれかに記載のシステム。
【請求項１８】
前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第２のクエリの前記実行に、前記第１のクエリの前記実行の評価されていない評価状態を除外した前記第１のクエリの前記実行のＴｒｕｅの評価状態を再現させるデータを生成することを含む、請求項１２から請求項１７までのいずれかに記載のシステム。
【請求項１９】
前記プロセッサは、さらに前記プログラムにより動作して、前記トレースデータ内の前記評価状態の和結合結果が、前記第１のクエリ内の各節についてＴｒｕｅであるかどうかを判断するように前記プログラムを実行する、請求項１２から請求項１８までのいずれかに記載のシステム。
【請求項２０】
前記プロセッサは、さらに前記プログラムにより動作して、前記第１のクエリから前記第２のクエリを生成するように前記プログラムを実行し、前記第２のクエリを生成することは、削除される前記節についての前記和結合結果がＴｒｕｅでないとき、前記第１のクエリから節を削除することを含む、請求項１９に記載のシステム。
【請求項２１】
前記第１の入力データにアクセスすることなく前記トレースデータから前記第２の入力データを生成することは、
前記第２のクエリの前記実行に、Ｔｒｕｅの和結合状態を有する前記節についてのみ前記第１のクエリの前記実行の評価状態を再現させる、データを生成することを含む、請求項２０に記載のシステム。
【請求項２２】
前記クエリの前記節は、ジョインフィルタ、述語及びインデックスのうちのいずれか１つ又は複数を含む、請求項１２から請求項２１までのいずれかに記載のシステム。
【請求項２３】
請求項１乃至１１の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータプログラム。
【請求項２４】
請求項２３に記載の前記コンピュータプログラムをコンピュータ可読媒体上に格納した、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データベースの開発及び管理に関する。具体的には、本発明は、データベーストレースに適した方法及びシステムを提供する。
【背景技術】
【０００２】
データベース環境を開発し管理する際、データベースクエリ実行に関する問題を特定する必要がある。この問題は、データ依存である場合があり、クエリ実行、内部／外部エラー、誤った結果、非決定論的（non-deterministic）結果、及び性能劣化に起因するデータベースクラッシュを含む場合がある。この問題は、クラウドコンピューティング、ビッグデータ及びビジネス分析ツールなどを含む場合がある複雑なデータベース環境において取り扱う場合は、より困難である。この環境は、大型、高速のストレージシステムに結合された強力なコンピュータを有するシステムを必要とする傾向がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、当技術分野において、上述の問題に対処するための必要性がある。
【０００４】
第１の態様において、本発明は、第１の入力データに対する第１のクエリの実行のためにキャプチャされたトレースデータを受信することであって、トレースデータは、クエリの節を、実行中に生じるそれぞれの評価状態と関連付ける、受信することと、第１の入力データがプライベートなまま保持されるように、第１の入力データにアクセスすることなくトレースデータから第２の入力データを生成することと、第２の入力データに対する第２のクエリの実行を実施することであって、第２の入力データに対する第２のクエリの実行の実施は、第１の入力データに対する第１のクエリの実行からの評価状態を再現する、実施することとを含む、データベーストレースのための方法を提供する。
【０００５】
さらに別の態様から見ると、本発明は、プロセッサと、プロセッサに接続されたコンピュータ可読格納媒体とを備え、コンピュータ可読ストレージ媒体は、プロセッサを制御するためのプログラムをその上に格納し、プロセッサは、プログラムにより動作して、第１の入力データに対する第１のクエリの実行のためにキャプチャされたトレースデータの受信であって、トレースデータは、クエリの節を、実行中に生じるそれぞれの評価状態と関連付ける、受信を行い、第１の入力データがプライベートなまま保持されるように、第１の入力データにアクセスすることなくトレースデータから第２の入力データを生成し、第２の入力データに対する第２のクエリの実行の実施であって、第２の入力データに対する第２のクエリの実行の実施は、第１の入力データに対する第１のクエリの実行からの評価状態を再現する、実施を行うようにプログラムを実行する、データベーストレースのためのシステムを提供する。
【０００６】
さらに別の態様から見ると、本発明は、処理回路により可読であり、本発明のステップを実施するための方法を実施するための、処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を備える、データベーストレースのためのコンピュータプログラム製品を提供する。
【０００７】
さらに別の態様から見ると、本発明は、コンピュータ可読媒体上に格納されかつデジタルコンピュータの内部メモリにロード可能なコンピュータプログラムであって、プログラムがコンピュータ上で実行されるとき、本発明のステップを実施するための方法を実施するためのソフトウェアコード部分を含む、コンピュータプログラムを提供する。
【０００８】
本発明の実施形態によれば、方法は、第１の入力データに対する第１のクエリの実行のためにキャプチャされたトレースデータを受信することを含む。トレースデータは、第１のクエリの節を、実行中に生じるそれぞれの評価状態と関連付ける。第２の入力データは、第１の入力データにアクセスすることなくトレースデータから生成される。第２のクエリの実行は、第２の入力データに対して実施され、第２の入力データに対する第２のクエリの実行の実施は、第１の入力データに対する第１のクエリの実行からの評価状態を再現する。
【０００９】
上記に要約した方法に関連するシステム及びコンピュータプログラム製品も本明細書で説明され、特許請求される。
【００１０】
本発明の上述の態様、並びに目的、形態、及び利点を含む他のものは、添付図面と共に読まれるべき、例証的な実施形態の以下の詳細な説明からより明らかになるであろう。図面は縮尺通りではなく、詳細な説明と共に、当業者の理解を容易にするのに明確にするためのものである。
【図面の簡単な説明】
【００１１】
【図１】本発明の好ましい実施形態による、ネットワーク化コンピュータ環境を示す。
【図２】本発明の好ましい実施形態による、図１に示されるデバイスのブロック図である。
【図３】本発明の好ましい実施形態による、ジョイン（ＪＯＩＮ）処理の特定の態様を示す。
【図４】本発明の好ましい実施形態による、ジョイン処理の付加的な態様を示す。
【発明を実施するための形態】
【００１２】
本発明の詳細な実施形態を本明細書に開示して特許請求する構造及び方法を示す。しかしながら、本発明は、多くの異なる形態で具体化することができ、本明細書で開示される例示的な実施形態に限定されると解釈すべきではない。どちらかと言えば、これらの例示的な実施形態は、本開示が徹底的かつ完全なものとなり、また当業者に対して本発明の範囲を十分に伝えることになるようにするために提示するものである。説明において、提示される実施形態が不必要に曖昧になるのを避けるために、周知の特徴及び技術の詳細は省略される場合がある。
【００１３】
開発及びサポートチームが妥当な時間枠内でターゲットデータベースのクエリ実行問題を単純化して再現するために、同チームは、オリジナルの実行で用いられるものに類似した規模でデータ、コンピューティング及びストレージリソースを使用する場合がある。このことが示すコンピューティング及びストレージリソースの問題は別として、データベース管理者は、一般的にデータベースのスキーマを共有するものの、プライバシーの懸念などにより、ターゲットデータベースデータを開発及びサポートチームと完全に共有しようとしない。本発明の実施形態によると、開発又はサポートチームは、トラブルシューティングに使用するための、ターゲットデータベーススキーマに基づく代替入力データを生成することができる。
【００１４】
ブルートフォース（bruteforce）手法においては、クエリ述語の全順列を満足するデータが生成される。例えば、３つの述語を有するクエリに対して、各述語が２つの考えられる評価状態（evaluation state）、つまりＴｒｕｅ（真）又Ｆａｌｓｅ（偽）を有する場合、２３＝８の述語の組み合わせ、すなわち、（ＴＴＴ）（ＴＴＦ）（ＴＦＴ）（ＦＴＴ）（ＦＦＴ）（ＴＦＦ）（ＦＴＦ）（ＦＦＦ）が存在する。従って、ブルートフォースデータ生成は、クエリ実行をシミュレートするのに使用するために、この８つの組み合わせの各々に対するデータの生成を必要とする。
【００１５】
代替的に又は加えて、開発者は、マシン生成されたクエリを手動で構文解析し、経験を用いて簡単化するよう試みることができるが、これはオリジナルの実行環境においてキャプチャされたトレース及びログファイルを調べることを含み得る。これは、退屈で時間がかかる。この問題は全て、開発及びサポートチームの、クエリ実行に関する問題を再現し、特定するための能力に影響を与える。
【００１６】
本発明の実施形態は、ターゲットデータベースのデータのプライバシーを維持しながら、ターゲットデータベースにおけるクエリ実行の挙動をうまく再現するためのデータ及びリソースを適切に制限する方法を提供する。この方法は、ターゲットデータベースとして機能するコンピュータシステム３０２における専門クエリトレース（本明細書において、「フィンガープリントトレース」又は「クエリフィンガープリントトレース」という）を提供することを含む。このトレースにより、特定のクエリの挙動を再現するために生成されるデータの削減がもたらされる。
【００１７】
ここで図３を参照すると、クエリフィンガープリントトレースは、本発明の実施形態による、コンピュータシステム３０２上でフィンガープリントトレースプログラム３０３を実行することにより、ターゲットデータベース３０４として機能するコンピュータシステム３０２において実施することができる。フィンガープリントトレースプログラム３０３は、ターゲットデータベース３０４として機能するコンピュータシステム３０２上で動作するトレースモジュール３０６を含み、モジュール３０６は、ジョインフィルタ及び述語評価等の節、並びにゾーンマップ、シノプシス（synopsis）、又はインデックスに対する節にトレースを適用するが、これは特定のターゲットデータベース３０４に応じて、どちらか１つ又は複数が適用される。（用語「ゾーンマップ」は、本明細書ではゾーンマップ、シノプシス、又はインデックスを指すように使用される場合がある。）これは、所定の入力データセット３０４に対して、クエリ実行モジュール３１２によるクエリ３１４の実行中にフィンガープリントトレース３１０をキャプチャすることを含む。トレース３１０は、評価されたデータ３０４の行に対して生じる評価状態の記録を提供する。
【００１８】
データ生成ツール３２０（本明細書では、ＤＧＴ、又は「データ生成装置」又は「データ生成モジュール」とも呼ぶ）も提供されるが、これはフィンガープリントトレースプログラム３０６の一部、又は別個のモジュールとすることができる。同様に、図３に示すように、データ生成モジュール３２０は、ターゲットデータベース３０４として機能するコンピュータシステム３０２又は別のコンピュータシステム３２２上で動作できる。
【００１９】
本明細書で以下にさらに説明するように、クエリフィンガープリントトレースモジュール３０６又は図３に示すモジュール３３０など、圧縮のための他の何らかのモジュールは、フィンガープリントトレースデータ３１０におけるキャプチャされた評価状態に応じて和結合（ＵＮＩＯＮ）データ３３２を決定する。データを圧縮するモジュールが何であれ、そのモジュールは「データ圧縮モジュール」、「ＤＣＭ」、「圧縮モジュール」、又は「コンプレッサ」と呼ばれる。図３では別個のデータセットとして示すが、和結合データ３３２は、トレースデータ３１０内に含まれる。本明細書の実施形態によれば、ＤＧＴ３２０及びコンプレッサ３３０は、単一モジュールとすることができる。従って、例えば、本明細書でのコンプレッサ３３０への参照は、代替的に、例えばＤＧＴ３２０を指すと解釈することができる。
【００２０】
本発明の実施形態によれば、ＤＣＭ３３０は、トレースデータ３１０に応じて、変更されたクエリ３３３も生成するが、変更クエリ３３３は、和結合データ３３２に従ってクエリ３１４の特定の節を省略することができる。和結合データ３３２の生成のための実装の詳細は、本明細書で以下に提示される例との関連でさらに説明される。
【００２１】
データ生成モジュール３２０は、オリジナルクエリ３１４を実行するオリジナルクエリ実行モジュール３１２の挙動を再現するための代替入力データ３２４、すなわち、例えば、ターゲットデータベース３０４のオリジナルクエリ実行の挙動をシミュレートするために、サポート又は開発チームが使用するデータを生成する。ＤＧＴ３２０は、フィンガープリントトレースデータ３１０、又は代替的に、その和結合データ３３２のバージョンを構文解析し、それに応じて、トレースデータ３１０（又は和結合データ３３２）、ターゲットデータベーススキーマ３０８及びオリジナルクエリ３１４又は変更クエリ３３３に基づいて、代替入力データ３２４を生成する。
【００２２】
モジュール３３４、システム３２２等のクエリ実行モジュールは、代替入力データ３２４でクエリを実行し、オリジナルの結果３１６をもたらしたオリジナル実行をシミュレートするシミュレーション結果３３６を生成するが、このクエリは、実施形態に応じて、和結合データ３３２に基づく変更クエリ３３３又はオリジナルクエリ３１４とすることができる。
【００２３】
図３に示されるクエリフィンガープリントトレースは、データベースクエリ実行問題が、ターゲットデータベース３０４として機能するコンピュータシステム３０２に生じるという文脈に適用することができる。この問題は、例えば、データベースクラッシュ、内部／外部エラー、誤った結果、非決定論的結果、性能劣化、又はそれらの組み合わせを含み得る。問題に遭遇するユーザは、管理者又はクライアントコンピュータシステム３２２における他のユーザとすることができ、ユーザは、そのシステムからターゲットデータベース３０４として機能するコンピュータシステム３０２を用いてネットワークを介してターゲットデータベース３０４にアクセスすることができる。クライアントコンピュータシステム３２２は、ターゲットデータベース３０４として機能するコンピュータシステム３０２上で動作するフィンガープリントトレースプログラム３０６と通信するためのクライアントフィンガープリントトレースインターフェースモジュール３２６を有することができる。
【００２４】
ターゲットデータベース３０４として機能するコンピュータシステム３０２上で実行されるフィンガープリントトレースプログラム３０６は、これに応じてセッション変数を検証し、次にテーブル、列、述語、値、ジョインフィルタ等のクエリのパラメータを決定するためにクエリ３１４を走査することを含む、フィンガープリントトレースを開始する。次に、フィンガープリントトレースプログラム３０６は、パラメータに応じてクエリ３１４に関するデータを収集する。
【００２５】
本発明の実施形態によると、フィンガープリントトレースプログラム３０６は、モジュール３１２によるクエリ実行中、所定のデータセット３０４における所定のクエリ述語に対する各行の評価を監視し、それに応じて、本明細書で後述する特定の形式とすることができるフィンガープリントトレース３１０を生成する。つまり、クエリフィンガープリントトレースモジュール３０６は、述語評価結果の組み合わせを決定する。（この評価結果の各々は、本明細書では「評価状態」と呼ぶこともできる。これは述語評価の結果であるから、各々を「述語評価状態」又はより単純に「述語状態」と呼ばれることもある。）モジュール３０６は、以下にさらに説明するように、評価状態をキャプチャする。
【００２６】
加えて又は代替的に、フィンガープリントトレースプログラム３０６は、評価をキャプチャし、ジョインフィルタに対してフィンガープリントトレース３１０を生成する。同様に、フィンガープリントトレースプログラム３０６は、評価をキャプチャし、ゾーンマップに対してフィンガープリントトレース３１０を生成する。述語評価は、最初に以下の例において説明する。その後、本発明の実施形態による、ジョインフィルタ及びゾーンマップに対する例を提示する。
【００２７】
３つの述語のＯＲ組み合わせ、つまり「ｄｅｐｔ＿ｎａｍｅ＝’Ｄｅｖ’」がＰ１である場合、「（ｄｅｐｔ＿ｎａｍｅ＝’Ｄｅｖ’  ＯＲ  ｄｅｐｔ＿ｎａｍｅ＝’Ｈａｒｄｗａｒｅ’  ＯＲ  ｄｅｐｔ＿ｎａｍｅ＝’Ｓａｌｅｓ’）」のような、Ｐ１  ＯＲ  Ｐ２  ＯＲ  Ｐ３を有するクエリを検討する。（本明細書において、述語状態の組み合わせは、個々の述語の評価状態を示すにすぎないので、「Ｐ１Ｐ２Ｐ３」のように論理演算子なしに記述できる。）例えば、「Ｐ１Ｐ２Ｐ３」は、（Ｐ１  ＯＲ  Ｐ２  ＯＲ  Ｐ３）、（Ｐ１  ＡＮＤ  Ｐ２  ＡＮＤ  Ｐ３）、（Ｐ１  ＡＮＤ（Ｐ２  ＯＲ  Ｐ３））のような組み合わせを有するクエリに適用できることを理解されたい。
【００２８】
生成データの低減が、本発明の実施形態の態様から得られる。１つの態様は、モジュール３１２によるクエリ実行において、入力データ３０４は、例えば右から左、つまりＰ１、次にＰ２、次にＰ３といった、クエリ３１４の述語の固定された既知の順序に従って処理されるという認識を伴う。従って、例えば３つの述語のＯＲ組み合わせを有するクエリ３１４に関して、本発明の実施形態は、クエリ実行モジュール３１２が、対応する行の第１のセットに対する入力データ３０４が第１の述語Ｐ１を満足すると判断したら、モジュール３１２は、結果３１６をコミットし、行の第１のセットの残りがＰ２又はＰ３を満足するかどうかを評価して決定せずに、入力データ３０４の次の行のセットの評価に移るという認識を伴う。
【００２９】
３つの述語のＯＲ組み合わせを有する、上記の例のようなクエリにおいて、本発明の実施形態は、述語評価状態の３つの組み合わせのみを生じさせるデータ値を有するデータセットの生成を生じさせ得る。組み合わせの１つは、Ｐ１＝Ｔｒｕｅ、Ｐ２＝Ｉ及びＰ３＝Ｉであり、ここで「Ｉ」は、重要でない、Ｔｒｕｅ又はＦａｌｓｅの評価状態、すなわち「どちらでもいい」評価状態を示す。（これは、Ｐ１Ｐ２Ｐ３＝ＴＩＩとして書くことができる。）「Ｉ」状態及びその用途は、以下にさらに説明する。他の２つの組み合わせは、Ｐ１Ｐ２Ｐ３＝ＦＴＩ及びＰ１Ｐ２Ｐ３＝ＦＦＴである。
【００３０】
このことは、オリジナルデータ３０４の同一クエリ実行をシミュレートするのに用いられる代替入力データ３２４の生成において、ＤＧＴ３２０が、この状況では、オリジナルデータ３０４の行の第１のセットの残りにおけるようにデータ３２４を再現する必要はないという認識につながる。例えば、クエリ実行モジュール３１２が、評価状態が生じ、上記の例におけるＰ１＝Ｔなど、入力データ３０４の行の第１のセットに対するクエリ３１４を満足すると決定すると、モジュール３１２は、行の第１のセットのデータがクエリの他の述語を満足するかどうかを評価せずに、入力データ３０４の行の次のセットの評価に進む。この状況において、上記の例におけるように、フィンガープリントトレースモジュール３０６は、３つの述語のＯＲ組み合わせを有するクエリに対するＰ２及びＰ３のような、他の残りの述語に対して「Ｉ」状態を示すことにより応答する。
【００３１】
フィンガープリントトレースモジュール３０６において構成される同じ論理は、第２の組み合わせにおいてＰ３＝Ｉのキャプチャをもたらし、Ｐ２＝ＴであるからＰ１Ｐ２Ｐ３＝ＦＴＩとなる。言い換えれば、クエリ３１４は、少なくとも第１の述語及び別の述語を含み、フィンガープリントトレース３１０によりキャプチャされる評価状態は、行のセットにおけるデータが他の述語を満足したか否かに関係なく、入力データ３０４の行のセットにおける第１のデータが第１の述語を満たし、かつ第１の述語がクエリ３１４を満たしたと判断したので、モジュール３１２によるオリジナルクエリ実行が評価しなかった、クエリ３１４の述語に対して非評価状態「Ｉ」を含む。
【００３２】
本発明の実施形態の別の態様において、代替入力データ３２４は、上記の例における述語評価状態Ｐ１Ｐ２Ｐ３＝ＦＦＦの組み合わせを生じさせるデータ値を有しては生成されず、それは、本発明の実施形態において、このデータは、クラッシュ又は他の問題の潜在的原因として無視できると認識しているからである。本発明の実施形態のこの態様によると、フィンガープリントトレースモジュール３０６は、上記の例におけるＰ１Ｐ２Ｐ３＝ＦＦＦのような、クエリ実行モジュール３１２による、クエリ３１４を満足しない値を有する対応する入力データ３０４の行のセットの評価について、トレースデータ３１０における個々の述語評価状態をキャプチャしないように構成される。
【００３３】
代替的に、フィンガープリントトレースモジュール３０６は、かかる状況に対してトレースデータ３１０における個々の述語評価状態をキャプチャするように構成することはできるが、データ生成モジュール３２０は、かかるトレースデータ３１０に対して代替入力データ３２４を生成しないように構成される。さらに、データ生成モジュール３２０は、トレースデータ３１０の全てのインスタンスの和結合結果３３２が「Ｆ」状態を有する各述語を除いて、かかるトレースデータ３１０に対して代替入力データ３２４を生成するように構成できる。コンピューティング和結合結果の真理値テーブル（truth table）を提示して、以下でさらに説明する。
【００３４】
以下は、本発明の実施形態による、述語評価のためのフィンガープリントトレース３１０を生成する一例であり、トレースモジュール３０６は、ターゲットデータベース３０４のオリジナルクエリ実行３１２において行われる述語評価の態様をキャプチャする。この例においては、単に説明を簡単にするために、「Ｉ」状態は含まれない。さらに、「Ｉ」状態を含む例を以下に示す。
例示的なクエリ（「実施例１」）は、以下の通りである。
【表１】
0006691548.tif 000002
【００３５】
この例において、第１の述語Ｐ１は、「ＷＨＥＲＥ  ｉｄ＝（ｓｅｌｅｃｔ  ｉｄ  ｆｒｏｍ  ｇｒｐ  ｗｈｅｒｅ  ｇｒｐ＿ｎａｍｅ＝‘ｄｅｖ’  ｏｒ  ｇｒｐ＿ｎａｍｅ＝’ｔｅｓｔ’）」であり、第２の述語Ｐ２は、「ｓａｌａｒｙ＞２５０００」である。（代替的に、「ｇｒｐ＿ｎａｍｅ＝‘ｄｅｖ’  ｏｒ  ｇｒｐ＿ｎａｍｅ＝’ｔｅｓｔ’」は、２つの述語として扱うことができる。）
【００３６】
このクエリ３１４の実行３１２において、所定の入力データセット、つまりターゲットデータベース３０４に対して、第１の述語Ｐ１が「Ｆａｌｓｅ」と評価し、第２の述語Ｐ２は「Ｔｒｕｅ」と評価する、「ｇｒｐ」テーブルにおける２つの行があり、Ｐ１が「Ｆａｌｓｅ」と評価し、Ｐ２も「Ｆａｌｓｅ」と評価する２つの他の行があり、Ｐ２がどのように評価するかに関係なく、Ｐ１がＴｒｕｅと評価する行はないと仮定する。トレース３１０としてキャプチャされた行評価結果は、以下の「述語フィンガープリントトレースデータ」テーブル内に要約され、ここで「Ｔ］はＴｒｕｅを示し、「Ｆ」はＦａｌｓｅを示す。
【表２】
0006691548.tif 000003
【００３７】
述語状態の組み合わせは、上記のようなテーブルの行のように提示することができ、各行は、述語状態の固有の組み合わせに対するものである。（テーブルにおいては、代替的に、単純にそれらの行を省略することにより、評価結果がない組み合わせを示し得ることを理解されたい。さらに、テーブルでは、全述語に対する評価結果がＦａｌｓｅである組み合わせを設定する行を省略できる。）
【００３８】
２つの述語及び２つの述語状態Ｔ及びＦについて、考えられる４つの状態の組み合わせＦＦ、ＦＴ、ＴＦ及びＴＴがあり、上述のように、評価結果状態テーブルでは、４つの評価結果行を設定できる。評価の各組み合わせについて（つまり、テーブルの行）、クエリフィンガープリントトレースモジュール３０６は、スキーマ３０８を用いて、ターゲットデータベース３０４のクエリ３１４のオリジナル実行３１２において、いくつの評価組み合わせが生じたかのカウントをキャプチャする。この例では、上記テーブルが示すように、評価組み合わせＦＦのインスタンスが２つ、評価組み合わせＦＴのインスタンスが２つ、評価組み合わせＴＦのインスタンスが０、及び評価組み合わせＴＴのインスタンスが０である。
【００３９】
上述のように、クエリフィンガープリントトレースモジュール３０６又は図３に示すモジュール３３０のような圧縮のための何らかの他のモジュールは、フィンガープリントトレースデータ３１０におけるキャプチャされた評価状態に応じて和結合データ３３２を決定し、組み合わせの１つについて、つまり上記テーブルにおける１つの行において、Ｔｒｕｅと評価された全ての述語について、論理ＯＲ条件のように、その述語の和結合値もＴｒｕｅである。（データを圧縮するモジュールが何であれ、そのモジュールは「データ圧縮モジュール」、「ＤＣＭ」又は「圧縮モジュール」と呼ぶことができる。）
【００４０】
与えられる例について、Ｔｒｕｅの述語Ｐ１のインスタンスは存在せず、全てのＰ１述語評価の組み合わせの和結合３３２＝Ｆである。Ｔｒｕｅの述語Ｐ２のインスタンスが存在するので、全てのＰ２述語評価の組み合わせの和結合＝Ｔである。本発明の実施形態によると、ＤＣＭは、全ての述語について評価結果がＦａｌｓｅである実行インスタンスをカウントしない。従って、この例における他の３つのタイプの組み合わせの述語評価のインスタンス総数は２であり、ＤＣＭは、和結合データカウント＝２であると決定する。この例の和結合結果３３２は、以下のように要約される。
【表３】
0006691548.tif 000004
【００４１】
代替的に、ＤＣＭ３３０は、Ｔｒｕｅの和結合結果３３２を有する述語について評価結果がＴｒｕｅ及びＦａｌｓｅの両方である実行インスタンスをカウントすることができ、その場合、この例の上記和結合結果３３２テーブルにおいて、カウントは４である。ＤＣＭ３３０により決定されるこの和結合結果３３２は、所定のクエリ述語Ｐ１及びターゲットデータ３０４に対してＦａｌｓｅであるので、これにより、ＤＧＴ３２０は、和結合結果３３２を用いる実施形態において変更されたクエリ３３３に対する述語Ｐ１を削除する。従って、ＤＧＴ３２０は、述語Ｐ１に対する代替データ３２４を生成しない。述語Ｐ２について、ＤＧＴ３２０は、ターゲットデータ３０４のオリジナルクエリ実行３１２中にキャプチャされた述語評価トレースに従ってテストデータ３２４を生成する。これは、この具体的場合において、ＤＧＴ３２０は、上記の述語フィンガープリントトレースデータテーブル及び和結合結果３３２ごとのトレース３１０に従って、少なくとも２回Ｔｒｕｅと評価される述語Ｐ２（ｓａｌａｒｙ＞２５０００）を作成するのに十分な値を有するｇｒｐ及びｅｍｐテーブルにおいて、テストデータ３２４の行を生成する。ＤＣＭが全述語の評価結果がＦａｌｓｅである評価結果に対して実行インスタンスをカウントしない代案において、ＤＧＴ３２０は、少なくとも２回Ｆａｌｓｅと評価される述語Ｐ２（ｓａｌａｒｙ＞２５０００）を作成するのに十分な値を有するｇｒｐ及びｅｍｐテーブルにおいてテストデータ３２４の行と、少なくとも２回Ｔｒｕｅと評価される述語Ｐ２を生成するのに十分な値を有するテストデータの行と、を生成する。
【００４２】
以下のテーブルは、ＤＧＴ３２０が実施例１に対して生成することができる代替入力データ３２４の例を示す。
【表４】
0006691548.tif 000005
【表５】
0006691548.tif 000006
【００４３】
Ｐ２は、ｓａｌａｒｙ＞２５０００を必要とし、上記「述語フィンガープリントトレースデータ（実施例１）」テーブルは、Ｐ２がＦａｌｓｅである（テーブルの第１行）トレースデータ３１０のインスタンスが２つ及びＰ２がＴｒｕｅである（テーブルの第２行）トレースデータ３１０のインスタンス２つを示すので、この例について、ＤＧＴ３２０は、代替データ３２４において述語Ｐ２の４つの値を生成し、そのうち２つは２５０００より大きく、そのうち２つは２５０００より小さいか又はこれに等しい。従業員名（ｅｍｐ＿ｎａｍｅフィールド）は、いずれの述語内にも含まれず、ＤＧＴ３２０は、このフィールドの行に対してはランダムデータを生成する。全グループ名は、Ｆａｌｓｅの評価状態を生じさせるので、ＤＧＴ３２０は、ランダムデータがＮＯＴ＝”ｄｅｖ”及びＮＯＴ＝”ｔｅｓｔ”に制約されることを除いて、このフィールドの行に対してランダムデータを生成する。
【００４４】
代替的に、シミュレーションのためにモジュール３３４により実行されるクエリ３３３について、コンプレッサ３３０は、述語Ｐ１つまり「ｇｒｐ＿ｎａｍｅ＝’ｄｅｖ’又はｇｒｐ＿ｎａｍｅ＝’ｔｅｓｔ’」を削除できる。これに応じて、コンプレッサ３３０は、変更クエリ３３３が以下になるように、ＳＥＬＥＣＴステートメントから、Ｇｒｐテーブル（”ｇｒｐ”）への参照を削除できる。：
【表６】
0006691548.tif 000007
【００４５】
この代案において、ＤＧＴ３２０は、Ｇｒｐテーブルに対してデータを全く生成せず、Ｇｒｐテーブルを定義しないように選択することさえできる。この代案において、ＤＧＴ３２０は、上述のように、代替データ３２４において述語Ｐ２の４つの値を生成し、そのうち２つは２５０００より大きく、そのうち２つは２５０００より小さいか又はこれに等しい、又は代替的に、述語Ｐ２に対して、どちらも２５０００より大きい２つの値のみを有する代替データ３２４を生成することができる。
【００４６】
上記の実施例１において、述語状態「Ｔ」及び「Ｆ」は、フィンガープリントトレースデータテーブルにおける評価状態として示された。本発明の実施形態によると、付加的な述語状態が存在し得る。前述のように、少なくとも以下の理由で評価されなかった述語を示す状態「Ｉ」を含ませることができる。クエリが全述語より少ない述語により満足される場合は、結果テーブルに対して生成される各行は、クエリの全述語より少ない評価から生じ得る。従って、述語のいくつかが入力テーブルの対応する行の特定の組み合わせに対するクエリを満足すると、その特定の組み合わせに対する述語の他の評価は、意図的にスキップすることができ、これらの他の述語についての状態の各々は、「Ｉ」で示すことができる。
【００４７】
クエリの評価のためのフィンガープリントトレースデータテーブルの評価状態変数は、フィンガープリントトレースデータ３１０がキャプチャされたときに述語が評価中であったことを示す状態「Ｅ」も含むことができる。この状態は、例えば、クラッシュ又はユーザの実行停止などにより、全体評価の完了前にモジュール３１２によるクエリ３１４の実行が停止する場合があるために生じ得る。
【００４８】
以下のテーブルは、本発明の実施形態による、４つの評価状態をまとめたものである。
【表７】
0006691548.tif 000008
【００４９】
以下は、別の例示的クエリ（「実施例２」）である。
【表８】
0006691548.tif 000009
【００５０】
この例は、とりわけ、フィンガープリントトレースデータ３１０においてキャプチャされた付加的なクエリ評価状態Ｉを示す。実施例２において「（ｄｅｐｔ＿ｎａｍｅ＝’Ｄｅｖ’  ＯＲ  ｄｅｐｔ＿ｎａｍｅ＝’Ｈａｒｄｗａｒｅ’  ＯＲ  ｄｅｐｔ＿ｎａｍｅ＝’Ｓａｌｅｓ’」）は３つの述語として扱われ、一方、実施例１においては、「（ｓｅｌｅｃｔ  ｉｄ  ｆｒｏｍ  ｇｒｐ  ｗｈｅｒｅ  ｇｒｐ＿ｎａｍｅ＝’ｄｅｖ’  ｏｒ  ｇｒｐ＿ｎａｍｅ＝’ｔｅｓｔ’」）は、１つの述語として扱われることに留意されたい。前述のように、本明細書の実施形態によれば、２つの代案が存在する。
【００５１】
実施例２のクエリは、Ｐ１はＴｒｕｅであり、Ｐ２、Ｐ３及びＰ４の１つ又は複数はＴｒｕｅである入力テーブルから対応する行のいずれかの組み合わせにより満足できる。従って、例えばＰ１及びＰ２がＴｒｕｅの場合、クエリ３１４は満足される。対応する入力テーブル３０４の行の組み合わせに対してＰ１及びＰ２がＴｒｕｅであると決定されると、その行に対してＰ３又はＰ４がＴｒｕｅであるかどうかは問題でない。そのため、クエリ評価モジュール３１２は、かかる場合にはＰ１及びＰ２の評価後にＰ３及びＰ４を評価せずに停止し、データを入力テーブル３０４の行から結果テーブル３１６の行にコミットすることができ、その場合、結果テーブル３１６におけるかかる行の述語Ｐ１、Ｐ２、Ｐ３及びＰ４は、ＴＴＩＩである。
【００５２】
以下は、この例示的クエリに含まれるテーブル及び列のリストである。：
【表９】
0006691548.tif 000010
【００５３】
以下は、クエリに含まれる述語のリストである。
【表１０】
0006691548.tif 000011
【００５４】
以下は、クエリに含まれるキャプチャジョインフィルタのリストである。：
【表１１】
0006691548.tif 000012
【００５５】
以下は、このクエリに対する例示的入力テーブルである。
【表１２】
0006691548.tif 000013
【表１３】
0006691548.tif 000014
【表１４】
0006691548.tif 000015
【００５６】
以下は、上記クエリを上記入力テーブルに適用した結果である。
結果テーブル（実施例２）
【表１５】
0006691548.tif 000016
【００５７】
上記の少なくとも一部を要約すると、ＤＧＴ３２０は、当初クエリ３１４を実行したモジュール３１２とは異なる実行モジュール３３４によるクエリ３１４の実行をシミュレートするために使用するための代替入力データ３２４、又は同じモジュール３１２による場合でも少なくとも代替入力データ３２４を生成する。これは、クエリ３１４が当初処理されたオリジナルデータ３０４が、プライバシーの理由などに起因して利用できない場合があるからである。オリジナルデータ３０４は、利用可能であったとしても膨大すぎる場合がある。シミュレーションは、オリジナルデータ３０４で何故クエリ実行が失敗したか、又はうまくいかなかったかを判断するために有用である。クエリ実行がオリジナルデータ３０４に対して適切に行われた場合でも、シミュレーションは、どのようにクエリ実行性能を改善するかを分析するために行うことができる。
【００５８】
ＤＧＴ３２０は、スキーマ３０８、及びオリジナルデータ３０４のクエリ３１４の実行中にキャプチャされたフィンガープリントトレースデータ３１０に応じて、代替入力データ３２４を生成する。さらに、ＤＧＴ３２０は、オリジナルクエリ３１４に応じて又は変更クエリ３３３に応じて、代替入力データ３２４を生成する。（変更クエリ３３３は、クエリ３１４に基づいて生成されるので、ＤＧＴは、クエリ３１４に応じて代替入力データ３２４を生成すると言うことができる。）
【００５９】
フィンガープリントトレースデータ３１０は、フィンガープリントトレースプログラム３０６によりキャプチャされる。つまり、クエリ３１４がオリジナルデータ３０４に実行されると、フィンガープリントトレースプログラム３０６は、クエリ述語及びオリジナル入力データセット３０４に従って各評価（又は、少なくとも選択された評価）に対して特定の状態データをキャプチャし、それに応じて、状態データをフィンガープリントトレース３１０として示す。状態データは、本発明の実施形態によれば、考えられる述語状態の各々の特定の組み合わせ、及び評価プロセスにおいて生じるその組み合わせのインスタンス数のカウントを含む。代替的に、トレース３１０の状態データは、単純に評価インスタンスがなかった組み合わせを省略して示すことができる。従って、フィンガープリントトレースデータ３１０は、トレースデータ３１０がキャプチャされるとき、組み合わせにおける各述語の評価状態を示すが、これはクエリ実行失敗が生じたときであり得る。
【００６０】
以下のフィンガープリントデータテーブルは、上記実施例２によって成功裏に完了したクエリ実行のものである。これは、オリジナルデータ３０４に対する、クエリ実行中にキャプチャされたフィンガープリントトレースデータ３１０を示す。これは成功裏に完了したクエリ実行のものなので、「Ｅ」状態を含まない。この例では、トレース３１０は、販売部門（Sales）のＪａｍｅｓに対するＦＦＦＴ（これは、初期Ｐ１＝Ｆがこの特定のクエリに対して除外されるので、ＦＩＩＩとキャプチャされる）、及び財務部門（Finance）のＨｅｎｒｙ及びマーケティング部門（Marketing）のＪａｃｋ及びＪｏｈｎに対するＴＦＦＦなど、クエリを満足しない評価インスタンスを省略する。
【表１６】
0006691548.tif 000017
【００６１】
この例について、上記フィンガープリントトレースデータテーブル（実施例２）の第１行に示すように、Ｐ１及びＰ２は、Ｓａｎｊａｙ及びＪｉｍは、二人ともサラリー（salary）が＄３０００（Ｐ１）より多く、かつ２人とも「Ｄｅｖ」部門（Ｐ２）に所属するので、２つのインスタンス、つまりＳａｎｊａｙ及びＪｉｍの行においてＴｒｕｅである。この条件は、オリジナルデータ３０４の入力テーブルにおける行の対応する組み合わせ、すなわちＪｉｍに対するＥｍｔ、Ｄｅｐｔ及びＲｅｇｉｓｔｅｒテーブルのそれぞれ５、４、及び５行目、及びＳａｎｊａｙに対する同じテーブルの８、４及び５行目についてＰ３及びＰ４の評価結果に関係なく、クエリを満足する。従って、Ｐ３又はＰ４は、これらの行においてＴｒｕｅかどうかは問題でない。そのため、クエリ評価モジュールは、この場合のＰ１及びＰ２を評価した後、Ｐ３及びＰ４を評価せずに停止し、フィンガープリントトレースモジュール３０６は、クエリ実行モジュール３１２が入力テーブル３０４の行から結果テーブル３１６の行へデータをコミットした際に生じたＰ１Ｐ２Ｐ３Ｐ４述語評価状態の「ＴＴＩＩ」の組み合わせのカウントをインクリメントする。
【００６２】
この同じ例について、上記フィンガープリントトレースデータテーブル（実施例２）の第２行に示すように、Ｐ１は、さらに２つのインスタンス、つまりＭｉｋｅ及びＦｏｓｔｅｒについて、つまりＥｍｐテーブルの６及び１１行目について、Ｔｒｕｅであるが、Ｐ２は、ＭｉｋｅもＦｏｓｔｅｒもＤｅｖ部門に所属しないので、両方についてＴｒｕｅではない。これは、Ｒｅｇｉｓｔｅｒテーブルの６及び１１行目から分かり、どちらもＤｅｐｔテーブルの５行目を指し、二人がハードウェア部門に所属していることを示す。しかしながら、ハードウェア部門はＰ３を満足している。従って、オリジナルのＥｍｐ、Ｄｅｐｔ及びＲｅｇｉｓｔｅｒテーブルに対するクエリの実行中、クエリ実行モジュールは、Ｆｏｓｔｅｒ及びＭｉｋｅについて、結果テーブル３１６に対して、それぞれ１及び３行目をコミットし、いずれの場合も、そうした回の述語評価の状態は、ＴＴＴＩであった。毎回、フィンガープリントトレースモジュール３０６は、述語状態のＴＴＴＩ組み合わせのカウンタをインクリメントした。
【００６３】
以下は、本発明の実施形態における、ＤＧＴ３２０が、有向ランダム処理により、どのように代替入力データ３２４を生成するかの一例である。例えば、値の初期ポピュレーションを準備し、それに対して少なくとも３つの述語Ｐ１、Ｐ２及びＰ３の異なる組み合わせを満足する値を選択するために、ＤＧＴ３２０は、Ｐ１を満足するＮ個の値Ｕ（つまりＵ１乃至Ｕｎ）、Ｐ２を満足するＮ個の値Ｖ（つまりＶ１乃至Ｖｎ）、Ｐ３を満足するＮ個の値Ｗ（つまり、Ｗ１乃至Ｗｎ）、Ｐ１を満足しないＮ個の値Ｘ（つまり、Ｘ１乃至Ｘｎ）、Ｐ２を満足しないＮ個の値Ｙ（つまりＹ１乃至Ｙｎ）、Ｐ３を満足しないＮ個の値Ｚ（すなわち、Ｚ１乃至Ｚｎ）を生成し、ここで、例えば、Ｕはテーブル１における列、Ｖはテーブル２における列、Ｗはテーブル３における列用とすることができる。
【００６４】
ＤＧＴ３２０は、例えば、Ｐ１Ｐ２Ｐ３＝ＴＦＴであるように値の組み合わせを生成するために、Ｎに対してランダム値を生成し、対応するＵを選択し、Ｎに対する次のランダム値を生成し、対応するＹを選択し、Ｎに対する次のランダム値を生成し、対応するＷを選択する。Ｕ、Ｙ及びＷに対して選択された値の組み合わせは、ＴＦＴに評価される。ＤＧＴ３２０は、選択されたこれらの値の各々をそれぞれのテーブルの対応する行、つまり互いにリンクされる行に書き込む。
【００６５】
テーブルの行が、スキーマ３０８が示すように、付加的なデータにより互いにリンクされると、これにより、ＤＧＴ３２０は、述語を満足する上述の値の有向ランダム生成に加えて、データを生成するよう要求される。例えば、上記の例のＲｅｇｉｓｔｅｒテーブルの５行目は、各々がｅｍｐ＿ｉｄ列に同じ値を有することにより、Ｅｍｐテーブルの５行目にリンクされる。同様に、上記の例のＲｅｇｉｓｔｅｒテーブルの５行目は、各々がｄｅｐｔ＿ｎａｍｅ列に同じ値を有することにより、Ｄｅｐｔテーブルの４行目にリンクされる。ＤＧＴ３２０は、述語を満足する生成された値をまとめてリンクするために、ランダム値を生成し、それらをテーブルの述語を満足するために生成された値を有する対応する行をリンクする列に書き込む。
【００６６】
本発明の実施形態によると、ＤＣＭは、評価状態のトレース３１０のテーブル及びそれぞれのカウントを圧縮する。（これは、フィンガープリントトレースプログラム３０６の一部として行うか、又はこの圧縮は、ＤＧＴ３２０が代替入力データ３２４を生成するもののような、別のコンピュータシステム３２２上にあり得る別のプログラムによって行うことができる。）この圧縮は、上記の実施例１に関して説明したように行うことができ、和結合３３２演算は、キャプチャされたフィンガープリントトレーステーブル３１０の各列に対して実施される。しかしながら、実施例１は２つの状態のみを有するフィンガープリントトレース３１０を示すが、実施例２が示すように、トレース３１０は４つの評価状態をキャプチャする場合があるので、以下の付加的な詳細を示す。以下の真理値テーブルは、４つの評価状態全て対する和結合演算に適用される規則を示す。
【表１７】
0006691548.tif 000018
【００６７】
圧縮を行う圧縮モジュール３３０は、フィンガープリントトレースプログラム３０６の、又はデータ生成プログラムの、又は別のプログラムのモジュールとすることができる。圧縮モジュール３３０は、フィンガープリントトレースデータ３１０の列における評価状態に対して上記の真理値テーブル定義の和結合演算を行う。例えば、実施例２のフィンガープリントデータテーブルの最終行を参照されたい。
【００６８】
圧縮モジュールは、上記フィンガープリントデータテーブルが与えられると、表の各列における評価状態に対して和結合演算を行う。第１の列について、Ｔ×Ｔ＝Ｔである。第２の列について、Ｔ×Ｆ＝Ｔである。以下同様である。フィンガープリントデータテーブルは、より大きいデータセットについては、当然より多くの行を有する傾向がある。圧縮する行が３つある場合、列の第１及び第２の行の第１の和結合演算の後、同じ列の第３の行の評価状態及び第１の和結合演算の結果を用いて、第２の和結合演算が行われる。圧縮する行が４つある場合、第２の和結合演算の結果に対して、第３の和結合演算が行われる。より多くの行がある場合は、以下同様である。
【００６９】
ＤＧＴ３２０は、フィンガープリントトレースデータ３１０及びフィンガープリントトレースデータ３１０の圧縮されたバージョン、つまり和結合演算の結果を用いて、どのデータを生成して、クエリ実行モジュール３３４によるオリジナルデータ３０４の処理のシミュレーションとして処理するための代替入力データ３２４のセット内に含ませるかを決定する。より具体的には、実施例２について、ＤＧＴ３２０は、クエリ実行が、クエリ述語評価状態Ｐ１Ｐ２＝ＴＴ（上記の実施例２のフィンガープリントデータテーブルの第１行）の少なくとも２つのインスタンス、及び状態Ｐ１Ｐ２Ｐ３＝ＴＦＴ（第２行）の少なくとも２つのインスタンスを生じさせる値を有するＥｍｐ、Ｄｅｐｔ及びＲｅｇｉｓｔｅｒテーブルに行を生成する。言い換えれば、ＤＧＴ３２０は、ＪｉｍについてＥｍｐ、Ｄｅｐｔ及びＲｅｇｉｓｔｅｒテーブルの５、４及び５行目において評価状態を生じさせる値、Ｓａｎｊａｙについて同じテーブルの８、４及び５行目において評価状態を生じさせる値、並びにＭｉｋｅ及びＦｏｓｔｅｒについてＥｍｐ及びＲｅｇｉｓｔｅｒテーブルの６及び１１行目及びＤｅｐｔテーブルの５行目において評価状態を生じさせる値のように、評価状態を生じさせる値を有する行を生成する。しかしながら、ＤＧＴ３２０は、オリジナルデータ３０４自体にはアクセスすることなく、代替入力データ３２４を生成し、これは実際の雇用者名、給与等にアクセスしないことを意味する。
【００７０】
実施例２について、ＤＧＴ３２０は、述語Ｐ４に対してＥｍｐ、Ｄｅｐ及びＲｅｇｉｓｔｅｒテーブルにおいて必ずしもデータを生成するとは限らないことに留意されたい。これは、オリジナルデータのクエリ実行中、フィンガープリントトレースデータ３１０の個々の行から、及び全行の和結合結果のＰ４列からも分かるように、Ｐ４に対してキャプチャされたフィンガープリントトレース状態が、全インスタンスにおいて「Ｉ」であったためである。一般に、ＤＧＴ３２０は、和結合結果３３２を用いて、ＤＧＴ３２０がデータを生成する必要がない述語、つまり上記の和結合真理値テーブルにより示されたロジックに従って決定される、和結合結果３３２に対するＴ状態を有さない述語を決定することができる。本発明の実施形態によると、ＤＧＴ３２０は、かかるデータを生成しない。
【００７１】
上記の評価状態テーブルの意味における「Ｉ」について、テーブルには、「クエリにおける述語除去を検討する」とある。これは、和結合真理値テーブルによると「Ｉ」と「Ｆ」との和結合は「Ｆ」であり、これは、述語をシミュレーションクエリ内に保持しないことを指すが、和結合真理値テーブルによると「Ｉ」と「Ｔ」との和結合は「Ｔ」であり、これは、述語をシミュレーションクエリ内に保持することを指すためである。従って、トレースデータの１つの行に「Ｉ」状態を有する述語を保持するかしないかは、その行と、「Ｔ」又は「Ｆ」状態を有する場合がある他の行との和結合結果による。
【００７２】
上記の評価状態テーブルの意味における「Ｅ」について、テーブルには、「述語を保持する」とある。これは、和結合真理値テーブルによると「Ｅ」と「Ｆ」との和結合及び「Ｅ」と「Ｔ」との和結合は、いずれも「Ｔ」であり、他の行の「Ｔ」又は「Ｆ」状態に関係なく、述語をシミュレーションクエリ内に保持することを指すためである。つまり、トレースデータの１つの行に「Ｅ」状態を有する述語を保持するかしないかは、「Ｅ」状態の行と「Ｔ」又は「Ｆ」状態を有する他の行との和結合結果による。
【００７３】
上記の評価状態テーブルの意味における「Ｆ」について、テーブルには、「述語の評価された値がＦａｌｓｅであるので、行に対するデータを生成する」とある。これは、トレースデータ３１０の行の述語が「Ｆ」状態を有する場合、ＤＧＴ３２０は、その行の述語に対する代替入力データ３２４（つまり、シミュレーションクエリ３３３の実行の際に「Ｆ」として評価するデータ値）の行を生成するが、ただし、その述語についての和結合結果３３２が「Ｆ」である場合を除き、その場合は、コンプレッサ３３０はシミュレーションクエリ３３３に対する述語を削除する、つまり、ＤＧＴ３２０は、その述語に対するデータ３２４の生成をスキップできることを意味する。
【００７４】
以下は、別の例示的クエリ（実施例３）である。：
【表１８】
0006691548.tif 000019
【００７５】
この例示的クエリは、とりわけ、コンプレッサ３３０のクエリ変更論理の態様が、どのように動作して、モジュール３３４が生成装置３２０により生成される代替入力データ３２４に対して適切なシミュレーションクエリ実行を可能にするかを示す。上記のＲｅｇｉｓｔｅｒテーブルがｄｅｐｔ＿ｉｄ＝１０７（ソフトウェア）には登録された従業員がいないことを示すので、この例は、所与のデータセットで決してＴｒｕｅにならないサブクエリを含む。従って、この例示的データの述語「ＳＥＬＥＣＴ  ｅｍｐ＿ｉｄ  ＦＲＯＭ  ｒｅｇｉｓｔｅｒ  ＷＨＥＲＥ  ｄｅｐｔ＿ｉｄ＝１０７」についてのトレースデータ３１０における全評価状態は、クエリ評価が極めて早期に停止しない限り、「Ｆ」であるか又は少なくとも「Ｉ」であり、この場合「Ｅ」状態が存在し得る。この述語に対して「Ｅ」状態がない限り、コンプレッサ３３０は、和結合真理値テーブルが「Ｆ」及び「Ｆ」と「Ｉ」との和結合に対する和結合結果が「Ｆ」であると示すので、和結合データ３３２においてこの述語に対して「Ｆ」を示す。
【００７６】
フィンガープリントトレースデータ３１０の全述語組み合わせインスタンスに対してではなく、和結合データ３３２に対して代替入力データ３２４を生成する本発明の実施形態又は形態について、コンプレッサ３３０は、和結合データ３３２のこの述語に対する「Ｆ」表示に応じてオリジナルクエリ３１４からこの述語を省略する変更クエリ３３３を生成する。従って、変更クエリ３３３にはこの述語がないので、シミュレーションクエリ実行モジュール３３４は、変更クエリ３３３を実行する際に、この述語に対する代替入力データ３２４を読み込もうとしない。
【００７７】
上記は、この形態又は実施形態において、データ生成装置３２０は、コンプレッサ３３０がこの述語を省略して変更クエリ３３３を生成するのと同じ理由で、つまり和結合データ３３２がこの述語についてＦを示すので、この述語に対するデータを生成しないことから、代替入力データ３２４がこの述語に対するデータを有せず、特に有用である。この述語に対するデータは、Ｒｅｇｉｓｔｅｒテーブルにとって非主要データ列であるので、データ生成装置３２０がこの述語に対してデータを生成しないこのインスタンスにおいて特に有用であることに留意されたい。従って、データ生成装置３２０は、Ｒｅｇｉｓｔｅｒテーブルを生成する必要は全くない。
【００７８】
ＳＱＬ  ＪＯＩＮ節を用いて、共通フィールドに基づいて２つ又はそれより多いデータテーブルからの行を組み合わせる。本発明の実施形態によると、フィンガープリントトレースは、クエリ実行モジュール３１２によるＪＯＩＮ評価を監視するフィンガープリントトレースモジュール３０６による述語評価ついて上述したのと同じ方法で、ＪＯＩＮ評価に対して行われる。このことは、述語評価に対するフィンガープリントトレースと同じ方法で、代替入力データ３２４に対して生成されるデータを削減し、そのこと上記の例におけるようにテーブル全体の生成、及びテーブル間で一致しない不要な行を除去することすら含むことができる。また、述語評価に対するフィンガープリントトレースと同じ方法で、フィンガープリントトレースＪＯＩＮ評価は、フィンガープリントトレースデータ３１０又は和結合データ３３２又はその両方を提供し、ＤＧＴ３２０がＪＯＩＮ節により示されるテーブル列に対して代替入力データ３２４を生成するのを可能にする。
【００７９】
ここで図３と共に図４を参照すると、本発明の実施形態によるアクションが、図４に示され、このアクションは、代替入力データ３２４及び変更クエリ３３３の生成に関連し、かつモジュール３１２によるオリジナルクエリ３１４の実行のクエリ実行モジュール３３４によるシミュレーションに関連し、クエリ実行モジュール３３４は、代替入力データ３２４に対する変更クエリ３３３を実行する。本発明の実施形態によると、ＤＧＴ３２０及びコンプレッサ３３０（この２つは、本発明の実施形態により、代替的に、単一のモジュールとすることができる）は、図４に示す、トレースデータ３１０及びスキーマデータ３０８の走査及び構文解析を含むアクションを行う。（図３は、スキーマ３０８を別個のデータ構造として示すが、これはトレースファイル３１０内に含ませることができる。トレースファイル３１０は、述語の特別なトレースファイル、ジョインフィルタ、ゾーンマップ評価、統計、スキーマダンプ３０８、及び本明細書で説明するような診断目的に有用かつｎｚｌｏｇｃｏｌｌｅｃｔｏｒ等のユーティリティにより作成されるもののような、単一のターボールファイルの形式とすることができる他のログファイルを含むことができる。）
【００８０】
例えば、ユーザが、フィンガープリントトレースが有用である問題に遭遇すると、図４に示されるアクション４００が開始する。ユーザは、インターフェース３２６を介して、フィンガープリントトレースプログラム３０６と通信することにより、トレースを開始できる４０５。具体的には、ユーザは、セッション変数「ＳＥＴ  ＳＱＬ＿ＦＩＮＧＥＲＰＲＩＮＴ＿ＴＲＡＣＥ＝ＯＮ」をフィンガープリントトレースインターフェース３２６に発行することなどにより、トレースを開始できる４０５。ユーザがセッション変数を発行すると、クライアントフィンガープリントトレースインターフェース３２６は、そのセッション変数をフィンガープリントトレースプログラム３０３に通信する。このように、ユーザは、システム３０２で問題があるクエリ３１４を再実行し、モジュール３０６を介してトレースデータ３１０をキャプチャできる。
【００８１】
開始４０５において、ユーザは、インターフェース３２６を介して、どのアクションが現在のフィンガープリントトレースセッションに対して要求されているかをプログラム３０３に対して示すために、付加的なセッション変数も発行する。図４は、これらのアクション４１０、４２０等を特定の順序で示し、従って、アクションは図示された順序で説明されるが、明示的に示される場合又は説明される文脈により暗示される場合を除いて、これらのアクション４１０、４２０等の実施は、図示され説明される順序に限定されない。実際に、これらのアクション４１０、４２０等は、適切な場合には同時に実施することができる。
【００８２】
４１０において、プログラム３０３が、スキーマダンプが要求されたことを検知すると、モジュール３０６は、スキーマダンプアクション４１５を行って、フィンガープリントトレースの一部としてスキーマ３０８を生成する。（前述のように、スキーマ３０８は、トレース３１０内に含ませることができる。）
【００８３】
本発明の実施形態によると、スキーマ３０８は、データベース、テーブル及び関連したオブジェクトを作成するためのＤＤＬステートメントの完全な定義を含むスキーマダンプを含み、かつスクリプトの形態とすることができる。大部分のデータベースサーバは、かかる定義をスクリプトに生成する。本発明の実施形態によると、スキーマダンプスクリプト３０８は、ＤＧＴ３２０により使用され、クエリ実行モジュール３１２がデータ３０４にクエリ３１４を実行したとき、クエリ実行モジュール３１２により、それらがデータ３０４においてテーブル及びデータベースオブジェクトに遭遇したように、代替入力データ３２４に対してテーブル及びデータベースオブジェクトを作成する。
【００８４】
以下は、Ｎｅｔｅｚｚａデータベースサーバ及びｎｚｓｑｌユーティリティにより使用できるスキーマダンプスクリプト３０８の一例である。
【表１９】
0006691548.tif 000020
【００８５】
また、４２０において、プログラム３０３が、ジョインフィンガープリントトレースが要求されたと検知すると、上述したように、モジュール３０６は、ジョインフィンガープリントトレースをトレースデータ３１０の一部としてキャプチャするためのアクション４２５を行う。同様に、４３０において、プログラム３０３が、述語フィンガープリントトレースが要求されたと検知すると、上述したように、モジュール３０６は、述語フィンガープリントトレースをトレースデータ３１０の一部としてキャプチャするためのアクション４３５を行う。
【００８６】
加えて、４４０において、プログラム３０３が、ゾーンマップフィンガープリントトレースが要求されたと検知すると、モジュール３０６は、以下のように、ゾーンマップフィンガープリントトレースをトレースデータ３１０の一部としてキャプチャするためのアクション４４５を行う。
【００８７】
ゾーンマップは、データベースサーバにより自動的に生成される内部テーブルであって、日付、タイムスタンプ、ｂｙｔｅｉｎｔ、整数及びデータ型式等のグループ化された又はほぼ順序付けられた、大規模データセットのクエリに対するスループット及び応答時間を改善する。ゾーンマップは、制約されたスキャン・クエリにおけるＷＨＥＲＥ節の開始及び終了範囲外の記録を除去することによって、データの取り出しに必要なディスクスキャン動作操作を低減できる。つまり、ゾーンマップを使用して関心のある行を含まないテーブルの部分をスキップし、スキャンするディスクのページ数及び範囲を低減する。このことにより、検索時間、ディスクの競合及びディスクＩ／Ｏが低減される。大部分のデータベースサーバは、類似の実装を有するが、ゾーンＭａｐ、Ｓｙｎｏｐｓｉｓ又はＩｎｄｅｘ範囲のような、異なる用語を使用することがある。前述のように、用語「ゾーンマップ」は、本明細書では上記実装の何れか及び全てを網羅するように使用される。
【００８８】
本発明の実施形態によると、フィンガープリントトレースモジュール３０６は、クエリ実行モジュール３１２によるクエリの実行中、クエリ３１４を満足するそれぞれの列のデータ３０４の範囲を決定し、ゾーンマップにおいて指定された用語でその範囲を示す。フィンガープリントトレースモジュール３０６は、この範囲及び列情報をトレースデータ３１０に書き込む。次に、コンプレッサ３３０は、このゾーンマップ情報をトレースデータ３１０からＤＧＴ３２０にフィードし、これに応じてＤＧＴ３２０は、代替入力データ３２４に対して生成するシミュレーションデータを限定し、データ３２４が各列に対して決定された範囲に限定されるようにする。これにより、純粋にランダムに生成されるデータよりも顧客範囲値に近い有向データが提供される。
【００８９】
以下は、本発明の実施形態による、トレースデータ３１０に対するゾーンマップキャプチャの態様を示す、別の例示的クエリ（実施例４）である。：
【表２０】
0006691548.tif 000021
【００９０】
以下のテーブルは、データ３０４のｅｍｐテーブルのサラリー列のゾーンマップに対して定義されるゾーンタグＺ１〜Ｚ９範囲を含む。
【表２１】
0006691548.tif 000022
【００９１】
この例では、クエリ３１４実行の結果３１６は、次の通りである。：
【表２２】
0006691548.tif 000023
【００９２】
例えば、上記の例示データ３０４のｅｍｐテーブルに対する上記実施例４のクエリの実行について、フィンガープリントトレースモジュール３０６は、クエリ実行モジュール３１２による実行中クエリ３１４を満足するサラリー列のデータ３０４（つまり「Ｔ」評価状態を有して遭遇したデータ値）について、特定のデータ３０４値のうち、ゾーンマップのＺ１〜Ｚ９それぞれに入るインスタンス数を判断する。この例では、サラリー列ゾーンマップ関連の、モジュール３０６によりキャプチャされたフィンガープリントトレースデータ３１０は、次の通りである。：
【表２３】
0006691548.tif 000024
【００９３】
フィンガープリントトレースモジュール３０６は、クエリ３１４の実行中、「Ｅ」評価状態を生じさせるデータ値も決定するが、いずれも上記の例には示されない。ＤＧＴ３２０は、トレースデータ３１０における状態の対応するインスタンスに応じて、Ｔ及びＥ評価状態を生じさせる代替入力データ３２４を生成する。本発明の実施形態によると、フィンガープリントトレースモジュール３０６は、Ｉ及びＦ評価を廃棄するので、ＤＧＴ３２０は、その評価状態を生じさせる代替入力データ３２４を生成しない。
【００９４】
加えて、４５０において、プログラム３０３が、統計フィンガープリントトレースが要求されたことを検知すると、モジュール３０６は、該モジュール３０６によるフィンガープリントトレースにおいて、トレースデータ３１０に含ませることができる、動作統計をキャプチャするためのアクション４５５を行う。動作統計は、システム３０２が最近のシステム及びクエリ動作の文脈において、どのように動作しているかの高レベルの概観を提供し、これは問題の診断、性能特性の理解、及びシステム管理ソフトウェアとのインターフェースに役立つ。大部分のデータベースサーバは、プランファイル又はＳＱＬコマンド「ＧＥＮＥＲＡＴＥ  ＳＴＡＴＩＳＴＩＣＳ」によりクエリ統計を提供することができる。
【００９５】
本発明の実施形態によると、フィンガープリントトレースモジュール３０６は、データベースサーバにより提供される統計情報を構文解析し、テーブル行カウント、明確かつ最も共通の値等、トレースデータ３１０における情報をキャプチャする。ＤＧＴ３２０は、この情報を用いて、クエリ実行モジュール３１２がデータ３０４に対してクエリ３１４を実行する際に遭遇する環境により近い多様性及びボリュームを有するシミュレーションデータ３２４を生成する。例えば、上記のｄｅｐｔテーブルに対するクエリ「ＳＥＬＥＣＴ＊ＦＲＯＭ  ｄｅｐｔ；」について、フィンガープリントトレースモジュール３０６は、トレースデータ３１０においてデータベースサーバにより与えられる以下の統計をキャプチャする。：
【表２４】
0006691548.tif 000025
【００９６】
モジュール３１２がクエリ３１４を実行し、これに対してモジュール３０６がフィンガープリントトレース３１０をキャプチャすることに関連して、４６０において、プログラム３０３は、当該クエリ３１４の実行が、エラー検出、進捗不足等に起因する完了又は中断などのために一時停止すると、プログラム３０３は、インターフェース３２６を介してユーザに通知する。ユーザは、これに応じて、インターフェース３２６を介してセッション変数「ＳＥＴ  ＳＱＬ＿ＦＩＮＧＥＲＰＲＩＮＴ＿ＴＲＡＣＥ＝ＯＦＦ」をプログラム３０３に通信する。これに応じて、モジュール３０６によるトレース動作はトレースを停止し、それにより、システム３０２における実施のオーバーヘッドが低減する。代替的に、４６０において、プログラム３０３は、特定のクエリ３１４の実行が一時停止したことを検知すると、プログラム３０３がユーザに通知し、モジュール３０６がトレースを自動的に停止するように構成することができる。
【００９７】
また、４６０において、モジュール３０６がトレースを停止すると、ユーザは、インターフェース３２６を介して、コンプレッサ３３０に、トレースデータ３１０を読み取り、圧縮機能つまり和結合を実施するように指示する。（代替的に、ユーザは、フィンガープリント３０６が圧縮機能を実施する場合は、データ生成装置３２０に、トレースデータ３１０を読み取るように指示できる。）
【００９８】
上記で詳細に説明されるように、和結合結果３３２を含むトレースデータ３１０を取得したら、ユーザは、ＤＧＴ３２０に、代替入力データ３２４を生成するためのアクション４７０を実施するように指示できる。
【００９９】
要約すると、フィンガープリントトレースデータ３１０は、意図的にクエリ実行の全詳細は提供しないが、これは、量が膨大であり、シミュレーションクエリ実行には大規模な計算リソースを必要とするからである。代わりに、データ３１０及びその和結合データ３３２は、クエリ実行中に生じ、かつ実行トラブルに伴って発生しがちな評価状態に基づいて、選択情報を提供する。本発明の少なくとも幾つかの実施形態によると、フィンガープリントトレースモジュール３０６は、クエリ実行において実際に生じた評価状態の組み合わせのインスタンスのみをカウントし、フィンガープリントトレースデータ３１０に含ませることができる。さらに、実際に生じた組み合わせの中で、フィンガープリントトレースモジュール３０６は、クエリを満足させたインスタンスのみをカウントし、フィンガープリントトレースデータ３１０に含ませることができる。代替的に、クエリを満足しない組み合わせのトレースデータ３１０のインスタンスについては、フィンガープリントトレースモジュール３０６はカウントするが、データ生成モジュール３２０は代替入力データ３２４を生成しないように構成できる。
【０１００】
さらに、データ生成モジュール３２０は、コンプレッサ３３０から和結合データ３３２を受信し、それに応じて、上述のように和結合データ３３２においてＴｒｕｅと示される評価状態を生成するためだけに代替入力データ３２４を生成できる。従って、コンプレッサ３３０は、オリジナルのクエリ３１４を変更して、シミュレーションのためにクエリ実行モジュール３３４により実行された変更クエリ３３３が和結合データ３３２にＴｒｕｅとして示される節のみを含むようにすることができる。
【０１０１】
フィンガープリントトレースデータ３１０は、意図的にクエリ実行の全ての詳細を提供しないものの、本発明の実施形態によるフィンガープリントトレースは、生成された代替入力データ３２４のクエリ処理に応じて再現された挙動の精度を向上させることができるが、これは、代替入力データ３２４が、フィンガープリントトレースデータ３１０においてキャプチャされたクエリ実行中に生じたイベントの証拠に基づいて生成されるからである。対照的に、よりランダムに生成されたデータは、オリジナルのクエリ実行の挙動を再現できない。上記に示すように、フィンガープリントトレースデータ３１０においてキャプチャされた特定のイベントは、クエリを満足する評価状態のインスタンスである。このイベントのキャプチャは、イベントがさらなるクエリ実行を生じさせるので、シミュレーション挙動の精度を向上させる傾向がある。つまり、データの行がクエリを満足するかどうかを判断する際、現在評価されている節は満足する（「Ｔｒｕｅ」の評価状態）とクエリ実行が判断すると、次に、クエリ実行は続いて行の次の節を評価するか、或いは、現在の節のＴｒｕｅ状態が行のクエリ全体を満足する場合、クエリ実行は続いて次の行の評価を行う。
【０１０２】
Ｎｅｔｅｚｚａなどのフェイルファスト（fail-fast）述語評価スキームを用いるデータベースサーバについて、ＡＮＤ（論理積演算）された述語Ｐ１  ＡＮＤ  Ｐ２・・・ＡＮＤ  Ｐｎの文字列における「Ｆａｌｓｅ」の評価は、表現全体がＦａｌｓｅであり、サーバは、それ以上の述語の処理を停止することを意味する。フェイルファストプロパティを有さない他の幾つかのデータベースシステムは、述語の評価を続ける場合がある。とはいえ、フィンガープリントトレースデータの和結合（ＵＮＩＯＮ）セットを有することは、そのデータベースシステムで実際に何が起きているかの本当の表示であるので、いずれの場合においても有用である。
【０１０３】
フィンガープリントトレース及びシミュレーションのために実行されるクエリの変更は、シミュレーション挙動の精度を向上させる。その理由は、少なくとも、Ｔｒｕｅの評価状態が、Ｆａｌｓｅの評価状態よりも、多くの性能問題に至る又は少なくとも性能問題と関連付けられる傾向を含むためである。その理由が何であるかに関係なく、本発明の実施形態を適用する経験は、実施形態を適用することにより、低減したデータキャプチャ及び実行リソースの制約のなかで、ほぼ理想的なシミュレーション性能を提供することを示している。
【０１０４】
本発明の実施形態は、データ依存のクエリ実行問題を特定し、クラッシュ、内部／外部エラー、誤った結果、非決定論的結果、及び性能の問題に対して、クエリ実行の状態の確認に役立つ。上述した評価状態Ｔ、Ｆ、Ｉ及びＥの特定は、一度も評価されないクエリの述語を簡単化したり、除去したりできるようにして、開発者が、複雑なクエリを簡単化し、より容易に理解しデバッグできるようにする。これらの利点は、キャプチャし分析する必要があるデータの量を低減させつつ達成される。従って、本発明の実施形態は、クエリ実行におけるデータ依存型問題の特定に必要な時間及びハードウェアを減少させる。
【０１０５】
本発明の実施形態は、集約的な手動操作及び分析なしに、また顧客データのプライバシーを損なわずに、ランダム生成方法よりも良い実行挙動を再現する。これがないと、大量のデータ及び複雑なクエリに起因して、定期的に試験するのは困難であることが多い。組織内の問題を再現するための情報収集において、チーム間の通信のやりとりを減らすことにより、本発明の実施形態は、顧客サポート、開発及び品質保証情報担当者、並びに顧客に利便性を提供する。これは、顧客満足度の向上をもたらす。
【０１０６】
図１は、本発明の実施形態による、例示的なコンピューティング環境１００を示す。示されるように、コンピューティング環境１００は、パブリック又はプラベートネットワークとすることができるネットワーク１２０を介して接続する、コンピュータシステム１１０．１、１１０．２乃至１１０．Ｎを含む。システム１１０．１、１１０．２等は、それぞれ、それぞれのデバイスのためのタスクを実行するように構成されたプログラム又はハードウェアモジュールとすることができる、それぞれのモジュールを含む。
【０１０７】
図２は、本発明の実施形態による、いずれか又は全てのコンピュータシステム１１０．１、１１０．２等として応用できるシステム２００を示す。図示のように、システム２００は、中央処理ユニット（ＣＰＵ）２０５、ネットワークインターフェース２１５、相互接続（すなわち、バス）２１７、メモリ２２０及びストレージ２３０を含む。ＣＰＵ２０５は、メモリ２２０内に格納されるプログラミング命令を取り出し、実行することができる。同様に、ＣＰＵ２０５は、メモリ２２０に常駐するあるアプリケーションデータを取り出し、格納することができる。相互接続２１７は、ＣＰＵ２０５、ストレージ２３０、ネットワークインターフェース２１５及びメモリ２２０の間のプログラミング命令及びアプリケーションデータなどの伝送を容易にすることができる。ＣＰＵ２０５は、単一のＣＰＵ、複数のＣＰＵ、複数の処理コアを有する単一のＣＰＵ等を表すように含められる。加えて、メモリ２２０は、本発明の実施形態による、図示する例示的データ２２２及びモジュール２２４など、ランタイム実行のためのデータ及びプログラムモジュールを含むランダムアクセスメモリを表すように含められる。しかしながら、モジュール２２４等の１つ又は複数のモジュールは、他のハードウェアにより実装することができ、ファームウェアであり得ることを理解されたい。
【０１０８】
データ２２２及びモジュール２２４は、図示する例示的データ２３２及びモジュール２３４のように、メモリ２２０におけるＣＰＵ２０５によるランタイム実行のための、ストレージ２３０からのデータ及びプログラムモジュールのインスタンスとすることができる。ストレージ２３０のデータ及びプログラムモジュールは、データベーステーブル及び１つ又は複数のクエリ実行モジュールを含むことができる。例えば、ストレージ２３０は、ディスクドライブストレージデバイスとすることができる。単一ユニットとして図示されているが、ストレージ２３０は、固定ディスクドライブ、フロッピーディスクドライブ、テープドライブ、取り外し可能メモリカード又は光学記憶装置、ネットワーク接続ストレージ（network attached storage、ＮＡＳ）、又はストレージエリアネットワーク（ＳＡＮ）のような、固定及び／又は取り外し可能ストレージデバイスの組み合わせとすることができる。
【０１０９】
図における上述の例及び描写は、アーキテクチャの制限を意味することを意図しない。例えば、デバイス１１０．１、１１０．２等のいずれも、ノートブックコンピュータ、手持ち式コンピュータ、スマートフォン、キオスク等とすることができる。さらに、本発明は、コンピュータシステムにより使用されるあらゆるデータストレージ媒体（つまり、フロッピーディスク、コンパクトディスク、ハードディスク、テープ、ＲＯＭ、ＲＡＭ等）に常駐することができる。（用語「コンピュータ」、「システム」、「コンピュータシステム」及び「データ処理システム」は、本明細書では区別なく使用される。）
【０１１０】
本発明は、システム、方法、及び／又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【０１１１】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：即ち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピーディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【０１１２】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び／又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【０１１３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、又は、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【０１１４】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータプログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【０１１５】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実施するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施する命令を含む製品を製造するようにすることもできる。
【０１１６】
コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【０１１７】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【０１１８】
１つ又は複数のデータベースは、種々の実装のためのデータを格納し、データへのアクセスを与えるために、ホスト内に含ませることができる。当業者であれば、セキュリティ上の理由で、本発明のいずれのデータベース、システム、又はコンポーネントも、単一の位置又は複数の位置におけるデータベース又はコンポーネントのあらゆる組み合わせを含むことができ、各データベース又はシステムは、ファイアウォール、アクセスコード、暗号化、復号化等のような種々の適切なセキュリティ機能のいずれかを含むことも認識するであろう。
【０１１９】
データベースは、関係型、階層型、オブジェクト指向型等などの任意のタイプのデータベースとすることができる。データベースを実装するために用い得るデータベース製品は、ＩＢＭ（商標）ＤＢ２（商標）、又は他の利用可能なデータベース製品である。（ＩＢＭ及びＤＢ２は、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。）データベースは、データテーブル又はルックアップテーブルなどを含む任意の適切な方法で編成され得る。
【０１２０】
特定のデータの関連付けは、当技術分野において知られており、実施形態される任意のデータ関連付け技術を用いて達成され得る。例えば、この関連付けは、手動で又は自動的に達成され得る。自動関連付け技術は、例えば、データベース検索、データベースマージ（database merge）、ＧＲＥＰ、ＡＧＲＥＰ、ＳＱＬ、及び／又は同様のものを含むことができる。関連付けステップは、例えば、製造業者及び小売業者のデータテーブルの各々において、キーフィールド（key field）を用いるデータベースマージ機能により達成することができる。キーフィールドは、そのキーフィールドによって定められるオブジェクトの高レベルのクラスに従ってデータベースを仕切る。例えば、ある特定のクラスは、第１のデータテーブル及び第２のデータテーブルの両方でキーフィールドとして指定することができ、次いで、これらの２つのデータテーブルは、キーフィールド内のクラスデータに基づいてマージされ得る。本実施形態においては、マージされたデータテーブルの各々のキーフィールドに対応するデータは、好ましくは同じである。しかしながら、例えば、類似するが同一でないデータをキーフィールド内に有するデータテーブルも、ＡＧＲＥＰを用いてマージすることができる。
【０１２１】
ホストは、ユーザによりアクセス可能な、適切なウェブサイト又は他のインターネット・ベースのグラフィカルユーザインターフェースを提供することができる。一実施形態において、ネットスケープ（Netscape）ウェブサーバ、ＩＢＭ（商標）Ｗｅｂｓｐｈｅｒｅ（商標）インターネットツールスイート、ＩＢＭ  ＤＢ２、ユニバーサルデータベースプラットフォーム及びＳｙｂａｓｅデータベースプラットフォームは、Ｓｕｎ  Ｓｏｌａｒｉｓオペレーティング・システムプラットフォームと共に用いられる。（ＩＢＭ及びＷｅｂＳｐｈｅｒｅは、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。）付加的に、ＪＢＤＣドライバのようなコンポーネント、ＩＢＭ接続プール（connection pooling）及びＩＢＭ  ＭＱシリーズ接続方法を用いて、幾つかのソースへのデータアクセスを提供することができる。本明細書で用いられる場合、用語ウェブページは、ユーザと対話するために用い得る、文書及びアプリケーションのタイプを限定することを意図しない。例えば、典型的なウェブサイトは、標準のＨＴＭＬ文書に加えて、種々の形式、Ｊａｖａ（登録商標）ａｐｐｌｅｔｓ、Ｊａｖａｓｃｒｉｐｔ、ａｃｔｉｖｅ  ｓｅｒｖｅｒ  ｐａｇｅ（ＡＳＰ）、Ｊａｖａ  Ｓｅｒｖｅｒ  Ｐａｇｅ（ＪＳＰ）、ｃｏｍｍｏｎ  ｇａｔｅｗａｙ  ｉｎｔｅｒｆａｃｅ  ｓｃｒｉｐｔｓ（ＣＧＩ）、ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ（ＸＭＬ）、ダイナミックＨＴＭＬ、ｃａｓｃａｄｉｎｇ  ｓｔｙｌｅ  ｓｈｅｅｔｓ（ＣＳＳ）、支援アプリケーション、プラグイン等を含むことができる。Ｊａｖａ及び全てのＪａｖａベースの商標及びロゴは、Ｏｒａｃｌｅ及び／又はその子会社の商標又は登録商標である。
【０１２２】
上記より、本発明の実施形態によると、トレースデータは、第１の入力データを含まないことを理解されたい。また、第１の入力データはデータ値を含み、第１の入力データなしにトレースデータから第２の入力データを生成することにより、第１の入力データ値のそれぞれに対応する第２の入力データについての値が生成され、第２の入力データ値の各々は、第２のクエリの実行において、第２の入力データ値の各々が、対応する第１の入力データ値についてトレースデータ内にキャプチャされた評価状態と同じ評価状態を生成するが、それ以外は対応する第１の入力データ値と無関係の値を有する。別の態様において、トレースデータは、第１のクエリの節を第１の入力データの行に適用する、第１の実行からの評価状態のそれぞれの組み合わせのカウントを含む。
【０１２３】
本発明の実施形態によると、第１の入力データなしにトレースデータから第２の入力データを生成することは、第２の入力データに対する第２のクエリの実行が、所定のタイプの評価状態の組み合わせについて同じ数の組み合わせを再現するように範囲が制約されるランダム値を生成することを含む。別の態様において、第１の実行からの評価状態は、評価されない状態を含み、評価されない状態の各インスタンスは、クエリ節を入力データの行に適用しないインスタンスから生じる。また、第１の実行からの評価状態は、Ｔｒｕｅ、Ｆａｌｓｅ及び評価中状態のうちの１又は複数を含み、Ｔｒｕｅ、Ｆａｌｓｅ及び評価中状態の各インスタンスは、クエリの節の１つを第１の入力データの行に適用するインスタンスから生じる。
【０１２４】
本発明の実施形態によると、第１の入力データなしにトレースデータから第２の入力データを生成することは、第２の実行に、第１の実行の評価されていない評価状態を除外する、第１の実行のＴｒｕｅの評価状態を再現させる、第２の実行についてのデータを生成することを含む。別の態様において、コンピュータプロセスは、トレースデータ内の評価状態の和結合結果が、第１のクエリ内の各節についてＴｒｕｅであるかどうかを判断する。
【０１２５】
本発明の実施形態によると、第２のクエリは、第１のクエリから生成され、第２のクエリを生成することは、削除される節についての和結合結果がＴｒｕｅでないとき、第１のクエリから節を削除することを含む。さらに、別の態様において、トレースデータ及び第１の入力データについてのスキーマに応じて代替入力データを生成することは、第２のクエリ実行に、Ｔｒｕｅの和結合状態を有する節についてのみ第１のクエリ実行の評価状態を再現させる、第２のクエリ実行についてのデータを生成することを含む。
【０１２６】
本明細書は多くの詳細を含むが、これらは本発明の範囲又は特許請求され得るものの範囲に対する制限ではなく、どちらかと言えば、本発明の特定の実施形態に特有の特徴の説明として解釈すべきである。別個の実装の文脈において本明細書に記載される特定の特徴はまた、単一の実装における組み合わせで実装することもできる。逆に、単一の実装の文脈において説明される種々の特徴はまた、複数の実装において別個に、又は任意の適切な部分組み合わせで実装することもできる。さらに、特徴は、特定の組み合わせで作用するように上述され、さらに最初にそのように特許請求され得るが、そのように特許請求される組み合わせからの１つ又は複数の特徴は、いずれの場合も、組み合わせから削除することができ、特許請求された組み合わせは、部分組み合わせ又は部分組み合わせの変形に向けることができる。
【０１２７】
同様に、図に示される動作は特定の順序で示されるが、これは、所望の結果を達成するために、そうした動作を示される特定の順序又は順番で実行すること、又は全ての示される動作を実施することを必要とするものと理解すべきではない。特定の状況においては、マルチタスク及び並行処理は、有利であり得る。本明細書において「第１のクエリ」、「第２のクエリ」、「第１の入力データ」及び「代替入力データ」などの用語が使用される。特に明示的に断りのない限り、又は文脈により明確に示されない限り、「第１」、「第２」及び「代替的」は単に、１つのオブジェクト又はアクションを別のものと区別し、かつ変更されたオブジェクト又はアクションへのあいまいな参照のための明確な先行詞（antecedent）を確立し、一時的又は階層的重要性を示さないための表記にすぎない。
【０１２８】
本開示を読んだ当業者であれば、変形及び変更が、本発明の範囲から逸脱することなく、実施形態に対してなされ得ることを認識するであろう。
【０１２９】
本明細書において示され説明される特定の実装は、本発明及び本発明の最良の形態を例証するものであり、決して、別の方法で本発明の範囲を限定することを意図するものではないことを理解されたい。他の変形は、以下の特許請求の範囲内にある。例えば、本発明の実施形態は、述語、ジョイン及びゾーンマップのようなクエリの節に関連して説明された。本明細書で説明されるようなトレース及びトレースに基づくシミュレーションもまた、クエリ選択リスト内のＣＡＳＥ表現に適用され得る。本明細書での開示から、本発明の実施形態は、１つより多いテーブルに対するＪＯＩＮ節を有するＳＱＬクエリに対して適用できることも理解されたい。
【０１３０】
特定の実施形態に関連して、利益、他の利点、及び問題に対する解決策が、上に説明された。しかしながら、利益、利点、問題に対する解決策、及び任意の利益、利点、又は問題に対する解決策を生じさせる、若しくはより明確にし得る（１つ又は複数の）いずれの要素も、特許請求の範囲のいずれか又は全ての重要な、必要とされる、又は必須の特徴若しくは要素であると解釈されるべきでない。
【０１３１】
本明細書で使用される場合、用語「含む（comprises）」、「含んでいる（comprising）」、又はこれらの任意の他の変形は、要素のリストを含むプロセス、方法、物品、又は装置がそれらの要素を含むだけでなく、明示的に挙げられていないか、又はそのようなプロセス、方法、物品、又は装置に固有でない他の要素を含む可能性もあるように、非排他的包含を含むように意図される。さらに、本明細書において説明された要素は、必須又は重要であると明示的に説明されていない限り、本発明の実施のための必要とされない。
【０１３２】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものに過ぎず、本開示を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、操作、要素、及び／又はコンポーネントの存在を指示するが、１つ又は複数の他の特徴、整数、ステップ、操作、要素、コンポーネント、及び／又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【０１３３】
以下の特許請求の範囲に存在する場合、手段又はステップと機能との組合せ（ミーンズ又はステップ・プラス・ファンクション）要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造体、材料、又は行為を含むことを意図したものである。本発明の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され、記述された。
【符号の説明】
【０１３４】
１００：コンピューティング環境
１１０．１、１００．２、３０２：コンピュータシステム
１２０：ネットワーク
２００：システム
２０５：中央処理ユニット（ＣＰＵ）
２１５：ネットワークインターフェース
２１７：相互接続
２２０：メモリ
２３０：ストレージ
３０３：フィンガープリントトレースプログラム
３０４：ターゲットデータベース、入力データ
３０６：フィンガープリントトレースモジュール、フィンガープリントトレースプログラム
３０８：スキーマ
３１０：フィンガープリントトレースデータ
３１２：クエリ実行モジュール
３１４：クエリ
３１６：結果テーブル
３２０：データ生成ツール（ＤＧＴ）、データ生成モジュール
３２２：コンピュータシステム
３２４：代替入力データ
３２６：インターフェース
３３０：コンプレッサ、圧縮モジュール、ＤＣＭ
３３２：和結合結果
３３３：変更クエリ
３３４：クエリ実行モジュール
【図１】
0006691548.tif 000026
【図２】
0006691548.tif 000027
【図３】
0006691548.tif 000028
【図４】
0006691548.tif 000029