KU Verkehrsinformatik - Datenbankkonzepte Ass.Dipl.-Ing. Fuchs Simone LV Nr 623.904, SS 2006 XML databases Verfasser/Referent: Martin Hölbling 0160062 [email protected] XML databases Martin Hölbling Inhaltsverzeichnis 0 1 2 Abstract............................................................................................................... 3 Einleitung............................................................................................................ 3 Bedeutung von XML in DAM-Systemen ........................................................... 3 2.1 Digital Asset Management.......................................................................... 3 2.2 Realisierung eines DAM-System................................................................ 4 3 Zusammenspiel von XML-Dateien und relationalen DBs.................................. 5 3.1 XML-enabled Databases............................................................................. 5 3.1.1 Bekannte Vertreter von XML-enabled Databases .............................. 6 3.2 XML Shredding .......................................................................................... 6 3.2.1 ShreX .................................................................................................. 6 3.3 Native XML Datenbanken.......................................................................... 9 3.3.1 Kategorien von Nativen XML-Datenbanken:..................................... 9 3.3.2 Vertreter von Nativen XML-Datenbanken ......................................... 9 3.3.3 Native XML in DB2 Viper ............................................................... 10 4 Anwendungsbeispiel – XML in DB2 Viper: .................................................... 12 4.1 Datenbankschema: .................................................................................... 12 4.2 Abfragen ................................................................................................... 13 4.2.1 Selektion der Fahrer des Fahrzeugs mit der ID 144 ......................... 13 4.2.2 Restriktion aufgrund eines XML-Werts ........................................... 13 4.2.3 XMLQuery........................................................................................ 14 4.2.4 Umwandlung von XML in SQL-Datentypen ................................... 14 4.2.5 Joins von XML und nicht-XML Daten: ........................................... 15 4.2.6 Umwandlung von relationalen Daten in XML: ................................ 15 4.2.7 Update-Statement: ............................................................................ 15 4.2.8 SQL/XML-Statements in Java :........................................................ 15 5 Zusammenfassung ............................................................................................ 16 2 XML databases 0 Martin Hölbling Abstract Durch das vermehrte Aufkommen von XML-Daten in unterschiedlichen Formen wie Webcontent, Multi-Media-Daten-Header etc. ist auch der Bedarf an XMLDatenbanken zur Verwaltung von XML-Content gestiegen. Dabei gilt es nicht nur reine XML-Daten zu verwalten, sondern auch bestehende relationale Datenbanken zu integrieren. Diese Arbeit befasst sich mit der Problematik der Verwaltung von XML-Daten und der Integration von relationalen Daten mit XML-Daten. Dazu werden XML-enabled databases vorgestellt, die eine Abbildung von XML-Daten auf relationaler Ebene ermöglichen. In diesem Zusammenhang wird auch auf XMLShredding – im Speziellen auf das System „ShreX“, einem Framework zur Abbildung von XML-Daten auf eine beliebige relationale Datenbank - eingegangen. Überdies werden Native XML-Datenbankkonzepte vorgestellt, die XML-Daten und relationale Daten verwalten können, ohne die XML-Daten auf relationale Ebene abbilden zu müssen. Im Anwendungsbeispiel wird abschließend gezeigt, wie relationale und XML-Daten in der Nativen XML-Datenbank „DB2 Viper“ abgelegt und bearbeitet werden können. 1 Einleitung Viele Unternehmen verfügen über große Mengen an digitalem Material, bei denen Metadaten in Form von XML eine wesentliche Rolle spielen. Diese Metadaten beschreiben die Datei (z.B. Video, Foto, Präsentation etc.) und deren Inhalt (z.B. Aufnahmedatum, Belichtung, Auflösung, Inhalt, Lizenzen etc.). Dabei wird XML als Header für diese Dateien eingesetzt. Zudem bietet sich XML als ideales temporäres Austauschformat für das Web und andere Applikationen an. Eine Applikation generiert beispielsweise ein XMLDokument, eine andere liest dieses wieder aus und verarbeitet es. Viele dieser XMLDaten sollen aber auch dauerhaft gespeichert werden können. Dabei müssten sie in Datenbanken abgelegt werden. Dies kann rein als XML erfolgen oder durch eine Abbildung der Dokumente auf eine (objekt-)relationale Datenbank. Will man durch eine Abbildung von XML-Dokumenten auf relationale Datenbanken (und vice versa) diese beiden „Welten“ zusammenführen, so muss man sich über die Unterschiede im Klaren sein. So ist die Struktur von relationalen Daten in mehreren flachen Tabellen gespeichert, bei XML hingegen gibt es oft hierarchische, beliebig tiefe Strukturen. Außerdem besitzen Spalten in relationalen Datenbanken einen eindeutigen Wert, bei XML können Elemente jedoch mehrfach auftreten. 2 Bedeutung von XML in DAM-Systemen Die Anwendungsgebiete von XML sind sehr vielfältig. XML wird als Austauschformat für das Web und anderen Applikationen eingesetzt. Zudem spielen Metadaten in Form von XML für Digital Assets eine wesentliche Rolle. 2.1 Digital Asset Management Viele Unternehmen, vor allem im Medienbereich, verfügen über eine große Anzahl an Digital Assets in Form von Bildern, Videos, Audio-Dateien, Präsentationen, Webseiten etc., die es zu verwalten gilt. Diese Verwaltung obliegt dem Digital Asset Managament-System, das in Form von Datenbanken realisiert wird. Die Herausfor3 XML databases Martin Hölbling derung ist es die digitalen Daten zu verwalten, zu katalogisieren und zu verteilen. Im Folgenden werden die wichtigsten Faktoren, die bei der Realisierung von DAMSystemen zu beachten sind, aufgelistet:[1] • Speicherung: Die Datenträger zur Speicherung von digitalen Daten sind Alterungsprozessen unterworfen. So können digitale Daten unter Umständen nicht verfügbar oder die Ressource könnte mit zukünftigen Technologien nicht mehr kompatibel sein. • Prozedurale Angelegenheiten: Viele Dokumente, wie z.B. Textdokumente, müssten erst digitalisiert werden. Dieser Prozess kann sehr arbeits- und ressourcenintensiv sein. • Sicherheit: Konzerne müssen ihre digitalen Assets vor Missbrauch, Diebstahl und Schaden schützen. • Copyright: Copyright-Besitzer haben das exklusive Recht Daten zu nutzen. Digitalisierung verletzt diese Rechte oft. • Verteilung: Digital Assets müssen über geeignete Kommunikationskanäle zu den richtigen Benutzerinnen und Benutzern gelangen. • Infrastruktur: Für DAM-Systeme ist eine stabile IT Infrastruktur notwendig. • Menschliche Faktoren: Benutzerinnen und Benutzer müssen mit dem System vertraut gemacht werden. In einem Medien-Unternehmen (z.B. Werbeagentur) stellt der durchschnittliche User 83 Mal pro Woche Anfragen nach Media-File, dabei schlagen allerdings 35 % der Suchanfragen fehl. Durch den Einsatz von DAM-Systemen verspricht man sich eine Senkung dieser fehlgeschlagenen Anfragen auf 5 %[1]. Um ein effektives Filemanagement zu garantieren, spielen Metadaten der Dateien in XML-Form eine wesentliche Rolle. Adobe´s Extensible Metadata Platform (XMP) [2] ermöglicht es beispielsweise eigene Metadaten-Tags für ein File zu definieren. Dabei werden flexible Suchverfahren und „Smart Assets“, die den Kontext bei unterschiedlichen Dateiformaten, Softwareapplikationen und Datenbanken erhalten, ermöglicht. Außerdem wird der Content-Lifecycle, d. h. der Ursprungskontext einer Datei kann über mehrere Versionen erhalten werden, erhöht. Dies kann vor allem für effiziente Suchverfahren, Workflow-Automation, Rechte-Management und Verwaltung in Datenbanken nützlich sein. XMP wird in der aktuellen Version von Adobe´s Creative Suite (CS 2) bereits eingesetzt. Die NASA setzte XMP zum Beispiel zur Katalogisierung von mehreren tausend Fotos nach GPS-Daten ein. 2.2 Realisierung eines DAM-System Ein Digital-Asset-Management-System sollte über folgende Funktionalitäten verfügen[1]: • Indexing: Das Indexing muss umfassend sein und auch alle Metadaten, die oft den Content beschreiben, beinhalten. • Rights Management: Rechte müssen verwaltet werden können. • Reuse: Der Content muss leicht auffindbar und wiederverwendbar sein. • Review: DAM Systeme sollen den Review von altem Content erleichtern. 4 XML databases Martin Hölbling Um ein DAM-System zu realisieren, bieten sich XML-Datenbanken an. Da viele Unternehmen bereits über relationale Datenbanken verfügen, sollen XML-Daten mit den Daten aus relationalen Datenbanken verknüpft werden. Welche Ansätze sich dazu eignen, wird im nächsten Abschnitt behandelt. 3 Zusammenspiel von XML-Dateien und relationalen DBs Um die „Welten“ XML-Dokumente und relationale Datenbanken zusammen zu führen, muss man sich über die Unterschiede, die bei der Integration von XMLDaten und relationalen Datenbanken überwunden werden müssen, klar werden. Diese betreffen: [3, 4] • Struktur: Relationale Daten werden in flachen Tabellen gespeichert. XML hingegen bietet die Möglichkeit eine hierarchische, beliebig tiefe Struktur aufzubauen. Diese XML-Strukturen in relationale Daten zu überführen, kann sehr komplex sein. • Eindeutigkeit: In relationalen Datenbanken ist jeder Spalten/ZeilenKombination ein Wert zugewiesen, während bei XML-Dokumenten mehrere Attribut-Ausprägungen zulässig sind und somit Werte pro Spalte mehrfach auftreten können. • Vollständigkeit: In der relationalen Welt sind Tabellen vollständig. XML ist hingegen optional und Attribute können offen sein. Die wichtigsten Ansätze, um eine Kombination aus relationalen Datenbanken und XML-Daten nutzen zu können, sind XML-enabled Databases und native XMLDatenbanken. Der Unterschied zwischen XML-enabled und native Databases ist, dass XML-enabled Databases schemen-spezifische Strukturen, die auf das XMLFile zur Design-Zeit gemappt werden müssen, verwenden, während native XML Datenbanken generische Strukturen nutzen, die jedes beliebige XML-Dokument enthalten können. [1] Native XML databases können die physische Struktur sowie Kommentare, DTDs, Pls etc. verwalten. [5] XML-enabled databases können dies zwar auch, jedoch ist die Realisierung sehr umständlich und die Performance schlecht. Außerdem gibt es bei nativen XML-Datenbanken ein einheitliches Interface. Bei XML-enabled Databases muss dies nicht gewährleistet sein. Im Folgenden wird genauer auf diese Ansätze eingegangen. Zudem wird XMLShredding vorgestellt, das es erlaubt, XML-Daten in jede beliebige relationale Datenbank zu integrieren. 3.1 XML-enabled Databases In einer XML-enabled Datenbank werden Dokumente in einzelnen Fragmenten gespeichert. Hierbei wird der XML-Content in objektrelationale Form umgewandelt und gespeichert. Diese Datenbanken haben eine eigene XML-Mapping layer, die die Speicherung und die Wiederherstellung von XML-Daten durchführt. XML SQL Utility (XSU) oder SQL mit Packages werden dazu verwendet, den ursprünglichen Inhalt zu generieren. Neben dem entstehenden Performanceverlust, können dabei auch leicht Daten verloren gehen. Der Grund dafür liegt darin, dass über ein Schema zur Designzeit definiert werden muss, wie ein XML-Dokument, das akzeptiert werden soll, auszusehen hat. Entspricht nun ein XML-Dokument nicht den Vorgaben, wird es entweder nicht akzeptiert oder Attribute, die nicht in der Schema-Definition enthalten sind, können bei der Rekonstruktion aus den relationalen Daten nicht mehr wiederhergestellt werden. [1, 5] 5 XML databases Martin Hölbling Die momentane XML-Lösung von Oracle und Microsoft arbeiten auf diese Weise. 3.1.1 Bekannte Vertreter von XML-enabled Databases [6] • Microsoft Access: ab Version 2002 – transferiert Daten von/zu XML Dokumenten über ein tabellenbasiertes Mapping.1 • Cache: von InterSystems Corp. • DB2: von IBM • eXtremeDB: von McObject LLC. eXtremeDB unterstützt XML über ein XML-Data-Binding und kann von einem Datenbankschema Methoden generieren, die neue Objekte von XML-Dokumenten erzeugt, mit bestehenden Objekten updatet. Diese Objekte werden vorzugsweise für SOAPNachrichten eingesetzt. • PostgreSQL: von PostgreSQL Global Development Group • SQL Server 2000: von Microsoft • Oracle: Oracle9i unterstützt XML-Datentyp, SQL/XML, XQuery, XSLT, DOM etc. XML-Daten können entweder objektrelational oder als CLOB gespeichert werden. Ein CLOB speichert die Dokumente exakt ab, speichert jedes Dokument, kann aber nur Dokumenten-Updates durchführen, also das Dokument als Ganzes neu laden, und hat weniger Indexierungsoptionen als im objektrelationalen Modus. Der Vorteil bei Oracle ist, dass XMLDokumente auf DOM-Level durchlaufen werden können. Dazu speichert es versteckte Spalten, in relationaler Form, ab und ist somit in die Kategorie der XML-enabled Databases einzuordnen.[6] 3.2 XML Shredding XML Shredding bietet ein Framework, das es erlaubt, XML-Daten auf jede beliebige relationale Datenbank zu mappen. Die XML-Daten werden in relationale Form gebracht und in die Datenbank geschrieben. [7] 3.2.1 ShreX ShreX (Shredding XML) ist ein frei verfügbares System, mit dem Mappings von XML in relationale Datenbanken ermöglicht werden. Mit ShreX können eigene Mapping-Strategien angewandt werden, die auf die Applikation zugeschnitten wird. Das Mapping kann für jede beliebige Datenbank verwendet werden.[4] 1 Anmerkung: Microsoft Access ist kein Datenbanksystem, sondern ein Datenerhaltungsprogramm. 6 XML databases Martin Hölbling Abbildung 1: ShreX Architecture [7] In ShreX wird ein Mapping durch das Hinzufügen von Anmerkungen ins XMLSchema definiert. Diese Anmerkungen geben an, wie Elemente und Attribute in der relationalen Datenbank gespeichert werden. Der „annotation processor“ (Abbildung 1) parst das mit Anmerkungen versehene XML-Schema, prüft die Gültigkeit des Mappings und erzeugt daraus ein relationales Schema. Die Validierung des XMLSchemas umfasst die Überprüfung auf Richtigkeit der Anmerkungen und die Uniqueness-Prüfung der einzelnen Elemente in der Tabelle. Zusätzlich kann noch überprüft werden, ob die Abbildung verlustfrei passiert. ShreX verfügt auch über eine automatische Mapping-Funktion. [4] Die Informationen zum Mapping werden im Mapping-Repository gespeichert und können wiederverwendet werden. Der Document Shredder bekommt das XMLDokument und benutzt die Mapping API, um auf die Informationen im Mapping Repository zu zugreifen. Er vollzieht das Shredding des XML-Dokuments und befüllt die Tabellen. Außerdem verfügt der Document Shredder über einen Validierungsmechanismus, der das Input überprüft. [4] Der Query-Translator generiert SQL-Queries aus XML-Queries, die mit XPath definiert wurden. Die Mappings werden über ein XML-Schema definiert, was sie einerseits portabel macht, andererseits auch erweiterbar. Außerdem können Mappings zur Validierung herangezogen werden. Annotation attributes: [4] • outline (true or false): Wenn Outline true ist, wird eine Tabelle für das entsprechende Attribut kreiert. 7 XML databases Martin Hölbling • tablename (string):Dieser String wird als Tabellenname benutzt. • columnname(String): Dieser String wird als Spaltenname benutzt. • sqltype (String): Dieser String überschreibt den Sqltyp der Spalte. • structurescheme (KFO, Interval, Dewey): Spezifiziert die Struktur des Mappings – Dewey – Dezimale Klassifikation, Interval – in bestimmten Intervallen; KFO – kostenbasierter Ansatz für parent-child-relations • edgemapping (true, false): Ist der Wert true, wird das Element und seine Nachfolger nach dem Edge-Mapping-Verfahren geshreddet. • maptoclob (true, false): Ist der Wert true, wird das Element oder Attribut als CLOB-Spalte gemappt. Beispiel ShreX: Abbildung 2: Annotated movie schema [7] Abbildung 2 zeigt ein mit Anmerkungen versehenes Schema, das in das Mapping Repository geladen wird. Die Anmerkung „outline=true“ im Element TITLE gibt an, dass dafür eine extra Tabelle mit Namen „Showtitle“ angelegt wird. Das outlineAttribut von YEAR hingegen ist false, d. h. es wird direkt unter der Tabelle SHOW angelegt und erhält keine eigene Tabelle. Durch sqltype wird der Typ überschrieben. Das Attribut edgemapping=true im Element REVIEW wird dazu eingesetzt, um alle REVIEW-Elemente und deren Inhalt zu mappen – Meistens dann, wenn die Struktur nicht im Vorhinein bekannt ist. 8 XML databases Martin Hölbling Abbildung 3: Relational configuration for movie schema [7] Das aus Abbildung 2 resultierende Datenbankschema ist in Abbildung 3 zu sehen. 3.3 Native XML Datenbanken In einem nativen Datenbank-Ansatz wird die gesamte XML-Datenbank als Ganzes abgespeichert. Dokumente werden in ihrem Orginalformat gespeichert, indiziert und wiederhergestellt. Die XML-Datenbank verarbeitet XML in seiner natürlichen Form, was die Performance wesentlich verbessert. Eine native XML-Datenbank definiert ein logisches Modell für ein XML-Dokument. Dementsprechend speichert sie Dokumente und stellt Dokumentabfragen. Als fundamentale Einheit dient ein XML-Dokument. Ein darunterliegendes physikalisches Speichermodell ist nicht erforderlich. Die Datenbank kann auf einer relationalen, hierarchischen oder objektorientierten Datenbank aufgesetzt bzw. in indizierten, komprimierten Files gespeichert sein. [5, 6] 3.3.1 Kategorien von Nativen XML-Datenbanken: Native XML-Datenbanken kann man in zwei Kategorien einteilen[5]: Dokumentbasierte Native XML-Datenbank/Text-Basiertes Speichern: Eine textbasierte native XML-Datenbank speichert XML als Text, in einem Filesystem, in einem BLOB in einer relationalen Daten oder einem eigenen Textformat. Diese Datenbanken sind indiziert und können leicht von einem Knoten zum Anderen im XML-Dokument springen, was die Performance erhöht. Die Datenbank kann das ganze Dokument oder einzelne Fragmente in einem einzigen Leseprozess auslesen. Eine textbasierte XML-Datenbank entspricht einer hierarchischen Datenbank. Beim Auslesen von meheren XML-Files sind allerdings mehrere Leseprozesse notwendig. Modellbasierte Native Datenbanken/Knoten-Basiertes Speichern: Dem Dokument werden separate Knoten entnommen und in einem bestehenden Speicherbereich abgelegt. Bei Knoten-basiertem Speichern können Fragmente aus unterschiedlichen Dokumenten mit wenigen Leseprozessen kombiniert werden. Beim Auslesen eines gesamten Dokuments sind jedoch auch mehrere Leseprozesse notwendig. 3.3.2 Vertreter von Nativen XML-Datenbanken [6] • 4 Suite Server: von FourThougt – Open Source. 9 XML databases Martin Hölbling • Berkeley DB XML: von Sleepycat Software – Open Source. Dabei handelt es sich um eine die relationale Berkeley DB mit einem integriertem XMLParser, XML Indizes und einer XQuery Engine. Berkeley DB XML speichert Dokumente in Containern. • DBDOM: Open Source • dbXML: von dbXML Group – OpenSource. • Ozone: von ozone-db.org – OpenSource. • Tamino: von Software AG – kommerzielle Nutzung. Tamino XML Server inkludiert eine native XML Datenbank, eine integrierte relationale Datenbank, Sicherheitstools, Administrationssoftware. Die XML-Engine benutzt eine Data Map, die angibt wo die Daten in einem gegebenen XML-File oder auf der relationalen Datenbank liegen. Inkludiert sind DOM, JDOM, SAX, XQuery und SOAP. • Timber: von der University of Michigan – Open Source. Zielt vor allem auf die Integration von relationalen Datenbanken und XML ab. • Xindice: von der Apache Software Foundation – Open Source. Eine knotenbasierte native XML Datenbank in Java speziell für eine große Menge an kleinen XML-Dokumenten. Xindice komprimiert Dokumente, um Platz zu sparen. Die Query-Language ist XPath. Xindice verfügt über eine experimentelle Linking Language, die es dem User ermöglicht XML-Content in einem XML-Dokument zur Anfrage-Stellungszeit zu ersetzen oder einzufügen. 3.3.3 Native XML in DB2 Viper Die XML-Datenbank von IBM “DB2” Codename: Viper wird neben ihrer nativen Definition auch als hybride Datenbank bezeichnet. Abbildung 4 zeigt die Architektur von DB2 Viper. Relationale Daten werden unabhängig von XML-Daten gespeichert und in einem eigenen Speicherbereich abgelegt. Abbildung 4: DB2 Viper Architecture [8] IBM hat die neue DB2 um eine native XML-Datenbank erweitert. Die Benutzerin bzw. der Benutzer kann vollständige XML-Dokumente mit voller DBMSUnterstützung speichern. DB2 ermöglicht es, mit normalen Tabellen und XML10 XML databases Martin Hölbling Strukturen zu arbeiten. Abfragen können dabei in SQL/XML oder XQuery gestellt werden. DB2 Viper verwendet zwei separate Speicher-Mechanismen. Für die darüberliegenden Applikationen ist der Speicherort jedoch transparent, d. h. dass die Applikation sich nicht um den Speicherort kümmern muss. Außerdem können einzelne XML-Dokumente effektiv über mehrere Datenbank-Seiten gesplittet werden. [8] Logical storage XML-Dokumente werden in DB2-Tabellen gespeichert, wobei sie eine oder mehrere XML-Datentypen haben können. DB2 speichert und manipuliert XML-Daten in geparster Form, wie es die hierarchische Struktur des XML-Dokuments vorschreibt. Dabei benutzt es Bäume und Knoten, um die XML-Daten zu speichern. DB2 behält die gesamte interne Struktur des XML-Dokuments bei und wandelt Tag-Names und andere Informationen in Integer-Values um. Dadurch verspricht sich IBM mehr Query-Performance und weniger Speicherplatzbedarf. Außerdem splittet DB2 Teile des Dokuments automatisch auf, damit diese Teile über mehrere Datenbank-Seiten verwendet werden können. [9] Indexing DB2 ermöglichte eine schnelle Indexierung für XML-Daten über normales SQLDDL (Create Index). Zusätzlich kann der Benutzer bzw. die Benutzerin ein XMLPattern (ähnlich zu XPath) definieren, das die wichtigen Informationen aus dem XML-Dokument definiert. Dabei ist zu beachten, dass eine Zeile aus der Tabelle eventuell in mehreren XMLIndex-Einträgen resultiert, da XML-Dokumente mehrere gleichnamige Knoten enthalten können. DB2 verwendet Volltext-Indizes, um die Such-Performance zu erhöhen. [9] Query Language Abfragen könnnen bei DB2 Viper mittels SQL oder XQuery gestellt werden. DB2 hat 2 Language-Parser, einen für XQuery und einen für SQL (sh. Abbildung 4). Beide erzeugen jedoch eine gemeinsame, sprachunabhängige, interne Repräsentation der Query, was beiden Abfragesprachen die gleichen Optimierungstechniken ermöglicht. DB2 ermöglicht es außerdem XML-Files nach gewissen Schemata zu validieren. [9] Mit DB2 Viper wurden 15 SQL/XML-Funktionen implementiert, die Suchen innerhalb von XML-Dokumenten, Konvertierung von relationalen Daten in XML, Konvertierung von XML-Daten zu relationalen Daten etc. ermöglichen. Die Wichtigsten sind: • xmlexists - Resultate werden nach einem bestimmten XML-Element-Wert eingeschränkt. • xmlquery – Mit XMLQuery wird eine Query auf eine XML-Datei durchgeführt. • xmltable – erzeugt aus XML-Daten eine relationale Tabelle. • xmlelement – erzeugt aus relationalen Daten ein XML-Dokument • xmlparse – parst Elemente aus einem XML-File, um ein Update oder Delete durchführen zu können 11 XML databases 4 Martin Hölbling Anwendungsbeispiel – XML in DB2 Viper: Im Anwendungsbeispiel wird ein Autofeedbacksystem mit DB2 Viper vorgestellt. Das Autofeedbacksystem speichert Fehlermeldungen eines Autos als XML-Datei und überträgt diese Daten per UMTS/EDGE an den Hersteller/Vertriebspartner. Dieser verfügt über eine Kundendatenbank, die das Auto einem Kunden zuordnen kann. Aus Komplexitätsgründen wird angenommen, dass ein Kunde nur ein Auto besitzt. 4.1 Datenbankschema: Das Datenbankschema besteht aus einer relationalen Datenbank mit den Tabellen Fahrzeug und Kunde. create table fahrzeug( id int primary key not null, modellname varchar(30), variante int, error_reports xml) create table kunde( id name fahrzeug_id kontaktinfos int primary key not null, varchar(50), int, xml) Weiters werden XML-Dateien zu Autos und Kunden abgelegt: <error_report> <id>512.18b</id> <bezeichnung>ABS ausgefallen</bezeichnung> <kunde_id>43</client_id> </error_report> <kontakt> <adresse> <strasse>Sponheimerstr. 2/1/11</strasse> <plz>9020</plz> <ort>Klagenfurt</ort> <land>Österreich</land> </adresse> <telefon> <privat>+436606278464</privat> </telefon> <email>[email protected]</email> <email>[email protected]</email> </kontakt> 12 XML databases 4.2 4.2.1 Martin Hölbling Abfragen Selektion der Fahrer des Fahrzeugs mit der ID 144 Eine Selektion der Kunden, die ein Fahrzeug mit der ID 144 fahren, werden mit einem normalen SQL-Statement ausgelesen. Select name, contactinfo from kunde where fahrzeug_id=144 Als Ergebnis werden relationale und XML-Daten geliefert: Martin Hölbling <kontakt> <adresse> <strasse>Sponheimerstr. 2/1/11</strasse> <plz>9020</plz> <ort>Klagenfurt</ort> <land>Österreich</land> </adresse> <telefon> <privat>+436606278464</privat> </telefon> <email>[email protected]</email> <email>[email protected]</email> </kontakt> 4.2.2 Restriktion aufgrund eines XML-Werts Selektion der Fahrer der Fahrzeuge mit der ID 144 und dem error_report mit der id 512.18b select k.name, k.kontaktinfo from kunde k, fahrzeug f where k.fahrzeug_id=144 and f.id=144 and xmlexists(‘$c/error_report[id=”51218”]’ passing f.error_reports as “c”) Mit der xmlexists-Anweisung werden alle Fahrer des Fahrzeugs 144 bei denen die Fehlermeldungen mit der ID “512.18b” (ABS ausgefallen) aufgetreten ist, selektiert. Diese könnten zum Beispiel über eine Rückrufaktion verständigt werden. Als Ergebnis wird Folgendes geliefert: Martin Hölbling <kontakt> <adresse> <strasse>Sponheimerstr. 2/1/11</strasse> <plz>9020</plz> <ort>Klagenfurt</ort> <land>Österreich</land> 13 XML databases Martin Hölbling </adresse> <telefon> <privat>+436606278464</privat> </telefon> <email>[email protected]</email> <email>[email protected]</email> </kontakt> 4.2.3 XMLQuery Selektion aller E-Mail Adressen von allen Fahrern des Fahrzeugs mit der ID 144. Mit der xmlquery-Anweisung werden XML-Daten selektiert. Das passing Attribut gibt den Pfad der XML-Datei in die Pfadvariable $c. select xmlquery(‘$c/kontakt/email’ passing kontaktinfos as $c) from clients where fahrzeug_id=144 Als Ergebnis werden XML-Tags in folgender Form geliefert: … <email>[email protected]</email> … <email>[email protected]</email> … Das Problem hierbei ist, dass auch leere Tags ausgegeben werden, werden bei einem Kunden keine E-Mail-Adresse existiert. Um dies zu verhindern wird genau eine E-Mail-Adresse von allen Fahrern mit einem bestimmten Fahrzeug auslesen, sofern eine E-Mail-Adresse existiert. select xmlquery(‘$c/kontakt/email[1]’ passing kontaktinfos as $c) from clients where fahrzeug_id=144 and xmlexists(‘$c/kontakt/email’ passing kontaktinfos as “c”) Mit dem email[1]-Attribut wird genau eine E-Mail-Adresse selektiert. Mit der xmlexists-Anweisung wird überprüft, ob eine 4.2.4 Umwandlung von XML in SQL-Datentypen XML-Elemente können in „traditionelle“ SQL-Datentypen umgewandelt werden. Das folgende Statement liefert alle E-Mail-Adressen der Kunden aus Österreich und speichert diese in einer Tabelle: select k.name, i.email from kunde k, xmltable(‘$c/kontakt’ passing kontaktinfos as “c” columns i.email varchar(50) path ‘email[1]’) as i where xmlexists(‘$c/kontakt/email’ passing kontaktinfos as “c”) 14 XML databases Martin Hölbling Mit der xmltable-Anweisung werden XML-Tags in Tabellenform gebracht. „columns“ gibt an wie die Spalten bezeichnet werden und welches Attribut („email[1]) in die Spalte geschrieben werden. Als Ergebnis wird folgende Tabelle zurückgegeben: Name Martin Hölbling Doris Weidner … 4.2.5 email [email protected] [email protected] Joins von XML und nicht-XML Daten: Das Statement gibt eine Liste aller Fahrer der Fahrzeuge 144 mit der Fehlermeldung 512.18b aus. select k.name from kunde k, fahrzeug f xmltable(‚$c/error_report’ passing f.error_reports as „c“ columns e.kunden_id int path ‘kunde_id’) as e where f.id=144 and xmlexists(‚$c/error_report[id=”512.18b”]’ passing f.error_reports as “c”) and k.id=e.kunden_id 4.2.6 Umwandlung von relationalen Daten in XML: Das folgende Statement erzeugt eine XML-Datei aller Fahrzeuge. Mit der xmlelement-Anweisung werden XML-Tags mit Namen und Attributen erzeugt. select xmlelement (name „fahrzeug“, xmlelement (name „id“, id), xmlelement (name „modell“, modellname)) from fahrzeug Folgende XML-Datei wird erzeugt: … <fahrzeug> <id>144</id> <modell>C4</modell> </fahrzeug> 4.2.7 Update-Statement: Das Statement fügt dem Kunden mit der ID 43 eine weitere E-Mail-Adresse hinzu. Mit der xmlparse-Anweisung wird die Stelle geparst, in der die E-Mail-Adresse eingefügt werden soll. update kunde set kontaktinfo=( xmlparse(document ‚<email>[email protected]</email>)) where id = 43 4.2.8 SQL/XML-Statements in Java : 15 XML databases Martin Hölbling DB2 Viper mit SQL/XML lässt sich auf übliche Form in Java-Code verwenden. String selectStmt = null; String query = null; ResultSet rs = null; Connection conn = null; String zipCode = "9020"; try { . . . // erstelle eine Verbindung zur Datenbank (JDBC) . . . query = "select name from kunde where xmlexists(" + "'$c/Client/adresse[plz=$x]' "+ "passing clients.kontaktinfo AS \"c\", cast(? as char(5)) as \"x\" )"; //führe Anfrage durch selectStmt = conn.prepareStatement(query); selectStmt.setString(1, zipCode); // execute the statement rs = selectStmt.executeQuery(); // durchlaufe das ResultSet . . . // schließe die Verbindung . . . } catch (Exception e) { . . . 5 } Zusammenfassung Durch den enormen Zuwachs von Media-Files in Unternehmen und der signifikanten Bedeutung von XML im Webbereich, ist der Bedarf nach XML-Datenbanken gestiegen, um diese XML-Daten (wie z.B. Metadaten) persistent zu halten und zu verwalten. Vielfach existieren nicht nur reine XML-Daten, sondern auch relationale Datenbanken, die mit XML-Daten zusammengeführt werden sollen. Da XML tiefe Strukturen hat und unter Umständen nicht eindeutig und vollständig ist, geschieht die Zusammenführung mit relationalen Datenbanken nicht problemlos. Die Integration kann in XML-enabled Databases, mittels XML-Shredding oder in Nativen XML-Datenbanken durchgeführt werden. Während XML-enabled databases und XML-Shredding die XML-Daten in relationale Daten umwandeln, können Native XML-Datenbanken XML-Daten unabhängig von den relationalen Daten aufbewahren. Der Vorteil von Nativen XML-Datenbanken liegt vor allem in der Performanz. Zudem kann die ursprüngliche XML-Datei vollständig rekonstruiert werden, was bei XML-enabled Databases und XML-Shredding nicht unbedingt gewährleistet ist. 16 XML databases Martin Hölbling Literaturverzeichnis: [1] Digital Asset Management – Using A Native XML Database Implementation. S. Natu, J. Mendonca. 2003. CITC4´03 [2] XMP. Adobe. 2005. aus : http://www.adobe.com/xmp/ [3] Relational Databases for Querying XML Documents: Limitations and Opportunities. J. Shanmugasundaram, K. Tufte, G. He, C. Zhang, D. DeWitt, J. Naughton. 1999. Proceedings of the 25th VLDB Conference. [4] A Comprehensive Solution to the XML-to-Relational Mapping Problem. S. Amer-Yahia, F. Du, J. Freire. 2004. WIDM´04. [5] XML and Databases. R. Bourret. 1999 – 2005. aus: http://www.rpbourret.com/xml/XMLAndDatabases.htm [6] XML-Databaseproducts. R. Bourret. 2000 – 2005. aus: http://www.rpbourret.com/xml/XMLDatabaseProds.htm [7] ShreX: Managing XML Documents in Relational Databases. F. Du, S. Amer-Yahia, J. Freire. 2004 [8] DB2 Viper Specification. IBM. 2006. aus: http://www306.ibm.com/software/data/db2/udb/viper/xml.html [9] XML Guide – DB2 Viper. IBM 2006. S. 10 - 75 17