例: 単純な Java アプリケーションでの pureQuery クライアント最適化の有効化

単純な例で、4 つのステップ (キャプチャー、構成、バインド、および実行) を使用して、Java アプリケーションを pureQuery クライアント最適化に対応させ、DB2® データベース上で SQL ステートメントを静的に実行するようにアプリケーションを構成します。
  1. SQL データをキャプチャーします。
  2. キャプチャーした SQL を、SQL ステートメント用に作成される DB2 パッケージの特性を使用して構成します。
  3. SQL ステートメントからパッケージを作成し、それを DB2 データベースにバインドします。
  4. SQL ステートメントを静的に実行します。

始める前に

pureQuery Runtime JAR ファイル、pdq.jar、および pdqmgmt.jar は、アプリケーションの CLASSPATH にリストされている必要があります。

このタスクについて

この例では、アプリケーションがスタンドアロンの JDBC ベースのアプリケーション DB2 データベースをデータ・ソースとして使用し、このアプリケーションを含むディレクトリーでタスクを実行することを前提としています。pureQuery Runtime によってキャプチャーされる SQL データは、ローカル・ファイル・システム上の pureQueryXML ファイルに保管されます。 次の図はその構成を示しています。
図 1. pureQuery クライアント最適化の構成
pureQuery クライアント最適化の単純な構成
図では、pureQuery Configure ユーティリティーにより、キャプチャーした SQL データを含む pureQueryXML ファイルが構成済み pureQueryXML ファイルに変換されます。
pureQuery クライアント最適化を有効にして SQL ステートメントを静的に実行したら、次の pureQuery 機能を使用します。
  • pureQuery ランタイム・プロパティーを最初にキャプチャーした SQL ステートメントに設定して、SQL ステートメントを静的に実行します。
  • pureQuery ユーティリティー Configure および StaticBinder を、アプリケーションからキャプチャーした SQL ステートメントに対して使用します。

手順

簡単な Java アプリケーションに対して pureQuery クライアント最適化を有効にするには、次のようにします。

  1. アプリケーションからの SQL データをキャプチャーします。
    1. 次の pureQuery ランタイム・プロパティーを指定して、ファイル pdq.properties を現行作業ディレクトリーに作成します。
      pdq.captureMode=ON
      pdq.pureQueryXml=capture.xml
      pdq.executionMode=DYNAMIC

      captureMode プロパティーは、SQL ステートメントと SQL ステートメントの実行に関連付けられているその他の情報とを pureQueryXML ファイルにキャプチャーすることを指定します。pureQueryXml プロパティーは、ファイル capture.xml の名前を指定します。executionMode プロパティーは、pureQueryXml オプションで指定された pureQueryXML ファイル内にある SQL ステートメントを静的に実行するかどうかを指定します。

    1. Java アプリケーションを開始し、実行して、SQL ステートメントを実行します。
    2. アプリケーションを停止します。
    アプリケーションを実行すると、pureQuery Runtime が capture.xml ファイルを作成し、キャプチャーした SQL データをファイルに保管します。
  2. キャプチャーした SQL データを構成します。
    次のコマンドを使用して、Configure ユーティリティーを実行します。
    java com.ibm.pdq.tools.Configure 
      -rootpkgname TESTPKG 
      -cleanConfigure true 
      -pureQueryXml capture.xml

    pureQueryXML ファイル capture.xml で、Configure ユーティリティーは、そのファイルの SQL ステートメントから作成された DB2 パッケージの特性を設定します。Configure ユーティリティーは、pureQueryXML ファイル内の SQL ステートメントをステートメント・セットにグループ化します。ステートメント・セットは、データベース内のパッケージに対応しています。ユーティリティーは、-rootPkgName オプションの値を使用して、データベース内のパッケージに使用される名前を生成します。 パッケージ名の命名については、DB2 パッケージ識別情報を参照してください。

    -cleanConfigure true オプションは、pureQueryXML ファイルにある前の構成情報を保存しないことを指定します。

    -cleanConfigure オプションが指定されていない場合、Configure ユーティリティーがいくつかの構成情報を保存しようとします。

    pureQueryXML ファイルが構成済みである場合、それに必要なパッケージおよびセクション資料を含み、pureQuery StaticBinder ユーティリティーによって使用されることができます。file is configured, it contains the necessary package and section information and can be used by the pureQuery StaticBinder utility to create packages and bind the packages to the DB2 database.

  3. pureQuery StaticBinder ユーティリティーを使用して、キャプチャーした SQL ステートメントをバインドします。
    次のコマンドを使用して、StaticBinder ユーティリティーを実行します。次のようにして、ターゲット URL、ユーザー ID、パスワード、pureQueryXML ファイル、および -isolationLevel オプションを指定します。
    java com.ibm.pdq.tools.StaticBinder 
      –url jdbc:db2://testserver.test.com:446/STLEC1” 
      -username "testuser" -password "testpwd"
      -isolationLevel CS
      -pureQueryXml capture.xml
      -showDetails true

    オプション -showDetails true は、バインド・プロセスの詳細を表示します。

    コマンドからの出力は、以下のサンプルに類似したものになります。
    The StaticBinder utility is beginning to bind the pureQueryXml file capture.xml.
    
    Starting to process options : -username "*****" -password "*****" 
    -url "jdbc:db2://testserver.test.com:446/STLEC1"
    -pureQueryXml  capture.xml 
    -isolationLevel "CS"
    -showDetails "true"
    
    The StaticBinder utility successfully bound the package 'TESTPKG2' for the isolation level 'CS'.
       Number of statements input: '5', number of statements bound: '5', bind options : 'ISOLATION CS'
    
    The StaticBinder utility successfully bound 'capture.xml'.
        Number of packages input :'1'
        Number of input packages for which isBindable is false : '0'
        Number of input packages with zero bindable statements : '0'
        Number of bindable input packages processed by the Static Binder utility : '1' : [TESTPKG]
    
    =======================================================================
    
    Results of the StaticBinder utility's activity:
    
        Number of items for which the bind operation SUCCEEDED: 1
    バインドに成功すると、名前 TESTPKG2 でパッケージが作成されます。-isolationLevel CS を指定したので、このコマンドにより 1 つのパッケージのみが作成されます。 デフォルトでは、StaicBinder ユーティリティーは 4 つのパッケージを 4 つの分離レベルで作成します。
  4. pureQuery Runtime を使用して SQL ステートメントを静的に実行します。
    1. 以前に作成したファイル pdq.properties ファイルを編集します。
      executionMode を STATIC に、captureMode を OFF に設定して、ファイルを保存します。ファイルには、次の行が含まれます。
      pdq.captureMode=OFF
      pdq.pureQueryXml=capture.xml
      pdq.allowDynamicSQL=TRUE
      pdq.executionMode=STATIC

      pureQuery ランタイム・プロパティー allowDynamicSQL のデフォルト値は、TRUE であり、プロパティー・ファイルでは必須ではありません。ファイルにこのプロパティーを含めると、デフォルト値を再認識できます。pureQuery Runtime を使用することにより、アプリケーションによって発行された SQL ステートメントが以前にキャプチャーされていなくても、デフォルトでそれらを動的に実行できます。

    2. アプリケーションを実行します。

      アプリケーションは、pureQueryXML ファイルにリストされている SQL ステートメントを静的に実行します。

    注: SQL ステートメントが静的に実行されているかどうかを判別する 1 つの方法は、パッケージをドロップすることです。パッケージ TESTPKG をデータベースからドロップすると、アプリケーションは pureQueryXML ファイルにリストされている SQL ステートメントを実行できなくなります。

    pureQueryXML ファイルに対して StaticBinder ユーティリティーを実行してパッケージを再作成すると、アプリケーションは SQL ステートメントを静的に実行します。

    Tivoli® OMEGAMON® XE for DB2 on z/OS® などのデータベース・モニタリング・ツールを使用して、SQL が静的に実行されていることを検証することもできます。

次のタスク

より複雑なアプリケーションのシナリオでは、複数の反復においてアプリケーションから SQL ステートメントをキャプチャーできます。複数の反復において SQL データをキャプチャーする場合は、pureQueryXML ファイルを構成して SQL ステートメントをバインドする前に、キャプチャーした SQL データを構成済み pureQueryXML ファイルにマージするという追加のステップを実行します。

Configure および StaticBinder ユーティリティーは、パッケージに適用可能なさまざまなオプションと一緒にすべてのデプロイメント情報をリストできるオプション・ファイルをサポートしています。オプション・ファイルを作成すると、オプション -optionsFile を使用してファイルを指定して、ユーティリティーを呼び出すことができます。

ユーティリティー・コマンドを含むシェル・スクリプトを作成して、4 ステップのプロセスを反復し、自動化することもできます。pureQuery JAR ファイルが CLASSPATH にある場合は、すべてのユーティリティーが Java プログラムとして使用可能です。

Optim™ Development Studio では、Java プロジェクトを pureQuery サポート対応にして、Eclipse IDE で pureQuery クライアント最適化に対応した Java アプリケーションを開発できます。


フィードバック