本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

IBM Data Studio Developer 2.1の新機能と既存機能

アプリケーションに関する洞察力を高め、生産性を向上させる

Sonali Surange, シニア ソフトウェア エンジニア, IBM Silicon Valley Lab
Sonali Surange
Sonali Surangeは、IBMシリコン バレー研究所のシニア ソフトウェア エンジニアで、Data Studio DeveloperのpureQueryツールのチーム リーダーです。Sonaliは、以前IBMでIBMデータベース向けのVisual Studio .Netツールのさまざまな主要コンポーネントの開発を指揮していました。
Zeus Courtois, Data Studio 開発チーム エンジニア, IBM Silicon Valley Lab in San Jose, California
Zeus Courtois
Zeus Courtoisは、Data Studio開発チームのエンジニアで、カリフォルニア州サンノゼのIBMシリコン バレー研究所でpureQueryツールを開発しています。Zeusは、このチームに加わる前は、Data Studio Enablementチームのインターンでした。Zeusは、Texas A&M International Universityで情報システム修士号を取得しています。

概要: データベース アプリケーションの理解を深める上で、IBM Data Studio Developer 2.1はたいへん役立ちます。Data Studio Developerに新たに実装された機能によって、どの程度生産性が向上し、開発者とDBAの間のコラボレーションが強化されるかをご確認ください。この記事のシナリオを追いながら、Data Studio Developer 2.1を実際に使用してみると、これまでより多くの作業をより簡単に、かつ深い洞察力を持って完了できることがわかります。

日付:  2010年 12月 03日
レベル:  中級 この記事の原文:  英語
アクティビティー: 2401 ビュー
お気軽にご意見・ご感想をお寄せください: 


はじめに

新たにリリースされた Data Studio Developer には、次のような利点があります。

  • SQLのチューニングに役立つ情報が得られます。
  • OpenJPAおよび.NETアプリケーションのサービス品質が向上します。
  • SQLを使用するJavaアプリケーションに関する洞察力が高まります。
  • 生産性の向上、および開発者とDBAの間のコラボレーションの強化を実現できます。
  • Javaデータベース アプリケーションのSQLインジェクション攻撃を受けるリスクを低減するか、ゼロにすることができます。

実践シナリオを実行するために必要な前提条件

後述のシナリオを実行するには、次のものがインストールされている必要があります。

  • Data Studio Developer 2.1 (トライアル コードを近日公開予定)
  • DB2® for Linux®, UNIX®, and Windows® - DB2 Express-C 推奨
  • 製品に付属の DB2 サンプル データベース

SQL のチューニングに役立つ情報を開発者に提供する

SQL 文の長さと実行頻度を特定する

既存のプロファイル作成ツールでは、最も実行に時間がかかるアプリケーションのJava™メソッドを特定できました。Data Studio Developer 2.1では、データベースの呼出しが含まれるJavaメソッドのパフォーマンス メトリックを調べて、さらに詳細までドリル ダウンできます。pureQuery、JDBC、または別のフレームワークのうちのどれを使用しているかに関係なく、アプリケーション内のSQL1つあたりに費やされた時間、SQLの実行回数、およびSQLの実行にかかった最小、最大、および平均時間を特定できます。

Data Studio Developerがインストールされている環境で、次の簡単な手順を実行してみましょう。

pureQueryのSQLパフォーマンス メトリックを理解する

pureQuery Outlineには、アプリケーションが実行した各SQL文について、次の情報が表示されます。
  • SQL実行回数 ― Number of times run
  • 各SQL実行の所要時間の合計 ― Total time
  • SQL実行の最大所要時間 ― Max time
  • SQL実行の平均所要時間 ― Average time
  • SQL実行の最小所要時間 ― Min time
この情報を使用して、最適化が必要なSQL文を特定したり、問題のあるSQLを特定したりできます。また、SQL文の実行頻度を特定することもできます。
  1. ビューで、「Data Management」→「Data Source Explorer (以前の Database Explorer)」の順に選択します。サンプル データベースへの接続を確立し、接続SAMPLEを呼び出します。
  2. Javaプロジェクトを作成し、myDSDPrjと名前を付けます。
  3. TutMod.javaファイルとUtil.javaファイルをダウンロードして、db2jcc.exampleパッケージにコピーします。このファイルは、さまざまなシナリオを実行するために使用する既存の簡単なJDBCアプリケーションを表します。
  4. pureQueryをプロジェクトに追加するには、次の手順を実行します。
    1. プロジェクトを右クリックして、pureQuery → Add pureQuery supportの順に選択します。
    2. 接続先のデータベースとして「SAMPLE」を選択し、「STAFF」テーブルを特定するためにデフォルト・スキーマを入力します。
    3. 以下の画像では、スキーマがSSURANGEになっています。
    4. Enable SQL capturing and binding for JDBC applications」ボックスを選択します。

      図1. pureQuery サポートの追加


    今回の機能強化で、テーブルおよびビューの修飾にデフォルト・スキーマを指定できるようになりました。新規デフォルト・パス・ウィジェットを使用して、非修飾ルーチンを修飾します。
  5. パフォーマンス・メトリックを収集するには、pureQuery構成を使用するアプリケーションを実行します。
    1. アプリケーションを実行する前に、スキーマを正しく設定し、適切な「STAFF」テーブルを選択するようにします。TutMod.Javaファイルを開き、66行目に移動したら、SSURANGEという箇所を適切なスキーマ名で置き換えてください。ファイルを保存します。
    2. TutMod.javaを開き、ファイルを右クリックして、「Run」→「Run Configurations」の順に選択し、pureQuery構成を使用するアプリケーションを実行します。
    3. 「pureQuery」を選択し、データベース名、サーバ、ポート、ユーザID、およびパスワードの引数を指定して (図2参照)、「Run」をクリックします。
    4. パフォーマンス情報に従って実行されたSQLが収集されます。
    5. The SQL executed along with the performance information is collected.

      図2. SQL メトリックを収集するアプリケーションの実行


  6. パフォーマンス情報を表示するには、次の手順を実行します。
    1. myDSDPrj」を右クリックして、「Show pureQuery outline」を選択します。
    2. pureQuery Outline で、「Toggle Profile」ボタンをクリックします。
    3. myDSDPrjプロジェクトを展開します。これにより、各SQL文のパフォーマンス情報が表示されます。
      例えば、以下の画像は、SELECT文が2回実行され、所要時間合計が270ミリ秒であることを示しています。

      図3. SQL 実行メトリック


    SELECT文は頻繁に実行されるため、このSQLを最適化することはアプリケーションにとって有益な場合があります。

コードを変更せずにアプリケーションを調整および最適化する

DB2 for z/OSを実行している場合

DB2 Optimization Expert for z/OS には、SQL 文のパフォーマンスを向上させる方法についての専門的なアドバイスが提供されています。DB2 Optimization Expertの次回のリリースでは、Data Studio Developerとの実質的なシェル共有が可能となるため、SQL文をpureQuery XMLエディターから Optimization Expertにコピーし、その後、最適化された等価の文を再度エディターにコピーできるようになります。

問題のあるSQLを特定したら、それを最適化する必要があります。稼働アプリケーションやパッケージされたアプリケーションでは、アプリケーションのソース・コードを変更できない代わりに、生成されたSQLを変更できる場合があります。例えば、SQLを変更して、新たに追加されたインデックスを活用したり、返される行数を制限したり、必要とされているORDER BY節を追加したりできます。

Data Studio Developer 2.1が提供する制御付きエディターでは、アプリケーションから生成された既存のSQL文を等価以上のSQL文に置き換えることができます。このエディターは、文の等価性を自動的に検証し、等価でない文を不許可にします。

Data Studio Developerがインストールされている環境で、次の簡単な手順を実行してみましょう。

pureQueryXMLエディターを使用して pureQuery XMLファイルを編集する

既存の SQL 文を置き換える場合は、既存の文と置き換え後の文の間でパラメータの数およびデータ型に互換性があり、該当する場合は結果セットの形状が同じである必要があります。置き換え後の SQL と互換性がない場合、または構文や意味上の妥当性検査エラーが発生した場合は、エディターによってエラーが表示され、エラーを修正するまでファイルを保存できなくなります。アプリケーションから出された元の文に戻る場合は、「Reset」を使用して文メニューをキャプチャします。バインドしない場合は、SQL文を削除します。
  1. 「myDSDPrj」の「pureQueryFolder」を展開します。「capture.pdqxml」をダブルクリックします。
  2. SELECT文 (SELECT id, name, dept, job, years, salary, comm FROM staff WHERE id = ?) を右クリックして、「Edit」を選択します。これは、前出の図3に示されているSELECT文です。デフォルト スキーマを選択して、テーブルを修飾します。

    図4. 返される行数の削減を目的とした既存のSQLの編集


  3. これで、次のSQLを使用して、文を編集できるようになりました。このSQLは既存のSQLと等価ですが、返される行数は少なくなります。
    SELECT id, name, dept, job, years, salary, comm FROM staff WHERE id = ? fetch first 2 rows only
  4. Save」をクリックします。

    図5. 最適な SQL での置き換え


返される行数が少なくなるようにSQLが変更されました。再度SQLを実行して、パフォーマンス・メトリックに差異が発生しているかどうかを確認します。

  1. 再度アプリケーションを実行するには、次の手順を実行します。
    1. pdq.propertiesを開き、captureModeをOFFに設定し、さらにenableDynamicSQLReplacementTRUEとして追加します。
      pdq.captureMode=OFF pdq.executionMode=DYNAMIC pdq.enableDynamicSQLReplacement=TRUE
    2. pureQuery構成を使用するアプリケーションを実行します。
  2. 再度パフォーマンス・メトリックを表示するには、「myDSDPrj」を右クリックして、「Show pureQuery outline」を選択します。
  3. 以下の画像は、SELECT文が以前と同様2回実行されたことを示していますが、所要時間の合計は519ミリ秒となっています。SQL文の実行にかかった時間が以前よりも短縮されています。

    図6. 最適なSQLでの置き換えによって改善されたSQLパフォーマンス



OpenJPAおよび.NETアプリケーションのサービス品質を改善する

JPAを使用して問題判別を容易にし、サービス品質を改善する

今回のリリースでは、DB2のデータにアクセスする既存または新規のJPAアプリケーションによって提示されるSQ およびJPAQLに関する知識を得ることができるようになりました。さらに、アプリケーション コードを変更せずに、静的SQLをシームレスに使用することもできます。アプリケーションがDB2を使用している場合は、WebSphere® Application Version 7の静的生成プログラム (wsdb2gen) を使用してSQLを収集します。アプリケーションを実行しなくても、ほとんどの機能は利用できます。利用できない機能は、クライアントの最適化と組み合せます。Data Studio Developer 2.1にはツール サポートが提供されているため、静的な生成プロセスがより簡単になります。ただし、WebSphere 7フィックスパック3が適用されていることが前提条件です。

Data Studio Developerがインストールされている環境で、次の簡単な手順を実行してみましょう。

  1. JPAプロジェクトにpureQueryサポートを追加します。
  2. WebSphereがインストールされた環境から取得したcom.ibm.ws.jpa.jarをビルド・パスに追加します。
  3. persistence.xml」を右クリックし、「pureQuery」 → 「Generate pureQueryXml file」の順に選択します。
  4. プロジェクトを右クリックして、「pureQuery」→「Show pureQuery outline」の順に選択します。
  5. 使用中のエンティティー、namedQueries、およびエンティティーのnamedNativeQueriesから生成された使用可能なすべてのCRUDのみでなく、マッピング ファイルも表示されます。
  6. 任意のSQLをダブルクリックして、SQL問合せをトリガしたJPAソースにドリルします。
  7. オプションの手順ですが、クライアントの最適化を使用すると、実行時にのみ使用可能なSQL (動的JPAQL文など) をキャプチャーできます。pdq.Properties captureModeをONにしてアプリケーションを実行し、アプリケーションから残りのJPAQLおよびSQLを収集します。

アプリケーションがDB2を使用しているかどうかに関係なく、既存の非DB2 JPAアプリケーションを、コード行を変更せずに最適化します。既存のSQLを最適な SQLに置き換えるには、「コードを変更せずにアプリケーションを調整および最適化する」セクションを参照してください。Data Studio Developer 2.1のJPAサポートに関する詳細な実践チュートリアルは、随時提供する予定です。

静的SQLを使用する.Netアプリケーションのサービス品質を改善する

Data Studio pureQuery Runtime 2.1には、.Netアプリケーションの安定度、セキュリティー、および管理の容易性を高めるためのサポート (C# や VB.Net などの.Netベースの言語で記述されたものを含む) が提供されています。このSQLアウトラインを使用して、既存の.Netアプリケーションをアップグレードしてください。

  1. .Net 接続文字列で、captureModeをONに設定します。
    captureMode = on;pureQueryXML=path/filename:collection=collName;rootpackage=pkgName
  2. すべてのテストを実行します。
  3. DB2capユーティリティーを使用して、キャプチャーしたSQLから静的パッケージをバインドして作成します。
  4. 実行権限を付与します。
  5. 接続文字列で、captureModeをOFFに、executionModeをSTATICに設定します。
    executionMode=STATIC:captureMode=OFF
  6. すべてのテストを実行して、正しい結果を検証します。

これで、既存のC#またはVB.NETプログラムが静的SQLで実行されるようになりました。


SQLを使用するJavaアプリケーションに関する洞察力を高める

アプリケーションを実行せずに、発行されるSQLを確認する

pureQuery Outlineに表示される既存のアプリケーションに対してData Studio Developer 1.2を使用するには、アプリケーションを実行して発行されたSQLを確認し、さらにソース内のSQLの場所を確認する必要がありました。Data Studio Developer 2.1を使用すると、アプリケーションを実行しなくても、アプリケーション内のSQLが自動的に検証されます。アプリケーションに含まれるすべてのハードコーディングされたSQLを確認できます。アプリケーションを実行して、残りのSQLを収集できます。

Data Studio Developerがインストールされている環境で、次の簡単な手順を実行してみましょう。

  1. myDSDPrj」をクリックして、「Show pureQuery outline」を選択します。
  2. プロジェクトを右クリックして、「pureQuery」→「Show pureQuery outline」の順に選択します。
  3. Database」タブを選択します。まだ実行されていないUPDATE文およびDELETE文がアウトラインに表示されます。DELETE文をダブルクリックして、Javaファイル内の格納場所に移動します。以下の画像を見ると、発行されているJavaソースがexecuteUpdate文だったことがわかります。

    図7. SQLの自動検証 ― 「Database」タブ


  4. Java」タブをクリックします。「myDSDPrj」を展開し、次にdb2jcc.exampleという名前のパッケージを展開します。まだ実行されていないDELETE文およびUPDATE文がアウトラインに表示されます。今度はUPDATE文をダブルクリックして、Java ファイル内の格納場所に移動します (この場合は、JDBCのPREPARE文で処理された文に移動します)。JDBCのexecuteUpdateには、PREPARE文で処理された文の実行場所も表示されます。

図8. SQLの自動検証 ― 「Java」タブ

実際にアプリケーションを実行すると、SQL位置の精度が改善されます。さらに、動的に構築されたSQLも含まれます。Data Studio Developerで、次の簡単な手順を実行してみます。

  1. TutMod.javaを開き、mainメソッドでbasicUpdate呼出しのコメントを外します。
  2. アプリケーションを実行します。
    1. pdq.propertiesを開き、captureModeをONに設定し、さらにenableDynamicSQLReplacementをFALSEとして追加します。
      pdq.captureMode=ON pdq.executionMode=DYNAMIC pdq.enableDynamicSQLReplacement=FALSE
    2. アプリケーションを実行します。
  3. myDSDPrj」を右クリックして、「Show pureQuery outline」を選択します。
  4. Java」タブをクリックします。「myDSDPrj」を展開し、次にdb2jcc.exampleという名前のパッケージを展開します。前出のexecuteUpdateヒントが、実際のSQL UPDATE文に置き換えられています。

図9. 精度の改善を目的とするアプリケーションの実行 ― 「Java」タブ

発行する SQL と発行元を決定する

以前は、pureQuery Outlineが個々のプロジェクトに制限されていたため、アプリケーションから発行されるSQLの情報は、プロジェクト・ベースでしか確認できませんでした。複数のプロジェクトにまたがるアプリケーションの場合、全体像を簡単には把握できませんでした。

アプリケーションに属していないワークスペース内のプロジェクトをすべて閉じてください。Data Studio Developer 2.1では、アプリケーションがデータベースに発行するSQLについて、必要な情報がすべて提供されます。

続行する前に、いくつかのプロジェクトをアプリケーションに追加してみましょう。Data Studio Developerを使用すると、複数のテーブルのpureQueryコードを一括生成できます。

ボトムアップ コードの一括生成

Data Studio Developer 1.2では、テーブルごとのコード生成のみが可能でした。バージョン 2.1では、複数のテーブルについて、ボトムアップ コード生成をより迅速に実行できます。

  1. pdqBulkBottomUpという名前のJavaプロジェクトを作成します。
  2. DEPARTMENTテーブルおよびEMPLOYEEテーブルを選択し、右クリックして、「Generate pureQuery code」を選択します。
  3. パッケージ名を指定し、「Generate annotated style」コードを選択します。「Next」をクリックします。

    図10. 2つのテーブルからのpureQueryコードの生成


  4. DEPARTMENTテーブルの「SQL Statements」タブを選択します。以下に示すように、「Select all rows」、「Create row by parameters」、および「Create row by object」を選択します。「Finish」をクリックします。

    図11. pureQueryコード生成 ― SQL文の選択


  5. これで、複数のテーブルのデータ アクセスを即時に生成できるようになりました。SQL CRUD文はテーブルごとに生成されます。つまり、テーブル間の関係は考慮されません。
  6. プロジェクトを右クリックし、「Show pureQuery outline」を選択すると、データベースへのドリル ダウンと、各SQLのアプリケーションへのドリル・アップが可能になります。次のような質問に対する答えを導き出してください。DEPARTMENTテーブルを使用しているのはどのSQLですか。また、そのSQLはJavaコードのどの部分で使用されていますか。

    図12. 特定のスキーマまたはテーブルを使用するSQL、およびそのSQLが使用されているJavaコード内の場所 ― 「Database」タブ


  7. 「Java」タブをクリックします。考えられるすべてのプロジェクトがpureQuery Outlineに表示されます。JavaクラスをSQLにドリルダウンすると、アプリケーションのデータベース照合を実行できます。次のような質問に対する答えを導き出してください。JavaクラスDepartmentDataによって発行されるのはどのSQLですか。また、そのSQLはどこに発行されますか。

図13. Javaクラスが発行するSQLとその場所 ― 「Java」タブ

アプリケーションが使用するSELECT文および絶対値 (abs) 関数を使用するSQL文を検索する

以前は、pureQuery Outlineのフィルタを使用して、データベース列またはテーブルを使用するSQL文の情報を取得できました。Data Studio Developer 2.1では、pureQuery APIを使用しているのか、JDBCまたはフレームワークを使用した既存のアプリケーションを使用しているのかに関係なく、拡張フィルタ処理を利用して対象のSQLを絞ることができます。この機能を使用して、特定の列を使用するSQL文を検索したり、そのSQL文の中からSELECT文であるものを検索したりできます。さらに、特定の関数を使用するSQL文も確認できます。

pureQuery Outline をフィルター処理して特定のSQLに対象を絞る

SQLテキスト・パターンに任意の文字列を入力すると、その文字列を含むSQLをフィルター処理できます。例えば、「(.*ABS.*)」と入力すると、abs関数を使用するSQL文を検索できます。pureQuery Outlineは、必要に応じて自動的にリフレッシュされます。「Filter」アイコンの並びにある「Refresh with projects in workspace」を手動で選択すると、アプリケーション全体に適用されたフィルター処理を削除できます。「Refresh project in outline」アイコンを使用すると、リフレッシュを手動で続行できます。

次の簡単な手順を実行してみましょう。

  1. 以下に示すように、pureQuery Outlineの「Filter」ボタンをクリックします。
  2. SQL テキストフィルター・パターンとして、フィルター情報 (.*SELECT.*) を指定します。「OK」を選択します。(.*SELECT.*)
  3. これにより、フィルター処理されたpureQuery OutlineビューにアプリケーションからのSELECT文がすべて表示されます。

    図14. アプリケーションが実行するSELECT文を検索する


  4. フィルターを列名別に追加するには、フィルター値<SCHEMA>.STAFF.IDを入力します。これにより、ID列を使用するすべてのSELECT文がSTAFFテーブルに表示されます。これは、影響分析を実行する場合にたいへん役に立ちます。データベース オブジェクト名として、値<schema>.STAFF.ID を入力します。これにより、STAFFテーブルのID列を使用するすべてのSELECT文が表示されます。

    図15. 列 ID を使用する SELECT 文の検索


アプリケーションに存在するSQL、およびデータベースに送信されるSQLを見つける

pureQuery Outline を表示して、アプリケーションに含まれている SQL と実際にデータベースに送信される SQL を照合します。先ほど置き換えた SQL を確認してください。
Data Studio で、次の簡単な手順を実行してみましょう。

  1. pureQuery Outlineの「Database」タブで、SELECT文を展開します。データベースに送信されたSQLは、前述の手順で置き換えたSQLです。

図16. アプリケーションに存在する SQL とデータベースに送信される SQL の表示

SQLが定義および実行される場所を検索する

Data Studio Developer 1.2では、スタック・トレースに基づいて、ソース・コードでのSQLのおおよその位置が示されました。Data Studio Developer 2.1では、アプリケーション内でのSQLの場所をより正確に把握できます。SQLはどこで定義され、どこで実行されているのでしょうか。同じSQLを呼び出すコード・パスにはどのようなものがあるでしょうか。
Data Studio Developerがインストールされている環境で、次の簡単な手順を実行してみましょう。

  1. pureQuery Outlineの「Java」タブをクリックして、SELECT文を展開します。SQLが定義された場所 (preparedStatement) と、SQLが実行された場所 (executeQuery) を確認できます。
  2. DELETE文は、SQLが準備され、実行された特定の行を示しています。

    図17. SQLが定義および実行された場所の表示


結果セットの値がどのようにJavaアプリケーションを流れるかを確認する

JavaアプリケーションがSQLを消費する方法についての詳細情報を入手しましょう。取得された列値はどこで使用されるのでしょうか。データベースに送り返されるのでしょうか。出力されるのでしょうか。ソース・コードがある場合は、結果セットに値が返された後、その値がどのようにアプリケーションを流れるのかを追跡できます。

  1. DepartmentData.javaを開き、「DEPTNO」を右クリックして、「Source Code Analysis, Analyze column value Dependency」を選択します。
  2. 「pureQuery Analysis」ビューに、アプリケーション介した値の流れが示されます。データベースから値が取得される場所、およびデータベースに値が更新される場所を示すデータベース アイコンが強調表示されます。

    図18. Javaアプリケーションを介したDEPTNO列値の流れの表示



生産性を改善し、開発者とDBAの間のコラボレーションを強化する

展開可能なbindPropsを作成および確認する

以前はコマンド行の展開に使用するバインド・プロパティーを手動で作成する必要がありました。エントリーが無効だった場合にそれを示す方法がなかったため、展開時にエラーがレポートされるまで待つ必要がありました。そのため、開発者はjarファイル、earファイル、またはwarファイルによる展開テストを簡単に実行できませんでした。

すぐに展開が可能ですか。Data Studio Developer 2.1では、展開にかかる時間が大幅に短縮されました。集中管理できる展開可能なbindProps (ただし、組織とは未共有) を作成します。Data Studio Developer 2.1を使用すると、開発者は、次の手順を試してアプリケーションが展開可能であることを確認できます。

bindProps を生産的に開発および確認する

既存の.bindPropsファイルの「Add or Remove Entries」メニューを使用すると、古くなったためにプロジェクトから削除または名前変更されたbindPropsリスト項目などのリストされたエントリーの有効性を確認できます。詳細なエラー情報に関連付けられたエラー・アイコンが付いている無効なエントリーを削除します。プロジェクトから削除されたエントリーを簡単に識別でき、またそれらを簡単に追加できます。
  1. Default.bindProps」を右クリックして、「Add remove entries」を選択します。「com.pdqdemo.EmployeeData」と「com.pdqdemo.DepartmentData」を選択します。

    図19. 静的SQLプロパティー管理の簡易化


  2. バインドをテストするには、「Default.bindProps」を右クリックして「bind」を選択します。

bindPropsの準備が整ったことを確認したら、展開対象のアプリケーションにjarを展開します。

展開可能なjarをバインドする

アプリケーションを開発してテストすると、そのアプリケーションを展開するためにjarが展開されます。jarは、その後コマンド行でバインドされます。Data Studio Developer 2.1を使用すると、開発者は、次の手順を試してアプリケーションが展開可能であることを確認できます。これにより、必要なときにのみバインドが実行されるというインテリジェントな機能を活用できます。含まれているアプリケーションのサブセットのみを変更した場合、jarを再展開するときに不要なバインドが実行されないようにします。

  1. プロジェクトpdqBulkBottomUpのsrcフォルダのファイルおよびpureQueryフォルダのbindpropsにjarを展開します。
  2. jarファイルをバインドするには、jarファイルを右クリックして、「pureQueryBind」の順に選択します。bindPropsにリストされたエントリがバインドされます。

提供されるバインド・エラーの詳細情報

Data Studio 1.xでは、バインドできなかった場合に提供されるバインド・エラー情報が限られていたため、バインド・エラーの原因となったパッケージを特定できませんでした。そうした不十分な情報が理由で、バインド・エラーの修正が困難でした。また、一般的に、展開時には多数のSQL文を含む多くのパッケージがバインドされるため、問題がより複雑になっていました。

Data Studio Developer 2.1では、バインド・エラーが発生したときに提供される情報が大幅に増えました。バージョン 2.1では、バインド時にエラーとなったパッケージに関するフィードバックが提供されるほか、Data Studio DeveloperのツールとpureQuery Runtimeのコマンド行ツールを使用してエラーの原因を特定できます。

含まれているアプリケーションのサブセットのみを変更した場合、jarを再展開するときに不要なバインドが実行されないようになりました。

SQLとJavaツールとのさらなる統合

SQL文を作成する際に、SQLビルダーなどのツールやSQLエディターを使っているDBAの方は、簡単にpureQueryのコードを作成することができます。SQLビルダーを使用して、SQL文を.sqlファイルとして保存してください。その上で、.sqlファイルを右クリックするか、別のSQLエディターから該当のファイルを右クリックし、Generate pureQuery codeを選択します。これによりウィザードが起動され、ファイル内の全てのSQL文に対するpureQueryデータ・アクセス・レイヤーを効率よく作成することができます。

一方、DBAから.sqlファイルを受け取ったJava開発者の方も、pureQueryプロジェクトを使用して容易にこれらのSQL文のためのコードを生成することができます。また、同様に、既存のJDBCアプリケーション(群)もpureQuery APIフレームワークを使用して簡単に移行可能です。pureQuery outlineからSQLを選択してプロジェクト内の.sqlファイルにエクスポートするか、SQLエディターからSQLを開きます。そして、.sqlファイルを右クリックするか、SQLエディターから該当のファイルを右クリックし、Generate pureQuery codeを選択します。

Data Studio Developerで使用するpureQuery Runtimeの場所を選択する

Data Studio Developer 1.2以前では、インストールされたpureQuery Runtimeを簡単には使用できず、手動による多数の手順を踏む必要がありました。以下に示す手順を使用して、Data Studio Developer 2.1がpureQuery Runtimeのインストール先を指すようにします。

  1. 最上位レベルの「WindowPreferences」から、「Data ManagementSQL DevelopmentpureQuery category」の順に選択します。
  2. pureQuery Runtime Location」セクションで、pureQuery Runtimeのjarが格納されている場所を指定します。

複数のツールでデータベース接続情報を共有する

以前のData Studio Developer 1.2では、Data Studio Eclipseベースのすべてのツールで個別にデータベース接続を作成する必要がありました。今回のリリースでは、データベース定義を1つのツールで定義して、それを他のツールと共有できるようになりました。共有接続をインポートして、再利用の機能を活用してください。

Data Studio Developer 1.xまたはData Studio Developer 2.1からpureQueryプロジェクトを簡単に移行する

Data Studio Developer 2.1でワークスペースを開くと、古いData Studioのワークスペースから既存の接続が自動的に移行されます。「Window」→「Reset perspective」の順に選択して、Data Studio Developer 2.1のパースペクティブにリセットします。既存のプロジェクトからpureQuery Runtimeを移行するには、プロジェクトの「Upgrade project」メニューを使用します。このプロセスの詳細については、技術情報<note pointer>を参照してください。


Javaデータベース・アプリケーションのSQLインジェクション攻撃を受けるリスクを低減するかゼロにする

SQLインジェクション攻撃を未然に防ぐ手段を講じる

データベースに発行されるSQLを、キャプチャーされたpdqxmlに基づく特定の承認済みSQLに制限する。

  1. pdq.propertiesで、次のプロパティーを使用して、アプリケーションを実行します。実行されたSQLはすべて、pureQueryFolderのcapture.pdqxmlにキャプチャーされます。captureMode=ON executeMode=DYNAMIC pureQueryXML=pureQueryFolder/capture.pdqxml capturedOnly=false
  2. さまざまなアプリケーションを実行してすべてのSQLを収集したら、SQLを制限できるようになります。
    pdq.properties を開いて、次のプロパティを設定します。captureMode=OFF capturedOnly=true
  3. これで、キャプチャーされたSQLのみを、動的にも静的にも実行できるようになりました。

まとめ

エンタープライズ対応のアプリケーションを構築する開発者の生産性が大幅に向上します。優れたアプリケーションを作成し、DBAと共同作業する権限を開発者に付与することにより、重要なパフォーマンスの問題が実稼働環境で発生する可能性が低減されます。静的SQLの使用により、DB2サーバーでのCPU/トランザクションの削減が可能となり、既存のハードウェアおよびソフトウェア投資の増加が実現します。

Data Studio DeveloperおよびData Studio pureQuery Runtime 2.1をぜひお試しください。トライアル・コードを随時公開していますので、ダウンロードしてご利用ください。


表1. データベース毎のフィーチャー・サポート状況
機能DB2 for LUWIDSDB2 for z/OSDB2 for iSeries
SQLのチューニングに必要な、より詳細な情報を開発者に提供できる
  • アプリケーションにおいてどのSQL文の実行に最も長い時間がかかっていて、どのSQL文が最も頻繁に実行されているかを見極めることができる
  • コード(静的SQLは含まれない)を変更することなく、アプリケーションのチューニングと最適化を行うことができる
ありありありあり
SQLのチューニングに必要な、より詳細な情報を開発者に提供できる
  • コード(静的SQLを使用)を変更することなく、アプリケーションのチューニングと最適化を行うことができる
ありなしありあり
静的SQLによって、OpenJPAへのサービスの質を向上するありなしありあり
SQLを使用したJavaアプリケーションに関して詳細な分析結果を取得できる
  • アプリケーションを起動することなく発行することができるSQLを確認することができる
  • 発行できるSQLを確認して、アプリケーションがどこで使用されているか分析することができる。
  • アプリケーションで使用されているSELECT文を確認して、どのSQL 文が絶対値に基づく関数を使用しているか確認することができる。
  • アプリケーションで使用されているSQLの内容を確認し、データベースに送付されるSQLを確認することができる。
  • SQLがアプリケーションのどこで規定され、実行されているか確認することができる。
  • Javaアプリケーション経由で提供される検索結果の値について確認することができる。
ありありありあり
開発者とDBAの生産性とコラボレーションを改善できる(静的SQLに基づいて提供される機能)
  • 導入可能なbindPropsを作成し検証できる
  • 導入可能なjarファイルをバインドできる
  • バインドに関して発生したエラーに関してより詳細な情報を確認できる
ありなしありあり
開発者とDBAの生産性とコラボレーションを改善できる(静的でないSQLに基づいて提供される機能)
  • SQLツールとJavaツール間の連携を実現できる
  • Data Studio Developerで使用するpureQueryの稼働環境のロケーションを選択できる
  • 複数のツール間でデータベース接続に関する情報を共有できる
  • Data Studio Developer 1.xまたはData Studio Developer 2.1から簡単にpureQueryプロジェクトを移行できる
ありありありあり
Javaデータベース・アプリケーションに関してSQLインジェクション・リスクを削減または廃除できるありありありあり


ダウンロード

内容ファイル名サイズダウンロード形式
この記事のサンプル コードTutMod.java11KBHTTP
この記事のサンプル コードUtil.java11KBHTTP

ダウンロード形式について


参考文献

学ぶために

製品や技術を入手するために

  • IBM Data Studio Developer 2.1をダウンロードし、この記事にある内容を試してみてください。

  • DB2 は無料でご利用いただけます。DB2 Express-C(US) (DB2 Express Edition と同じコア データ機能を搭載し、アプリケーションを構築および展開するための確かな基盤を提供するコミュニティ向けの DB2 Express Edition の無料版) をダウンロードしてください。

  • IBM 製品の評価版(US)をダウンロードして、IBM Information Management、Lotus®、Rational®、Tivoli®、および WebSphere® の実践的なアプリケーション開発ツールおよびミドルウェア製品をお試しください。

議論するために

著者について

Sonali Surange

Sonali Surangeは、IBMシリコン バレー研究所のシニア ソフトウェア エンジニアで、Data Studio DeveloperのpureQueryツールのチーム リーダーです。Sonaliは、以前IBMでIBMデータベース向けのVisual Studio .Netツールのさまざまな主要コンポーネントの開発を指揮していました。

Zeus Courtois

Zeus Courtoisは、Data Studio開発チームのエンジニアで、カリフォルニア州サンノゼのIBMシリコン バレー研究所でpureQueryツールを開発しています。Zeusは、このチームに加わる前は、Data Studio Enablementチームのインターンでした。Zeusは、Texas A&M International Universityで情報システム修士号を取得しています。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=376613
ArticleTitle=IBM Data Studio Developer 2.1の新機能と既存機能
publish-date=12032010
author1-email=ssurange@us.ibm.com
author1-email-cc=
author2-email=zocourto@us.ibm.com
author2-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。