Das neue Release von DB2 für Unix, Linux und Windows hat die Nummer 9.7 und trägt den Decknamen Cobra.
Nachdem die IBM zuvor von 9.1 auf 9.5 statt wie üblich auf 9.2 gesprungen war, um die Neuerungen im letzten Release zu unterstreichen, kann die neue Release-Nummer nur so verstanden werden, dass die jetzigen Verbesserungen und Erweiterungen die Version 9 abrunden, aber keineswegs so weitreichend sind, dass eine neue Versionsnummer vergeben werden müsste.
Dieser Artikel gibt einen Überblick über die neuen Funktionalitäten von DB2 V9.7, die Änderungen gegenüber den bisherigen Versionen sowie jene Funktionalitäten, die nicht mehr weiter entwickelt werden oder wegfallen. Der Leser kann sich dann auch ein Bild machen, ob die Mitbewerber von DB2 die Giftzähne der Schlange fürchten müssen.
Der Überblick kann selbstverständlich nicht alle neuen oder verbesserten Funktionalitäten von Release 9.7 enthalten. Der Autor hat hier eine willkürliche Auswahl vorgenommen und diese danach gewichtet, was ihm aus seiner praktischen Erfahrung heraus wichtig erschien.
Kompatibilität zu Oracle
Im Blickpunkt steht beim neuen Release die Kompatibilität zu Marktführer Oracle. Daher sind die Erweiterungen der SQL-Sprache darauf ausgerichtet, die proprietäre SQL-Syntax von Oracle zu unterstützen. Auch die Erweiterungen der SQL-Prozedursprache (SQL PL – SQL Procedure Language) zielen auf Kompatibilität zu Oracles PL/SQL. Die IBM verspricht sich davon offensichtlich die Gewinnung von Marktanteilen, weil sie so die Portierung bestehender Anwendungen von Oracle nach DB2 erleichtert.
Die Kompatibilität zu Oracle kann durch die Umgebungsvariable (Registrierungsvariable) DB2_COMPATIBILITY_VECTOR aktiviert werden. Dabei kann auch selektiert werden, welche Funktionalitäten von Oracle unterstützt werden sollen, zum Beispiel nur die Datentypen, die Dictionary-Views oder PL/SQL-Syntax oder alle.
Um das Daten-Management kompatibler zu Oracle zu machen, können jetzt auch die (proprietären) Datentypen NUMBER und VARCHAR2 benutzt werden. Der Datentyp DATE – in DB2 normalerweise bestehend aus Jahr, Monat und Tag – kann als TIMSTAMP(0) bestehend aus Datum und Uhrzeit (Stunden, Minuten, Sekunden) interpretiert werden.
Die DB2-Kataloginformationen werden durch neue Datensichten wie in den Sichten auf das Oracle Data Dictionary präsentiert.
Ein CLPPlus-Prozessor ist als neuer interaktiver Kommandozeilen-Prozessor für SQL-Befehle und DB2-Kommandos verfügbar. Der Prozessor ist kompatibel zu Oracles SQL*Plus und unterstützt dynamisches Erstellen, Editieren und Ausführen von SQL-Befehlen und Skripten.
Ein wesentlicher Punkt in der Kompatibilität zu Oracle ist die Unterstützung von PL/SQL mit seiner Syntax, seiner Modul-Struktur (Packages, Procedures, Procedure Bodies) und seiner Bibliothek mitgelieferter Standard-Prozeduren und –Funktionen. Hier decken die DB2-Erweiterungen den größten Teil der Funktionalitäten ab.
Bild 1: So funktioniert die PL/SQL-Unterstützung in DB2.
Optimierung des Ressourcenverbrauchs
Abgesehen von den Erweiterungen zur Oracle-Kompatibilität enthält DB2 V9.7 Verbesserungen und Ergänzungen zu jenen Funktionalitäten, die in den letzten Versionen 9.1 und 9.5 eingeführt worden sind, zum Beispiel zu pureXML, zum Workload Manager WLM und zur Datenkompression. Die Ziele dieser Maßnahmen sind die Optimierung des Ressourcenverbrauchs, die Verbesserung von Durchsatz und Performance sowie Erleichterungen in der Anwendungsentwicklung.
Datenkompression
DB2 V9.7 enthält neue Funktionalitäten zur Datenkompression, die die Speicheranforderungen weiter reduzieren, die I/O-Effizienz verbessern und schnellen Zugriff auf die Daten des Plattenspeichers bieten.
Neu eingeführt wird die Kompression von Indizes. Für bestehende Indizes kann die Komprimierung manuell eingeschaltete werden. Für komprimierte Tabellen ist die Index-Kompression zukünftig Standard.
Ebenfalls komprimiert werden können jetzt temporäre Tabellen und XML-Daten: Temporäre Tabellen werden automatisch komprimiert, um die Speicherkosten zu reduzieren. XML-Daten in einem XML-Speicherobjekt einer Tabelle können nun auch komprimiert werden. Bisher konnten nur die Tabellenzeilen in einem Tabellenobjekt komprimiert werden.
Die Datenreplikation erlaubt komprimierte Daten als Quelle einer Replikation. Die Optionen COMPRESS YES und DATA CAPTURE CHANGES sind nun miteinander verträglich und können zusammen angegeben werden.
Der Anwender hat eine zusätzliche Speicherwahl für die Ablage von großen Objekten (LOBs) in Abhängigkeit ihrer Größe. Wenn er LOB-Spalten zu einer Tabelle hinzufügt oder eine bestehende ändert, kann er diese LOBs in die Zeilen der Basistabelle statt in das LOB-Speicherobjekt legen.
Performance-Verbesserungen
In Ergänzung zu der in 9.1 eingeführten Partitionierung von Tabellen (Range Partitioning) können in 9.7 Indizes über partitionierten Tabellen ebenfalls partitioniert werden. Bisher waren nur nicht-partitionierte (globale) Indizes möglich. Ein Index über eine einzelne Datenpartition ist eine Index-Partition, die Menge der Index-Partitionen ist ein partitionierter Index.
Bild 2: Erleichterter Roll-in mit partitioniertem Index.
DB2 V9.7 enthält einige interne Verbesserungen für den konkurrierenden Zugriff auf die Daten: 2: Verbesserungen des Sperrprotokolls CS (Cursor Stability) erlauben mehr Durchsatz: Das Sperrprotokoll CS kann mit currently committed semantics Wartezeiten und Blockierungen (deadlocks) durch Sperren reduzieren. Damit wartet eine Leseoperation nicht mehr grundsätzlich darauf, dass die Änderung einer Zeile freigegeben wird, sondern liefert den zuletzt freigegeben Inhalt zurück. Dies gilt nicht für ändernde Cursor. Durch das geänderte Sperrprotokoll wird mehr Platz für die Log-Dateien benötigt, um die zuletzt freigegebene Version einer in Änderung befindlichen Zeile zu ermitteln. Es ist der neue Standard für neu eingerichtete Datenbanken.
Bild 3: Wie das Sperrprotokoll CS mit currently committed die Log-Dateien nutzt.
Der Befehlskonzentrator ermöglicht die gemeinsame Nutzung desselben Zugriffsplans für SQL-Befehle, die bis auf die Werte von Literalen identisch sind. Damit wird die Wiederverwendung übersetzter SQL-Befehle gesteigert und es werden die Zeiten für das wiederholte Übersetzen (PREPARE) fast identischer SQL-Befehle eingespart.
Die neue Funktion Scan Sharing bietet mehrfachen sequentiellen Lese-Vorgängen (Scans) die Möglichkeit, die gemeinsame Benutzung der Bufferpool-Blöcke (Pages) zu koordinieren und so möglicherweise I/Os durch das Rückhalten von Bufferpool-Blöcken zu reduzieren. Dadurch werden Durchsatz und Performance verbessert.
Optimierungsrichtlinien für Packages können leichter eingesetzt werden: Mit dem neuen Befehl ALTER PACKAGE kann ein Optimierungsprofil einem Package ohne BIND-Operation zugeordnet werden.
Die Wiederverwendung von Zugriffsplänen sichert eine konsistente Performance: Von DB2 V9.7 an kann der Query Compiler Zugriffspläne für statisches SQL wieder benutzen. Wenn der Anwender die Wiederbenutzung einschaltet (per Parameter APREUSE oder ALTER PACKAGE), wird die Abfrage mit voraussagbarer Performance über Versions-Upgrades, Änderungen der Katalog-Statistiken oder einiger Konfigurationsparameter hinweg ausgeführt. Mit der eingeschalteten Wiederbenutzung bleibt der Zugriffsplan gleich.
Die Optimierungstechnik Predicate Pushdown für frühe Datenfilterung und bessere Indexnutzung wird nun auch in XQuery eingesetzt.
Erweiterungen im Workload Management und Monitoring
Das in V9.5 eingeführte Workload Management (WLM) wird in 9.7 weiter ausgebaut. Es wurden neue Schwellwerte und Schwellwert-Aktionen zur besseren Steuerung von Anwendungsaktivitäten eingeführt. Das Prüfintervall für zeitgesteuerte Schwellwerte wurde auf 1 Minute herabgesetzt. Langlaufende Aktivitäten können mit der Laufzeit in ihrer Priorität heruntergestuft werden. Der Durchsatz von kurz laufenden Aktivitäten kann dadurch verbessert werden.
Über die I/O-Priorität von Bufferpools kann gesteuert werden, wie schnell Pages, die für Aktivitäten einer Service-Klasse gelesen wurden, wieder ausgelagert werden. Pages von Aktivitäten mit niedriger Priorität werden wahrscheinlich schneller ausgelagert als Pages von Aktivitäten, deren Service-Klasse eine höhere I/O-Priorität besitzt. Damit wird der Einfluss von Last mit niedriger Priorität auf die Last mit hoher Priorität reduziert.
Unter Linux kann der Verbrauch an Prozessor-Ressourcen auch über die Linux-Workload-Klassen gesteuert werden (ab Linux Kernel 2.6.26).
DB2 V9.7 enthält viele Verbesserungen, die es erleichtern, DB2-Umgebungen zu überwachen. Dazu wurden neue Monitor-Elemente (Messpunkte) für Datenbankmanager, Datenbank-Objekte und den Package-Cache eingeführt. Die Überwachung des Package-Cache wurde auch auf statisches SQL ausgedehnt. Neue effizientere Ereignis-Monitore für Sperr-Ereignisse (Locks, Deadlocks) und Transaktionen verbessern die Problemanalyse.
Sicherheit
Aufbauend auf den Erweiterungen im vorherigen Release sorgen die neuen Sicherheitsverbesserungen dafür, dass sensitive Daten besser geschützt werden können.
DB2 V9.7 teilt klarer die Aufgaben des System-, Datenbank-Administrators und des Sicherheitsadministrators auf und führt neue Autorisierungen ein, um einem Benutzer nur die für seine Arbeit nötigen Berechtigungen zu erteilen. Die Verbesserungen machen es leichter, die internationalen gesetzlichen Vorgaben einzuhalten.
Die Berechtigungen des Systemadministrators (SYSADM) wurden reduziert. Die Berechtigungen des Datenbank-Administrators (DBADM) wurden geändert und restrukturiert. DBADM muss nicht mehr auch das Recht für den Datenzugriff beinhalten. Die Berechtigungen des Sicherheitsadministrators (SECADM) wurden dagegen weiter ausgebaut. SECADM kann jetzt auch an Rollen vergeben werden.
Die Benutzer-IDs und Passwörter können nun mit dem 256-Bit-Algorithmus nach AES (Advanced Encryption Standard) verschlüsselt werden. Die Passwörter können die maximale Länge haben, die das Betriebssystem erlaubt.
Verbesserungen für die Anwendungsentwicklung
Die Verbesserungen für die Anwendungsentwicklung umfassen neue Funktionen und Erweiterungen, die die Entwicklung von Datenbank-Anwendungen vereinfachen, ihre Portabilität verbessern und ihren Einsatz (Inbetriebnahme) vereinfachen. Außerdem wurde die XML-Unterstützung pureXML ausgebaut.
Erweiterung von pureXML
IBM verspricht mit dem Ausbau von pureXML, der hybrid-relationalen Datenbank, die Verarbeitung von XML-Daten flexibler, schneller und zuverlässiger zu machen. Einige Einschränkungen wurden aufgehoben. Zum Beispiel: XML-Daten können nun in Multi-Partitionsdatenbanken mit pureXML verwaltet werden. Die Beschränkungen bezüglich MDC -Tabellen, temporärer Tabellen und benutzerdefinierter Funktionen wurden beseitigt.
Außerdem können XML-Daten in partitionierten Tabellen enthalten sein und von den Funktionen des Roll-in und Roll-out profitieren. Abfragen auf die so gespeicherten XML-Daten profitieren auch von den Performance-Vorteilen durch Partitionsausschluß wie die Abfragen auf relationale Daten.
Wichtige Verbesserungen für die Anwendungsentwicklung
Von den vielen einzelnen Verbesserungen, die die Anwendungsentwicklung betreffen, folgen hier einige wichtige:
Für zahlreiche Objekte wird mit der Befehlsformulierung CREATE OR REPLACE ein vorsorglicher DROP-Befehl überflüssig.
Mit „weicher“ Invalidierung wird ein Objekt dynamisch ohne exklusive Sperren invalidiert (zum Beispiel Mit CREATE OR REPLACE), während laufende Aktivitäten mit der alten Objektversion noch ausgeführt werden können. Wird das Objekt wieder angelegt, arbeiten neue Aktivitäten automatisch mit der neuen Version.
In DB2 V9.7 wird die implizite Datentypkonvertierung eingeführt. Automatisch wird ein Datentyp in einen anderen basierend auf einem Satz von vorgegebenen Konvertierungsregeln überführt. Damit unterstützt DB2 „weak typing“ (schwache Typisierung).
Der Datentyp TIMESTAMP kann nun parametrisiert werden, um die Genauigkeit der Sekundenbruchteile vorzugeben. Der Bereich reicht von 0 (nur Sekunden) bis 12 (Picosekunden).
DB2 V9.7 enthält den neuen Befehl TRUNCATE, mit dem alle Zeilen einer Datenbank-Tabelle schneller gelöscht werden können.
Es gibt eine neue Art von temporären Tabellen, deren Definitionen zentral im DB2-Katalog hinterlegt sind. (Erstellen mit Befehl CREATE GLOBAL TEMPORARY TABLE)
DB2 V9.7 bietet eine Technik, einen Befehlsblock auszuführen und unabhängig vom Ergebnis der aufrufenden Transaktion festzuschreiben. Diese Technik wird autonome Transaktion genannt und schließt ein, dass die Arbeit aufgerufener Blöcke festgeschrieben wird, obwohl die aufrufende Transaktion selbst zurückgerollt wird.
Erweiterungen von SQL Procedural Language (SQL PL)
DB2 V9.7 enthält Verbesserungen für SQL PL (SQL Procedural Language). Dazu gehören unter anderem:
-
Das neue Datenbank-Objekt Modul vereinfacht Datenbank-Entwurf und Anwendungsentwicklung, indem es die Zusammenfassung von zusammengehörigen Definitionen für Datentypen und Datenbank-Objekte, Routinen-Prototypen, Routinen und andere logische Element in einer benannten Menge in einem Schema ermöglicht.
-
Neue systemdefinierte Modul-Routinen bieten eine leicht zu nutzende Programmierschnittstelle zur Durchführung für eine Vielfalt von Aufgaben in der Anwendungsentwicklung.
-
Die Unterstützung von SQL PL in Triggern und benutzerdefinierten Funktionen wurde erweitert.
Verbesserungen in Administration und Handhabung
Weiterhin gibt es eine Reihe von Verbesserungen, die die Administration und Handhabung von DB2 vereinfachen. Unter anderem wurde die Platz-Wiedergewinnung in DMS-Tablespaces und bei MDC-Tabellen vereinfacht, Log-Dateien zur Fehlerdiagnose werden nun im Rotationsverfahren benutzt, und die Handhabung der automatischen Speicherverwaltung (automatic storage) verbessert.
Veraltete und weggefallene Funktionalitäten
Während üblicherweise die neuen und verbesserten Funktionen im Mittelpunkt stehen, sollte ein Blick auf weggefallene und veraltete Funktionalitäten und Werkzeuge nicht vergessen werden. Auch hier bietet DB2 V9.7 einige wichtige Änderungen.
Funktionalitäten gelten als veraltet, wenn sie im derzeitigen Release noch unterstützt, aber in einem zukünftigen entfernt werden. In diesen Fällen ist es ratsam, ihre Nutzung auslaufen zu lassen.
Zu den wichtigsten Abkündigungen gehören:
-
DB2 Govenor und Query Patroller werden nicht mehr unterstützt.
-
Auch die Control Center-Werkzeuge (Steuerzentrale), der Health Monitor und der dafür benötigte Administrationsserver (DAS) sollen zukünftig entfallen.
-
Ebenfalls abgekündigt worden die LONG-Datentypen (LONG VARCHAR, LONG VARGRAPHIC).
-
Weggefallen sind der XML-Extender, der durch pureXML ersetzt wurde, und Indizes vom Typ-1.
Fazit
Die eigenständigen Erweiterungen des Release 9.7 runden die Version 9 ab. Neuerungen aus den Releases 9.1 und 9.5 wurden verbessert und vervollständigt. Und so gesehen ist das neue DB2 weiterhin ein interessantes, vollständiges und sehr leistungsfähiges Produkt auf dem Datenbank-Markt für Unix, Linux und Windows.
Ob die neue Ausrichtung an dem Marktführer Oracle die erhofften Vertriebserfolge für DB2 bringen wird, wird die nächste Zeit zeigen. Es ist vieles Oracle-kompatibel geworden, aber nicht alles, was der Autor an Oracle-Code (SQL oder PL/SQL) getestet hat, lief ohne Anpassungen mit V9.7.
Wie sich die Werkzeug-Landschaft um DB2 herum entwickeln wird, ist nach der Abkündigung der derzeitigen Standard-Werkzeuge auch noch offen. IBM fördert im Moment das Open Source Projekt des DB2 Technology Explorer ( ehemals Monitoring Console). Dieses PHP-basierte Werkzeug ist aber kein vollwertiges Administrationswerkzeug. Der Autor glaubt, dass sich hier – den erhofften Vertriebserfolg vorausgesetzt – ein interessanter Markt für Dritt-Anbieter öffnen könnte.
Dipl.-Ing. Dipl.-Ök. Heinz Axel Pürner ist Inhaber der Pürner Unternehmensberatung – Ingenieurbüro für Informationstechnologie – in Dortmund.