XML und Datenbanken
© Prof. T. Kudraß, HTWK Leipzig
Motivation XML-Dokumente können für sehr verschiedene
Anwendungen eingesetzt werden Aussehen der Dokumente unterscheidet sich
stark
Vielzahl von Methoden zur Speicherung existiert verschiedene Abfragemethoden Mehrere Varianten zur Modellierung von XML-
Dokumenten und deren Struktur
© Prof. T. Kudraß, HTWK Leipzig
Daten oder Dokumente (1) „Lesbare Dokumente“ (dokumentzentriert)
– sind selten genau gleich strukturiert– Reihenfolge ist wichtig– sinntragende Daten auf allen Ebenen, viel Mixed
Content– Volltextsuche ist unabdingbar, aber nicht
ausreichend– Beispiele
Zeitschriftenbeiträge, Bücher Gebrauchsanweisungen, Handbücher e-Mail Präsentationen Verträge
– 70% der relevanten Geschäftsinformationen in Textdokumenten
© Prof. T. Kudraß, HTWK Leipzig
Daten oder Dokumente (2) Datenzentrierte Dokumente
– wie Daten im herkömmlichen Sinn (z.B. in relationalen Datenbanken)
– Reihenfolge ist oft nicht relevant– sind einheitlich und meist einfach strukturiert– haben Datentypen– sinntragende Daten in Blattelementen oder Attributen– Mixed Content ist die Ausnahme (oder Dekoration)– Beispiele:
Telefonbücher wissenschaftliche Daten Fahrpläne, Flugpläne Bestellungen
© Prof. T. Kudraß, HTWK Leipzig
Daten und Dokumente Semistrukturierte Daten
– Strukturiert: Felder– Unstrukturiert: binäre Daten wie Text, Video- und Audio-Streams,
Bilder (in XML: External Entities, CDATA Sections)– unregelmäßiges Auftreten von Hyperlinks
Mangel an Struktur– Mischform aus datenzentriert und dokumentenzentriert– Struktur implizit oder verborgen– Integration von Daten aus heterogenen Quellen (hierfür
strukturiertes Modell oft zu restriktiv)– Bestimmte Anfragetypen ignorieren Schema bewußt (z.B.
Zeichenkettensuche über gesamte Datenbank hinweg) Beispiel Krankenakten:
– Krankenakten Daten: Geburtsdatum, Adresse, etc, binäre Daten: Röntgenbilder Dokumente: Diagnose, Anamnese etc.
© Prof. T. Kudraß, HTWK Leipzig
Klassifikation: Beispiel
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 dokumentenzentrierte
Anteile
Beispiele: Veröffentlichungen, Amazon)
<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>
© Prof. T. Kudraß, HTWK Leipzig
Warum XML in DatenbankenXML als SGML-Nachfolger
– entstehende Dokumente müssen gespeichert werdenXML als Austauschformat
– Originaldaten werden in XML transformiert Austauschdaten müssen aber ebenfalls gespeichert werden
(z.B. beim Empfänger)
Nur die Speicherung in Datenbanken garantiert– mächtige und effiziente Suchfunktionen– transaktionsorientierte Speicherung– Mehrbenutzerbetrieb
Anwendungen– Dokumentenverwaltung– Website-Management– Verkaufsunterstützung– Information Publishing
© Prof. T. Kudraß, HTWK Leipzig
Volltextindex und XML-Index
Volltextindex
Als Dateien / Clobs
Speicherung derDokumentstruktur
StrukturierteSpeicherung
in Datenbanken
VollständigesMapping
Benutzer-definiertesMapping
Abbilden des DOM-Modells
Abbildung derGraphstruktur
Für dokument-zentrierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Speicherung von XML-Dokumenten
© Prof. T. Kudraß, HTWK LeipzigBeispielSpeicherung mit Volltext-Index
- bekannte Methode (älter als relationale Datenbanken)- Boolesches Retrieval (AND, OR, NOT)
Verweis
Warnemünde
<adresse> <plz>18119</plz> <ort>Warnemünde</ort>
<nummer>12</nummer> </adresse> <anreisebeschreibung>
</anreisebeschreibung></hotel>
<hotelname>Hotel Hübner</hotelname>
Aus Richtung Rostock kommend ...
<hotel>
Begriff
anreisebeschreibung
ort
Rostock
hotel
<strasse>Seestraße</strasse>
© Prof. T. Kudraß, HTWK LeipzigBeispielRelationale Speicherung von XML
- DTD ist erforderlich - Anfragen verwenden SQL - Funktionalität- Datentypen
<hotel url="www.hotel-huebner.de">
<hotelname>Hotel Hübner</hotelname> <adresse> <ort>Warnemünde</ort>
...
</adresse> <preise> <einzelzimmer>198</einzelzimmer>
</preise>...
</hotel>
<strasse>Seestraße</strasse>
XML-Dokument HotelID Hotelname Adresse Preise
H0001 Hotel Hübner A0001 P0001
AdresseID Ort Strasse ...
A0001 Warnemünde Seestraße
PreiseID Einzelzimmer ...
P0001 198
Hotel:
Preise:
Adresse:
© Prof. T. Kudraß, HTWK LeipzigBeispielHybride Ansätze zur Speicherung
Auswahl
unterschiedlicher
Speicherungsmethoden
für verschiedene
Dokumentanteile
Hotel
0381/5434-0
Ort Strasse Telefon
Strand Hotel Hübner Warnemünde Seestraße
komfortabel eingerichtetes 4-Sterne Hotel direkt an der Strandpromenade von Warnemünde mit Blick auf Leuchtturm, Hafeneinfahrt
Sie finden unser elegant und
und Ostsee.
<hotel>
<adresse><plz>18119</plz>
<nummer>12</nummer> <telefon>0381/5434-0</telefon>
</adresse> <hausbeschreibung> Sie finden unser elegant und
</hotel>
komfortabel eingerichtetes 4-Sterne Hotel direkt an der Strandpromenade von Warnemünde mit Blick auf Leuchtturm, Hafeneinfahrt und Ostsee. </hausbeschreibung>
<hotelname>Strand Hotel Hübner</hotelname>
<ort>Warnemünde</ort> <strasse>Seestraße</strasse>
© Prof. T. Kudraß, HTWK Leipzig
XSQL XML + SQL Bestandteil des Oracle XDK (XML Development
Kit) XML-formatierte Ausgabe von relational
gespeicherten Daten in jedem DBMS verfügbar Grundidee:
– relational gespeicherte Daten als XML darstellen– Einbettung von SQL-Anweisungen in XML– Weiterverarbeitung mittels XSL-Stylesheets möglich
© Prof. T. Kudraß, HTWK Leipzig
Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten
auf der Basis von SQL Queries erlaubt Insert-, Update- und Delete-Operationen unterstützt XSL Transformation durch
Anwendung von XML Stylesheets, beliebige Zielformate wie z.B. HTML
dient als Input für den XSQL Page Processor
Trennung der Daten von der Darstellung
© Prof. T. Kudraß, HTWK Leipzig
XSQL Page Verarbeitung
Bestandteile XSQL Pages
– SQL Queries– DML und DDL in XML Tags
XSQL Page Processor (in Java)– nimmt XSQL Pages als Input– erzeugt dynamische XML Seiten mit den Ergebnissen der SQL-
Queries
XSQL Servlet– erlaubt XSQL Page Verarbeitung im Web
Erweiterbare Stylesheets– optional– XSL Transformationen zur Formatierung des Output
© Prof. T. Kudraß, HTWK Leipzig
Verarbeitung von XSQL Pages
<?xml version=“1.0“ ?><xsql:query connection=“demo“ xmlns:xsql=“urn:oracle-xsql“> SELECT ‘Hello World‘ AS greeting FROM DUAL</xsql:query>
<?xml version=“1.0“ ?><xsql:query connection=“demo“ xmlns:xsql=“urn:oracle-xsql“> SELECT ‘Hello World‘ AS greeting FROM DUAL</xsql:query>
XSQL Page Input
XML Output
<ROWSET><ROW num=“1“><GREETING>Hello World</GREETING></ROW></ROWSET>
<ROWSET><ROW num=“1“><GREETING>Hello World</GREETING></ROW></ROWSET>
Einführendes Beispiel
© Prof. T. Kudraß, HTWK Leipzig
XSQL Queries und ConnectionsXSQL Page erlaubt die Definition von SQL Queries Query ist eingebettet in ein xsql:query Tag Connection-Attribut definiert die Verbindungsinformaiton
zur Datenbank Connection Name wird aufgelöst in einer
Konfigurationsdatei XSQLConfig.xml (in xsql/lib) Beispiel
<connectiondefs><connection name=“demo“><username>xuser</username><password>xuser</password><dburl>jdbc:oracle:thin:@localhost:1521:mydb</dburl><driver>oracle.jdbc.driver.OracleDriver</driver>
</connection>... </connectiondefs>
<connectiondefs><connection name=“demo“><username>xuser</username><password>xuser</password><dburl>jdbc:oracle:thin:@localhost:1521:mydb</dburl><driver>oracle.jdbc.driver.OracleDriver</driver>
</connection>... </connectiondefs>
© Prof. T. Kudraß, HTWK Leipzig
XSQL Page Processor Architektur
XSL Stylesheet
XSQL Page
XML o.a. Formate
XSQLConfig
Datenbank
XSQL Page Processor
XSLT
XML Parser
XML Utility
JDBC
© Prof. T. Kudraß, HTWK Leipzig
Überblick über XSQL Tags <xsql:query> <xsql:dml> <xsql:set-stylesheet-param> <xsql:insert-request> <xsql:include-xml> <xsql:include-request-params> <xsql:include-xsql> <xsql:include-owa> <xsql:action> <xsql:ref-cursor-function> <xsql:include-param> <xsql:set-session-param> <xsql:set-page-param> <xsql:set-cookie> <xsql:insert-param>
© Prof. T. Kudraß, HTWK Leipzig
Anpassung von XSQL Queries
rowset-element Elementname für Anfrageergebnis; leerer String, wenn kein Elementname gewünscht
row-element Elementname für jede Zeile im Anfrageergebnis; leerer String, wenn kein Name gewünscht
max-rows Maximalanzahl von Zeilen, die vom Ergebnis ausgegeben werden sollen, sinnvoll z.B. für Top-N-Queries
skip-rows Anzahl von Zeilen, die übersprungen werden soll vor Darstellung des Ergebnisses
id-attribute Attributname für id-Attribute für jede Zeile im Anfrageergebnis
id-attribute-column
Zu nutzender Spaltenname, um den Wert des id-Attributs in jeder Ergebniszeile zu liefern
null-indicator Wenn auf “y“ oder „“yes“ gesetzt: Null-Indicator-Attribut bei den Elementen genutzt, dessen Wert NULL ist
Attribute für xsql:query:
© Prof. T. Kudraß, HTWK Leipzig
XSQL Query Parameter
Beispiel: Deklaration einer parametrisierten Query in einer XSQL Page
Die Parameterwerte können in einer URL geliefert werden, z.B.:http://localhost/xsql/demo/emp.xsql?find=A&sort=SAL
<?xml version=“1.0“ ?><?xml-stylesheet type=“text/xsl“ href=“emp.xsl“?><xsql:query connection=“demo“ xmlns:xsql=“urn:oracle-xsql“
find=“%“ sort=“ENAME“ null-indicator=“yes“>
SELECT * FROM EMP WHERE ENAME LIKE ‘%{@find}%‘ORDER BY {@sort}
</xsql:query>
<?xml version=“1.0“ ?><?xml-stylesheet type=“text/xsl“ href=“emp.xsl“?><xsql:query connection=“demo“ xmlns:xsql=“urn:oracle-xsql“
find=“%“ sort=“ENAME“ null-indicator=“yes“>
SELECT * FROM EMP WHERE ENAME LIKE ‘%{@find}%‘ORDER BY {@sort}
</xsql:query>
© Prof. T. Kudraß, HTWK Leipzig
Aufruf XSQL Page Processor
Kommando-Zeile
JavaApplikation
XSQLServlet
Java ServerPage
XSQL PageProcessor
© Prof. T. Kudraß, HTWK Leipzig
Aufruf XSQL von der Kommandozeile
Beispiel1• Lese Fluginformation von San Francisco mittels xsql
Command Line Utility>xsql airport.xsql airport=sfoxml-stylesheet=none
Beispiel2• Es hängt von der XSQL Page ab, welche Aktion
ausgeführt werden sollen• Ausführung einer Insert-operation, 2. Parameter gibt
die XML Quelle an, die durch XSQL Page eingefügt werden soll, dafür kann URL verwendet werden>xsql insertnewsstory.xsql
posted-xml=http://www.news.com/source
© Prof. T. Kudraß, HTWK Leipzig
XSQL Servlet Environment
Web Server mitServlet Engine
XSQL PageProcessor
XSQL Servlet
JDBChttp
Oracle DBWeb-Browser