InfoSphere® Optim™ pureQuery Runtime をインストールすると、pureQuery アプリケーションまたは pureQuery に対応した Java アプリケーションを、実稼働環境にデプロイできます。
また、DB2® CLI アプリケーションや Microsoft .NET アプリケーションを開発することもできます。
Java アプリケーション用のフィーチャー
pureQuery API を使用するアプリケーションのために、InfoSphere Optim pureQuery は以下のフィーチャーを提供します。
- データベース、メモリー内コレクション、および Iterator オブジェクトに対して SQL ステートメントを実行する際に使用できる単一の API を提供
Java プラットフォームは、メモリー内コレクションと、
さまざまなソースからの外部データを処理するための、各種のデータ構造および API を提供します。
各フィーチャーはそれぞれ、特定タイプの問題の解決に最適なものになっています。
pureQuery はまた、コレクション内のデータを取得して変更するための固有セットのインターフェースも備えています。
例えば、pureQuery は、Java Array、List、Map、
および Iterator 用の API を提供します。それぞれの API は、コレクション内のデータを照会したり、
場合によっては更新したりします。
同様に、JDBC API は、SQL を使用してリレーショナル・オブジェクトおよび他の外部 JDBC DataSource オブジェクトにアクセスする手段を提供します。
ただし、pureQuery では、アプリケーションはこれらすべてのデータ・ソースに、個別にまたは組み合わせて、既知の単一の照会言語を使用してアクセスできます。
- データ・アクセス用の簡単なプログラミング・モデルを提供
- pureQuery は JDBC 上で薄いレイヤーとして実行され、照会、更新、ストアード・プロシージャーの呼び出し、
およびデータベースのアクセスに関連する他のタスクを単純化します。
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 API を使用しないアプリケーションは、クライアントの最適化機能を活用できます。クライアントの最適化機能は、SQL の静的実行をサポートする他のテクノロジーと次のような点で異なります。
- pureQuery クライアントの最適化機能は、組み込み SQL にプリプロセッサーを使用する COBOL プログラミング言語と異なり、プリプロセッサーは使用しません。
- pureQuery クライアントの最適化機能は、SQLJ とは異なり、変換プログラムもカスタマイザーも使用しません。
- アプリケーションのソースに SQL ステートメントをハードコーディングする必要がありません。
クライアントの最適化機能では、こうしたコンポーネントも必要とせず、コードに変更を加えることも不要で、JDBC ドライバーがアプリケーションと相互作用する方法を変更します。
- pureQuery データの安全なストレージ
- pureQuery 構成情報、pureQueryXML データ、および取り込まれた SQL データは、必要に応じて pureQuery
Runtime によって安全なロケーションに保管したりアクセスすることができます。
pureQuery データを安全なロケーションから取り出すように、pureQuery Runtime を構成することができます。
pureQuery Runtime は、
pureQuery クライアントの最適化機能を使用する pureQuery 対応アプリケーションから取り込んだ SQL データを、安全なロケーションに保管することができます。
- DB2 特殊レジスターのサポート
- アプリケーションから SQL ステートメントを取り込む際に、pureQuery クライアントの最適化機能は、
特殊レジスター情報をトラッキングします。pureQuery クライアントの最適化機能は、特殊レジスターの値を記録します。
これは広く使用されており、SQL ステートメントの動作に影響を及ぼす可能性があります。
同一の SQL ステートメントを 2 回発行した場合に、1 回目と 2 回目のステートメントの実行の間に特殊レジスターの値が変更されると、ステートメントの動作が異なることがあります。
pureQuery Configure ユーティリティーは、キャプチャーした SQL ステートメントで記録される特殊レジスター情報を基に、バインド・オプションを生成することができます。Configure ユーティリティーの -optionsFileForBind オプションを使用して、StaticBinder オプション・ファイルを作成します。このファイルには、ステートメントのキャプチャー時に記録される特殊レジスター設定を基にしたバインド・オプションが含まれています。このオプション・ファイルには、ステートメント・セットに関する情報と警告、SQL ステートメント、および特殊レジスター情報 (pureQueryXML ファイル形式) も含まれています。
このファイル内の情報を使用していくつかのバインド・オプションを指定することにより、SQL ステートメントが静的に実行された際の動作を、アプリケーションから呼び出されて動的に実行された場合と同じにすることができます。SQL ステートメントを含む DB2 パッケージをバインドする際に、pureQuery StaticBinder ユーティリティーを使用してバインド・オプションを指定します。
pureQuery Runtime バージョン 2.2.0.3 以降では、特殊レジスター情報を pureQueryXML ファイルに記録します。2.2.0.3 より前のバージョンの pureQuery Runtime を使用して pureQueryXML ファイルが作成されている場合は、特殊レジスター情報を記録するために SQL ステートメントをいくつかキャプチャーする必要が生じることがあります。
- pureQueryXML ファイルを容易に管理
- 以下のフィーチャーによって、pureQueryXML ファイルの SQL ステートメントおよびステートメント・セットが管理できるようになります。
- Configure ユーティリティーでは、SQL ステートメント中の表名や列名などのテキスト、あるいは特殊レジスターの使用によって、SQL ステートメントをグループ化することができます。
- Configure ユーティリティーでは、指定した日数の間に SQL ステートメントがアプリケーションによって発行されなかった場合、pureQueryXML ファイルからその SQL ステートメントを削除することができます。
pureQuery Runtime は、pureQuery プロパティー captureMode が ON に設定されている間に SQL ステートメントがアプリケーションから発行された時間を更新します。
- 構成ユーティリティーは、ステートメント・セットの状況を pureQueryXML ファイルの処理の前、あるいはファイル処理の後に設定することができます。 ステートメント・セットの状況によって、Configure ユーティリティーがステートメントの変更を試行するかどうかを制御します。pureQueryXML ファイルの StaticBinder を使用して DB2 データベースの SQL ステートメントをバインドする場合には、ステートメント・セットの変更後にセット内の SQL ステートメントを再バインドする必要があります。
- Configure ユーティリティーで、pureQueryXML ファイル内のデータベース・ロケーション名や、SQL ステートメントのスキーマ名を変更できます。
- バインド・プロセスが SQL ステートメントにエラーを返す場合は、StaticBinder ユーティリティーで、pureQueryXML ファイル内のそのステートメントを処理することができます。このユーティリティーによって、
ステートメントに無効のマークを付けたり、ステートメントをファイルから削除したりすることができます。
無効のマークが付けられたステートメントは、ファイル内には残りますが、その isBindable 属性が false に設定されているものとして処理されます。
Configure ユーティリティーを使用すると、ステートメントに有効のマークを付けたり、
無効のマークが付けられたステートメントを削除したりすることができます。
- 構成、マージ、および StaticBinder ユーティリティーは、入力の pureQueryXML ファイルの
XML スキーマ検証を行うことができます。
- ManageRepository ユーティリティーでは、
2 つの pureQueryXML ファイルの差異をリストしたレポートを生成できます。
更新された pureQueryXML ファイルをオリジナル・ファイルと比較することで、変更点を容易に確認することができます。
C および C++ のコール・レベル・インターフェース (CLI) アプリケーションの機能
コール・レベル・インターフェース (CLI) とは、リレーショナル・データベース・アクセス用の C および C++ のアプリケーション・プログラミング・インターフェースのことです。
CLI では、関数呼び出しを使用して、動的 SQL ステートメントを関数引数として渡します。
DB2 データベースまたは
Informix® データベースに接続する CLI アプリケーションに対して pureQuery クライアントの最適化機能を有効にすると、そのアプリケーションによって発行される SQL ステートメントを制御することができます。例えば、アプリケーションが DB2 データベースに接続する場合、このアプリケーションをデータベースに対して SQL ステートメントを静的に実行するように構成できます。
制御できる SQL ステートメントは、データベースに対して実行することが許可されたものです。
pureQuery クライアントの最適化の利点には、以下のものがあります。
- DB2 データベースに対する SQL ステートメントの静的な実行。
- アプリケーションのソース・コードをトレースバックするための機能を使用して SQL ステートメントに関する問題を診断する。
- パフォーマンスの低い SQL ステートメントを最適化されたステートメントに置き換える。
- 制限された SQL ステートメント一式を実行することによって、SQL インジェクション・アタックのリスクを低減させる。
DB2 コマンド db2cli を使用して、SQL ステートメントの実行と検証が行えます。exec オプションを指定して db2cli コマンドを実行することで、ファイル内の SQL ステートメントの実行または検証を行えます。ファイル内の SQL ステートメントは準備するがステートメントの検証を実行しないように、指定することができます。db2cli コマンドによって実行または検証された SQL ステートメントを、pureQueryXML ファイルにキャプチャーできます。