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 ???

Wenzel