XML in relationalen Datenbanken

Werbung
Studiengang Informatik
Seminararbeit zum Seminar Allgemeine Informatik
XML in relationalen Datenbanken
Tobias Webelsiep
Sommersemester 2003
Betreuer: Prof. Dr. V. Klement
Stand: 1. April 2003
Inhaltsverzeichnis
1 Einführung
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 XML - eXtensible Markup Language
2.1 Die Entwicklung von XML . . . . . . . . . . . . . .
2.2 Warum XML? . . . . . . . . . . . . . . . . . . . . .
2.3 Aufbau von XML-Dokumenten . . . . . . . . . . .
2.3.1 Syntax . . . . . . . . . . . . . . . . . . . . .
2.4 DTD und XML-Schema . . . . . . . . . . . . . . .
2.4.1 Was ist DTD? . . . . . . . . . . . . . . . . .
2.4.2 Die Vorteile des XML Schemas . . . . . . .
2.5 Anpassung der Darstellung über Stylesheets . . . .
2.5.1 Cascading Style Sheet . . . . . . . . . . . .
2.5.2 XSL Transformationen . . . . . . . . . . . .
2.5.3 XPath - Navigation durch XML Dokumente
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Speicherverfahren von XML in RDBMS
3.1 XSLT als einfaches Beispiel . . . . . . . . . . . . . . . .
3.2 Speicherung von XML als CLOB . . . . . . . . . . . . .
3.2.1 Probleme bei der Speicherung von XML . . . . .
3.2.2 Vorteile für die Speicherung von XML als CLOB
3.3 Abbildung des XML Schemas auf ein Relationenschema .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
6
8
8
9
10
10
10
13
.
.
.
.
.
14
14
16
16
17
17
4 Ausgabe relationaler Daten im XML-Format
19
4.1 Darstellung einer Tabelle in XML . . . . . . . . . . . . . . . . . . . . . . 19
4.2 Erweiterung von SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Vorschlag zur Darstellung relationaler Daten . . . . . . . . . . . . . . . . 20
5 XML-Schnittstellen zu Datenbank-Management-Systemen
5.1 Oracle 9i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Microsoft SQL Server 2000 . . . . . . . . . . . . . . . . . . . .
5.3 DB2 XML-Extender von IBM . . . . . . . . . . . . . . . . . .
5.3.1 CLOB-Erweiterung . . . . . . . . . . . . . . . . . . . .
5.3.2 Abbildung zwischen Relationenschema und DTD . . .
5.4 MySQL und XML . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
22
22
24
25
25
26
26
6 Zusammenfassung
27
6.1 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Literatur
28
Einführung
1
Seite 3
Einführung
In den letzten Jahren haben sich relationale Datenbanken als das Medium zur Speicherung verscheidenster Daten etabliert. Der Verbreitungsgrad von RDBMS (Relational
DataBase Management System) ist auf die kompfortable und standardisierte Abfragesprache SQL (Structured / Standard Query Language) zurückzuführen.
Die Gestaltung und der Verbreitungsgrad von Informationen haben sich im Zeitalter
des Internets stark geändert. Informationen sollen nicht nur im Internet publiziert, sondern auch dauerhaft und leicht abrufbar gespeichert werden oder auf andere Systeme
und Medien übertragbar sein. Diese Information müssen also inhaltstreu, aber beliebig
umwandelbar, flexibel, aber doch einheitlich gespeichert und statisch, aber teilweise austauschbar und abrufbar sein.
1.1
Motivation
Daraus erwächst die Notwendigkeit einer neuen Struktur der Information und somit
einer neuen Sprache zur Beschreibung dieser Struktur. So eine Sprache nennt man Markup Language. Die wohl bekannteste Markup Language ist HTML. Zwar eignet sich
HTML hervorragend für die Darstellung von Internetseiten, doch ist sie für die Übertragung der Information auf andere Medien ungeeignet. Abhilfe soll deshalb der Nachfolger
XML schaffen.
XML wird heutzutage schon an vielen Stellen zu Informationsdarstellung und -strukturierung eingesetzt, wie die Fülle an XML-Ausprägungen, so genannten Auszeichnungssprachen, beweist. Hier einige Beispiele:
• BSML (Bioinformatic Sequence Markup Language)
• MathML (Mathematical Markup Language)
• AIML (Astronomical Instrument Markup Language)
• und viele mehr
Durch die heutige Infrastruktur treffen relationale Datenbanken und XML Dokumente immer häufiger aufeinander. XML Dokumente sollen bequem zu speichern und
relationale Daten im XML-Format darstellbar sein. Aus dieser Forderung ist es nötig,
Schnittstellen und neue Verfahren im Umgang mit XML und relationalen Daten zu entwicklen und besonders zu standardisieren, was sonst die Flexibilität und Unabhängikeit
von XML und der RDBMS und weit einschränkt.
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
2
Seite 4
XML - eXtensible Markup Language
2.1
Die Entwicklung von XML
XML wurde 1996 vom W3C (World Wide Web Consortium) vorgeschlagen und am
10.02.1998 als Standard verabschiedet. Dem W3C gehören führende Software-Hersteller
wie Microsoft, Sun und IBM an, die sich mit der Standardisierung des Internets beschäftigen.
XML ist ein einfaches, aber sehr flexibles Textformat, welches von der Beschreibungsprache SGML (Standard Generalized Markup Language) abgeleitet ist. SGML wurde
schon im Jahre 1986 standardisiert, ist aber sehr umfangreich und für die meisten Zwecke
zu komplex.
Die aktuell verfügbare Version XML 1.0 (Second Edition) wurde vom W3C am
06.10.2000 herausgegeben. Dabei wurden die folgenden 10 Punkte als Ziel des Designs
zu Grunde gelegt [W3CX03]:
1. XML soll sich über das Internet leicht benutzen lassen
2. XML soll ein breites Anwendungsspektrum unterstüzen (plattformunabhängiges
Format zum Austausch von Daten)
3. XML soll kompatibel zu SGML sein
4. Die Programmierung von Programmen, welche XML benutzen, soll einfach sein
5. Es sollte keine zusätzlichen Features geben
6. XML Dokumente sollen leicht lesbar und verständlich sein
7. Das Design soll schnell zu erstellen sein
8. Das Design soll formal und prägnant sein
9. XML Dokumente sollen leicht zu erstellen sein
10. Lesbarkeit geht über kurze Notation
2.2
Warum XML?
XML ist wie HTML (Hyper Text Markup Language) eine Beschreibungssprache für
strukturierte Dokumente. Die Ausrichtung von XML liegt aber dabei nicht in der Präsentation (von Internetseiten), wie bei HTML, sondern auf der eigentlichen Struktur des
Dokuments und dem plattformunabhängigen Austausch von Daten. Der Beweggrund für
die Entwicklung von XML war die stark wachsende Bedeutung elektronischer Daten und
die vielen Publizierungen im Internet.
Mit XML soll es möglich sein, die Informationen verscheidener Ebenen zu unterscheiden und zu trennen. XML verdeutlicht dabei nicht die Gestaltung des Dokuments,
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
Seite 5
sondern die Struktur und Semantik von Dokumenten. Mit der Verwendung von XML
werden einem Dokument Meta-Daten hinzugefügt, d. h. Zusatz-Information zum Inhalt.
Eine Forderung von Autoren und Entwicklern sind weitere Strukturierungsmöglichkeiten (Tags), um ihre Dokumente besser unterteilen zu können. Doch sind diese Tags
meist zu speziell, angepasst auf das Anwendungsgebiet, um sie dem Standard von HTML
hinzuzufügen. Andererseits ist die Fülle der Tags in HTML oft so komplex, dass man
sich weniger Tags wünscht, diese aber auf den Inhalt des Dokuments abgestimmt sein
sollen.
XML kommt diesen Forderungen nach:
• In XML gibt es keine definierten Tags
• Die Interpretation ist strenger und genauer
2.3
Aufbau von XML-Dokumenten
Die interne Struktur eines jeden XML-Dokumentes ist ein Baum. Dadurch wird einem
Dokument eine ganz neue Struktur zugeordnet, wie man sie sonst in der Textverarbeitung oder in HTML kennt.
Abbildung 1: Die Baumstruktur eines XML Dokuments
Durch diese Tatsache ist es viel leichter möglich XML-Dokumente in Softwareprogrammen zu verarbeiten. Auch der Austausch von Daten gestaltet sich dadurch einfacher. Zwar ist immer noch die Information über den Inhalt des Dokumentes erforderlich,
doch die interne Struktur zum Verarbeiten der Inhalte ist immer gleich. XML ist somit
das Mittel und die Voraussetzung für die Verarbeitung generischer Daten. [XMLX99]
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
2.3.1
Seite 6
Syntax
Auch wenn in XML vieles selbst definiert werden kann, benötigt man doch einer klaren
Syntax, die im Gegensatz zu HTML zwingend eingehalten werden muss. Wie wäre es
sonst möglich vernünftige Parser und Interpreter zu schreiben oder den reibungsloaden
Austausch von Daten zu gewährleisten.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Meine Bücherliste -->
<buchliste>
<buch ausgabe="t">
<autor> Erik T. Ray </autor>
<titel> Einführung in XML </titel>
<verlag> O’Reilly </verlag>
<erscheinungsjahr> 2001 </erscheinungsjahr>
<isbn> 3897212862 </isbn>
</buch>
</buchliste>
Abbildung 2: Code-Beispiel für XML (buchliste.xml )
Deklaration Zu Beginn eines jeden XML Dokuments steht die XML-Deklaration, die
eine ASCII- Datei als XML-Datei identifiziert und den verwendeten Zeichensatz (ISONorm) angibt.
<?xml version="1.0" encoding="ISO-8859-1"?>
Stylsheet Für die Gestaltung der Präsentation von XML-Dokumenten gibt es folgende
Möglichkeiten:
• CSS (Cascading Style Sheet)
<?xml-stylesheet href="buecher.css" type="text/css"?>
• XSL (Extensible Stylesheet Language)
<?xml-stylesheet href="buecher.xsl" type="text/xsl"?>
Das Verwenden von Stylesheets sollte möglichst gleich nach der XML-Deklaration stehen.
Kommentar Wie in Programiersprachen ist auch hier die Möglichkeit gegeben in
einem Dokument Kommentare zu verwenden, welche den Code lesbarer machen, jedoch
vom XML-Prozessor ignoriert werden.
<!-- Ich bin ein Kommentar, den keiner beachtet -->
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
Seite 7
Tag Ein Element wird immer aus einem Start-Tag und einem Ende-Tag gebildet. Der
Start-Tag wird von einem < und einem >, ein Ende-Tag von einem </ und > umschlossen,
wie es auch von HTML her bekannt ist. Doch im Gegensatz zu HTML wird die Groß- und
Kleinschreibung berücksichtigt und es muss zu jedem Start-Tag einen Ende-Tag geben.
Auch auf die konkrete Schachtelung wird geachtet, damit die Baumstruktur erhalten
bleibt. Ähnlich wie in HTML gibt es auch in XML Leere Tags oder Leere Elemente, wie
z.B. <BR>. In XML müsste ein solcher Tag <BR></BR> lauten oder verkürzt als Leerer
Tag <BR/>.
Abbildung 3: Aufbau eines XML-Tag
Attribute Jeder Tag kann Attribute (Parameter) enthalten. Die Notation ist fest vorgegeben. Attribute werden durch ein Leerzeichen getrennt. Der Wert des Attributs wird
nach einem = in Anführungszeichen bzw. Apostroph angegeben.
<buch isbn="1234567890" ausgabe="taschenbuch"/>
Entity-Referenzen Die in XML vordefinierten Entiy-Referenzen, dienen dazu, dass
diese Zeichen nicht falsch interpretiert werden. Die vordefinierten Entiy-Referenzen sind
& &, < <, > >, " " und ' ’ Es können auch eigene definiert
werden, wodurch häufig verwendete Textpassagen einheitlich gestalltet werden können.
<!ENTITY copyright "(C) 2003 Tobias Webelsiep">
&copyright; wird umgesetzt in (C) 2003 Tobias Webelsiep
CDATA Zeichen innerhalb eines CDATA-Abschnittes werden unverändert übernommen, d.h. es dürfen auch Zeichen wie < und & verwendet werden.
<![CDATA[Ich schreibe < und & wie ich will]]>
Abbildung 4: Anzeige einer XML-Datei im Internet Explorer
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
2.4
2.4.1
Seite 8
DTD und XML-Schema
Was ist DTD?
DTD (Document Type Definition) legt die Struktur von XML Dokumneten fest, indem
sie die verwendeten Elemente, die Reihenfolge, die Anzahl und die Beziehungen untereinander definiert. Die zu verwendende DTD wird innerhalb des XML Dokuments direkt
nach der XML-Deklaration in der XML-Datei selbst
<!DOCTYP DTD_Name[DTD_Inhalt]>
oder als Verweis auf eine externe Datei
<!DOCTYPE wurzelelement SYSTEM "DTD_Name.dtd">
angegeben.
Innerhalb der DTD werden alle Elemente, Attribute, Notationen und Entitäten definiert. Auf den genauen Aufbau, die Notation sowie auf Schlüsselwörter gehe ich an
dieser Stelle nicht weiter ein, es würde sonst den Rahmen dieses Seminares sprengen.
Der Vollständigkeit halber hier noch ein kleines Beispiel:
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
buchliste (buch+)>
buch (isbn, autor, titel, verlag, erscheinungsjahr)>
buch ausgabe (t|g|r) ’g’>
autor
(#PCDATA)>
titel
(#PCDATA)>
verlag
(#PCDATA)>
erscheinungsort (#PCDATA)>
erscheinungsjahr (#PCDATA)>
isbn
(#PCDATA)>
Abbildung 5: Code-Beispiel für DTD (buchliste.dtd )
Es ist möglich den Elementen eine Gruppierung (), ihr Reihenfolge durch , getrennt,
die Anzahl ohne Angabe, ?, +, * und eine Wahlmöglichkeit | zuzuordnen. Zudem
werden zu jedem Element die Attribute angegeben, wie z.B. die ausgabe zu der es
mehrere Möglichkeiten gibt, wobei g gilt, wenn nichts angegeben wurde. Die Bezeichnung
#PCDATA steht für eine beliebige Zeichenkette, die keine Elemente enthält.
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
2.4.2
Seite 9
Die Vorteile des XML Schemas
DTD und XML Schema haben im Grunde die gleiche Funktion: Sie beschreiben die
Struktur von XML Dokumenten. Doch weißt DTD einige Schwachstellen auf:
• DTDs besitzen eine eigen Syntax und ist somit nicht XML konform
• DTD besitzt nur wenige Datentypen. Es fehlen z.B. spezielle Zahlenformate, Datum usw.
• Die fehlende Angabe des Datentyps erzeugt Probleme bei der Kommunikation
zweier Applikationen.
• Die Erweiterungsmöglichkeiten beschränken sich nur auf Makrofunktionalitäten
Ganz im Gegenteil zu XML Schema. Es wurde im Jahre 2001 vom W3C als Standard
veröffentlicht und ist wiederum ein XML Dokument, welches Regeln für die Überprüfung anderer XML Dokumente zur Verfügung stellt. Da es sich um eine vollwertiges
XML Dokument handelt, stehen alle vorhanden Funktionen von XML zur Verfügung.
XML Schemas können geparst und selbst wieder durch eine DTD oder ein XML Schema
definiert werden.
Das vorherige Beispiel der DTD sieht in als XML Schema folgender Maßen aus:
<xsd:element name="buchliste" type="buch"/>
<xsd:element name="buch>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="autor" type="xsd:string"/>
<xsd:element name="titel" type="xsd:string"/>
<xsd:element name="verlag" type="xsd:string"/>
<xsd:element name="erscheinungsort" type="xsd:string"/>
<xsd:element name="erscheinungsjahr" type="xsd:date"/>
<xsd:element name="isbn" type="xsd:string"/>
<\xsd:sequence>
<xsd:attribute name="ausgabe" value="g" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:element>
Abbildung 6: XSLT - Skript (buchliste.xsl )
Ein weitere Vorteil des XML Schemas ist die Einführung von Namensräumen. Damit
kann ein Namenskonflikt von z.B. Elementen verhindert werden, besonders wenn man
ein fremdes XML Schema einsetzt.
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
2.5
2.5.1
Seite 10
Anpassung der Darstellung über Stylesheets
Cascading Style Sheet
Die einfachste Form die Darstellung von XML Dokumenten zu verändern, ist die Verwendung eines CSS (Cascading Style Sheet). Die Auswirkungen auf die Anzeige lassen
sich am besten in einem Internet-Browser testen.
Die Deklarartion des CSS muss direkt nach der XML-Deklaration stehen:
<?xml-stylesheet type="text/css" href="buch.css" ?>
Die Angabe des CSS ist gleich wie in HTML, nur das Schachtelungen nach der Baumstruktur des XML Dokuments möglich sind. Die CSS einer höheren Ebene (parent) ist
auch für Unterelemente gültig (child).
Hier nun ein Ausschnitt für eine solche CSS-Datei:
buchliste{ font-family: verdana; background-color: #FFFFFF; }
buch{ margin-bottom: 20pt; design: block; }
autor{ font-size: 16pt; color: #000080; }
titel{ font-size: 12pt; color: #800000; }
...
Abbildung 7: CSS für XML Dokumente (buchliste.css )
Klar sollte aber sein, dass mit CSS nur das Aussehen und nicht die Struktur von
XML Dokumenten verändert wird. Dafür wurde eine Eigene Stylesheet-Sprache names
XSL entwickelt.
2.5.2
XSL Transformationen
Im Zuge der Entwicklung von XML erfuhr auch die Stylesheet-Sprache, die ursprünglich
für HTML entworfen wurde, einige Veränderungen. Die Stylesheet Sprache für XML
heißt Extensible Stylesheet Language (kurz XSL). Sie ist den besonderen Erfordernissen
von XML angepasst und wandelt die strukturellen oder semantischen Auszeichnungen
in visuelle Ausgaben um. Das folgende XML-Beispiel soll die Problematik noch einmal
verdeutlichen:
<geburtsdatum>01.09.1968</geburtsdatum>
Diese so ausgezeichnete Zeile sagt uns zwar, dass es sich bei dem eingeschlossenen
Datum um ein Geburtsdatum handelt, sie trifft aber noch keinerlei Aussagen über die
Art der Darstellung. In diesem Fall müssen zusätzlich zur semantischen Auszeichnung
noch mitteilet werden, wie er mit den eingesetzten Tags umzugehen hat. Dies geschieht
mit Hilfe einer XSL-Definition.
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
Seite 11
Durch die XSL-Definition können XML-Dokumente in andere Dokumenten-Formate
konvertiert werden. Dazu benötigt man die zu transformierende XML-Datei und die
die Transformationsregeln enthaltende XSL-Datei. Ein XSL-Prozessor verknüpft“ die
”
beiden Dateien miteinander und erzeugt die Datei in dem gewünschten Format, z.B.
HTML oder ein PDF.
Abbildung 8: Schema zur XSL Transformation
XSL ist eine umfangreiche und mächtige Sprache, deren einzelne Elemente ich nur
kurz eingehen möchte.
XSLT Elemente Es gibt hier wiederum Gruppen von Elementen die z.B.
• Regeln definieren (<xsl:template>)
• Einträge für die Ausgabedatei erzeugen (<xsl:text>)
• steuern von Bedingungen (<xsl:if>)
• nummerieren von Elementen (<xsl:number>)
XPath wird genutz, um bestimmte Elemente im Baum anzusprechen oder durch den
Baum zu navigieren. Weiter Informationen zu XPath finden Sie im nächsten Abschnitt
(2.5.3).
XSLT Muster ist ein Ausdruck, den ein Element des Eingabebaumes erfüllen muss.
Wenn ein Muster, zutrifft werden definierte Regeln angewandt. Das Beispiel zeigt ein
definiertes Muster, welches auf die Elemente mit dem Namen <buch> zutrifft:
<xsl:template match="buch"/>
XSLT Funktionen gibt es für die verscheidensten Gebiete, wie z.B. Typumwandlung,
Arithmetik, Maniupulation von Zeichenketten usw.
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
Seite 12
Die Umwandlung unserer Buchliste ins HTML-Format benötigt z.B. folgendes XSLSkript.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Buchliste</title>
</head>
<body>
<h1>Buchliste</h1>
<table>
<tr>
<td><b>Autor<b></td>
<td><b>Titel<b></td>
<td><b>Verlag<b></td>
<td><b>Erscheinungsort<b></td>
<td><b>Erscheinungsjahr<b></td>
<td><b>ISBN<b></td>
</tr>
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="buchliste">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="buch">
<tr>
<td><xsl:value-of select="child::autor"/></td>,
<td><xsl:value-of select="child::titel"/></td>,
<td><xsl:value-of select="child::verlag"/></td>,
<td><xsl:value-of select="child::erscheinungsort"/></td>,
<td><xsl:value-of select="child::erscheinungsjahr"/></td>,
<td><xsl:value-of select="child::isbn"/></td>;
</tr>
</xsl:template>
Abbildung 9: XSLT-Skript zur Umwandlung von XML in HTML
XML in relationalen Datenbanken
Tobias Webelsiep
XML - eXtensible Markup Language
Seite 13
An diesem Skript erkennt man, dass XSL-Dateien ebenfalls XML-Dateien sind. Mit
dem XSL-Prozessor XALAN vom Apache-Projekt kann daraus eine HTML-Datei erzeugt werden. Der Aufruf lautet:
> xalan -in buecher.xml -xsl buecher.xsl -out buecher.html
Die daraus resultierende HTML-Datei zeigt eine Tabelle mit allen Büchern an.
2.5.3
XPath - Navigation durch XML Dokumente
XPath wurde im Zusammenhang mit XSLT entwicklet. Mit XPath steht eine Patternsprache zur Verfügung, mit der deren Hilfe sich auf einfache Weise Teile eines XMLBaumes selektieren lassen. XPath-Ausdrücke werden bisher vor allem innerhalb von
XSLT Stylesheet eingesetzt. Hierfür stellt XPath eine kompakte Pfad-Notation zur Verfügung, welche zur Berechnung von Zahlen oder zur Manipulation von Text-String eingesetzt wird. [EIXP03]
XPath-Ausdrücke bestehen aus folgen drei Hauptelementen:
1. dem Kontext,
2. aus Achsen vom Kontext ausgehendend,
3. und Knotentests
Beispiele gibt es in fast allen XSLT-Skripten:
<xsl:value:of select="autor"/> Direkte Angabe eines Elementnames
<xsl:value:of select=".."/>
Wert des Vaters
Zusätzlich zu XPath gibt es noch die Sprachen XPointer besonders zur Verlinkung
von Dokumenten gedacht und XQuery für den datenbankähnlichen Zugriff auf XML
Dokument-Sammlungen. Die Sprachen sollen in den Standard von XPATH 2.0 intergriert werden.
Aber XPath ist nicht das einzige Mittel, um auf XML-Daten zuzugreifen. In Konkurenz gibt es einige APIs meist mit besonderen Schwerpunkten.
• DOM ist besonders zur Manipulationder XML-Struktur geeignet
• SAX wurde für das sequenzielle Parsen und Bearbeiten von XML-Dokumenten
entwickelt.
Die Unterstützung und Verwendung von XPath wurde schon in Java, aber auch in
einigen relationalen Datenbanken (z.B. DB2 von IBM) umgesetzt.
Auf die Syntax von XPath und auf die Verwendung wird hier nicht weiter eingegangen. Für mehr Informationen sei auf die Homepage des W3C [W3CP03] oder auf
Fachliteratur verwiesen.
XML in relationalen Datenbanken
Tobias Webelsiep
Speicherverfahren von XML in RDBMS
3
Seite 14
Speicherverfahren von XML in RDBMS
Für die Speicherung von XML Dokumenten in relationalen Datenbanken gibt es verschiedene Ansätze.
Ein Ansatz ist die Verwendung eines XSLT Skripts zur Erstellung von SQL Statements, um die Inhalte in einer Tabelle zu speichern. Dieser Ansatz ist relativ einfach
doch nur auf einfache Anwendungsgebiete und einfach strukturiert XML Dokumente
beschränkt.
Zwei weitere Ansätze werden direkt durch die Datenbanksystemhersteller unterstützt. Zum einen wird ein XML-Dokument komplett in einer Tabellenzelle als CLOB
(Charakter Large Object) gespeichert. Doch ist hierbei der Zugriff auf einzelne Teile des
gespeicherten XML-Dokumentes eingeschränkt, da das Datenbanksystem nichts über
die innere Struktur des Dokuments weiß. Der zweite Ansatz sieht vor, die Struktur des
XML-Dokuments zu untersuchen und diese in relationaler Form bzw. in mehreren Tabellen abzubilden.
3.1
XSLT als einfaches Beispiel
Eine einfache Möglichkeit XML-Daten in einer relationalen Datenbank zu speichern, ist
die Verwendung ein XSL Skripts. Diese Methode benötigt keine Unterstützung von Datenbankseite, da die Daten wie gewohnt per SQL Befehl in die Datenbank geschrieben
werden können.
Nehmen wir wieder unser Beispiel von der Buchliste (siehe 2.3.1). Zunächst müssen
wir in der Datenbank eine entsprechende Tabelle anlegen:
CREATE TABLE buchliste
(
pk
integer primary
autor
varchar(50) not
titel
varchar(50) not
verlag varchar(50) not
ort
varchar(30),
jahr
date,
isbn
char(10)
);
key,
null,
null,
null,
Abbildung 10: SQL-Statement zur Erstellung einer Tabelle
XML in relationalen Datenbanken
Tobias Webelsiep
Speicherverfahren von XML in RDBMS
Seite 15
Diese Tabelle kann durch SQL-Befehle gefüllt werden. Zur Erzeugung des SQLBefehle bedient man sich wieder eines XSL-Skriptes.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="no" method="text"/>
<xsl:template match="/">
<xsl:apply-template/>
</xsl:template>
<xsl:template match="buch">
INSERT INTO buchliste
(pk, autor, titel, verlag, ort, jahr, isbn)
VALUES(<xsl:number/>,
’<xsl:value-of select="autor"/>’,
’<xsl:value-of select="titel"/>’,
’<xsl:value-of select="verlag"/>’,
’<xsl:value-of select="ort"/>’,
’<xsl:value-of select="jahr"/>’,
’<xsl:value-of select="isbn"/>’);
</xsl:template>
</xsl:stylesheet>
Abbildung 11: XSLT-Skript zur Umwandlung von XML in SQL
Diese Art der Speicherung birgt aber einige Nachteile und Gefahren:
• Ist es in der XML Datei möglich ein Element beliebig oft anzugeben, so kann das
nur schwer in eine einzelne Tabelle abgebildet werden
• Es kann nur eine flache Baumstruktur umgesetzt werden, die keine Rekursion und
keine Bedingungen enthält
• Die Unterscheidung von Elementen und Attributen geht verloren
Mit diesem Ansatz ist die Speicherung zwar schnell umgesetzt, doch für die Praxis
in den meisten Fällen unbrauchbar. Deshalb gibt es zwei weitere Ansätze, die auf die
Unterstützung der Datanbanksystem angewiesen sind.
XML in relationalen Datenbanken
Tobias Webelsiep
Speicherverfahren von XML in RDBMS
3.2
Seite 16
Speicherung von XML als CLOB
Ein weit verbreiteter Ansatz zur Speicherung von XML-Dokumenten ist die Datenhaltung in einer Tabellenspalte als CLOB (Character Large Object). Wie schon zu Beginn
dieses Kapitels erwähnt, ist dieser Ansatz nicht so mächtig, wie die Abbildung auf ein
relationales Datenmodell. Die Speicherung als CLOB ist oft umumgänglich.
3.2.1
Probleme bei der Speicherung von XML
Ein Problem stellt oftmals die Stuktur der XML Dokumente dar. Die hierarchische
Baumstruktur ist oft schwer in ein relationales Schema umzusetzen. Zur Klassifizierung
von XML Dokumenten führen Datenbanksysteme eine Untersuchung desselben durch,
um die geeignete Speichermethode zu finden.
Die in der DTD oder dem XML-Schema möglicherweise festgelegten Abhängigkeiten oder Rekursion von Elementen ist ein weiters Problem, welches die Speicherung
als CLOB bedingt, da eine Abbildungen auf Tabellen und Beziehungen praktisch nicht
möglich ist.
Bei der Abbildung geht Informationsgehalt verloren. So sind die Elemente in einem
XML Dokument serialisiert, d.h. in fester Reihenfolge. Die Tupel einer Tabelle dagegen
sind ungeordnet. Die Information über die Reihenfolge muss extra gespeichert werden.
Subelemente innerhalb eines Elements sind ebenfalls nur schwer zu speichern.
<Absatz>
Normaler Text <fett>Fetter Text</fett> Normaler Text
</Absatz>
Die dazugehörige DTD bzw. das XML-Schema enthält dafür den Operator |, um
zwischen Normalen Text“ oder Fettem Text“ zu unterscheiden. Weitere Operatoren
”
”
wie *, + und ? rufen die gleichen Probleme hervor.
Schwierig gestaltet sich auch die Speicherung von Attributen. Nach der Speicherung
in einer Tabelle kann man ohne Zusatzinformationen nicht unterschieden werden, ob es
sich um ein Attribut oder ein Kind1 -Element handelt.
1
Kind- bzw. Elternelement ergibt sich aus der Baumstruktur von XML
XML in relationalen Datenbanken
Tobias Webelsiep
Speicherverfahren von XML in RDBMS
3.2.2
Seite 17
Vorteile für die Speicherung von XML als CLOB
Wie durch die oben geschilderten Probleme dargestellt, scheint es nicht sinvoll, beliebig
komplexe XML Dokumenten auf ein Relationenmodell abzubilden. XML Dokumente
besitzten Meta-Daten, die sinnvoll gespeichert werden müssen, wie z.B.
• Kommentare
• CDATA-Blöcke
• XML Schema-Definition
• Entitiy-Referenzen
Sind Metainformationen in einem XML Dokument von großer Wichtigkeit oder müssen alle Information in dem Dokument verlustfrei gespeichert werden, so muss auf die
Speicherung in einem CLOB zurückgegriffen werden.
Für den Zugriff auf CLOB unterstützen Datenbanksysteme Suchfunktionen wie zur
Navigation durch die Baumstruktur eines Dokumentes.
3.3
Abbildung des XML Schemas auf ein Relationenschema
Für viele Anwendungsgebiete benötigen XML Dokumente, keinen komplexen Aufbau,
wenn es sich um datenorientierte Dokumente handelt. Datenorientiert sind XML Dokumente, die für den Transport von Daten XML benutzen, somit für Maschinenlesbarkeit
optimiert sind. Diese XML Dokumente weisen häufig eine regelmäßige und einafche
Struktur auf, wie z.B. Bestellungen, Produktdaten oder Börsenkurse. Auch sind
Die oben genannten Probleme bei der Speicherung treffen deshalb auf datenorientierte XML-Dokumente oft nicht zu. Daher ist es möglich die XML-Struktur auf ein
Relationenschema abzubilden. Die Vorteile dieser Speichermethode sind offensichtlich:
• Für den Zugriff auf die gespeicherten Daten können SQL-Abfragen verwendet werden.
• Alle Vorteile von Datenbanksystemen (Indices usw.) können genutzt werden
• Elemente des gleichen Typs werden zentral über eine Tabelle verwaltet.
Trotz der kompfortablen Abfrage ist die Wiederherstellung der XML-Datei aufwendiger,
als bei der Speicherung in CLOB, da die Daten aus mehreren Tabellen zusammengesucht
werden müssen.
XML in relationalen Datenbanken
Tobias Webelsiep
Speicherverfahren von XML in RDBMS
Seite 18
Die Umwandlung eines XML Schemas in eine Relationenschema entspricht folgender
Vorschrift: [RDXD03]
1. Erzeuge eine Tabelle für jeden Elementtyp mit Subelementen bzw. gemischtem
Inhalt
2. Erzeuge eine separate Tabelle für jeden Elementtyp mit gemischtem Inhalt zur
Speicherung des PCDATA-Anteils und verknüpfe sie über den Primärschlüssel
mit der Tabelle des Elementtyps
3. Erzeuge für jedes einwertige Attribut und Subelement, das nur PCDATA enthält
eine Spalte. Die Spalte muss NULL akzeptieren wenn das Subelement, Attribut
optional ist.
4. Erzeuge für jedes mehrwertige Attriburte und Subelemente eine eigene Tabelle
und verknüpfe sie mit der Tabelle des Elementtyps.
5. Verknüpfe für jeden Subelementtyp oder gemischtem Inhalt die Tabelle des Elementtyps mit der Tabelle des Subelements.
Dieser Ansatz ist eine Möglichkeit sogar mehrwertige Attribute oder gemischten Inhalt in einem Relationenmodell unterzubringen. Leider geht bei der Speicherung die
Information, ob es sich um eine Attribut oder ein Subelement handelt verloren. Für diesen Zweck müssen Zusatzinformation innerhalb oder außerhalb der Tabelle gespeichert
werden.
XML in relationalen Datenbanken
Tobias Webelsiep
Ausgabe relationaler Daten im XML-Format
4
Seite 19
Ausgabe relationaler Daten im XML-Format
4.1
Darstellung einer Tabelle in XML
Für die Ausgabe normaler relationaler Daten im XML-Format steht ein einfacher und
praktischer Mechanismus zur Verfügung. Die Ergebnistabelle einer SQL Abfrage in eine
Struktur von ROWSET-, ROW- und COLUMN-Tags umgewandelt, vergleichbar mit
einer HTML-Tabelle.
<TABLE>
<ROW>
<COLUMN> ... </COLUMN>
...
<COLUMN> ... </COLUMN>
</ROW>
<ROW>
<COLUMN> ... </COLUMN>
...
</ROW>
...
</TABLE>
Abbildung 12: Ausgabe einer relationalen Tabelle als Rowset in XML
Mit Hilfe eines XSLT-Skriptes ist es möglich diese Struktur in jedes beliebige Format,
also auch jede beleibige Baumstruktur umzuwandeln.
Sollen strukturierte XML-Daten aus einer Datenbank ausgegeben werden, ist es sinnvoller, den Zugriff über spezielle Datenbank-Funktion als über ein XSLT-Skript abzuwickeln. Dafür wird eine XML- Abfragesprache (XML-QL) vorgeschlagen oder die Erweiterung des bisherigen SQL-Standards.
4.2
Erweiterung von SQL
Im Jahre 2000 wurde vom SQL-Standardisierungs-Komtee die Notwendigkeit zur Normierung einer Schnittstelle von SQL zu XML frühzeitig erkannt. Da das W3C bis zu
diesem Zeitpunkt noch keinen Schritt in diese Richtung unternommen hatte, wurden
von einem Projektteam unter der Leitung von J. Melton neue Erweiterungsgebiete
für den SQL:1999-Standard vorgeschlagen. Einige Erweiterung zur ISO-Norm 9075-14
(SQL/XML) lauten etwa:
• Spezialfunktionen für die Darstellung von SQL Daten im XML-Format
• Spezialfunktionen bezüglich der Abbildung zwischen XML-Schema und relationalem Datenbank-Schema
XML in relationalen Datenbanken
Tobias Webelsiep
Ausgabe relationaler Daten im XML-Format
Seite 20
• Umgangsweise von SQL mit XML-Daten
Ein Standard zu diesen Erweiterungen wurde noch nicht verabschiedet, doch gibt es
konkrete Vorschläge für die Erweiterungen des SQL-Standards.
4.3
Vorschlag zur Darstellung relationaler Daten
Durch K. Kulkarni u.a. [SEPR00] wurde eine konkrete Ausarbeitung über die Erweiterung von speziellen XML-Funktionen beim SQL-Komitee eingereicht.
Die Ausgabe von Relationenschemas in eine XML-Datei kann über ein erweitertes
SQL-Statement erreicht werden. Zur Verdeutlichung ein kleines Beispiel:
Gehen wir von einem kleinen Relationenschema aus:
autor(id:INTEGER, name:VARCHAR(50))
buch(id:INTEGER, autor_id:INTEGER, isbn:CHAR(10), titel:VARCHAR(50))
Über ein erweitertes SQL-Statement mit dem folgenden Aufbau
SELECT autor.name, autorFkt(autor.ID, autor.name, buchLst(autor.ID))
FROM autor
kann eine XML-Datei für die Ausgabe erzeugt werden:
...
<autor id="aut1">
<name> A. Autor1 </name>
<buchliste>
<buch id="buch1">
<isbn> 1234567890 </isbn>
<titel> Buch Titel 1 </titel>
</buch>
<buch id="buch2">
...
</buch>
</buchliste>
</autor>
Abbildung 13: Ausgabe eines Relationenschemas in XML
Innerhalb des SQL-Statements wird eine skalare SQL-Funktion verwendet, welche
eine Liste der Bücher und die Informatonen zum Autor selbst enthält. Die Funktion
autorFkt wird über ein spezielles SQL-Statement erzeugt:
XML in relationalen Datenbanken
Tobias Webelsiep
Ausgabe relationaler Daten im XML-Format
Seite 21
CREATE FUNCTION autorFkt
(id INTEGER, name VARCHAR(50), buchLst CLOB(10000))
RETURNS CLOB(10000) LANDUAGE XML
RETURN
<autor id={id}>
<name> {name} </name>
<buchliste> {buchLst} </buchliste>
</autor>
Abbildung 14: Spezielle XML Funktion mit XML Rückgabewert
Der Rückgabewert dieser Funktion ist eine Variable des Typs CLOB, iterpretiert als
XML-Daten. Innerhalb des XML-Rückgabewertes ist ein XML-Template {x} definiert,
welches in unserem Beispiel mit der Buchliste (buchLst) gefüllt wird:
CREATE FUNCTION buchLst(autor_id INTEGER)
RETURNS CLOB(10000) LANGUAGE SQL
RETURN
SELECT XMLAGG(....)
FROM ...
WHERE ...
Abbildung 15: Erstellt eine Buchliste über eine XML-Aggregatsfunktion
Das Schlüsselwort XMLAGG im SELECT-Befehl beschreibt eine Aggregatfunktion, welche die Selectionstabelle in ein XML-Format transferiert und diese als Variable vom Typ
CLOB zurückliefert. Diese Funktion ist sehr speziell und wurde deshalb nur exemplarisch aufgeführt.
XML in relationalen Datenbanken
Tobias Webelsiep
XML-Schnittstellen zu Datenbank-Management-Systemen
5
Seite 22
XML-Schnittstellen zu Datenbank-ManagementSystemen
Die meisten Datenbankhersteller haben sich Gedanken über die Integration von XML in
ihr RDBMS gemacht. Meist wird ein hybrider Ansatz gewählt, der zum Einen die Speicherung als CLOB zulässt, aber auch die Abbildung in ein Relationenschema unterstützt.
5.1
Oracle 9i
Oracle bietet eine ganze Palette von XML Applikationen. Dadurch ist die Handhabung
und der Umgang mit XML Dokumenten sehr kompfortabel. Oracle 9i unterstützt alle
Techniken zur Speicherung und Ausgabe von XML in leichter herstellerspezifischer Abwandlung, wie sie in den vorherigen Kapiteln beschrieben wurden. Im folgenden werden
die einzelnen Applikation kurz erklärt.
Abbildung 16: Übersicht über die XML-Tools von Oracle 9i [BOXA00]
XSLT Prozessor
Der XSLT Prozessor ist als eigenständiges Programm in Oracle 9i integriert. Ein
XSLT Skript lässt sich direkt in der Datenbank auf ein gespeichertes XML Dokument
anwenden. Es ist also möglich direkt die Ausgabe an die eigenen Bedürfnisse anzupassen.
Das ist wichtig, wenn gleiche Inhalte zeitnah auf verschiedene Weise dargestellt werden
sollen.
XML in relationalen Datenbanken
Tobias Webelsiep
XML-Schnittstellen zu Datenbank-Management-Systemen
Seite 23
XML Parser
Der Oracle XML Parser ist ein eigenständiges Programm bzw. besteht aus mehreren
Bibliotheken sich in Java, C++ und PL/SQL für allen gängigen Betriebsysteme integrieren lassen. Ein Vorteil ist die Integartion des Parsers in die Datenbank. Durch diese
Erweiterung können XML Daten innnerhalb der Datenbank direkt bearbeitet werden.
XPath Engine
Oracle 9i enthält eine komplette XPath Engine nach der Spezifikation des W3C. Mit
ihr ist es möglich, Suchen auf Teile der Baumstrukur eine XML Dokuments zu starten
und durch den Baum zu navigieren. Die XPath Engine wird vom XML Prozessor und
XML Parser verwendet.
Intermedia
Mit Intermedia ist es möglich, große Dokument zu durchsuchen. Es stellt einige Tools
zum Durchsuchen von strukturierten Dokumenten bereit. So kann auf ein Feld vom Typ
CLOB, das einen strukturierten Text enthält, spezielle Indices gelegt werden, die dann
die Suche in dem strukturierten Dokument ermöglichen und vereinfachen.
SELECT isbn FROM buch
WHERE CONTAINS (autor, ’Tobias Webelsiep’) > 0;
XMLType
Seit Oracle 9i gibt es einen neuen Datentyp: XMLType. Über diesen Datentyp können
XML Dokumente bequem, intern als CLOB, in oder außerhalb einer Tabelle gespeichert werden. Zur Vereinfachung stellt XMLType spezielle Funktionen zum Einfügen
und Auslesen von XML Daten bereit.
• createXML() speichert ein XML Dokument in der Datenbank und prüft dieses
Dokument gegen ein XML Schema.
• extract() liefert eine Instatnz vom Typ XMLType zurück, die aus mehreren XMLFragmenten über XPath-Ausdrücke zusammengestellt werden.
• exitsNode() überprüft die Gültigkeit von XPath-Ausdrücken.
XML-SQL Utility (XSU)
Oracle 9i ist eine objekt-relationale Datenbank. Bei der Abbildung eines XML Schemas auf ein Realtionenschema (3.3) werden Subelemente werden nicht in einer neuen
Tabelle gespeichert, sondern als Objekt. Das Subelement-Objekt wird mit der Tabellenspalte verknüpft. Die Baumstruktur kann so über die Verschachtelung von Objekten
nachgebildet werden.
XSQL
Mit Hilfe von XSQL können aus einer Datenbank XML Dokumente generiert werden.
Diese Dokumente werden dynamisch aus der Datenbank erzeugt. Zum Erzeugung ist es
möglich mehrere SQL-Anweisungen zu verwenden. Die so erzeugten Dokumente können
z.B. im Internet pupliziert werden. Es ist aber auch möglich die Dokumente mit Hilfe
eines XSLT Prozessors in ein anderes Format zu konvertieren.
XML in relationalen Datenbanken
Tobias Webelsiep
XML-Schnittstellen zu Datenbank-Management-Systemen
Seite 24
<?xml version="1.0"?>
<xsql:query connection="oracle" xmlns:xsql="urn:oracle-xsql">
SELECT ’Hello, World!’ AS text
FROM DUAL
</xsql:query>
Abbildung 17: XSQL Abfrage mit Ausgabe im XML-Format
5.2
Microsoft SQL Server 2000
Für den SQL Server von Microsoft gibt es verschiedene Erweiterungen für die Verwaltung
von XML Dokumenten.
• SQLXML ist eine Erweiterung der SQL-Syntax. Mit FOR XML können innerhalb
eines Select-Befehls Abfragen auf XML Daten gestartet werden. OPENXML dagegen erweitert die Modifizierungs-Befehle Insert, Update und Delete um spezielle
XML-Funktionalitäten.
• XDR-Schema (XML-Data Reduced) kann mit Hilfe von XPath durch gespeicherte
XML Dokumente navigieren. Dadurch ist es auch möglich relationale Daten im
XML-Format auszugeben.
Im folgenden werden die einzelnen Techniken etwas genauer betrachtet:
FOR XML
Die Benutzung von FOR XML ist relativ einfach. Der normale SQL-Befehl wir um
eine neue Klausel erweitert:
SELECT ...
FOR XML <mode> [,xmldata][,elements] [BINARY BASE64]
Durch den Modus <mode> kann die Ausgabe verändert werden.
• RAW erzeugt eine flache XML Datei ohne Hirachie. Alle Spalten werden als Attribut
zum Element angegeben.
• AUTO entscheidet je nach Komplexität des SQL Befehl, welche Hirachiestufe angemessen ist. Bei der Verwendung von JOINs wird eine entsprechende Hierachie
erstellt.
• EXPLICIT ist der mächtigst Befehl zur Erzeugung einer hirachichen XML-Struktur.
Die Angabe erfolgt nun nicht mehr am Ende des SQL-Befehls, sondern direkt bei
der Auswahl der Spalten. Der Befehl [Products!1!ProductName!element] würde
z.B. die Hirachie und Namen in der XML Ausgabe festlegen.
XML in relationalen Datenbanken
Tobias Webelsiep
XML-Schnittstellen zu Datenbank-Management-Systemen
Seite 25
OPENXML
Zur Modifikation von XML Daten in der Datenbank werden spezielle Stored Procedures von MSSQL Server genutzt. Die Syntax von OPENXML sieht folgendermaßen aus:
OPENXML ( DocHandle int
XPathPattern nvarchar,
[Flags byte])
[WITH (RowsetSchema | Tablename)]
Für die genaue Bedeutung sei auf entsprecehnde Fachliteratur verwiesen. [MSPX02]
.NET-Unterstützung
Ganz neu ist die Integration des SQL Server in die .NET-Technologie. Sie bringen im
Endeffekt nur eine andere Art der Programmierung, vereinheitlichen und vereinfachen
die Handhabung zwischen Daten und Programmen durch die Integration der SQL Managed Classes in das Microsoft .NET Framework aber erheblich.
5.3
DB2 XML-Extender von IBM
IBM hat für das relationale Datenbank-Verwaltungssystem DB2 eine eigene Erweiterung
für XML entwickelt: Das Modul XML-Extender. Beim XML-Extender handelt es sich
um einen Hybriden-Ansatz, der die Speicherung als CLOB und die Abbildung in ein
Relationenschema unterstützt.
5.3.1
CLOB-Erweiterung
Für diese Art der Speicherung gibt drei neue Datentypen für XML Dokumente.
XMLVARCHAR Dieser Datentyp speichert XML direkt in einer Tabellenspalte. Dieser Spalte kann ein XML Schema / DTD zugeordnet werden, dem alle zu speichernden
XML Daten entsprechen müssen. Damit wird gewährleistet, dass nur gleichartige XML
Dokumente in dieser Tabellenspalte gespeichert werden können.
XMLCLOB Hierbei wird das XML Dokument als eigenes Textobjekt in der Datenbank gespeichert und mit der entsprechenden Tabellenspalte verknüpft. Für einen effizienten Zugriff auf einzelne Werte und Attribute können diese in einer so genannten
Seitentabelle gespeichert werden. Die Abfragen auf die Seitentabelle können über normale SQL-Anfragen (nur lesend) gestartet werden.
XMLFILE Hierbei werden XML-Dokumente außerhalb der Datenbank gespeichert.
Der Vorteil ist die unversehrtheit des XML-Dokuments. Doch ist der Zugriff auf die
Struktur oder Teile des Dokuments sehr eingeschränkt.
Zur Unterstützung für die Verwaltung des Zugriffs auf XML Dokumente, enthält
DB2 einen kompletten Suchmechanismus über XPath und eine spezielle Volltextsuche.
XML in relationalen Datenbanken
Tobias Webelsiep
XML-Schnittstellen zu Datenbank-Management-Systemen
Seite 26
Die Verwaltung von XML-Zusatzinformationeen findet über DAD-Dateien (Document
Access Definition) innerhalb von DB2 statt. In einer DAD-Datei werden alle Information zu einem XML-Dokument aus dem XML Schema bzw. DTD gespeichert, welche zusätzlich in einer DB2-Tabelle abgelegt werden. Eine Veränderung des XML-Dokuments
führt zum sofortigen Update der zugehörigen Seitentabelle.
Zur Bearbeitung von XML-Daten gibt es zusätzliche XML Befehle. So kann z.B. eine
XML-Datei gespeichert werden:
INSERT INTO Tabelle_mit_XMLVARCHAR
VALUES(..., db2xml.XMLVARCHAR(varcharVariable), ...)
Für den Zugriff auf diese Daten gibt es entsprechende Extraktionsfunktionen:
SELECT extractCHAR(XML_Spalte, ’Autor/Buch/Titel’)
FROM Tabelle_mit_XMLVARCHAR
5.3.2
Abbildung zwischen Relationenschema und DTD
Die Zusammensetzung von XML-Dokumenten aus einem Relationenschema wird mit
Hilfe von in DB2 enthaltenen stored procedures durchgeführt. Dafür werden die Funktionen dxxGenXML() und dxxRetrieveXML() verwendet. Auch die Speicherung findet über
definierte Funktionen names dxxShredXML() und dxxInsertXML() statt.
Für diese Vorgänge ist eine Bearbeitung einer DAD und einigen anderen Parametern
nötig, auf die ich hier nicht weiter eingehen will. Für weiter Informationen zu diesem
Thema sei auf die Fachliteratur verwiesen. [IDXE03]
5.4
MySQL und XML
Nach ausführlichen Recherche muss man feststellen, dass eine so weit verbreitete OpenSource- Datenbank keine vernünftigen Ansätze oder Schnittstellen zur Verarbeitung von
XML-Dokumenten bereitstellt.
Einzelne Ansätze beschäftigen sich mit der Umwandlung eines XML Dokuments über
einen PHP-Parser in ein SQL-freundliches Format oder über XSLT-Skripte.
Bleibt zu hoffen, dass bald eine XML-Schnittstelle zur Verfügung steht, um den neuen Anforderungen für die Dokumentverwaltung im Internet gerecht zu werden.
XML in relationalen Datenbanken
Tobias Webelsiep
Zusammenfassung
6
6.1
Seite 27
Zusammenfassung
Fazit
Die Struktur von XML Dokumenten weiste einige Vorteile zu herkömmlichen Texten auf.
Durch die Baumstruktur und die Zugage von Meta-Information, eignen sich die XML
Dokumente bestens zum Austausch von Daten. Außerdem können sie in ein beliebiges
Format durch ein XSLT-Skript transformiert werden. Dadurch kann ein und dieselbe
Information auf verschiedene Art und Weise dargestellt werden.
Die Bemühungen des SQL Komitees und die Hersteller relationaler Datenbanken
wurde ein Grundstein für die Verwaltung von XML Daten gelegt. Spezielle Datentypen,
basierend auf CLOB, neue Funktionen zur Abbildung von XML Schema auf ein Relationenschema und die Erweiterung des SQL-Standards um XML-Funktionalität, macht
die Handhabung von XML Dokumenten einfacher und kompfortabel.
6.2
Ausblick
Die wachsende Bedeutung des Internets wird sich in den nächsten Jahren noch weiter
verstärken. Somit wird die Anzahl von Dokumenten immer weiter zunehmen.
Die komplette Integration von XML in Java, wird dessen Verbreitung weiter fördern,
bis eines Tages XML der Standard für alle strukturierten Dokumente sein könnte.
Ob sich speziellen XML Datenbanken gegen die weit verbreiteten relationalen oder
sogar objekt-relatioanlen Datenbanken durchsezten können, bleibt abzuwarten. Denn
durch die Abbildung von XML auf spezielle Datenbank-Objekte wird die Handhabung weiter vereinfachen. Wenn aber besondere Anforderungen an die Verwaltung der
XML Dokumente, wie Versionkontrolle, gestellt werden, sollten spezielle DokumentVerwaltungssysteme (Content Management) benutzt werden.
XML in relationalen Datenbanken
Tobias Webelsiep
LITERATUR
Seite 28
Literatur
[W3CX03] World Wide Web Consortium - XML
http://www.w3.org/XML/, 10.03.2003
[W3CP03] World Wide Web Consortium - XPATH
http://www.w3.org/TR/XPath, 20.03.2003
[OXML03] Oracle 9i XML DB http://www.oracle.com/xml, 24.03.2003
[IDXE03] IBM DB2 XML Extender
http://www.ibm.com/software/data/db2/extenders/xmlext, 12.03.2002
[RDXD03] XML and Databases R. Bourret, http://www.rpbourret.com/xmldbms/,
10.03.2003
[XMLX99] Benoit Marchal
XML by Example, Que, USA 1999
[XMLS02] Eric van de Vlist
XML Schema, O’Reilly, Juni 2002
[BOXA00] Steve Muench Buidling Oracle XML Applications, O’Reilly, September
2000
[MSPX02] R. Allen Wyke, Brad Leupen, Sultan Rehman XML Programming,
Microsoft Cooperation, 2002
[SEPR00] K. Kulkarni, H. Pirahesh, J. Shanmugasundaram u.a.
SQL Extension for Publishing Relational Databases,
Discuss Paper, WG3:HEL-032, H2-2000-449R1
[INFSP01] Jost Enderle
XML in relationalen Datenbanken, Informatik Spektrum,
S.357 Heft 6, 24.12.2001
[EIXP03]
Bernhard Woehrlin Clevere Pfade für XML und Java, Javamagazin,
S.99 Heft 6, 03.03.2003
XML in relationalen Datenbanken
Tobias Webelsiep
Herunterladen