Native XML-Datenbanken am Beispiel Tamino

1 Einführung

Die heutige Datenkommunikation setzt immer mehr auf den plattformunabhänigen und leicht erweiterbaren Standard XML. Dies sieht man zum Beispiel an EDI (Electronic Data Interchange Standard), der nun durch den XML-EDI Standart abgelöst wird. Daten, die über diese neue Technologie ausgetauscht werden, wollen auch gespeichert werden. Da XML die Möglichkeit bietet, Informationen über das Dokument in dem Dokument, genauer: in den Tags, zu speichern, wird eine neue Art der Speicherung benötigt.


Im Gegensatz zu diesen beiden Techniken ist die Speicherung von XML-Daten in XML-nativen Datenbanken Neuland für Anwender als auch für Entwickler. Es stehen eine Reihe von Produkten in diesem jungen Markt zur Verfügung. Im weiteren soll hier auf das Produkt "Tamino" der Software AG näher eingegangen werden.

1.1 Die Extended Markup Language (XML)

1.1.1 Geschichte von XML

Am Anfang war das Dokument - Ende der sechziger Jahre wurde die Generalized Markup Language (GML) von Charles Goldfarb, Edward Mosher und Raymond Lorie erfunden; Ende der achtziger wurde dann die Fortführung in Form von SGML als Standard verabschiedet. Es ging darum, die Struktur von Dokumenten und deren Inhalt strikt voneinander zu trennen. Zwischen SGML und HTML war Platz für mehr. Die Frage war, wie man mehr als die paar HTML-Elemente ins Web bekommen könne. Die "Web SGML Activity", eine von Sun geförderte Gruppe, arbeitete in wenigen Monaten einen Entwurf aus, der alles Wesentliche enthielt. Ein großer Erfolg war, dass mit Microsoft eine der führenden Firmen XML schon 1996 unterstützte. So konnte das World Wide Web Consortium (W3C) Anfang 1998 die Syntax der neuen Metasprache XML 1.0 als Recommendation verabschieden.

1.1.2 XML zum Austausch von Informationen

Wenn zum Beispiel im E-Commerce Geschäftsdaten nicht mehr per Papier sonder auf elektronischem Wege zwischen Datenbanksystemen transportiert werden sollen, so muss es Regeln geben, nach denen diese Dokumente strukturiert sind. An diese Regeln müssen sich die Geschäftspartner halten. Am besten, es gelten allgemein gültige Standards, an die sich alle halten können. Die UN-Gruppe für Handelserleichterungen sowie E-Business (UN/ CEFACT) und die Organization for the Advancement of Structured Information Standards (OASIS) haben sich zusammengetan, um unter dem Namen ebXML einen Rahmen für die Struktur elektronischer Geschäftsdaten zu erarbeiten (www.ebxml.org).

1.1.3 XML im WWW

Das Web drohte fragmentiert zu werden, da viele Browserhersteller die Zahl der HTML-Elemente hochschrauben wollten. Und Webdesigner hatten die Präsentation ihrer Seiten tief mit deren Struktur verwoben: in verschachtelte Tabellen, unsichtbare Grafiken etc. XML passte hier aufgrund seiner einfachen Implementierbarkeit und seiner Eigenschaft, den eigentlichen Inhalt und die Formatierung von Dokumenten strikt zu trennen. Und als Ende 1999, Anfang 2000, Webmaster WAP-Handys den Zugriff auf ihre Daten über die Wireless Markup Language (WML - eine XML Anwendung) ermöglichten, stellte sich eine Frage neu: Wie sorgen Autoren dafür, dass ihre Dokumente immer erreichbar sind, unabhängig davon, ob Anwender zum Beispiel blind oder taub sind bzw. wie wird der Inhalt so formatiert, dass verschiedenste Geräte ihn darstellen können? Wenn Inhalte geräteunabhängig vorgehalten werden, so spielt WML und eine Weiterentwicklung von HTML eine wichtige Rolle: die Extensible Hypertext Markup Language (XHTML) ist eine Neuformalierung von HTML, nur nicht mehr in SGML sondern in XML.

1.1.4 XML-Verarbeitung mit verschiedensten Werkzeugen

Mit XML können heute fast alle wichtigen Sprachen umgehen, so C, Perl, Python, PHP oder Java. In Gnome ist eine XML-Bibliothek integriert, Sun hat XML in seine Java Pläne aufgenommen. Das Apache-Projekt Cocoon ermöglicht die dynamische Auslieferung von XML über Servlets und Microsoft war von Anfang an bei der Entwicklung von XML dabei. Auch gehören Datenbanksysteme zu den Werkzeugen, die XML verarbeiten können. RDBMS Hersteller Oracle bietet Interessierten auf technet.oracle.com Informationen und Tools. Erste 'echte' XML-Server sind ebenfalls auf dem Markt; hier soll Tamino von der Software AG behandelt werden.

1.2 Die Verschiedenartigkeit von XML-Dokumenten

Die Extensible Markup Language dient in zunehmendem Maße als Austauschformat zwischen verschiedenen Informationsservern, da sie zum einen ein akzeptierter Standard zur Anordnung von Daten ist und zum anderen leicht via HTTP übertragen werden kann, da es sich ja um Plain- Text handelt. So muss es auch Mittel und Wege geben, XML-Dokumente zwischen Datenbanksystemen auszutauschen, sie in geeigneter Weise zu generieren bzw. abzulegen und Anfragen an sie zu richten. Das Relationenkonzept prägt jedoch die Welt der Datenbanken, und beim Mapping von XML-Daten in die Tabellen eines RDBMS ergeben sich gravierende Probleme. XML-Dokumente kann man aufgrund von strukturellen Merkmalen in folgende zwei Kategorien aufteilen:

1.2.1 Datenzentrierte XML-Dokumente

Sie haben eine gleichmäßige, reguläre, nicht sonderlich tief verschachtelte Struktur. Die in ihnen gekapselten Daten lassen sich leicht in kleinere Blöcke aufteilen, die dann als geschlossenes Ganzes betrachtet werden können. Weiterhin tritt Mixed Content selten oder gar nicht auf, und die Abfolge der Geschwisterelemente ist egal. Bei dieser Kategorie von Dokumenten spielt der hierachische Aufbau von XML eine untergeordnete Rolle. Ein Beispiel:

<?xml-version="1.0" encoding="UTF-8"?>
  <order id="253639">
    <customer id="2925">
      <firstName>Andrea</firstName>
      <lastName>Koehnes</lastName>
      <street>Rennweg 9</street>
      <city>Marburg</city>
      <zipCode>94034</zipCode>
    </customer>
    <purchaseList>
      <item id="0596000162" type="book">
        <label>Schlafes Bruder</label>
        <quantity>1</quantity>
      </item>
      <item id="2603658914" type="audio-cd">
        <label>Fat of the Land</label>
        <quantity>1</quantity>
      </item>
    </purchaseList>
    <date>240301:1435</date>
  </order>

Hier sind die Wesensmerkmale von XML nicht sonderlich stark ausgeprägt, und diese Dokumente lassen sich relativ einfach in Relationen transformieren. Die Verwendung von XML ist alles andere als zwingend, um solche Daten auszutauschen. Es gäbe hier sicherlich noch mehr Möglichkeiten, die Daten geeignet zu repräsentieren.

1.2.2 Dokumentenzentrierte XML-Dokumente

Sie haben eine unregelmäßige Struktur mit beliebig tiefen Verschachtelungen und Mixed Content. Weiterhin ist die Abfolge der Geschwisterelemente signifikant, so dass ein Vertauschen der Abfolge der Geschwister einer semantischen Änderung gleichkommt. Auch ist eine Aufteilung in unabhängige Einheiten nur bedingt möglich. Ein Beispiel in XHTML:

<body> 
    <div> Diese Seite enthält Produktinformationen zum neuen
      Softwarepaket<b>HolyGrailv1.0</b>der Firma<i>Acme Inc.</i> 
    </div>
      <table> 
        <tr> 
          <td> Features der Software ... </td> 
          <td> 
            <table> 
              <tr> 
                <td> <img src = "hg.gif" /> </td> 
              </tr> 
              <tr> 
                <td> Preis: 139,99 DM </td> 
              </tr> 
            </table> 
          </td> 
        </tr> 
      </table>
</body>

1.2.3 Daten- versus dokumentenzentriert

Wie angesprochen, ist die Dekomposition eines datenzentrischen Dokuments relativ einfach, während die Struktur eines dokumentenzentrischen Typs nur schlecht vertikalisiert werden kann. Auch eine Auflösung der Verschachtelung ist nur bedingt möglich, sie würde zu einer semantischen Änderung führen. Und SQL ist für das Abfragen eines solchen Dokuments ungeeignet. Wird in einer DTD beipielsweise eine Rekursion definiert, so lassen sich Dokumente mit beliebiger Verschachtelungstiefe erstellen. Um diese zu erfassen, müsste man die transitive Hülle der Elemente berechnen. Diese Möglichkeit besteht bis einschließlich SQL 2 nicht. Oracle bietet zwar Erweiterungen des SQL-Standards an, jedoch sind diese weder allgemein gültig noch standardisiert. Trotzdem gibt es in allen gängigen RDBMS Möglichkeiten, XML-Dokumente zu verarbeiten, in Relationen zu pressen, XML aus Daten einer Tabelle zu formen und die Daten abzufragen.

1.3 Relationen nach XML

Diese Wandlung ist recht einfach und geht ohne größere Probleme vonstatten. Es sind zwei Wege denkbar. Beim modellbasierten Verfahren bilden XML-Elemente das Schema und die Extensionen der Ergebnistabelle einfach nach; generiert wird ein Dokument des datenzentrischen Typs:

<table>
     <row>
       <col1> ... </col1>
       <col2> ... </col2>
       ...
     </row>
</table>

Beim Template-basierten Verfahren läuft es anders. Es existiert ein XML-Dokument mit speziell ausgezeichneten Elementen, in die SELECT-Statements eingebettet sind. Diese werden ausgeführt und die zurückgegebenen Daten bei der Generierung des Ergebnisdokuments direkt an die entsprechende Stelle geschrieben. Bei beiden Verfahren wird die Mächtigkeit von XML nicht ausgenutzt, es dient hier lediglich als eine Art Wrapper.

1.4 XML in Relationen

Das große Problem auf diesem Weg ist die Frage, wie hierachisch aufgebaute, oft keiner regulären Struktur unterworfene XML-Daten in flachen Relationen ausgedrückt werden können. Die Transformation von datenzentrischen Dokumenten kann relativ leicht vollzogen werden, nicht aber die von dokumentorientierten, da bei diesen alle Eigenschaften von XML zum Tragen kommen. Die einfachste Möglichkeit ist, das gesamte Dokument in einer einzigen Spalte als Binary Large Object (BLOB) abzulegen. Hier gibt es keine Probleme bei der Speicherung, wohl aber bei der Abfrage dieses Dokuments. Auch ist es schwer, neue Dokumente aus Teilen eines existierenden, in der Datenbank abgelegten Dokuments zu erzeugen. Für einfache Anwendungen reicht diese Vorgehensweise jedoch aus. Ein weiterer Ansatz ist folgender: Zentrales Problem bei der Speicherung ist die Abbildung des DOM-Baumes (Document Object Model) auf Relationen. Für jedes Teilobjekt des DOM werden eigene Tabellen erzeugt, die dann mit Primär- und Fremdschlüsseln miteinander verknüpft werden, was die Struktur des DOM nachahmt. Jede darzustellende Ausprägung eines derartigen Teilobjekts eines DOMs nimmt eine Tabellenzeile in Anspruch, was speicheraufwendig sein kann. Die hohe Zahl an Joins verringert die Performance eines solchen Systems. Nachteilig ist außerdem die schlechte Erweiterbarkeit. Weiter wird ein mitunter einfaches XML-Dokument durch eine große Anzahl von Tabellen aufgebläht.

1.5 XML-Enabled versus XML-Native

Relationale Datenbanken erzeugen Kontext für Daten durch Tabellen, Joins und andere Beziehungen, können aber nicht mit der Hierachie und den mit Metadaten gefüllten XML- Dokumenten umgehen. Alle gängigen Datenbankhersteller bieten für ihre Produkte Erweiterungen an, um XML-Daten auszutauschen und zu speichern. Hier kommen die oben vorgestellten Techniken wie das Modell- oder das Template-basierte Verfahren zum Einsatz. Es handelt sich aber hierbei eher um Ad-hoc-Lösungen, die vornehmlich auf den Einsatz von datenzentrischen Dokumenten ausgerichtet sind. Dokumente der Gattung Document-Centric sind in der Regel in einer Spalte der Tabelle als Blob abgelegt. Diese Erweiterungen können nicht zufriedenstellen, wenn es bei einem System darum geht, Dokumente im eigentlichen Sinn auszutauschen. Im Folgenden soll die XML-Datenbank Tamino der Software AG erläutert werden, die die genannten Probleme löst und eine für hierachisch angeordente Daten geeignete Abfragesprache bietet, wie zum Beispiel X-Path.

2 Tamino, eine native XML-Datenbank

2.1 Was ist Tamino?

Der Tamino XML Server ist ein Informationsserver, der XML benutzt, um XML Daten von verschiedenen Quellen zu speichern und dann die Möglichkeiten der XML Transformation ausnutzt, um die gespeicherten Daten in vielfältiger Weise auszugeben. Der haupsächliche Vorteil von Tamino besteht darin, dass er die XML Daten unter Benutzung der Web und XML Spezifikationen nativ abspeichert. In die schon bestehende Infrastruktur von Webservern und Applikationsservern bettet er sich sauber ein. Ein solcher nativer Datenbankserver benutzt XML Standards: das XML Dokument ist die fundamentale Einheit der Speicherung; DTDs oder Schemas beschreiben die Struktur eines solchen Dokuments und XPath oder andere XML- spezifische Abfragesprachen lokalisieren die Daten.

2.1.1 XML Transformationsmöglichkeiten von Tamino

Tamino arbeitet typischerweise in einer Windows-, Unix oder Mainframeumgebung und benutzt die erhältlichen Industriestandards für Kommunikation. Folgende Funktionen sind eingebaut (in Klammern die verantwortliche Komponente):

Die Kommunikationsprotokolle für das XML-Processing sind HTTP und TCP/IP. Tamino arbeitet mit HTTP-Servern, kann in deren Architektur eingebaut werden (Apache, IPlanet). Daraus ergibt sich ein stabiler und sicherer Kommunikationsweg. Dies ist auch die Grundschnittstelle zum Benutzer oder zu anfragenden Systemen, über die Anfragen oder Befehle zum Ändern oder Speichern von Daten an die Datenbank geschickt werden können. Die Abfragesprache ist XPath, das in der Lage ist, hierachische Strukturen wie XML abzufragen. Solche Abfragen können ebenfalls webbasiert über einen Browser gestellt werden. Der X-Node stellt eine ODBC Schnittstelle zu externen Datenbanksystemen zur Verfügung. Die Struktur der XML Dokumente und deren Typ von Inhalt wird mit XML Schema beschrieben. XML Schema erweitert die Funktionalität von DTD (Document Type Definition). Der Tamino Schema Editor kann DTD's importieren, die dann per Hand erweitert werden können.

2.2 Die Architektur von Tamino

Tamino besteht aus 2 Hauptteilen: dem Tamino XML Server und den Produktkomponenten, die auch als Standalone Komponenten einzeln runtergeladen werden können:



2.2.1 Der Tamino XML Server

Der Tamino XML Server besteht im wesentlichen aus 6 Komponenten, welche da wären:

2.2.2 Die X-Machine

Der Name deutet es an: Die X-Machine ist Dreh- und Angelpunkt von Tamino. Sie ist ein DBMS für XML-Dokumente. Ihre haupsächliche Funktion ist das native Speichern von XML-Objekten und umgekehrt das Auslesen aus nativen XML-Datenspeichern sowie verschiedenen anderen Datenquellen. Dies geschieht aufgrund von Schemas, die vom Administrator definiert wurden. Normalerweise werden XML-Objekte in Tamino gespeichert, aber Tamino unterstützt auch andere externe Datenbanksysteme, die über ODBC oder das ADABAS System erreichbar sind. Für die Speicherung und das Auslesen ist die X-Machine in weitere Subkomponenten gegliedert, wie die Grafik zeigt:



2.2.2.1 Der XML Parser

Eingehende Daten werden vom XML Parser auf syntaktische Richtigkeit überprüft und an den Object Processor weitergereicht.

2.2.2.2 Der Object Processor

Der Object Processor wird benutzt, wenn Daten gespeichert werden sollen. Die XML Instanzen werden gegenüber dem logischen Schema validiert; während das physische Schema die Art der Speicherung definiert.

2.2.2.3 Der Query Processor

Die Abfragesprache ist X-Query. Der Query Prozessor optimiert die Abfrage anhand des gegebenen Schemas.

2.2.2.4 Der Document Composer

Der Document Composer tritt in Aktion, wenn die XML Informationen zusammengestellt werden müssen. Unter Benutzung der Speicher- und Ausgaberegeln, die in der Data Map festgehalten werden, bildet er die Informationseinheiten und gibt sie als XML-Dokument zurück. Der einfachjste Fall ist, wenn das auszugebende Objekt intern als XML gespeichert wurde. Komplexer wird es, wenn mit dem X-Node kommuniziert werden muss, um ein XML-Objekt aus nicht- XML Quellen zu generieren.

2.2.3 Der X-Node

Der X-Node ist die Schnittstelle zu externen Datenspeichersystemen:



Das X-Node-System ermöglicht es, bereits existierende Datenbanken verschiedenster Hersteller und Lokalität einzubinden. Somit kann durch eine einzige Abfrage an Tamino eine Reihe von Daten aus anderen Datenbanken zu den in Tamino gespeicherten hinzugefügt werden und als ein einziger Datensatz zurückgeliefert werden, ohne Datenbanken zu spiegeln oder umzustellen. Der Zugriff geschieht via ODBC und ist daher auf verschiedenste Server möglich. Somit kann Tamino als zentraler Server für existierende Datenbanken über das Web agieren.

2.2.4 Die Data Map



Die Data Map ist das Repository. Sie enthält alle XML Meta Informationen, XML Schemas und das Mapping zu relationalen Schemas. Sie bestimmt, wie XML-Objekte auf physikalische Datenstrukturen gemappt werden, seien sie intern oder extern lokalisiert. So können externe Datenbanken die XML Technologie nutzen. Daher enthält die Data Map Informationen, die für folgende Funktionen benötigt werden:

Tamino verwendet ein proprietäres Format zur Definition von Dokumentstrukturen, das das "normale" Schema erweitert. Die bestehenden DTD's können weiter genutzt werden, da sievom Schema Editor, einem grafischen Werkzeug, importiert werden können und sich dann in jenes Format überführen lassen, und zwar in eine fehlerlose XML Syntax. Bei der automatischen Generierung eines solchen Schemas aus einer DTD werden standardmäßig Indizes erzeugt, die später der Administrator manuell modifizieren und optimieren kann.

2.2.5 Die SQL Engine

Die SQL Engine verwaltet die relationalen Tabellen in der Datenbank und führt SQL-Abfragen durch:



Die Abfragen können die SQL Engine auf verschiedenen Wegen erreichen:


Desweiteren hat die SQL Engine eine Compiler Funktion für SQL Statements.

2.2.6 Der Tamino Manager

Über den Tamino Manager wird der Tamino Server administriert:



Der Tamino Manager ist als Client-Server Anwendung konzipiert worden und stellt eine GUI zur Verfügung, die in jedem gängigen Web-Browser läuft. Einen Eindruck über die Funktionen und die Bedienung soll folgender Screenshot geben:



Neben den grundsätzlichen Funktionen (Anlegen von Datenbanken, Start/Stopp, Backup, ...) bietet der Tamino Manager die Möglichkeit des Zugriffs auf die Data Map, um z.B. Schemas zu konfigurieren.

2.2.7 Die X-Tension

Benutzer können in C oder C++ eigene Erweiterungen definieren, die über die X-Tension aufgerufen werden. Diese werden Server Extensions genannt.



In der Data Map kann in einem Schema definiert werden, dass ein XML Objekte auf solche benutzerdefinierte Funktionen "gemappt" werden. Diese werden immer dann aufgerufen, wenn ein eingehendes Objekt geparst wird oder wenn ein Objekt geholt wird. Ein Beispiel für eine solche Funktion wäre, wenn Daten auf eine ganz bestimmte Art und Weise behandelt werden müssen, die den Standard Funktionen entgegensteht. Die Server Extensions werden über den Tamino Manager installiert. Einmal eingebaut sind sie für den Endbenutzer nicht mehr von Tamino's Standard Funktionen unterscheidbar.

2.3 Die Produktkomponenten

2.3.1 Der Schema Editor

Der Schema Editor ist ein grafisches Produkt, das bei einer typischen Installation von Tamino enthalten ist. Es hat die Aufgabe, dem Administrator bei der Erstellung von Tamino Schemas (Tamino Schema Definition Language 3 - TSD3) zu helfen. Mit diesem Produkt ist es nicht erforderlich, die Schema Syntax genau zu beherrschen, da der Editor mit dem Administrator über Dialoge kommunizieren und Schemen automatisch generieren kann. So wird Fehlern vorgebeugt und die Erstellung geht schneller vonstatten. Im folgenden soll nun etwas näher auf XML Schema und TSD3 eingegangen werden.

XML Schema beschreibt die Struktur von XML Dokumenten in XML. So können beispielsweise in einem XML Schema festgelegt werden, welche Kindelemente ein Superelement hat, wie diese angeordnet sind, welche Attribute ein Element hat, deren Standardwerte u.v.m. TSD3 ist konform zu XML Schema, enthält jedoch noch weitere Tamino-spezifische Informationen. Wie aber sieht ein Schema aus? Um dies zu illustrieren, benutzen wir ein Beipiel aus dem Krankenhaus. Es soll eine Datenbank existieren, die Informationen über Patienten speichert. Dies könnte (nicht vollständig) so aussehen:



Diese Struktur wird von folgendem XML Schema repräsentiert:

<xs:schema xmlns:xs ="http://www.w3.org/2001/XMLSchema">
<!-- Schema for patient data. This could be a fragment of a larger DTD modelling hospital data -->
<xs:element xs:name='patient'>
  <xs:complexType>
    <xs:sequence>
      <xs:element xs:ref='name' xs:minOccurs='0'/>
      <xs:element xs:ref='address' xs:minOccurs='0'/>
    </xs:sequence>
    <xs:attribute xs:name='ID' xs:type='string' xs:use='optional'/>
  </xs:complexType>
</xs:element>
<xs:element xs:name='name'>
  <xs:complexType>
    <xs:sequence>
      <xs:element xs:ref='surname'/>
      <xs:element xs:ref='firstname'/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
<xs:element xs:name='surname' xs:type='string'/>
<xs:element xs:name='firstname' xs:type='string'/>
<xs:element xs:name='address'>
  <xs:complexType>
    <xs:sequence>
      <xs:element xs:ref='street' xs:minOccurs='0'/>
      <xs:element xs:ref='housenumber' xs:minOccurs='0'/>
      <xs:element xs:ref='city' xs:minOccurs='0'/>
      <xs:element xs:ref='postcode' xs:minOccurs='0'/>
      <xs:element xs:ref='country' xs:minOccurs='0'/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
<xs:element xs:name='street' xs:type='string'/>
<xs:element xs:name='housenumber' xs:type='string'/>
<xs:element xs:name='city' xs:type='string'/>
<xs:element xs:name='postcode' xs:type='string'/>
<xs:element xs:name='country' xs:type='string'/>
</xs:schema>

Um ein Schema für Tamino zu definieren, sind 2 Schritte notwendig:

  1. Defintion der Strukturinformationen: hier sind verschiedene Möglichkeiten offen. Entweder man schreibt das Schema komplett selbst, oder man schreibt eine DTD bzw. es existiert schon eine, die dann mit Hilfe des Schema Editors in das Tamino Schema konvertiert wird.
  2. Definition der physischen Speicherinformationen (für das Mapping oder die Indizierung) durch den Einbau von Tamino-spezifischen Erweiterungen.
Warum ist dies alles überhaupt nötig?
Wenn ein Benutzer eine Anfrage an eine Tamino Datenbank macht, so erhält er als Ergebnis ein XML-Dokument. Die XML Markup Informationen werden aus den Schemas entnommen. Ein zurückgegebenes XML Objekt kann aus verschiedenen Quellen zusammengestellt worden sein, die in verschiedenen Schemas definiert wurden. So kann ein Schema Informationen über die Speicherung in der XML Datenbank von Tamino als auch in SQL Tabellen enthalten. Ein solches Schema wird auch "hybrides Schema" genannt.

Einen Eindruck über den Schema Editor soll folgender Screenshot geben:



Man sieht hier, wie den einzelnen Elementen z.B. Default-Werte, Typen, ID's, etc. gegeben werden können. Diese Informationen werden dann in die Schema-Syntax umgesetzt.

2.3.3 Tamino X-Plorer

Der Tamino X-Plorer ist eine weitere Produktkomponente im Lieferumfang vom Tamino. Hierbei handelt es sich um einen Administrationsmodul in Form einer Java-Anwendung, die vom "look and feel" - der Handhabung und dem Aussehen - sehr dem Windows-Explorer ähnelt und somit recht intuitiv zu Bedienen ist.



Der X-Plorer repräsentiert die Inhalte des Servers in einer Baumstruktur und ermöglicht das "Browsen" durch die Datenbankinhalte. Auf diese Weise können Daten angesehen, verändert oder gelöscht werden. Im folgenden drei Anwendungsbeispiele:


Übersicht über die Datenbankinhalte

Anfrage an die Datenbank stellen
Administration von Inhalt und Struktur der Datenbank

2.3.4 X-Application

Hier werden nötige Schnittstellen bereitgestellt, um über die Browserschnittstelle auf die Inhalte der Datenbank zuzugreifen. Unterstützt werden SOAP-Nachrichten und die Einbettung von Datenbankinhalten in Webseiten über speziell definierte JSP-Tags. Zur Unterstützung anspruchsvoller Geschäftslogiken kann Tamino auch über Enterprise Java Beans angesprochen werden. Die folgende Grafik enthällt eine entsprechende Übersicht:


2.3.5 JSP-Tag Library

Von besonderem Wert für kleine Anwendungen und schnelle Lösungen ist die JSP Tag Library. Da JSP eigene Erweiterungen zulässt, war die Implementierung einer solchen Library für Tamino mehr als naheliegend. Mit ihr können Datenbankzugriffe auf einfache Weise in HTML Seiten eigebettet werden, und es stehen sämtliche Mittel zur Operation auf der Datenbasis zur Verfügung. Plugins für kommerzielle Entwicklungsumgebungen zur einfachen Verwendung dieser Tags sind ebenfalls vorhanden.



2.3.6 X-Application Generator

Mit der X-Application Schnittstelle und der JSP-Tag Library sind die Grundlagen gelegt, Applikationen auch weitesgehend automatisch generieren zu lassen. Genau diese Aufgabe übernimmt der X-Application Generator. Er erstellt automatisch aus XML Dateien und zugehörigen XSL Style Sheets Java Server Pages.



2.3.7 WebDAV Server



WebDAV (Web Based Distributed Authoring And Versioning) ist eine Erweiterung des Internet Protokolls HTTP. Die neuen Methoden wie LOCK, COPY, MOVE oder PROPPATCH ermöglichen auch einen schreibenden Zugriff auf Dateien und bieten somit die Möglichkeit, auf Remote-Webservern zu arbeiten. Applikationen mit WebDAV-Unterstützung erlauben durch Versionsmanagement und Zugriffskontrolle das synchrone Arbeiten mehrerer Personen an gleichen Datenquellen. Tamino unterstütz Zugriffe über eine eigene WebDAV Schnittstelle und stellt dem Anwender darüber seine kompletten Datenbankinhalte zur Verfügung. Welche vielfältigen Möglichkeiten sich dadurch bieten, kann man sich leicht ausmalen.





Beispielsweise unterstützen MS-Office Produkte diese Technik des Datenzugriffs. Tamino kann direkt als Windows-Web-Verzeichniss eingebunden werden. MS-Office Produkte können Dokumente transparent in Tamino bearbeiten, als wären sie lokal gespeichert – mit dem Unterschied, dass diese Informationen unmittelbar im Web verfügbar sind!

2.3.7 Tamino-API



Die Tamino API ist eine echt objekt-orientierte Programmierschnittstelle für den XML-Server. Sie kann benutzt werden, um clientseitige Anwendungen zu schreiben, die auf die Tamino Datenbank und deren Daten zugreifen und diese verändern können. Die API bietet:


Beispielhaft soll ein "XMLGreeting" in eine schon bestehende XML-Datenbank eingefügt werden. Dazu sind die folgenden Schritte notwendig:
  1. Aufbau einer Verbindung zu einer schon existierenden Datenbank myDB
  2. Auswahl einer Zugriffsmethode, um die XML Daten nach dem Document Object Model (DOM) zu behandeln
  3. Einfügen eines XML-Dokuments in die Datenbank
  4. Abfrage der Datenbank nach dem eben eingefügten Dokument
  5. Abbau der Verbindung
Es wird davon ausgegangen, dass die Datenbank myDB schon existiert. Zwei Stringkonstanten halten die URI der Datenbank und die einzufügende XML-Instanz:

// URI der Tamino-Datenbank
public final static String DATABASE_URI = "http://localhost/tamino/myDB";

// XML-Dokuments
public final static String XML = "Hello World";


xmlObject soll eine Instanz von TXMLObject werden; als Dokumentenstruktur wird DOM benutzt. Also wird xmlObject eine DOM-Repräsentation des Dokuments sein:

// XML-Inhalt in einen StreamReader
StringReader stringReader = new StringReader( XML );

// Instantiierung eines leeren TXMLObject nach DOM
TXMLObject xmlObject = TXMLObject.newInstance( TDOMObjectModel.getInstance() );

// Fertigstellen der DOM-Repräsentation durch Lesen des Inhalts
xmlObject.readFrom( stringReader );


Nun kommen die oben angesprochenen 5 Schritte. Zunächst Aufbau der Verbindung:

// Verbindungsaufbau
TConnection connection = TConnectionFactory.getInstance().newConnection( DATABASE_URI );


Eine TConnection entspricht einer Session. Jetzt die Erzeugung des TXMLObjectAccessor für den späteren Zugriff:

TXMLObjectAccessor xmlObjectAccessor = connection.newXMLObjectAccessor(
TAccessLocation.newInstance( "ino:etc" ),
TDOMObjectModel.getInstance() );


Es folgt das Einfügen des XML-Dokuments:

// Einfuegeoperation
xmlObjectAccessor.insert( xmlObject );

// Anzeige der zugehoerigen ino:id
System.out.println( "Insert succeeded, ino:id=" + xmlObject.getId() );


Abfrage an die Datenbank:

// Vorbereitung des Lesens der Instanz
TQuery query = TQuery.newInstance( xmlObject.getDoctype() + "[@ino:id=" + xmlObject.getId() + "]" );

// Abfrage
TResponse response = xmlObjectAccessor.query( query );
if ( response.hasFirstXMLObject() ) {
StringWriter stringWriter = new StringWriter();
response.getFirstXMLObject().writeTo( stringWriter );
System.out.println( "Retrieved following instance:" + stringWriter );
}
else
System.out.println( "Keine Instanz gefunden!" );


Abbau der Verbindung:

connection.close();


Hier ist deutlich geworden, dass die API recht intuitiv zu bedienen ist (wie Java im Allgemeinen :-)). Auf weitere Einzelheiten soll nicht mehr eingegangen werden; dies würde den Rahmen dieser Arbeit sprengen.

3. Positionierung von Tamino im Markt der XML Datenbanken


Größter Funktionsumfang entfällt auf die XML DB eXceleron



Spitzenreiter bei den vergebenen Lizenzen ist TAMINO



Geographische Verteilung der XML DB: Auf Europa / mittlere Osten und Afrika fällt der größte Anteil



Die von den Herstellern erwartete bzw. erhoffte Marktentwicklung am Markt der nativen XML Datenbanken. Sollte dies zutreffen, dann müssten wir alleine dieses Jahr fast mit einer Verdoppelung des Marktes rechnen.