Verwaltung von XML-Dokumenten
2
<<
<
Nr
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
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
XML-Architektur
<..>
physische Ebene Ebene
Dokument- verarbeitung
Dokumenten Entwurf von XML-
Konzeptueller
</..>
</..>
logische Ebene
<..>
konzeptuelle
</..>
<..>
XML
Datenbanken
5
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Logische Ebene
logische Ebene
<..>
<..> </..>
</..>
<..> </..>
datenzentriertsemistrukturiertdok-zentriert
Datenmodell
Anfragen/Updates an Inhalt
XML, RDBM, OODBM Daten- und Dokumentmodell Struktur und InhaltAnfragen/Updates an
XML, OEM XQuery, Lorel Dokumentmodell Anfragen/Updates an Struktur und Inhalt XML,SGML
XQuery, XPath, DOM, IR-Anfragen
6
<<
<
Nr
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
Ebene physische
7
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Architektur: physische Ebene
datenzentriertsemistrukturiertdok-zentriert
relationale, objekt-relationale oder objekt-orientierte
generische Speicherung von Graphen oder
DOM-Informationen Dateien
Volltextindex, Strukturindex Struktur auf Werteebene
Struktur auf Schema- und Werteebene
Struktur auf Schemaebene Ebene
physische
8
<<
<
Nr
Volltextindex und XML-Index
Volltextindex Als Dateien /
Clobs
Speicherung der Dokumentstruktur
Strukturierte Speicherung in Datenbanken
Vollständiges Mapping Benutzer- definiertes
Mapping Abbilden des
DOM-Modells Abbildung der Graphstruktur
Für dokument-zentrierte XML-Dokumente
Für daten-zentrierte XML-Dokumente Für semistrukturierte XML-Dokumente
Speicherung von XML-Dokumenten
9
<<
<
© Prof. T. Kudraß, HTWK Leipzig
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
10
<<
<
Nr
Grundprinzip der invertierten Liste
1 2 2 1 3 1 A
B
D E C
F 2
1
3
A D F
3
3
C D 3
B
A C D E
2
Bestimmung der Stichworte der Dokumente
Dokumente Stichworte
Invertierte Speicherung:
Speicherung der Stichworte und der zugehörigen Dokumente
Stichworte Dokumente
11
<<
<
© Prof. T. Kudraß, HTWK Leipzig
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
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Kombinierter
Volltext- und XML-Index
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
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Speicherung der Graphstruktur
Element
www...
Müller ort
plz
Value
Type Descendant-of
string string strasse
Warnemünde Seestrasse hotel
string Element
adresse
int 18119
Attribute Type Value
url autor
string Attributes:
Elements:
16
<<
<
Nr
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Speicherung des DOM / 1
Informationen des Document Object Models werden in Datenbanken
gespeichert
Verwendung
relationaler oder objekt-orientierter Datenbanken oder
Entwicklung eigener Speicherungsstrukturen
Comment
Document DocumentFragment
DocumentType Element
Entity EntityReference
Text
CDataSection
DOMImplementation Node NodeList NamedNodeMap
CharacterData Attr
18
<<
<
Nr
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
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
20
<<
<
Nr
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Abbildung der XML- Struktur
auf objekt-orientierte Datenbanken
-
DTD ist erforderlich- Anfragen verwenden SQL - Funktionalität - Datentypen
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
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Benutzerdefiniertes Mapping
- Flexible Methode
Hotel Hübner Hotel_URL
Hotelpreise
Name Einzelzimmer
www.hotel- huebner.de
198
Datenbank
<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
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Hybride Ansätze
Auswahl
unterschiedlicher
Speicherungsmethoden für verschiedene
Dokumentanteile
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
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
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
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
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
30
<<
<
Nr
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
<<
<
© Prof. T. Kudraß, HTWK Leipzig
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),
• Bindung des XML Schema-Dokuments an eine Tabelle
• Interne Erzeugung von Typdefinitionen
32
<<
<
Nr
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 liefert.
– createXML kann aus einer SQL-Zeichenkette ein Wert des Typs XML erzeugt werden (bei inhaltsorientierter Zerlegung wieder auf SQL-Tabellen abgebildet)
33
<<
<
© Prof. T. Kudraß, HTWK Leipzig
Zugriff auf Objekt vom Typ XMLType (Beispiel)
SELECT extractValue(value(d), '/Beschreibung) "Beschreibung"
FROM Auftrag,
table(xmlSequence(
extract(object_value,
'/Auftrag/Auftragsposition/Artikel'))) d WHERE existsNode(object_value,
Auftrag[Auftragsnr="2803030912"]')=1
entspricht dem XPath-Ausdruck:
/Auftrag[Auftragsnr="2803030912"]/Auftragsposition/
Artikel/Beschreibung