Tamino – eine XML- basierte Datenbank Odilo Oehmichen [email protected] Universität Konstanz Sommersemester 2001 1 Kurzfassung Tamino ist eine XML-native Datenbank, die von der Software AG entwickelt wurde. Dabei handelt es sich nicht um eine bestehende relationale Datenbank, die im nachhinein auf XMLaufgerüstet, wurde, sondern um eine komplett in XML entwickelte Datenbank. Wie Tamino aufgebaut ist und wodurch sich Tamino auszeichnet, ist Inhalt dieser Seminararbeit. 2 Einleitung XML ist in aller Munde. Es gibt kein Anwendungsgebiet, in das XML noch nicht eingedrungen ist. Dabei sind die Vorteile dieser Metasprache offen bekannt: XML ist textbasiert, neutral in seiner Präsentation, sprachunabhängig und ermöglicht leichten Datenaustausch, um nur einige Vorteile zu nennen. Längst hat die Wirtschaft XML entdeckt, um den Dokument- und Datenaustausch intern und extern zu erleichtern. Dabei ist sie natürlich auch an einer persistenten Speicherung dieser Dokumente interessiert, wo sich bei großem Datenaufkommen sehr schnell eine Datenbank aufdrängt. Gängige Datenbankhersteller haben also konsequenterweise ihre Datenbanken auf XML aufgerüstet. Wie lassen sich XML-Dokumente in relationalen Datenbanken speichern? Hierzu gibt es zwei Ansätze: Man kann das ganze XML-Dokument einfach in einer einzigen Zelle speichern, als sogenanntes BLOB (binary large object). Dieses macht jedoch die Suche nach Elementen im XML-Dokument fast unmöglich, da das Parsen von Textdokumenten doch recht zeitintensiv ist. Der zweite Ansatz bildet den DOM-Baum des XML-Dokuments in Relationen ab. Es ergeben sich pro Dokument mehrere Tabellen, die bei einer Query durch (kostenintensive) Joins wieder zusammengefügt werden müssen. Betrachtet man ausserdem XML-Dokumente bezüglich ihrer strukturellen Merkmale, so kann man sie grob in zwei Kategorien einteilen: • datenzentrischen Dokumente: Diese besitzen meistens eine gleichmäßige, reguläre, nicht sonderlich tief verschachtelte Struktur. Die enthaltenen Daten sind eher feingranuliert und lassen sich gut aufspalten. Sie sind also leicht in Relationen transformierbar. Außerdem spielt die Abfolge von Geschwisterelementen keine Rolle. Als Beispiel lassen sich Speisepläne oder Flugdaten angeben. • Dokumentzentrische Dokumente: Sie sind eigentlich das genaue Gegenteil vom dokumentzentrischen Typ: Da sie meistens eine unregelmäßige, tief verschachtelte 1 Struktur besitzen und die Abfolge der Elemente signifikant ist, lassen sie sich nicht sonderlich gut in Relationen abbilden. Als Beispiel lassen sich XHTML-Dokumente aufführen. Wir haben also eine Dokumentklasse, die sich sehr leicht auf das bisherige Konzept der Datenbanken abbilden läßt und eine Klasse für die das überhaupt nicht gilt. Außerdem wissen wir, daß das Abspeichern von XML-Dokumenten in Datenbanken und das spätere Extrahieren sehr kostenintensiv ist. Man gelangt zu dem Schluss, daß relationale Datenbank für das Arbeiten mit XMLDokumente nicht geeignet sind. Als Konsequenz aus dieser Folgerung hat die Software AG aus Darmstadt einen ganz anderen Ansatz verfolgt: Sie hat mit ihrem Produkt TAMINO eine XML-basierte Datenbank entworfen. 3 Tamino 3.1 Allgemeines Der Name Tamino steht einerseits für Transaction Architecture for the Management of INternet Objects und andererseits soll durch den Namen aber auch zum Ausdruck kommen, was Tamino in der Mozart´schen Zauberflöte symbolisiert: nämlich den Helden – hier in Form einer XML-basierten Datenbank, die sich in der Welt der großen, etablierten relationalen Datenbanksysteme heroisch schlagen soll. 3.2 Konzept Das Konzept von Tamino basiert im Grunde auf drei Säulen: • Tamino ist XML-nativ, das heißt, daß alle Daten nicht auf das relationale DatenbankModell abgebildet werden, sondern in XML gespeichert werden. Die Software AG verspricht sich davon einen schnelleren und zuverlässigeren Zugriff auf XML-Dokumente als dies Datenbanken liefert können, die nachträglich auf XML aufgerüstet wurden. • Alle Daten werden next to the Web gespeichert. Da die Zielgruppe von Tamino ganz klar im E-Commerce liegt und http als das Grundgebäude des Internets betrachtet werden kann, wurde Tamino so konzipiert, daß die Datenbank als Modul im Webserver integriert ist und alle Anfragen über diesen laufen. • Tamino besitzt Gateway-Funktionalität: Um sich neben den klassischen RDBMS behaupten zu können, muß Tamino zusätzlich das Ansprechen von bereits bestehenden Datenbanken erlauben. Dies geschieht in einer Art und Weise, daß der Benutzer nicht bemerkt, von welchen Quellen die von ihm angeforderten Daten stammen. Bisher existieren von Tamino Versionen, die auf Windows NT, Windows 2000 und SUN Solaris 7 laufen. Unterstützt werden Webserver, die entweder die Apache API, die ISAPI oder die NSAPI implementieren. 2 3.3 Architektur Die Architektur von Tamino wird in Abbildung 1 dargestellt. Abbildung 1 Tamino Server Übersicht Zentraler Bestandteil des Tamino XML Server ist die X-Machine. Sie ist für das Speichern und Auffinden von XML-Dokumenten verantwortlich. Auf ihre einzelnen Komponenten werde ich im nächsten Abschnitt ausführlich eingehen. Der X-Port stellt die Implemenation des Konzeptes „Next to the Web“ dar. Er ist als Modul im Webserver integriert und erhält alle Anfragen, die als URL an den Tamino Server gerichtet sind und gibt diese weiter an die X-Machine. Der X-Node erlaubt via ODBC den Zugriff auf bereits bestehende relationale Datenbanken (siehe oben: Gateway-Funktionaltität). Seine Aufgabe besteht darin, in Echtzeit Daten in XML zu konvertieren und diese an die X-Machine zurückzugeben. Wie diese Konvertierung zu geschehen hat, steht unter anderem in der Data Map. Wenn die X-Machine als Herzstück bezeichnet wird, so nennt man die Data Map gerne das Gehirn bzw. die Wissensbasis vom Tamino XML Server. Hier befinden sich sämtliche DTDs, XML-Metadaten, style-sheets, die definieren, wie XML-Objekte gespeichert werden sollen, oder wie Daten nach XML abgebildet werden sollen. Die Data Map enthält eine Sammlung vorabdefinierter DTDs, gegen die jedes neu ankommende XML-Dokument geprüft wird. Gespeichert werden die XML-Dokumente dann im XML-Store. Des weiteren sorgt die X-Tension dafür, daß XML-Dokumente über externe Programme geparst werden können, wobei alle gängigen Programmiersprachen unterstützt werden. Als nächstes werde ich den Aufbau der X-Machine näher erläutern. Sie ist in Abbildung 2 schematisch dargestellt. 3 Abbildung 2 X-Machine Wie aus Abbildung 2 hervorgeht, besteht die X-Machine aus folgenden Komponenten: Dem XML-Parser, dem Object Processor, dem Query Interpreter und dem Object Composer. Der XML-Parser stellt die syntaktische Korrektheit von ankommenden XML-Dokumenten sicher. Ist das der Fall, so gibt er dieses an den Object Processor weiter. Der wiederum hat die Aufgabe, das Dokument im XML-Store abzulegen oder aber, wenn es sich um SQLDaten handelt, sie in SQL-Tabellen zu speichern. Auf der Abfrageseite sorgt der Query Interpreter dafür, ankommende Querys in ihre Einzelteile zu zerlegen und sie dann an den Object Composer weiterzuleiten, wo sie ausgewertet werden. Der Object Composer kümmert sich um die Daten. Er holt sich diese, je nach dem wo sie gespeichert sind, entweder direkt aus dem XML Store oder gibt die Abfrage weiter an den X-Node. Sind alle Daten zusammen, generiert der Object Composer den XML Output, den er zurückgibt. 3.4 Queries Wie sieht nun eine Query aus, die an den Tamino Server geschickt wird? Die Software AG hat als Abfragesprache eine Eigenentwicklung von XQuery verwendet. XQuery ist eine vom W3C verabschiedete Query-Sprache für XML-Dokumente. In Tamino eine Query abzusetzen, bedeutet eine URL zu konstruieren. Diese URL besteht aus folgenden Komponenten: 1. dem Server Namen, auf dem die Datenbank liegt 2. dem Tamino-Server Namen 3. dem Datenbank Namen 4. dem Collection Namen (auf die Collection werde ich im nächsten Kapitel eingehen) 5. und einem Kommando, das auf der Datenbank ausgeführt werden soll. Dies besteht in der Regel aus einem Keyword ( zum Beispiel _xql, _update,...) und einem Ausdruck. 4 Hierzu ein kleines Beispiel. Nehmen wir an, wir hätten in unserer Tamino-Datenbank ein XML-Dokument, das aus den Daten aller Studenten bestünde. Wir wollen nun alle Studenten extrahiert haben, die zwischen 1976 und 1978 geboren wurden. Dann sieht unsere Query bzw. URL wie folgt aus: http://localhost/tamino/myDB/myCollection/?_xql=/student/birth[year between ´1976´,´1978´] 4 Vergleich zum klassischen RDBM 4.1 Gruppierung von Daten Um eine Indexierung von Daten möglich zu machen, ist eine Gruppierung derselben notwendig. Dies geschieht bei Tamino durch die Einführung des sogenannten Open Contents Modell. Dieses Modell sieht die Definition von sogenannten Collections vor. Eine Collection besteht aus einer oder mehreren Dokument-Typen, denen wiederum ein (offenes) Schema zugewiesen wird. Tamino weist nun jedem zu speichernden Dokument auf Grund seines Root-Elements einen Dokumenttyp zu, auf dessen Schema es passen muß. Es können jedoch noch zusätzliche Attribute auftreten – deshalb der Name Open Content Modell. Abbildung 3 zeigt dieses Modell. Abbildung 3 Collections Anhand des folgenden Beispiels soll das Konzept des Open Contents Modell noch einmal erläutert werden. Es gelte das in Abbildung 4 definierte Schema. 5 Abbildung 4 Wird nun das folgende XML-Dokument an Tamino geschickt, so wird dieses auf Grund des eben definierten Schemas akzeptiert: <Buch Jahr=“1998“> <Titel> Inside XML </Titel> <Verlag> ABC Verlag</Verlag> <Autor Alter=“42“> <Name>Kai Hacker</Name> <Land>Deutschland</Land> </Autor> </Buch> Buch hat ein undefiniertes Attribut Jahr und ein nicht deklariertes Kind Verlag. Autor hat ein nicht deklariertes Attribut Alter. Trotzdem akzeptiert Tamino dieses Dokument, da die Mindestanforderungen des Schemas erfüllt sind. Wäre nun kein Autor angegeben, so würde das Dokument zurückgewiesen werden, da das Schema mindestens einen Autor verlangt. Ein solches Schema für ein Element zu definieren, ist sinnvoll, wenn eine der folgenden Kriterien erfüllt ist: 1. auf dem Element soll ein Index definiert werden 2. das Element bzw. das Attribut soll auf eine externe Datenquelle abgebildet werden 3. für das Element sollen Zugriffsrechte definiert werden 4. die Existenz eines Elements wird gefordert 5. eine der Bedingungen 1-4 gilt für ein Kind des Elements 4.2 Indexierung Wie Tamino nun aus dem oben definierten Open Contents Modell eine Indexierung auf Elementen produziert, wird von Software AG nicht genauer erläutert. Was aus der 6 angegebenen Literatur hervorgeht, ist, daß Tamino die folgenden drei Indexierungsverfahren unterstützt: 1. das value-based indexing: Dieses aus der Welt der traditionellen Datenbanksystemen her bekannte Indexierungsverfahren wird benutzt, um den Zugriff auf bestimmte Werte in Attributen oder Elementinhalte zu beschleunigen. 2. das text-indexing: Dieses Indexierungsverfahren soll es ermöglichen, zum Beispiel im folgenden Beispiel den String XML zu finden. <text> <bold>X</bold>ML ist super </text> 3. das struktural indexing: Hier wird bei einer Query speziell auf die Struktur eines Dokuments geachtet. Haben wir zum Beispiel ein Dokument mit allen Städten Europas. So können wir nach Städten suchen, die ein Element besitzen, das Strand heißt. 5 Tamino aktuell Die momentane Entwicklung sieht eine Portierung des Tamino Servers auf Linux vor. Außerdem ist man bei der Software AG in Darmstadt dazu bereit, sich an neue Standards anzupassen, die vom W3C bezüglich einer XML-Query-Sprache herausgebracht werden. Fragt man sich, wer denn Tamino heute schon nutzt, so erhält man durchaus renommierte Kunden aus der Industrie und Forschung. So nutzt die Daimler-Chrysler AG die XML-Datenbank zum Beispiel, um interne Prozesse zu optimieren. An der Universität Freiburg ist auf Basis von Tamino eine Forschungsdatenbank entstanden, die Artikel und Paper von Unis aus ganz Deutschland verwaltet. Ein dritten Bereich deckt die Firma LOON ab, die eine auf Tamino basierte E-CommercePlattform für den B2B-Bereich anbietet, auf der Firmen Handel im Internet betreiben können. 6 Zusammenfassung Das hier vorgestellte Konzept einer XML-Datenbank ist sicherlich ein interessantes Projekt. Ob es sich jedoch gegen die mächtigen und über viele Jahre hinweg optimierten relationalen Datenbanken auf diesem Gebiet durchsetzen wird können, wird sich zeigen. Da sowohl Performance-Werte, wie auch Werte bezüglich der Skalierbarkeit fehlen und die vorhandene Literatur auch sehr einseitig positiv bestimmt ist, kann über die wahre Stärke von Tamino nur gerätselt werden. 7 Literatur [Schö00a] Harald Schöning und Jürgen Wäsch. Tamino – An Internet Database System. In Carlo Zaniolo, Peter C. Lockemann, Marc H.Scholl, Torsten Grust, Hrsg., Advances in Database Technology – EDBT 2000, Konstanz, Germany, March 27-31, 2000, Proceedings, Seiten 383-387. Springer-Verlag, Lecture Notes in Computer Science, vol.1777, 2000 [Schö00b] Harald Schöning. Tamino – a DBMS Designed for XML. In IEEE 2001. [WWW01] Tamino im Web. www.softwareag.de/tamino [Zie01] Cai Ziegler. XML und Datenbanken: Einblick in Tamino – Weltendämmerung. iX 06/2001, Seiten 56-61. 7 8