Dokumentes

Werbung
Vergleichende Untersuchungen
zur Verwaltung von XMLDokumenten in Datenbanken
Prof. Dr. Thomas Kudraß
HTWK Leipzig
Datenbanken-Stammtisch
HTW Dresden, 23.10.2002
© Prof. T. Kudraß, HTWK Leipzig
Motivation
z
z
z
z
z
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 XMLDokumenten und deren Struktur
© Prof. T. Kudraß, HTWK Leipzig
Daten oder Dokumente (1)
z
„Lesbare Dokumente“ (dokumentzentriert)
–
–
–
–
–
sind selten genau gleich strukturiert
Reihenfolge ist wichtig
sinntragende Daten auf allen Ebenen, viel Mixed Content
Volltextsuche ist unabdingbar, aber nicht ausreichend
Beispiele
z
z
z
z
z
–
Zeitschriftenbeiträge, Bücher
Gebrauchsanweisungen, Handbücher
e-Mail
Präsentationen
Verträge
70% der relevanten Geschäftsinformationen in
Textdokumenten
© Prof. T. Kudraß, HTWK Leipzig
Daten oder Dokumente (2)
z
Datenzentrierte Dokumente
–
–
–
–
–
–
–
wie Daten im herkömmlichen Sinn (z.B. in relationalen
Datenbanken)
Reihenfolge ist oft nicht relevant
sind einheitlich und meist einfach strukturiert
haben Datentypen
sinntragende Daten in Blattelementen oder Attributen
Mixed Content ist die Ausnahme (oder Dekoration)
Beispiele:
z
z
z
z
Telefonbücher
wissenschaftliche Daten
Fahrpläne, Flugpläne
Bestellungen
© Prof. T. Kudraß, HTWK Leipzig
Daten und Dokumente
z
Semistrukturierte Daten
–
–
–
z
Mangel an Struktur
–
–
–
–
z
Strukturiert: Felder
Unstrukturiert: binäre Daten wie Text, Video- und Audio-Streams,
Bilder (in XML: External Entities, CDATA Sections)
unregelmäßiges Auftreten von Hyperlinks
Mischform aus datenzentriert und dokumentenzentriert
Struktur implizit oder verborgen
Integration von Daten aus heterogenen Quellen (hierfür strukturiertes
Modell oft zu restriktiv)
Bestimmte Anfragetypen ignorieren Schema bewußt (z.B.
Zeichenkettensuche über gesamte Datenbank hinweg)
Beispiel Krankenakten:
–
–
–
Daten: Geburtsdatum, Adresse, etc,
binäre Daten: Röntgenbilder
Dokumente: Diagnose, Anamnese etc.
© Prof. T. Kudraß, HTWK Leipzig
Klassifikation: Beispiel
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 dokumentenzentrierte
Anteile
Beispiele: Veröffentlichungen, Amazon)
<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>
© Prof. T. Kudraß, HTWK Leipzig
Warum XML in Datenbanken
z
XML als SGML-Nachfolger
–
z
entstehende Dokumente müssen gespeichert werden
XML als Austauschformat
–
Originaldaten werden in XML transformiert
z
z
Nur die Speicherung in Datenbanken garantiert
–
–
–
z
Austauschdaten müssen aber ebenfalls gespeichert werden (z.B.
beim Empfänger)
mächtige und effiziente Suchfunktionen
transaktionsorientierte Speicherung
Mehrbenutzerbetrieb
Anwendungen
–
–
–
Dokumentenverwaltung
Website-Management
Information Publishing
© Prof. T. Kudraß, HTWK Leipzig
XML-Datenbanksysteme (1)
z
z
z
kann beliebige XML-Dokumente als solche speichern
kann XML-spezifische Anfragesprache verarbeiten
liefert XML als Ergebnis einer Anfrage
–
z
z
z
Dokumente und Extrakte
effiziente struktur-und wertebasierte Anfragen
unterstützt Daten- und Dokumentsicht (Mixed Content,
Kommentare etc.)
erlaubt eine schematische Beschreibung der
Dokumente (Validierung möglich)
© Prof. T. Kudraß, HTWK Leipzig
XML-Datenbanksysteme (2)
z
z
z
z
z
z
z
z
z
DB-Eigenschaften (Transaktionen, Skalierbarkeit etc.)
standardkonform
Sammlung von XML-Dokumenten?
Sammlung von XML-Dokumentfragmenten?
Unabhängigkeit von der Speicherungsstruktur
Indizierung?
Validierung
Sicherheit
Erweiterbarkeit
© Prof. T. Kudraß, HTWK Leipzig
Speichern und Liefern von
Dokumenten
z
Round-Trip-Eigenschaft
–
z
Der ganze Inhalt
–
–
–
z
Ausgabe des gespeicherten Dokuments in “unveränderter“ Form
Prolog
Kommentare
Processing Instructions
“unverändert“
–
–
unveränderte Reihenfolge der Elemente
identisches Aussehen gegenüber Original
© Prof. T. Kudraß, HTWK Leipzig
Anfragetypen für XML-Dokumente
z
werteorientiert
–
–
z
textorientiert
–
z
z
z
Information Retrieval Operationen: contains, similar
strukturorientiert
–
z
Suche nach Attributwerten
Suche nach Elementen
vgl. XPATH Query Language
linkorientiert
metadatenorientiert
kombinierte Anfragen
© Prof. T. Kudraß, HTWK Leipzig
XPath
z
z
z
Für die Verwendung in XSLT und XPointer
entworfen
Beim W3C normiert (W3C Recommendation)
http://www.w3.org/TR/xpath.html
Navigation in einem Dokument
–
Location Path
z
z
z
Achsen zur Navigation
child, descendant, parent, ancestor, sibling, following,
preceding, attribute, namespace, self,
z.B. descendant::Name/child::Vorname
Kurznotation ist verfügbar: //Name/Vorname
© Prof. T. Kudraß, HTWK Leipzig
XPath (Forts.)
z
Filter
–
–
z
Wildcard
–
z
z
//*[@*=“Hugo“]
Position [pos]
–
z
[expression]
Beispiel: //Buch[@ISBN=“3-557-06021-7“ AND Author]
/book/author[1]
kann auf Processing Instructions und Kommentare
zugreifen
Weitere Query Languages
–
–
–
XQL: basiert auf XPath, W3C-Proposal
Quilt: Basis für XQuery (zur Zeit diskutierter Sprachvorschlag)
IPSI-QL (erste Implementierung)
© Prof. T. Kudraß, HTWK Leipzig
XML-Architektur
Klettke / Meyer “XML-Datenbanken“
Dokumentverarbeitung
XML
Konzeptueller
Entwurf von XMLDokumenten
<..>
<..>
<..>
</..>
</..>
</..>
Datenbanken
konzeptuelle
Ebene
logische
Ebene
physische
Ebene
© Prof. T. Kudraß, HTWK Leipzig
Bedeutung des
Dokumentcharakters
z
XML-Dokumente können die ganze Bandbreite von
Daten bis zu Volltextdokumenten ein-nehmen
–
z
z
z
dokumentzentriert, semistrukturiert, datenzentriert
dementsprechend unterschiedliche Speicherungsverfahren von der Dokumentenverarbeitung bis
zur DB-Technologie
weiterhin: Neuentwicklung von Methoden
keine optimale Lösung für alle Anwendungen,
Dokumentcharakter spielt entscheidende Rolle!
© Prof. T. Kudraß, HTWK Leipzig
physische
Ebene
datenzentriert semistrukturiert
dok-zentriert
Architektur: physische Ebene
Struktur auf Werteebene
Dateien
Volltextindex, Strukturindex
Struktur auf Schemaund Werteebene
generische Speicherung von
Graphen oder
DOM-Informationen
Struktur auf Schemaebene
relationale, objekt-relationale
oder objekt-orientierte
Datenbanken
© Prof. T. Kudraß, HTWK Leipzig
XML in Datenbanken - Optionen zur
Realisierung
Klassifizierung nach dem Ziel-Datenmodell
z
Relational
–
inhaltsorientiert zerlegt
z
z
–
–
z
strukturorientiert zerlegt
opaque Ansatz (Large Objects)
Objektorientiert (Objektrelational)
–
–
z
generisch
definitorisch
benutzerdefinierte Objekte
vordefinierte Objekte, basierend auf Large Objects (CLOBS)
“native“ XML-DBMS
–
Oracle-Konkurrenzprodukte
© Prof. T. Kudraß, HTWK Leipzig
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
Für dokument-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
© Prof. T. Kudraß, HTWK Leipzig
Oracle XML Infrastruktur - Basis für
verschiedene Speicherungsformen
Jserver Runtime
Java Applikationen
Tabellen
Java XML SQL Utility
interMedia
Java XML Parser
PL/SQL XML
Packages
JDBC Driver
URIs
XML Type
Object Types
LOBs
© Prof. T. Kudraß, HTWK Leipzig
CLOB-Ansatz (Opaque Ansatz)
z
Merkmale
–
–
z
XML-Dokument gespeichert als Large Object (LOB)
Dokument bleibt vollständig erhalten
Speicherung
DocId
url
1
person.xml
content
<person>
<name>Mary</name>
</person>
Insert into tblXMLClob values (1,‘person.xml‘,‘
<person>
<name>Mary</name>
</person>‘ );
© Prof. T. Kudraß, HTWK Leipzig
Kombinierter
Volltext- und XML-Index
Volltext-Index
Verweis
Term
Element
Warnemünde
Seestraße
Rostock
<hotel>
<hotelname>Hotel Hübner</hotelname>
<adresse>
<plz>18119</plz>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
</adresse>
<anreisebeschreibung>
Aus Richtung Rostock kommend fahren Sie auf der
Stadtautobahn bis nach Warnemünde
...
<anreisebeschreibung>
</hotel>
XML-Index
Element VerweisVorgänger
hotel
adresse
ort
strasse
anreisebeschreibung
XML - Struktur kann in
Anfragen ausgewertet werden
© Prof. T. Kudraß, HTWK Leipzig
Oracle interMedia Text
z
Anfragen mit interMedia Text
–
–
–
z
Volltext-Retrieval (nur wortorientierte Suche)
Pfadangaben nur in Verbindung mit Wortsuche
keine Bereichsanfragen
Beispiel in interMedia Text:
SELECT DocId FROM tblXMLClob WHERE
CONTAINS(content,‘(Mary WITHIN name) WITHIN person‘)>0
z
XML Volltext-Index
–
–
–
Autosectioner Index
XML Sectioner Index
WITHIN operator
z
text_subquery WITHIN elementname
z
sucht den vollständigen Textinhalt innerhalb der genannten Tags
© Prof. T. Kudraß, HTWK Leipzig
Beispiel:
Arbeit mit interMedia Text (1)
Speicherung von XML-Dokumenten einer
Versicherungsgesellschaft
create table ins_claim
(id number (7) primary key,
when date,
doc clob);
Spalte doc ist indiziert mit auto_section_group:
create index doc_ix on ins_claim(doc)
indextype is ctxsys.context
parameters (‘section group ctxsys.auto_section_group‘);
© Prof. T. Kudraß, HTWK Leipzig
Beispiel:
Arbeit mit interMedia Text (2)
Beispiel-Dokument in der Spalte doc:
The insured‘s <VEHICLE>car</VEHICLE>broke through the
guard rail and plummeted into a ravine. The cause was
determined to be <CAUSE>faulty braked</CAUSE> Amazingly
there were no casualties.
XML Section <cause> kann abgefragt werden:
select id, when
from ins_claim
where contains (doc,‘brakes within cause‘) > 0;
ID
------1
WHEN
-----12-OCT-00
DOC
------The insured‘s <VEHICLE>car...
© Prof. T. Kudraß, HTWK Leipzig
Beispiel:
Arbeit mit interMedia Text (3)
Alternative zu vordefiniertem AutoSectioner: Definition eines eigenen
Sectioners und Verwendung im Index
section name
tag name
ctx_ddl.create_section_group(‘my_section‘,
‘XML_SECTION_GROUP‘);
ctx_ddl.add_zone_section(‘my_section‘,‘cause‘,‘Cause‘);
...
ctx_ddl.add_attr_section(‘my_section‘,‘make‘,‘Make@Vehicle‘);
...
create index my_doc_ix on ins_claim(doc)
indextype is ctxsys.context
parameters(‘section group my_section‘);
Mögliche Abfrage ist Suche nach Attributwerten:
... where contains (doc, ‘Audi within Make@Vehicle‘)
Findet: <Vehicle Make=“Audi“>
© Prof. T. Kudraß, HTWK Leipzig
XPath Anfragen mit PL/SQL
z
z
Voraussetzung: XDK für PL/SQL auf Server vorhanden
Übersetze CLOB in eine DOM-Darstellung
XPath
Anfrage
Ermittle Document
IDs aller CLOBs der
XML-Tabelle
serverseitig
DB
Doc IDs
Ausführen der XPath Anfrage auf
dem DOM-Baum für jedes CLOB
Objekt der Doc IDs
Doc IDs mit Ergebnis
XML- Dokument
© Prof. T. Kudraß, HTWK Leipzig
Oracle 9i XML Type
Funktionen des Oracle XML Type
•
•
•
•
•
•
•
•
createXML(xml IN varchar2 return XMLType
createXML(xml IN clob) return XMLType
existsNode(xpath IN varchar2) return number
extract(xpath IN varchar2) return XMLType
isFragment() return number
// 1 oder 0
getClobVal() return clob
getStringVal() return varchar2
getNumberVal() return number
in Oracle 9i (Release 1) intern als CLOB realisiert
© Prof. T. Kudraß, HTWK Leipzig
Nutzung des XML Type
Extraktion von Daten aus XML-Dokumenten mittels XML Type Funktionen
select d.document.extract(‘/Item/desc/text()‘).getStringVal()
from xmldocs d;
select * from xmldocs d
where d.document.extract(‘/Item/Qty/text()‘).getNumberVal()=4;
select * from xmldocs d
where d.document.existsNode(‘//Discount‘)=1;
Insert, Update und Delete auf Spalten vom Typ XMLType erlaubt
Zugriff auf XMLType in der DB in Java möglich mittels Klasse:
oracle.xdb.XMLType
© Prof. T. Kudraß, HTWK Leipzig
Vergleich der
Anfragemöglichkeiten
interMedia Text
z
z
z
z
liefert Dokument-IDs
Wordsuche (Default)
kein Existenztest für
Elemente oder Attribute
Pfadausdrücken beschränkt
möglich durch WITHIN
e.g.: (xml WITHIN title) WITHIN book
z
z
z
erlaubt begrenzt Attributwertsuche, keine Verschachtelung von Attributsuchen
numerische und Datumswerte
werde nicht konvertiert
keine Bereichsanfragen auf
Attributwerten
XPath
z
z
z
z
≠
findet Dokument-Fragmente
Substring-Suche
Suche nach vorhandenen
Elementen oder Attributen
Pfadausdrücke → strukturorientierte Anfragen
//Book/Title/[contains(..‘xml‘)]
z
z
z
Suche nach Attributwerten
und Element-Text kann kombiniert werden
berücksichtigt auch Dezimalwerte
Bereichsanfragen möglich
mittels Filter
© Prof. T. Kudraß, HTWK Leipzig
CLOB Ansatz
Vorteile
z
z
Bewahrung der Informationen des Dokuments
Behandlung großer Dokumente
–
z
geeignet für dokumentenzentrische Dokumente mit
wenig Struktur und textreichen Elementen
Verschiedene XML Document APIs
–
–
interMedia Text: eingeschränkte Menge von XPathFunktionalität
generiere ein DOM des Dokuments vor Anwendung
von XPath-Queries
© Prof. T. Kudraß, HTWK Leipzig
CLOB Ansatz
Nachteile
z
z
Beschränkte Ausdrucksfähigkeit von Text-Anfragen
Performance vs. Genauigkeit der Anfrage-Ergebnisse
–
–
z
Restriktionen der Indexe
–
z
Maximale Länge der Tag-Namen fürs Indexieren (inkl.
Namespace): 64 Bytes
Probleme mit Markup
–
z
interMedia Text Queries auf CLOBs schneller als DOM-API
Beispiel-Dokument: 12.5 MB, Übersetzungszeit 3 Min.,
Ladezeit 5 Min.
Character Entities: Dekodieren oder nicht?
Stabilität
–
–
maximale Dokumentgröße: 50 MB
Speicherfehler bereits bei kleineren Dokumenten möglich
© Prof. T. Kudraß, HTWK Leipzig
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
Für dokument-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
© Prof. T. Kudraß, HTWK Leipzig
Speicherung der Graphstruktur
Elements:
Type
Value
plz
int
18119
ort
string
Warnemünde
strasse
string
Seestrasse
Element
Descendant-of
hotel
adresse
Attributes:
Element Attribute Type
Value
url
string
www...
autor
string
Müller
generische Speicherung der
Struktur des XML-Dokumentes
© Prof. T. Kudraß, HTWK Leipzig
Relationale Strukturorientierte
Zerlegung
z
Prinzip
–
–
z
Speicherung in generischen Tabellen (festes DB-Schema)
Zerlegung eines XML-Dokumentes in kleine Einheiten
(Elemente) und Speichern in der Datenbank (Shredding)
Vielzahl von Mapping-Methoden
–
–
Abspeichern der Kanten und Knoten des zum XML-Dokument
gehörenden Strukturbaums
Speichern der Kanten in einer Tabelle
z
z
z
z
–
Kantenverfahren (Florescu, Kossmann)
(Normalisiertes) Universalverfahren
Model-based Fragmentation
Monet XML-Modell
Speichern der Kanten in mehreren Tabellen
z
Attributverfahren
© Prof. T. Kudraß, HTWK Leipzig
Speichermethode [Krumbein]
XML-QL Datenmodell
tree
2
pe
rso
n
4
na m
e
p
on
e rs
Mary
[age= 38]
s
re s
Peter
1
ad
<tree>
<person age=’55‘>
<name>Peter</name>
</person>
<person age=’38‘>
<name>Mary</name>
<address>Fruitdale Ave.
</address>
3
</person>
[age= 55]
</tree>
na m
e
z
4711
Fruitdale
Ave.
© Prof. T. Kudraß, HTWK Leipzig
Datenmodell
tblDocs
DocId
url
1
n
tblEdge
SourceId TargetId LeafId AttrId DocId EdgeName Type Depth
1
0/1
0/1
tblLeafs
LeafId
1
tblAttrs
Value
AttrId
Value
© Prof. T. Kudraß, HTWK Leipzig
Import-Algorithmus
<baum>
<person alter=“36“>
<name>Peter</name>
<adresse>
<strasse>Hauptstrasse4</strasse>
<PLZ>04236</PLZ>
<Ort>Leipzig</Ort>
Source Target Leaf
</adresse>
Id
Id
Id
</person>
0
1
-1
</baum>
1
2
-1
DocId
1
AttrId
1
url
Beispiel.xml
Value
36
2
2
2
5
5
5
3
4
5
6
7
8
-1
1
-1
2
3
4
LeafId
Value
1
Peter
2
Hauptstr
asse 4
3
04236
4
Leipzig
Attr Doc EdgeName Type Depth
Id
Id
-1
-1
1
-1
-1
-1
-1
-1
1
1
1
1
1
1
1
1
baum
person
alter
name
adresse
strasse
PLZ
Ort
ref
ref
attr
leaf
ref
leaf
leaf
leaf
3
2
0
0
1
0
0
0
© Prof. T. Kudraß, HTWK Leipzig
Anfragemethode
XML-QL
Anfrage
z
ObjektStruktur
Parser
Mit welcher Anfragesprache?
– XML-Anfragesprache
auf XML-Dokumente
sinnvoll
– Datenmodell ausgehend
von XML-QL erstellt
Generierung des
SQL Statement
DB
Konstruktion des
Ergebnisdokuments
Ausführung des
SQL Statement
Row Set
z
XML
Dokument
SQL
Statement
Datenbank versteht nur SQL
– Transformation von XML-QL
nach SQL notwendig
– Erzeugen eines ErgebnisDokumentes aus Tupeln
© Prof. T. Kudraß, HTWK Leipzig
Erzeugen eines SQL-Statements
z
XML-QL Anfrage
z
SQL-Statement
SELECT DISTINCT
CONSTRUCT <result> {
B.Type AS n_Type,
WHERE
B.TargetId AS n_TargetId,
<person>
B.Depth AS n_Depth,
<name>$n</name>
C.Value AS n_Value,
<adresse>$a</adresse>
D.Type AS a_Type,
D.TargetId AS a_TargetId,
</person>
D.Depth AS a_Depth,
CONSTRUCT
E.Value AS a_Value
<person>
FROM
<name>$n</name>
tblEdge A,tblEdge B,tblLeafs C,
<adresse>$a</adresse>
tblEdge D,tblLeafs E
</person>
WHERE
} </result>
(A.EdgeName
(A.TargetId
(B.EdgeName
(B.LeafId =
(A.TargetId
(D.EdgeName
(D.LeafId =
= ‘person’) AND
= B.SourceId) AND
= ‘name’) AND
C.LeafId(+)) AND
= D.SourceId) AND
= ‘adresse’) AND
E.LeafId(+))
© Prof. T. Kudraß, HTWK Leipzig
Konstruktion des ErgebnisDokumentes
z
Ergebnistupel
n_Type n_Target n_Depth
Id
leaf
4
0
SELECT
A.EdgeName,
A.Type,
Al.Value AS A_LeafVal,
Aa.Value AS A_AttrVal
FROM
tblEdge A,
tblLeafs Al,
tblAttrs Aa
WHERE
A.SourceId=5 AND
A.leafId=Al.leafId(+) AND
A.attrId=Aa.attrId(+)
n_Value
Peter
•
a_Type a_Target a_Depth a_Value
Id
ref
5
1
Teilbaum-Rekonstruktion
EdgeName
Type
A_LeafVal
strasse
leaf
PLZ
Ort
leaf
leaf
Hauptstrasse
4
04236
Leipzig
A_Attr
Val
© Prof. T. Kudraß, HTWK Leipzig
Anfrageergebnis
z
XML-Ergebnis-Dokument
<result>
<person>
<name>Peter</name>
<adresse>
<strasse>Hauptstrasse 4</strasse>
<PLZ>04236</PLZ>
<Ort>Leipzig</Ort>
</adresse>
</person>
</result>
© Prof. T. Kudraß, HTWK Leipzig
Strukturorientierte Zerlegung Vorteile
z
Herstellerunabhängigkeit
–
z
Keine Schemadefinition durch Benutzer notwendig
–
–
z
z
hohe Flexibilität bei dynamisch erzeugten XML-Dokumenten
verwendete relationale Strukturen für Benutzer unbrauchbar
(keine Anwendungssemantik)
Stabilität
Hohe Flexibilität der Anfragen
–
–
z
benutzt keine spezifischen DBMS-Eigenschaften
Lesen und Ändern einzelner Werte
volle SQL-Funktionalität nutzbar
Gute Eignung für strukturorientierte Anfragen
–
Strukturen in Tabellen repräsentiert
© Prof. T. Kudraß, HTWK Leipzig
Strukturorientierte Zerlegung Nachteile
z
Informationsverlust
–
–
–
–
–
z
Comments
Processing Instructions
Prolog
CDATA Sections
Entities
Restriktionen des Abbildungsalgorithmus
–
nur ein Text (Inhalt) pro Element
<element>
Text1
<subelement/>
Text2
J geht verloren
</element>
–
Element-Text als VARCHAR(n); n <= 4000
© Prof. T. Kudraß, HTWK Leipzig
Strukturorientierte Zerlegung Nachteile (2)
z
Anfragesprache: nur SQL
–
–
–
z
keine XML-adäquaten Anfragekonstrukte
Anfrageformulierung schwierig
Änderungen auf SQL-Ebene können Struktur des
Dokuments zerstören
Schlechte Performance
–
lange Ladezeit
z
–
–
Beispiel-Dokument: 3.3. MB, 130.000 Zeilen, 13 Minuten
komplexe Joins
Sortierung in Anfragen (wegen
Reihenfolgeerhaltung)
© Prof. T. Kudraß, HTWK Leipzig
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
Für dokument-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
© Prof. T. Kudraß, HTWK Leipzig
Speicherung des DOM (1)
z
Informationen des
Document Object
Models werden in
Datenbanken
gespeichert
DOMImplementation
Node
NodeList
NamedNodeMap
Attr
CharacterData
Comment
Text
CDataSection
z
z
Verwendung
relationaler oder
objekt-orientierter
Datenbanken oder
Entwicklung eigener
Speicherungsstrukturen
Document
DocumentFragment
DocumentType
Element
Entity
EntityReference
Notation
ProcessingInstruction
© Prof. T. Kudraß, HTWK Leipzig
Speicherung des DOM (2)
Methoden der Klasse Node:
- getChildren()
- getFirstChild()
- getNextSibling()
- getNodeType()
- getParentNode()
- getPreviousSibling()
- hasChildren()
NodeID
PreviousSibling
Methoden der Klasse Element:
- getAttributes()
- getElementsByTagName(String)
- getTagName()
Methoden der Klasse Attribut:
- getName()
- getValue()
NodeType
NodeID
DocID
ParentNode
NextSibling
FirstChild
NodeID
TagName
ElementID
AttributName
AttributValue
© Prof. T. Kudraß, HTWK Leipzig
Speicherung des DOM: Bewertung
z
Vorteile
–
–
–
–
benötigt keine Schemabeschreibung
XML-Anfragen möglich
standardisierte und allgemein akzeptierte Schnittstelle
vielfältige Einsatzmöglichkeiten:
z
z
für daten- und dokumentzentrierte sowie semistrukturierte XMLAnwendungen
Nachteile
–
–
Dokumentrekonstruktion möglich, aber aufwändig
wenig Produkte auf dem Markt
z
z
z
infonyte (IPSI Darmstadt)
eXcelon XIS (POET)
ozone (SMB Leipzig)
© Prof. T. Kudraß, HTWK Leipzig
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
Für dokument-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
© Prof. T. Kudraß, HTWK Leipzig
Strukturierte Speicherung in
Datenbanken - Überblick
z
inhaltsorientiert
–
z
Struktur des Dokuments bestimmt DB-Struktur
generisch vs. definitorisch
–
generisch: vorgefundene Strukturen werden nach einem
allgemeingültigen Konzept in XML-Strukturen umgesetzt
z
–
z
z
gilt analog auch für Generierung einer DTD aus relationalem
Schema
definitorisch: die Abbildung der existierenden Strukturen in
XML-Strukturen (und umgekehrt) wird jeweils spezifiziert
relational vs. objektrelational
Beispiel (generisch & relational):
–
Oracle XML SQL Utility (XSU) für Queries und DMLOperationen
© Prof. T. Kudraß, HTWK Leipzig
Abbildung der XML- Struktur
auf relationale Datenbanken
XML-Dokument
<hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname>
<adresse>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
...
Hotel: HotelID
</adresse>
<preise>
<einzelzimmer>198</einzelzimmer>
...
</preise>
</hotel>
Adresse: AdresseID Ort
H0001
Hotelname
Adresse
Preise
Hotel Hübner
A0001
P0001
A0001
Preise:
- DTD ist erforderlich
- Anfragen verwenden SQL - Funktionalität
- Datentypen
Strasse
Warnemünde
...
Seestraße
PreiseID
Einzelzimmer
P0001
198
...
© Prof. T. Kudraß, HTWK Leipzig
Oracle XML SQL Utility (XSU)
z
Prinzip:
–
–
–
z
Generierung von XML-Dokumenten aus SQL-Abfragen (in
String-Darstellung oder DOM)
Speichern von XML-Dokumenten durch Einfügen von Daten
aus Dokumenten (“generated“ XML)
Aktualisieren und Löschen von Daten aus XML-Dokumenten in
der Datenbank
Schnittstellen:
–
–
–
XSU Java API (Java-Klasse OracleXML)
XSU PL/SQL API (Packages DBMS_XMLQuery und
DBMS_XMLSave)
Kommandozeilen-Interface
java OracleXML [putXML | getXML] optionen
© Prof. T. Kudraß, HTWK Leipzig
Beispiel Generierung von XMLDokumenten mit XSU
CREATE TABLE emp (
EMPNO NUMBER,
ENAME VARCHAR2(20),
JOB VARCHAR2(20),
MGR NUMBER,
HIREDATE DATE,
SAL NUMBER,
DEPTNO NUMBER
z
z
);
Ausführen einer SQL-Abfrage
Bsp.: SELECT * FROM emp WHERE EMPNO=7369;
© Prof. T. Kudraß, HTWK Leipzig
Beispiel Generierung von XMLDokumenten mit XSU (SELECT)
z
z
Analyse der Metadaten der Ergebnismenge
Konvertierung in folgende Form:
<?xml version='1.0'?>
<ROWSET>
<ROW num="1">
<EMPNO>7369</EMPNO>
<ENAME>Smith</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>12/17/1980 0:0:0</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWSET>
© Prof. T. Kudraß, HTWK Leipzig
Einfügen aus XML (INSERT)
z
z
Analyse der Metadaten der Zieltabelle
Generierung eines Statements der Form:
INSERT INTO emp
(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,DEPTNO)
VALUES (?,?,?,?,?,?,?);
z
z
Extrahieren der zu den Metadaten passenden
Elemente aus dem XML-Dokument
Ausführen des generierten SQL-Statements
unter Verwendung der extrahierten Daten
© Prof. T. Kudraß, HTWK Leipzig
Aktualisieren mit XML (UPDATE)
z
z
z
z
z
Festlegung von Schlüsselattributen, die zur
Identifizierung der zu aktualisierenden
Datensätze dienen
Festlegung der zu aktualisierenden Attribute;
sonst erfolgt Aktualisierung aller Attribute
Analyse der Metadaten der Zieltabelle
Generierung eines Update-Statements
Extrahieren der Daten aus XML-Dokument
© Prof. T. Kudraß, HTWK Leipzig
Aktualisieren mit XML (UPDATE)
z
Bsp.:
EMPNO ← Schlüsselspalte
SAL ← zu aktualisierende Spalte
<?xml version='1.0'?>
<ROWSET>
<ROW num="1">
<EMPNO>7369</EMPNO>
<JOB>CLERK</JOB>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWSET>
UPDATE emp SET SAL=800 WHERE EMPNO=7369;
© Prof. T. Kudraß, HTWK Leipzig
Löschen mit XML (DELETE)
z
z
z
z
z
Festlegung von Schlüsselattributen, die zur
Identifizierung der zu löschenden Datensätze
dienen
Analyse der Metadaten der Zieltabelle
Generierung eines DELETE-Statements
Extrahieren der Daten aus XML-Dokument
Ausführung des generierten SQL-Statements
unter Verwendung der extrahierten Daten
© Prof. T. Kudraß, HTWK Leipzig
Abbildung der XML- Struktur
auf objekt-relationale Datenbanken
XML-Dokument
<hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname>
<adresse>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
...
</adresse>
<preise>
<einzelzimmer>198</einzelzimmer>
...
</preise>
</hotel>
Hotel:
HotelID Hotelname
Adresse
Ort
H0001
Hotel Hübner
Strasse
Warnemünde Seestraße
- DTD ist erforderlich (Datentypen)
- Anfragen verwenden SQL - Funktionalität
- Datenbanken mit vielen Nullwerten
Preise
...
einzelzimmer
198
...
© Prof. T. Kudraß, HTWK Leipzig
Objektrelationaler Ansatz
Motivation
z
z
z
Einbeziehung mehrfach geschachtelter XMLDokumente
Schema des Dokuments vorhanden und bekannt
Umgang mit komplexen Objekten
–
–
z
XML-Dokument = komplexes Objekt
Vermeiden Dekomposition (vgl. relationaler Ansatz)
Objektrelationale Technologie sehr gut geeignet für
Darstellung komplexer Objekte
–
–
Objekt-Sichten (Object Views)
benutzerdefinierte Typen (Object Types)
© Prof. T. Kudraß, HTWK Leipzig
Behandlung von Nested XML Object View Ansatz (1)
z
z
Speicherung und Wiedergewinnung von
mehrfach geschachtelten XML-Dokumenten in
Oracle mit Hilfe von Object Types und Object
Views
Schritte
–
–
–
Definiere die passenden Tabellen und Object Types
Baue eine Object View, die mit Dokumentstruktur
übereinstimmt
Nutze Object Views für Insert- und RetrievalOperationen in XSU
© Prof. T. Kudraß, HTWK Leipzig
Behandlung von Nested XML (2)
XML Source Dokument
<?xml
<?xml version=‚‘1.0‘
version=‚‘1.0‘ encoding=‚‘UTF-8‘?>
encoding=‚‘UTF-8‘?>
<ROWSET>
<ROWSET>
<ROW><Book>
<ROW><Book>
<ISBN>0449908585</ISBN>
<ISBN>0449908585</ISBN>
<Title>Fun
<Title>Fun with
with XML</Title>
XML</Title>
<Price>13</Price>
<Price>13</Price>
<Author>
<Author>
<First>Paul</First>
<First>Paul</First>
<Last>Theroux</Last>
<Last>Theroux</Last>
</Author>
</Author>
</Book></ROW>
</Book></ROW>
.. .. ..
</ROWSET>
</ROWSET>
© Prof. T. Kudraß, HTWK Leipzig
Behandlung von Nested XML (3)
Schema der Ziel-Datenbank:
Object
Types
Tabellen
Person_T
first
last
1
*
Book_T
isbn
title
price
Author_Table
Book_Table
first_name
last_name
isbn
title
price
© Prof. T. Kudraß, HTWK Leipzig
Behandlung von Nested XML (4)
Anlegen einer View auf der Basis von Object Types:
CREATE
CREATE VIEW
VIEW book
book as
as
SELECT
Book_T
(b.ISBN,
SELECT Book_T (b.ISBN,
b.Title,
b.Title,
b.Price,
b.Price,
Person_T(a.First_Name,
Person_T(a.First_Name, a.Last_Name)
a.Last_Name)
)) as
as Book
Book
FROM
FROM book_table
book_table b,
b, author_table
author_table aa
WHERE
WHERE b.author_id
b.author_id == a.id;
a.id;
Object View nutzbar für Retrieval- und Insert-Operationen
XSU kann SQL Cursor Operator nutzen in SQL-Statements, um
beliebig geschachtelte XML-Dokumente zu erzeugen:
SELECT
SELECT id,first_name,last_name
id,first_name,last_name
CURSOR
CURSOR (SELECT
(SELECT isbn,title,price
isbn,title,price
FROM
FROM book_table
book_table bb
WHERE
WHERE a.id
a.id == b.author_id)
b.author_id) as
as book
book
FROM
FROM author_table
author_table a;
a;
© Prof. T. Kudraß, HTWK Leipzig
Behandlung von Nested XML (5)
Ergebnis-Dokument
<?xml
<?xml version=‚‘1.0‘
version=‚‘1.0‘ encoding=‚‘UTF-8‘?>
encoding=‚‘UTF-8‘?>
<ROWSET>
<ROWSET>
<ROW
<ROW num=“1“>
num=“1“>
<ID>2000</ID>
<ID>2000</ID>
<FIRST_NAME>Paul</FIRST_NAME>
<FIRST_NAME>Paul</FIRST_NAME>
<LAST_NAME>Theroux</LAST_NAME>
<LAST_NAME>Theroux</LAST_NAME>
<BOOK>
<BOOK>
<BOOK_ROW
<BOOK_ROW num=“1“>
num=“1“>
<ISBN>449908585</ISBN>
<ISBN>449908585</ISBN>
<TITLE>Fun
<TITLE>Fun with
with XML</TITLE>
XML</TITLE>
<PRICE>13</PRICE>
<PRICE>13</PRICE>
</BOOK_ROW>
</BOOK_ROW>
<BOOK_ROW
<BOOK_ROW num=“2“>
num=“2“>
.. .. ..
</BOOK_ROW>
</BOOK_ROW>
</BOOK>
</BOOK>
</ROW>
</ROW>
.. .. ..
</ROWSET
</ROWSET
© Prof. T. Kudraß, HTWK Leipzig
Objektrelationale Speicherung Überblick
z
benutzerdefinierte Objekte
–
–
–
z
Transformation DTD → Relationenschema
Transformation DTD → objektrelationales Schema
Vorstellung eines selbstentwickelten Werkzeugs
vordefinierte Objekte
–
–
CLOB-basiert (vgl. dort)
XML Object Type (seit Oracle 9i Release 2)
© Prof. T. Kudraß, HTWK Leipzig
Verarbeitung von DTD and XML
XML Dokument
Überprüfung, ob
wohlgeformt / valid
-----------------------------------------------------------------------------
--------------------------------------------------------------------------------
DTD
Syntax Check
XML V2 Parser
DTD Parser
XML DOM Baum
DTD DOM Baum
Schema Definition
XML2 Oracle
JDBC / ODBC
DBMS Oracle
© Prof. T. Kudraß, HTWK Leipzig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ELEMENT
<!ELEMENT
<!ENTITY
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
University (StudyCourse,Student*)>
Student (LName,FName,Course*)>
Student StudNr CDATA #REQUIRED>
Course (Name,Professor*,CreditPts?)>
Professor (PName,Subject+,Dept)>
cs “Computer Science“>
LName (#PCDATA)>
FName (#PCDATA)>
Name (#PCDATA)>
CreditPts (#PCDATA)>
PName (#PCDATA)>
Subject (#PCDATA)>
Dept (#PCDATA)>
StudyCourse (#PCDATA)>
© Prof. T. Kudraß, HTWK Leipzig
Transformation von DTD in
Relationenschema [Bourret]
z
Grundidee:
–
–
Erzeugung von Klassen aus DTD
Abbildung der Klassen auf Tabellen entsprechend Regeln
DTD
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
z
A
C
D
B
(B,C)>
(D)>
(#PCDATA)>
(#PCDATA)>
Klassen
CLASS A
STRING
C
CLASS C
STRING
{
b;
c;}
{
d;}
Tabellen
CREATE TABLE A (
a_pk INTEGER NOT NULL,
b
VARCHAR2(30) NOT NULL);
CREATE TABLE C (
c_pk INTEGER NOT NULL,
a_fk INTEGER NOT NULL,
d
VARCHAR2(10) NOT NULL);
Veränderung des Algorithmus von Bourret
–
–
Keine Klassenbildung (Klassen und Tabellen verschmolzen)
Nutzung der Objekte des DTD-Baumes
© Prof. T. Kudraß, HTWK Leipzig
Abbildungsregeln DTD →
Relationenschema [Bourret]
Schritt 1
• Jedes komplexe Element Æ Tabelle
• Jedes mengenwertige Element Æ Tabelle
• Primärschlüssel in jeder Tabelle
Schritt 2
Andere Elemente & Attribute Æ Spalten
1 <!ELEMENT
2 <!ELEMENT
3 <!ATTLIST
4 <!ELEMENT
5 <!ELEMENT
6 <!ENTITY
7 <!ELEMENT
8 <!ELEMENT
9 <!ELEMENT
10 <!ELEMENT
11 <!ELEMENT
12 <!ELEMENT
13 <!ELEMENT
14 <!ELEMENT
Schritt 3
Beziehungen zwischen Elementen Æ Fremdschlüssel
University (StudyCourse,Student*)>
Student (LName,FName,Course*)>
Student StudNr CDATA #REQUIRED>
Course (Name,Professor*,CreditPts?)>
Professor (PName,Subject+,Dept)>
cs “Computer Science“>
LName (#PCDATA)>
FName (#PCDATA)>
Name (#PCDATA)>
CreditPts (#PCDATA)>
PName (#PCDATA)>
Subject (#PCDATA)>
Dept (#PCDATA)>
StudyCourse (#PCDATA)>
© Prof. T. Kudraß, HTWK Leipzig
Beispiel-Transformation
1 <!ELEMENT
2 <!ELEMENT
3 <!ATTLIST
4 <!ELEMENT
5 <!ELEMENT
6 <!ENTITY
7 <!ELEMENT
8 <!ELEMENT
9 <!ELEMENT
10 <!ELEMENT
11 <!ELEMENT
12 <!ELEMENT
13 <!ELEMENT
14 <!ELEMENT
University (StudyCourse,Student*)>
Student (LName,FName,Course*)>
Student StudNr CDATA #REQUIRED>
Course (Name,Professor*,CreditPts?)>
CREATE TABLE TabUniversity (
Professor (PName,Subject+,Dept)>
cs “Computer Science“>
IDUniversity
INTEGER NOT NULL,
LName (#PCDATA)>
attrStudyCourse VARCHAR(4000) NOT NULL,
FName (#PCDATA)>
PRIMARY KEY (IDUniversity));
Name (#PCDATA)>
CreditPts (#PCDATA)>
CREATE TABLE TabStudent (
PName (#PCDATA)>
IDStudent
INTEGER NOT NULL,
Subject (#PCDATA)>
Dept (#PCDATA)>
IDUniversity
INTEGER NOT NULL,
StudyCourse (#PCDATA)> attrStudNr
VARCHAR(4000) NOT NULL,
attrLName
VARCHAR(4000) NOT NULL,
attrFName
VARCHAR(4000) NOT NULL,
PRIMARY KEY (IDStudent),
CONSTRAINT conStudent FOREIGN KEY (IDUniversity)
REFERENCES TabUniversity (IDUniversity));
...
© Prof. T. Kudraß, HTWK Leipzig
Tool zur objektrelationalen
Speicherung von XML
z
Grundidee:
–
–
–
z
Darstellung eines XML-Dokuments durch Kombination von
benutzerdefinierten Typen
Generiere ein objekt-relationales Schema aus der DTD
Generiere Programm zum Laden des Dokuments in Oracle-DB
Abbildungsregeln:
–
–
–
–
–
Attribute und einfache Elemente
Komplexe Elemente
Mengenwertige Elemente
Komplexe mengenwertige Elemente
Constraints
© Prof. T. Kudraß, HTWK Leipzig
XML Attribute & Einfache Elemente
z
Elemente vom Typ #PCDATA und XML Attribute
Æ Attribut eines Objekttyps
z
Wertebereich einfacher Elemente:
–
Keine Typ-Information in der DTD
z
z
–
z
numerisch vs. alphanumerisch?
Länge?
Beschränkungen des DBMS (z.B. VARCHAR 4000 Zeichen)
Abbildung eines XML-Attributes eines einfachen
Elements
Æ Definition eines Objekttyps für Attribut und Element
© Prof. T. Kudraß, HTWK Leipzig
XML Attribute & Einfache Elemente
<!ELEMENT
<!ATTLIST
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
Professor (PName,Subject,Dept)>
Professor PAddress CDATA #REQUIRED>
PName
(#PCDATA)>
Subject
(#PCDATA)>
Dept
(#PCDATA)>
Dept DAddress CDATA #REQUIRED>
CREATE TABLE TabProfessor
OF Type_Professor;
CREATE TYPE Type_Professor AS OBJECT (
attr PAddress
VARCHAR(4000),
attrPName
VARCHAR(4000),
attrSubject
VARCHAR(4000),
attrDept
Type_Dept);
CREATE TYPE Type_Dept AS OBJECT (
attrDept
VARCHAR(4000),
attrDAddress
VARCHAR(4000));
© Prof. T. Kudraß, HTWK Leipzig
Komplexe Elemente
CREATE TABLE TabUniversity (
attrStudyCourse VARCHAR(4000),
attrStudent Type_Student );
CREATE TYPE Type_Student AS OBJECT (
attrStudNr VARCHAR(4000),
attrLName VARCHAR(4000),
attrFName VARCHAR(4000),
attrCourse Type_Course );
CREATE TYPE Type_Course AS OBJECT (
attrName VARCHAR(4000),
attrProfessorType_Professor,
attrCreditPts VARCHAR(4000));
CREATE TYPE Type_Professor AS OBJECT (
attrPName VARCHAR(4000),
attrSubject VARCHAR(4000),
attrDept
VARCHAR(4000));
Verschachtelung durch zusammengesetzte Object Types
INSERT INTO TabUniversity
VALUES ( ‘Computer Science' ,
Type_Student('23374','Conrad','Matthias',
Type_Course(‘Databases II‘,
Type_Professor(‘Kudrass‘ ,
‘Database Systems‘',
‘Computer Science‘), '4')));
SELECT u.attrStudent.attrLname
FROM TabUniversity u
WHERE u.attrStudent.attrCourse.attrProfessor.attrPName
= ‘Kudrass';
© Prof. T. Kudraß, HTWK Leipzig
Mengenwertige Elemente
z
z
Mehrfaches Auftreten eines Elements (DTD): + oder *
Beschränkungen des DBMS (Oracle 8i)
–
–
Kollektionstypen nur anwendbar auf textwertige Subelemente,
z.B. ARRAY OF VARCHAR
Was ist mit komplexen Subelementen?
z
z
Subelemente können wiederum mengenwertig sein
Lösung
–
–
Oracle ab Release 9i verwenden
Beziehungen über Objektreferenzen realisieren (aufwendig!)
© Prof. T. Kudraß, HTWK Leipzig
Mengenwertige Elemente
CREATE TYPE TypeVA_Student AS VARRAY(100) OF Type_Student;
CREATE TYPE TypeVA_Course AS VARRAY(100) OF Type_Course;
CREATE TYPE TypeVA_Professor AS VARRAY(100) OF Type_Professor;
CREATE TYPE TypeVA_Subject AS VARRAY(100) OF VARCHAR(4000);
CREATE TABLE TabUniversity (
attrStudyCourse VARCHAR(4000),
attrStudent TypeVA_Student );
CREATE TYPE Type_Student AS OBJECT (
attrStudNr VARCHAR(4000),
attrLName VARCHAR(4000),
attrFName VARCHAR(4000),
attrCourse TypeVA_Course );
CREATE TYPE Type_Course AS OBJECT (
attrName VARCHAR(4000),
attrProfessor TypeVA_Professor,
attrCreditPts VARCHAR(4000));
CREATE TYPE Type_Professor AS OBJECT (
attrPName VARCHAR(4000),
attrSubject TypeVA_Subject,
attrDept
VARCHAR(4000));
University
Student
Course
Professor
Subject
© Prof. T. Kudraß, HTWK Leipzig
Einfügen der Dokument-Daten
(Beispiel)
INSERT INTO TabUniversity VALUES ( ‘Computer Science' ,
TypeVA_Student (
Type_Student('23374','Conrad','Matthias',
TypeVA_Course (
Type_Course(‘Databases II‘,
TypeVA_Professor (
Type_Professor(‘Kudrass‘ ,
TypeVA_Subject (
‘Database Systems,‘Operating Systems‘),
‘Computer Science‘)),‘4‘),
Type_Course(‘CAD Intro‘,
TypeVA_Professor (
Type_Professor(‘Jaeger‘ ,
TypeVA_Subject (
‘CAD‘,‘CAE‘),
‘Computer Science‘)),‘4‘),
...)),
Type_Student(‘00011',‘Meier',‘Ralf', … ) … )
...);
© Prof. T. Kudraß, HTWK Leipzig
Oracle 9i Release 2
Objektrelationale Speicherung (1)
z
XMLType
–
–
z
z
z
z
Unterstützung von XML Schema
XPATH kann als Ausdruck in DML Statements genutzt
werden
Kombination von SQL Anfragen mit XPATH möglich
Neue XML Operatoren
–
–
z
2 Speicherungs-Optionen: CLOB vs. objektrelational
Informationserhaltung entsprechend DOM
XMLTABLE (Umwandlung einer Knotenliste in Tabelle)
XMLELEMENT (Erzeugen von XML-Elementen on-the-fly)
XSL Transformationen für XMLType
© Prof. T. Kudraß, HTWK Leipzig
Oracle 9i Release 2
Objektrelationale Speicherung (2)
z
Performance-Verbesserungen
–
–
–
z
Foldering
–
z
z
z
z
Lazy XML Load
Schema Caching
hierarchischer Index
Abbildung von Verzeichnisstrukturen in DB-Strukturen
Access Control auf der Ebene von XML-Objekten
WebDAV und FTP Zugriff
Suche in Metadaten, Strukturen und Inhalten mittels
SQL
Neue APIs
–
–
Java Bean Interface
Servlet API zum Zugriff auf XML-Daten
© Prof. T. Kudraß, HTWK Leipzig
Oracle 9i Release 2
Beispiele
SELECT
SELECT xml_order
xml_order FROM
FROM orders
orders
WHERE
WHERE EXISTSNODE
EXISTSNODE (xml_order,‘//ship_to/state‘)
(xml_order,‘//ship_to/state‘) >> 0;
0;
SELECT
SELECT xml_order
xml_order FROM
FROM orders
orders
WHERE
WHERE EXTRACTNODE(xml_order,
EXTRACTNODE(xml_order,
‘//ship_to/state‘).getClobVal()
‘//ship_to/state‘).getClobVal() == ‘CA‘;
‘CA‘;
Speicherungsmodus in Anfrage nicht sichtbar
Somit auch erlaubt:
SELECT
SELECT xml_order
xml_order FROM
FROM orders
orders
WHERE
EXTRACTNODE(xml_order,
WHERE EXTRACTNODE(xml_order,
‘//ship_to/state‘)
‘//ship_to/state‘) == ‘CA‘;
‘CA‘;
© Prof. T. Kudraß, HTWK Leipzig
Strukturierte Speicherung
Bewertung
z
Dokumentstruktur ist starr (durch relationales Schema
gegeben)
–
z
Beschränkungen in der Abbildung
–
–
z
Rekursion
mixed content
Informationsverlust (Round-Trip-Problem)
–
–
–
z
somit keine beliebigen (nicht vordefinierten) XML-Dokumente
speicherbar
Kommentare, Processing Instructions
Reihenfolge der Elemente
Element vs. Attribute (wie war es im Original?)
Anfragesprache ist immer SQL (erfordert Übersetzung)
–
strukturorientierte Anfragen schwierig
© Prof. T. Kudraß, HTWK Leipzig
Fazit
z
Vielzahl von Speicherungsmethoden verfügbar
–
–
z
Unterschiedliche Anforderungen (je nach Dokumenttyp)
–
–
–
z
z
z
jeweils Vor- und Nachteile
Mischformen innerhalb einzelner Dokumente denkbar
Skalierbarkeit
Performance
Anfragemöglichkeiten
Semantik (Information aus Dokumenten bewahren!)
Auswahl der günstigsten Methode?
Werkzeugunterstützung für XML-Datenbankentwurf?
© Prof. T. Kudraß, HTWK Leipzig
Quellen
z
z
Steve Muench: Building Oracle XML Applications,
O‘Reilly, 2000.
Oracle Technology Network:
http://www.oracle.com/xml
z
z
z
Harald Schöning: XML und Datenbanken, BTWTutorium, März 2001.
M. Klettke, H. Meyer: XML-Datenbanken, dpunkt
Verlag 2002.
Ron Bourret: XML and Databases,
http://www.rpbourret.com/xml/
XMLAndDatabases.htm
© Prof. T. Kudraß, HTWK Leipzig
Literatur
z
z
z
z
z
z
T. Kudrass, M. Conrad: Management of XML Documents in ObjectRelational Databases, Proceedings of the EDBT Workshop on XMLBased Data Management (XMLDM), Prag, Springer-Verlag, 2002,
T. Kudrass: Coping with Semantics in XML Document Management,
Proc. of the 10th OOPSLA Workshop on Behavioral Semantics, Tampa,
Fl., Okt. 2001.
T. Kudrass: Management of XML Documents without Schema in
Relational Databases, Proceedings of the OOPSLA Workshop on
Objects, <XML> and Databases, Tampa, Fl., Okt. 2001, in: Information
and Software Technology 44 (2002), 269-275, Elsevier-Verlag, 2002.
Tobias Krumbein: Speicher- und Anfragemethoden für XML-Dokumente
ohne Schema in objektrelationalen Systemen am Beispiel Oracle,
Diplomarbeit, HTWK Leipzig, 2001.
Matthias Conrad: Speicherungsmöglichkeiten von XML-Dokumenten mit
bekanntem Schema in objekt-relationalen Systemen am Beispiel Oracle,
Diplomarbeit, HTWK Leipzig, 2001.
Thomas Kudraß: VL-Skript “XML-Datenbanken“, www.imn.htwk-leipzig.de
Herunterladen