Neue Entwicklungen bei XML-Datenbanken

Datenbanken in spitzen Klammern

Daniel Koch

Mittlerweile unterstützen die meisten Datenbanken XML. Der Grad und die Qualität des XML-Supports variieren dabei allerdings von Datenbanksystem zu Datenbanksystem. Und auch bei der Art, wie Datenbanken XML behandeln, gibt es Unterschiede. Zwar können mittlerweile quasi alle Datenbanken mit XML umgehen und Abfrageergebnisse als XML zurückliefern, in diesem Artikel soll der Fokus aber auf „richtigen“ XML-Datenbanken, also solchen, die XML-Daten sowohl lesen als auch schreiben können, liegen. Als Kriterium, bei welchem System es sich tatsächlich um eine XML-Datenbank handelt, dient eine Definition der Software AG: „Native XML-Datenbanken sind Datenbanken, die XML-Dokumente in ihrem echten Format speichern und verarbeiten können.“

Zu groß sind die Vorteile von XML, als dass sich Datenbankhersteller dieser Entwicklung entziehen können. Aber auch wenn ein XML-Support von allen geboten wird, die qualitativen Unterschiede sind teilweise gravierend. Während Berkeley DB XML beispielsweise XPath und XQuery unterstützt, sind andere Systeme dazu nicht in der Lage. Und auch hinsichtlich der Abfrageleistungen gibt es enorme Differenzen. Auf den folgenden Seiten werden die wohl populärsten XML-Datenbanken bzw. Datenbanken, die eine XML-Unterstützung bieten, vorgestellt.

Berkeley DB XML

Berkeley DB XML [1] ist eine native Open-Source-XML-Datenbank. Beim Ablegen der Daten geht Berkeley DB XML den denkbar einfachsten Weg: Dokumente werden im Ganzen so hinterlegt, dass ihre Struktur erhalten bleibt. Dadurch erübrigt sich dann auch die Angabe von Schemata. Metadaten lassen sich als Name-Wert-Paare direkt an Dokumente anhängen, ohne dass die Integrität der ursprünglichen XML-Datei verloren geht. Verschiedene Arten von XML-Dokumenten lassen sich in einer Kollektion zusammenfassen. Aus diesen Kollektionen lassen sich einzelne Segmente, also beispielsweise XML-Fragmente oder einzelne Attribute, gezielt abfragen. Seit Version 2.0 wird von der Berkeley DB XML XQuery 1.0 unterstützt.

Bei Berkeley DB XML handelt es sich übrigens nicht um ein Client/Server-System. Vielmehr ist es eine nachladbare Bibliothek, die vom Entwickler lokal eingebunden werden kann. Implementiert wurde DB XML in C++, Schnittstellen für Java, Perl, Python, PHP, Tcl und Ruby stehen zur Verfügung. DB XML kann derzeit unter Linux, Solaris und Windows eingesetzt werden. Zusätzlich besitzt DB XML die Fähigkeit, das Speichern von Dokumenten auf Knoten-Ebene zu steuern, um so die Abfragegeschwindigkeit bei großen Dokumenten zu erhöhen. Mit Version 2.2 wurden Probleme, die bei der Verarbeitung großer XML-Dokumente auftraten, beseitigt. Hier gab es in früheren Versionen immer wieder Schwierigkeiten bezüglich der Geschwindigkeit von XML-Transaktionen. Der Grund hierfür ist der Tatsache geschuldet, dass Abfrageoptimierungen nur auf Dokument-Ebene funktionierten. Das Abfragen von Dokument-Knoten konnte somit nicht beschleunigt werden. Diese Probleme hat man durch ein neues verbessertes Speichermanagement behoben.

Caché

Caché ist eine so genannte postrelationale Datenbank, die von InterSystems [2] entwickelt wird. Das postrelationale Datenmodell, dessen sich Caché bedient, hat das relationale Modell um hierarchische, geschachtelte Strukturierungsmöglichkeiten erweitert. Caché bietet eine bidirektionale Schnittstelle zu XML, was ein Mapping zwischen XML-Daten und Datenbank unnötig macht. Will man eine Caché-Klasse XML-kompatibel machen, muss man sie von der XMLAdapter-Klasse erben lassen. Beim XML-Export werden auf Wunsch DTD und Schema automatisch miterstellt. Wer möchte, kann die XML-Formatierungen einer Klasse aber auch beliebig anpassen.

Auch der Import von XML-Daten ist in Caché möglich. So lassen sich beispielsweise XML Schemas importieren, aus denen automatisch Caché-Klassen erstellt werden können. Durch den integrierten SAX-Parser besteht zudem die Möglichkeit XML-Dokumente zu parsen und zu validieren.

DB2

Die neue Version von IBMs DB2 wartet auch hinsichtlich XML mit zahlreichen neuen Features auf [3]. Grundsätzlich können Daten im relationalen oder objektrelationalen Datenmodell verarbeitet werden. Zum Speichern von Daten im XML-Format wird der so genannte XML-Extender herangezogen. Will man in den gespeicherten XML-Daten suchen, sollte zusätzlich der Text-Extender verwendet werden. Mit seiner neuesten DB2-Version, deren Veröffentlichung noch aussteht, sollen beide Zusatzmodule bereits integriert sein. Aber nicht nur in diesem Bereich ergeben sich Änderungen. Auch die XML-Unterstützung im Allgemeinen wurde grundlegend überarbeitet. So kann fortan XQuery als alleinige Abfragesprache verwendet werden. (Wer will, kann auch die SQL/XML-Funktion XMLQUERY einsetzen.)

Nicht weniger als eine Revolution verspricht IBM mit der Einführung der neuen hybriden Datenbank DB2 V9. Zwar steht ein exakter Veröffentlichungstermin noch nicht fest, bei IBM spricht man von in einigen Monaten, die Ankündigungen lassen allerdings Großes erhoffen. DB2 V9 soll aus zwei separaten Storage-En-gines bestehen, nämlich einer relationalen und einer für XML. IBM will damit die Nachteile einer relationalen Verarbeitung von XML-Dateien umgehen, die vor allem in einer schlechteren Performance und einer geringeren Flexibilität bei notwendigen Änderungen an der Struktur auftreten. Durch die native XML-Verarbeitung entfällt die Transformation der Daten aus dem relationalen Modell. Was IBM da verspricht, hört sich spannend an und wird XML-Datenbanken bzw. dem XML-Support in Datenbanken weiteren Aufwind verschaffen.

eXist

Die native Open-Source-Datenbank eXist [4] wurde von Wolfgang Meier in Java programmiert. Ursprünglich war eXist „nur“ als Middleware für MySQL gedacht, die XML-Dokumente relational DOM-konform abspeichert. Inzwischen benutzt die Datenbank ausschließlich ein eigenes Speicherformat, bei dem jedem Knoten im Dokumentbaum in Level-Order eine ID zugewiesen wird, die das System in einer B+-Baumstruktur hält. Die APIs sind DOM, SAX und XML:DB. Als Abfragesprache kommt XQuery zum Einsatz. Durch die XQuery-Implementierung von eXist können u.a.Volltext-Suchen durchgeführt und das XML:DB API aufgerufen werden.

Informix

Neben DB2 schickt IBM mit Informix [5] eine weitere Datenbank mit XML-Fähigkeiten ins Rennen. Hinsichtlich XML wird Informix über den Object Translator [6] und über den Web DataBlade unterstützt. Der Object Translator ist speziell dafür entwickelt worden, XML-basierte Anwendungen über die Java-Plattform schneller und einfacher zu erstellen. Der Object Translator generiert Objekt-Code, inklusive der Fähigkeit, Objekte und deren Daten in die Datenbank zu schreiben und sie auch wieder auslesen zu können. Bei Web DataBlade handelt es sich um ein Modul, in dem eine Vielzahl von Funktionen, Tools und Beispielen enthalten ist, über die, so IBMs Eigenaussage, das Entwickeln von „intelligenten“, interaktiven, webfähigen Datenbanken erleichtert wird.

Natix

Das native Datenbanksystem Natix wurde im Jahr 1998 im Rahmen eines Projekts an der Universität Mannheim ins Leben gerufen, wird mittlerweile aber von der data ex machina GmbH [7] weiterentwickelt und vertrieben. Natix wurde auf einer Unix-Plattform in C++ entwickelt. Versionen für Windows und eine Java-Anbindung sind derzeit noch nicht verfügbar. In Natix wird immer die vollständige Dokumentstruktur gespeichert. Parallel dazu wird die Baumstruktur in kleinere Teilbäume gesplittet. Dabei bedient sich Natix eines so genannten Schwellenwerts. Dokumente bzw. Strukturen, die größer als dieser Wert sind, werden strukturiert gespeichert. Die kleineren Strukturen sind geclusterte Teilbäume, die als atomare Einheiten auf der physischen Ebene behandelt werden. Dabei ist der Schwellenwert nicht vorgegeben, sondern orientiert sich dynamisch an der Struktur des XML-Dokuments. Nach oben hin ist der Schwellenwert lediglich durch die maximale Seitengröße von 64 KB begrenzt.

Die Natix-Entwickler haben vor allem Wert auf die Abstimmung zwischen physischem und logischem Datenmodell gelegt. Neben dem Schwellenwert spielen dabei vor allem die flachen Bestandteile eine entscheidende Rolle. Diese bestehen aus geclusterten Baumknoten, die wie ein atomarer Record behandelt werden und nie größer als eine Zuordnungseinheit des Dateisystems auf einer Festplatte sind. Für die Auswertung deklarativer XML-Anfragen werden sie in einem entsprechenden Auswertungsprogramm übersetzt und anschließend auf der Natix Virtual Machine ausgeführt. Als Abfragesprache wird XQuery unterstützt. Die Anfragen selbst werden von Natix in einen algebraischen Ausdruck umgewandelt. Zu diesem Zweck wurde die relationale Algebra um neue Datentypen, die das XPath-Datenmodell abbilden, erweitert. Zusätzlich wurden neue Operationen zur Konstruktion von Ergebnisdokumenten und Variablenbindungen eingeführt. Als API steht entweder ein SAX- oder ein DOM-Interface zur Verfügung. Sollte eine Anwendung keine der beiden Varianten unterstützen, kann auch ein Dateisystemtreiber verwendet werden.

Oracle

Spricht man von Oracles Datenbank 10g Release 2 in Bezug auf XML, kommt man an Oracle XML DB nicht vorbei [8]. Unter diesem Begriff wird ganz allgemein die Technologie zusammengefasst, mit der sich XML-Inhalte in Oracle-Datenbanken speichern bzw. wiederherstellen lassen. Oracle XML DB erweitert die standardmäßig „nur“ als relationales Datenbanksystem verfügbare 10g Release 2 um eine XML-Datenbank. Eines der wichtigsten Merkmale von Oracle XML DB ist der Datentyp XMLTYPE, der dem Speichern von XML-Inhalten dient. XMLTYPE kann beim Erzeugen einer Spalte wie jeder andere Oracle-Datentyp verwendet werden. Zusätzlich lässt sich XMLTYPE, handelt es sich bei ihm doch um einen Objekt-Typ, auch zum Anlegen von Tabellen des Typs XMLTYPE einsetzen. Besonders interessant ist der Einsatz von XMLTYPE bei der Definition von Views. Dabei können entweder reine XMLTYPE-Views oder relationale Views erzeugt werden. Letzteres ist vor allem vor dem Hintergrund interessant, Inhalte aus relationalen Tabellen als XML-Dokumente darzustellen. Um XQuery-Abfragen zu übergeben, kann man entweder auf SQL*Plus, den XQuery-Interpreter, zurückgreifen oder man kombiniert XQuery-Ausdrücke durch die beiden Funktionen XMLQUERY und XMLTABLES mit jedem beliebigen SQL-Kommando. So kann man Abfragen starten, die XML mit relationalen Tabellendaten kombinieren.

Ein weiteres interessantes Feature ist das XML DB Repository, durch das XML-Dokumente einfach in einer Ora-cle-Datenbank gespeichert werden können und dort auch auf sie zugegriffen werden kann. Dabei braucht man sich um den Zugriff selber nicht zu kümmern. Er wird vom Repository automatisch übernommen. Auch bei der Wahl der Zugriffsart hat man fast unbegrenzte Möglichkeiten. Neben dem FTP-Protokoll lassen sich auch HTTP und WebDAV einsetzen. Weiterer Vorteil des Repository: die Abfrage lässt sich über SQL realisieren. Dadurch kann man mittels SQL auf die hinterlegten XML-Inhalte zugreifen und diese verändern.

SQL Server

Microsofts SQL Server 2000 hat XML bislang ausschließlich via SQLXML unterstützt. Dabei konnten XML-Daten allerdings lediglich in relationale Tabellen bzw. wieder zurück konvertiert werden. Mit der Version 2005 [9] wird Microsofts SQL Server XML direkt unterstützen. So wurde beispielsweise ein XML-Datentyp mit seinen Methoden exist(), modify(), nodes(), query() und value() eingeführt, durch den zumindest ein Teil von XQuery 1.0 implementiert wird. Im Bereich der FOR XML– und OPENXML-Funktionen hat sich einiges getan. Zur Erinnerung: Im SQL Server 2000 konnten relationale Daten mit FOR XML als XML abgerufen werden, während sich mit OPENXML XML in relationale Daten konvertieren ließ. Anders in der neuen 2005er-Version: Hier unterstützt FOR XML den XML-Datentyp und erlaubt den direkten Einsatz von XML auf dem Server.

Sybase

Auch Sybase baut den XML-Support in seinen Produkten immer weiter aus. So wurde das relationale Datenbankmanagement-System Adaptive Server Enterprise um neue XML-Funktionen erweitert. Auf welche Arten XML in ASE genutzt werden kann, zeigt [10]. Mit der neuen Version folgt ASE dem SOA-Trend. So werden jetzt nicht nur Web Services unterstützt, es kann nun auch zwischen nativer und relationaler Ablage von XML-Dokumenten gewählt werden. Zwar konnte bereits in der Vorgängerversion XML-Daten nativ gespeichert und in eine Tabellenstruktur überführt werden, im aktuellen ASE hat man die SQL-Syntax allerdings dahingehend erweitert, dass für XML-Queries nur noch das Schlüsselwort for xml angegeben werden muss, damit ein Mapping der Datenbankstruktur erfolgt. In ASE existiert eine vollständige XML-SQL-Kompatibilität. Dadurch können XML-Operationen an SQL-Daten und SQL-Operationen an XML-Daten durchgeführt werden. Als Abfragesprache kommt XQuery zum Einsatz, dessen Arbeitsentwurf ASE zu einem Großteil unterstützt.

Tamino

Tamino, der Name setzt sich übrigens aus „Transaktionsarchitektur für das Management von Internetobjekten“ zusammen, ist ein natives Datenbanksystem der Software AG [11], das derzeit in Version 4.4 vorliegt. Das Tamino-Konzept setzt sich aus drei Aspekten zusammen: Die Daten werden nativ, also direkt als XML hinterlegt. Tamino besitzt zudem eine Gateway-Funktionalität. (Es können auch andere Datenbanken angesprochen werden. Der Benutzer bemerkt nicht, von welcher Quelle die angeforderten Daten stammen.) Tamino selbst besteht aus verschiedenen Komponenten, die sich selbst wiederum aus mehreren Komponenten zusammensetzen. Dazu gehören u.a.:

  • X-Machine: XML-Kern zur Datenspeicherung
  • X-Port: Ermöglicht den direkten Zugriff auf X-Machine mittels HTTP
  • X-Node: Schnittstelle für den Zugriff auf bestehende externe Datenbanken
  • X-Tension: Damit können benutzerdefinierte Funktionen eingebunden werden, die vom Anwender nicht mehr von den Standardfunktionen zu unterscheiden sind
  • Tamino Manager: Webbasierte Schnittstelle zur Tamino-Verwaltung
  • Data Map: Ist Teil der X-Machine, der die Struktur der Daten und die Abbildungsvorschriften für das Data-Mapping enthält

Ein weiteres Highlight ist der WebDAV-Server, der optional installiert werden kann. Durch ihn wird der neueste Standard für den Webzugriff auf Basis von HTTP und WebDAV gewährleistet. Weitere interessante Komponenten sind der Tamino Schema Editor und das Tamino Interactive Interface. Der Schema Editor hilft bei der Erstellung eines Tamino-Schemas (TSD) und erlaubt den Import von DTDs, aus denen sich Tamino-Schemas generieren lassen. Über das browserbasierte Interactive Interface können auf dem Tamino-Server u.a. XML-Instanzen gelöscht und hochgeladen werden. Aber auch hinsichtlich des XML-Supports hat Tamino einiges zu bieten. So werden nicht nur DOM, XML:DB API, SAX und JDOM unterstützt. Durch den Query-Prozessor ist auch eine zufriedenstellende XQuery-Implementierung vorhanden. Gerade in diesem Bereich hatte Tamino früher seine Schwächen. Denn bei der Software AG setzte man ganz auf die Eigenentwicklung X-Query, eine auf XPath 1.0 basierende Syntax. In der aktuellen Tamino-Version kann X-Query zwar immer noch verwendet werden, mit XQuery vom W3C kann man aber auch standardkonform arbeiten.

Tamino verfügt zudem über ein SOAP API (SOAP Service). Durch den SOAP Service kann direkt auf Teile von XQuery-Ergebnismengen zugegriffen werden und er enthält einen WSDL-Support. Der Entwickler kann somit die SOAP-Schnittstelle aufrufen und sie für Standardabfragen an den Tamino XML Server nutzen.
Mit der neuen Version Tamino 4.4 stehen weitere interessante Funktionen zur Verfügung. So gibt es mit UDDI (Universal Description, Discovery and Integration) 3.0 die Möglichkeit, einen Verzeichnisdienst mithilfe einer SOAP-Schnittstelle bereitzustellen. Großes verspricht sich die Software AG zudem von der Tatsache, dass der Tamino XML Server der erste XML-Server mit direkter WebDAV-Unterstützung ist. Hierdurch wird Tamino XML Server dem Anwender als Verzeichnis bzw. Verzeichnisbaum angezeigt. XML-Dokumente können so über XQuery oder per Drag & Drop gespeichert, ausgetauscht, gesucht und abgerufen werden.

Caché

Die native XML-Datenbank X-Hive [12] hat es sich auf die Fahnen geschrieben, offene Standards aktiv zu unterstützen. So wurden neben XML 1.0 u.a. auch XQuery, XPath, XML Schema, XSL, XPointer, XLink, DOM und XUpdate implementiert. X-Hive setzt die Installation von J2SE/JRE 1.4 oder höher voraus und kann derzeit unter Linux, Sun Solaris, HP UX, Windows und Mac OS X eingesetzt werden. Wie überzeugt die X-Hive-Entwickler von den XQuery-Fähigkeiten ihrer Datenbanken tatsächlich sind, zeigt die Tatsache, dass sie X-Hive als erste überhaupt der XML Query Test Suite [13], und zwar erfolgreich, unterzogen haben. Durch die in X-Hive enthaltene XSLT-Engine können Dokumentinhalte u.a. in HTML, PDF und WML transformiert werden. Dazu wird der XSLT-Engine das betreffende Dokument mitsamt einem Stylesheet, das die Transformation beschreibt, übergeben. Für die Suche nach Dokumenten und Elementen können DOM Traversal und XQuery verwendet werden.

Caché

Apaches Xindice [14] ist ein Projekt, das sich noch in der Entwicklung befindet. Derzeit unterstützt der Server das Speichern von XML-Dokumenten. Bei Xindice von einer XML-Datenbank zu sprechen, würde allerdings zu weit führen. Besser trifft es folgende Definition: Xindice ist eine halbstrukturierte Datenbank, die sich durch große Flexibilität bei der Datenspeicherung auszeichnet, typische Datenbank-Features wie Transaktionen sucht man allerdings vergebens. Xindice ist gerade für umfangreiche XML-Strukturen gedacht und stellt den Nachfolger von dbXML dar. Als Abfragesprache wird XPath und als Update-Sprache XUpdate herangezogen. Hinsichtlich XML ist vor allem die Implementierung des XML:DB API [15] interessant. Vergleichen lässt sich dieses API mit Technologien wie Perl DBI, ODBC und JDBC. Xindice bietet eine Implementierung von XML:DB API in Java, kann aber auch über andere Sprachen mit XML-RPC verwendet werden. Das sind nur zwei von vielen Funktionen, die mit dem XML:DB API möglich sind.

Caché

Es gibt natürlich nicht nur Entwickler, die mit einer reinen XML-Datenbank arbeiten. Aber auch dann kann man in vielen Datenbanken XML-Dokumente zumindest importieren und exportieren. In den folgenden Abschnitten wird daher untersucht, was die recht weit verbreiteten Systeme Access, FileMaker und FoxPro auf dem Gebiet der XML-Unterstützung zu bieten haben.

Caché

Microsofts Access verfügt bereits seit der 2000er-Version über eine fortgeschrittene XML-Unterstützung. So lassen sich XML-Daten komfortabel importieren und exportieren. Seit Access 2003 können nun endlich auch XML-Daten über XSL in ein anderes Format transformiert werden. Diese Funktion lässt sich, wie bei Access üblich, über einen Assistenten nutzen. Ebenfalls verbessert wurde der XML-Import. Während in früheren Access-Versionen Daten in neue oder bestehende Tabellen importiert werden konnten, lassen sich in Access 2003 die Daten transformieren, bevor man eine neue Tabelle erzeugt bzw. man die Daten in eine bereits existierende Tabelle einfügt. Auf MSDN [16] stellt Microsoft die wichtigsten Neuerungen im XML-Umfeld von Access vor. Einige Beispiele für den Einsatz von XML in Access werden unter [17] vorgestellt. Dort wird u.a. gezeigt, wie sich XML-Dateien mithilfe des DOM einlesen und wie sich XML-Dateien exportieren lassen.

Caché

Die beliebte Datenbank FileMaker [18] liegt mittlerweile in Version 8 vor, bietet aber bereits seit Version 6 XML-Unterstützung. Sowohl FileMaker Pro 8 als auch FileMaker Server 8 Advanced ermöglichen den Export der Daten ins XML-Format. Eine weitere Möglichkeit, XML-Daten zu exportieren, bietet FileMaker Pro 8. Hier kann ein entsprechendes XSLT-Stylesheet ausgewählt werden, das auf die XML-Daten angewendet werden soll. Auf der FileMaker XSLT Library [19] steht eine Vielzahl solcher Stylesheets zum Download bereit. Unter anderem gibt es dort Style-sheets für Word und Excel, SMIL, RTF und SVG. Das folgende Listing zeigt einen Auszug des Stylesheets für iTunes:

In iTunes 3 kann man die Lieder-Bibliothek als XML exportieren. Das zum Download angebotene Stylesheet wurde nun dafür entwickelt, diese Daten in die FileMaker-Datenbank zu importieren. Für all diejenigen, die sich weiterführend mit XML in FileMaker befassen wollen, gibt es den FileMaker XML Talk [20]. Nach einer kurzen Registrierung kann man sich aktiv in einem Forum bewegen und dort Fragen rund um FileMakers Implementierung von XML stellen.

Caché

Microsofts FoxPro kennt die drei Methoden CURSORTOXML (wandelt einen Cursor von FoxPro in XML um), XML-TOCURSOR (wandelt Daten in XML in einen Cursor von FoxPro um) und XML-UPDATEGRAM (erstellt aus den in einer gepufferten Tabelle vorgenommenen Änderungen ein XMLUpdateGram), um XML-Daten in einer FoxPro-Tabelle zu speichern. Auf seinen Entwicklerseiten [21] hält Microsoft ausführliche Informationen zum XML-Support in FoxPro bereit. Eine vollständige FoxPro-Sprachreferenz [22] ist ebenfalls online abrufbar.

Caché

Zwar wurden in dem Artikel die wichtigsten Datenbanken genannt, es gibt aber noch viele andere. Wer sich auch für Nischenlösungen interessiert oder wissen möchte, welche Datenbanksysteme es noch gibt und wie sie mit XML kooperieren, findet unter [23] eine kompetente Anlaufstelle. Dort werden alle Datenbanken auf ihre XML-Tauglichkeit hin untersucht. Zusätzlich finden Sie auf dieser Seite Verweise zu den Herstellern und Informationen über die Lizenzmodelle.

Daniel Koch arbeitet als freiberuflicher Programmierer und Autor in Hamburg und Berlin. Er hat mehrere Bücher rund um die Themen Programmierung und Software veröffentlicht. Sie erreichen ihn unter dk@medienwerke.de.
Geschrieben von
Daniel Koch
Kommentare

Schreibe einen Kommentar

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