verwaltung von xml-dokumenten. © prof. t. kudraß, htwk leipzig 2 2 motivation xml-dokumente...
TRANSCRIPT
Verwaltung von XML-Dokumenten
2<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
2
Motivation XML-Dokumente können für sehr verschiedene
Anwendungen eingesetzt werden Aussehen der Dokumente unterscheidet sich
stark
Vielzahl von Methoden zur Speicherung existiert
verschiedene Abfragemethoden Mehrere Varianten zur Modellierung von XML-
Dokumenten und deren Struktur
3<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
3
Speichern & Liefern von Dokumenten Round-Trip-Problem
– Gespeicherte Dokumente werden “unverändert“ geliefert
Der ganze Inhalt– Prolog– Kommentare– Processing Instructions
Was heißt “unverändert“
4<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
4
XML-Architektur
<..>
physische
EbeneEbene
Dokument-verarbeitung
DokumentenEntwurf von XML-
Konzeptueller
</..></..>
logischeEbene
<..>
konzeptuelle
</..><..>XML
Datenbanken
Klettke / Meyer “XML-Datenbanken“
5<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
5
Logische Ebene
logischeEbene
<..><..>
</..>
</..><..> </..>
dat
enze
ntr
iert
sem
istr
uk
turi
ert
dok
-zen
trie
rtDatenmodellAnfragen/Updates anInhalt
XML, RDBM, OODBMXQuery, SQL, OQL
Daten- und Dokumentmodell
Struktur und InhaltAnfragen/Updates an
XML, OEMXQuery, Lorel
Dokumentmodell
Anfragen/Updates anStruktur und Inhalt
XML,SGMLXQuery, XPath, DOM,IR-Anfragen
6<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
6
Realisierung Physische Ebene
Speicherung der XML-Dokumente als Ganzes und Indizierung (textbasiert native)
– Volltextindex– Volltext- und Strukturindex
Speicherung der Graphenstruktur (modellbasiertes natives Verfahren)
– generische Graphspeicherung– Speicherung der DOM-Informationen
strukturierte Abbildung auf Datenbanken– relationale Datenbanken– objekt-orientierte und objekt-relationale Datenbanken– Einsatz von benutzerdefinierten Mappingverfahren
Ebenephysische
7<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
7
Architektur: physische Ebene
date
nzen
trie
rtse
mis
truk
turi
ert
dok-
zent
rier
t
relationale, objekt-relationaleoder objekt-orientierteDatenbanken
generische Speicherung von Graphen oderDOM-Informationen
Dateien Volltextindex, Strukturindex
Struktur auf Werteebene
Struktur auf Schema-und Werteebene
Struktur auf Schemaebene
Ebenephysische
8<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
8
Volltextindex und XML-Index
Volltextindex
Als Dateien / Clobs
Speicherung derDokumentstruktur
StrukturierteSpeicherung
in Datenbanken
VollständigesMapping
Benutzer-definiertesMapping
Abbilden des DOM-Modells
Abbildung derGraphstruktur
Für dokument-zentrierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Speicherung von XML-Dokumenten
9<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
9
Speicherungsmethoden(Klassifikation nach Schöning)
inhaltsorientierte Zerlegung– generisch (generelle Abbildungsvorschrift)– definitorisch (Abbildungsvorschriften für einzelen
Datenstrukturen)– Beispiel: Oracle (beide Varianten mit/ohne Annotations)
strukturorientierte Zerlegung– Verwendung allgemeiner Datenstrukturen (z.B. DOM /
Baumstruktur)– generell anwendbar auch bei unbekanntem
Dokumentenschema opake Speicherung
– gesamtes XML-Dokument in einer einzigen Spalte vom Typ VARCHAR oder CLOB
– SQL-Zugriff nur noch eingeschränkt möglich (bestenfalls dedizierte Funktionen)
10<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
10
Grundprinzip der invertierten Liste
1
2
2
1
3
1
A
B
D
E
C
F
2
1
3
A D F
3
3
3C DB
A C D E
2
Bestimmung der Stichworteder Dokumente
Dokumente Stichworte
Invertierte Speicherung:
Speicherung der Stichworte undder zugehörigen Dokumente
Stichworte Dokumente
11<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
11
Volltext-Index
- bekannte Methode (älter als relationale Datenbanken)- Boolesches Retrieval (AND, OR, NOT)
Verweis
Warnemünde
<adresse> <plz>18119</plz> <ort>Warnemünde</ort>
<nummer>12</nummer> </adresse> <anreisebeschreibung>
</anreisebeschreibung></hotel>
<hotelname>Hotel Hübner</hotelname>
Aus Richtung Rostock kommend ...
<hotel>
Begriff
anreisebeschreibung
ort
Rostock
hotel
<strasse>Seestraße</strasse>
12<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
12
Eigenschaften des Volltext-Indexes Schemabeschreibung
– nicht erforderlich
Dokumentrekonstruktion – Dokumente bleiben im Original erhalten
Anfragen – Anfragen des Information Retrieval
Weitere Besonderheiten– Volltextfunktionen (vgl. SQL-MM)– keine Auswertung des XML-Markups
Einsatz – für dokumentzentrierte XML-Anwendungen
Produkte – Oracle InterMedia Text, DB2 Text Extender
13<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
13
Kombinierter Volltext- und XML-Index
- XML - Struktur kann in Anfragen ausgewertet werden
Verweis
Verweis
Seestraße <strasse>Seestraße</strasse>
. . .
Vorgänger
<ort>Warnemünde</ort> <plz>18119</plz>
Element
<adresse><hotelname>Hotel Hübner</hotelname>
Volltext-Index
XML-Index
Element
ort
Aus Richtung Rostock kommend fahren Sie auf der
hotel
adresse
Stadtautobahn bis nach Warnemünde
strasse
<hotel>
</adresse><anreisebeschreibung>
Term
Warnemünde
Rostock
anreise-beschreibung
<anreisebeschreibung></hotel>
14<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
14
Eigenschaften des kombinierten Volltext- und XML-Indexes
Schemabeschreibung – nicht erforderlich
Dokumentrekonstruktion – Dokumente bleiben im Original erhalten
Anfragen – Anfragen des Information Retrieval – Auswertung des Markup in den Anfragen– XML-Anfragen möglich
Weitere Besonderheiten– Volltextfunktionen (vgl. SQL-MM)
Einsatz – für dokumentzentrierte XML-Anwendungen– auch für semistrukturierte Anwendungen
Produkte – Oracle InterMedia Text, DB2 Text Extender
15<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
15
Speicherung der Graphstruktur
• generische Speicherung der Struktur des XML-Dokumentes
Element
www...
Müller
ort
plz
ValueType Descendant-of
string
stringstrasse
Warnemünde
Seestrasse
hotel
string
Element
adresse
int 18119
Attribute ValueType
url
autor
string
Attributes:
Elements:
16<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
16
Eigenschaften der Speicherung der Graphenstruktur
Schemabeschreibung – Zur Speicherung nicht erforderlich
Dokumentrekonstruktion – Möglich, aber sehr aufwendig
Anfragen – XML-Anfragen möglich– Angepaßte Datenbankanfragen
Weitere Besonderheiten– Anfragen über vielen Elementen/Attributen sind aufwendig
Einsatz – für daten- und dokumentzentrierte, sowie semistrukturierte XML-
Anwendungen
Produkte – Algorithmen von Florescu/Kossmann, Bradley u.a.
17<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
17
Speicherung des DOM / 1 Informationen des
Document Object Models werden in Datenbanken gespeichert
Verwendung relationaler oder objekt-orientierter Datenbanken oder
Entwicklung eigener Speicherungsstrukturen
Comment
ProcessingInstruction
Document
DocumentFragment
DocumentType
Element
Entity
EntityReference
Notation
Text
CDataSection
DOMImplementation Node NodeList NamedNodeMap
CharacterData
Attr
18<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
18
Speicherung des DOM / 2
Methoden der Klasse Node: - getChildren() - getFirstChild() - getNextSibling() - getNodeType() - getParentNode() - getPreviousSibling() - hasChildren() Methoden der Klasse Element: - getAttributes() - getElementsByTagName(String) - getTagName() Methoden der Klasse Attribut: - getName() - getValue()
NodeID NodeType DocID ParentNode
NodeID ElementID AttributName AttributValue
PreviousSibling NextSibling FirstChild
NodeID TagName
19<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
19
Eigenschaften der Speicherung von DOM
Schemabeschreibung – Zur Speicherung nicht erforderlich
Dokumentrekonstruktion – Möglich, aber aufwändig
Anfragen – XML-Anfragen möglich– Angepasste Datenbankanfragen
Weitere Besonderheiten– Standardisierte und allgemein akzeptierte Schnittstelle
Einsatz – für daten- und dokumentzentrierte, sowie semistrukturierte
XML-Anwendungen Produkte
– infonyte (IPSI Darmstadt), eXcelon XIS (POET), ozone (SMB)
20<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
20
Abbildung der XML- Struktur auf relationale Datenbanken
- DTD ist erforderlich - Anfragen verwenden SQL - Funktionalität- Datentypen
<hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname> <adresse> <ort>Warnemünde</ort>
...
</adresse> <preise> <einzelzimmer>198</einzelzimmer>
</preise>...
</hotel>
<strasse>Seestraße</strasse>
XML-Dokument HotelID Hotelname Adresse Preise
H0001 Hotel Hübner A0001 P0001
AdresseID Ort Strasse ...
A0001 Warnemünde Seestraße
PreiseID Einzelzimmer ...
P0001 198
Hotel:
Preise:
Adresse:
21<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
21
Abbildung der XML- Strukturauf objekt-orientierte Datenbanken
- DTD ist erforderlich - Anfragen verwenden SQL - Funktionalität- Datentypen- Datenbanken mit vielen Nullwerten
HotelID Hotelname Adresse Preise
Ort Strasse ... einzelzimmer ...
H0001 Hotel Hübner Warnemünde Seestraße 198
Hotel:
XML-Dokument
<hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname> <adresse> <ort>Warnemünde</ort>
...
</adresse> <preise> <einzelzimmer>198</einzelzimmer>
</preise>...
</hotel>
<strasse>Seestraße</strasse>
22<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
22
Strukturierte Speicherung in Datenbanken
Schemabeschreibung – Zur Speicherung erforderlich
Dokumentrekonstruktion – Nur eingeschränkt möglich (Protokollierung des
Abbildungsprozesses) Anfragen
– Datenbankanfragen– XML-Anfragen möglich
Weitere Besonderheiten– Föderationen mit bestehenden Datenbanken möglich
Einsatz – für datenzentrierte XML-Anwendungen
Produkte – Algorithmen: Bourret, Suciu (STORED), Shanmugasundaram u.a.– Oracle XDK (XSU), Bluestone’s XML Suite
23<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
23
Benutzerdefiniertes Mapping
- Flexible Methode- Integration von XML-Dokumenten in existierende Datenbanken- Ein Mapping muss von Benutzer spezifiziert werden
Hotel Hübner
Hotel_URLHotelpreise
Name Einzelzimmer
www.hotel-huebner.de
198Datenbank
<ClassMap>
<ToClassTable>
</ToClassTable><Table Name="Hotelpreise"/>
<ElementType Name="hotel"/><hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname> <adresse> <ort>Warnemünde</ort>
... </adresse> <preise> <einzelzimmer>198</einzelzimmer>
</preise>...
</hotel>
<strasse>Seestraße</strasse><PropertyMap>
<ToColumn>
</ToColumn></PropertyMap><PropertyMap>
<ToColumn>
</ToColumn></PropertyMap>...
<Attribute Name="url"/>
<Column Name="Hotel_URL"/>
<ElementType Name="hotelname"/>
<Column Name="Name"/>
</Classmap>
XML-Dokument Mapping Vorschrift
24<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
24
Speicherung mittels benutzerdefiniertem Mapping
Schemabeschreibung – Zur Speicherung erforderlich
Dokumentrekonstruktion – Meist nicht möglich (Voraussetzung: Protokollierung des
Abbildungsprozesses, vollständige Abb.) Anfragen
– Datenbankanfragen– XML-Anfragen in Ausnahmefällen möglich
Weitere Besonderheiten– Integration in bestehende Datenbanken möglich
Einsatz – für datenzentrierte XML-Anwendungen
Produkte – DB2 XML Extender, Oracle XDK, Oracle 9iR2
25<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
25
Hybride Ansätze
Auswahl
unterschiedlicher
Speicherungsmethoden
für verschiedene
Dokumentanteile
Hotel
0381/5434-0
Ort Strasse Telefon
Strand Hotel Hübner Warnemünde Seestraße
komfortabel eingerichtetes 4-Sterne Hotel direkt an der Strandpromenade von Warnemünde mit Blick auf Leuchtturm, Hafeneinfahrt
Sie finden unser elegant und
und Ostsee.
<hotel>
<adresse><plz>18119</plz>
<nummer>12</nummer> <telefon>0381/5434-0</telefon>
</adresse> <hausbeschreibung> Sie finden unser elegant und
</hotel>
komfortabel eingerichtetes 4-Sterne Hotel direkt an der Strandpromenade von Warnemünde mit Blick auf Leuchtturm, Hafeneinfahrt und Ostsee. </hausbeschreibung>
<hotelname>Strand Hotel Hübner</hotelname>
<ort>Warnemünde</ort> <strasse>Seestraße</strasse>
26<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
26
Beschränkungen der Ansätze (1) Speicherung als Ganzes
– Locking nur auf Dokumentebene möglich– Bearbeitung von Teildokumenten schwieriger– oft nur proprietäre Lösungen implementierbar– Einschränkungen bei Anfragen (z.B. wertbasierte Suche)
Speicherung der Dokumentstruktur (bei Abbildung der Graphstruktur in Relationen):
– Anfragesprache: nur SQL keine adäquaten Anfragekonstrukte Anfrageformulierung schwierig Änderungen auf SQL-Ebene können Struktur des Dokuments
zerstören– schlechte Performance
Shredding der Relationen ->komplexe Joins umfangreiche Sperren
27<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
27
Beschränkungen der Ansätze (2) strukturierte Speicherung in Datenbanken
– Dokumente mit a priori bekanntem Schema, d.h. geringe Flexibilität bei Schemaänderung
– unterschiedliche Schemamächtigkeit Rekursion? Mixed Content?
– Keine vollständige Abbildung von Dokumenten Reihenfolgeerhaltung Prolog, Kommentare, Processing Instructions
– strukturorientierte Anfragen schwierig
28<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
28
Realisierung in Oracle seit Version 8 XML Developer Kit (XDK) seit Version 9
– spezieller Datentyp: X spezieller Datentyp: XMLType MLType– unterstützt inhaltsorientierte und opake Speicherung
seit Version 10– Integration von XQuery
inhaltsorientierte Speicherung– erfordert registriertes Schema bei der Definition der XML-
Spalte (Tabelle)– teilweise auch opake Speicherung möglich– Kommentare, PI und Reihenfolgeinformationen in
(proprietärem) Systemattribut SYS_XDBPDS– Standardabbildung kann durch Annonationen im XML-Schema
geändert werden (xdb:)
29<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
29
Strukturorientierte Zerlegung<Auftrag Auftragsnr="12324"> <Auftragsposition><Artikel>124</Artikel> <Menge>2</Menge> </Auftragsposition> <Auftragsposition><Artikel>567</Artikel> <Menge>4</Menge> </Auftragsposition></Auftrag>
Knotennr Vorgaenger Position Name Wert
1 0 0 Auftrag -
2 1 0 @Auftragsnr 12324
3 1 1 Auftragsposition -
4 3 1 Artikel 124
5 3 2 Menge 2
6 1 2 Auftragsposition -
7 6 1 Artikel 567
8 6 2 Menge 4
30<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
30
XML-Schema-Dokument PO.xsd
<complexType name="Auftragstyp"><sequence> <element name="Auftragsnr" type="decimal"/> <element name="Firma"> <simpleType><restriction base="string"> <maxLength value="100"/> </restriction></simpleType></element> <element name="Auftragsposition" maxOccurs="1000"> <complexType><sequence> <element name="Artikel"> <simpleType><restriction base="string"> <maxLength value="1000"/> </restriction></simpleType></element> <element name="Preis" type="float"/> </sequence></complexType></element></sequence></complexType><element name="Auftrag" type="Auftragstyp"/>
31<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
31
Inhaltsorientierte Zerlegung (Beispiel)
CREATE TABLE po_tab OF XMLTYPE XMLSCHEMA " <Pfad> PO.xsd"ELEMENT "Auftrag" VARRAY(Auftragsposition) STORE AS Auftrag_tab;
TYPE "Auftragsposition_T" (Artikel VARCHAR2(1000), Preis NUMBER);TYPE "Auftragsposition_COLL" AS VARRAY(1000) OF "Auftragsposition_T";TYPE "Auftragstyp_T" (Auftragsnr NUMBER, Firma VARCHAR2(100), Auftragsposition Auftragsposition _COLL);
• Bindung des XML Schema-Dokuments an eine Tabelle
• Interne Erzeugung von Typdefinitionen
32<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
32
Opake Abbildung in Oracle XML-Dokument mittels Typ XMLType gespeichert Storage-Option CLOB Zugriff auf den Inhalt eines Objekts von XMLType über
Funktionen: – extract um das Ergebnis eines XPath-Ausdrucks zu erhalten,– getClobVal, getStringVal und getNumVal, um das Ergebnis
von extract in einen SQL-Datentyp zu überführen,– extractValue, um das Ergebnis eines XPath-Ausdrucks direkt
in einen SQL-Wert umzuwandeln,– existsNode, um zu prüfen, ob ein XPath-Ausdruck ein
Ergebnis lie fert.– createXML kann aus einer SQL-Zeichenkette ein Wert des
Typs XML erzeugt werden (bei inhaltsorientierter Zerlegung wieder auf SQL-Tabellen abgebildet)
33<<<Nr.>
© Prof. T. Kudraß, HTWK Leipzig
33
Zugriff auf Objekt vom Typ XMLType (Beispiel)
SELECT extractValue(value(d), '/Beschreibung) "Beschreibung"FROM Auftrag, table(xmlSequence( extract(object_value, '/Auftrag/Auftragsposition/Artikel'))) dWHERE existsNode(object_value, Auftrag[Auftragsnr="2803030912"]')=1
entspricht dem XPath-Ausdruck:
/Auftrag[Auftragsnr="2803030912"]/Auftragsposition/Artikel/Beschreibung