Vom Umgang mit XML-Dokumenten in relationalen und objektrelationalen Datenbanken

XML zwischen Shreddern und CLOBs

Michael Matzer

XML spielt eine bedeutende Rolle im Enterprise Content Management. Zunehmend wird es aber auch in der Integration von Geschäftsanwendungen wichtig. Die optimale Speicherung und Verarbeitung von XML haben sich die drei Datenbankhersteller Oracle, IBM und Microsoft in ihren neuesten Produkten auf die Fahnen geschrieben.

In der IT-Welt begann XML als ein universell einsetzbares Datenformat für strukturierte Dokumente und halbstrukturierte Daten, doch inzwischen wird es nicht nur im Content Management eingesetzt, sondern auch im Datenaustausch zwischen Geschäftsanwendungen. Anfangs ließ sich damit die Darstellung eines Dokuments von seinem Inhalt trennen, vor allem für Webseiten. Inzwischen wird XML als eine „lingua franca“ für die lose Kopplung von Anwendungen eingesetzt, denn es ist leicht zu implementieren, einfach zu handhaben und wird fast universell unterstützt. In der Web-Services-Technologie und in serviceorientierten Architekturen (SOAs) spielt es eine wesentliche Rolle.

Während sich XML in Microsoft Office und anderen Standard-Software-Paketen leicht erzeugen lässt, verhält es sich mit seiner Speicherung, der Verwaltung und dem Einsatz in Anwendungen ein wenig anders. Natürlich lassen sich XML-Dokumente im Dateisystem ablegen und dementsprechend mit den verfügbaren Suchmechanismen auffinden. Doch wie sieht es mit der Indizierung und dem Abfragen von internen Werten in XML-Dokumenten aus? Wie kann ein Unternehmen sicherstellen, dass wohlgeformtes XML stets nach einem genehmigten Schema erzeugt wird? Und kann dies alles mit vertretbarem Aufwand an Zeit und Kosten erledigt werden? Gerade in dieser Hinsicht können Engpässe auftreten, wenn es um die rasche Verarbeitung von XML geht. Die Abläufe des Parsings, Speicherns, Abfragens und Transformierens belasten die Verarbeitungskapazität eines Systems beträchtlich.

Im XML-Verarbeitungsprozess können Engpässe auftreten

Die inzwischen allgemein verbreitete Antwort auf diese Problematik besteht in leistungsfähigen Datenbanken, die für die Unterstützung von XML erweitert wurden. Dieser Modernisierungsprozess ist noch nicht abgeschlossen, wie das Beispiel der Version 9 von IBM DB2 zeigt. Der vorliegende Beitrag soll zeigen, wie unterschiedlich XML in den Datenbanken von Microsoft, IBM, Oracle, Sybase, Teradata, SAS, Software AG und InterSystems unterstützt wird. Die Frage nach dem Grad, wie weit dieser Support geht, zeigt deutliche Unterschiede auf. Indem die Differenzen beleuchtet werden, soll der Beitrag dem Interessenten helfen, diejenige Wahl zu treffen, die ihm am geeignetsten erscheint. Der Text wird durch die Angaben in Tabelle 1 ergänzt.

Methoden des Speicherns von XML

Bekanntlich besteht ein XML-Dokument nicht aus durchlaufendem Text, sondern aus einer Hierarchiestruktur, die man sich als Baum mit Verästelungen vorstellen kann. Die einzelnen Abschnitte werden genau bezeichnet und mit entsprechend formatierten Inhalten gefüllt. Es wäre optimal, könnte man beim Parsen und Speichern diese feine Struktur bis hinunter zu den Einzelelementen erhalten, wie sie ist. Doch in den vergangenen Jahren war dies nicht immer der Fall. Vielmehr zerlegten relationale Datenbanken, die den Löwenanteil dieses Marktes bestreiten, ein XML-Dokument in seine Einzelteile und speicherten diese in relationalen Einheiten von Spalten und Zeilen. Dabei wird der Zusammenhalt, der Kontext beseitigt. Die Rekonstruktion des Originaldokuments ist schwierig. Sinnvoll ist dieses Verfahren des Shreddings weiterhin dann, wenn die in XML enthaltenen Daten im Format FIXML oder FpML empfangen werden, also in finanziellen Transaktionen.

Es gibt mittlerweile zwei Alternativen. Beim ersten Verfahren wird ein (Binary oder Character) Large Object (abgekürzt BLOB oder CLOB) erzeugt und das Dokument bleibt mit intakter Struktur und Integrität erhalten. Dieses Verfahren erfordert jedoch in der Regel eine separate Datenbanktechnik innerhalb der relationalen Datenbank. So ist diese etwa in Oracle 10g R2 als XML DB zu finden. Oder man entwickelt wie die Software AG eine Datenbank, die wie „Tamino“ nur dieses Verfahren unterstützt, aber mit anderen Datenbanken wie Adabas eng zusammenarbeitet, die andere Verfahren nutzen. Ein weiterer Ausweg besteht darin, XML zu einem Datentyp oder Objekt zu erklären, sodass die SQL-Abfragesprache dieses erkennt und entsprechend behandelt. Diesen Weg haben Oracle und Microsoft beschritten. Ein fünfter Ansatz besteht in der Speicherung im Dateisystem. Sybase und inzwischen auch IBM mit DB2 v9 unterstützen mehrere und sogar hybride Speicherformen. Dies lässt dem Anwender die Freiheit zu wählen, welche Dokumente wie behandelt werden sollen. In jedem Fall muss die Möglichkeit bestehen, einen anpassbaren Index anzulegen, damit die Suche in den XML-Dokumenten mit vertretbarem Zeitaufwand vonstatten geht. Ausgefeilte Datenbanken bieten mehrere Indizierungsmöglichkeiten an, bis hin zum Volltextindex, und zwar auch für Non-XML-Dokumente.

Backup und Restore für XML-Datenbanken

Um die Sicherheit der geschäftskritischen XML-Dokumente zu gewährleisten, muss eine solche Datenbank effiziente Backup- und Restore-Mechanismen bereitstellen. Dafür werden entweder interne Mechanismen genutzt oder externe SAN-Produkte. Häufig lassen sich Datenbankserver spiegeln, sodass im Fall der Fälle ein Ersatzsystem bereitsteht, so etwa auch in einem Cluster. Auch Replikation spielt eine wichtige Rolle, besonders natürlich in verteilten Architekturen. IBM bietet sowohl SQL-basierte Replikation als auch die Methode der Warteschlange (Queue) an. Der Vorteil bei letzterer Methode ist die sofortige Sicherung aktueller Inhalte, sodass bei einem Ausfall fast nichts verlorengeht. Der Nachteil besteht in einer höheren Belastung des Netzwerks.

Abfragetechnik und Zugriff

Es ist völlig normal in der Nutzung einer Datenbank, wenn man die Abfrage formuliert: „Nenne mir alle unsere Lieferanten, die auch Abnehmer sind und in den letzten drei Quartalen Produkte von uns gekauft haben.“ Im Zusammenhang mit der Börse könnte man die Datenbank fragen, ob Mengen einer Aktie, die über das übliche Maß in einem bestimmten Zeitraum hinausgehen, gekauft wurden und falls ja, von wem. Es sind also aus einem bestimmten Datenbestand Extrakte zu beschaffen. Sind Artikel- oder Kundennummern bekannt, so lässt sich damit die Suche beschleunigen, besonders über einen entsprechenden Index. Eine dritte Form der Abfrage bezieht Extrakte aus mehreren XML-Dokumenten und aggregiert sie in einem Ergebnis, das in XML-Form geliefert wird.

Das bedeutet zunächst die Suche nach den gewünschten Daten in XML-Dokumenten. In relationalen Datenbanken wird dazu eine erprobte Suchalgebra in der Sprache Structured Query Language (SQL) eingesetzt, doch für XML sind weitere Fähigkeiten nötig. Hierfür hat das W3C die Standards XPath und XQuery empfohlen. Mit XQuery ist es möglich, auch XML-Spalten abzufragen. Sie werden von fast allen Datenbanken in der Übersichtstabelle unterstützt. Die Ausnahmen sind SAS, Teradata und InterSystems Caché.

In der Regel ist es möglich, in der gleichen Datenbank auch SQL anzuwenden, unter Umständen mit individuellen Erweiterungen. Manche Datenbank unterstützt auch das Hybrid SQL/XML (SQL 2003 Teil 14), so etwa Oracle seit der Version 9i R2. Eine Datenbank wie Sybase ASE bietet Support für alle vier Methoden. Nur Tamino und Oracle stellen bereits weitgehende FLWOR-Sortierfunktionen in XQuery bereit (FLWOR bedeutet „For Let Where Order by Return“). Weil XQuery für den Neuling nicht besonders intuitiv zu handhaben ist, sind Werkzeuge wie IBMs XQuery Builder besonders willkommen, um den Einstieg zu erleichtern. Laut IBM lassen sich damit auch relativ komplexe Abfragen formulieren.

ASE mit komplizierter XML-Verarbeitung bez. Architektur, aber hoher Flexibilität
Transformation, Mapping und Erzeugung von XML

Nun gilt es noch das Abfrageergebnis in dasjenige Format umzuwandeln, das die Zielanwendung benötigt. Diese ist häufig keine weitere Datenbank, sondern eine betriebswirtschaftliche oder eine Office-Anwendung. An dieser Stelle kann es nötig sein, Mappings – also Datenwertzuweisungen – vorzunehmen. Es zeichnet eine Datenbank besonders aus, wenn sie diesen Vorgang möglichst automatisierbar macht. DB2 und Caché beispielsweise erlauben die Serialisierung von XML-Datentypen in den String-Datentyp (DB2) bzw. in ein beliebiges anderes Objekt (Caché). DB2 v9 stellt mit der Funktion XMLNAME-SPACES den Zugriff auf Attributnamen und Elementtypen bereit. Damit kann der Nutzer tief in ein XML-Dokument eingreifen, um bestimmte Elemente zu bearbeiten.

Literatur zum Thema
* Rudolf Jansen: „Das SQL des 21. Jahrhunderts – Eine Einführung in XQuery“, in: XML & Web Services Magazin 2.05, S. 28 ff.
* Interview mit Dave Chappell: „XQuery wird zukünftig an jeder Stelle der SOA des Unternehmens möglich sein“, in: XML & Web Services Magazin 4.05, S. 11 ff.

Vielfach lässt sich für die Transformation ein XSLT-Prozessor einsetzen. Doch nicht jeder Hersteller liefert ihn auch mit. In Oracle und Tamino ist er bereits integriert, doch in Sybase ASE und Teradata muss ein externer Prozessor angekoppelt werden, z.B. via Java. Stylesheets wie in XSLT (Extensible Stylesheet Language Transformations) werden benutzt, um XML-Dokumente in viele verschiedene Präsentationsformate wie EDI, HTML, PDF und Wireless Markup Language (WML) für mobile Geräte umzuwandeln. Um keine fehlerhaften Dokumente zu erzeugen, müssen sie gemäß einem vorgegebenen XML-Schema geformt und anschließend validiert werden. Dies vermindert das Risiko, dass nicht korrekte Transaktionsdaten in Back-End-Anwendungen eingefügt werden. Eine gute Datenbank enthält einen Validierungsmechanismus (z.B. in einem Tool), der fehlerhafte Dokumente aufspürt und sie aus dem XML-Prozessfluss herausnimmt.

Praktisch jede Datenbank (Tabelle 1) handhabt diesen Vorgang jedoch anders. Oracle bietet dem Nutzer eine ganze Palette von Techniken. Im Vergleich erweist sich Tamino von der Software AG als ein diesbezüglich gut ausgebautes System, das nicht nur mit dem webbasierten Authoring- und Versioning-Standard WebDAV arbeitet, sondern mit EntireX Mediator auch über ein Tool verfügt, das alle Transformationen und Validierungen transparent handhabt. Darüber hinaus erledigt es die Verschlüsselung und Weiterleitung von Dokumenten an die richtigen Empfänger und Zielsysteme.

Unterstützung von Integrationsstandards

Dies wirft ein Schlaglicht auf den Aspekt der Integration. Hieran zeigt sich die hohe Bedeutung von Standards. Was tun, wenn der Empfänger ein Legacy-System ist, das keine Ahnung von Java, HTTP und Web Services hat? Eine Lösung kann immer im Einsatz eines Adapters, Konnektors oder Gateways bestehen. Doch diese Brücke muss allzuoft angepasst oder gar komplett neu geschrieben werden, was natürlich teuer ist. Um dies für jede neue Schnittstelle zu vermeiden, kann man entweder ein Tool wie den EntireX Communicator von Software AG einsetzen, der externe Anwendungen als Web Service darstellt oder man modernisiert die Zielanwendung individuell mit einem Wrapper, der sie als Web Service oder Java darstellt.
Ein gemeinsamer Nenner aller XML-unterstützenden Datenbanken ist der Support für Internetstandards wie etwa SOAP und Web Services, aber auch für Java. Letzteres trifft allerdings nicht für Microsoft SQL Server 2005 zu. Das Produkt setzt vielmehr auf ADO.NET und die SQL Server Integration Services (SSIS). Der Standard XMLA (XML for Analysis Services) erleichtert hier die Integration mit Analyseanwendungen wie den Microsoft Analysis Services. Durchgehend bildet in anderen Datenbanken die Verwendung von JDBC- oder ODBC-Treibern einen ausgereiften Integrationsmechanismus, mitunter mit Erweiterungen. Als Pendant zu den SQL Server Integration Services bietet Sybase seine Component Integration Services an. Der Interessent sollte vor dem Kauf fragen, ob diese Pakete im Preis inbegriffen sind.

Support für Entwickler und Plattformen

Im Rahmen der Applikationsintegration ist häufig auch Entwicklungsarbeit zu erledigen. Der Technologie-Stack der großen Drei IBM, Microsoft und Oracle sieht die Anbindung von entsprechenden Werkzeugen vor. Dabei setzt IBM auf Eclipse und die dort verfügbaren Tools, Microsoft auf Visual Studio 2005 und Oracle auf die Tools des Oracle Application Server. Aber manchmal geht es auch preisgünstiger, so etwa bei Caché. Diese Datenbank bringt nicht nur zwei unterschiedlich leistungsfähige Skriptsprachen namens ObjectScript und Basic mit, sondern auch mit Caché Studio ein eigenes RAD-Entwicklungs-Tool.

Hinsichtlich der Verfügbarkeit auf den Betriebssystemplattformen wird fast durchgängig eine Trias aus Windows, Unix-Derivaten (meist Solaris) und Linux unterstützt. Oracle wird auch für den Mac und Caché für OpenVMS angeboten, doch nur SAS und Tamino auch auf der zSeries. Ob DB2 v9.x auch auf der zSeries angeboten wird, ist im Moment noch unklar, dürfte aber nur eine Frage der Zeit sein. Die Vorgängerversionen sind für die Mainframes von Big Blue verfügbar.

Tabelle: Unterstützung von XML-Technik in Datenbanken

Produkt IBM DB2 9.x (Viper) Oracle 10g R2 MS SQL Server 2005 Software AG Tamino 4.4 SAS Enterprise Business Intelligence Server 9.1 Teradata Warehouse v2 R5 InterSystems Caché 5.1 Sybase ASE 12.5.3

XML speichern

Nativ als Baumstruktur auf Disk-Pages (default) oder dekomponiert in relationalen Strukturen oder als LOB

XMLTYPE: Zwei Speicherungsformen, textbasiert (CLOB) oder objektrelational (XML als SQL-Objekt); Mischformen möglich; Indizes auf einzelne Elemente, Attribute sowie Volltextindex möglich

Als BLOB, als XML-Datentyp

Natives Format (+ Speicherung/Indizierung von Non-XML-Dokumenten

XML Libname Engine

Als BLOB oder als Character zerlegt

Import mithilfe der %XML.Reader-Klasse zu einem Caché-Objekt (auch aus Stream oder String)

Als BLOB, als relationale Daten, als XML-Dokument, als File im Dateisystem

Backup, Restore, Replikation

High Availability Disaster Recovery; DB-Backup und -Defrag; XML-Im- und Export, SQL- und Queue based Replication (Q-Replication)

High Availability, Backup, Replikation, Snapshots, Cluster, Grid

High Availability, Backup, Replikation, Snapshots, Cluster

Replikation, hardwarebasiertes Backup mit SAN, API für SANs (Batch Interface), Veritas-Cluster

Möglich über XML Libname Engine

High Availability, Backup, Replikation

Integriertes Management-Tool Caché Manager für umfassende Systemadministration inkl. Backup, Restore, Replikation und Shadowing

High Availability, Backup, Replikation. Mit Fast-Index-Technik

Validierung und Abgleich mit XML-Schema

Optional und jeweils für ein Dokument

Für XMLType-Daten (s.o.)

Bei CLOB-Daten Cast auf XMLTYPE

Ja, durch XML-Datentyp, XSD, DDL

Ja, u.a. via WebDAV und mit EntireX XML Mediator bzw. Enterprise Service Integrator

Über XMLMAP möglich

Mit externen Tools

Mit dem internen SAX-Parser

Schema-unabhängig

Abfrage

XQuery; SQL/XML

SQL , SQL/XML, XPath, XQuery 1.0 mit FLWOR-Ausdrücken

XQuery

XQuery mit FLWOR-Ausdrücken, XPath, SQL (ODBC via X-Node-Option), Zugriff auf Adabas-Daten zwecks Verwendung in der XML-Welt

Über XML Libname Engine

Teradata SQL

SQL, JDBC

XQuery, SQL, SQL/XML, XPath

Zugriff auf Teile des XML-Dokuments

Index: Wert, Volltext, beliebige; Selektion mit XQuery und XPath. XQuery standalone oder innerhalb von SQL nutzbar. SQL innerhalb XQuery nutzbar

Zugriff auf Gesamtdokument sowie auf einzelne Knoten möglich, Piecewise Update

Ja, durch XML-Datentyp

Ja, bis auf Element-Ebene

Über XMLMAP möglich

Nach der Zerlegung mithilfe von Abfrage (SQL)

Mit der Klasse %XML.TextReader auf wohlgeformte XML-Dokumente (Elementebene)

Mit SQL/XML

Erzeugung von XML-Dokumenten

XMLSERIALIZE (SQL/XML) konvertiert XML-Datentyp-Wert in einen String-Datentyp. XMLNAMESPACES: Element-Typen und Attributnamen in XML-Dokumenten, komplexe Dokumente mit Joins mittels SQLXML generierbar

SQL/XML, XQuery, aus SQL-Statements, interner XSLT-Prozessor

Änderung von XML-Dokumenten, Abfrageergebnisse als XML

Ja, auch aus Joins, mit Sortierung, XSLT

ODS Markup (Ausgabeformate anpassbar)

Externe Tools, auch für XSLT-Transformation

Durch Serialisierung beliebiger Objekte als XML (und umgekehrt); flexibles Mapping; Caché-Server-Page-Technik

Ausgabe von Abfrageergebnissen in XML (mit Transact SQL), mit XPath, XQuery, via ext. XSLT-Engine; Mapping mit jAllora

Unterstützung offener Standards; Integration

JDBC 3.0, JTA: ADO.NET, SQL/XML, XQuery, ODBC/CLI, embedded SQL

XQuery , XSLT, SQL/XML, Java, DOM, XML Schema, XPath, Web Services

Web Services, ADO.NET; XMLA, SSIS

Alle für XML-Datenbanken relevante Internet-Standards des W3C; via X-Node bzw. via EntireX Communicator

CWM (Common Warehouse Model), CDISC ODM (Operational Data Model des Clinical Data Interchange Standards Consortiums)

Java, Web Services, Konnektoren zu WebSphere und MQSeries

Java, COM, EJB, .NET, Java, Web Services, ADO.NET, ODBC

Web Services, ODBC, Java, Konnektoren, Component Integration Services

Unterstützung von Entwicklern und SOAs

Eclipse, Visual Studio; Web Services via WebSphere, DB2 Development Center (Eclipse), Rational-Anwendungsentwicklungssuite (Eclipse)

Java, Web Services via Oracle Application Server

Transact-SQL, XML, MDX, Web Services, .NET, C#, VB (Visual Studio 2005)

Umfangreiche Palette von APIs

Ja, z.B. über SOAP

Externe Tools; Web Services, SOAP; TD Application Platform

Integriertes RAD-Entwicklungs-Tool Caché Studio, Caché ObjectScript und Basic, Web Services

Java, Transact-SQL, Web Services

Plattformen

Windows, Unix, Linux, alle auf 32- und 64-Bit-CPUs, z/OS (alle Angaben zur Viper beziehen sich ersteinmal auf DB2 V9 ohne z/OS)

Windows, Unix, Linux, Mac OS

Windows-Plattformen (auch mobile)

Windows, Linux (x86, zSeries), Solaris, Unix-Derivate

Windows, Linux, Unix-Derivate, z/OS

Windows, Unix, künftig Linux

Windows, Linux, Unix-Derivate, OpenVMS

Windows, Linux, Unix-Derivate (Solaris etc.)

Michael Matzer ist Journalist, Buchautor, Rezensent und Übersetzer und lebt in der Nähe von Stuttgart.
Geschrieben von
Michael Matzer
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.