70
fbi h_da Datenbanken und XML Kapitel 6 Speicherung von XML in Datenbanken

Datenbanken und XML

Embed Size (px)

Citation preview

Page 1: Datenbanken und XML

fbi h_da

Datenbanken und XML Kapitel 6 Speicherung von XML in Datenbanken

Page 2: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-2

Abbildung von XML auf Datenbanken • Inhalt des Kapitels

– Speicherungsvarianten für XML-Dokumente • Textbasierte Speicherung • Strukturbasierte Speicherung • Native Speicherung

– Anfragen und Updates von XML-Daten in Datenbanksystemen – Status XML-Unterstützung in Datenbanksystemen – Performance-Aspekte

• Lernziele

– Verstehen der Grundprinzipien der verschiedenen Methoden – Einordnen der Methoden – Vor- und Nachteile erkennen – Verwendung

Page 3: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-3

Herausforderung • XML-Dokumente können für sehr verschiedene Anwendungen

eingesetzt werden: – Datenzentrierte Anwendungen – Dokumentzentrierte Anwendungen

Konsequenz: Dokumente unterscheiden sich stark je nach Anwendung

– Struktur vs. Inhalt – Regelmäßig vs. Unregelmäßig

• Problemstellungen

– Speicherung von XML-Dokumenten – Effiziente Verarbeitung von Anfragen auf den gespeicherten

Dokumenten bzw. Daten

Page 4: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-4

Anforderungen an die Speicherung • Ordnungserhaltende und verlustfreie Speicherung von XML-

Dokumenten

• Wiederherstellbarkeit der Dokumente (oder zumindest der Informationen aus den Dokumenten)

• Effizienter Zugriff auf XML-Dokumente oder Teile davon – Kurze Antwortzeiten für

• Anfragen • Änderungsoperationen

– Indexierungsverfahren – Transaktionsverwaltung – Unterstützung von XPath und XQuery

Page 5: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-5

Speicherungsvarianten für XML-Dokumente

• Speicherung in Nicht-XML-Datenbankmodellen – Textbasierte Speicherung – Strukturbasierte Speicherung

• „Native“ Speicherung – Benutzung eines (hierarchischen) XML-Datenbankmodells zur

Speicherung

Page 6: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-6

Textbasierte Speicherung • Das komplette XML-Dokument wird als Zeichenkette abgespeichert

– Datei im Dateisystem – CLOB (Character-Large-OBject) im Datenbanksystem oder (falls

unterstützt) XML-Datentyp

• Operationen auf Dokumenten als Ganzes sind sehr effizient – Lesen des kompletten Dokuments – Schreiben des kompletten Dokuments

• Zugriff mit feinerer Granularität erfordert zusätzliche Unterstützung

– Volltextindex – Pfadindex erfordert spezielle (neue) Indexstrukturen in Datenbanksystemen

Page 7: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-7

Einschub: Arten von Indexstrukturen • Wertindex

– indexiert atomare Werte eines XML-Dokumentes, etwa Elementinhalte oder Attributwerte

– Indexform für strukturierte Anteile eines XML-Dokumentes – aus dem relationalen DB-Bereich bekannt, z.B. B-Bäume oder

Hash-Indexe

• Volltextindex – indexiert einzelne Worte des Volltextes – Indexform für unstrukturierte Anteile eines XML-Dokumentes – aus dem Information-Retrieval-Bereich bekannt, z.B. invertierte

Liste

• Pfadindex – indexiert Teilstrukturen/Pfade in einem XML-Dokument – Indexform für semistrukturierte Anteile eines XML-Dokumentes

Page 8: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-8

Volltextindexe • Nicht nur Suche nach exaktem Auftreten der Begriffe möglich

– stichwortbasierte Suche und boolesches Retrieval – Mustersuche (mit regulären Ausdrücken)

• Verwendung von

– Statistischen, wortbasierten Verfahren • Stoppwortlisten • Streichen von selten vorkommenden Begriffen

– Linguistischen Verfahren

• Wortnormalisierung • Groß-, Kleinschreibung, Getrennt- und Zusammenschreibung, Umlaute • Stammformreduktion

– Wissensbasierten Verfahren

• Einsatz von Ontologien und Thesauren zur Suche nach Synonymen sowie Über- und Unterbegriffen

Page 9: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-9

Invertierte Liste als Volltextindex für ein XML-Dokument

Quelle: C. Türker, ETH Zürich

Page 10: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-10

Invertierte Liste als Volltextindex für mehrere XML-Dokumente

Quelle: C. Türker, ETH Zürich

Page 11: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-11

Pfadindexe • Strukturinformationen müssen aus dem Index erkennbar und

wiederherstellbar sein – Zuordnung des Markup zu den Inhalten sowie – Darstellung der hierarchischen Schachtelung und Anordnung der

Elemente/Attribute

• Besonders geeignet für Stichwortsuche unter Berücksichtigung der Struktur bzw. Pfaden

for $b in //book where fn:contains($b/title, "XML") return $b

Page 12: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-12

Kombinierter Pfad-/Volltextindex für ein XML-Dokument

Page 13: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-13

Bewertung der textbasierten Speicherung • 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

• Effizienz

– Zeichenkette muss beim Zugriff geparst werden aufwändig

– Keine Nebenläufigkeit beim Lesen und Schreiben keine Parallelität

• Einsatz – für dokumentzentrierte

XML-Dokumente – auch für semistrukturierte

Dokumente

Page 14: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-14

Abbildung von XML auf Datenbanken • Speicherungsvarianten für XML-Dokumente

Textbasierte Speicherung – Strukturbasierte Speicherung

• Automatische Abbildung • Benutzerdefinierte Abbildung

– Native Speicherung

• Anfragen und Updates von XML-Daten in Datenbanksystemen

• Status XML-Unterstützung in Datenbanksystemen

• Performance-Aspekte

Page 15: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-15

Strukturbasierte Speicherung • Motivation

– XML als Austauschformat • vorgegebenes XML-Schema

– XML-Inhalte sollen in einer herkömmlichen Datenbank gespeichert werden

– Verzicht auf nativen Zugriff wird toleriert

• Ansätze – Automatische Abbildung

• DB-Schema möglichst automatisch aus XML-Schema generieren und dabei durch Schemabeschreibung gegebene Strukturinformationen möglichst gut ausnutzen

– Benutzerdefinierte Abbildung • Spezifikation individueller Abbildungsregeln

Page 16: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-16

Strukturbasierte Speicherung: Automatische Abbildung

• Grundsätzliches Vorgehen – XML-Schema in eine Baumdarstellung überführen – Knoten sind die Elementtypen, Attribute, etc. – Kanten sind die Schachtelungsbeziehungen der Elementtypen und

deren Restriktionen – Baum traversieren und Knoten und Kanten anhand von Regeln in

DB-Tabellen umwandeln

• Regeln zur Umsetzung von Elementen (Auswahl) – Sequenz von Elementen Spalten einer Tabelle – Alternative von Elementen Spalten einer Tabelle – Elemente mit minOccurs = 0 Spalte mit Nullwerten – Elemente mit maxOccurs > 1 Kollektion(?) von Spalten – …

Page 17: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-17

Abbildung auf relationale Datenbanken

• Problem: Abbildung von Tupel- und Kollektionstypen – Aufteilung auf zusätzliche Relationen Dokumenrekonstruktion

ineffizient

HotelID Name Adresse Preise

H0001 Hotel Hübner A0001 P0001

AdresseID PLZ Ort ...

A0001 18119 Warnemünde

PreiseID Einzelzimmer Doppelzimmer

P0001 198 299

Hotel:

Preise:

Adresse:

<Hotel> <HotelID>H0001</HotelID> <Name>Hotel Hübner</Name> <Adresse>

<PLZ>18119</PLZ> <Ort>Warnemünde</Ort> <Strasse>Seestrasse</Strasse> <Nr>12</Nr>

</Adresse> <Preise>

<Einzelzimmer> 198 </Einzelzimmer> <Doppelzimmer> 299 </Doppelzimmer>

</Preise> </Hotel>

Page 18: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-18

Abbildung auf objektrelationale (oder objektorientierte) Datenbanken

• „Natürliche“ Abbildung auf Tupeltypen, Kollektionstypen

HotelID Name <Adresse> <Preise>

PLZ Ort ... Einzelzimmer Doppelzimmer

H0001 Hotel Hübner 18119 Warnemünde 198 299

Hotel:

<Hotel> <HotelID>H0001</HotelID> <Name>Hotel Hübner</Name> <Adresse>

<PLZ>18119</PLZ> <Ort>Warnemünde</Ort> <Strasse>Seestrasse</Strasse> <Nr>12</Nr>

</Adresse> <Preise>

<Einzelzimmer> 198 </Einzelzimmer> <Doppelzimmer> 299 </Doppelzimmer>

</Preise> </Hotel>

Page 19: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-19

Abbildung auf objektrelationale (oder objektorientierte) Datenbanken

• Problemfälle bei der Abbildung – Alternativen – Rekursive Datendefinitionen – Elementordnungen – Mixed Content – Any-Type

isbn <front> body reference

title {author} edition publisher

first second e-mail

book:

Page 20: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-20

Abbildung von Alternativen • XML erlaubt die Angabe von Alternativen • Beispiel:

• Speicherungsvarianten – Aufspaltung der Alternativen in separate Tabellen - Konsequenzen? – Jede Alternative als separate Tabellenspalte speichern – Speicherung der Alternativen textbasiert oder Verwendung einer

Tabellenspalte vom Typ XML (siehe native Speicherung)

<xs:complexType name="unterkunftT" …> <xs:choice> <xs:element name="Hotel" type="hotelT"/ <xs:element name="Pension" type="pensionT"/> <xs:element name="Campingplatz" type="campingplatzT"/> </xs:choice> …

<Unterkunft> <Pension>

<Name>Zum Kater</Name> <Zimmer>42</Zimmer>

</Pension> </Unterkunft> <Unterkunft>

<Hotel> <Kategorie>4</Kategorie> <Name>Hotel Hübner</Name>

</Hotel> </Unterkunft> …

Page 21: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-21

Abbildung von rekursiven Datendefinitionen

• Definitionen in XML-Schema können rekursiv sein • Beispiel:

• Vorgehensweise: – Aufspaltung in separate Tabellen – Verwendung von Primär-/Fremdschlüsseln in RDBMS – Verwendung von Referenztypen in ORDBMS

<xs:element name="node"> <xs:complexType> <xs:sequence> <xs:element name= "nodeId" …/> <xs:element name= "nodeContent" …/> <xs:element name= "childs" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element ref= "node" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element>

node <childs>

node <childs>

<node> ... <childs> <node> ... <childs> ... </childs> </node> </childs> </book>

Page 22: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-22

Abbildung von Elementordnungen • Reihenfolge kann von Bedeutung sein • In diesen Fällen: Einführung einer zusätzlichen Spalte

• Beispiel:

<Buch> <Kapitel>Einführung</Kapitel> <Kapitel>Theoretische Grundlagen</Kapitel> <Kapitel>Konzeption</Kapitel> <Kapitel>Beispiel</Kapitel> <Kapitel>Zusammenfassung</Kapitel> </Buch>

Ordnung Kapitel

1 Einführung

2 Theoretische Grundlagen

3 Konzeption

4 Beispiel

5 Zusammenfassung

Page 23: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-23

Abbildung von Mixed Content – 1(2)

Ordnung CLOB Bahn Auto 1 Sie können unser Haus auf

verschiedenen Wegen erreichen:

NULL NULL

2 NULL per Bahn: 1 km ab Bahnhof Warnemünde

NULL

3 NULL NULL per Auto: 19 km ab Autobahn A19 Rostock-Berlin

4 Sie finden uns direkt an der Uferpromenade.

NULL NULL

<anreisebeschreibung> Sie können unser Haus auf verschiedenen Wegen erreichen: <bahn>per Bahn: 1 km ab Bahnhof Warnemünde</bahn> <auto>per Auto: 19 km ab Autobahn A19 Rostock-Berlin</auto>Sie finden uns direkt an der Uferpromenade.

</anreisebeschreibung>

Page 24: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-24

Abbildung von Mixed Content – 2(2) • Abbildung auf flache Tabellen nur sehr schlecht geeignet Rückgriff auf textbasierte Speicherung für Teile des Dokuments

Name Anreisbeschreibung

Sie können unser Haus auf verschiedenen Wegen erreichen: <bahn>per Bahn: 1 km ab Bahnhof Warnemünde</bahn> <auto>per Auto: 19 km ab Autobahn A19 Rostock-Berlin</auto>Sie finden uns direkt an der Uferpromenade.

Page 25: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-25

Abbildung von ANY • Beispiel:

im Element <zusatzinformationen> können beliebige Inhalte sowie alle im XML-Schema (global) deklarierten Elemente auftreten

• Abbildung auf ein Datenbankschema? Kann häufig erst auf der Instanzenebene entschieden werden,

welche Speicherungsstruktur geeignet ist.

<xs:element name="zusatzinformationen"> <xs:complexType mixed="true"> <xs:sequence> <xs:any minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>

<zusatzinformationen> Am 31.12. stehen in <ort>Warnemünde</ort> keine Parkplätze zur Verfügung. <bahn>Die S-Bahn verkehrt an diesem Tag nach einem Sonderfahrplan im 7,5-Minuten-Takt.</bahn>

</zusatzinformationen>

Page 26: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-26

Anfragen bei strukturbasierter Speicherung mit automatischer Abbildung

• Datenbankanfragen – Struktur der Datenbanken muss bekannt sein – SQL-Anfragen

• XML-Anfragen

– Prozess der Abbildung der XML-Dokumente auf Datenbanken muss protokolliert sein

– Datenbankanfrage für XML-Anfrage muss (automatisch) generiert werden können

– Ergebnisse für die XML-Anfragen muss generiert werden können (Labeling in der DB-Engine)

Page 27: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-27

Vor- und Nachteile strukturbasierter Speicherung mit automatischer Abbildung

• Vorteile – Anfragen, Datentypen, Aggregatfunktionen, Sichten (volle

relationale und SQL-Mächtigkeit) – Integration in andere Datenbanken bei der Speicherung

strukturierter Daten

• Nachteile – Grosses Schema, schwach gefüllte Datenbanken (viele Nullwerte) – Keine flexiblen Datentypen, Speicherung von Alternativen

problematisch – Wenig Flexibilität bei Anfragen

• Keine Volltextoperationen (Information-Retrieval-Anfragen) bei der Speicherung semi- und unstrukturierter Daten

• Häufig kein nativer Zugriff mehr möglich

Page 28: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-28

Bewertung der strukturbasierten Speicherung mit automatischer Abbildung

• 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

• Effizienz – hoch durch Einsatz der DB-

Engine (für datenzentrierte XML-Dokumente)

• Einsatz

– für datenzentrierte XML-Dokumente

Page 29: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-29

Abbildung von XML auf Datenbanken • Speicherungsvarianten für XML-Dokumente

Textbasierte Speicherung – Strukturbasierte Speicherung

Automatische Abbildung • Benutzerdefinierte Abbildung

– Native Speicherung

• Anfragen und Updates von XML-Daten in Datenbanksystemen

• Status XML-Unterstützung in Datenbanksystemen

• Performance-Aspekte

Page 30: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-30

Benutzerdefinierte Abbildung • Bei allen bisherigen Methoden konnte die Art der Speicherung in der

Datenbank nicht beeinflusst werden

• Benutzerdefinierte Abbildungen ermöglichen dem Nutzer die Steuerung, welche Speicherungsstruktur zum Einsatz kommt

• Struktur der XML-Dokumente und Datenbankschema können unabhängig voneinander entworfen werden (und relativ autonom sein)

• Auch möglich: Speicherung von XML-Dokumenten in existierenden Datenbanken

Page 31: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-31

<Hotel url="www.hotel-huebner.de"> <HotelID>H0001</HotelID> <Hotelname>Hotel Hübner</Hotelname> <Adresse>

<PLZ>18119</PLZ> <Ort>Warnemünde</Ort> <Strasse>Seestrasse</Strasse> <Nr>12</Nr>

</Adresse> <Preise>

<Einzelzimmer> 198 </Einzelzimmer> </Preise>

</Hotel>

<?xml version="1.0" encoding="UTF-8"?> <xs:schema … <xs:element name="Hotel"> <xs:complexType> <xs:sequence> <xs:element name="Hotelname" type="xs:string"> <xs:annotation> <xs:appinfo> <tableMapping> <table>Hotelpreise</table> <column>Name<column> </tableMapping> </xs:appinfo> </xs:annotation> </xs:element> <xs:element name= …

Benutzerdefinierte Abbildung

Hotel_URL Name Einzelzimmer

www.hotel-huebner.de Hotel Hübner 198

Hotelpreise: • state of the art Variante: Annotation im XML-Schema (nicht standardisiert)

Page 32: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-32

Anfragen mit benutzerdefinierter Abbildung

• Datenbankanfragen – Struktur der Datenbanken muss bekannt sein – SQL

• XML-Anfragen nur sehr eingeschränkt

– Protokollierung des Abbildungsprozesses von XML-Dokumenten auf Datenbanken

– Alle für die Anfrage relevanten Daten müssen gespeichert sein (verlustfreie Abbildung)

Page 33: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-33

Bewertung der strukturbasierten Speicherung mit benutzerdefinierter Abbildung

• Schemabeschreibung – zur Speicherung erforderlich

• Dokumentrekonstruktion

– meist nicht möglich (Voraussetzung: Protokollierung des Abbildungsprozesses, vollständige Abbildung)

• Anfragen

– Datenbankanfragen – XML-Anfragen in

Ausnahmefällen möglich

• Weitere Besonderheiten – Integration in bestehende

Datenbanken möglich

• Effizienz – hoch durch Einsatz der DB-

Engine (insbesondere für datenzentrierte XML-Dokumente)

• Einsatz

– für datenzentrierte XML-Dokumente

Page 34: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-34

Zwischenfazit: Speicherungsvarianten Verschiedene Verfahren zur Speicherung von XML-Dokumenten • Textbasierte Verfahren

– Speicherung des ganzen XML-Dokuments als Zeichenkette – Ggf. Indexierung mit Volltext- oder Pfadindexes

• Strukturbasierte Verfahren

– Erkennen und Analysieren der Struktur der XML-Dokumente – Ableiten eines DB-Schemas aus dem XML-Schema

Hybride Verfahren

– „Strukturierte“ Anteile des XML-Dokuments auf relationale oder objektrelationale Strukturen abbilden

– „Unstrukturierte“' Anteile textbasiert speichern

Page 35: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-35

Abbildung von XML auf Datenbanken • Speicherungsvarianten für XML-Dokumente

Textbasierte Speicherung Strukturbasierte Speicherung – Native Speicherung

• Anfragen und Updates von XML-Daten in Datenbanksystemen

• Status XML-Unterstützung in Datenbanksystemen

• Performance-Aspekte

Page 36: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-36

Native Speicherung • Terminus „nativ“ ist nicht klar definiert, i.a. versteht man darunter

– die adäquat für das Datenmodell ist – die transparent für den Nutzer ist – „Verarbeitungsmodell = Speichermodell“

• Nutzung hierarchischer Speicherungsstrukturen in DBMS

– NF2-Datenmodell – hierarchisches Datenbankmodell – objektorientiertes Datenbankmodell

• Gelegentlich wird auch die Speicherung als XML-Type (gemäß des

SQL/XML-Standards) als „nativ“ bezeichnet

Page 37: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-37

SQL/XML Standard – 1(2) • Zunächst offene Arbeitsgruppe (beteiligt u.a. Hersteller wie IBM,

Oracle, Microsoft, Informix und Software AG) – inzwischen Teil des SQL-Standards und dessen Normierungsprozesses

• Zielsetzung: Mapping zwischen SQL- und XML-Konzepten • Wichtige Meilensteine

– SQL/XML:2003 (Bestandteil von SQL:2003) ISO/IEC 9075-14:2003 Information technology – Database languages – SQL – Part 14: XML-Related Specifications, (SQL/XML)

– SQL/XML:2006 (Bestandteil von SQL:2006) ISO/IEC 9075-14:2006 Information technology – Database languages – SQL – Part 14: XML-Related Specifications, (SQL/XML)

– in der 3. (2008) und 4. Version (2011) nur noch Detailänderungen – SQL/XML:2011 (Bestandteil von SQL:2011) ISO/IEC 9075-14:2011

Information technology – Database languages – SQL – Part 14: XML-Related Specifications, (SQL/XML)

Page 38: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-38

SQL/XML Standard – 1(2) SQL/XML-Standard definiert: 1. Neuer Basisdatentyp XML

– ermöglicht Speicherung von XML-Werten in Tabellenspalten – XML-Werte vom Typ

• XML (DOCUMENT) ≡ XML-Dokument • XML (CONTENT) ≡ XML-Fragment • XML (SEQUENCE) ≡ Sequenz von XML-Knoten • Optionale, zweite Typisierungsebene

– UNTYPED – ohne Schema – XMLSCHEMA – mit Schema – ANY – mit oder ohne Schema XML ( DOCUMENT (UNTYPED) ) etc.

2. Funktionen zur Abfrage von XML-Daten

→ nächster Abschnitt 3. XML-Publishing-Funktionen

→ Kapitel: Generierung von XML aus Datenbanken

ID Autorennamen

123 <Autor>Jim Beam</Autor>

124 <Autor>Jack Beam</Autor> <Autor>Jim Beam</Autor>

Page 39: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-39

Bewertung der „nativen“ Speicherung

• Schemabeschreibung – i.a. nicht erforderlich

• Dokumentrekonstruktion

– problemlos möglich (Dokumentstruktur bleibt erhalten)

• Anfragen

– XML-Anfragen – Information Retrieval

Anfragen auch möglich (abhängig von Index-Unterstützung)

• Weitere Besonderheiten – Transparenter Zugriff

• Effizienz

– hoch für Abfragen auf einem XML-Dokument

– Qualität des XPath/XQuery-Optimizer?

– Abfragen über mehrere Dokumente? (Indexierung!)

• Einsatz – für datenzentrierte XML-

Dokumente – auch für semistrukturierte

XML-Dokumente

Page 40: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-40

Abbildung von XML auf Datenbanken • Speicherungsvarianten für XML-Dokumente

Textbasierte Speicherung Strukturbasierte Speicherung Native Speicherung

• Anfragen und Updates von XML-Daten in Datenbanksystemen

• Status XML-Unterstützung in Datenbanksystemen

• Performance-Aspekte

Page 41: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-41

Anfragen und Updates von XML-Daten XQuery(XPath)-Anfragen in Datenbanksystemen • Separates XQuery-Interface – Konsequenz? Integration von XQuery-Anfragen in SQL:

– SQL/XML-Funktionen: XMLQUERY, XMLTABLE, XMLEXISTS

• XMLQUERY – Integration von XQuery-Anfragen im SELECT-Statement

• XMLTABLE – Ermöglicht mit Hilfe von XQuery-Anfragen XML-Daten abzufragen

und als SQL-Relation zurückzugeben, die dann beispielsweise als Input für die FROM-Klausel dienen

• XMLEXISTS – Gibt als Ergebnis einer XQuery-Anfrage false zurück, falls das

Ergebnis der XQuery-Anfrage leer ist, andernfalls true typischerweise in der WHERE-Klausel verwendet

Page 42: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-42

Anfragen und Updates von XML-Daten • Beispiel:

• XMLQUERY

select id, xmlquery('$c/student/matriculation_number' passing stud_data as "c") as "result" from students where modified >= '2007-01-01';

create table students ( id int primary key, created date, modified date, stud_data xml );

<student> <matriculation_number>1067</matr… <name>… <place_of_birth>Hamburg</place… <adress> <city>Darmstadt</city> … </adress> </student>

id result

67 <matriculation_number>1067</matriculation_number>

987 <matriculation_number>2012</matriculation_number>

XMLQUERY (<XQuery-Expression> [ PASSING <Argument-Liste> ] …

)

Page 43: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-43

Weiteres Beispiel

ID movie

42 <movie> <title>An American Werewolf in London</title> <yearReleased>1981</yearReleased> … </movie>

43 <movie> <title>Animal House</title> <yearReleased>1978</yearReleased> … </movie>

… Quelle: J. Melton, S. Buxton: Querying XML

movies_xml

Page 44: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-44

Anfragen und Updates von XML-Daten • XMLEXISTS

– gleiche Syntax wie XMLQUERY

• XMLTABLE

select xmlquery('$c/student/matriculation_number/text()' passing stud_data as "c") as "result" from students where xmlexists('$c/student[adress/city=place_of_birth]' passing stud_data as "c");

result

1067

2012

select result.stadt, count(*) as "Anzahl" from students, xmltable ('$c/student' passing stud_data as "c" columns stadt varchar(20) path 'adress/city') as result group by result.stadt;

STADT Anzahl

Darmstadt 5469

Frankfurt 1980

XMLTABLE (<XQuery-Expression> [ PASSING <Argument-Liste> ] COLUMNS <XML-Table-Column-Definition>

)

Page 45: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-45

Abbildung von XML auf Datenbanken Speicherungsvarianten für XML-Dokumente

Anfragen und Updates von XML-Daten in Datenbanksystemen

• Status XML-Unterstützung in Datenbanksystemen

– Generelles – Oracle – DB2 – Tamino

• Performance-Aspekte

Page 46: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-46

XML-Unterstützung in Datenbanksystemen

Vorbemerkung • XML-Unterstützung in relationalen / objektrelationalen Datenbank-

systemen (immer) noch in Entwicklung • Angaben sind deshalb immer Versionsabhängig!

Ziele • Mapping zwischen den bisher vermittelten grundsätzlichen Ansätzen

und der heute existierenden Umsetzung in Produkten herstellen • Eindruck über Status Quo der Unterstützung von XML in

(ausgewählten) Datenbanksystemen vermitteln (Oracle, DB2)

Ziel ist es NICHT • Detailkenntnisse über proprietäre Ansätze einzelner Hersteller zu

vermitteln …

Page 47: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-47

XML-Unterstützung in Datenbanksystemen

Generelles • Anfangsphase (ca. 1999-2003): Entwicklung / Zukauf von

Zusatzprodukten dadurch „aufgesetzte“, vielfach nicht performante Lösungen

• Integrationsphase (ca. 2004-2007) – Integration der Zusatzprodukte bzw. Integration in das native

Datenbanksystem performantere Lösungen aber: oft Koexistenz sowohl der Zusatzprodukte als auch der nativen

Lösungen → Verwirrung, Inkompatibilität etc. • Aktuell (seit ca. 2008)

– volle Unterstützung der Standards (SQL/XML, XQuery) – relativ „nahtlose“ Integration in relationale DBMS

Betrachtet • Oracle • IBM DB2 • Tamino (Software AG)

Page 48: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-48

Oracle – Einführung • vor Oracle 10g: XML Developer's Kit (Oracle XDK)

– bündelt verschiedene XML-Funktionalitäten zum Lesen, Manipulieren, Transformieren und Anzeigen von XML-Dokumenten

– bis Oracle 9i, Release 1: separate Software – ab Oracle 9i, Release 2: gehört zum Oracle-Produkt

• seit Oracle 9i Release 2 (2001): Verschiedene Möglichkeiten zur Speicherung von XML

• seit Oracle 10g Release 2 (2004): XQuery-Unterstützung (außerdem Vermarktung als „Oracle XML DB“ mit „nativer“ Speicherung

• seit Oracle 11g (2007): Binary XML als neues Speicherformat & XML Index (Schwerpunkt: Performance-Verbesserungen)

• seit Oracle 12c (aktuelles Release, 2013): XQuery Update (sehr spät!) und XQuery Full Text (Vorreiter!)

Page 49: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-49

Oracle – Speicherung von XML • XML-Type: Speicherung als CLOB – deprecated seit Oracle 12c

– mit oder ohne Schema möglich – verschiedene Index-Typen können definiert werden (Volltextindex,

Pfadindex, Wert-/Funktionsindex) • XML-Type: Abbildung auf (objekt-)relationale Struktur

(strukturbasierte Speicherung) – nur mit Schema – Default-Mapping oder benutzerdefinierte Abbildung durch

Annotation des XML-Schemas • technisch: „Schema registrieren“

dabei wird Mapping erzeugt, d.h. objektrelationale Struktur erzeugt außerdem: Metainformationen über das Dokument, u.a.

Elementreihenfolge u.ä. werden ebenfalls automatisch erzeugt (DOM Fidelity) und gespeichert

• XML-Type: Binary XML – Anwendungsszenario: kein festes XML-Schema Speicherung in (kompakten) Binärformat

Page 50: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-50

Oracle – Speicherung von XML: Beispiel – 1(4)

• XML-Type: Speicherung als CLOB

• Anmerkung: wenn das eingefügte XML-Dokument beim Einfügen gegen ein XML-Schema geprüft werden soll, muss dieses Schema vorher (mit PL/SQL) im XML-Repository eingetragen werden.

insert into students values (22, '2006-11-25', '2006-12-06', xmltype('<student gender="male"> <first_name>Markus</first_name>...</student>') );

create table students ( id int primary key not null, created date, modified date, student xmltype ) xmltype column student store as clob;

Page 51: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-51

Oracle – Speicherung von XML: Beispiel – 2(4)

• XML-Type: Abbildung auf (objekt-)relationale Struktur

• Default-Mapping oder selbstdefiniertes Mapping (Annotation des XML-Schemas)

create table students ( id int primary key not null, created date, modified date, student xmltype ) xmltype column student xmlschema http://www.oracle.com/student.xsd element "student";

Page 52: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-52

Oracle – Speicherung von XML: Beispiel – 3(4)

• Alternative: Explizite relationale Speicherung

create table adress ( id int primary key not null, street varchar(128), street_number varchar(128), zipcode varchar(5), city varchar(128) );

insert into adress select id, extractValue(student,'/student/adress/street'), extractValue(student,'/student/adress/street_number'), extractValue(student,'/student/adress/zipcode'), extractValue(student,'/student/adress/city') from students;

Page 53: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-53

Oracle – Speicherung von XML: Beispiel – 4(4)

• XML-Type: Speicherung als Binary XML

• Anmerkung: seit Oracle 12c ist Binary XML der default, d.h. wird verwendet, wenn nur angegeben wird:

insert into students values (22, '2006-11-25', '2006-12-06', xmltype('<student gender="male"> <first_name>Markus</first_name>...</student>') );

create table students ( id int primary key not null, created date, modified date, student xmltype ) xmltype column student store as binary xml;

create table students ( id int primary key not null, created date, modified date, student xmltype);

Page 54: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-54

Abbildung von XML auf Datenbanken Speicherungsvarianten für XML-Dokumente

Anfragen und Updates von XML-Daten in Datenbanksystemen

• Status XML-Unterstützung in Datenbanksystemen

Generelles Oracle – DB2 – Tamino

• Performance-Aspekte

Page 55: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-55

IBM DB2 – Einführung • schon sehr früh: DB2 XML-Extender (Aufsatz)

– bis Version 8.2: keine wirklich integrierte Unterstützung, sondern Verwendung des XML Extender bzw. des Text-Extender mit rudimentärer SQL/XML-Unterstützung

• seit Version 9 (2006)

– XML-Unterstützung komplett neu – XML-Datentyp mit „nativer“ Speicherung („pureXML“) – SQL/XML und XQuery – seit Version 9.5 (2007) auch XQuery Update

• Full Text nicht mit XQuery-Funktionen sondern (deutlich umfangreicher,

aber proprietär) mit DB2 Text Search

Page 56: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-56

DB2 – Speicherung von XML: Beispiel – 1(3)

• XML-Type: Speicherung „nativ“ (hierarchisch) – mit oder ohne Schema möglich – verschiedene Index-Typen können definiert werden (Volltextindex,

Pfadindex, Wert-/Funktionsindex) – Beispiel:

– Anmerkung: wenn das eingefügte XML-Dokument beim Einfügen gegen ein XML-Schema geprüft werden soll, muss dieses Schema vorher im XML-Repository eingetragen werden.

create table students ( id int primary key not null, created date, modified date, student xml );

insert into students values (22, '2006-11-25', '2006-12-06', '<student gender="male"> <first_name>Markus</first_name>...</student>') );

Page 57: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-57

DB2 – Speicherung von XML: Beispiel – 2(3)

• Alternative: Abbildung auf (objekt-)relationale Struktur – manuelle Spezifikation durch annotiertes XML-Schema

create table adress_table ( id int primary key not null, street varchar(128), street_number varchar(128), zipcode varchar(5), city varchar(128) ); <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:db2-xdb="http://www.ibm.com/xmlns/prod/db2/xdb1“xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="adress"> <xs:complexType> <xs:sequence> <xs:element name="street" type="xs:string"> <xs:annotation> <xs:appinfo> <db2-xdb:rowSetMapping db2-xdb:locationPath="/adress/street"> <db2-xdb:rowSet>adress_table</db2-xdb:rowSet> <db2-xdb:column>street</db2-xdb:column> </db2-xdb:rowSetMapping> </xs:appinfo> </xs:annotation> </xs:element> <xs:element name= …

Page 58: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-58

DB2 – Speicherung von XML: Beispiel – 3(3)

• Fortsetzung: Abbildung auf (objekt-)relationale Struktur – Nach Registrierung des annotierten Schemas …

– … können XML-Dokumente eingefügt werden, die dabei nach den

Annotationsregeln strukturbasiert gespeichert werden (Dekomposition, shredding)

register xmlschema adress.xsd from c:\adress.xsd as adress_schema complete enable decomposition;

decompose xml document c:\a1.xml xmlschema adress_schema validate;

Page 59: Datenbanken und XML

fbi h_da DB2: Speicherung von XML: Architektur – 1(3)

• Exkurs Speicherstrukturen: – LOB-Daten werden (ab einer gewissen Größe) außerhalb der

(Basis-)Tabelle gespeichert

Uta Störl Datenbanken und XML − WS 2014/15 7-59

Quelle: K. Küspert / Ch. Koch, Uni Jena, 2013

Page 60: Datenbanken und XML

fbi h_da DB2: Speicherung von XML: Architektur – 2(3)

• Native Speicherung von XML in DB2 (pureXML) – Die XML-Speicherstrukturen in DB2 bei nativer Speicherung sind

denen der LOB-Speicherung sehr ähnlich, wenn auch etwas komplexer (siehe nächste Folie)

Uta Störl Datenbanken und XML − WS 2014/15 7-60

Quelle: K. Küspert / Ch. Koch, Uni Jena, 2013

Page 61: Datenbanken und XML

fbi h_da DB2: Speicherung von XML: Architektur – 3(3)

• Native Speicherung von XML in DB2 (pureXML) im Detail – im Gegensatz zu LOB-Daten werden XML-Dokumente nur bis zu

einer bestimmten Größe (ca. 16 KB) innerhalb einer Zeile in der XML-Auxiliary-Tabelle gespeichert

– übersteigt ein XML-Dokument diese, wird es in kleinere Teilbäume zerlegt, die wiederum jeweils in eigenen Zeilen gespeichert werden

Uta Störl Datenbanken und XML − WS 2014/15 7-61

Quelle: K. Küspert / Ch. Koch, Uni Jena, 2013

Page 62: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-62

Abbildung von XML auf Datenbanken Speicherungsvarianten für XML-Dokumente

Anfragen und Updates von XML-Daten in Datenbanksystemen

• Status XML-Unterstützung in Datenbanksystemen

Generelles Oracle DB2 – Tamino

• Performance-Aspekte

Page 63: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-63

Tamino (Software AG) – Speicherung von XML

• Tamino verwendet eine „native“ Speicherungsstruktur für XML

• Speicherungsalternativen – Speicherung von wohlgeformten XML-Dokumenten ohne

Schemadefinition – Speicherung von schemavaliden XML-Dokumenten

• Möglichkeiten zum Zugriff

– Programmgesteuert bspw. über DCOM-Komponenten – Ad-Hoc-Anfragen mit Query Tool des X-Plorer

• Besonderheiten

– Viele Funktionalitäten in Richtung „Content Management mit XML“ Positionierung in diesem Markt

Page 64: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-64

Zusammenfassung Oracle DB2 Tamino

XML-Speicherung

XML-Datentyp (Ablage als CLOB, Binary oder strukturbasiert)

(Ablage „nativ“ oder strukturbasiert)

entfällt, da „native“ Speicherung

XML-Abbildung auf rel. DB

Automatisch oder manuell (annotiertes XML-Schema)

manuell annotiertes XML-Schema

entfällt

Anfragen und Updates

Anfragen SQL-Methoden mit XPath und/oder XQuery

XPath, XQuery, Tamino X-Query

Full Text XQuery Full Text (proprietär) (proprietär)

XQuery Update

Generierung von XML aus rel. Daten

SQL/XML SQL/XML entfällt

Page 65: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-65

Abbildung von XML auf Datenbanken Speicherungsvarianten für XML-Dokumente

Anfragen und Updates von XML-Daten in Datenbanksystemen

Status XML-Unterstützung in Datenbanksystemen

• Performance-Aspekte

Page 66: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-66

Performance: XML-Benchmarks Ziel: Vergleich von Systemen • bekannte Benchmarks

– XMark (Schmidt et.al: Niederlande) – XOO7 (Nambiar et al.: University of Singapore, Arizona State

University) – XMach-1 (Böhme, Rahm: Universität Leipzig)

Vorgehensweise: • definieren Umgebungen für Benchmark-Tests, bestehend aus

– gegebenen XML-Dokumenten oder – Methoden zum Generieren von XML-Dokumenten mit bestimmten

Eigenschaften – Menge von XQuery-Anfragen – teilweise Updates

• Bewertet wird der Durchsatz in den einzelnen getesteten Systemen (Metrik: XML queries per second)

Page 67: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-67

Performance: Auswahl der geeigneten Speicherform

• Beispiel: – Join zwischen XML-Dokumenten (Q1) – Join zwischen relationalen und XML-Daten (Q2) – verschiedene Speichervarianten in Oracle10g

Quelle: Trautmann (2007)

Page 68: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-68

Performance: Anfrageoptimierung • Speicherung von XML-Daten stellt DBMS-Anfrageoptimierung vor sehr

große(!) Herausforderungen

• Derzeit: Vielfältige Möglichkeiten Anfragen zu formulieren – beispielsweise können Joins zwischen Daten sowohl im XML- als auch im relationalen Kontext ausgeführt werden Teilweise noch sehr große riesige Performance-Unterschiede Anwendungsentwicklung mit Datenbanken und XML: messen!!!

Page 69: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-69

Zusammenfassung • alle Systeme haben die „Datenbankvorteile“ gegenüber dem

Dateisystem, z.B.: – Datensicherheit, Konsistenztests, Indizierung, Anfragerealisierung,

Optimierung, und viele mehr

• Wahl des Systems hängt von aktuellen Anwendungsanforderungen ab • hier dargestellte Eigenschaften stellen qualitative Kriterien dar (diese

nähern sich aber durch die Standardisierung an!) • Benchmarks versuchen quantitative Vergleiche

• häufig aber auch: setzt eine Firma / ein Projekt schon ein DBMS ein,

wird dieses dann auch häufig auch für die Speicherung der XML-Dokumente verwendet

Page 70: Datenbanken und XML

fbi h_da

Uta Störl Datenbanken und XML − WS 2014/15 7-70

Datenbanken und XML

XML-Grundlagen

XML-Verarbeitung

XML-Anfragesprachen

Speicherung von XML in Datenbanken

• Generierung von XML aus Datenbanken