Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

24.01.2003 - 

Extensible Markup Language/Unterstützung für Standards wie XML Schema, Xpath und XSLT

Oracle positioniert 9i als XML-Datenbank

Zu Beginn des XML-Hypes standen die Anbieter relationaler Datenbanken noch mit leeren Händen da. Inzwischen rüstete Marktführer Oracle wie alle größeren Hersteller sein System mit XML-spezifischen Funktionen aus. Dazu zählen diesem Datentyp angemessene Mechanismen zur Speicherung, Abfrage und Sperre bei gemeinsamen Zugriff. Von Martin Goldmann*

An Datenbanksysteme werden mittlerweile weitergehende Ansprüche erhoben, als bloß XML-Daten zu speichern. Wichtig ist die Unterstützung der XML begleitenden Standards. In puncto Abfrage ist von Interesse, wie ein Datenbankanbieter Xpath umsetzt, ob er Xquery oder SQL/XML unterstützt. Denn in der Implementierung dieser Standards und in der Art der Speicherung von XML-Daten liegen die Unterschiede.

Oracle 9i zeigt alle Merkmale einer nativen XML-Datenbank (siehe Kasten "XML-Datenbanken"). Sie wird schlüsselfertig mit XML-Unterstützung geliefert. Die Installation erzeugt gleich eine Default-Datenbank, in der alle XML-Funktionen zur Verfügung stehen.

Oracle 9i speichert XML-Daten nicht als Dateien, sondern in der Datenbank. Dabei unterstützt Oracle mehrere Arten von XML-Daten: Zum einen sind das Dokumente, die zum Beispiel zur Veröffentlichung im Browser oder in einem anderen Medium vorgesehen sind. Sie werden bevorzugt im Ganzen als Character Large Objects (Clobs) hinterlegt. Zum anderen vermag die Datenbank natürlich auch mit strenger strukturierten Daten umzugehen. Beispiele dafür wären Preislisten, Dokumente über den Organisationsaufbau (Hierarchie) oder auch Rechnungen. Bei stark strukturierten Daten stehen die einzelnen Datenfelder an sich im Vordergrund. Diese können anstatt in einer tabellarischen auch in einer hierarchischen oder objektorientierten Struktur vorliegen. Oracle 9i bildet diese Strukturen mit einem objektrelationalen Modell nach. Zusätzlich kann die Datenbank Mischformen dieser beiden Typen (semistrukturierte Daten) speichern, indem sie Dokumente in einzelne Abschnitte oder Bereiche zerlegt. Bei semistrukturierten Dokumenten verbindet Oracle die Speicherung als Clob (für die textorientierten Anteile) und die objektrelationale Speicherungsform für die strukturierten Abschnitte des Dokuments.

Registrierung von Schemata

Damit dieses funktioniert, benötigt die Datenbank genaue Informationen über die Struktur der XML-Daten. Zu diesem Zweck muss sie das dazugehörige XML-Schema analysieren, das die erlaubten Elemente, Attribute oder Entitäten beschreibt und ihre zulässige Verwendung festlegt. Bei XML-Schema handelt es sich um eine Empfehlung des W3-Consortium (W3C). Soll die objektrelationale Speicherungsform genutzt werden, muss der Administrator lediglich das entsprechende Schema registrieren. Die Erstellung der Speicherstrukturen erfolgt anschließend automatisch.

Die Übernahme von Daten ist einfach: Werden neue XML-Dokumente als Datei der Datenbank übergeben, so validiert sie Oracle 9i anhand des zugehörigen Schemas und nimmt sie bei Übereinstimmung in die Datenbank auf.

Damit Autoren ihre Texte ohne großen Aufwand in der Datenbank hinterlegen können, unterstützt Oracle 9i gängige Internet-Protokolle wie HTTP, WebDAV und FTP. Deshalb können Standard-Autorenwerkzeuge genutzt werden, spezielle Clients sind nicht notwendig.

Sind die Daten erst einmal in der Datenbank abgelegt, entsteht meist das Bedürfnis, auf diese über Abfragen zuzugreifen. Der Weg zu den XML-Daten führt in Oracle 9i über SQL. Zusätzlich können in den Abfragen Xpath-Anweisungen mit eingegeben werden. Xpath ist eine Navigationssprache für XML und ebenfalls ein W3C-Standard. Damit lassen sich gezielt einzelne Knoten in Dokumentbäumen ansprechen.

Wahlweise XML oder relational

Das Abfrageergebnis stellt Oracle 9i auf Wunsch in XML oder relational dar. Die Datenbank erzeugt bei Bedarf auch relationale Views auf XML-Daten, also virtuelle Tabellen, die sich etwa mit etablierten Reporting-Tools nutzen lassen. Für den Anwender ist es vollkommen transparent, ob die Daten in XML oder relational vorliegen. Das Ergebnis lässt sich immer auf beide Arten darstellen und bearbeiten.

Oracle 9i optimiert zusätzlich die Xpath-Abfragen: Um an den Knoten mit den gesuchten Daten zu kommen, muss nicht wie bei DOM die komplette Baumstruktur des XML-Dokuments im Speicher aufgebaut werden. Dank der objektrelationalen Speicherung gibt es einen schnelleren Weg. Die Datenbank-Engine schreibt die Xpath-Abfrage um, so dass die richtigen Daten aus der Datenbank herausgeholt werden. Dieses Verfahren nennt Oracle Query Rewrite.

Für die Ausgabe von XML-Ergebnissen bringt Oracle 9i SQL/XML mit. Das ist ein von der H2.3 Task Group standardisierter Ansatz, der die Ergebnisse von SQL-Abfragen als XML-Daten darstellt. Damit lassen sich auch herkömmliche Datenbanken in XML-Umgebungen nutzen und beispielsweise als Datenlieferanten von Web-Services einsetzen. Der H2.3 Task Group, vormals bekannt unter SQLX Group, gehören neben Oracle auch Microsoft oder Sybase an.

Xquery-Unterstützung geplant

Als zukünftige Standardabfragesprache für XML zeichnet sich Xquery ab. Sie durchläuft derzeit noch den Standardisierungsprozess und befindet sich beim W3C im Status eines Working Draft. Xquery beherrscht Abfragen auch über mehrere XML-Dateien hinweg und verknüpft deren Ergebnisse. Als Resultat erhält der Anwender eine XML-Datei zurück. Wer schon mit Xquery arbeiten möchte, kann sich eine Java-Implementierung von http://otn.oracle.com/sample_code/tech/xml/xmldb/xmldb_xquerydownload.html herunterladen. Sobald der Standard endgültig verabschiedet ist, wird er vollständig in Oracle 9i umgesetzt.

Häufig besteht die Notwendigkeit, die über Abfragen erzeugten XML-Dateien in einer optisch ansprechenden Form darzustellen, etwa als HTML. Das W3C sieht für derartige Umwandlungen den Standard XSL Transformations (XSLT) vor. Ein entsprechender Prozessor ist in der Datenbank eingebaut. Parameter für die Umwandlung von Abfrageergebnissen lassen sich direkt in der Abfrage festlegen.

Bei der Bearbeitung von Dokumenten, die im File-System oder nicht-XML-fähigen Datenbanken abgelegt sind, wird das gesamte Dokument geladen und für den Zugriff durch andere gesperrt. Erst nach Abschluss der Editiertätigkeit ist es wieder für das Bearbeiten zugänglich. Bei datenintensiven Anwendungen erweist sich dieses Vorgehen als zeitraubend. Mit Oracle 9i kommt deshalb das "piecewise update" zum Einsatz. Dieses Verfahren spart Zeit, denn es sperrt gezielt die Knoten im XML-Baum, die geändert werden sollen.

Für XML-Daten bietet Oracle 9i zwei Indexierungsverfahren. Streng strukturierte Daten werden mit einem in relationalen Datenbanken üblichen B-Baum-Index versehen. Zusätzlich liefert Oracle 9i einen Volltextindex. Der eignet sich sowohl für schwach strukturierte XML-Dokumente wie auch für stark strukturierte Datensammlungen. Der Volltextindex berücksichtigt zudem den Kontext der Textstellen. Damit lassen sich zum Beispiel Suchbegriffe innerhalb bestimmter XML-Elemente finden.

Fazit

Oracle 9i setzt den Ansatz der nativen XML-Datenbank vollständig um. Auf diese Weise versucht das kalifornische Softwarehaus, die Vorteile aus den Welten der relationalen Datenbanken und XML zu vereinen. (ws)

*Martin Goldmann ist freier Autor in Fürth.

Angeklickt

Hatte der Oracle-Anwender noch vor ein paar Jahren nur die Wahl, XML-Dokumente im Ganzen als Charcter Large Object (CLOB) zu speichern oder sich um ihr Mapping auf objektrelationale Strukturen selbst zu kümmern, so bietet der kalifornische Anbieter heute eine Vielzahl XML-spezifischer Funktionen. Diese betreffen nicht nur das Speichern, sondern auch Abfragen, Sperrmechanismen oder Indizes. Wie bei einigen Konkurrenzprodukten verwischen sich dabei nach außen immer stärker die Unterschiede zwischen relationalen und XML-Daten. Bei Bedarf können XML-Dokumente gegenüber SQL-Tools als Datenbankansicht präsentiert werden, und umgekehrt erscheinen relationale Daten gegenüber XML-Werkzeugen als deren natives Format.

XML-Datenbanken

Oracle 9i ist eine so genannte native XML-Datenbank. Dieser von der XML:DB-Initiative geprägte Begriff beschreibt Datenbanken, die folgende Bedingungen erfüllen:

- Sie stellen ein logisches Modell zur Verfügung, um XML-Daten zu speichern. Elemente, Attribute, Inhalte (PCDATA) und die Anordnung der Daten im Dokument müssen im Modell abgebildet sein.

- Ein XML-Dokument ist die logische Speichereinheit innerhalb der Datenbank, ähnlich der Spalte einer Tabelle in einem relationalen System.

- Das zugrunde liegende Speicherformat ist frei wählbar. Ob die Daten nun in einer hierarchischen, objektorientierten oder relationalen Struktur untergebracht sind, ist egal. Hauptsache, sie werden nach außen hin als XML repräsentiert.

Weiterführende Lektüre

Oracle 9i - die Datenbank für XML:

http://www.oracle.com/global/de/pub/knowhow/index.html?oracle_xml.html

Einführung in native XML Datenbanken:

http://www.xml.com/pub/a/ 2001/10/31/nativexmldb.html

XML-Beispielcode:

http://otn.oracle.com/samplecode/tech/xml

XML:DB:

http://www.xmldb.org

SQLX (jetzt H2.3 Task Group)

http://www.sqlx.org