XML-Dokumente in objektrelationalen Datenbanksystemen Meike Klettke Universität Rostock [email protected] www.xml-und-datenbanken.de 1 Ein Titel ... und ein Untertitel XML-Dokumente in objektrelationalen Datenbanksystemen – Wunschvorstellung der Speicherung, Möglichkeiten in DB2 und Oracle, Kombination von XQuery und SQL, hybride Speicherung Motivation XML als Format zur Dokumentdarstellung existiert seit 10 Jahren als Schlagwort sehr populär (gewesen) mittlerweile gibt es viele Anwendungen, die XML-Dokumente erzeugen oder verwenden häufig ist eine dauerhafte Speicherung notwendig Datenbanksysteme wurde erweitert, um XML-Dokumente verarbeiten zu können ... zur Popularität von XML ... „XML is the ASCII of the 21th century.“ „XML is the ASCII of the Web“ (Henry Thompson, 1999) It takes ten minutes to understand (base) XML, and then ten month to understand the new technologies hung around it. (Peter Chen) warum wurde XML so populär? einfach zu verstehen, leicht zu erlernen (Syntax von XMLDokumenten) lesbar, selbstbeschreibend damit prädestiniert als Austauschformat ... im Vortrag heute ... Erweiterungen von Datenbankmanagementsystemen, um XMLDokumente zu speichern, anzufragen und zu verändern, dazu 1. Arten von XML-Dokumenten 2. Klassifikation von Speicherungsverfahren 1. 2. 3. 4. 3. Realisierung in objekt-relationalen Datenbanksystemen 1. 2. 3. 4. Speicherung als Ganzes und Indizierung Speicherung der Graphstruktur strukturierte Speicherung in Datenbanken Hybride Verfahren Speicherung Anfragen in DB2 und Oracle Updates und Schemaevolution Einsatz und Verwendung dieser Speicherungsvarianten 1) Klassifikation von XMLDokumenten Datenzentrierte Dokumente strukturiert, regulär Beispiele: Produktkataloge, Bestellungen, Rechnungen Dokumentzentrierte Dokumente unstrukturiert, irregulär Beispiele: wissenschaftliche Artikel, Bücher, E-Mails, Webseiten Semistrukturierte Dokumente datenzentrierte und dokumentzentrierte Anteile Beispiele: Veröffentlichungen, Kundendaten und Originalverträge, ... <order> <customer>Meyer</customer> <position> <isbn>1-234-56789-0</isbn> <number>2</number> <price currency=„Euro“>30.00</price> </position> </order> <content> XML builds on the principles of two existing languages, <emph>HTML</emph> and <emph>SGML</emph> to create a simple mechanism .. The generalized markup concept .. </content> <book> <author>Neil Bradley</author> <title>XML companion</title> <isbn>1-234-56789-0</isbn> <content> XML builds on the principles of two existing languages, <emph>HTML</emph> and .. </content> </book> 2) Anforderungen an die XMLSpeicherung Nach (Fiebig, Kanne, Moerkotte) Effektive Speicherung Effizienter Zugriff auf XML-Dokumente oder Teile davon Unterstützung von XPath und XQuery Unterstützung von SAX und DOM für Anwendungen Transaktionsverwaltung Wiederherstellbarkeit der Dokumente (oder der Informationen aus den Dokumenten) Speicherung von XML-Dokumenten Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzerdefiniertes Mapping Speicherung als Ganzes und Volltextindizierung Term Element nachricht autor nachname Fürst vorname Christian inhalt ueberschrift Vermarktungsfest text Wolfgang … <nachricht id="ID0001" bedeutung="4"> <autor autor_id="A0001"> <nachname>Fürst</nachname> <vorname>Christian</vorname> <agentur>dpa</agentur> <e-mail>[email protected]</e-mail> </autor> <einordnung> <rubrik>Mozartjahr 2006</rubrik> … <inhalt> <ueberschrift>Ein Vermarktungsfest </ueberschrift> <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. </text> </inhalt> </nachricht> • bekannte Methode (älter als relationale Datenbanken) • Verfahren aus dem Bereich Information Retrieval • Anfragen können linguistische Merkmale nutzen (Stammwortsuche, Ähnlichkeitssuche) • keine Auswertung von Markup in den Anfragen Erweiterung um Pfadindex Term Verweis Element Fürst Christian Mozartjahr Vermarktungsfest Wolfgang … Element Verweis Ordnung nachricht 1 autor 1 nachname 1 vorname 2 … inhalt 3 ueberschrift 1 text 2 Vorgänger <nachricht id="ID0001" bedeutung="4"> <autor autor_id="A0001"> <nachname>Fürst</nachname> <vorname>Christian</vorname> <agentur>dpa</agentur> <e-mail>[email protected]</e-mail> </autor> <einordnung> <rubrik>Mozartjahr 2006</rubrik> … <inhalt> <ueberschrift>Ein Vermarktungsfest </ueberschrift> <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. </text> </inhalt> </nachricht> • damit Auswertung von Markup in den Anfragen möglich • XPath, XQuery Speicherung von XML-Dokumenten Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzerdefiniertes Mapping 2.2) Speicherung der Graphstruktur, Grundprinzip/ 1 <nachricht id="ID0001" bedeutung="4"> <autor autor_id="A0001"> <nachname>Fürst</nachname> <vorname>Christian</vorname> <agentur>dpa</agentur> <e-mail>[email protected]</e-mail> </autor> <einordnung> <rubrik>Mozartjahr 2006</rubrik> … <inhalt> <ueberschrift>Ein Vermarktungsfest </ueberschrift> <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. </text> </inhalt> </nachricht> ID Element n001 Wert Ordnung Vorgänger nachricht 1 - n002 autor 1 h001 n003 nachname Fürst 2 h001 n004 vorname Christian 1 H002 n005 agentur dpa 2 H002 n006 e-mail fuerst@dpa .de 3 h002 Element Attribut Typ Wert n001 id xs:ID ID0001 n001 bedeutung xs:int 4 n002 autor_id xs:ID A0001 • generische Speicherung der XML-Dokumente • werden mehrere XML-Dokumente in der Relation gespeichert, muss noch eine ID des XML-Dokumentes in der Relation ergänzt werden • kein Schema erforderlich Alternative dazu: basierend auf DOM (Document Object Model) Empfehlung des W3C DOMImplementation Node NodeList NamedNodeMap Attr CharacterData Comment Text CDataSection beschreibt Schnittstellen zum Zugriff auf XMLDokumente und zur Veränderung von Struktur und Inhalten Document DocumentFragment DocumentType Element Entity EntityReference Notation ProcessingInstruction diese ist die Grundlage für die persistente Speicherung der XML-Dokumente Speicherung von XML-Dokumenten Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzerdefiniertes Mapping 2.3) strukturierte Speicherung in relationalen Datenbanken Änderung des Datenbankschemas nachricht: <nachricht id="ID0001" bedeutung="4"> <autor autor_id="A0001"> <nachname>Fürst</nachname> <vorname>Christian</vorname> <agentur>dpa</agentur> <e-mail>[email protected]</e-mail> </autor> <einordnung> <rubrik>Mozartjahr 2006</rubrik> … <inhalt> <ueberschrift>Ein Vermarktungsfest </ueberschrift> <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. </text> </inhalt> </nachricht> id bedeutung autor inhalt ID0001 4 A0001 P0001 autor: ID autor_id nachname Vorname agentur e-mail x00001 A0001 Fürst Christian dpa fuerst@dpa. de inhalt: ID ueberschrift text y00001 Ein Vermarktungsfest Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. • Abbildung der Struktur der XML-Dokumente auf Datenbankstruktur • Schema erforderlich !! Verwendung objekt-relationaler Datenbanken Änderung des Datenbankschemas <nachricht id="ID0001" bedeutung="4"> <autor autor_id="A0001"> <nachname>Fürst</nachname> <vorname>Christian</vorname> <agentur>dpa</agentur> <e-mail>[email protected]</e-mail> </autor> <einordnung> <rubrik>Mozartjahr 2006</rubrik> … <inhalt> <ueberschrift>Ein Vermarktungsfest </ueberschrift> <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. </text> </inhalt> </nachricht> id ID0001 • adäquatere Darstellung von hierarchischen Informationen • gut abbildbar: Sequenzen von Elementen, Attribute • schlecht abbildbar: mixed content bedeutung 4 autor ... autor_id nachname vorname agentur e-mail A0001 Fürst Christian dpa fuerst@ dpa.de Problemfall bei der Abbildung: Mixed Content <text>Als <person>Wolfgang Amadeus Mozart</person> im Alter von 35 Jahren starb, war er bettelarm. Jetzt, zu seinem 250. Geburtstag, zeigen insbesondere österreichische PRExperten, wie man mit dem Namen des Salzburger Genies Millionen machen kann: Das <ereignis>Mozartjahr 2006</ereignis> ist zu einem Vermarktungsfest geworden, das der österreichischen Fremdenverkehrsindustrie und anderen Unternehmen -nicht nur in der Alpenrepublik -vermutlich mehrere hundert Millionen Euro zusätzlich in die Kassen bringen wird. </text> Ordnung #PCDATA 1 Als 2 3 ereignis Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, war er bettelarm. Jetzt, zu seinem 250. Geburtstag, zeigen insbesondere österreichische PR-Experten, wie man mit dem Namen des Salzburger Genies Millionen machen kann: Das 4 5 person Mozartjahr 2006 ist zu einem Vermarktungsfest geworden, das der österreichischen Fremdenverkehrsindustrie und anderen Unternehmen -nicht nur in der Alpenrepublik vermutlich mehrere hundert Millionen Euro zusätzlich in die Kassen bringen wird. Problemfall bei der Abbildung: Mixed Content Verwendung eines Attributes vom Typ XML Beispiel: <!ELEMENT text (#PCDATA | person| ereignis)*> text <text>Als <person>Wolfgang Amadeus Mozart</person> im Alter von 35 Jahren starb, war er bettelarm. Jetzt, zu seinem 250. Geburtstag, zeigen insbesondere österreichische PRExperten, wie man mit dem Namen des Salzburger Genies Millionen machen kann: Das <ereignis>Mozartjahr 2006</ereignis> ist zu einem Vermarktungsfest geworden, das der österreichischen Fremdenverkehrsindustrie und anderen Unternehmen -nicht nur in der Alpenrepublik -vermutlich mehrere hundert Millionen Euro zusätzlich in die Kassen bringen wird. </text> Verwendung der Speicherungsmethoden Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzerdefiniertes Mapping Für dokument-zentrierte XML-Dokumente Für semistrukturierte XML-Dokumente Für daten-zentrierte XML-Dokumente Was ist native Speicherung? Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzerdefiniertes Mapping Textbasierte native Modellbasierte native Speicherung Speicherung 2.4) Hybride Ansätze nachricht: <nachricht id="ID0001" bedeutung="4"> <autor autor_id="A0001"> <nachname>Fürst</nachname> <vorname>Christian</vorname> <agentur>dpa</agentur> <e-mail>[email protected]</e-mail> </autor> <einordnung> <rubrik>Mozartjahr 2006</rubrik> … <inhalt> <ueberschrift>Ein Vermarktungsfest </ueberschrift> <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. </text> </inhalt> </nachricht> id bedeutung autor inhalt ID0001 4 A0001 P0001 autor: ID autor_id nachname Vorname x00001 A0001 Fürst Christian ... <inhalt> <ueberschrift>Ein Vermarktungsfest </ueberschrift> <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, .. </text> </inhalt> für daten- als auch dokumentzentrierte Anteile Auswahl unterschiedlicher Speicherungsmethoden für verschiedene Dokumentanteile 3) Realisierung in objektrelationalen Datenbanken verschiedene Speicherungsmöglichkeiten werden unterstützt: Speicherungsmöglichkeiten bei Oracle: DB2: Abbildung nach Ulrike Schwinn, Oracle Realisierung in objektrelationalen Datenbanken Abbildung: DB2, aus einem Artikel von Holger Seubert 3.1) Verwenden des XML-Typs XML als nativer Datentyp, kann einzelnen Attributen zugeordnet sein Beispiel: create table nachricht ( id integer not null primary key, titel varchar(30) not null, autor varchar(30) not null, datum date, agentur varchar(10), text xml, kontext xml ); also hybride Speicherung Werte einfügen insert into nachricht values(1, 'Ein Vermarktungsfest', 'Christian Fürst', '2006-12-12', 'dpa', '<text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, war er bettelarm. Jetzt, zu seinem 250. Geburtstag, zeigen insbesondere österreichische PR-Experten, wie man mit dem Namen des Salzburger Genies Millionen machen kann... </text>', '<einordnung> <ort> <land>Österreich</land> <stadt>Salzburg</stadt> <stadt>Wien</stadt> </ort> <zeit> ... </zeit> <rubrik>Festakte</rubrik> <kategorie>Mozart</kategorie> <kategorie>Musik</kategorie> <kategorie>Kultur</kategorie> </einordnung>'); es erfolgt: Test auf Wohlgeformtheit Gültigkeitstest beim Einfügen von Werten Test auf Gültigkeit ist möglich: dazu Schemazuordnung REGISTER XMLSCHEMA http://www.informatik.uni-rostock/~meike/testschema_text.xsd FROM /users/db01/meike/public_html/testschema_text.xsd AS text_schema COMPLETE; insert into nachricht values(1, 'Ein Vermarktungsfest', 'Christian Fürst', '2006-12-12', 'dpa', XMLVALIDATE ( XMLPARSE(document '<text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, war er bettelarm. Jetzt, zu seinem 250. Geburtstag, zeigen insbesondere österreichische PR-Experten, wie man mit dem Namen des Salzburger Genies Millionen machen kann... </text>' ) ACCORDING TO XMLSCHEMA ID text_schema)), ... ); 3.2) Anfragen Anfragesprache für relationale: SQL Anfragesprache für XML-Dokumente: XQuery Anfragemöglichkeiten (Kombination dieser Anfragen): SQL SQL mit eingebettetem XQuery XQuery XQuery mit eingebettetem SQL Verwendung von build-in-functions zum Zugriff auf die XML-Anteile bzw. SQL-Anteile Zugriff auf die XML-Anteile über build-in-functions innerhalb von SQL-Anweisungen Dazu verfügbare build-in-functions (für die Einbettung von XQuery in SQL): xmlquery xmlexists xmltable ... Ergebnis der build-in-functions: Relation (xmltable) oder Wert (contains, xmlexists, xmlquery) XML-Element (XMLELEMENT) XML-Attribut (XMLATTRIBUTE) Relationale Anfragen /1 select * from nachricht; select titel, text from nachricht; Liefert als Ergebnis: TITEL TEXT -----------------------------------------------------------Ein Vermarktungsfest <text>Als Wolfgang Amadeus Mozart im Alter von 35 Jahren starb, ... </text> Mozartjahr eröffnet <text>Mit einem Fest für Mozart haben Salzburg und Wien am ... </text> Relationale Anfragen /2 In den Anfragen werden XML-Attribute nur als “Ganzes” behandelt, das heißt vollständig ausgegeben oder vollständig in Bedingungen verglichen Will man Bedingungen an die XML-Attribute formulieren, lässt sich die Funktion contains einsetzen, Beispiel: select titel from nachricht where contains(text, 'Mozart')=1; DB2 Net Search Extender muss dafür verfügbar sein, unterstützt werden: Schlüsselwortsuche, Stammwortsuche, fuzzy search in 37 Sprachen, .. SQL mit eingebetteten XQueryAnfragen /1 select titel, xmlquery( 'for $e in $i/einordnung/ort/stadt/text() return $e' passing kontext as "i ") as Ortsbezug from nachricht; Ergebnis: TITEL -------------------Ein Vermarktungsfest ORTSBEZUG ------------------------------Salzburg Wien Augsburg Mozartjahr eröffnet Salzburg Wien Augsburg SQL mit eingebetteten XQueryAnfragen /2 Verwendet wird also eine Funktion xmlquery, die als Eingabeparameter eine XQuery-Anfrage hat, weiterer Parameter beschreibt die Belegung einer XQuery-Variablen mit einem Datenbankattribut Ergebnis der Funktion ist ein Wert (String), der als Attribut ausgegeben wird XQuery-Anfragen /1 xquery for $e in db2-fn:xmlcolumn('NACHRICHT.KONTEXT') where $e/einordnung/ort/stadt/text()="Wien" return $e; Anmerkung: Großschreibung der Bezeichnungen VORLESUNG und INHALT notwendig, sonst werden Relation und Attribut nicht gefunden XQuery-Anfragen /2 Ergebnis: 1 ----------------------------------------------------------<einordnung><ort><land>Österreich</land><land>Deutschland</ land><stadt>Salzburg</stadt><stadt>Wien</stadt><stadt>Augsb urg</stadt></ort><zeit><datum>2006-0127</datum></zeit><rubrik>Festakte</rubrik><kategorie>Mozart </kategorie><kategorie>Musik</kategorie><kategorie>Kultur</ kategorie></einordnung> <einordnung><ort><land>Österreich</land><land>Deutschland</ land><stadt>Salzburg</stadt><stadt>Wien</stadt><stadt>Augsb urg</stadt></ort><zeit><datum>2006-0127</datum></zeit><rubrik>Festakte</rubrik><kategorie>Mozart </kategorie><kategorie>Musik</kategorie><kategorie>Kultur</ kategorie></einordnung> XQuery-Anfragen /3 xquery for $e in db2-fn:xmlcolumn('NACHRICHT.KONTEXT') where $e/einordnung/ort/stadt/text()="Wien" return $e; Innerhalb dieser Anfrage ist eine Funktion zu sehen: db2-fn:xmlcolumn, Hat als Parameter die Angaben zu (Owner.)Relation.Attribut Liefert den Inhalt des Attributes als Ergebnis, es muss ein Attribut vom Typ XML sein XQuery-Anfragen /4 Verwendung eines etwas komplexeren Beispiels mit Pfadausdrücken xquery for $e in db2-fn:xmlcolumn('NACHRICHT.TEXT')[person/text()= "Wolfgang Amadeus Mozart"] return $e; Ergebnis: 1 --------------------------------------------------<text>Jedes Jahr ist Mozartjahr. ... Aber nicht um isoliertes, unreflektiertes Feiern des 250. Geburtsjahres <person>Wolfgang Amadeus Mozart</person> sollte und durfte es beim WIENER MOZARTJAHR 2006 gehen, sondern um einen neuerlichen Versuch, sich dem „Wunder Mozart“ (Goethe) von verschiedenen Seiten zu nähern und gleichzeitig, mit seiner Hilfe, ... </text> XQuery mit eingebetteten SQLAnfragen man kann auch Anfragen stellen, die XQuery-Anfragen sind und über build-in-functions auf relationale Anteile zugreifen dazu jetzt ein Beispiel XQuery mit eingebetteten SQLAnfragen xquery for $n in db2-fn:sqlquery("select einordnung from nachricht where agentur='dpa‘ ") where $n[//land/stadt/text()="Wien"] return $n; Ergebnis: 1 ----------------------------------------------------<einordnung><ort><land>Österreich</land><land>Deutschland</ land><stadt>Salzburg</stadt><stadt>Wien</stadt><stadt>Augsb urg</stadt></ort><zeit><datum>Freitag, 27. Januar 2006</datum><uhrzeit>String</uhrzeit><zeitzone>String</zeit zone></zeit><rubrik>Festakte</rubrik><kategorie>Mozart</kat egorie><kategorie>Musik</kategorie><kategorie>Kultur</kateg orie></einordnung> Auch möglich: Verwendung von XQuery zur Anfrage relationaler Daten xquery for $x in db2-fn:sqlquery ("select XMLELEMENT(NAME ""headline"", XMLATTRIBUTES(id AS ""id""), titel) from nachricht") for $y in db2-fn:sqlquery ("select XMLELEMENT(NAME ""nachrichtenagentur"", XMLATTRIBUTES(id AS ""id""), agentur) from nachricht") where (contains($x/text(), 'Mozart')) and (contains($y/text(), 'spiegel')) and ($x/@id=$y/@id) return <klassiknachricht>{$x} </klassiknachricht>; Verwendung von XQuery zur Anfrage relationaler Daten /2 Ergebnis: 1 ---------------------------------------------<klassiknachricht><headline id="2">Mozartjahr eröffnet</headline></klassiknachricht> Verwendung von SQL Verwendung: Zur Anfrage relationaler Attribute Soll XML-Attribut als Ganzes ausgegeben werden und ist zur Suche auf den XML-Attributen Volltextsuche ausreichend dann eignet sich diese Variante Nicht realisierbar: Anfragen auf den XML-Attributen (XPath, XQuery) Verwendung von SQL mit eingebettetem XQuery Verwendung: überwiegend relationale Daten und wenig XMLFunktionalität, die ergänzt werden muss geeignet, wenn Anfragen gleichzeitig auf relationale Daten und XML-Daten zugreifen wenn Volltextsuchanfragen notwendig sind wenn Entwickler SQL bevorzugen Verwendung von XQuery Verwendung: reine XML-Anwendungen verfügbare XQuerys können mit nur geringen Änderungen (db2-fn:xmlcolumn() statt collection() ) verwendet werden wenn das Ergebnis XML sein soll kann joins zwischen XML-Dokumenten ausdrücken bisher keinen Volltextunterstützung keine Verwendung von user-defined functions Verwendung von XQuery mit eingebettetem SQL effizient bei Verwendung auf XML-Daten, ineffizient, wenn relationale Daten und XML-Daten zusammen ausgewertet werden Volltextsuche möglich (über contains) keine Joins zwischen relationalen Attributen und XML-Attributen Oracle: XML-Unterstützung /1 XMLType statt XML Anfragen ebenfalls über Funktionen realisiert, andere Bezeichnungen: ExtractValue extract existsNode im Create Table kann einem XML-Attribut ein Schema zugeordnet sein Oracle: XML-Unterstützung /2 Update von XML-Dokumenten ist hier möglich, Funktionen dazu: UpdateXML insertChildXML insertXMLbefore appendChildXML deleteXML im Fall einer Schemazuordnung: partielle Validierung 3.3) Update Updatesprache (also XQuery-Erweiterung) beim W3C als Working Draft Update von Werten und Struktur in den XML-Dokumenten bisher nicht in DB2 umgesetzt: nur Update des gesamten XML-Attributes, Revalidierung möglich in Oracle: Update von XML-Dokumenten möglich über die function UPDATEXML XQuery Update Erster Sprachvorschlag vom 26. Januar 2006 Aktueller Working Draft vom 11. Juli 2006 Syntaxbeispiele: do replace fn:doc("bib.xml")/books/book[1]/publisher with fn:doc("bib.xml")/books/book[2]/publisher do rename fn:doc("books.xml")/book/author as "editor“ do insert <year>2005</year> after fn:doc("bib.xml")/books/book[1]/publisher Updates von Struktur Abweisen von Updates, die die Gültigkeit verletzen Schema Realisierung: XMLDokumente Abweisen der Operation Update (Strukturänderung) Validierung gegen das Schema vor Umsetzung des Updates bei Verletzung der Gültigkeit wird Operation abgewiesen alle gespeicherten XMLDokumente sind schemakonform nicht alle Updates können umgesetzt werden Updates von Struktur 1. Schritt: Update wird abgewiesen (Schemaverletzung) 2. Schritt: manuelle Schemaevolution 3. Schritt: Update (sofern Schemaevolution richtig war) Update Manuelle Schemaevolution durch den Anwender Adaption der XML-Dokumente Update Bewertung Realisierung: Validierung gegen das Schema vor Umsetzung des Updates Manuelle Schemaevolution erforderlich Adaption der XML-Dokumente Updateoperation wird abgewiesen, Schemaveränderung muss durch den Anwender erfolgen, Update erneut durchführen Einsatz: In allen Systemen möglich, die Updates realisieren können Updates, die die Gültigkeit verletzen, ablehnen und Schemaevolution unterstützen Updates von Struktur, Variante 4 Durchführen von Updates, Veränderung des Schemas, anschließender Evolutionsprozess 3 Evolution Schema 2 XMLDokumente 1 Update (Strukturänderung) Neues Schema ? Welche Schemaevolutionsschritte können durch Updateoperationen überhaupt erfolgen? Verbindung zwischen Schemaevolution und Updates Schemaänderung, Überprüfung und Anpassung der zugehörigen XML- Dokumente 1 Evolution Altes Schema Neues Schema 2 Update XMLDokumente Veränderte XML-Dokumente Umsetzung der Schemaevolution bei Oracle Oracle: Schemaevolution seit Version 10g: Speicherung der XML-Dokumente als CLOB: Schemaevolution hat keine Auswirkungen, neue und alte Dokumente werden in der gleichen Relation/ im gleichen Attribut gespeichert Objektrelationale Speicherung: 2 Fälle: Alte Struktur soll neben der neuen weiterexistieren = Versionierung Anschließend existieren beide Speicherungsformen in der DB (zum Beispiel in 2 Relationen) Neue Struktur soll alte ersetzen Dokumente entladen, transformieren, neu laden in Oracle 10 automatisiert, Eingabeparameter: neues Schema und XSL-Stylesheets Schemaevolution in DB2 neue Version des Schemas als neues Schema registrieren Bestimmen, welche Attribute mit dem alten Schema validiert wurden: select xmlxsrobjectid(kontext) from nachricht where id=4; 1 -------------------11821949021857536 select objectname, schemaLocation from syscat.xsrobjects where objectid=11821949021857536; ----------------------------------------------------------------------------------------------EINORDNUNG_SCHEMA3 http://www.informatik.uni-rostock/ /~meike/testschema_einordnung3.xsd Update dieser Dokumente und Revalidieren mit dem neuen Schema Zusammenfassung Vorstellung der gegenwärtig vorhandenen Methoden zur Speicherung und Anfrage von XML-Dokumenten in DB2 und Oracle Schwerpunkt: verschiedene Varianten zur Anfragerealisierung weiterhin gezeigt: XML-Dokumentvalidierung bei Insert und Update offene Punkte im Bereich XML-Update und XMLSchema-Evolution Systeme, hybrid Hybride Speicherungsverfahren werden durch Datenbanksysteme unterstützt, die mehrere Speicherungsmöglichkeiten für XML-Dokumente anbieten. Oracle Speicherung eines XMLType in relationalen Datenbanken Anfragen realisierbar DB2 Speicherung von XML-Dokumenten als Attribut vom Typ XML in relationalen Datenbanken Anfragen realisierbar Updates bisher nur Austausch der gesamten XMLDokumente Vorschläge für die Diskussion Technology Hype Popularität (Häufigkeit der Verwendung) Gipfel der übersteigerten Erwartungen Anstieg zur Wiederauferstehung Tal der Ernüchterung Ebene der Produktivität Zeit 5) Verwendung dieser Methoden Verwendung von XML-Typen in Datenbanken Verwendung der Anfragevarianten Verwendung der Validierung Verwendung der Updatefunktionen XML-Schemaevolution ? Literatur /1 www.ibm.com Matthias Nicola, Fatma Ozcan: pureXML in DB2 9: Which way to query your XML data? http://www.ibm.com/developerworks/db2/library/techarticle/dm0606nicola/, Juni 2006 Holger Seubert: XML-Indizierung, Update und SchemaVerwaltung mit DB2 9, http://entwickler.de/zonen/portale/psecom,id,101,online,1037,p,0.h tml www.oracle.com Ulrike Schwinn (Oracle): XML in der Oracle Datenbank „relational and beyond“, BTW 2003 Meike Klettke, Holger Meyer, XML and databases, dpunkt.verlag, 2003 Meike Klettke, Holger Meyer: http://www.xml-und-datenbanken.de Literatur /2 Igor Tatarinov, Zachary G. Ives, Alon Y. Halevy, Daniel S. Weld, Updating XML, Proceedings of the ACM SIGMOD International Conference on Management of Data, 2001 (Syntax einer Updatesprache, basierend auf XQuery) Patrick Lehti: Design and Implementation of a Data Manipulation Processor for an XML Query Language, DA, TU Darmstadt, 2001 Hong Su, Diane K. Kramer, Elke A. Rundensteiner, XEM: XML Evolution Management, Computer Science Technical Report Series, Worchester Polytechnic Institute, WPI-CS-TR-02-09 Béatrice Bouchou, Denio Duarte, Mírian Halfeld Ferrari Alves, Dominique Laurent and Martin Musicante: Schema Evolution for XML: A Consistency-preserving Approach. 29th International Symposium, Mathematical Foundations of Computer Science MFCS 2004 Literatur /3 Meike Klettke, Holger Meyer, Birger Hänsel: Evolution --- The Other Side of the XML Update Coin. 2nd International Workshop on XML Schema and Data Management (XSDM), Tokyo, April 2005 Christian Will: Ableitung von Schemaevolutionsschritten aus XMLUpdateoperationen, Studienarbeit, Fakultät für Informatik und Elektrotechnik, 2006