Zusammenfassung der Features von pureQuery Runtime

pureQuery Runtime kann mit Java-Anwendungen verwendet werden. Darüber hinaus kann pureQuery Runtime auch mit DB2-ODBC/CLI- und Microsoft .NET-Anwendungen verwendet werden.

Features für Java pureQuery-API-Anwendungen

Zusätzlich zu Clientoptimierungsfeatures bietet pureQuery Runtime API-Features.

Für Anwendungen, die die pureQuery-API verwenden, bietet InfoSphere Optim pureQuery Runtime folgende Features:

Eine einzelne API, mit der Sie SQL-Anweisungen für Datenbanken, speicherinterne Objektgruppen und Iterator-Objekte ausführen können

Die Java-Plattform stellt eine Vielzahl von Datenstrukturen und APIs (Anwendungsprogrammierschnittstellen) für die Verarbeitung speicherinterner Objektgruppen sowie externer Daten aus verschiedenen Quellen bereit. Jedes dieser Features eignet sich perfekt zur Lösung eines bestimmten Problemtyps. pureQuery hat auch eine bestimmte Menge von Schnittstellen zum Abrufen und Modifizieren der Daten in den Objektgruppen. Beispielsweise stellt pureQuery eine API für Java-Arrays, -Listen, -Zuordnungen und -Iteratoren bereit. Jede API fragt die Daten in der Objektgruppe ab und aktualisiert sie in einigen Fällen.

In ähnlicher Weise ermöglicht die JDBC-API die Verwendung von SQL zum Zugriff auf relationale und andere JDBC-Objekte des Typs DataSource. Allerdings ermöglicht pureQuery es einer Anwendung, einzeln oder in Kombination mit einer einzigen anerkannten Abfragesprache auf alle diese Datenquellen zuzugreifen.

Ein einfaches Programmiermodell für den Datenzugriff
pureQuery wird in einer dünnen, auf JDBC aufgesetzten Schicht ausgeführt und vereinfacht Abfragen, Aktualisierungen, Aufrufe an gespeicherte Prozeduren und andere Tasks im Zusammenhang mit dem Zugriff auf Datenbanken. pureQuery wird unter Java 2 Platform, Standard Edition 5.0 (J2SE 5.0) und Java Platform, Standard Edition 6 (Java SE 6) ausgeführt.
Automatische Zuordnung von SQL-Daten mit geringem Entwicklereingriff zu Rückgabetypen
pureQuery stellt eine automatische Zuordnung zwischen SQL-Abfrageergebnissen und zurückgegebenen Objekten für viele Java-Objektmuster bereit. Für komplexe benutzerdefinierte Zuordnungen zwischen Abfrageergebnissen und Java-Objekten ermöglicht eine Plug-in-Schnittstelle Benutzerexits.

Sie können Beans erstellen und mit Annotationen versehen, die die Ergebnisse von SQL-Abfragen mit Tabellenjoins zurückgeben. Die Abfrageergebnisse werden als Gruppe von Beans zurückgegeben, die Instanzen anderer Beans enthalten. Die Hierarchie der Beans spiegelt die Eins-zu-eins- und Eins-zu-viele-Beziehungen der Abfrageergebnisse wider. Eine Abfrage könnte z. B. einen Join zwischen einer Mitarbeitertabelle und einer Abteilungstabelle enthalten. Die Abfrage gibt die Mitarbeiter zurück, die anderen Abteilungen zugeordnet sind. Die Ergebnisse werden als Gruppe von Abteilungsbeans zurückgegeben, wobei jede Instanz der Abteilungsbean eine Abteilung darstellt. Jede Abteilungsbean enthält eine Liste von Mitarbeiterbeans. Jede Instanz einer Mitarbeiterbean enthält Mitarbeiterinformationen.

Unterstützung der Entwicklung von SQL-Anwendungen, die mit Annotationen versehene Methoden und integrierte Methoden verwenden
Mit Annotationen versehene Methoden werden zum Definieren Ihrer eigenen Methoden in benutzerdefinierten Schnittstellen unterstützt. Sie erstellen Methoden mit Definitionen, die mit SQL-Anweisungen annotiert sind. Sie können Anwendungen entwickeln, die das DAO-Muster (Data Access Object - Datenzugriffsobjekt) einhalten, indem Sie unter Verwendung von mit Annotationen versehenen Methoden Datenzugriffsobjekte erstellen.

Integrierte Methoden werden unterstützt, sodass Sie die Methoden nutzen können, die in der von IBM zur Verfügung gestellten Schnittstelle Data definiert sind. Integrierte Methoden sind für Anwendungen hilfreich, die die Erstellung von SQL-Anweisungen während der Anwendungslaufzeit erfordern. Bei integrierten Methoden werden SQL-Anweisungen als Parameter in Methodenaufrufen übergeben. Dies ist dem in JDBC verwendeten Konzept vergleichbar.

Es wird Unterstützung für die Verwaltung von SQL-Anweisungen bereitgestellt, die SQL statisch ausgeführt werden. Sie können Ihren Code mit Annotationen versehen, um die SQL-Anweisungen zu gruppieren, die in einer Schnittstelle verwendet werden. Sie können den Bindeprozess für die Gruppen steuern. Sie können die Bindeoptionen steuern, die vom pureQuery-Dienstprogramm StaticBinder verwendet werden, und die Namen steuern, die für die Pakete generiert werden, die die SQL-Anweisungen enthalten.

Unterstützung von sowohl dynamischem als auch statischem SQL während der Laufzeit
pureQuery-Code kann dynamisches SQL mit einem Standard-JDBC-Treiber sowohl für eingebettetes SQL als auch für Ad-hoc-SQL verwenden, das erst bei der Ausführung bekannt wird.
pureQuery-Code kann auch statisches SQL verwenden, wenn der Code den Programmierstil mit Annotationsmethoden und DB2-Datenbanken verwendet. Statisches SQL hat die folgenden Vorteile:
Umgehung des Caches für dynamische Anweisungen
Die Verwendung von statischem SQL verringert die Konkurrenzsituationen für den DB2-Cache für dynamische Anweisungen und verbessert so die Leistung für Anwendungen, die dynamisches SQL verwenden.
Konsistenz von Zugriffspfaden
Statisches SQL macht Antwortzeiten vorhersehbar und stabil, indem es Zugriffspfade sperrt, bevor eine Anwendung ausgeführt wird. Im Gegensatz dazu werden Zugriffspfade für dynamisches SQL während der Laufzeit berechnet.
Mögliche Leistungsverbesserung bei Ihren Anwendungen
Statisches SQL kann die Leistung Ihrer Anwendungen steigern.
  • Da Zugriffspläne vor der Ausführung festgelegt werden, müssen SQL-Anweisungen nicht mehr während der Ausführung vorbereitet werden.
  • Da die einzelnen Anweisungen nicht vorbereitet oder beschrieben werden müssen, erfolgt zwischen Clientanwendungen und Datenbankservern ein geringerer Datenaustausch im Netz.
  • Statisches SQL erzwingt Datentypen für Hostvariablen oder Parameter, die in Vergleichselementen verwendet werden. Dadurch wird sichergestellt, dass die Eingabedaten den Zieltypen in der Datenbank entsprechen.
Größere Sicherheit
Sie können Benutzern das Zugriffsrecht EXECUTE für ein DB2-Paket mit Grant erteilen, anstatt ihnen Zugriffsrechte für Datenbankobjekte mit Grant zu erteilen.
Einfache Überarbeitung von Paketen
Die Erstellung mehrerer Versionen von DB2-Paketen ermöglicht es Ihnen, Pakete erneut zu binden, ohne das Risiko einzugehen, frühere bessere Zugriffspfade zu verlieren.
Unterstützung von JDBC-Typ-2-Verbindungen bei der Ausführung von pureQuery-Anwendungen unter z/OS
Da der JDBC-Typ-2-Treiber eine Kombination aus Java-Code und nativem Code ist, sind Typ-2-Verbindungen in der Regel leistungsstärker als Typ-4-Verbindungen.
Unterstützung für Plattformen und Frameworks für die Entwicklung von Datenzugriffsanwendungen
pureQuery Runtime unterstützt die folgenden Plattformen und Frameworks:
  • Java
  • Java Persistence API (JPA)
  • Spring
  • Hibernate
  • iBatis

Features für Java-Anwendungen mit aktivierter pureQuery-Clientoptimierung

Ihre Anwendungen, die die pureQuery-API nicht verwenden, können die Vorteile der Clientoptimierung nutzen. Diese Technologie unterscheidet sich in den folgenden Punkten von anderen Technologien, die die statische Ausführung von SQL in einer DB2-Datenbank unterstützen:
  • Die pureQuery-Clientoptimierung verwendet im Gegensatz zur Programmiersprache COBOL, die einen Vorprozessor für eingebettetes SQL verwendet, keinen Vorprozessor.
  • Im Gegensatz zu SQLJ verwendet die pureQuery-Clientoptimierung weder einen Umsetzer noch eine Anpassungsfunktion.
  • SQL-Anweisungen brauchen in der Quelle einer Anwendung nicht fest codiert zu sein.

Die Clientoptimierung erfordert weder diese Komponenten noch Änderungen am Code, sondern ändert die Interaktion zwischen JDBC-Treiber und Anwendung. Die pureQuery-Clientoptimierung bietet die folgenden Features:

Sichere Speicherung von pureQuery-Daten
pureQuery-Konfigurationsdaten, pureQueryXML-Daten, einschließlich der von pureQuery Runtime verwendeten SQL-Daten, und erfasste SQL-Daten können an einer sicheren Position gespeichert werden und pureQuery Runtime kann bei Bedarf auf diese Daten zugreifen. pureQuery Runtime kann so konfiguriert werden, dass die pureQuery-Daten von sicheren Speicherpositionen abgerufen werden. pureQuery Runtime kann die mit von pureQuery aktivierten Anwendungen erfassten SQL-Daten, die die pureQuery-Clientoptimierung verwenden, an einer sicheren Position speichern.
Unterstützung von DB2-Sonderregistern
Bei der Erfassung der SQL-Anweisungen von einer Anwendung verfolgt die pureQuery-Clientoptimierung die Informationen in den DB2-Sonderregistern, die von SQL-Anweisungen verwendet werden. Die pureQuery-Clientoptimierung zeichnet die Werte der Sonderregister auf, die häufig verwendet werden und sich auf das Verhalten der SQL-Anweisung auswirken können. Wenn dieselbe SQL-Anweisung zweimal abgesetzt wird, kann ihr Verhalten unterschiedlich sein, wenn der Wert eines Sonderregisters zwischen dem ersten und zweiten Absetzen der Anweisung geändert wurde.

Die Option -optionsFileForBind des pureQuery-Dienstprogramms Configure kann eine StaticBinder-Optionsdatei mit Bindeoptionen auf der Grundlage der Sonderregisterinformationen generieren, die mit den erfassten SQL-Anweisungen aufgezeichnet werden. Die Optionsdatei enthält außerdem Informationen und Warnungen zu den Anweisungsgruppen, SQL-Anweisungen und Sonderregisterinformationen in der pureQueryXML-Datei.

Mithilfe der Informationen in der Datei können Sie eine Gruppe von Bindeoptionen angeben, sodass das Verhalten einer SQL-Anweisung bei der statischen Ausführung ihrem Verhalten bei einer dynamischen Ausführung über eine Anwendung vergleichbar ist. Sie geben Bindeoptionen mit dem pureQuery-Dienstprogramm StaticBinder an, wenn Sie DB2-Pakete binden, die SQL-Anweisungen enthalten.

Einfache Verwaltung von pureQueryXML-Dateien
Die folgenden Funktionen ermöglichen Ihnen die Verwaltung von SQL-Anweisungen und -Anweisungsgruppen in einer pureQueryXML-Datei:
  • Das Dienstprogramm Configure kann SQL-Anweisungen nach dem Text in der SQL-Anweisung, beispielsweise nach den Tabellen- oder Spaltennamen, oder nach der Verwendung der Sonderregister gruppieren.
  • Das Dienstprogramm Configure kann SQL-Anweisungen aus einer pureQueryXML-Datei löschen, wenn die Anweisung von der Anwendung eine bestimmte Anzahl Tage lang nicht abgesetzt wurde. pureQuery Runtime kann protokollieren, wann eine SQL-Anweisung von einer Anwendung ausgegeben wurde und diese Informationen in der pureQueryXML-Datei aktualisieren.
  • Das Dienstprogramm Configure kann den Status von Anweisungsgruppen vor der Verarbeitung der pureQueryXML-Dateien oder nach der Verarbeitung festlegen. Über den Status der Anweisungsgruppen wird gesteuert, ob das Dienstprogramm Configure versucht, die Anweisung zu modifizieren.
  • Das Dienstprogramm Configure kann Schemanamen und Namen von Speicherpositionen von Datenbanken für SQL-Anweisungen in pureQueryXML-Dateien ändern.
  • Das Dienstprogramm StaticBinder kann SQL-Anweisungen in einer pureQueryXML-Datei handhaben, wenn der Bindeprozess einen Fehler für die Anweisung zurückgibt. Das Dienstprogramm kann die Anweisung als ungültig markieren oder aus der Datei entfernen. Wenn die Anweisung als ungültig markiert ist, verbleibt sie in der Datei, wird aber nicht als Anweisung verarbeitet, die gebunden werden kann. Mit dem Dienstprogramm Configure können Sie die Anweisung in eine gültige Anweisung oder in eine Anweisung, die gebunden werden kann, ändern oder eine ungültige Anweisung entfernen.
  • Die Dienstprogramme Configure, Merge und StaticBinder können die XML-Schemaprüfung für pureQueryXML-Eingabedateien durchführen.
  • Das Dienstprogramm ManageRepository kann einen Bericht generieren, der die Unterschiede zwischen zwei pureQueryXML-Dateien auflistet. Sie können die an einer aktualisierten pureQueryXML-Datei vorgenommenen Änderungen auf einfache Weise anzeigen, indem Sie diese Datei mit der ursprünglichen Datei vergleichen.

Features für ODBC/CLI-Anwendungen und .NET-Anwendungen

CLI (Call Level Interface - Befehlszeileninterpreter) ist eine C- und C++-Anwendungsprogrammierschnittstelle für den Zugriff auf relationale Datenbanken. CLI übergibt mithilfe von Funktionsaufrufen dynamische SQL-Anweisungen als Funktionsargumente. .NET-Anwendungen umfassen Anwendungen, die in einer beliebigen .NET-basierten Sprache geschrieben wurden, beispielsweise C# und VB.NET.

Nachdem Sie die pureQuery-Clientoptimierung für eine CLI- oder .NET-Anwendung aktiviert haben, die eine Verbindung zu einer DB2-Datenbank oder zu einer Informix-Datenbank herstellt, können Sie die von der Anwendung abgesetzten SQL-Anweisungen steuern. Wenn die Anwendung beispielsweise die Verbindung zu einer DB2-Datenbank herstellt, können Sie die Anwendung so konfigurieren, dass SQL-Anweisungen für die Datenbank statisch ausgeführt werden. Sie können die SQL-Anweisungen steuern, die für die Datenbank ausgeführt werden dürfen.

Die pureQuery-Clientoptimierung bietet unter anderem die folgenden Vorteile:
  • Statische Ausführung von SQL-Anweisungen für DB2-Datenbanken.
  • Diagnose von Problemen mit SQL-Anweisungen mithilfe von Funktionen für die Rückverfolgung zum Anwendungsquellcode.
  • Ersetzen von SQL-Anweisungen mit geringer Leistung durch optimierte Anweisungen.
  • Verringern des Risikos von SQL-Injection-Attacken durch Ausführung einer eingeschränkten Gruppe von SQL-Anweisungen.

Bei CLI-Anwendungen können Sie SQL-Anweisungen mit dem DB2-Befehl db2cli ausführen und prüfen. Sie können angeben, dass in der Datei enthaltene SQL-Anweisungen vorbereitet aber nicht ausgeführt werden, sodass sie geprüft werden können. Sie können die ausgeführten oder geprüften SQL-Anweisungen in einer pureQueryXML-Datei erfassen.

Weitere Informationen zur Entwicklung von DB2-Anwendungen mit .NET finden Sie im Abschnitt zur Entwicklung von ADO.NET-Anwendungen.

Weitere Informationen zur Entwicklung von DB2-Anwendungen mit CLI finden Sie im Abschnitt zur Einführung in DB2-CLI und -ODBC.


Feedback