pureQuery Runtime
peut être utilisé avec des applications Java™. pureQuery Runtime
peut également être utilisé avec les applications DB2 ODBC/CLI
et Microsoft .NET.
Les fonctions dépendent du type d'application :
Fonctions pour applications API Java pureQuery
En plus des fonctions d'optimisation client, pureQuery Runtime fournit
également des fonctions API.
Pour les
applications utilisant l'API pureQuery, InfoSphere Optim pureQuery Runtime offre
les fonctions suivantes :
- Une API unique permettant d'exécuter des instructions SQL sur
les bases de données, les collections intégrées à la mémoire et les objets itérateurs
La plateforme Java offre
une multitude de structures de données et d'API pour le traitement des collections de données
et des données externes issues de différentes sources. Chacune de ces fonctions convient
parfaitement à la résolution d'un type de problème spécifique. pureQuery possède également un ensemble unique d'interfaces
pour la récupération et la modification de données au sein des collections. Par exemple,
pureQuery fournit une API
pour les grappes, listes, cartes et itérateurs
Java. Chaque API interroge et, dans certains cas, met à jour les données
dans la collection.
Parallèlement, l'API de connectivité JDBC permet d'utiliser SQL pour accéder aux objets relationnels et aux autres objets DataSource JDBC externes.
Toutefois, pureQuery permet à une application d'accéder à l'ensemble de ces sources de données
à l'aide d'un langage d'interrogation unique et connu, que ce soit de façon indépendante ou
combinée.
- Un modèle de programmation simple pour l'accès aux données
- pureQuery fonctionne comme une fine couche supérieure de la connectivité JDBC.
pureQuery simplifie les requêtes, les mises à jour, les appels vers
des procédures stockées, ainsi que diverses tâches relatives à
l'accès aux bases de données. pureQuery s'exécute sur la plateforme Java 2
Standard Edition 5.0 (J2SE 5.0)
et sur la plateforme Java Standard Edition 6
(Java SE 6).
- Mappage automatique des données SQL vers des types de retour avec intervention mineure
du développeur
- pureQuery fournit un mappage automatique entre les résultats de requête SQL
et les objets renvoyés pour de nombreux modèles d'objet
Java. Une interface de sortie connectable permettant les mappages personnalisés est disponible pour les mappages complexes entre les résultats de requêtes et les objets Java.
Vous pouvez créer et annoter
des beans qui renvoient les résultats des requêtes SQL qui contiennent des jointures de table.
Les résultats de requête sont renvoyés sous la forme d'un ensemble de beans qui contiennent des instances
d'autres beans. La hiérarchie des beans reflète les relations un à un
et un à plusieurs des résultats de requête. Par exemple, une
requête contient une jointure entre une table d'employé et une table de rayon.
La requête renvoie les employés qui sont affectés aux différents rayons.
Les résultats sont renvoyés sous la forme de beans de rayon, où chaque
instance du bean de rayon représente un département. Chaque bean de
département contient une liste des beans d'employé. Chaque instance d'un bean
d'employé contient des informations sur l'employé.
- Prise en charge du développement d'application SQL à l'aide de méthodes
annotées et intégrées
- Les méthodes annotées sont prises en charge pour la définition de vos
propres méthodes dans les interfaces personnalisées. Vous créez des méthodes avec des définitions
annotées par des instructions SQL. Vous pouvez développer des applications
qui respectent le modèle DAO (Data Access Object) en créant des objets d'accès aux données
à l'aide des méthodes annotées.
Les méthodes intégrées sont
prises en charge pour que vous puissiez bénéficier des méthodes définies
dans l'interface Data fournie par IBM. Les méthodes intégrées sont utiles pour les applications nécessitant la création
d'instructions SQL lors de leur exécution. Avec les méthodes intégrées, les instructions SQL sont transmises comme des paramètres lors des appels de méthodes. Elles sont similaires à l'approche de la connectivité JDBC.
Une prise
en charge est fournie pour la gestion des instructions SQL qui sont exécutées de façon statique.
Vous pouvez annoter votre code pour regrouper les instructions SQL qui sont utilisées
dans une interface. Vous pouvez contrôler le processus de définition des accès pour les groupes.
Vous pouvez contrôler les options de définition d'accès qui sont utilisées par l'utilitaire
pureQuery StaticBinder et qui contrôlent les noms générés pour les
packages contenant les instructions SQL.
- Prise en charge des instructions SQL dynamiques et statiques pendant la phase d'exécution
- Le code pureQuery peut utiliser une instruction SQL dynamique avec un pilote JDBC
standard pour une instruction SQL imbriquée comme pour une instruction SQL ad hoc inconnue
jusqu'au moment de l'exécution.
Le code pureQuery peut également utiliser une instruction SQL statique
lorsqu'il utilise le style de programmation "méthode annotée" et les bases de données DB2.
Un SQL statique présente trois avantages :
- Suppression d'un cache d'instruction dynamique
- L'utilisation d'un SQL statique réduit le conflit relatif au cache d'instruction dynamique de DB2, améliorant ainsi les performances
des applications utilisant un SQL dynamique.
- Cohérence des chemins d'accès
- Avec les instructions SQL statiques, les chemins d'accès sont verrouillés avant
l'exécution d'une application, d'où des temps de réponse prévisibles et stables. Pour les
instructions SQL dynamiques, en revanche, les chemins d'accès sont calculés au moment
de l'exécution.
- Possibilité d'améliorer les performances de vos applications
- Un SQL statique permet d'améliorer les performances de vos applications.
- Les plans d'accès étant définis avant l'exécution,
il n'est plus nécessaire de préparer les instructions SQL au moment de l'exécution.
- Entant donné qu'il n'est pas obligatoire de préparer ou de décrire chaque instruction,
le trafic réseau existant entre les applications client et les serveurs de la base de données est
réduit.
- Un SQL statique applique de façon rigoureuse les types de données pour les paramètres ou les variables hôte utilisés dans les prédicats. Une telle application permet aux données d'entrée de correspondre aux types de cible de la base de données.
- Sécurité renforcée
- Plutôt que d'accorder aux utilisateurs des privilèges sur les objets de base de données, vous pouvez leur accorder le privilège EXECUTE sur un package DB2.
- Révision facile des packages
- Puisqu'il est possible de créer plusieurs versions de chaque package DB2, vous pouvez redéfinir les accès aux packages
sans prendre le risque de perdre vos anciens chemins d'accès prioritaires.
- Prise en charge des connexions JDBC de type 2 lors de l'exécution d'applications pureQuery sous z/OS
- Le pilote JDBC de type 2 est une combinaison de code Java et de code natif, donc les connexions de type 2
sont généralement plus performantes que celles de type 4.
- Prise en charge de plateformes et d'infrastructures préfabriquées pour
le développement d'application d'accès aux données
- pureQuery Runtime prend en charge les plateformes et
infrastructures préfabriquées suivantes :
- Java
- Java Persistence API (JPA)
- Retour automatique
- Veille prolongée
- iBatis
Fonctions pour applications Java
activées avec optimisation client
pureQuery
Les applications qui n'utilisent pas l'API pureQuery peuvent bénéficier de l'optimisation client,
laquelle diffère des autres technologies prenant en charge l'exécution statique
d'instruction SQL sur une base de données DB2 :
- L'optimisation client pureQuery n'utilise pas de préprocesseur
tandis que le langage de programmation COBOL utilise un préprocesseur pour les instructions SQL
imbriquées.
- L'optimisation client pureQuery n'utilise pas de traducteur ou
de personnaliseur, contrairement au langage SQL pour Java.
- Il n'est pas nécessaire de coder les instructions SQL dans la source
d'une application.
Plutôt que de recourir à ces composants et ces changements de code,
l'optimisation client modifie l'interaction entre un pilote JDBC
et une application. L'optimisation client pureQuery
offre les fonctions suivantes :
- Stockage sécurisé des données pureQuery
- Les informations de configuration pureQuery, les données pureQueryXML incluant les données SQL utilisées par
pureQuery Runtime et les données SQL capturées peuvent être stockées à un emplacement sécurisé et rester accessibles au besoin
par pureQuery Runtime. pureQuery Runtime peut être configuré pour récupérer
les données pureQuery
à partir d'emplacements sécurisés. pureQuery Runtime
peut stocker dans un emplacement sécurisé les données SQL capturées à partir d'applications compatibles
avec pureQuery, qui utilisent l'optimisation client pureQuery.
- Prise en charge du registre spécial DB2
- Lors de la capture d'instructions SQL à partir d'une application, l'optimisation client pureQuery
contrôle les informations de registre spécial DB2 utilisées
par les instructions SQL. L'optimisation
client pureQuery enregistre les valeurs des registres spéciaux qui sont couramment utilisés et pourraient affecter le comportement
de l'instruction SQL. Dans certains cas, si la même instruction SQL est émise deux fois, le comportement de l'instruction peut être différent si une valeur de registre spécial a été modifiée entre sa première et sa deuxième exécution.
L'option de l'utilitaire de configuration pureQuery nommée optionsFileForBind peut générer un fichier d'options StaticBinder contenant des options de définition d'accès
basées sur les informations de registre spécial qui sont enregistrées avec les instructions SQL capturées. Le fichier d'options contient également des informations et des avertissements concernant les ensembles d'instructions, les instructions SQL et les informations du registre spécial dans le fichier pureQueryXML.
Les informations contenues dans le fichier vous aident
à spécifier un ensemble d'options d'association, si bien que lorsqu'une instruction SQL est exécutée à des fins statistiques, son comportement est identique à celui qu'elle a lorsqu'elle provient de l'application et s'exécute de façon dynamique. Lorsque vous associez les packages DB2
contenant les instructions SQL, spécifiez les options de définition d'accès à l'aide de l'utilitaire
pureQuery StaticBinder.
- Gestion facilitée des fichiers pureQueryXML
- Les fonctions suivantes vous aident à gérer les instructions SQL et les ensembles d'instructions SQL dans un fichier pureQueryXML :
- L'utilitaire Configure permet de trier les instructions SQL par texte dans
l'instruction SQL, par exemple par nom de table ou de colonne ou par utilisation du registre
spécial.
- L'utilitaire Configure permet d'effacer les instructions SQL d'un fichier pureQueryXML
si l'instruction n'a pas été émise par l'application pendant un nombre de jours spécifié. pureQuery Runtime
peut contrôler à quel moment une instruction SQL est émise par une application et
mettre à jour cette information dans le fichier pureQueryXML.
- L'utilitaire Configure permet de définir l'état des ensembles d'instructions avant ou après le traitement des fichiers pureQueryXML. Le statut des ensembles d'instructions
détermine si l'utilitaire de configuration essaie de modifier l'instruction.
- L'utilitaire Configure peut change l'emplacement de base de données et les noms de
schéma pour les instructions SQL dans des fichiers pureQueryXML.
- L'utilitaire StaticBinder peut gérer les instructions SQL dans un fichier pureQueryXML
lorsque le processus de liaison renvoie une erreur pour l'instruction. L'utilitaire
peut marquer l'instruction comme non valide ou la supprimer du fichier.
Si une instruction est marquée comme non valide, elle reste dans le fichier
mais n'est pas traitée comme une instruction pouvant être liée. L'utilitaire de configuration vous permet de modifier
cette instruction pour en faire une instruction valide qui peut être liée ou
même de la supprimer.
- Les utilitaires Configure, Merge et StaticBinder permettent de valider les schémas XML sur les fichiers d'entrée pureQueryXML.
- L'utilitaire ManageRepository peut générer un rapport répertoriant les
différences entre deux fichiers pureQueryXML. Vous pouvez facilement voir
les changements apportés à un fichier pureQueryXML mis à jour en le comparant
au fichier original.
Fonctions pour applications ODBC/CLI et .NET
L'interface de niveau d'appel (CLI) est une interface de programmation d'application C et C++ pour l'accès aux bases de données relationnelles. CLI utilise les appels de fonction pour transmettre les instructions SQL dynamiques en tant qu'arguments
de fonction. Les applications .NET
incluent des applications écrites dans n'importe lequel des langages basés sur .NET
(par exemple, C# ou VB.NET).
Après avoir activé l'optimisation client pureQuery
pour une application CLI ou .NET se connectant à une base de données
DB2 ou Informix, vous
pouvez contrôler les instructions SQL émises par l'application.
Par exemple,
si l'application se connecte à une base de données DB2, vous pouvez configurer l'application pour exécuter les instructions SQL de manière statique
pour la base de données. Vous pouvez contrôler les instructions SQL autorisées
à s'exécuter pour la base de données.
Les avantages de l'optimisation client
pureQuery
incluent :
- Exécution statique des instructions SQL sur les bases de données DB2
- Identification des problèmes à l'aide des instructions SQL avec fonction de traçage
jusqu'au code source de l'application.
- Remplacement des instructions SQL peu performantes par des instructions optimisées.
- Diminution des risques d'attaque par injection SQL grâce à l'exécution d'un ensemble limité d'instructions SQL.
Pour les applications CLI,
vous pouvez exécuter et valider les instructions SQL à l'aide de la commande DB2, db2cli.
Indiquez que les instructions SQL sont préparées mais non exécutées pour
valider les instructions SQL.
Vous pouvez capturer les instructions SQL exécutées ou validées
dans un fichier pureQueryXML.
Pour plus d'informations sur le développement d'application DB2 à l'aide de .NET, reportez-vous à la page ADO.NET application development (Développement d'une application ADO.NET).
Pour de plus amples informations sur le développement d'application
DB2 à l'aide d'une interface CLI, reportez-vous à la page Introduction to DB2 Call Level Interface and ODBC
(Introduction à l'interface CLI DB2 et à la connectivité ODBC).