pureQuery Runtime フィーチャーの概要

pureQuery™ Runtime は Java™ アプリケーションと共に使用できます。 さらに、pureQuery Runtime は、 DB2® ODBC/CLI および Microsoft .NET アプリケーションと共に使用することもできます。
フィーチャーはアプリケーションのタイプによって次のように異なります。

Java pureQuery API アプリケーションのためのフィーチャー

pureQuery Runtime は、クライアント最適化のフィーチャーに加えて API フィーチャーも提供します。

pureQuery API を使用するアプリケーションのために、InfoSphere® Optim™ pureQuery Runtime は以下のフィーチャーを提供します。

データベース、メモリー内コレクション、および Iterator オブジェクトに対して SQL ステートメントを実行する際に使用できる単一の API

Java プラットフォームは、メモリー内コレクションと、 さまざまなソースからの外部データを処理するための、各種のデータ構造および API を提供します。 各フィーチャーはそれぞれ、特定タイプの問題の解決に最適なものになっています。 pureQuery はまた、コレクション内のデータを取得して変更するためのインターフェースの固有セットも備えています。 例えば、pureQuery は、Java Array、List、Map、および Iterator 用の API を提供します。 それぞれの API は、コレクション内のデータを照会したり、場合によっては更新したりします。

同様に、JDBC API は、SQL を使用してリレーショナル・オブジェクトおよび他の外部 JDBC DataSource オブジェクトにアクセスする手段を提供します。 ただし、pureQuery では、アプリケーションはこれらすべてのデータ・ソースに、個別にまたは組み合わせて、既知の単一の照会言語を使用してアクセスできます。

データ・アクセス用の簡単なプログラミング・モデル
pureQuery は JDBC の最上部で薄いレイヤーとして実行されます。 pureQuery は、照会、更新、ストアード・プロシージャーの呼び出し、およびデータベースのアクセスに関連する他のタスクを単純化します。 pureQuery は、Java 2 Platform Standard Edition 5.0 (J2SE 5.0) と、 Java Platform Standard Edition 6 (Java SE 6) 上で稼働します。
開発者がほとんど介入することなく SQL データを戻りの型に自動的にマップする機能
pureQuery は、多くの Java オブジェクト・パターンに対して、SQL 照会結果と戻されるオブジェクトとの間の自動マッピングを提供します。 照会結果と Java オブジェクトとの間の複雑なマッピングの場合は、 プラグ可能な出口インターフェースによってカスタム・マッピングが可能になります。

表結合が含まれる SQL 照会の結果を返す Bean を作成し、それにアノテーションを付けることができます。 照会結果は、他の Bean のインスタンスを含む Bean セットとして返されます。 Bean の階層には、照会結果の 1 対 1 および 1 対多の関係が反映されます。 例えば、照会には従業員表と部門表との結合が含まれます。 この照会によって、異なる部門に割り当てられている従業員が返されます。 結果はいくつかの部門 Bean として返されます。ここでは、 部門 Bean の各インスタンスが 1 つの部門を表します。 部門 Bean にはそれぞれ、従業員 Bean のリストが含まれています。 従業員 Bean の個々のインスタンスには、従業員の情報が含まれています。

アノテーション付きメソッドおよびインライン・メソッドを使用する SQL アプリケーション開発のサポート
アノテーション付きメソッド は、カスタム・インターフェースで独自のメソッドを定義するためにサポートされています。 SQL ステートメントによってアノテーションが付けられた定義を指定してメソッドを作成します。アノテーション付きメソッドを使用してデータ・アクセス・オブジェクトを作成することによって、データ・アクセス・オブジェクト (DAO) パターンに準拠したアプリケーションを開発できます。

IBM 提供の Data インターフェースに定義されたメソッドを活用できるように、インライン・メソッド がサポートされています。 インライン・メソッドは、アプリケーションの実行時に SQL ステートメントの組み立てが必要なアプリケーションで役立ちます。 インライン・メソッドを使用することで、メソッド起動において SQL ステートメントがパラメーターとして渡されます。これは、JDBC で採用されている方式と似ています。

静的に実行される SQL ステートメントの管理に対するサポートが提供されます。 コードにアノテーションを付け、インターフェースで使用される SQL ステートメントをグループ化することができます。 グループのバインド・プロセスを制御できます。 pureQuery StaticBinder ユーティリティーで使用するバインド・オプションを制御し、SQL ステートメントが含まれるパッケージ用に生成される名前を制御することができます。

実行時における動的 SQL と静的 SQL の両方のサポート
pureQuery コードは、組み込み SQL と、実行時まで不明の随時 SQL の両方に対する標準 JDBC ドライバーを備えた動的 SQL を使用できます。
また、pureQuery コードがアノテーション付きメソッド・プログラミング・スタイルと DB2 データベースを使用する場合、静的 SQL も使用できます。 静的 SQL には、以下の利点があります。
動的ステートメント・キャッシュの回避
静的 SQL を使用することで、DB2 の動的ステートメント・キャッシュの競合が削減され、動的 SQL を使用するアプリケーションのパフォーマンスが向上します。
アクセス・パスの整合性
静的 SQL は、アプリケーションの実行前にアクセス・パスを固定することによって、応答時間を予測可能で安定したものにします。一方、動的 SQL のアクセス・パスは実行時に計算されます。
アプリケーションのパフォーマンスを改善することが可能
静的 SQL はご使用のアプリケーションのパフォーマンスを改善することができます。
  • アクセス・プランは実行時より前に決定されるので、実行時に SQL ステートメントを準備する必要はありません。
  • 各ステートメントを準備して記述する必要がないため、クライアント・アプリケーションとデータベース・サーバーの間のネットワーク・トラフィックが少なくなります。
  • 静的 SQL は、述部で使用されるホスト変数またはパラメーターのデータ・タイプを厳密に規定します。 これが厳密に規定されることにより、入力データはデータベース内のターゲット・タイプと必ず一致するようになります。
より堅固なセキュリティー
ユーザーに、データベース・オブジェクトに対する特権ではなく、DB2 パッケージに対する EXECUTE 特権を付与することができます。
パッケージ改訂のしやすさ
各 DB2 パッケージの複数のバージョンを作成できるので、 より良い以前のアクセス・パスを失うことなく、パッケージを再バインドすることができます。
z/OS® 上で pureQuery アプリケーションを実行する際の JDBC タイプ 2 接続のサポート
JDBC タイプ 2 ドライバーは、Java とネイティブ・コードを組み合わせたものであるため、 タイプ 2 接続は一般に、タイプ 4 接続よりもパフォーマンスが優れています。
データ・アクセス・アプリケーション開発のためのプラットフォームとフレームワークのサポート
pureQuery Runtime は、以下のプラットフォームおよびフレームワークをサポートします。
  • Java
  • Java Persistence API (JPA)
  • Spring
  • Hibernate
  • iBatis

pureQuery クライアント最適化で使用可能となる Java アプリケーションのためのフィーチャー

pureQuery API を使用しないアプリケーションは、クライアントの最適化機能を活用できます。 クライアントの最適化機能は、DB2 データベースでの SQL の静的実行をサポートする他のテクノロジーと、次のような点で異なります。
  • pureQuery クライアントの最適化機能は、組み込み SQL にプリプロセッサーを使用する COBOL プログラミング言語とは対照的に、プリプロセッサーを使用しません。
  • pureQuery クライアントの最適化機能は、SQLJ とは対照的に、変換プログラムもカスタマイザーも使用しません。
  • アプリケーションのソースに SQL ステートメントをハードコーディングする必要がありません。

クライアントの最適化機能では、こうしたコンポーネントも必要とせず、コードに変更を加えることも不要で、JDBC ドライバーがアプリケーションと相互作用する方法を変更します。pureQuery クライアント最適化は、 以下のフィーチャーを提供します。

pureQuery データの安全なストレージ
pureQuery 構成情報、pureQuery Runtime が使用する SQL データを含む pureQueryXML データ、 および取り込まれた SQL データは、pureQuery Runtime が安全なロケーションに保管して、必要に応じてアクセスできるようになります。 pureQuery データを安全なロケーションから取り出すように、pureQuery Runtime を構成することができます。 pureQuery Runtime は、 pureQuery クライアントの最適化機能を使用する pureQuery 対応アプリケーションから取り込んだ SQL データを、安全なロケーションに保管することができます。
DB2 特殊レジスターのサポート
アプリケーションから SQL ステートメントを取り込む際に、pureQuery クライアントの最適化機能は、 SQL ステートメントによって使用される DB2 特殊レジスター情報をトラッキングします。 pureQuery クライアントの最適化機能は、特殊レジスターの値を記録します。 これは広く使用されており、SQL ステートメントの動作に影響を及ぼす可能性があります。 同一の SQL ステートメントを 2 回発行した場合に、1 回目と 2 回目のステートメントの実行の間に特殊レジスターの値が変更されると、ステートメントの動作が異なることがあります。

pureQuery Configure ユーティリティー・オプション -optionsFileForBind は、 取り込んだ SQL ステートメントと共に記録される特殊レジスター情報に基づくバインド・オプションを含む、StaticBinder オプション・ファイルを生成できます。 このオプション・ファイルには、ステートメント・セットに関する情報と警告、SQL ステートメント、および特殊レジスター情報 (pureQueryXML ファイル形式) も含まれています。

このファイル内の情報を使用していくつかのバインド・オプションを指定することにより、 SQL ステートメントが静的に実行される際の動作を、アプリケーションから呼び出されて動的に実行される場合のその動作と同じにすることができます。 SQL ステートメントを含む DB2 パッケージをバインドする際に、pureQuery StaticBinder ユーティリティーを使用してバインド・オプションを指定します。

pureQueryXML ファイルの容易な管理
以下のフィーチャーによって、pureQueryXML ファイルの SQL ステートメントおよびステートメント・セットが管理できるようになります。
  • Configure ユーティリティーでは、SQL ステートメント中の表名や列名などのテキスト、あるいは特殊レジスターの使用によって、SQL ステートメントをグループ化することができます。
  • Configure ユーティリティーでは、指定した日数の間に SQL ステートメントがアプリケーションによって発行されなかった場合、pureQueryXML ファイルからその SQL ステートメントを削除することができます。 pureQuery Runtime は、いつ SQL ステートメントがアプリケーションから発行されたかをトラッキングして、 pureQueryXML ファイル内のその情報を更新できます。
  • 構成ユーティリティーは、ステートメント・セットの状況を pureQueryXML ファイルの処理の前、あるいはファイル処理の後に設定することができます。 ステートメント・セットの状況によって、Configure ユーティリティーがステートメントの変更を試行するかどうかを制御します。
  • Configure ユーティリティーで、pureQueryXML ファイル内のデータベース・ロケーション名や、SQL ステートメントのスキーマ名を変更できます。
  • バインド・プロセスが SQL ステートメントにエラーを返す場合は、StaticBinder ユーティリティーで、pureQueryXML ファイル内のそのステートメントを処理することができます。このユーティリティーによって、 ステートメントに無効のマークを付けたり、ステートメントをファイルから削除したりすることができます。 ステートメントに無効のマークが付けられた場合、そのステートメントはファイル内には残りますが、バインド可能なステートメントとして処理されることはありません。 Configure ユーティリティーを使用して、ステートメントを有効なバインド可能ステートメントに変更したり、無効なステートメントを削除したりできます。
  • 構成、マージ、および StaticBinder ユーティリティーは、入力の pureQueryXML ファイルの XML スキーマ検証を行うことができます。
  • ManageRepository ユーティリティーでは、 2 つの pureQueryXML ファイルの差異をリストしたレポートを生成できます。 更新された pureQueryXML ファイルをオリジナル・ファイルと比較することで、変更点を容易に確認することができます。

ODBC/CLI アプリケーションおよび .NET アプリケーションのためのフィーチャー

コール・レベル・インターフェース (CLI) とは、リレーショナル・データベース・アクセス用の C および C++ のアプリケーション・プログラミング・インターフェースのことです。 CLI では、関数呼び出しを使用して、動的 SQL ステートメントを関数引数として渡します。 .NET アプリケーションには、C# や VB.NET など .NET ベースの言語で作成されたアプリケーションが含まれます。

DB2 データベースまたは Informix® データベースに接続する CLI または .NET アプリケーションに対して pureQuery クライアントの最適化機能を有効にすると、 そのアプリケーションによって発行される SQL ステートメントを制御することができます。 例えば、アプリケーションが DB2 データベースに接続する場合、このアプリケーションをデータベースに対して SQL ステートメントを静的に実行するように構成できます。 制御できる SQL ステートメントは、データベースに対して実行することが許可されたものです。

pureQuery クライアントの最適化の利点には、以下のものがあります。
  • DB2 データベースに対する SQL ステートメントの静的な実行。
  • アプリケーションのソース・コードをトレースバックするための機能を使用して SQL ステートメントに関する問題を診断する。
  • パフォーマンスの低い SQL ステートメントを最適化されたステートメントに置き換える。
  • 制限された SQL ステートメント一式を実行することによって、SQL インジェクション・アタックのリスクを低減させる。

CLI アプリケーションの場合、DB2 コマンド db2cli を使用して、SQL ステートメントの実行と検証が行えます。 SQL ステートメントは準備するが SQL ステートメントの検証は実行しないように指定します。 実行または検証された SQL ステートメントを、pureQueryXML ファイルに取り込むことができます。

DB2 アプリケーションを .NET を使用して開発する方法について詳しくは、 ADO.NET アプリケーション開発を参照してください。

DB2 アプリケーションを CLI を使用して開発する方法について詳しくは、 DB2 コール・レベル・インターフェースと ODBC の紹介を参照してください。


フィードバック