XML Datenbanken - Universität Wien

Werbung
XML und Datenbanken
Peter Brezany
Institut für Softwarewissenschaften
Universität Wien
P.Brezany
Institute for Software Science – University of Vienna
Inhalt
• 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
P.Brezany
Institute for Software Science – University of Vienna
2
Motivation
• 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,.......
P.Brezany
Institute for Software Science – University of Vienna
3
Schemabeschreibung mittels DTD
• Darstellung, welche Elemente auftreten können und wie
sie geschachtelt werden
• Also: Deklaration von Strukturinformationen
• Vorteile einer DTD:
–
–
–
–
P.Brezany
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
Institute for Software Science – University of Vienna
4
XML Schema
• wesentlich umfangreichere Darstellungsmöglichkeiten 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)
P.Brezany
Institute for Software Science – University of Vienna
5
XML Schema vs. DTD
• XML Schema umfasst alle Modellierungsmöglichkeiten,
die mit der DTD bereitstehen, mit Ausnahme von
Entities.
• Übersetzung: DTD in XML Schema => verlustfrei,
Entities werden vor der Übersetzung expandiert und
dadurch aufgelöst.
• DTDs enthalten wesentlich weniger Darstellungsmöglichkeiten als XML Schema und auch keine
Typinformationen.
• Übersetzung: XML Schema in DTDs => Informationen
gehen verloren
P.Brezany
Institute for Software Science – University of Vienna
6
Eigenschaften 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 <, &), dürfen nicht im Text auftreten, sondern
müssen durch Entityreferenzen (< &) 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?
P.Brezany
Institute for Software Science – University of Vienna
7
Klassifikation 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
P.Brezany
<order>
<customer>Meyer</customer>
<position>
<isbn>1-234-56789-0</isbn>
<number>2</number>
<price currency=„Euro“>30.00</price>
</position>
</order>
<content>
XML builds on the principles of two existing
languages, <emph>HTML</emph> and
<emph>SGML</emph> to create a simple
mechanism ..
The generalized markup concept ..
</content>
<book>
<author>Neil Bradley</author>
<title>XML companion</title>
<isbn>1-234-56789-0</isbn>
<content>
XML builds on the principles of two existing
languages, <emph>HTML</emph> and ..
</content>
</book>
Institute for Software Science – University of Vienna
8
XML/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
P.Brezany
Institute for Software Science – University of Vienna
9
Speicherungsmöglichkeiten
Als Dateien /
Clobs
Speicherung der
Dokumentstruktur
Volltextindex
Abbildung der
Graphstruktur
Vollständiges
Mapping
Volltextindex
und XML-Index
Abbilden des
DOM-Modells
Benutzerdefiniertes
Mapping
Textbasierte native
Speicherung
P.Brezany
Strukturierte
Speicherung
in (rel.) Datenbanken
Modellbasierte native
Speicherung
Institute for Software Science – University of Vienna
10
Volltext-Index
Begriff
Verweis
hotel
Warnemünde
Rostock
ort
anreisebeschreibung
<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
P.Brezany
Institute for Software Science – University of Vienna
11
Volltext-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
P.Brezany
Institute for Software Science – University of Vienna
12
Volltext und XML-Index
P.Brezany
Institute for Software Science – University of Vienna
13
Volltext 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
P.Brezany
Institute for Software Science – University of Vienna
14
Speicherung 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
P.Brezany
Institute for Software Science – University of Vienna
15
Speicherung 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
P.Brezany
Institute for Software Science – University of Vienna
16
Vollständiges Mapping auf rel. DB
<hotel url="www.hotelhuebner.de">
<hotelname>Hotel Hübner
</hotelname>
XML-Dokument
<adresse>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
...
</adresse>
<preise>
<einzelzimmer>198
</einzelzimmer>
...
</preise>
</hotel>
Hotel: HotelID
H0001
Adresse:
Preise:
Hotelname
Adresse
Preise
Hotel Hübner
A0001
P0001
AdresseID
Ort
Strasse
A0001
Warnemünde
Seestraße
PreiseID
Einzelzimmer
P0001
198
...
...
- DTD ist erforderlich
- typgerechte Speicherung
P.Brezany
Institute for Software Science – University of Vienna
17
Vor/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
P.Brezany
Institute for Software Science – University of Vienna
18
Vollstä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
P.Brezany
Institute for Software Science – University of Vienna
19
Benutzerdefiniertes Mapping
XML-Dokument
Mapping Vorschrift
<hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname>
<adresse>
<ort>Warnemünde</ort>
<strasse>Seestraße</strasse>
<ClassMap>
<ElementType
Name="hotel"/>
<ToClassTable>
<Table
Name="Hotelpreise"/>
</ToClassTable>
...
<PropertyMap>
</adresse>
<preise>
<einzelzimmer>198</einzelzimmer>
<Attribute
Name="url"/>
<ToColumn>
...
<Column
</preise>
Name="Hotel_URL"/>
</ToColumn>
</hotel>
</PropertyMap>
<PropertyMap>
<ElementType
Name="hotelname"/>
<ToColumn>
<Column
Name="Name"/>
</ToColumn>
</PropertyMap>
...
</Classmap>
Hotelpreise
Hotel_URL
Name
Einzelzimmer
Datenbank
www.hotel-huebner.de
P.Brezany
Hotel Hübner
Institute for Software Science – University of Vienna
198
20
Benutzerdefiniertes 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
P.Brezany
Institute for Software Science – University of Vienna
21
Native 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)
P.Brezany
Institute for Software Science – University of Vienna
22
XML 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/
P.Brezany
Institute for Software Science – University of Vienna
23
XML Abfragesprachen
P.Brezany
Institute for Software Science – University of Vienna
24
XQuery
• 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“)
P.Brezany
Institute for Software Science – University of Vienna
25
XQuery
• 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 /hotel[name = "Hübner"]
ORDER BY zimmer/preis DESCENDING
RETURN $h
P.Brezany
Institute for Software Science – University of Vienna
26
XQuery
• 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
P.Brezany
Institute for Software Science – University of Vienna
27
XQuery Beispiel
<hotel name="Hotel Neptun">
<zimmertyp typ="EZ" preis="180"
währung="DM"/>
<foto href="neptun01.jpeg"/>
</hotel>
<hotel name="Hotel Hübner">
<zimmertyp typ="EZ" preis="150"
währung="DM"/>
<zimmertyp typ="DZ" preis="180"
währung="DM"/>
</hotel>
<hotel name="Pension Dräger">
<foto href="bild-pd01.jpeg"/>
<foto href="bild-pd02.jpeg"/>
</hotel>
P.Brezany
Institute for Software Science – University of Vienna
28
XQuery Beispiel
<billighotels>
FOR $h IN //hotel
FOR $z IN $h/zimmertyp
WHERE $z/@preis <= 100
RETURN <hotel>
<name> {$h/@name} </name>
<preis> {$z/@preis} </preis>
</hotel>
</billighotels>
•Ergebnis:
<billighotels>
<hotel><name>...</name><preis>...</preis></hotel> ...
</billighotels>
P.Brezany
Institute for Software Science – University of Vienna
29
XML 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
P.Brezany
Institute for Software Science – University of Vienna
30
SAX – ereignisorientierte Abarbeitung
startDocument()
<?xml version="1.0"?>
startElement("hotel", AttributeList(
length=1,
{name=
value=
<hotel id=
<hotelname>
startElement("hotelname", null)
Strand Hotel Hübner
</hotelname>
endElement("hotelname")
<adresse>
startElement("adresse", null)
<ort>
Warnemünde
</ort>
startElement("ort", null)
characters(char[], start, length)
endElement("ort")
0381/548230
...
<telefon>
</telefon>
</adresse>
</hotel>
endElement("adresse")
endElement("hotel")
• 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
endDocument()
P.Brezany
Institute for Software Science – University of Vienna
31
DOM - Manipulation von
Baumstrukturen
DOMImplementation
Node
NodeList
NamedNodeMap
Attr
CharacterData
Comment
Text
CDataSection
Document
DocumentFragment
DocumentType
Element
• XML-Dokument als Baum
dargestellt,
• Zugriff kann durch
Navigation erfolgen
• Manipulation des
Dokumentstruktur
ebenfalls möglich
•Löschen
•Einfügen
•ändern
Entity
EntityReference
Notation
ProcessingInstruction
P.Brezany
Institute for Software Science – University of Vienna
32
Vergleich DOM - SAX
XML-
DTD
Dokument
Parser
DOM
SAX
startDocument
startElement
startElement
endElement
...
endDocument
P.Brezany
Anwendung,
implementiert
Document
Handler
Institute for Software Science – University of Vienna
33
Einsatz 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 XMLDokumente
problematisch
• auch
Speicherungsstruktur
P.Brezany
Institute for Software Science – University of Vienna
34
SQL/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
P.Brezany
Institute for Software Science – University of Vienna
35
SQL/XML
•Ausgabe der Relation Employee als XML Dokument im
Schema Admin
<Admin>
<EMPLOYEE>
<row>
<EMPNO>000010</EMPNO>
<FIRSTNAME>CHRISTINE</FIRSTNAME>
<LASTNAME>HAAS</LASTNAME>
<BIRTHDATE>i933-08-24</BIRTHDATE>
<SALARY>52750.OO</SALARY>
</row>
...
</EMPLOYEE>
.....
</Admin>
P.Brezany
Institute for Software Science – University of Vienna
36
SQL/XML
• Ausgabe von Anfrageergebnissen und Sichten
– Darstellung von Null Values:
<row>
<EMPNO>000010</EMPNO>
<FIRSTNAME>CHRISTINE</FIRSTNAME>
<LASTNAME >HAAS </LASTNAME>
<BIRTHDATE xsi:nil="true" />
<SALARY>52750.00</SALARY>
</row>
<row>
<EMPNO>0000I0</EMPNO>
<FIRSTNAME>CHRISTINE</FIRSTNAME>
<LASTNAME>HAAS </LASTNAME >
<SALARY>52750.00</SALARY>
</row>
– Tabellen und XQuery
highemps>
{ for Se in table{"Sample_db",...)/EMPLOYEE/row
where Be/SALARY > 40000
return <emp> { Se/FIRSTNME, $e/LASTNAME } </emp>
} </highemps>
P.Brezany
Institute for Software Science – University of Vienna
37
Zusammenfassung
• 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
P.Brezany
Institute for Software Science – University of Vienna
38
Resources
• 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/XMLAndDatabases.htm
P.Brezany
Institute for Software Science – University of Vienna
39
Herunterladen