Seminar XML und Datenbanken Modellbasierte Abbildung XML – SQL Vortrag von Marcus Wenzel Dozenten: Knut Stolze & Peter Müller Modellbasierte Abbildung XML – SQL Inhalt: (0) Einführung • Idee modellbasierter Abbildung • Aufteilung in 2 Abbildungsarten • Idee der datenbankseitigen Repräsentation (1) Einfache Graphenabbildung • Ein Beispiel • Konzept der Speicherung • Anfragen • Beispiel-Anfrage • Rekonstruktion Modellbasierte Abbildung XML – SQL Inhalt: (2) Speicherung unter Verwendung des DOM • • • • • • • Klassenhierarchie des DOM Die Klasse Node Die Klassen Elemente & Attr. Die Relation Node Die Relationen Elemente & Attr. Anfragen Eigenschaften Modellbasierte Abbildung XML – SQL Idee modellbasierter Abbildung: • Generische Speicherung eines binären Modells des XML-Dokumentes (z.B. DOM) • direkte Abbildung der Graphenstruktur Modellbasierte Abbildung XML – SQL Unterschieden in : (1) einfache Speicherung der Graphenstruktur (2) Speicherung der Graphenstruktur unter Verwendung des Documtent Object Models (DOM) Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Idee der datenbankseitigen Repräsentation: • Relation zur Speicherung der Elemente DocID Elementname ID Vorgänger Kind-Nr Wert • Relation zur Speicherung der Attribute DocID Attributname ElementID Wert Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Beispiel: XML <seminar id=„dbs001“ semester=„SS04“ <dozent1>=„Stolze“ <dozent2>=„Müller“ <veranstaltungsort> Herberge der FSU Friedrichroda</veranstaltungsort> <thema>“XML und Datenbanken“</thema> <termin>29.05.2004</termin> <adresse> <plz>98744</plz> <ort>Siegmundsburg</ort> <straße>Dorfstraße</straße> <nummer>4</nummer> </adresse> <dauer>“2 Tage“</dauer> <teilnehmerzahl>12</teilnehmerzahl> </seminar> Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Beispiel: DTD <!ELEMENT seminar (veranstaltungsort,thema,termin,adresse,dauer,teilnehmerzahl)> <!ATTLIST seminar id ID #REQUIRED dozent1 CDATA #IMPLIED> dozent2 CDATA #IMPLIED> <!ELEMENT veranstaltungsort (#PCDATA)> <!ELEMENT thema (#PCDATA)> <!ELEMENT adresse(plz,ort,strasse,nummer)> <!ELEMENT plz (#PCDATA)> <!ELEMENT ort (#PCDATA)> <!ELEMENT strasse (#PCDATA)> <!ELEMENT nummer (#PCDATA)> <!ELEMENT dauer (#PCDATA)> <!ELEMENT teilnehmerzahl (#PCDATA)> Modellbasierte Abbildung XML – SQL Beispiel – Graph: seminar thema termin adresse dauer 29.05.2004 XML & Daten banken plz teilnehmerzahl 2 Tage ort strasse 98744 Siegmundsburg Dorfstraße nummer 4 12 Modellbasierte Abbildung XML – SQL Beispiel-Relation (Elemente): DocID Elementname ID Vorgänger Kind-Nr Wert dbs001 seminar 1001 dbs001 thema 1002 1001 1 dbs001 termin 1003 1001 2 dbs001 adresse 1004 1001 3 dbs001 plz 1005 1004 1 dbs001 ort 1006 1004 2 Siegmundsburg dbs001 strasse 1007 1004 3 Dorfstraße dbs001 nummer 1008 1004 4 dbs001 dauer 1009 1001 4 dbs001 teilnehmerzahl 1010 1001 5 XML & Datenbanken 29.05.2004 98744 4 2 Tage 12 Modellbasierte Abbildung XML – SQL Beispiel-Relation (Attribute): Attribute DocID Attributname ElementID Wert dbs001 Semester 1001 SS04 dbs001 dozent1 1001 Stolze dbs001 dozent2 1001 Müller dbs001 id 1001 db001 Modellbasierte Abbildung XML – SQL Beispiel-Relation: • Möglichkeit der Trennung der einzelnen Datentypen auf eigene Relationen Integerwerte Stringwerte Verweis-ID Wert str001 XML & Datenbanken str002 Verweis-ID Wert i001 98744 Siegmundsburg i002 4 str003 Dorfstraße i003 12 str004 2 Tage Datum Verweis-ID d001 Wert 29.05.2004 Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Konzept der Speicherung • • • • • • Darstellung der Elementhierarchie in der Relation Elemente durch die Attribute ID, Vorgänger und Kind-Nr. in der Relation Attribute werden ElementID (wichtig!), Attributname und Wert gespeichert. durch die beiden Relationen werden die grundlegenden Informationen des XMLDokuments gespeichert. Entities müssen vor Speicherung aufgelöst werden, um Anfragen an XML-Dokumente effizient zu halten. Werte von Attributen oder Elementen können in separaten Relationen abgebildet werden: – für jeden mgl. Datentyp eigene Relation – in den Mutterrelation erfolgt Verweis auf ID für Processing Instructions und Kommentare ebenfalls eigene Relationen. Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Anfragen(1): • einfache Anfragen ( suche nach tagwert) effizient umsetzbar • Anfragen über mehrere Elemente erfordern rekursive Verbundanweisung auf Elemente-Relation (sehr aufwändig) • Elemente-Relation wächst mit der Größe des XML-Dokuments oder der Anzahl der gespeicherten XML-Dokumente (jedes Element ein Tupel in Relation) Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Anfragen(2): • XQuery/XPath-Anfragen möglich Xquery SQL • Anfragen auch als angepaßte SQL-Anfragen realisierbar (siehe Beispiel angepaßte SQL-Anfrage) • Anfragen jedoch sehr ineffizient, wegen Verbund-Operationen über Relation zur Speicherung der Elemente DB Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Beispiel: Xquery-Anfrage FOR $i IN //seminar WHERE $i/dozent1=„Stolze“ RETURN <seminar> <thema>$i/thema</thema> <dozent1>$i/dozent1</dozent1> </seminar> Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Beispiel: angepasste SQL-Anfrage SELECT a.wert,b.wert FROM Elemente a, Attribute b WHERE a.elementname = ‚thema‘ AND b.attributname = ‚dozent1‘ AND b.wert = ‚Stolze‘ AND a.DocID = b.DocID • • Welche anderen Seminare betreut/e Knut Stolze ? Anfrage schon problematisch weil zwischen Elemente und Attribute-Relation gejoint werden muß. Modellbasierte Abbildung XML – SQL (1) einfache Speicherung der Graphenstruktur Rekonstruktion: • weil Graphenstruktur vollständig abgebildet wird, prinzipiell möglich. • jedoch wegen vieler (notwendiger) Joins sehr zeitaufwändig Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Die Klassenhierarchie des DOM : Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Die Klassenhierarchie des DOM: • in relationalen und objektrelationalen Datenbanken wird Node durch die in der nächsten Folie dargestellte Relation abgebildet • Speicherung des DOM nicht direkt über Methoden, sondern durch SQLAnweisungen (SELECT oder UPDATE u.s.w) an die Datenbank Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Die Klasse Node getNextSibling() getNodeType() getParentNode() getPreviousSibling() hasChildren() insertBefore(´Node,Node) removeChild(Node) replaceChild(Node,Node) Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Die Klassen Element & Attr getAttrbutes() getName() getElementsByTagName(String) getSpecified() getTagName() getValue() setAttributes(Attribute) setName(String) setAttributes(AttributeList) setSpecified(NodeList) setTagNAme(String) setValue(NodeList) toString() Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Die Relation Node: node_id node_type doc_id parent p_sibling n_sibling 001 element dbs001 - - - 002 element dbs001 001 - 003 003 element dbs001 001 002 004 004 element dbs001 001 003 009 005 element dbs001 004 - 006 006 element dbs001 004 005 007 007 element dbs001 004 006 008 008 element dbs001 004 007 009 009 element dbs001 001 008 010 010 element dbs001 001 009 - 011 attribut dbs001 001 - 012 012 attribut dbs001 001 011 013 013 attribut dbs001 001 012 014 014 attribut dbs001 001 013 - Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Die Relationen Elemente & Attr: • jeder Methode der einzelnen Klassen wird ein Datenbankattribut zugeordnet • Elemente und Attr sind von Node abgeleitet • Elemente wieder nach Datentypen in Einzelrelationen zerlegbar Elemente node_id tag_name 001 seminar 002 thema 003 termin 004 adresse 005 plz 006 ort 007 strasse 008 nummer 009 dauer 010 teilnehmerzahl text Attr XML & Datenbanken node_id attr_name attr_value 011 semester SS04 true 012 dozent1 Stolze true Friedrichroda 013 dozent2 Müller true Dorfstraße 014 id dbs001 true 29.05.2004 98744 4 2 Tage 12 specified Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Anfragen: • XPath/XQuery-Anfragen möglich • durch Query-Rewriting auf Datenbankanfragen (unter Berücksichtigung des intern gewählten Speichermodells) SQL-Anfragen möglich • Ergebnisse werden zurücktransformiert • Datenbank-Anfragesprachen einsetzbar • im relationalen Datenbank-Modell sind Informationen nicht über die Methoden abfragbar (Methoden in SQL-Anweisungen repräsentiert) Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Eigenschaften(1): • unter Verwendung von DOM festes Datenbank-Schema • alle Informationen über die Dokumente werden als Werte der DB gespeichert • Speicherung unabhängig von Schemabeschreibung • XML Dokumente ohne DTD und XML Schema speicherbar (ideal für Dokumente mit häufig wechselnder Struktur) Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Eigenschaften(2): • DOM von W3C festgeschrieben • über DOM auch UPDATES auf Dokumenten effizient durchführbar, weil keine vollständigen XML-Dokumente geändert werden müssen • DOM Information wird vollständig & permanent gespeichert • XML-Dokumente sind rekonstruierbar Modellbasierte Abbildung XML – SQL (2) Speicherung unter Verwendung des DOM Eigenschaften(3): • nicht verwendbar bei komplizierten Anfragen • Beantworten von Anfragen ist umständlich (langsam) • Rekonstruktion sehr aufwändig Modellbasierte Abbildung XML – SQL Fragen ???