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 (&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? 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