Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

XML und Datenbanken. © Prof. T. Kudraß, HTWK Leipzig Motivation XML-Dokumente können für sehr verschiedene Anwendungen eingesetzt werden Aussehen der.

Ähnliche Präsentationen


Präsentation zum Thema: "XML und Datenbanken. © Prof. T. Kudraß, HTWK Leipzig Motivation XML-Dokumente können für sehr verschiedene Anwendungen eingesetzt werden Aussehen der."—  Präsentation transkript:

1 XML und Datenbanken

2 © 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

3 © 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

4 © 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

5 © 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.

6 © 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) Meyer 1-234-56789-0 2 30.00 XML builds on the principles of two existing languages, HTML and SGML to create a simple mechanism.. The generalized markup concept.. Neil Bradley XML companion 1-234-56789-0 XML builds on the principles of two existing languages, HTML and..

7 © Prof. T. Kudraß, HTWK Leipzig 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 © Prof. T. Kudraß, HTWK Leipzig 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 © Prof. T. Kudraß, HTWK Leipzig Beispiel Speicherung mit Volltext-Index - bekannte Methode (älter als relationale Datenbanken) - Boolesches Retrieval (AND, OR, NOT) Verweis Warnemünde 18119 Warnemünde 12 Hotel Hübner Aus Richtung Rostock kommend... Begriff anreisebeschreibung ort Rostock hotel Seestraße

10 © Prof. T. Kudraß, HTWK Leipzig Beispiel Relationale Speicherung von XML - DTD ist erforderlich - Anfragen verwenden SQL - Funktionalität - Datentypen Hotel Hübner Warnemünde... 198... Seestraße XML-Dokument HotelIDHotelnameAdressePreise H0001Hotel HübnerA0001P0001 AdresseIDOrtStrasse... A0001WarnemündeSeestraße PreiseIDEinzelzimmer... P0001198 Hotel: Preise: Adresse:

11 © Prof. T. Kudraß, HTWK Leipzig 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. 18119 12 0381/5434-0 Sie finden unser elegant und komfortabel eingerichtetes 4-Sterne Hotel direkt an der Strandpromenade von Warnemünde mit Blick auf Leuchtturm, Hafeneinfahrt und Ostsee. Strand Hotel Hübner Warnemünde Seestraße

12 © 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

13 © 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

14 © 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

15 © Prof. T. Kudraß, HTWK Leipzig Verarbeitung von XSQL Pages SELECT Hello World AS greeting FROM DUAL SELECT Hello World AS greeting FROM DUAL XSQL Page Input XML Output Hello World Hello World Einführendes Beispiel

16 © Prof. T. Kudraß, HTWK Leipzig 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 xuser jdbc:oracle:thin:@localhost:1521:mydb oracle.jdbc.driver.OracleDriver... xuser jdbc:oracle:thin:@localhost:1521:mydb oracle.jdbc.driver.OracleDriver...

17 © 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

18 © Prof. T. Kudraß, HTWK Leipzig Überblick über XSQL Tags

19 © Prof. T. Kudraß, HTWK Leipzig Anpassung von XSQL Queries rowset-elementElementname für Anfrageergebnis; leerer String, wenn kein Elementname gewünscht row-elementElementname für jede Zeile im Anfrageergebnis; leerer String, wenn kein Name gewünscht max-rowsMaximalanzahl von Zeilen, die vom Ergebnis ausgegeben werden sollen, sinnvoll z.B. für Top-N-Queries skip-rowsAnzahl von Zeilen, die übersprungen werden soll vor Darstellung des Ergebnisses id-attributeAttributname 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-indicatorWenn auf y oder yes gesetzt: Null-Indicator-Attribut bei den Elementen genutzt, dessen Wert NULL ist Attribute für xsql:query :

20 © 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 find=% sort=ENAME null-indicator=yes> SELECT * FROM EMP WHERE ENAME LIKE %{@find}% ORDER BY {@sort} find=% sort=ENAME null-indicator=yes> SELECT * FROM EMP WHERE ENAME LIKE %{@find}% ORDER BY {@sort}

21 © Prof. T. Kudraß, HTWK Leipzig Darstellung komplexer Strukturen flache XML-Dateien (ROWSET/ROW) korrespondieren mit Tupeln einer Relation Behandlung von mehrfach geschachtelten Objekten (1:n-Beziehung) – mehrfache Joins – nested Cursor zur Unterscheidung zwischen übergeordnetem Objekte und Komponente – Alternative: komplexe Objekte / Object Views Behandlung von m:n-Beziehungen – Auflösung von Fremdschlüsselbeziehungen – mehrfache Darstellung der Tupel als XML-Elemente

22 © Prof. T. Kudraß, HTWK Leipzig Nested Cursor erzeugen in SQL-Anfragen die XML-typische Baumstruktur (anstelle von Tabellen) Beispiel: FBEREICHSTUDIENGANGSEMESTERBEZEICHNUNG IMNIN1Grundlagen der Informatik IMNIN1Analysis 1 Baumstruktur in XML: IMN |-IN |- 1.Semester |- Grundlagen der Informatik |- Analysis 1

23 © Prof. T. Kudraß, HTWK Leipzig Beispiel Nested Cursor Tiefe 1: Gruppierte Auflistung aller Fachbereiche Tiefe 2: Auflistung der Studiengänge pro Fachbereich Tiefe 3: Auflistung der Semester pro Studiengang und Fachbereich Tiefe 4: Auflistung aller Fächer pro Semester und Studiengang und Fachbereich

24 © Prof. T. Kudraß, HTWK Leipzig Beispiel Nested Cursor (2) Tiefe 3: Fachbereich Studiengang Semester IMN IN 1 2...

25 © Prof. T. Kudraß, HTWK Leipzig Beispiel Nested Cursor (3) Tiefe 3: Fachbereich Studiengang Semester SQL-Befehl mit Nested Cursor (XML-Output vgl. vorige Folie) select f.fbereich, cursor (select fa.studiengang, cursor (select fae.semester from faecher fae where fae.fbereich=f.fbereich and fae.studiengang=fa.studiengang group by fae.semester) as semester from faecher fa where fa.fbereich=f.fbereich group by fa.studiengang) as studgang from faecher f group by f.fbereich Kommentare: – GROUP BY verhindert Redundanz im Baum – in WHERE-Klausel des Cursors Referenz auf die höheren Ebenen

26 © Prof. T. Kudraß, HTWK Leipzig XSQL Tag Attribute für DML Für alle DML-Operationen muß Zieltabelle spezifiziert werden: Für Update und Deletes muß Key spezifiziert werden: <xsql:insert-request table=purchase_order transform=order-to-rowset.xsl/> <xsql:insert-request table=purchase_order transform=order-to-rowset.xsl/> <xsql:update-request table=depttransform=doc-to-dept.xsl key-columns=deptno/> <xsql:update-request table=depttransform=doc-to-dept.xsl key-columns=deptno/> <xsql:delete-request table=depttransform=doc-to-dept.xsl key-columns=deptno/> <xsql:delete-request table=depttransform=doc-to-dept.xsl key-columns=deptno/>

27 © Prof. T. Kudraß, HTWK Leipzig Aufruf von Stored Procedures Stored Procedures können innerhalb von XSQL aufgerufen werden mittels Tag: Stored Procedures können in PL/SQL oder Java geschrieben sein Calls von anonymen PL/SQL-Blöcken sind erlaubt Beispiel: my_package.my_procedure({@dname}); my_package.my_procedure({@dname});

28 © Prof. T. Kudraß, HTWK Leipzig Aufruf XSQL Page Processor Kommando- Zeile Java Applikation XSQL Servlet Java Server Page XSQL Page Processor

29 © 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=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

30 © Prof. T. Kudraß, HTWK Leipzig Aufruf XSQL von einem Java-Programm Nutze oracle.xml.xsql.XSQLRequest() : public static void main (String[] args) throws Exception { // Erzeuge Instanz von XSQLRequest URL pageUrl = new URL(file://C:/foo/bar.xsql);file://C:/foo/bar.xsql XSQLRequest req = new XSQLRequest(pageUrl); // Speichere Parameter in Hash-Tabelle Hashtable params = new Hashtable(3); params.put(param1,value1); params.put(param2,value2); // Verarbeite die XSQL Page, übergebe die Parameter und // schreibe das Resultat in einen Out Stream req.process(params,new PrintWriter(System.out), new PrintWriter(system.err)); } public static void main (String[] args) throws Exception { // Erzeuge Instanz von XSQLRequest URL pageUrl = new URL(file://C:/foo/bar.xsql);file://C:/foo/bar.xsql XSQLRequest req = new XSQLRequest(pageUrl); // Speichere Parameter in Hash-Tabelle Hashtable params = new Hashtable(3); params.put(param1,value1); params.put(param2,value2); // Verarbeite die XSQL Page, übergebe die Parameter und // schreibe das Resultat in einen Out Stream req.process(params,new PrintWriter(System.out), new PrintWriter(system.err)); }

31 © Prof. T. Kudraß, HTWK Leipzig XSQL Servlet Environment Web Server mit Servlet Engine XSQL Page Processor XSQL Servlet JDBC http Oracle DB Web-Browser

32 © Prof. T. Kudraß, HTWK Leipzig XSQL und Java Server Pages (JSP) Java Server Pages sind eine dokumentzentrische Art der Entwicklung von dynamischem Web Content werden in Servlets compiliert vor der Ausführung JSPs vollständig interoperabel mit Servlets (Einfügen und Weiterleiten von Output) JSP Tags zum Aufruf von XSQL Pages


Herunterladen ppt "XML und Datenbanken. © Prof. T. Kudraß, HTWK Leipzig Motivation XML-Dokumente können für sehr verschiedene Anwendungen eingesetzt werden Aussehen der."

Ähnliche Präsentationen


Google-Anzeigen