• Keine Ergebnisse gefunden

XML und Datenbanken

N/A
N/A
Protected

Academic year: 2022

Aktie "XML und Datenbanken"

Copied!
23
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

XML und Datenbanken

(2)

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

(3)

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

(4)

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

(5)

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.

(6)

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>

(7)

Warum 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

(8)

Volltextindex und XML-Index

Volltextindex Als Dateien /

Clobs

Speicherung der Dokumentstruktur

Strukturierte Speicherung in Datenbanken

Vollständiges Mapping Benutzer- definiertes

Mapping Abbilden des

DOM-Modells Abbildung der Graphstruktur

Für dokument-zentrierte XML-Dokumente

Für daten-zentrierte XML-Dokumente Für semistrukturierte XML-Dokumente

Speicherung von XML-Dokumenten

(9)

Beispiel

Speicherung 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>

(10)

Beispiel

Relationale 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:

(11)

Beispiel

Hybride 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>

(12)

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

(13)

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

(14)

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

(15)

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

(16)

XSQL Queries und Connections

XSQL 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>

(17)

XSQL Page Processor Architektur

XSL Stylesheet

XSQL Page

XML o.a.

Formate

XSQLConfig

Datenbank XSQL Page Processor

XSLT

XML Parser

XML Utility

JDBC

(18)

Ü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>

(19)

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:

(20)

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>

(21)

Aufruf XSQL Page Processor

Kommando- Zeile

Java Applikation

XSQL Servlet

Java Server Page

XSQL Page Processor

(22)

Aufruf XSQL von der Kommandozeile

Beispiel1

Lese Fluginformation von San Francisco mittels xsql Command Line Utility

>xsql airport.xsql airport=sfo xml-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

(23)

XSQL Servlet Environment

Web Server mit Servlet Engine

XSQL Page Processor XSQL Servlet

http JDBC

Oracle DB Web-Browser

Referenzen

ÄHNLICHE DOKUMENTE

 dient als Input für den XSQL Page Processor..  Trennung der Daten von

Nach Möglichkeit sollten auch HTML-Links (z.B. vom Fachbereich, Pro- fessor) mit einbezogen werden. Bei den zu speichernden Daten handelt es sich um semistrukturierte Dokumente,

Input Æ Output Simple PathsÆ NodeIDs 1-Index: Simple PathsÆ NodeIDs 2-Index: Relative PathsÆ NodeIDs T-Index: Privileged PathsÆ NodeIDs. Indexstruktur Graph

Da XQL direkt auf XML aufsetzt und eine einfache und kompakte Syntax besitzt und die Möglichkeit, eine Suchanfrage als einfachen String darzustellen, ist diese Anfragesprache

- Content Management Systeme (Kennzeichnen, Architektur) - XML-Anfragesprachen (XML-QL, XXL, XQL, XIRQL). - Content Management Systeme

Gespeichert werden muss lediglich ein XML-Dokument, welches durch Stylesheets (siehe Kapitel 3) in ein XSL/FO-Dokument zur Ansicht im Web transformiert wird.. Bei Bedarf kann

&lt;RDB_node&gt; , der die Abbildung eines Elementes in eine Tabelle spezifiziert, auch der Primärschlüssel der resultierenden Tabelle festgelegt werden muss (bzw. das Element oder

Diese Funktion nimmt als Argument den Integerwert einer Suchinstanz, eine Facette auf der die drill-down Suche durchgeführt werden soll, sowie einen Drill-Down-Term entgegen..