XML und Datenbanken

Werbung
Motivation
XML und Datenbanken
■ Vorteile von XML-Dokumenten
XML
■
■
■
Portabilität: Unicode
vielschichtige Verarbeitungsmöglichkeiten: XSLT, DOM, SAX
Transferierung über ein Netzwerk (textuelle Repräsentation): SOAP
XML
■ Nachteile von XML-Dokumenten
■
■ Sie wissen, worin sich XML und RDBMs unterscheiden
■ Sie kennen das 3-Ebenen Modell von Informationssystemen
■ Sie können
1. XML-Dokumente in Datenbanken speichern
■ 2. aus dem Inhalt einer Datenbankinhalt XML-Dokumente
erzeugen
■ 3. Abfragen in XQuery erzeugen
■
■
■
■
Speicherung (Persistenz) von XML-Dokumenten nicht standardisiert (ausser Datei)
■ hat man am Anfang sogar "vergessen", z.B. DOM
Mehrere Varianten für die Beschreibung der Struktur: DTD, XSD, ...
Grad der Strukturiertheit von XML-Dokumente variiert stark:
■ strukturiert, semi-strukturiert unstrukturiert
Speicher- und Rechnerleistungsbedarf
Dank an Meike Klettke & Holger Meyer Uni Rostock für Teile der Folien
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
2 von 89
Aufgaben
Speicherung
Speicherungvon
vonXML-Dokument
XML-Dokument
ininDatenbank
Datenbank
Konversion des Datenbankinhalts
Konversion des Datenbankinhalts
in XML-Dokument
in XML-Dokument
Datenbank
XML Dokument
■ 1. Speicherung
■
Drei-Ebenen-Modell
Abfragesprache
Abfragesprache
XQuery
XQuery
die komplette Struktur des XML Dokuments muss persistent gemacht werden
■ 2. Generierung von XML anhand RDBMs Daten
■
Relationale Daten müssen auf XML abgebildet werden
■ 3. Abfragesprache
■
Soll unabhängig von Art der Speicherung sein: XQuery
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
3 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
4 von 89
XML im Vergleich zu RDBMs
Drei-Ebenen-Modell von Informationssystemen
■ Konzeptionelle Ebene: Datentypen
■
XML
RDBMS
■ einfach-hierarchische Struktur (Baum)
■ Daten in mehreren Tabellen
■ Knoten haben Elemente und Attribute
■ Zellen haben einzelnen Wert
■ Elemente können eingebettet sein
■ Atomare Zellen Inhalte
■ Elemente habe Reihenfolge
■ Kolonnen/Zeilen Reihenfolge undefiniert
■ Schema ist optional
■ Schema ist vorgeschrieben
■ direkte Speicherung/Abfrage von einfachen
Dokumenten
■ Joins für die Abfrage von einfachen
Dokumenten (bei normalisierten Daten)
■ Logische Ebene: Dateninhalte
■
■
■
■ Abfrage mittels SQL
© M. Klettke, H. Meyer, K. Rege, ZHAW
■
5 von 89
Drei-Ebenen Modell von RDBMs
konzeptuelle
Ebene
Abstraktes DB-Schema
z.B. ER-Diagram
logische
Ebene
Konkretes DB-Schema
z.B. Tabellenschema
klassische relationale Datenbanken
klassische Dokumentverarbeitung
XML-Dokumente
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
6 von 89
Drei-Ebenen Modell in der Dokumentverarbeitung
physische
Ebene
konzeptuelle
Ebene
Formatvorlage
Dokumentstruktur
Speicherungsstruktur
Zugriffspfade
z.B. B-Baum-Indexe
logische
Ebene
konkretes
Dokument
physische
Ebene
Dokumentformat (.doc, docx)
Zugriffsstruktur
z.B. Volltext-Index
■ Konzeptueller Entwurf:
■ Konzeptueller Entwurf: ERM
■
■
■ Logische Ebene: Relationenmodell, relationale Algebra
© M. Klettke, H. Meyer, K. Rege, ZHAW
grundsätzliche Vereinbarung der Dokumentstruktur (Vorlagen/Templates)
z.B. Einleitung vor Zusammenfassung etc.
■ Logische Ebene: Dokumentenmodell, Dokumentenausprägung
■ Physische Ebene: interne Speicherung, Indizierung, Transaktionsverarbeitung,
Abfrageoptimierung
School of Engineering
physikalische Speicherung der Daten
Zugriffstrukturen (Index,etc)
■ Anwendung des Modells auf
■
School of Engineering
logische Datenrepräsentation
■ Physische Ebene: Datenspeicherung
■
■ Abfrage basierend auf XML Standard
abstrakte Datenrepräsentation
■ Physische Ebene: interne Speicherung, (Volltext-) Indizierung, Abfragerealisierung
7 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
8 von 89
Drei-Ebenen Modell bei XML-Dokumenten
Klassifikation von XML Dokumenten
■ Strukturierte Daten in XML
konzeptuelle
Ebene
physische
Ebene
logische
Ebene
<..>
<..>
<..>
Dokumentstruktur
z.B. XML-Schema
strukturiert, regulär
viele gleichartige Daten
■ Beispiele: Produktkataloge, Bestellungen, Rechnungen
■ Traditionel in RDBMs
■
■
</..>
</..>
</..>
XML-Dokumente,
XML-Elemente
Speicherstruktur
Zugriffsstruktur
■ Semistrukturierte Daten in XML
strukturierte und unstrukturierte Anteile
Beispiele: E-Mail, Serien-Brief
■ Traditionel in DB mit CLOBs (Oracle, DB2)
■ DM-Systeme + Templates (z.B. Lotus Notes)
■
■
■ Konzeptuelle Ebene: XML-Schema, DTDs
<order>
<order>
<customer>Meyer</customer>
<customer>Meyer</customer>
<position>
<position>
<isbn>1-234-56789-0</isbn>
<isbn>1-234-56789-0</isbn>
<number>2</number>
<number>2</number>
<price currency=„Euro“>30.00</price>
<price currency=„Euro“>30.00</price>
</position>
</position>
</order>
</order>
<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>
■ Logische Ebene: XML-Dokumente, XML- Elemente, etc.
■ Unstrukturierte Daten in XML
■ Physische Ebene - Speicherung:
unstrukturiert, irregulär
■ Dokument individuelle/unreguläre Struktur
■ Beispiele: Bücher, Briefe
■ Traditionel in Dokument-Management-System
■
Bislang meist in Form von Dateien
■
■ Offene Punkte
Wie speichert man grosse Dokumente?
Wie kann man Abfragen effizient unterstützen?
■
■
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
9 von 89
Modellierung der konzeptionellen Ebene
■ Strukturierte Daten in XML
■
■
■
■
■
■
10 von 89
■ Strukturierte XML-Dokumente
■
Abfrage/Updates an Inhalt
Struktur meist unveränderlich (durch
Schema bestimmt)
Strukturiert
Darstellung
Abfrage, Transformation
<..>
<..>
<..>
Graphische Editoren
Visualisierung von Baum- und Graphstruktur
XML-Schema
</..>
</..>
</..>
■ Semistrukturierte XML-Dokumente
Semistrukturiert
■
XML-Schema
■ Unstrukturierte Daten in XML
■
Konzeptueller
Entwurf von XMLDokumenten
■
■ Semistrukturierte Daten in XML
■
© M. Klettke, H. Meyer, K. Rege, ZHAW
Modellierung der logischen Ebene
Strukturiert
Erweiterung von ER
Erweiterung von UML
Erweiterung von ORM
XML-Schema
School of Engineering
<content>
<content>
XML builds on the principles of two existing
XML builds on the principles of two existing
languages, <emph>HTML</emph> and
languages, <emph>HTML</emph> and
<emph>SGML</emph> to create a simple
<emph>SGML</emph> to create a simple
mechanism ..
mechanism ..
The generalized markup concept ..
The generalized markup concept ..
</content>
</content>
Abfrage/Updates an Inhalt und
Struktur
Semistrukturiert
■ Unstrukturierte Daten in XML
Unstrukturiert
■
Abfrage/Updates an Inhalt und
Struktur
Unstrukturiert
Noch keine wirklich gute Lösung zur Modellierung aller Arten von XML-Dokumenten
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
11 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
12 von 89
Realisierungen der logischen Ebene
Anforderungen an die physikalische Ebene
■ Strukturierte Daten in XML
■ Funktionale Anforderung
■
Darstellung: XML, rel. DM, oo DM
■
Abfragen: XQuery, SQL, OQL
■
Transformationen: XSLT, Import- und Export von Datenbankinformationen
Darstellung: XML, OEM
■
Abfragen: XQuery, Lorel
■
Transformationen: XSLT
■ Effizienz
■
■
kurze Antwortzeiten bei Zugriff auf XML-Dokumente oder Teile davon
Transaktionsverwaltung
■ ev. Unterstützung von verschieden Locking Verfahren
Unterstützung von XPath und XQuery
■ für die Abfrage
Unterstützung von SAX und DOM für Anwendungen
■
■
Semistrukturiert
■
■
■ Unstrukturierte Daten in XML
■
Darstellung: XML, SGML
Abfragen: XQuery, XPath, IR-Abfragen
Transformationen: XSLT
Speicher- und
Zugriffsstrukturen
Strukturiert
■ Semistrukturierte Daten in XML
■
Ordnungserhaltende und verlustfreie Speicherung von XML-Dokumenten
■
Unstrukturiert
■ Grundproblem: Grosse Variabilität von Dokumenten
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
13 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
14 von 89
Realisierungen der physischen Ebene
■ Unstrukturierte Daten in XML
■
Dateien, Volltext-Index
Unstrukturiert
Speicherung
als
Speicherungals
Ganzes
Ganzes
Semistrukturiert
Speicherung
der
Speicherungder
Dokumentstruktur
Dokumentstruktur
■ Semistrukturierte Daten in XML
■
Struktur auf Wert- und Schemaebene
■
Generische Speicherung von Graphen und
DOM Informationen
1. Speicherung von XML-Dokumenten
■ Strukturierte Daten in XML
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
15 von 89
■
Struktur auf Schemaebene
■
relationale, objektrelationale oder objektorientierte
Datenbanken
School of Engineering
Strukturiert
© M. Klettke, H. Meyer, K. Rege, ZHAW
strukturierte
strukturierte
Speicherung
Speicherung
16 von 89
Realisierungen der physischen Ebene
Als
AlsGanzes
Ganzes
Datei
Datei/ /CLOB
CLOB
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
Speicherung als Ganzes
Speicherung
Speicherungals
als
Ganzes
Ganzes
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
Volltextindex
Volltextindex
Vollständiges
Vollständiges
Mapping
Mapping
Volltextindex
Volltextindex
und
undXML-Index
XML-Index
Volltextindex
Volltextindex
BenutzerBenutzerdefiniertes
definiertes
Mapping
Mapping
Abbilden
Abbildendes
des
DOM-Modells
DOM-Modells
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
VolltextVolltext-und
und
XML-Index
XML-Index
Dokument
Dokumentbleibt
bleibtals
alsGanzes
Ganzeserhalten
erhalten
■■als
alsDatei
Dateiverwaltet
verwaltetvon
von
Dateisystem
Dateisystem++Volltext
VolltextIndex
Index
■■als
CLOB
verwaltet
von
als CLOB verwaltet von
Datenbank
Datenbank
Für
Fürunstrukturierte
unstrukturierteDaten
DatenininXML
XML
Für
Fürsemistrukturierte
semistrukturierteDaten
DatenininXML
XML
Dateibasiert:
Dateibasiert: Information
Information
Retrieval
RetrievalSuchmaschinen
Suchmaschinen
DB Basiert CLOB (Text Extender)
DB Basiert CLOB (Text Extender)
■Oracle Text
■Oracle Text
■DB2 Text Extender
■DB2 Text Extender
Für
Fürstrukturierte
strukturierteDaten
DatenininXML
XML
School of Engineering
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
■Informix Text Data Blades
■Informix Text Data Blades
© M. Klettke, H. Meyer, K. Rege, ZHAW
17 von 89
Volltext-Index
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
18 von 89
Volltext-Index
Grundprinzip der invertierten Liste
Begriff
Dokumente
Stichworte
1
A
D
F
2
B
C
D
3
A
C
D
E
Bestimmung der Stichworte
der Dokumente
School of Engineering
Stichworte
Dokumente
A
B
C
D
E
F
1
2
2
1
3
1
hotel
Warnemünde
Rostock
ort
anreisebeschreibung
3
3
2
3
<hotel>
<hotelname>Hotel Hübner</hotelname>
<adresse>
<plz>18119</plz>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
<nummer>12</nummer>
</adresse>
<anreisebeschreibung>
Aus Richtung Rostock kommend ...
</anreisebeschreibung>
</hotel>
■ bekannte Methode (älter als relationale Datenbanken)
■ Verfahren aus dem Bereich der Dokumentverarbeitung
Invertierte Speicherung:
Speicherung der Stichworte und
der zugehörigen Dokumente
© M. Klettke, H. Meyer, K. Rege, ZHAW
Verweis
19 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
20 von 89
Zusätzliche Information-Retrieval Techniken
Eigenschaften des Volltext-Indexes
Begriffsliste wird ergänzt durch:
Schemabeschreibung
nicht erforderlich
■ Statistische wortbasierte Verfahren
Dokumentrekonstruktion
Dokumente bleiben im
Original erhalten
Abfragen
Abfragen des Information
Retrieval
Weitere Besonderheiten
Volltextsuchfunktionen
■
Stopwortlisten: der, die, das, er, hat, tun, etc
■ Linguistische Verfahren
■
■
■
Wortstamm-Reduktion
(Groß-, Kleinschreibung, Getrennt- und Zusammenschreibung, Umlaute),
Wortdekomposition durch Regeln (engl.) oder Wörterbücher (dt.)
keine Auswertung des
XML-Markups
■ Wissensbasierte Verfahren
■
■
Einsatz
für unstrukturierte
Ontologien: Bedeutungsbeziehungen (z.B. Haus, Türe, Fenster, etc.)
Thesauren: zur Suche nach Synonymen
XML-Anwendungen
■ Grundlage von Web-Suchmaschinen
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
21 von 89
Volltextindex
Volltextindex
© M. Klettke, H. Meyer, K. Rege, ZHAW
22 von 89
Volltext- und XML-Index
Volltext- und XML-Index
Speicherung
Speicherungals
als
Ganzes
Ganzes
School of Engineering
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
VolltextVolltext-und
und
XML-Index
XML-Index
Dokument
Dokumentbleibt
bleibtals
alsGanzes
Ganzeserhalten
erhalten
■■als
alsDatei
Dateiverwaltet
verwaltetvon
vonDateisystem
Dateisystem
+Volltext
+VolltextIndex
Index++
XML
XMLIndex
Index
■■als
alsXML
XMLErweiterung
Erweiterungverwaltet
verwaltetvon
vonDatenbank
Datenbank
Zuordnung
ZuordnungInhalt
Inhalt
zu
zuMarkup
Markup
DB2
DB2XML
XMLExtender
Extender
Oracle
OracleText
Text
Informix
InformixVerity
VerityText,
Text,
Search
SearchData
DataBlade
Blade
Hierachische
HierachischeSchachtelung
Schachtelung
und
undAnordnung
Anordnungder
derMarkups
Markups
■ XML - Struktur kann in Abfragen ausgewertet werden
hotel.adresse CONTAINS (“Warnemünde”)
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
23 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
24 von 89
Eigenschaften des Volltext- und XML-Indexes
Speicherung der Dokumentenstruktur
Schemabeschreibung
nicht erforderlich
Dokumentrekonstruktion
Dokumente bleiben im
Original erhalten
Abfragen
Mechanismen des Information
Retrieval
Speicherung
Speicherungals
als
Ganzes
Ganzes
(einfache)
(einfache)
Abbildung
Abbildungder
der
Graphstruktur
Graphstruktur
Auswertung des Markup in
den Abfragen: XPath und XQuery
Weitere Besonderheiten
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
Speicherung
Speicherungder
der
Informationen
Informationen
des
DOM
des DOM
Volltextfunktionen
Struktur und Inhalt des
Struktur und Inhalt des
XML-Dokuments in DB speichern
XML-Dokuments in DB speichern
Einsatz
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
für unstrukturierte und
experimentelle Systeme
experimentelle Systeme
Guido Rost : Uni Rostock
Guido Rost : Uni Rostock
semistrukturierte Dokumente
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
25 von 89
Speicherung der Graph/Baumstruktur in RDBMs
■ generische Speicherung der
Struktur des XML-Dokumentes
■ Verwendung von Relationen
zur Speicherung von Elementen
und Attributen
Name
Name
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
26 von 89
Abfragen
Ordnung
Ordnung
Wert
Wert
Angepasstes SQL, durch Datenbankschema bestimmt:
Elements:
Element
Type
Value
Order
hotel
■ werden intern auf SQL-Abfragen (unter Berücksichtigung der Speicherstruktur)
umgesetzt,
Descendant-of
1
adresse
2
plz
int
18119
1
ort
string
Warnemünde
2
strasse
string
Seestrasse
3
■ Ergebnis der XML-Abfrage wird aus Ergebnis der Datenbankabfrage generiert
Elements:
Type
Value
plz
int
18119
ort
string
Warnemünde
strasse
string
Seestrasse
Element
Verweis auf Element
Verweis auf Element
Attributes:
Element
Attribute
Type
Value
url
string
www...
autor
string
Müller
Beispiel:
hotel
(Hotels in Warnemünde)
adresse
select a.wert
Verweis
Verweisauf
aufVorgänger
Vorgänger
from
Descendant-of
Elemente a, Elemente b
where (a.elementname=
■Damit ist die Zuordnung von Inhalten zur Struktur, sowie die
vollständige Wiederherstellung der Struktur möglich
'hotelname') and
(b.elementname='ort') and
Query
Query
SQL
SQL
(b.wert='Warnemünde') and
(a.DocID=b.DocID)
Abfrage
AbfrageininSQL
SQLübersetzt
übersetzt
Anwort
Anwortzurück
zurückininXML
XML
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
27 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
28 von 89
Eigenschaften der Speicherung der Graphstruktur
Schemabeschreibung
zur Speicherung nicht
erforderlich
Dokumentrekonstruktion
möglich, aber sehr aufwendig
Abfragen
Speicherung des DOM
Speicherung
Speicherungals
als
Ganzes
Ganzes
- XQuery möglich
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
- Übersetzung in DB-Abfrage
Weitere Besonderheiten
(einfache)
(einfache)
Abbildung
Abbildungder
der
Graphstruktur
Graphstruktur
Abfragen über vielen
Elementen/Attributen sind
aufwendig
Einsatz
Speicherung
Speicherungder
der
Informationen
Informationen
des
desDOM
DOM
alle Typen von XML-Dokumente
DOM
DOMwird
wirddirekt
direktinin
Datenbanken
Datenbankengespeichert
gespeichert
(OODB
(OODBoder
oderORDB)
ORDB)
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
29 von 89
© M. Klettke, H. Meyer, K. Rege, ZHAW
30 von 89
Eigenschaften der auf DOM basierenden
Speicherung
Speicherung und Abfragen
■Speicherung des DOM in OO Datenbank: Excelon
Schemabeschreibung
■ObjectStore
C++ OO Datenbank
■Abfragen in XQL
zur Speicherung nicht
erforderlich
■Speicherung des DOM: Tamino
■modellbasierte
■Abfragen
School of Engineering
Tamino
Tamino
eXcelon
eXcelonXIS
XIS
Speicherung von XML-Dokumenten
in DOM, erweitertes XPath Dialekt
Dokumentrekonstruktion
möglich, aber aufwändig
Abfragen
XML-Abfragen möglich
angepasste Datenbankabfragen
XPath++
XPath++
OQL
OQL
Weitere Besonderheiten
standardisierte und allgemein
akzeptierte Schnittstelle: DOM
Einsatz
Angepasste
AngepassteDatenbankabfragen
Datenbankabfragen
(unter
(unterKenntnis
Kenntnisder
derSpeicherungsstruktur)
Speicherungsstruktur)
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
31 von 89
School of Engineering
alle Typen von XML-Dokumente
© M. Klettke, H. Meyer, K. Rege, ZHAW
32 von 89
Abbildung der XML-Struktur auf RDBS Struktur
Vollständiges, automatisches Mapping
XML-Dokument
Speicherung
Speicherungals
als
Ganzes
Ganzes
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
Vollständiges
Vollständiges
(automatisches)
(automatisches)
Mapping
Mapping
Benutzerdefiniertes
Benutzerdefiniertes
Mapping
Mapping
■■Die
DieStruktur
Strukturund
undder
derInhalt
Inhalt
wird
wirdininrelationale
relationaleDatenbank
Datenbank
gespeichert
gespeichert
■■Die
DieAbbildung
Abbildungwird
wird
automatisch
automatischanhand
anhanddes
des
Schemas
Schemasbestimmt
bestimmt
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
<hotel>
<hotelname>Hotel Hübner
</hotelname>
<adresse>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
...
</adresse>
<preise>
<einzelzimmer>198
</einzelzimmer>
...
</preise>
</hotel>
Hotel:
Adresse:
Preise:
■ DTD oder Schema ist erforderlich für
typengerechte Speicherung
33 von 89
School of Engineering
HotelID
Hotelname
Adresse
Preise
H0001
Hotel Hübner
A0001
P0001
AdresseID
Ort
Strasse
A0001
Warnemünde
Seestraße
PreiseID
Einzelzimmer
P0001
198
...
Separate Relationen
Separate Relationen
© M. Klettke, H. Meyer, K. Rege, ZHAW
34 von 89
Erzeugen des Datenbankschemas für eine DTD
Abfragen
XML-Dokument
■ Datenbankabfragen (Struktur der Datenbanken muss bekannt sein)
Datenbank
...
Elemente:
XML-Element
Attribut einer Relation
Sequenz von Elementen
Attribute einer Relation
Alternative von Elementen
Attribute einer Relation
Element mit Quantifizierer ?
Attribut mit Nullwerten
Elemente mit Quantifizierer +,*
Menge oder Liste von Attributen
■ SQL Datenbankabfragen für XML-Abfragen erzeugen
(SET OF, LIST OF)
■ aus Ergebnis XML-Dokument erzeugen
Geschachtelte Elemente
■ XML-Abfragen
Prozess der Abbildung der XML-Dokumente auf Datenbanken muss protokolliert sein
Objektrelationale
ObjektrelationaleDatenbank
Datenbank
TUPLE OF
Schema
Attribute:
XML-Attribut
Attribut einer Relation
IMPLIED
Nullwert erlaubt
REQUIRED
Nullwert nicht erlaubt
Defaultwert
Defaultwert
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
Query
Query
SQL
SQL
Angepasste Datenbankabfragen
Angepasste Datenbankabfragen
(unter Kenntnis von Schema und Abbildungsregeln)
(unter Kenntnis von Schema und Abbildungsregeln)
35 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
36 von 89
Strukturierte Speicherung in Datenbanken
Schemabeschreibung
zur Speicherung erforderlich
Dokumentrekonstruktion
nur eingeschränkt möglich
Benutzerdefiniertes Mapping
Speicherung
Speicherungals
als
Ganzes
Ganzes
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
(Protokollierung des
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
Abbildungsprozesses)
Abfragen
Vollständiges
Vollständiges
(+automatisches)
(+automatisches)
Mapping
Mapping
- Datenbankabfragen
- XML-Abfragen möglich
Weitere Besonderheiten
Benutzerdefiniertes
Benutzerdefiniertes
Mapping
Mapping
DB2 XML Extender
DB2 XML Extender
Oracle: XMLType
Oracle: XMLType
Microsoft SQL Server
Microsoft SQL Server
Föderationen mit
bestehenden Datenbanken
■ Bei allen bisherigen Methoden konnte die
Art der Speicherung nicht beeinflusst werden
■ flexible Methode: Mappingvorschrift wird durch den Benutzer
spezifiziert
■ Struktur der XML-Dokumente und Datenbankschema können unabhängig
voneinander entworfen werden (und relativ autonom sein)
■ Speicherung von XML-Dokumenten in existierende Datenbanken
möglich
Einsatz
für Umgang mit strukturierten Daten
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
37 von 89
Benutzerdefiniertes Mapping
XML-Dokument
© M. Klettke, H. Meyer, K. Rege, ZHAW
38 von 89
Bsp: Mappingvorschrift in Oracle
Mapping Vorschrift
<hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname>
<adresse>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
...
School of Engineering
angereichertes Schema
<ClassMap>
<ElementType Name="hotel"/>
<ToClassTable>
<Table Name="Hotelpreise"/>
</ToClassTable>
<PropertyMap>
</adresse>
<preise>
<einzelzimmer>198</einzelzimmer>
...
</preise>
</hotel>
<Attribute Name="url"/>
<ToColumn>
<Column Name="Hotel_URL"/>
</ToColumn>
</PropertyMap>
<PropertyMap>
<ElementType Name="hotelname"/>
<ToColumn>
<Column Name="Name"/>
</ToColumn>
</PropertyMap>
...
</Classmap>
Hotelpreise
Datenbank
School of Engineering
Hotel_URL
Name
www.hotel-huebner.de
Hotel Hübner
Einzelzimmer
198
© M. Klettke, H. Meyer, K. Rege, ZHAW
39 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
40 von 89
Abfragen
Eigenschaften
■ Datenbankenabfragen (Struktur der Datenbanken muss bekannt sein)
Schemabeschreibung
Dokumentrekonstruktion
■ XML-Abfragen nur sehr eingeschränkt möglich (unvollständige Abbildung)
■
■
Abbildung der XML-Dokumente auf Datenbanken muss formal spezifiziert sein
alle für die Abfrage relevanten Daten müssen gespeichert sein
Abfragen
Weitere Besonderheiten
Einsatz
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
41 von 89
Hybride Verfahren
School of Engineering
Zur Speicherung erforderlich
Meist nicht möglich
(Voraussetzung: Protokollierung des Abbildungsprozesses, vollständige Abb.)
Datenbankabfragen
- Integration in bestehende
Datenbanken möglich,
- XML-Dokumente und DB
voneinander unabhängig
für strukturierte Daten
© M. Klettke, H. Meyer, K. Rege, ZHAW
42 von 89
Hybride Speicherung – Motivation
■ Es gibt eine Reihe von Verfahren zur Speicherung von XML- Dokumenten.
Als
AlsDateien
Dateien/ /
Clobs
Clobs
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
Volltextindex
Volltextindex
Volltextindex
Volltextindex
und
undXML-Index
XML-Index
■ Welche eignet sich für XML-Dokumente, die sowohl strukturiert als auch unstrukturiert
sind?
Vollständiges
Vollständiges
Mapping
Mapping
Abbilden
Abbildendes
des
DOM-Modells
DOM-Modells
■ Algorithmus zur Bestimmung von daten- und unstrukturierten Anteilen eines XMLDokument
BenutzerBenutzerdefiniertes
definiertes
Mapping
Mapping
■ Entsprechende Speicherung
■ Erkennen von daten- und unstrukturierten Anteilen
■ Speicherung mit unterschiedlichen Verfahren
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
43 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
44 von 89
Hybride Ansätze
… Hybride Ansätze
■ Auswahl unterschiedlicher Speicherungsmethoden für verschiedene Dokumentanteile
■ Hybride Speicherungsverfahren werden durch Datenbanksysteme unterstützt, die
mehrere Speicherungsmöglichkeiten für XML-Dokumente anbieten.
<hotel>
<hotelname>Strand Hotel Hübner</hotelname>
<adresse>
<plz>18119</plz>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
<nummer>12</nummer>
<telefon>0381/5434-0</telefon>
</adresse>
<hausbeschreibung> Sie finden unser elegant und
komfortabel eingerichtetes 4-Sterne Hotel
direkt an der Strandpromenade von Warnemünde
mit Blick auf Leuchtturm, Hafeneinfahrt
und Ostsee. </hausbeschreibung>
</hotel>
■ Oracle
■
entsprechende Angaben im annotierten XML Schema erfolgen
■ DB2
■
Sie finden unser elegant und
komfortabel eingerichtetes 4-Sterne Hotel
direkt an der Strandpromenade von Warnemünde
mit Blick auf Leuchtturm, Hafeneinfahrt
und Ostsee.
Hotel
Strand Hotel Hübner
School of Engineering
Ort
Warnemünde
Strasse
Telefon
Seestraße
0381/5434-0
© M. Klettke, H. Meyer, K. Rege, ZHAW
Speicherung eines XMLType als CLOB oder objektrelational, Kombination der Varianten kann durch
Speicherung von XML-Dokumenten als xmlcolumn und xmlcollection, Kombination in der gegenwärtigen
Version nicht möglich !
45 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
46 von 89
Zusammenfassung: Speicherung
■ Vielzahl von Verfahren und Techniken existieren nebeneinander
■ oft aus den Bereichen Datenbanken und Dokumentverarbeitung
■ generell: es gibt keine „beste Lösung“ für alle XML-Dokumentarten
■ geeignete Lösung ist abhängig von konkreten Erfordernissen bzw. Typus des
Dokuments (strukturiert, semi-strukturiert, unstrukturiert)
Als
AlsDateien
Dateien/ /
Clobs
Clobs
Speicherung
Speicherungder
der
Dokumentstruktur
Dokumentstruktur
Volltextindex
Volltextindex
Volltextindex
Volltextindex
und
undXML-Index
XML-Index
School of Engineering
2. Generierung von XML-Dokumenten
Strukturierte
Strukturierte
Speicherung
Speicherung
ininDatenbanken
Datenbanken
Vollständiges
Vollständiges
Mapping
Mapping
Abbilden
Abbildendes
des
DOM-Modells
DOM-Modells
© M. Klettke, H. Meyer, K. Rege, ZHAW
BenutzerBenutzerdefiniertes
definiertes
Mapping
Mapping
47 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
48 von 89
Generierung von XML-Dokumenten
Generierung von XML-Dokumenten
■Der Inhalt einer (bestehenden) Datenbank soll in XML dargestellt werden.
■Nachbearbeitung der Daten vereinfacht, z.B. Erzeugung von HTML
XML
RDBMs
■ Element- und Attributnamen
■ Relationen- und Attributnamen
■ Datentypen von XML-Schema
■ Datentypen
■ Inhalte in XML-Dokumenten
Abbildung
Abbildungdes
des
vollständigen
vollständigen
Datenbankinhaltes
Datenbankinhaltes
Abbildung
Abbildungvon
von
Abfrageergebnissen
Abfrageergebnissen
Einsatz
Einsatzindividueller
individueller
TransformationsTransformationsvorschriften
vorschriften
■ Anforderungen
■ Vollständige Abbildung von Datenbankinhalten
■
Sämtliche in der Datenbank vorhandenen Informationen müssen sich im XML-Dokument wiederfinden.
■ Abbildung von Abfrageergebnissen oder Sichten (Views)
■ Daten aus Datenbanken
■
Ausschnitt der gespeicherten Informationen, der durch eine Abfrage oder eine Sicht spezifiziert wird, wird
als XML-Dokument dargestellt.
■ Einsatz individueller (anwendungspezifischer) Transformationsregeln
■
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
49 von 89
Ein Ausschnitt der Daten sowie deren Struktur wird festgelegt.
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
50 von 89
Abbildung des vollständigen Datenbankinhaltes
Abbildung
Abbildungdes
des
vollständigen
vollständigen
Datenbankinhaltes
Datenbankinhaltes
Abbildung
Abbildungvon
von
Abfrageergebnissen
Abfrageergebnissen
■■Feste
FesteTransformationsregeln
Transformationsregeln
■■Feststehende
FeststehendeSyntax
Syntaxdes
des
Einsatz
Einsatzindividueller
individueller
TransformationsTransformationsvorschriften
vorschriften
Oracle, DB2, Informix
entstehenden
entstehendenXML-Dokumentes
XML-Dokumentes
Abbildung des vollständigen Datenbankinhaltes
■Anwendungfall
■
■
Import/Export von sämtlichen DB-Daten - (unterschiedlicher Hersteller)
Transport und Archivierung von Daten
■Anforderung
Alle in der Datenbank vorhandenen Informationen müssen sich im XML-Dokument wiederfinden.
Standardformat muss (herstellerübergreifend) definiert sein
■ Daten (inkl. Typen)
■ Schlüssel-, Fremdschlüssel - Beziehungen
■nicht möglich Stored Procedures, Triggers, etc.
■
■
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
51 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
52 von 89
Abbildung des vollständigen Datenbankinhalten
Schlüssel und Fremdschlüsselbeziehungen
■ Verwendung von ID und IDREF (DTD oder XML-Schema)
■ Datenbank: betrachtet als dreistufige Hierarchie von
■
Datenbank - Relation - Attributen
Adresse:
Hotel:
HotelID
■
■
Name
Kategorie
Hoteladr
H0001
Hotel Huebner
4
A0001
H0002
Warnemuender
Hof
3
A0002
AdresseID
Ort
PLZ
Strasse
Nr
A0001
Warnemuende
18119
Seestrasse
12
Warnemuende
18119
A0002
Stolteraer
Weg
8
<Hotelinformationen>
<Hotel>
<HotelID>H0001</HotelID>
<Name>Hotel Huebner</Name>
<Kategorie>4</Kategorie>
<Hoteladr>A0001</Hoteladr>
</Hotel>
<Hotel>
...
</Hotel>
<Adresse>
...
</Adresse>
</Hotelinformationen>
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
Darstellung von Schlüsseln und Fremdschlüsseln
Problem: globale Eindeutigkeit von IDs in XML-Dokumenten vs. lokale Eindeutigkeit von Schlüsseln einer
Relation
Elementname muss eindeutig sein
Hotel:
HotelID
Name
Kategorie
Hoteladr
H0001
Hotel Huebner
4
A0001
H0002
Warnemuender
Hof
3
A0002
<!ELEMENT
<!ELEMENT Hotel
Hotel (Name,Kategorie)>
(Name,Kategorie)>
<!ATTLIST
<!ATTLIST Hotel
Hotel Hoteladr
Hoteladr IDREF
IDREF #REQUIRED>
#REQUIRED>
<!ELEMENT
Name
(#PCDATA)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT
Kategorie
(#PCDATA)>
<!ELEMENT Kategorie (#PCDATA)>
Adresse:
53 von 89
AdresseID
Ort
PLZ
Strasse
Nr
A0001
Warnemuende
18119
Seestrasse
12
A0002
Warnemuende
18119
Stolteraer
Weg
8
School of Engineering
<!ELEMENT
<!ELEMENT Adresse
Adresse (Ort,
(Ort, PLZ,
PLZ, Strasse,
Strasse, Nr)>
Nr)>
<!ATTLIST
<!ATTLIST Adresse
Adresse AdresseID
AdresseID ID
ID #REQUIRED>
#REQUIRED>
<!ELEMENT
Nr
(#PCDATA)>
<!ELEMENT Nr (#PCDATA)>
<!ELEMENT
<!ELEMENT Ort
Ort (#PCDATA)>
(#PCDATA)>
<!ELEMENT
<!ELEMENT PLZ
PLZ (#PCDATA)>
(#PCDATA)>
<!ELEMENT
Strasse
<!ELEMENT Strasse (#PCDATA)>
(#PCDATA)>
© M. Klettke, H. Meyer, K. Rege, ZHAW
Schlüssel und Fremdschlüsselbeziehungen
Einbezug von Datentypen
■ Verwendung eines XML-Schemas
■ Durch Verwendung von XML-Schema möglich
■
Einsatz von xsd:key / xsd:keyref
■
Bestimmung der Elemente durch XPath Ausdrücke
54 von 89
■ Definition der Datenbanktypen als extension/restriction von Standard Schema Typen
■ ANSI-Standard SQL/XML
Hotel:
HotelID
Name
Kategorie
Hoteladr
H0001
Hotel Huebner
4
A0001
H0002
Warnemuender
Hof
3
A0002
Adresse:
AdresseID
Ort
PLZ
Strasse
Nr
A0001
Warnemuende
18119
Seestrasse
12
A0002
Warnemuende
18119
Stolteraer
Weg
8
School of Engineering
...
...
<xs:keyref name= "Adresse_keyref refer = "Adresse_key">
<xs:keyref name= "Adresse_keyref refer = "Adresse_key">
<xs:selector xpath = "Hotelinformation/Hotel" />
<xs:selector xpath = "Hotelinformation/Hotel" />
<xsd:field xpath ="Hoteladr">
<xsd:field xpath ="Hoteladr">
</xs:keyref>
</xs:keyref>
...
...
<xs:key name="Adresse_key">
<xs:key name="Adresse_key">
<xs:slector xpath="/Hotelinformation/Adresse"/>
<xs:slector xpath="/Hotelinformation/Adresse"/>
<xs:field xpath="AdressID" />
<xs:field xpath="AdressID" />
</xs:key>
</xs:key>
...
...
© M. Klettke, H. Meyer, K. Rege, ZHAW
55 von 89
■ Hersteller wie IBM, Oracle, Microsoft, Informix und Software AG beteiligt
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
56 von 89
Eigenschaften der Abbildung des vollständigen
Datenbankinhalten
Ausgabe der Datenbank
Erforderliche Informationen
Variables Ausgabeformat
Erhalt von Datentypen
vollständig
keine
nein
nur bei Verwendung von Schemas
Speicherung von Schlüsseln
und Fremdschlüsseln
als ID/IDREF oder KEY/KEYREF
auf Hierarchien im XMLDokument
Parser müssen DTD-Erweiterungen auswerten
XML Schema ist wesentlich
besser geeignet
Weitere Besonderheiten
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
Abbildung von Abfrageergebnissen
57 von 89
Abbildung von Abfrageergebnissen
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
58 von 89
Abbildung von Abfrageergebnissen
■ Ergebnisse von SQL-Abfragen in XML-Syntax ausgeben
Abbildung
Abbildungdes
des
vollständigen
vollständigen
Datenbankinhaltes
Datenbankinhaltes
Abbildung
Abbildungvon
von
Abfrageergebnissen
Abfrageergebnissen
Einsatz
Einsatzindividueller
individueller
TransformationsTransformationsvorschriften
vorschriften
Beispiel:
SELECT Name, Kategorie, Ort
FROM Hotel, Adresse
WHERE Ort=‘Warnemuende'
■■Feste
FesteTransformationsregeln
Transformationsregeln
■■Feststehende
FeststehendeSyntax
Syntaxdes
des
entstehenden
entstehendenXML-Dokumentes
XML-Dokumentes
■■Auswahl
Auswahlder
derdazustellenden
dazustellendenDaten
Daten
durch
durchdie
dieDatenbankabfrage
Datenbankabfrage
Ergebnis:
<rowset>
<row no=´1´>
<Name>Hotel Huebner</Name>
<Kategorie>4</Kategorie>
<Ort>Warnemuende</Ort>
</row>
</rowset>
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
59 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
60 von 89
Eigenschaften der Abbildung von
Abfrageergebnissen
Ausgabe der Datenbank
Erforderliche Informationen
Variables Ausgabeformat
Erhalt von Datentypen
Speicherung von Schlüsseln
und Fremdschlüsseln
Weitere Besonderheiten
School of Engineering
Ausschnitte
Datenbankenabfrage/ View
nein
beim Generieren von XML
Schema
Bei Verwendung von
XML Schema
keine
© M. Klettke, H. Meyer, K. Rege, ZHAW
individuelle Transformationsvorschriften
61 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
Varianten zum Einsatz individueller Transformationsvorschrifte
Einsatz individueller Transformationsvorschriften
Transformationsregeln in Abfrage (Verbindung einer Datenbankund XML Abfragesprache
A
Abbildung
Abbildungdes
des
vollständigen
vollständigen
Datenbankinhaltes
Datenbankinhaltes
Abbildung
Abbildungvon
von
Abfrageergebnissen
Abfrageergebnissen
Einsatz
Einsatzindividueller
individueller
TransformationsTransformationsvorschriften
vorschriften
XML
XML
XQuery
XQuery
■■Auswahl
Auswahlder
derdazustellenden
dazustellendenDaten
Daten
durch
durchdie
dieDatenbankabfrage
Datenbankabfrage
■■Individuelle
IndividuelleTransformationsregeln
Transformationsregeln
durch
durchden
denBenutzer
Benutzer
■■Dadurch
DadurchSpezifikation
Spezifikationder
der
feste
Datenbank
B
Transformationsregeln
XML
XML
XML
XML
virtuelle
XML-Sicht
XML
XML
XML
XML
SQL
SQL
© M. Klettke, H. Meyer, K. Rege, ZHAW
63 von 89
XML-Abfragesprache
C
Syntax
Syntaxdes
desentstehenden
entstehendenXML-Dokumentes
XML-Dokumentes
School of Engineering
62 von 89
School of Engineering
standardisiertes
XML-Dokument
Format
XSLT
XSLT
© M. Klettke, H. Meyer, K. Rege, ZHAW
64 von 89
A. Einsatz von erweiterten Datenbankabfragen
… Einsatz von erweiterten Datenbankabfragen
■ Kombination von Datenbank- und XML-Abfragesprachen
Abfragebeispiel:
Ergebnis:
select *
<hotel>
<name>Strand Hotel Huebner</name>
<adresse>
<plz>18119<plz>
<wohnort>Warnemuende</wohnort>
<strasse>Seestrasse</strasse>
<hausnummer>12</hausnummer>
</adresse>
</hotel>
from hotel, adresse
erweiterte
Datenbankabfrage
where (hotel.Hoteladr=
adresse.AdresseID)
construct
<hotel>
<name>{name}</name>
relationale
Datenbank
<adresse>
benutzerdefiniertes
XML-Dokument
<plz>{plz}<plz>
<wohnort>{ort}</wohnort>
<strasse>{strasse}</strasse>
<hausnummer>{nr}</hausnummer>
■ Datenbankabfrage zur Auswahl der darzustellenden Daten
</adresse>
</hotel>
(= relevanten Anteile)
■ XML-Abfrage zur Bestimmung der Syntax des Zielformates (CONSTRUCT / return)
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
65 von 89
B. Transformationsregeln und XML-Abfragen
relationale
Datenbank
© M. Klettke, H. Meyer, K. Rege, ZHAW
66 von 89
Beispiel XQuery
■ Erzeugen der virtuellen „XML-Sicht“
XML
Datenabfrage
Sprache
feste
Transformationsregeln
School of Engineering
<hotel>
for $h in document("hotels.xml")//hotel
return <hotel name="{$h/@name}"> {
virtuelle
XML Sicht
for $z in $h/zimmertyp
where $z/@preis <= 150
benutzerdefiniertes
XML-Dokument
return <preis> {$z/@preis} </preis>
■ virtuelle „Sichtweise“ auf die Daten einer Datenbank in Form eines XML-Dokuments
}
</hotel>
■ An dieses virtuelle XML-Dokument werden XML-Abfragen gestellt.
■ XML-Abfragen über dieser XML-Sicht (z.B. XQuery)
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
67 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
68 von 89
C. Einsatz von Transformationsregeln und XSLT
Zusammenfassung
Zweistufiger Prozess
SQL
relationale
Datenbank
standardisiertes
XML Dokument
Abbildung
Abbildungdes
des
vollständigen
vollständigen
Datenbankinhaltes
Datenbankinhaltes
Abbildung
Abbildungvon
von
Abfrageergebnissen
Abfrageergebnissen
Einsatz
Einsatzindividueller
individueller
TransformationsTransformationsvorschriften
vorschriften
■ Ausgabe von Relationen als XML-Dokument
XSLT
■ Ausgabe von Abfrageergebnissen und Sichten als XML-Dokument
■ Abbildung von Datenbanktypen auf Typen von XML-Schemata und umgekehrt
1. Schritt: Ausgabe der Abfrage in XML-Syntax im festen Format, z.B.
<rowset>
<row no=´1´>
<Name>Hotel Huebner</Name>
<Kategorie>4</Kategorie>
■ ANSI-Standard SQL/XML
<Ort>Warnemuende</Ort>
</row>
■
</rowset>
Hersteller wie IBM, Oracle, Microsoft, Informix und Software AG beteiligt
2. Schritt: Einsatz von XSLT zur Auswahl der relevanten Teilinformationen und
Bestimmung der Syntax des Zielformates
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
69 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
70 von 89
Abfragesprache XQuery
■ XQuery = XML Query Language
■ Abfragesprache für XML-Daten
■
■
■
XML-Dokumente
XML-Datenbanken
andere XML-Quellen
3. XQuery
■ ein erweitertes XPath
■ gleich wie SQL (SFW) - mit XML Syntax
etwas von Beidem
■ Entstanden aus einer Reihe von früheren Abfragesprachen
■
XPath, SQL, OQL, XQL, XML_QL
■ Standard basiert auf XPath 2.0
■ Viele Datenbankhersteller haben Unterstützung von XQuery angekündigt
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
71 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
72 von 89
XQuery - Geschichte
XPath 2.0
■ XML Schema Unterstützung, wesentlich bessere typisierten Abfragemöglichkeiten
(XPath 1.0 nur node-set, boolean, number, string)
■ Ausdruck liefert Sequenz, hat Ordnung, ist flach, enthält einfache Typen oder Knoten,
kann Duplikate enthalten (XPath 1.0 kennt nur Knotenmengen)
■ Bereichsausdrücke in Prädikaten, expr TO expr, Sequenzoperationen, . . .
■ Variable oder Funktionsaufrufe (etwa document(url)) Pfadausdrücken voranstellen
■ Semantik von Vergleichsoperationen (Werte, Vergleiche mit Sequenzen,
Knotenidentität)
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
73 von 89
XQuery
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
74 von 89
Einführendes Beispiel
■ aktueller W3C Standard für XML- Abfragesprache
■
Variable $hotel wird (einzeln) an die
Variable $hotel wird (einzeln) an die
hotel-Elemente gebunden
hotel-Elemente gebunden
http://www.w3.org/TR/xquery/
■ basiert auf XPath 2.0 und sog. FLWR Konstrukten
<Hotelinformationen>
<Hotelinformationen>
<hotel
<hotel name="Hotel
name="Hotel Neptun"
Neptun" adrID="12">
adrID="12">
<zimmertyp
<zimmertyp typ="EZ"
typ="EZ" preis="120"
preis="120" währung="€"/>
währung="€"/>
<foto
href="neptun01.jpeg"/>
<foto href="neptun01.jpeg"/>
</hotel>
</hotel>
<hotel
<hotel name="Hotel
name="Hotel Hübner"
Hübner" adrID="14">
adrID="14">
<zimmertyp
<zimmertyp typ="EZ"
typ="EZ" preis="150"
preis="150" währung="€"/>
währung="€"/>
<zimmertyp
<zimmertyp typ="DZ"
typ="DZ" preis="180"
preis="180" währung="€"/>
währung="€"/>
</hotel>
</hotel>
<hotel
<hotel name="Pension
name="Pension Dräger"
Dräger" adrID="23">
adrID="23">
<foto
<foto href="bild-pd01.jpeg"/>
href="bild-pd01.jpeg"/>
<foto
href="bild-pd02.jpeg"/>
<foto href="bild-pd02.jpeg"/>
</hotel>
</hotel>
<Hotelinformationen>
<Hotelinformationen>
■ Basiskonstrukt: FLWR- Ausdruck, steht für:
■ for - let - where - return
■ for / let : geordnete Liste von Tupeln gebundener Variablen
■ where : eingeschränkte Liste von Tupeln gebundener Variablen
■ return : Ergebniskonstruktion, Instanzen des XML Query data model
document("hotellist.xml")//hotel
document("hotellist.xml")//hotel
for
for $hotel
$hotel in
in //hotel
//hotel
return
return {$hotel/foto}
{$hotel/foto}
XPath
XPath
photo-Element wird zu dem
photo-Element wird zu dem
Resultat hinzugefügt
Resultat hinzugefügt
<foto
<foto href="neptun01.jpeg"/>
href="neptun01.jpeg"/>
<foto
<foto href="bild-pd01.jpeg"/>
href="bild-pd01.jpeg"/>
<foto
href="bild-pd02.jpeg"/>
<foto href="bild-pd02.jpeg"/>
Resultat
■ Variablen: Beginnen mit einem $-Zeichen
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
75 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
76 von 89
for-Klausel
Geschachtelte for Klauseln
■ Für jedes Element der Ergebnismenge erfolgt eine (einzelne) Bindung an $var
■ for Klauseln können auch geschachtelt werden
<billighotels>
<billighotels> {{
for
for $h
$h in
in //
// hotel
hotel
return
return
for
$z
in
$h/zimmertyp[@preis
for $z in $h/zimmertyp[@preis <=
<= 100]
100]
return
return <hotel>
<hotel>
<name>
<name> {$h/@
{$h/@ name}
name} </
</ name>
name>
<preis>
<preis> {$z/@
{$z/@ preis}
preis} </
</ preis>
preis>
</
</ hotel>
hotel>
}}
</
</ billighotels>
billighotels>
■ Variablen für alle untergeordneten Ausdrücke sichtbar
■ Allgemeine Form
for $var in expr [, $var in expr ...]
1. Bindung
2. Bindung
for
for $hotel
$hotel in
in //hotel
//hotel
return
return {$hotel/foto}
{$hotel/foto}
3. Bindung
<hotel name="Hotel Neptun">
<hotel name="Hotel Neptun">
...
...
</hotel>
</hotel>
<hotel name="Hotel Hübner">
<hotel name="Hotel Hübner">
...
...
</hotel>
</hotel>
<billighotels>
<billighotels>
<hotel>
<hotel>
< name>...</ name>
< name>...</ name>
<preis>...</ preis>
<preis>...</ preis>
</hotel> ...
</hotel> ...
</ billighotels>
</ billighotels>
<hotel name="Pension Dräger">
<hotel name="Pension Dräger">
...
...
</hotel>
</hotel>
<foto href="neptun01.jpeg"/>
<foto href="neptun01.jpeg"/>
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd02.jpeg"/>
<foto href="bild-pd02.jpeg"/>
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
77 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
78 von 89
let Ausdruck
where Ausdruck
■ let-Ausdruck bindet Menge von Werten (Zuweisung), die bei Auswertung eines
Ausdruckes expr entstehen (als Ganze, als Liste) an eine Variable $var
■ Mit dem where-Ausruck kann die entstehende Lösungsmenge eingeschränkt werden
■ Allgemeine Form
■ Allgemeine Form
where expr
let $var := expr [, $var := expr ...]
for
for $hotel
$hotel in
in //hotel[@name
//hotel[@name == "Hotel
"Hotel Hübner"]
Hübner"]
let
let $zt
$zt :=
:= $hotel/zimmertyp
$hotel/zimmertyp
return
{$zt}
return {$zt}
Resultat
School of Engineering
for
for $hotel
$hotel in
in //hotel
//hotel
where
where $hotel/zimmertyp/@preis
$hotel/zimmertyp/@preis <=
<= 150
150
return
return {$hotel}
{$hotel}
<hotel
<hotel name="Hotel
name="Hotel Neptun">
Neptun">
<zimmertyp
<zimmertyp typ="EZ"
typ="EZ" preis="120"
preis="120" währung="€"/>
währung="€"/>
<foto
href="neptun01.jpeg"/>
<foto href="neptun01.jpeg"/>
</hotel>
</hotel>
<hotel
<hotel name="Hotel
name="Hotel Hübner">
Hübner">
<zimmertyp
<zimmertyp typ="EZ"
typ="EZ" preis="150"
preis="150" währung="€"/>
währung="€"/>
<zimmertyp
typ="DZ"
<zimmertyp typ="DZ" preis="180"
preis="180" währung="€"/>
währung="€"/>
</hotel>
</hotel>
Sequenz
Sequenzvon
vonzimmertyp-Elementen
zimmertyp-Elementen
<zimmertyp
<zimmertyp typ="EZ"
typ="EZ" preis="150"
preis="150" währung="€"/>
währung="€"/>
<zimmertyp
<zimmertyp typ="DZ"
typ="DZ" preis="180"
preis="180" währung="€"/>
währung="€"/>
© M. Klettke, H. Meyer, K. Rege, ZHAW
79 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
80 von 89
return Ausdruck
Berechnete Werte
■ return fügt das angegebene Element zum Resultat(-Set) hinzu
■ {} werden verwendet um Werte zu berechnen (entspricht value-of von XSLT)
■ Finde Hotels mit EZ billiger als 150 €
■ Allgemeine Form
return expr
for
for $hotel
$hotel in
in //hotel
//hotel
return
return {$hotel/foto}
{$hotel/foto}
<foto href="neptun01.jpeg"/>
<foto href="neptun01.jpeg"/>
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd02.jpeg"/>
<foto href="bild-pd02.jpeg"/>
School of Engineering
<hotelfotos>
<hotelfotos> {{
for
for $hotel
$hotel in
in //hotel
//hotel
return
return {$hotel/foto}
{$hotel/foto}
}}
</hotelfotos>
</hotelfotos>
<hotelfotos>
<hotelfotos>
<foto href="neptun01.jpeg"/>
<foto href="neptun01.jpeg"/>
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd02.jpeg"/>
<foto href="bild-pd02.jpeg"/>
</hotelfotos>
</hotelfotos>
for
for $hotel
$hotel in
in //hotel
//hotel
return
return <hotelphoto>
<hotelphoto>
{$hotel/foto}
{$hotel/foto}
</hotelphoto>
</hotelphoto>
<hotelfoto>
<hotelfoto>
<foto href="neptun01.jpeg"/>
<foto href="neptun01.jpeg"/>
</hotelfoto>
</hotelfoto>
<hotelfoto>
<hotelfoto>
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd01.jpeg"/>
</hotelfoto>
</hotelfoto>
<hotelfoto>
<hotelfoto>
<foto href="bild-pd02.jpeg"/>
<foto href="bild-pd02.jpeg"/>
</hotelfoto>
</hotelfoto>
© M. Klettke, H. Meyer, K. Rege, ZHAW
81 von 89
for
for $h
$h in
in //hotel
//hotel
return
return
for
$z
in
for $z in $h/zimmertyp
$h/zimmertyp
where
where $z/@typ
$z/@typ == "EZ"
"EZ" and
and $z/@preis
$z/@preis <=
<= 150
150
return
<hotel
return <hotel name="{$h/@name}">
name="{$h/@name}">
<preisEZ>{$z/@preis}</preisEZ>
<preisEZ>{$z/@preis}</preisEZ>
</hotel>
</hotel>
<hotel
<hotel name="Hotel
name="Hotel Neptun">
Neptun">
<preisEZ>120<preisEZ>
<preisEZ>120<preisEZ>
</hotel>
</hotel>
<hotel
<hotel name="Hotel
name="Hotel Hübner">
Hübner">
<preisEZ>150<preisEZ>
<preisEZ>150<preisEZ>
</hotel>
</hotel>
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
Bedingte Anweisungen
Verwendung von some and every
■ Bedingte Anweisungen in Abfragen
■ Der Existenz- und der All Quantor sind Bestandteil von XQuery
■ Allgemeine Form
■ Allgemeine Form
if (Bedingung) then <...> else <...>
[some ¦ every] var in expr-1 satisfies expr-2
for
for $h
$h in
in document("hotels.xml")//hotel
document("hotels.xml")//hotel
if
if ($h/foto)
($h/foto) then
then
return
return <hotel
<hotel name=
name= {$h/@name}
{$h/@name} foto
foto == {$h/phot/@href}
{$h/phot/@href} />
/>
for
for $h
$h in
in document("hotels.xml")//hotel
document("hotels.xml")//hotel
where
where some
some $z
$z in
in $hotel/zimmmer/typ
$hotel/zimmmer/typ satisfies
satisfies $z
$z == "EZ"
"EZ"
return
<hotel
return <hotel name=
name= {$h/@name}/>
{$h/@name}/>
<hotel
<hotel name="Hotel
name="Hotel Neptun"/>
Neptun"/>
<hotel
<hotel name="Hotel
name="Hotel Hübner"/>
Hübner"/>
<hotel
<hotel name="Hotel
name="Hotel Neptun"
Neptun" foto="neptun01.jpeg"/>
foto="neptun01.jpeg"/>
<hotel
<hotel name="Pension
name="Pension Dräger"
Dräger" foto
foto == "bild-pd01.jpeg"/>
"bild-pd01.jpeg"/>
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
82 von 89
83 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
84 von 89
Verwendung order by
id, idref und =>
■ Mit order by kann die Ausgabe geordnet werden
■ id liefert das Element mit der angegeben id
■ Mit "=>" kann einer idref gefolgt werden
■
■ Allgemeine Form
for
for $h
$h in
in document("hotels.xml")//hotel
document("hotels.xml")//hotel
order
order by
by $h/@name
$h/@name
return
<hotel
return <hotel name=
name= {$h/@name}/>
{$h/@name}/>
for
for $h
$h in
in document("hotels.xml")//hotel
document("hotels.xml")//hotel
let
let $a
$a == $h/@adrID
$h/@adrID =>
=> document("adressen.xml")/addressen
document("adressen.xml")/addressen
return
return <hotel
<hotel name=
name= {$h/@name}>
{$h/@name}>
$a
$a
</hotel>
</hotel>
<hotel
<hotel name="Hotel
name="Hotel Hübner"/>
Hübner"/>
<hotel
<hotel name="Hotel
name="Hotel Neptun"/>
Neptun"/>
<hotel
name="Pension
<hotel name="Pension Dräger"/>
Dräger"/>
© M. Klettke, H. Meyer, K. Rege, ZHAW
gleiches
gleiches
Dokument
Dokument
for
for $h
$h in
in document("hotels.xml")//hotel
document("hotels.xml")//hotel
return
return <hotel
<hotel name=
name= {$h/@name}>{id($h/@adrID)/addresse}</hotel>
{$h/@name}>{id($h/@adrID)/addresse}</hotel>
where ... order by expr
School of Engineering
eine neue Achse
<hotel
<hotel name="Hotel
name="Hotel Hübner">
Hübner">
<adresse>
<adresse> ....</adresse>
....</adresse>
<hotel>
<hotel>
...
...
85 von 89
Weitere Bestandteile von XQuery
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
86 von 89
Zusammenfassung XQuery
■ basiert auf XPath 2.0 und sog. FLWR Konstrukten
■
■ Anwendung von datentypspezifischen Operatoren
■ Funktionsaufrufe, neben Standardfunktionen Benutzerdefinierte Funktionen
for let where return
■ aktueller Vorschlag W3C für XML- Abfragesprache
■ bedingte Anweisungen, zur Steuerung der Auswertung von Ausdrücken
■ Test von Datentypen und Typumwandlung
■ Ähnliche Mächtigkeit wie SQL
■ aber (konzeptbedingt) kein JOIN
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
87 von 89
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
88 von 89
Literatur
■ Universität Rostock,Meike Klettke, Holger Meyer, Guido Rost,
■
www.xml-and-databases.com
■ eXist
■
http://exist.sourceforge.net/
■ W3C
■
http://www.w3.org/TR/xquery/
■ XQuery Tutorial
■
http://www.cafeconleche.org/slides/xmlsig/xquery/XQuery.html
School of Engineering
© M. Klettke, H. Meyer, K. Rege, ZHAW
89 von 89
Herunterladen