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

Dans un exemple simple, vous utilisez les quatre étapes (capture, configuration, édition de liens et exécution) afin d'activer une application Java avec l'optimisation client pureQuery et de configurer les instructions SQL d'exécution de l'application de façon statique sur 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 modules DB2 qui seront créés pour les instructions SQL.
  3. Créez des modules à partir des instructions SQL et liez ces modules à 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.xml
      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.xml. La propriété executionMode spécifie s'il faut exécuter de façon statique les instructions SQL qui se trouvent dans le fichier pureQueryXML qui est spécifié par l'option pureQueryXml.

    1. Démarrez et exécutez l'application Java afin d'exécuter les instructions SQL.
    2. Arrêtez l'application.
    Lorsque vous exécutez l'application, l'exécution pureQuery crée le fichier capture.xml 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.xml

    Dans le fichier pureQueryXML capture.xml, l'utilitaire Configure définit les caractéristiques des modules DB2 que vous créerez à partir des instructions SQL du fichier. L'utilitaire Configure regroupe les instructions SQL en jeux d'instructions dans le fichier pureQueryXML. Les jeux d'instructions correspondent aux modules 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 modules dans la base de données. Pour plus d'informations sur les dénominations de modules, voir Informations d'identification du package DB2.

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

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

    Lorsque le fichier pureQueryXML est configuré, il contient le module et les informations de section nécessaires et peut être utilisé par l'utilitaire pureQuery StaticBinder pour créer des modules 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 avec la commande suivantes. 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://testserver.test.com:446/STLEC1” 
      -username "testuser" -password "testpwd"
      -isolationLevel CS
      -pureQueryXml capture.xml
      -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 :
    L'utilitaire
    StaticBinder commence par lier le fichier pureQueryXml capture.xml.
    
    Début de traitement des options : -username "*****" -password "*****"
    -url "jdbc:db2://testserver.test.com:446/STLEC1"
    -pureQueryXml  capture.xml 
    -isolationLevel "CS"
    -showDetails "true"
    
    L'utilitaire StaticBinder a lié avec succès le module 'TESTPKG2' pour le niveau
    d'isolement de lecture non reproductible.
       Nombre d'entrées d'instructions : '5', nombre d'instructions liées : '5',
    options de liaison : 'ISOLATION CS'
    
    L'utilitaire StaticBinder a lié 'capture.xml' avec succès.
        Nombre de modules en entrée : '1'
        Nombre de modules en entrée pour lesquels isBindable est faux : '0'
        Nombre de modules en entrée dont aucune instruction ne peut être liée : '0'
        Nombre de modules en entrée pouvant être lié par l'utilitaire Static Binder : '1' : [TESTPKG]
    
    =======================================================================
    
    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 module est créé avec le nom TESTPKG2. La commande crée uniquement un module parce que vous avez spécifié -isolationLevel CS. Par défaut, l'utilitaire StaticBinder crée quatre modules 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.xml
      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 module. Si vous supprimez le module TESTPKG de la base de données, l'application ne parviendra pas à exécuter les instructions SQL qui sont répertoriées dans le fichier pureQueryXML.

    Si vous exécutez l'utilitaire StaticBinder avec le fichier pureQueryXML pour recréer le module, 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 de configuration 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 qui sont applicables aux modules. 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 Optim Development Studio, vous pouvez activer un projet Java en prenant en charge pureQuery et développer les applications Java qui sont activées avec l'optimisation client pureQuery dans l'interface IDE Eclipse.


Commentaires