Title: XML und Datenbanken
1XML und Datenbanken
2Motivation
- 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
3Daten 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
4Daten 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
5Daten 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.
6Klassifikation 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)
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
7Warum XML in Datenbanken
- XML als SGML-Nachfolger
- entstehende Dokumente müssen gespeichert werden
- XML 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
8Speicherung von XML-Dokumenten
Als Dateien / Clobs
Speicherung der Dokumentstruktur
Strukturierte Speicherung in Datenbanken
Volltextindex
Vollständiges Mapping
Abbildung der Graphstruktur
Volltextindex und XML-Index
Benutzer- definiertes Mapping
Abbilden des DOM-Modells
Für dokument-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
9BeispielSpeicherung mit Volltext-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) - Boolesches Retrieval (AND, OR, NOT)
10BeispielRelationale Speicherung von XML
XML-Dokument
HotelID Hotelname Adresse Preise
H0001 Hotel Hübner A0001 P0001
Hotel
lthotel url"www.hotel-huebner.de"gt
lthotelnamegtHotel Hübnerlt/hotelnamegt
ltadressegt
ltortgtWarnemündelt/ortgt
AdresseID Ort Strasse ...
A0001 Warnemünde Seestraße
Adresse
ltstrassegtSeestraßelt/strassegt
...
lt/adressegt
ltpreisegt
lteinzelzimmergt198lt/einzelzimmergt
Preise
PreiseID Einzelzimmer ...
P0001 198
...
lt/preisegt
lt/hotelgt
- DTD ist erforderlich
- - Anfragen verwenden SQL - Funktionalität
- - Datentypen
11BeispielHybride Ansätze zur Speicherung
- Auswahl
- unterschiedlicher
- Speicherungsmethoden
- für verschiedene
- Dokumentanteile
lthotelgt
lthotelnamegtStrand Hotel Hübnerlt/hotelnamegt
ltadressegt
ltplzgt18119lt/plzgt
ltortgtWarnemündelt/ortgt
ltstrassegtSeestraßelt/strassegt
ltnummergt12lt/nummergt
lttelefongt0381/5434-0lt/telefongt
lt/adressegt
lthausbeschreibunggt Sie finden unser elegant und
komfortabel eingerichtetes 4-Sterne Hotel
direkt an der Strandpromenade von Warnemünde
mit Blick auf Leuchtturm, Hafeneinfahrt
und Ostsee. lt/hausbeschreibunggt
lt/hotelgt
Sie finden unser elegant und
komfortabel eingerichtetes 4-Sterne Hotel
direkt an der Strandpromenade von Warnemünde
mit Blick auf Leuchtturm, Hafeneinfahrt
und Ostsee.
Hotel
Ort Strasse
Telefon
0381/5434-0
Strand Hotel Hübner
Warnemünde
Seestraße
12XSQL
- 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
13Vorteile 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
14XSQL 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
15Verarbeitung von XSQL Pages
Einführendes Beispiel
XSQL Page Input
lt?xml version1.0 ?gt ltxsqlquery
connectiondemo xmlnsxsqlurnoracle-xsqlgt
SELECT Hello World AS greeting FROM
DUAL lt/xsqlquerygt
XML Output
ltROWSETgt ltROW num1gt ltGREETINGgtHello
Worldlt/GREETINGgt lt/ROWgt lt/ROWSETgt
16XSQL Queries und Connections
- XSQL Page erlaubt die Definition von SQL Queries
- Query ist eingebettet in ein xsqlquery Tag
- Connection-Attribut definiert die
Verbindungsinformaiton zur Datenbank - Connection Name wird aufgelöst in einer
Konfigurationsdatei XSQLConfig.xml (in xsql/lib) - Beispiel
ltconnectiondefsgt ltconnection namedemogt ltusern
amegtxuserlt/usernamegt ltpasswordgtxuserlt/passwordgt
ltdburlgtjdbcoraclethin_at_localhost1521mydblt/dbur
lgt ltdrivergtoracle.jdbc.driver.OracleDriverlt/drive
rgt lt/connectiongt ... lt/connectiondefsgt
17XSQL Page Processor Architektur
XSL Stylesheet
XSQLConfig
XSQL Page
Datenbank
XML o.a. Formate
18Überblick über XSQL Tags
- ltxsqlquerygt
- ltxsqldmlgt
- ltxsqlset-stylesheet-paramgt
- ltxsqlinsert-requestgt
- ltxsqlinclude-xmlgt
- ltxsqlinclude-request-paramsgt
- ltxsqlinclude-xsqlgt
- ltxsqlinclude-owagt
- ltxsqlactiongt
- ltxsqlref-cursor-functiongt
- ltxsqlinclude-paramgt
- ltxsqlset-session-paramgt
- ltxsqlset-page-paramgt
- ltxsqlset-cookiegt
- ltxsqlinsert-paramgt
19Anpassung von XSQL Queries
Attribute für xsqlquery
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
20XSQL Query Parameter
Beispiel Deklaration einer parametrisierten
Query in einer XSQL Page
lt?xml version1.0 ?gt lt?xml-stylesheet
typetext/xsl hrefemp.xsl?gt ltxsqlquery
connectiondemo xmlnsxsqlurnoracle-xsql fi
nd sortENAME null-indicatoryesgt SELECT
FROM EMP WHERE ENAME LIKE _at_find ORDER
BY _at_sort lt/xsqlquerygt
Die Parameterwerte können in einer URL geliefert
werden, z.B. http//localhost/xsql/demo/emp.xsql?
findAsortSAL
21Aufruf XSQL Page Processor
Kommando- Zeile
Java Applikation
XSQL Page Processor
XSQL Servlet
Java Server Page
22Aufruf XSQL von der Kommandozeile
- Beispiel1
- Lese Fluginformation von San Francisco mittels
xsql Command Line Utility - gtxsql airport.xsql airportsfoxml-stylesheetnon
e - 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 - gtxsql insertnewsstory.xsql
- posted-xmlhttp//www.news.com/source
23XSQL Servlet Environment
Web Server mit Servlet Engine
XSQL Page Processor
http
JDBC
Web-Browser
Oracle DB
XSQL Servlet