XML-Speicherung in Datenbanken Dr. Harald Schöning Überblick Einleitung Modelle zur Speicherung von XML in RDBMS Anfragesprachen Stand der Technik in kommerziellen RDBMS Tamino, ein natives XML-Datenbanksystem Zusammenfassung 2 © Dr. Harald Schöning 1-1 Benutzung von XML ursprüngliche Intention: Datenaustausch inzwischen vermehrt: Format für persistente Daten besonders für semistrukturierte Information (Daten vs. Dokumente) ¾ Nachrichten komplexe Daten ¾ Gesundheitswesen 70%-85% der relevanten Geschäftsinformation in Textdokumenten ¾geeignet für Darstellung in XML und für Protokolle ¾ Web Services persistente Speicherung in Datenbanken Schutz Sicherheit Anfragen Transaktionen 3 Speicherung in relationalen Datenbanken? eingeführte Technologie seit 20 Jahren immer mehr optimiert vielseitige Anwendungsszenarien OODBMS als Negativbeispiel für nicht-relationale Systeme 4 © Dr. Harald Schöning 1-2 Datenmodelle sind verschieden XML Relationale Welt Daten in einer hierarchischen Daten in mehreren flachen Struktur Knoten haben Elemente und / oder Attributwerte Elemente können geschachtelt Tabellen Spalten haben einen einzelnen Wert begrenzte Schachtelung sein Elemente sind geordnet Schema ist optional komplexes Typsystem keine Ordnung Schema ist verpflichtend einfacheres Typsystem 5 Inhaltsorientierte Zerlegung (Shredding) <Lieferung Datum="7.6.2001"> <Lieferadresse> Lieferung Teilnr Menge <Name>Harald Schöning</Name> <Stadt>Dieburg</Stadt> 17 4711 10 </Lieferadresse> 17 4712 11 <Teil Nummer="4711" Menge="10"/> <Teil Nummer="4712" Menge="11"/> </Lieferung> Lieferung Kunden Nr Datum Kunde Kundennr Name Ort 17 7.6.2001 K19 K19 Harald Schöning Dieburg 6 © Dr. Harald Schöning 1-3 Beschränkungen der inhaltsorientierten Zerlegung Abbildung muss definiert sein (automatisch/manuell) Dokumente ohne Schema können nicht gespeichert werden Künstliche Schlüssel zur Darstellung von Hierarchie Wild cards (offenes Schema), mixed content, Rekursion schwierig Änderung schwierig / unmöglich Originaltreue nicht garaniert Verlust von Kommentaren, Processing Instructions, DTD, Reihenfolge ineffiziente Nutzung relationaler Strukturen ggf. dünn besetzte Tabellen (bei optionalen XML-Anteilen) ggf. große Zahl von Tabellen ¾ hoher Rekonstruktions- und Sperraufwand inkompatibles Typsystem SQL-Typ darf nicht strenger sein Normalisierung auf SQL-Ebene gefährdet Originaltreue ¾ Datum 7 Strukturorientierte Zerlegung Speicherung in generischen Tabellen ¾ auch modellgestützte Speicherung genannt Abspeichern der Kanten und Knoten des zum XML-Dokument gehörigen Strukturbaumes Aus 1 XML-Dokument werden viele Sätze Schema der relationalen Datenbank ist unabhängig vom Schema der XML-Dokumente einmalige Definition Verwendete relationale Strukturen für Benutzer unbrauchbar (keine Anwendungssemantik) vollständige Abbildung möglich Kommentare, processing instructions Reihenfolgeerhaltung kanonische Äquivalenz 8 © Dr. Harald Schöning 1-4 Strukturorientierte Zerlegung - Beispiel 2 1 <Lieferung Datum=„11.11.2003"> 3 <Lieferadresse> Quelle Nr 4 <Name> 1 0 Harald Schöning 1 0 </Name> 1 1 <Stadt> 5 3 1 Dieburg 3 2 </Stadt> 1 2 </Lieferadresse> 6 0 6 <Teil Nummer="4711"7 6 0 8 Menge="10" /> 1 3 9 <Teil Nummer="4712"10 9 0 /> 11 Menge="11" 9 0 </Lieferung> Tag Ziel Daten Lieferung 1 @Datum 0 11.11.2003 Lieferadresse 3 Name 4 Harald Schöning Stadt 5 Dieburg Teil 6 @Nummer 0 4711 @Menge 0 10 Teil 9 @Nummer 0 4712 @Menge 0 11 9 Strukturorientierte Zerlegung – Problemfelder Performance Anfragen beinhalten komplexe Joins Anfragen enthalten Sortierung (wegen der Reihenfolgeerhaltung) keine gezielte Indizierung (z.B. auf Elementebene) Locking viele Tupel pro Dokument ⇒ viele Sperren pro Änderung Anfragemächtigkeit Elementübergreifende Anfragen ¾ text retrieval 10 © Dr. Harald Schöning 1-5 Opake Speicherung XML-Dokument als Inhalt einer Spalte einer Tabelle (BLOB, CLOB) oder als externe Datei CREATE TABLE xmlTable (… xml BLOB) schematische Beschreibung des XML-Dokumentes nicht erforderlich Bitidentität prinzipiell möglich Heute oft XML-Typ 11 Opake Speicherung - Beispiel <Lieferung Datum=„11.11.2003"> <Lieferadresse> <Name> Harald Schöning </Name> <Stadt> Dieburg </Stadt> </Lieferadresse> <Teil Nummer="4711" Menge="10" /> <Teil Nummer="4712" Menge="11" /> </Lieferung> xml <Lieferung Datum=„11.11.2003"><Lieferadresse><Name> Harald Schöning</Name><Stadt>Dieburg</Stadt> </Lieferadresse><Teil Nummer="4711" Menge="10" /> <Teil Nummer="4712" Menge="11"/></Lieferung> 12 © Dr. Harald Schöning 1-6 Opake Speicherung - Problemfelder Optimierbarkeit der Anfrage Das relationale System kennt die Struktur des Dokuments nicht Ganzes Dokument muss gelesen werden Auch beim Zugriff auf einzelnes Element 13 Anfragesprache (Benutzer) SQL ist bestenfalls bei inhaltsorientierter Zerlegung geeignet nur dort Anwendungssemantik auf relationaler Ebene Elementübergreifende Anfragen nicht immer möglich Ergebnis ist eine Tabelle ¾ Transformation nach XML in nachgelagertem Schritt ¾ SQL/XML zur XML-Einbettung XPath eingeschränkte Funktionalität nicht als Anfragesprache entworfen W3C XQuery dedizierte XML-Anfragesprache textorientierte Anfragen? 14 © Dr. Harald Schöning 1-7 Mischung von SQL und XPath / XQuery Modellbruch Oracle 9i / 10g: SQL/XML SELECT extractValue(value(d), '/Description') "Description" FROM Purchaseorder, table(xmlSequence(extract(object_value, '/PurchaseOrder/LineItems/LineItem/Description'))) d WHERE existsNode(object_value, 'PurchaseOrder[Ref="SV-2803030912"]')=1 entspricht XPath-Ausdruck /PurchaseOrder[Ref="SV-2803030912"]/LineItems/LineItem/Description UPDATE Personalakten p SET p.Personalakte = SYS.XMLType.createXML('<?xml version="1.0"?> <Personalakte Personalnummer="2234"> ... </Personalakte> ') WHERE p.Personalakte.extractvalue('/Personalakte/@Personalnummer') = 2234 15 Queries in kommerziellen RDBMS MS SQL Server (SQL Server 2005) SELECT PK, XDOC.xquery('for $s in /BOOK/SECTION return <topic>{data($s/TITLE)}</topic> ') FROM DOCS XQuery bezieht sich nur auf ein Dokument! DB2 (native XML-Unterstützung, geplant) for $e in db2-fn:xmlcolumn(″ DEPT.DEPTDOC ″)/dept/employee where $e/office=344 return $e/name let $d:=db2-fn:sqlquery(' select deptdoc from dept where deptID= ″ PR27 ″ ') let $u:=db2-fn:sqlquery(' select XMLELEMENT(NAME ″Unit ″, XMLFOREST(ID, name, manager)) from unit where ID= ″ PR27 ″“') return <report><units>{$u}</units><department>{$d}</department>></report> select deptID, deptdoc from dept d where deptID LIKE ″ PR% ″ and xmlexists(' $deptdoc/dept/employee[office=344] ' passing by ref d.deptdoc as ″ deptdoc ″) 16 © Dr. Harald Schöning 1-8 Stand der Technik (kommerzielle Systeme) Oracle 10g Opak oder inhaltsorientiert Keine Unterstützung von XQuery Forschung: Index gemäß strukturorientierter Zerlegung für opake Speicherung Rudimentär: Text Retrieval XML Schema Validierung nicht erzwungen IBM DB2 In Vorbereitung: native Unterstützung von XML Integration von XQuery im relationalen Optimierer XML Schema Validierung nicht erzwungen Microsoft SQL Server In Vorbereitung: XQuery auf einzelnen Spalten Index gemäß strukturorientierter Zerlegung Tamino Native Unterstützung seit 1999 XQuery seit 2003 17 Perspektive in relationalen Datenbanksystemen eigene, gleichberechtigte Anfrageauswertungskomponenten SQL engine SQLOptimierer SQL Speicherung XML-Anfrageauswertung gemeinsame Optimiererlogik ? XQueryOptimierer XML-Speicherung 18 © Dr. Harald Schöning 1-9 ein XMLDatenbanksystem Seit 1999 verfügbar Native XML-Unterstützung, kein Modellbruch XQuery als primäre Anfragesprache Integration heterogener Datenquellen Erweiterbar durch "Server extensions" speichert XML-Dokumente und "non-XML" schematische Beschreibung ist möglich, aber nicht zwingend http ist primärer Zugang Indizierung gemäß XML-Struktur 19 Der XML-Datenbankserver: XML speichern Dokumente mit und ohne Schemaassoziation ggf. Validierung einzeln oder als Menge von Dokumenten zu speichern eindeutige ID pro Dokument optional Dokumentname Datenbank Collection … Schema Doctype … Collection … Schema Doctype 20 © Dr. Harald Schöning 1-10 Der XML-Datenbankserver: XML abfragen und ändern XQuery W3C draft Erweiterung für update plus Funktionsbibliothek Tamino-Namensraum Text-Retrieval XQJ Beispiel: Beispiel: „Autoren „Autorenmit mitihren ihrenBüchern“: Büchern“: <Autorenliste> <Autorenliste> {for {for$a $ain incollection(″Bücher″ collection(″Bücher″)/alle/Autor )/alle/Autor return return<Eintrag> <Eintrag> {$a} {$a} {for {for$b $bin incollection(″Bücher″ collection(″Bücher″)//Buch[Autor=$a] )//Buch[Autor=$a] return return$b/Titel} $b/Titel} </Eintrag>} </Eintrag>} </Autorenliste> </Autorenliste> 21 Der XML-Datenbankserver: Text Retrieval Wildcards tf:containsText(Titel, "Tam* Data*") Suche nach benachbarten Wörtern tf:containsAdjacentText(Titel,3,"Tamino","Datenbanksystem") Tamino ist ein Datenbanksystem Suche nach Stammformengleichheit tf:containsText(Titel,tf:stem("speichern")) Tamino speichert XML Suche nach gleichem Klang tf:containsNearText(Titel,3,tf:phonetic("stark"), tf:stem("speichern") XML-Speicherung ist Taminos Stärke Mit anderen Bedingungen kombinierbar declare namespace tf="…" for $b in input()//Buch where tf:containsText($b/Titel,"XML") and $b/Preis<100 return $b Funktioniert mit und ohne Index 22 © Dr. Harald Schöning 1-11 Der XML-Datenbankserver: XML Schema Schemadefinition über W3C XML Schema Das Tamino Schema ist ein gültiges XML Schema Annotationen, um Tamino-Spezifika anzugeben Standard-Mechanismus von XML Schema eigener Tamino-Namensraum wird benutzt Benutzt für logische Angaben, die über XML Schema hinausgehen nationale Sortierordnungen, Zugehörigkeit zu Collections usw. Benutzt für physische Angaben Indexierung usw. Schemaänderungen möglich (ggf. mit Validierung) offene Schemata 23 Der XML-Datenbankserver: Security Autorisierung auf Collection Doctype Knotenebene Funktionen Über ACLs Benutzer Gruppen Rechte Authentisierung Web Server Tamino Betriebssystem 24 © Dr. Harald Schöning 1-12 Der XML-Datenbankserver: Indexierung Indextypen Compound index Standard Elemente Attribute Text Elemente Attribute Struktur doctype Kombination von Elementen und Attributen zu einem einzigen Index Reference index Speziell auf hierarchische XMLStruktur zugeschnitten Multipath index Besonders für rekursive Strukturen 25 Der XML-Datenbankserver: Internationalisierung mehr als 100 encodings für XML-Dokumente unterstützt <?xml version="1.0" encoding="iso-8859-2"?> Konvertierung beim Speichern und Abfragen möglich IRI-Unterstützung Zeichenrepertoire von Unicode 3.2 nationale Sortierordnungen Text Retrieval für nicht auf Buchstaben beruhende Sprachen Chinesisch Japanisch Koreanisch tf:containsText(" 心臟疾病 ", " 心") Regeln für sprachspezifische Behandlung von Zeichen definierbar ß Æ ss 26 © Dr. Harald Schöning 1-13 Der XML-Datenbankserver ... ist ein Datenbanksystem Volle Unterstützung von ACID Transaktionen verschiedene Isolationsebenen können gewählt werden verteilte Transaktionen Cursoring Backup / Recovery Einbindung der Backupkonzepte von EMC, Network Applicances usw. High Availability Replikation 27 Tamino X-Node: XML-Anbindung an RDBMS Abbildung relationaler Strukuren nach XML Teile von Dokumenten aus Tamino, andere aus dem RDBMS Abfragen Abspeichern Ändern Auch für Adabas 28 © Dr. Harald Schöning 1-14 Tamino X-Tension: Erweiterung der Serverfunktionalität Durch benutzerdefinierte Server-Extensions Bibliotheken mit Callback-Möglichkeiten Mapping von XML (Sub-) Dokumenten auf externe Datenquellen Trigger Binden von Aktionen an Operationen auf Knoten Anfragefunktionen Erweiterung von X-Query durch benutzerdefinierte Funktionen Reaktion auf Ereignisse Beendigung einer Transaktion usw. 29 XML-Anbindung anderer Formate Tamino kann beliebige Dateien speichern .txt, .gif, .doc usw. Bei Text erfolgt automatisch eine Textindizierung Weitergehende Indizierung möglich durch Server Extension Erzeugung eines "Schattendokumentes„ Dokumentinhalt und Metadaten werden in XML-Form zugänglich beliebige Anfragen Extraktion / Konvertierung durch spezielle Server Extension © Dr. Harald Schöning 30 1-15 XML-Anbindung anderer Formate: weitergehende Indizierung Datenbank Server extension Nicht-XML Dokument Metadaten + Inhalt Original XML 31 Schnittstellen X-Application Framework Java Tamino Java API Browser OCX WebDAV WebDAV Server Server .Net API SOAP SOAP API API X-Node X-Node X-Tension X-Tension Server Server Extension Server Extension Server Extension Extension © Dr. Harald Schöning SOAP client HTTP JScript HTTP Client API WebDAV client Tamino Store SQL Store ADABAS Store XML non-XML relational Adabas 32 1-16 Tamino Werkzeuge: Tamino X-Plorer Browser durch die Datenbank Anfragen zur Einschränkung der sichtbaren Dokumente 33 Tamino Werkzeuge:Query Tool Syntax highlighting für W3C XQuery Query history 34 © Dr. Harald Schöning 1-17 Tamino Werkzeuge: Schema Editor 35 Tamino Werkzeuge: Administration 36 © Dr. Harald Schöning 1-18 Zusammenfassung RDBMS Abbildung auf relationale Strukturen nicht zukunftsfähig Entwicklung in Richtung nativer XML-Unterstützung ¾ noch sehr am Anfang Tamino XML speichern mit oder ohne Schema, oder offenes Schema Andere Formate speichern Mit Brücke zu XML XML Indizierung XML-Security X-Tension zur Erweiterung der Server-Funktionalität X-Node zur Anbindung externer Datenbanken 37 38 © Dr. Harald Schöning 1-19