Exemple : Activation de l'optimisation client pureQuery pour une simple application Java

Dans un exemple simple, vous allez utiliser les quatre étapes (capture, configuration, édition de liens et exécution) pour activer une application Java avec l'optimisation client pureQuery et configurer cette application pour exécuter les instructions SQL en mode statique dans une base de données DB2.
  1. Capturez les données SQL.
  2. Configurez les données SQL capturées avec les caractéristiques des packages DB2 qui seront créés pour les instructions SQL.
  3. Créez des packages à partir des instructions SQL et liez ces packages à une base de données DB2.
  4. Exécutez les instructions SQL de façon statique.

Avant de commencer

Les fichiers JAR d'exécution pureQuery, pdq.jar et pdqmgmt.jar, doivent être répertoriés dans la variable CLASSPATH de l'application.

Pourquoi et quand exécuter cette tâche

Cet exemple suppose que l'application est basée sur JDBC et autonome, qu'elle utilise une base de données DB2 comme source de donnée et que vous effectuez les tâches dans le répertoire qui contient l'application. Les données SQL qui sont capturées par l'exécution pureQuery sont stockées sur le système de fichiers local dans un fichier pureQueryXML. L'illustration suivante présente la configuration.
Figure 1. Configuration de l'optimisation client pureQuery
Configuration simple de l'optimisation client pureQuery
Dans l'illustration, l'utilitaire Configure pureQuery convertit le fichier pureQueryXML qui contient le fichier des données SQL capturées en un fichier pureQueryXML configuré.
Lorsque vous activez l'optimisation client pureQuery et que vous exécutez les instructions SQL de façon statique, vous utilisez les fonctionnalités pureQuery suivantes :
  • Vous définissez les propriétés d'exécution de pureQuery pour capturer d'abord les instructions SQL puis pour exécuter les instructions SQL de façon statique.
  • Vous utilisez les utilitaires pureQuery de configuration et StaticBinder avec les instructions SQL que vous capturez à partir de l'application.

Procédure

Pour activer l'optimisation client pureQuery pour une simple application Java :

  1. Capturez les données SQL à partir d'une application.
    1. Créez un fichier pdq.properties dans votre répertoire de travail en cours à l'aide des propriétés d'exécution pureQuery suivantes :
      pdq.captureMode=ON
      pdq.pureQueryXml=capture.pdqxml
      pdq.executionMode=DYNAMIC

      La propriété captureMode spécifie que les instructions SQL et les autres informations associées à l'exécution de l'instruction SQL sont capturées dans un fichier pureQueryXML. La propriété pureQueryXml spécifie le nom du fichier capture.pdqxml. La propriété executionMode indique s'il faut exécuter en mode statique les instructions SQL figurant dans le fichier pureQueryXML indiqué par l'option pureQueryXml.

      Conseil : Si les performances posent problème lors de la capture de données SQL, vous pouvez définir la valeur de la propriété captureMode sur NEW_STMT ou LITE pour réduire la quantité de données capturées.
    1. Démarrez et exécutez l'application Java pour exécuter les instructions SQL.
    2. Arrêtez l'application.
    Lorsque vous exécutez l'application, pureQuery Runtime crée le fichier capture.pdqxml et stocke les données SQL capturées dans le fichier.
  2. Configurez les données SQL capturées.
    Exécutez l'utilitaire Configure à l'aide de la commande suivante :
    java com.ibm.pdq.tools.Configure 
      -rootPkgName TESTPKG 
      -cleanConfigure TRUE 
      -pureQueryXml capture.pdqxml

    Dans le fichier capture.pdqxml de pureQueryXML, l'utilitaire Configure définit les caractéristiques des packages DB2 que vous devez créer à partir des instructions SQL du fichier. L'utilitaire Configure regroupe les instructions SQL du fichier pureQueryXML dans des ensembles d'instructions. Les ensembles d'instructions correspondent aux packages de la base de données. L'utilitaire utilise la valeur de l'option -rootPkgName pour générer les noms qui seront utilisés pour les packages dans la base de données. Pour plus d'informations sur les dénominations de packages, voir Informations d'identification du package DB2.

    L'option -cleanConfigure TRUE indique que les informations de configuration précédentes du fichier pureQueryXML ne sont pas sauvegardées.

    Si l'option -cleanConfigure n'est pas indiquée, l'utilitaire Configure tente de sauvegarder certaines informations de configuration.

    Lorsqu'il est configuré, le fichier pureQueryXML contient les informations de section et de package nécessaires et peut être utilisé par le programme pureQuery StaticBinder pour créer des packages et les lier à la base de données DB2.

  3. Liez les instructions SQL capturées avec l'utilitaire pureQuery StaticBinder.
    Exécutez l'utilitaire StaticBinder en entrant la commande ci-dessous. Spécifiez l'URL cible, l'ID utilisateur, le mot de passe, le fichier pureQueryXML et l'option -isolationLevel :
    java com.ibm.pdq.tools.StaticBinder 
      –url "jdbc:db2://localhost:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=1;" 
      -username "testuser" -password "testpwd"
      -isolationLevel CS
      -pureQueryXml capture.pdqxml
      -showDetails TRUE

    L'option -showDetails true affiche les détails du processus de liaison.

    Le résultat de la commande est identique à l'exemple suivant :
      IBM Optim pureQuery Runtime 2.2.1.1 build 2.28.45
      Licensed Materials - Property of IBM
      5724-U16
      (c) Copyright IBM Corp. 2006, 2011 All Rights Reserved.
    
      ================================================================================
    
      L'utilitaire StaticBinder lance l'opération de liaison pour le fichier pureQueryXml 'capture.pdqxml'.
    
      Début de traitement des options :  -url "jdbc:db2://localhost:50000
        /SAMPLE:retrieveMessagesFromServerOnGetMessage=1;"
        -username "*****" -password "*****" 
        -pureQueryXml "capture.pdqxml" -isolationLevel "CS" -showDetails "TRUE"
    
      L'utilitaire StaticBinder a lié avec succès le package 'TESTPKG2' pour le niveau
    d'isolement de lecture non reproductible.
    
      Statistiques pour cet ensemble d'instructions :
          Nombre total d'instructions dans cet ensemble d'instructions : 5
          Nombre d'instructions SQL pour lesquels une tentative de liaison a 
              été effectuée : 5
          Numéro de section la plus importante utilisée : 5
    
      L'opération de liaison a été correctement effectuée pour 'capture.pdqxml'.
    
          Nombre d'ensembles d'instructions pour lesquels l'utilitaire tente de lier des packages : 1: [TESTPKG2]
          Nombre d'ensembles d'instructions pour lesquels l'attribut "isBindable" correspond à "false" pour l'ensemble d'instructions : 0
          Nombre d'ensembles d'instructions qui ne contiennent pas d'instructions liables, même si l'attribut "isBindable" correspond à "true" pour l'ensemble d'instructions : 0
          Nombre total d'ensembles d'instructions dans le fichier pureQueryXML : 1
    
      ================================================================================
    
      Résultats de l'activité de l'utilitaire StaticBinder :
    
         Nombre des éléments pour lesquels l'opération de liaison a REUSSI : 1
    Si la liaison a réussi, le package est créé avec le nom TESTPKG2. La commande crée uniquement un package parce que vous avez spécifié -isolationLevel CS. Par défaut, l'utilitaire StaticBinder crée quatre packages pour les quatre niveaux d'isolement.
  4. Exécutez les instructions SQL de façon statique à l'aide de l'exécution pureQuery.
    1. Editez le fichier pdq.properties que vous avez créé précédemment.
      Définissez executionMode par STATIC et captureMode par OFF et sauvegardez le fichier. Le fichier contient les lignes suivantes :
      pdq.captureMode=OFF
      pdq.pureQueryXml=capture.pdqxml
      pdq.allowDynamicSQL=TRUE
      pdq.executionMode=STATIC

      La valeur par défaut de la propriété d'exécution pureQuery allowDynamicSQL est TRUE et n'est pas requise dans le fichier de propriétés. Placer la propriété dans le fichier permet de se souvenir de la valeur par défaut. Par défaut, l'exécution pureQuery permet d'exécuter dynamiquement les instructions SQL envoyées par l'application même si l'instruction SQL n'a pas été capturée précédemment.

    2. Exécutez l'application.

      L'application exécute les instructions SQL qui sont répertoriées dans le fichier pureQueryXML de façon statique.

    Remarque : Une méthode permettant de déterminer si les instructions SQL sont exécutées de façon statique consiste à supprimer le package. Si vous supprimez le package TESTPKG2 de la base de données, l'application ne parvient pas à exécuter les instructions SQL répertoriées dans le fichier pureQueryXML.

    Si vous exécutez l'utilitaire StaticBinder avec le fichier pureQueryXML pour recréer le package, l'application exécutera les instructions SQL de façon statique.

    Vous pouvez également utiliser un outil de contrôle de base de données tel que Tivoli OMEGAMON XE for DB2 sur z/OS pour vérifier que l'instruction SQL s'exécute de façon statique.

Que faire ensuite

Dans un scénario d'application plus complexe, vous pouvez capturer des instructions SQL à partir de l'application dans des itérations multiples. Lorsque vous capturez les données SQL dans des itérations multiples, vous effectuez l'étape supplémentaire consistant à fusionner les données SQL capturées avec le fichier pureQueryXML configuré avant la configuration et la liaison des instructions SQL.

Les utilitaires Configure et StaticBinder prennent en charge un fichier d'options dans lequel toutes les informations de déploiement peuvent être répertoriées avec différentes options applicables aux packages. Une fois le fichier d'options créé, vous pouvez appeler l'utilitaire à l'aide de l'option -optionsFile pour spécifier le fichier.

Vous pouvez également créer un script de shell qui contient les commandes de l'utilitaire pour répéter et automatiser le processus à quatre étapes. Si les fichiers JAR pureQuery se trouvent dans la variable CLASSPATH, tous les utilitaires sont disponibles sous forme de programmes Java.

Dans IBM® Data Studio, vous pouvez activer un projet Java avec le support pureQuery et développer des applications Java activées avec l'optimisation client pureQuery dans l'environnement IDE d'Eclipse.


Commentaires