Title: XML und Datenbanken
1XML und Datenbanken
- Peter Brezany
- Institut für Softwarewissenschaften
- Universität Wien
2Inhalt
- Motivation
- XML Basiswissen
- DTD, XML Schema
- Wohlgeformtheit und Gültigkeit
- Klassifikation von XML Dokumenten
- XML/DB
- Anforderungen
- Eigenschaften
- Native XML Datenbanken (NXD)
- Abfragesprachen
- XQuery, XPath
- XML Prozessoren
- SAX, DOM
- SQL/XML
3Motivation
- Java write once, run everywhere
- XML write once, read everywhere
- zur Darstellung und Transport von Information
eingesetzt - Zwischen Mensch-Mensch, Computer-Computer,....
- Anwendungen für XML Datenbanken
- Platz um Webseite zu speichern
- Datenbank einer e-Commerce Anwendung die XML zum
Daten transport verwendet - Wenn Daten semistrukturiert sind
- Aufzeichnung von SOAP Nachrichten,.......
4Schemabeschreibung mittels DTD
- Darstellung, welche Elemente auftreten können und
wie sie geschachtelt werden - Also Deklaration von Strukturinformationen
- Vorteile einer DTD
- Entspricht einer Dokumentation für die
XML-Dokumente - Anwendungen können darauf reagieren
- Fehler in XML-Dokumenten können erkannt werden
- Oft bessere Qualität der XML-Dokumente, weil
durchdachteres Vorgehen
5XML Schema
- wesentlich umfangreichere Darstellungsmöglichkeite
n als DTDs - vordefinierte Datentypen
- Vielzahl von Standardtypen (int, float,
string,....) - die Möglichkeit zur Definition eigener Datentypen
- basieren auf den vordefinierten Datentypen
- XML-Syntax
- die Möglichkeit, Integritätsbedingungen
darzustellen, die die Korrektheit der
XML-Dokumente beschreiben - Eindeutigkeitsbedingung (unique)
- Schlüssel (key)
- sowie Referenzen auf Schlüssel (keyref)
6XML Schema vs. DTD
- XML Schema umfasst alle Modellierungsmöglichkeiten
, die mit der DTD bereitstehen, mit Ausnahme von
Entities. - Übersetzung DTD in XML Schema gt verlustfrei,
Entities werden vor der Übersetzung expandiert
und dadurch aufgelöst. - DTDs enthalten wesentlich weniger
Darstellungsmöglich-keiten als XML Schema und
auch keine Typinformationen. - Übersetzung XML Schema in DTDs gt Informationen
gehen verloren
7Eigenschaften von XML Dokumenten
- Wohlgeformtheit
- Dokument syntaktisch korrekt? Überprüft wird
- Alle Elemente müssen ein Start-Tag und ein
Ende-Tag haben, außer leere Elemente - Korrekte Schachtelung von Tags
- Alle Attributwerte stehen in Hochkommas oder
Anführungsstrichen - Ohne zugeordnete DTD sind alle Attribute nach
Definition vom Typ CDATA - Keine mehrfach auftretenden Attributnamen an
einem Element - Alle Zeichen, die Markup sein könnten (Bsp lt, ),
dürfen nicht im Text auftreten, sondern müssen
durch Entityreferenzen (lt amp) ersetzt
werden - Gültigkeit
- Wohlgeformtheit und entspricht das XML-Dokument
der zugeordneten DTD/Schema? - Getestet wird z.B.
- Inhaltsmodelle der Elemente so im Schema
definiert? - Attribute definiert?
8Klassifikation von XML Dokumenten
- 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 dokumentzentrierte
- Anteile
- Beispiele Veröffentlichungen, Amazon
ltordergt ltcustomergtMeyerlt/customergt
ltpositiongt ltisbngt1-234-56789-0lt/isbngt
ltnumbergt2lt/numbergt ltprice currencyEurogt30.0
0lt/pricegt lt/positiongt lt/ordergt
ltcontentgt XML builds on the principles of two
existing languages, ltemphgtHTMLlt/emphgt and
ltemphgtSGMLlt/emphgt to create a simple mechanism
.. The generalized markup concept .. lt/contentgt
ltbookgt ltauthorgtNeil Bradleylt/authorgt
lttitlegtXML companionlt/titlegt ltisbngt1-234-56789-0
lt/isbngt ltcontentgt XML builds on the
principles of two existing languages,
ltemphgtHTMLlt/emphgt and .. lt/contentgt lt/bookgt
9XML/DB Anforderungen
- effektive Speicherung
- Keine optimale Lösung für alle Anwendungen
- Dokumentcharakter spielt entscheidende Rolle
- effizienter Zugriff auf XML-Dokumente
- oder Teile davon
- Transaktionsverwaltung
- Unterstützung von XPath und XQuery
- Unterstützung von SAX und DOM für Anwendungen
- Wiederherstellbarkeit der Dokumente
10Speicherungsmöglichkeiten
Als Dateien / Clobs
Speicherung der Dokumentstruktur
Strukturierte Speicherung in (rel.) Datenbanken
Volltextindex
Vollständiges Mapping
Abbildung der Graphstruktur
Volltextindex und XML-Index
Benutzer- definiertes Mapping
Abbilden des DOM-Modells
Textbasierte native Modellbasierte
native Speicherung Speicherung
11Volltext-Index
lthotelgt
lthotelnamegtHotel Hübnerlt/hotelnamegt
Verweis
Begriff
ltadressegt
ltplzgt18119lt/plzgt
hotel
ltortgtWarnemündelt/ortgt
Warnemünde
ltstrassegtSeestraßelt/strassegt
Rostock
ltnummergt12lt/nummergt
ort
lt/adressegt
ltanreisebeschreibunggt
anreisebeschreibung
Aus Richtung Rostock kommend ...
lt/anreisebeschreibunggt
lt/hotelgt
- bekannte Methode (älter als relationale
Datenbanken) - Verfahren aus dem Bereich der Dokumentverarbeitun
g
12Volltext-Index
- Schemabeschreibung
- nicht erforderlich
- Dokumentrekonstruktion
- Dokumente bleiben im Original erhalten
- Anfragen Anfragen des Information Retrieval
- Weitere Besonderheiten
- Volltextfunktionen
- keine Auswertung des XML-Markups
- Einsatz
- für dokumentzentrierte XML-Anwendungen
13Volltext und XML-Index
14Volltext und XML-Index
- XML - Struktur kann in Anfragen ausgewertet
werden - Einsatz von XPath und XQuery ist dadurch möglich
- Schemabeschreibung
- nicht erforderlich
- Dokumentrekonstruktion
- Dokumente bleiben im Original erhalten
- Anfragen Anfragen des Information Retrieval
- Auswertung des Markup in den
Anfragen möglich - Weitere Besonderheiten
- Volltextfunktionen
- Einsatz
- für dokumentzentrierte und semistrukturierte
Anwendungen
15Speicherung der Graphenstruktur
- Verwendung von Relationen zur Speicherung von
Elementen und Attributen - Elemente
- Elementname Wert Verweis auf
Vorgänger Ordnung - Attribute
- Attributname Wert Verweis auf Element
- Damit ist die Zuordnung von Inhalten zur
Struktur, sowie die vollständige
Wiederherstellung der Struktur möglich
16Speicherung der Graphenstruktur
- Schemabeschreibung
- zur Speicherung nicht erforderlich
- Dokumentrekonstruktion
- möglich, aber sehr aufwändig
- Anfragen
- angepasste DB-Anfrage
- Weitere Besonderheiten
- Anfragen über vielen Elementen/Attributen sind
aufwändig - Einsatz
- daten-,dokumentzentrierte und semistrukturierte
XML-Dokumente
17Vollständiges Mapping auf rel. DB
lthotel url"www.hotel-huebner.de"gt
lthotelnamegtHotel Hübner lt/hotelnamegt
ltadressegt ltortgtWarnemündelt/ortgt
ltstrassegtSeestraßelt/strassegt ...
lt/adressegt ltpreisegt
lteinzelzimmergt198 lt/einzelzimmergt
... lt/preisegt lt/hotelgt
Hotel
HotelID Hotelname Adresse Preise
H0001 Hotel Hübner A0001 P0001
XML-Dokument
Adresse
AdresseID Ort Strasse ...
A0001 Warnemünde Seestraße
PreiseID Einzelzimmer ...
P0001 198
Preise
- DTD ist erforderlich
- - typgerechte Speicherung
18Vor/Nachteile vollständ. Mapping
- Vorteile bei der Speicherung strukturierter
Daten - Anfragen, Datentypen, Aggregatfunktionen, Sichten
- Integration in andere Datenbanken
- Nachteile bei der Speicherung semi- und
unstrukturierter - Daten
- großes Schema, schwach gefüllte Datenbanken,
viele Nullwerte - Keine flexiblen Datentypen, Speicherung von
Alternativen problematisch - Fehlende Information Retrieval Anfragen, keine
Volltextoperationen möglich
19Vollständiges Mapping auf rel. DB
- Schemabeschreibung
- zur Speicherung erforderlich
- Dokumentrekonstruktion
- nur eingeschränkt möglich (Protokollierung des
Abbildungsprozesses) - Anfragen
- Datenbankanfragen
- Weitere Besonderheiten
- Föderationen mit bestehenden Datenbanken möglich
- Einsatz
- für datenzentrierte XML-Anwendungen
20Benutzerdefiniertes Mapping
21Benutzerdefiniertes Mapping
- Schemabeschreibung
- Zur Speicherung erforderlich
- Dokumentrekonstruktion
- Meist nicht möglich
- (Voraussetzung Protokollierung des
Abbildungsprozesses - vollständige Abb.)
- Anfragen
- Datenbankanfragen
- Weitere Besonderheiten
- Integration in bestehende Datenbanken möglich
- XML-Dokumente und DB voneinander unabhängig
- Einsatz
- für datenzentrierte XML-Anwendungen
22Native XML Database
- Spezialisiert für die Speicherung von XML Daten
- XML Dokumente gehen rein/raus
- Muss keine Stand-alone Datenbank sein
- Kein neues low-level Datenbank Modell
- Sollen nicht alle bestehenden Datenbanken
ersetzen - OpenSource (Xindice, eXist) sowie kommerzielle
Lösungen (Tamino)
23XML Abfragesprachen
- XPath
- Pfadausdrücke zur Adressierung von XML Fragmenten
- Grundlage für viele weitere Standards
- XSLT
- Xquery
- Von meisten XML Datenbanken unterstützt
- grundlegendes Konstrukt sind XPath-Ausdrücke
- Pfadausdrücke (Location path),
- logische und mathematische Verknüpfungen,
- Funktionsaufrufe
- sind vom Typ her Knotenmengen oder Werte
(boolean, number, string) - XQuery
- Praktische Beispiele http//www.w3.org/TR/xquery-
use-cases/
24XML Abfragesprachen
25XQuery
- Basiert auf Xpath
- SQL ähnlich
- FOR-LET-WHERE-RERTURN
- FOR/LET geordnete Liste von Tupeln gebundener
Variablen - WHERE eingeschränkte Liste von Tupeln gebundener
Variablen - RETURN Ergebniskonstruktion, Instanzen des XML
Query data model - Ausdrücke
- Konstanten und Variablen Hallo x
- Kommentare -- Kommentar --
- Sequenzen (1, /a/b/c, Hallo)
26XQuery
- Operatoren und Funktionen
- sum( a 1, b 2 )
- zaus UNION haus
- Benutzerdefinierte Funktionen
- Elementkonstruktoren
- reines XML, wird so in das Ergebnis übernommen,
wie es ist - XML mit geschachtelten Ausdrücken in
- Sortierung
- FOR h IN /hotelname "Hübner"
- ORDER BY zimmer/preis DESCENDING
- RETURN h
27XQuery
- Bedingte Ausdrücke
- IF expr THEN expr ELSE expr
- Verwendung von Quantoren
- SOME var IN expr SATISFIES expr
- EVERY var IN expr SATISFIES expr
- Typwandlung mit CAST und TREAT
- Typprüfung mit INSTANCEOF und TYPESWITCH
28XQuery Beispiel
- lthotel name"Hotel Neptun"gt
- ltzimmertyp typ"EZ" preis"180" währung"DM"/gt
- ltfoto href"neptun01.jpeg"/gt
- lt/hotelgt
- lthotel name"Hotel Hübner"gt
- ltzimmertyp typ"EZ" preis"150" währung"DM"/gt
- ltzimmertyp typ"DZ" preis"180" währung"DM"/gt
- lt/hotelgt
- lthotel name"Pension Dräger"gt
- ltfoto href"bild-pd01.jpeg"/gt
- ltfoto href"bild-pd02.jpeg"/gt
- lt/hotelgt
29XQuery Beispiel
- ltbillighotelsgt
- FOR h IN //hotel
- FOR z IN h/zimmertyp
- WHERE z/_at_preis lt 100
- RETURN lthotelgt
- ltnamegt h/_at_name lt/namegt
- ltpreisgt z/_at_preis lt/preisgt
- lt/hotelgt
- lt/billighotelsgt
ltbillighotelsgt lthotelgtltnamegt...lt/namegtltpreisgt...lt/
preisgtlt/hotelgt ... lt/billighotelsgt
30XML Prozessoren
- machen den Inhalt eines XML-Dokumentes für eine
Anwendung verfügbar - Standardisierte Schnittstellen für zahlreiche
Programmiersprachen (Java, Phyton, C, C, ...) - Einbindung von Bibliotheken
- Auflösen von Entities
- nichtvalidierend / validierend
- in Bezug auf DTD oder XML Schema
31SAX ereignisorientierte Abarbeitung
- durch Bestandteile des Dokumentes werden Aktionen
ausgelöst - sequentielle Abarbeitung
- im Anwendungspro-gramm müssen die Methoden
definiert - werden, die durch Auftreten von
Dokumentbestandteilen - ausgelöst werden
- zustandslos
startDocument()
lt?xml version"1.0"?gt
startElement("hotel", AttributeList(
lthotel id
length1,
name
value
lthotelnamegt
startElement("hotelname", null)
Strand Hotel Hübner
lt/hotelnamegt
endElement("hotelname")
ltadressegt
startElement("adresse", null)
ltortgt
startElement("ort", null)
Warnemünde
characters(char, start, length)
lt/ortgt
endElement("ort")
lttelefongt
. . .
0381/548230
lt/telefongt
lt/adressegt
endElement("adresse")
endElement("hotel")
lt/hotelgt
endDocument()
32DOM - Manipulation von Baumstrukturen
- XML-Dokument als Baum
- dargestellt,
- Zugriff kann durch
- Navigation erfolgen
- Manipulation des
- Dokumentstruktur
- ebenfalls möglich
- Löschen
- Einfügen
- ändern
33Vergleich DOM - SAX
XML-
DTD
Dokument
Parser
DOM
SAX
startDocument
startElement
Anwendung,
startElement
implemen-
tiert
endElement
Document
...
Handler
endDocument
34Einsatz von SAX und DOM
- SAX
- einfacher Zugriff
- einfach strukturierte oder gleichartig
strukturierte Dokumente - auch geeignet für sehr große XML-Dokumente
- Zugriff nur auf geringe Anteile eines Dokumentes
- DOM
- Navigation durch Dokumentstruktur
- dadurch kontextabhängige Zugriffe
- Manipulation der Struktur
- Für sehr große XML-Dokumente problematisch
- auch Speicherungsstruktur
35SQL/XML
- ANSI-Standard
- Version 2003 bzw. 2005 (in Arbeit)
- Hersteller wie IBM, Oracle, Microsoft, Informix
und Software AG beteiligt - Features
- Ausgabe von Relationen als XML-Dokument
- Ausgabe von Anfrageergebnissen und Sichten als
XML-Dokument - Abbildung von Datenbanktypen auf Typen von
XML-Schemata und umgekehrt - Konvertierung der Daten aus Datenbanken auf Werte
in XML-Dokumenten - Übersicht Eisenberg, SQL/XML is making good
progress, 2002
36SQL/XML
- Ausgabe der Relation Employee als XML Dokument im
- Schema Admin
- ltAdmingt
- ltEMPLOYEEgt
- ltrowgt
- ltEMPNOgt000010lt/EMPNOgt
- ltFIRSTNAMEgtCHRISTINElt/FIRSTNAMEgt
- ltLASTNAMEgtHAASlt/LASTNAMEgt
- ltBIRTHDATEgti933-08-24lt/BIRTHDATEgt
- ltSALARYgt52750.OOlt/SALARYgt
- lt/rowgt
- ...
- lt/EMPLOYEEgt
- .....
- lt/Admingt
37SQL/XML
- Ausgabe von Anfrageergebnissen und Sichten
- Darstellung von Null Values
- Tabellen und XQuery
ltrowgt ltEMPNOgt000010lt/EMPNOgt
ltFIRSTNAMEgtCHRISTINElt/FIRSTNAMEgt ltLASTNAME
gtHAAS lt/LASTNAMEgt ltBIRTHDATE xsinil"true" /gt
ltSALARYgt52750.00lt/SALARYgt lt/rowgt
ltrowgt ltEMPNOgt0000I0lt/EMPNOgt ltFIRSTNAMEgtCHRISTINElt/
FIRSTNAMEgt ltLASTNAMEgtHAAS lt/LASTNAME
gt ltSALARYgt52750.00lt/SALARYgt lt/rowgt
highempsgt for Se in table"Sample_db",...)/EMPLO
YEE/row where Be/SALARY gt 40000 return ltempgt
Se/FIRSTNME, e/LASTNAME lt/empgt lt/highempsgt
38Zusammenfassung
- Es ist wichtig, Dokumentenklassen zu kennen um
richtige Speichermöglichkeit zu finden - XQuery ist mächtigerer Nachfolger von XPath 1.0
- XML Prozessoren um Ergebnisse von Anfragen an
Datenbanken die XML zurückliefern
weiterverarbeiten zu können - SAX arbeitet ereignisorientiert
- DOM Baummanipulationen möglich
- SQL/XML ist Versuch um wichtige Aufgaben beim
Umgang mit XML in Datenbanken zu standardisieren - Verwendet XQuery
39Resources
- Open Source Native XMLDB
- Apache Xindice http//xml.apache.org/xindice/
- Supports XPath
- eXist http//exist.sourceforge.net/
- Supports XPath 2.0 and XQuery 1.0
- Open Source XQuery Processor
- SAXON http//saxon.sourceforge.net/
- Supports XSLT 2.0 and XQuery 1.0
- Mehr Information zu XML und Datenbanken
- Ronald Bourret 2004 http//www.rpbourret.com/xml/X
MLAndDatabases.htm