Oracle XML Datenbank Carsten Czarski Business Unit Database Oracle Deutschland GmbH Agenda XML in der Datenbank Speicherformen für XML-Dokumente, Datenbankansätze, Oracle XML Technologie, Architektur der Oracle XML-Datenbank, Installation + Konfiguration XML-Speicherstrukturen Festlegung der Speicherungsform, XML Schema, Registrierung, objektrelationale Strukturen Umgang mit XML-Dokumenten Speichern und Abrufen von XML-Dokumenten; Verbindung mit SQL; Protokollzugriff XML in der Praxis – Szenarien und Implementierung Implementierung der Szenarien mit der XML-Datenbank, Zusammenspiel mit OracleTechnologie Warum XML in der Datenbank ...? ... und nicht einfach im Dateisystem? Warum XML in der Datenbank ... ... und nicht im Dateisystem? relationale Daten bereits vorhanden – – Kombination mit XML Dokumenten Ausgabe als XML-Dokument Erweiterung des XML-Datenmodells – – – – – Zusätzliche Datenbankvalidierung Transaktionskonzept Datennahe Sicherheitskonzepte Datennahe Logik ... XML Standards XML – W3C DOM – W3C XPath – W3C XML Schema – W3C XSL and XSLT – W3C WebDAV - IETF SQL/XML – ANSI/ISO Wie speichert man XML-Dokumente in Datenbanken ...? Herausforderungen Abruf als XML relationale Datenbestände Beispiele: - heterogene Systeme - XML Schnittstellen - Versorgung des Workflow - Abruf per HTTP oder FTP Herausforderungen Abruf mit SQL Beispiele: - XML als Austauschformat im e-Business - Sammlung und Aggregation im DWH - DWH-Versorgung aus heterogenen Systemen XML-Dokumente Überführung in DWH oder andere Anwendung Herausforderungen Beispiele: - XML Dokumente nativ speichern (jur. Gründe) - Validitätsprüfung gegen Stammdaten in einer relationalen Datenbank - Validierung im laufenden Workflow Integritätsbedingungen relationale Datenbestände XML Datenbestände Herausforderungen Referentielle Integrität in XML XML-Datenmodell referentielle Integrität – – – ID IDREF IDREFS Dokumentbezogen Herausforderungen Referentielle Integrität in XML XML-Datenmodell referentielle Integrität – – – ID IDREF IDREFS Dokumentbezogen Das Dokument kann ohne weiteres nicht verlassen werden 1. Lösungsansatz relationale Speicherung Zwei-Tabellen-Modell ID 1 2 3 4 5 6 TYPE VALUE ELE ELE ELE TEX ATT TEXT Order Kunde Name Mustermann id 4711 ID 1 2 3 4 5 6 PARENT_ID NULL 1 2 3 1 5 1. Lösungsansatz • Semantik aus Tabellen nicht nachvollziehbar • Schwierige Integration • z.B. Stammdatentabellen • • • • Tuning schwierig Indizierung schwierig Volltextsuche schwierig Komplexe JOIN-Operationen 2. Lösungsansatz relationale Speicherung Fachliches Datenmodell KUNDEN ID NAME DEPOT 1 Muster 2 Meier 3 Schmitt 4711 4712 4713 ID WERTPAPIER 1 VW AG 2 Oracle Corp. 3 Sun Microsys. 2. Lösungsansatz • • • • • • Semantik nachvollziehbar einfache Integration mit anderen Tabellen Tuning für bestimmte Abfragen möglich Volltextsuche schwierig Komplexe Logik (Dokumentzerlegung) Informationsverluste gute Eignung, wenn XML als reines Transportformat dient und die relationale Tabellenform im Vordergrund steht. 3. Lösungsansatz • • • • • • Reine XML-Datenbank "native" XML-Speicherung für XML Strukturen optimiert gute XML Schnittstellen gute XML-Indizierung Integration mit relationalen Daten schwierig • • Locking-Verhalten Referentielle Integrität Native XML-Speicherung XML:DB Initiative Definition – Unterstützt das XML-Datenmodell Elemente, Attribute, PCDATA, Kommentare, ... – – – Garantiert 1:1-Wiederherstellung des XMLDokumentes Unterstützt standardkonforme Abfragesprachen Ist unabhängig von physikalischer Speicherung! Praxisanforderungen Lösungsansatz: I II III native XML-Speicherung Nein Nein Ja XML-Standardkonformität Nein Nein Ja offene Schnittstellen Nein Nein Ja Integrität relational - XML Nein Ja Nein relationale XML-Darstellung Nein Ja Nein Ja Ja Nein XML-Darstellung von rel. Tabellen Oracle XML DB: zwei Welten ... XML Server SQL XML RDBMS ... wachsen zusammen! Oracle SQL Indizes Integrität XML Ansichten XML-Technologie mit Oracle Ansichten Indizes Integrität Messaging mit Oracle AQ Oracle XML Technologie Oracle XML DB (seit Oracle Release 2) Oracle XDK (seit Oracle8i ) – – XML Parser [DOM, SAX] XSQL Servlet Dynamische XML-Dokumente auf SQL-Basis XSQL-Pages deklaratorisch – XML Class Generator Geschichte i 8 Release 1 Release 2 Geschichte XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility Release 1 Release 2 Geschichte XML Datentyp SQL-Zugriffe einfache Indizes XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility Release 2 Geschichte XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility XML Schema XML Standards HTTP, WebDAV FTP XML Datentyp SQL-Zugriffe einfache Indizes XML Datentyp SQL-Zugriffe einfache Indizes XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility Oracle XML DB: Architektur User XDB: XML DB Repository HTTP FTP XML Schema User VW: XML Dokumente SQL*NET Oracle Shared Server WebDAV FTP Installation der XML DB Softwareinstallation – Keine Besonderheiten, automatisch bei der DBKonfiguration, zusätzliches Schema XDB, FTP und HTTP-Portkonfiguration Datenbankerstellung Installation der XML DB Installation der XML DB Voraussetzungen: – – – R2 Standard oder Enterprise Edition Oracle Java VM Shared Server um Protokolle zu nutzen Manuelle Installation in eine bestehende Datenbank – – $ORACLE_HOME/rdbms/admin/catqm.sql [XDB-Passwort] [XDB-TS] [TEMP-TS] $ORACLE_HOME/rdbms/admin/catxdbj.sql Deaktivieren der XML DB – – $ORACLE_HOME/rdbms/admin/catnoqm.sql Datenbank neu starten TCP/IP Port für FTP und HTTP TCP/IP Port für FTP und HTTP Manuelle Änderung der Ports über Skripts – $ORACLE_HOME/rdbms/admin/catxdbdbca.sql [ftp-port] [http-port] Protokollserver abschalten – Initialisierungsparameter dispatchers = (protocol=TCP)(service=<SID>XDB) XML DB Repository xdb$resource Table Name ACL Property Property Property 1 N N Resource_view FTP HTTP B Tree Index Text Index Hierarchical Index XML Tabellen im User Schema Das Repository RESOURCE_VIEW SQL> desc path_view Name ----------------------------------------PATH RES LINK SQL> desc resource_view Name ----------------------------------------RES ANY_PATH PATH_VIEW Null? Type -------- -------------------------VARCHAR2(1024) SYS.XMLTYPE SYS.XMLTYPE Null? Type -------- ------------------------SYS.XMLTYPE VARCHAR2(4000) Folder anlegen PL/SQL declare result boolean; begin result := dbms_xdb.createFolder('/public/VW'); end; COMMIT; per FTP oder im WebDAV-Client Unterschiedliche Speicherarten Die Speicherart richtet sich nach den Anforderungen der Anwendung: Clob Nativ als Dokument Relational Nativ Objektrelational • Konkurrierender Zugriff • Vokabularänderung • Ladeperformance • Abfrage-Performance • Redundanzen • XML Schema Support Unterschiedliche Speicherarten Die Speicherart richtet sich nach den Anforderungen der Anwendung: Clob Nativ als Dokument Relational Nativ Objektrelational • Konkurrierender Zugriff • Vokabularänderung • Ladeperformance • Abfrage-Performance • Redundanzen • XML Schema Support Dokumentorientiertes XML Dokument im Vordergrund Dokument-Transformationen Dokument als kleinste Einheit – Lesen und Schreiben als Ganzes Dokumentteile nur selten Skalare Daten nur selten – Häufig Volltextsuche XML als medienneutrales Speicherformat Datenorientiertes XML Daten im Vordergrund Dokumentkontext nicht unbedingt wichtig Häufig strukturierte Suche – größer-als und kleiner-als Abfragen XML als Austauschformat – – Standardisierung der Werkzeuge Integration in die IT-Landschaft Mischformen Beide Konzepte in einem Dokument Beispiele: – Zeitungsartikel mit strukturierten Zusatzinformationen Autor, Zeitung, Erscheinungsdatum ... – Kreditanträge Strukturierte Kunden- und Kreditdaten Unstrukturierte Begründungen Technologie-Stack XML-Dokumentspeicherung OS-Blöcke System Calls Technologie-Stack XML-Dokumentspeicherung relationale Tabellen (Oracle 1.0) SQL OS-Blöcke System Calls Technologie-Stack XML-Dokumentspeicherung Objektrelationale Datenbank (Oracle 8.0) SQL – Objektrelationale Syntax (SQL99) relationale Tabellen SQL OS-Blöcke System Calls Technologie-Stack XML-Dokumentspeicherung XML DB (Oracle 9.2) XML-Navigation XPath Objektrelationale Datenbank SQL – Objektrelationale Syntax (SQL99) relationale Tabellen SQL OS-Blöcke System Calls Technologie-Stack rein dokumentorientiertes XML XML DB XML-Navigation XPath CLOB-Datentyp relationale Tabellen SQL OS-Blöcke System Calls Beispiel: Börsennachrichten Beispiel: Börsennachrichten Beschreibung als XML Schema Beispiel: Börsennachrichten Überlegungen ... Strukturierte Informationen – – – – (WKN, Reuters-Code, Quelle, Kontakte, Datum) Zugriff auf Elemente im Vordergrund Kombination mit bspw. Kursdatenbank Strukturierte Speicherung Unstrukturierte Informationen – – – Zugriff auf den vollständigen Text im Vordergrund Volltextsuche Unstrukturierte Speicherung Beispiel Börsennachricht Registrierung des XML Schemas 1. Ansatz: – – W3C XML Schema wird unverändert in Oracle registriert Oracle Enterprise Manager Beispiel Börsennachricht Registrierung des XML Schemas Schema-URL zur Identifizierung des XML Schemas in der Datenbank URL sinnvoll jeder String möglich Beispiel Börsennachricht Ergebnisse: Feingranulares Mapping Abbildung nach Objektmodell darüberhinaus „BODY“-Element SQL-Datentypen Systemgenerierte SQL-Namen – – – Case-Sensitiv Sequence-Element für Eindeutigkeit über Namespaces hinweg Neue Namen bei neuer Schema-Registrierung Tabellen für XML-Dokumente bereits angelegt "annotated" XML Schema XML Schema mit "Zusatzinformationen" Herstellerspezifische Tags und Attribute zur Steuerung der Persistenz Namespace-Konzept bei der Schema-Prüfung ignoriert der Parser gemäß W3C "alle Namespaces, die er nicht kennt" – – Datenbankunabhängige Parser beachten nur das allgemeine XML Schema Bei Registrieren in der Datenbank beachtet diese nur das allgemeine XML Schema und die eigenen "Annotations" annotated XML Schema http://xmlns.microsoft.com/xml http://www.w3.org/2001/XMLSchema Ein XML Schema kann Annotations für verschiedene Datenbanken enthalten, da die jeweiligen Datenbanken fremde Annotations gemäß W3C ignorieren sollen http://xmlns.oracle.com/xdb Beispiel Börsennachricht Schema Annotations <xs:complexType name="aktie_t"> <xs:attribute name="wkn" use="required" type="xs:string"> <xs:attribute name="name" use="required" type="xs:string"> <xs:attribute name="reuters" use="required" type="xs:string"> <xs:attribute name="branche" use="required" type="xs:string"> </xs:complexType> Das XML Schema beschreibt die Struktur des XML-Dokumentes, nicht deren physikalische Speicherung in einer Datenbank. Die Oracle XML DB macht daher Standard-Annahmen bei der Nachbildung des XML-Datenmodells mit Objekttypen. Beispiel Börsennachricht Schema Annotations <xs:complexType name="aktie_t" xdb:SQLType="NR_AKTIE_T"> <xs:attribute name="wkn" use="required" xdb:SQLName="AKT_WKN"> <xs:attribute name="name" use="required" xdb:SQLName="AKT_NAME"> <xs:attribute name="reuters" use="required" xdb:SQLName="AKT_REUTERSCODE"> <xs:attribute name="branche" use="required" xdb:SQLName="AKT_BRANCHE"> </xs:complexType> SQLType: Abbildung von XML-Datentypen auf Oracle-Datentypen SQLName: Benennung von Elementen in Oracle Der XML-Komplexe Typ „aktie_t“ wird in der Datenbank als Objekttyp „NR_AKTIE_T“ nachgebildet. Beispiel Börsennachricht Schema Annotations <xs:element name="body" xdb:SQLName="NR_BODY"> <xs:complexType mixed="true" xdb:SQLType="CLOB"> <xs:choice minOccurs="0" maxOccurs="unbounded"> </xs:complexType> </xs:element> SQLType: Abbildung von XML-Datentypen auf Oracle-Datentypen SQLName: Benennung von Elementen in Oracle Der komplexe Typ für den Nachrichten-Body wird nicht als Objekttyp, sondern als CLOB abgebildet. Beispiel Börsennachricht Schema Annotations <xs:element name="kontakt" type="kontakt_t" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="NR_KONTAKT" xdb:defaultTable="NR_KONTAKT_TAB" xdb:SQLInline="false" /> SQLInline: Speicherung in einer separaten Tabelle (true = nein; false = ja) defaultTable: Name der Objekt-Tabelle Die Kontakte werden in einer separaten Tabelle NR_KONTAKT_TAB gespeichert Beispiel: Börsennachrichten Beschreibung als XML Schema Speicherung als Ganzes Beispiel Börsennachricht Registrierung des XML Schemas 2. Ansatz: – – – – Oracle-Annotations SQLType SQLName ... Beispiel Börsennachricht Ergebnisse: Anforderung genaues Mapping Abbildung nach Objektmodell BODY Element als Fließtext (CLOB) abgebildet SQL-Datentypen Eigene SQL-Namen – – – Hier: case-insensitiv Ohne Sequence-Element Bei jeder Schema Registrierung gleich Tabellen für Nachrichten und Kontakte angelegt Beispiel Börsennachrichten Neue Tabellen anlegen – XMLTYPE als Datentyp CREATE TABLE nachrichten_tab ( nr_id number(10), nr_nachricht xmltype ); Ohne Angabe eines bereits registrieren XML Schemas fehlen die Angaben zur Objektrelationalen Speicherung, daher wird dokumentbasiert als CLOB gespeichert. Beispiel Börsennachrichten Neue Tabellen anlegen – XMLTYPE als Datentyp CREATE TABLE nachrichten_tab ( nr_id number(10), nr_nachricht xmltype ) xmltype column nr_nachricht store as object relational xmlschema "<schema-url>" element "<root element>" XML Schema referenzieren <nachricht xmlns="http://www.oracle.com/aktie/nachrichten.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" typ="Unternehmensmeldung" xsi:schemaLocation="http://www.oracle.com/aktie/nachrichten.xsd C:\nachrichten.xsd" > W3C-Standardkonforme Verknüpfung von XML Dokument und XML Schema. Das Dokument wird häufig als "Instanz" des XML Schemas bezeichnet. Gut zu erkennen ist die Lage des Schemadokumentes im Dateisystem. XML Schema referenzieren <nachricht xmlns="http://www.oracle.com/aktie/nachrichten.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" typ="Unternehmensmeldung" xsi:schemaLocation="http://www.oracle.com/aktie/nachrichten.xsd http://www.oracle.com/aktie/nachrichten.xsd" > Unter dieser URL wurde das XML Schema in Oracle mit dem Enterprise Manager registriert. Beispiel Börsennachrichten Status .... XML Schema – – Oracle Annotations vorhanden Schema in der Datenbank registriert Speicherungsmodell objektrelational – – Objekttypen vorhanden Tabelle vorhanden Laden objektrelationale Speicherung – – – XML Schema muss in XML-Dokument referenziert sein FTP und WebDAV SQL und SQL*Loader Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf Nein XML Schema? Ohne Schema-Referenz ist keine Tabellenzuordnung und somit keine objektrelationale Speicherung möglich. Oracle kann nicht wissen, ob dieses XML Dokument gültig ist oder nicht und speichert es daher als Datei ins XML DB Repository. dokumentbasiert im XML DB Repository Beispiel Börsennachrichten Laden mit FTP oder WebDAV Ja XML Schema registriert? Referenz auf XML Schema? Nein Wenn das XML Schema nicht registriert wurde, kann Oracle ebenfalls nicht prüfen, ob das XML Dokument gültig ist oder nicht. Es wird daher ebenfalls als Datei ins XML DB Repository abgelegt. dokumentbasiert im XML DB Repository Beispiel Börsennachrichten Laden mit FTP oder WebDAV Ja Ja XML Schema registriert? Ja Verstoß gegen Constraints? Dokument wird abgewiesen Referenz auf XML Schema? Wenn die Inhalte des XML-Dokuments gegen hinterlegte Integritätsbedinungen verstoßen, wird es abgelehnt. Es ist für die Datenbank ungültig. Beispiel Börsennachrichten Laden mit FTP oder WebDAV Ja Ja Referenz auf XML Schema? XML Schema registriert? Verstoß gegen Nein Constraints? objektrelational in XMLTYPE-Tabelle Beispiel Börsennachrichten: Constraints und Datenmodell In XML ist das Dokument die zentrale Einheit Integritätsbedingungen ohne weiteres nur innerhalb des Dokumentes möglich Referenz zu anderen Dokumenten oder Daten muss programmiert werden nachricht: aktie datum quelle kontakte titel body 1 1 1 * aktie: wkn name branche reuters kontakte: ziel art adresse Beispiel Börsennachrichten: Constraints und Datenmodell Überschreiten der Dokumentgrenze Integritätsbedingungen möglich zu ... – – – relationalen Tabellen anderen XML-Dokumenten Flat files (external tables) nachricht: aktie datum quelle kontakte titel body * 1 1 * aktie: wkn name branche reuters kontakte: ziel art adresse Beispiel Börsennachrichten SQL INSERT INSERT INTO NR_NACHRICHT_TAB VALUES ( XMLTYPE ( '<?xml version="1.0"?><nachricht xmlns........ ) ); Schemavalidierung "leichte Schemaprüfung" – – – beim Einfügen Strukturprüfung Performancegründe vollständige Schemavalidierung – – – aktivierbar Trigger XMLTYPE.schemaValidate() Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – – Protokoll Hostname und TCP/IP Port http://localhost:9080/ Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – – – Protokoll Hostname und TCP/IP Port Datenbank-Kürzel http://localhost:9080/oradb/ Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – – – – Protokoll Hostname und TCP/IP Port Datenbank-Kürzel Datenbankschema http://localhost:9080/oradb/VW Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – – – – – Protokoll Hostname und TCP/IP Port Datenbank-Kürzel Datenbankschema Tabelle http://localhost:9080/oradb/VW/ NR_NACHRICHT_TAB Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – – – – – – Protokoll Hostname und TCP/IP Port Datenbank-Kürzel Datenbankschema Tabelle Optional: XPath Einschränkung http://localhost:9080/oradb/VW/ NR_NACHRICHT_TAB/ ROW/nachricht/kontakt[ziel="Finanzen.net"] Zugriff mit SQL Zugriff auf XML-Elemente XPath SQL-Funktionen – – – EXTRACT EXTRACTVALUE EXISTSNODE Zugriff mit SQL Gib mir von allen Nachrichten das Datum, die Aktiengesellschaft und den Titel select extractvalue (value(e), '/nachricht/datum') as datum ,extractvalue (value(e), '/nachricht/aktie/@name') as ag ,extractvalue (value(e), '/nachricht/titel') as titel from nr_nachricht_tab e Zugriff mit SQL Gib mir von allen Oracle-Nachrichten das Datum und den Titel select extractvalue (value(e), '/nachricht/datum') as datum ,extractvalue (value(e), '/nachricht/aktie/@name') as ag ,extractvalue (value(e), '/nachricht/titel') as titel from nr_nachricht_tab e where existsnode ( value(e), '/nachricht/aktie[@wkn="871460"]' ) = 1 Ohne „Query Rewrite“ SELECT extractvalue ... FROM nr_nachricht_tab e XML-Dokument DOM-Baum wkn Mit „Query Rewrite“ SELECT extractvalue ... FROM nr_nachricht_tab e Query Rewrite SELECT e.xmldata. ... FROM nr_nachricht_tab e Objektrelational gespeichertes XML-Dokument nachricht: aktie datum quelle kontakte titel body 1 1 1 * aktie: wkn name branche reuters kontakte: ziel art adresse Query Rewrite Optimizer Funktionalität nicht möglich bei ... – – – – XPath Funktionen XPath Variablen Wildcards UNION Operator Technologie-Stack XML-Dokumentspeicherung XML DB (Oracle 9.2) Objektrelationale Datenbank relationale Tabellen OS-Blöcke Q U E XML-Navigation R XPath Y R E SQL – Objektrelationale W Syntax (SQL99) R I T E SQL System Calls Piecewise Update XML Dokumentknoten gezielt ändern kein Ersetzen des Gesamtdokumentes nur auf SQL-Ebene – FTP und WebDAV sind dateiorientiert SQL-Funktion updateXML() Durch Query Rewrite direkte Änderung der Objektrelationalen Tabellenspalten Piecewise Update Ändere den Firmennamen bei den Nachrichten mit der WKN 871460 auf "Oracle Corporation" update nr_nachricht_tab e set value(e) = updatexml ( value(e), ,'/nachricht/aktie/@name' ,'Oracle Corporation' ) where existsnode ( value(e) ,'/nachricht/aktie[@wkn="871460"]' ) = 1 Piecewise Update Ändere die Kontaktart "email" nach "Mail" update nr_kontakte_tab e set value(e) = updatexml ( value(e) ,'/konkakt/@art' ,'Mail' ) where existsnode ( value(e), ,'/kontakt[@art="email"]' ) = 1 Einsatzgebiete für die Praxis Layoutneutrale Dokumentspeicherung Datenaustausch und Integration – – – DWH-Integration mit relationalen Sichten auf XML-Dokumente Datenaustausch mit XML-Sichten auf relationale Datenbestände XML-Messaging Layoutneutrale Dokumentspeicherung Dokumente als XMLTYPE unstrukturiert – – u.U. strukturierte Teile Börsennachrichten Volltextsuche Stylesheet-Transformationen Volltextsuche mit Oracle TEXT Volltextindex auf jedes XML-Dokument möglich Oracle TEXT Index – – – – – – Wildcard Suche (links und rechts) Phrasensuche Unscharfe Suche (Fuzzy) Wortstamm Stopwort-Listen Thesaurus-Unterstützung Volltextsuche mit Oracle TEXT Index anlegen ctx_ddl.create_section_group ( group_name => 'nachrichten_sec_group' ,group_type => 'PATH_SECTION_GROUP' ); create index idx_nachrichten_volltext on nr_nachricht_tab e (value(e)) indextype is CTXSYS.CONTEXT parameters ('section group nachrichten_sec_group') Volltextsuche mit Oracle TEXT Volltextrecherche ... select score(1), value(e) from nr_nachricht_tab e where CONTAINS ( value(e) ,' (Software and Kooperation) INPATH (/nachricht/body) ' ,1 )>0 Stylesheet Transformationen Datenbankintern – Stylesheet muss in der Datenbank vorliegen SQL-Funktion – XMLTransform() Aggregat über mehrere Dokumente – XMLAgg() Stylesheet-Transformationen 1:1-Transformation ... n:1 Transformation ... select xmltransform ( value(e) ,xdburitype ( '/public/idevelop/nachricht_html.xsl' ).getxml() ) from nr_nachricht_tab e Stylesheet-Transformationen View-Definition TABLE VIEW HTTP-Zugriff 1:1 Transformation HTTP-Zugriff n:1 Transformation Einsatzgebiete für die Praxis Layoutneutrale Dokumentspeicherung Datenaustausch und Integration – – – DWH-Integration mit relationalen Sichten auf XML-Dokumente Datenaustausch mit XML-Sichten auf relationale Datenbestände XML-Messaging DWH-Integration Was hat das mit XML zu tun? Data Warehouse – – – relationale Tabellen Star Schema Auswertungswerkzeuge XML – – – hierarchisch W3C-Abfragesprachen XML-Parsing-Vorgänge sehr aufwendig Integration mit relationalen Views Beispiel Börsennachrichten Kontaktinformationen – – – relationale Tabelle schneller Zugriff Herausforderung: eine Nachricht hat viele Kontakte WKN GESELLSCHAFT KONTAKTART ADRESSE Beispiel Börsennachrichten Kontakt-View create or replace view nr_kontakte as select extractvalue (value(e), '/nachricht/aktie/@wkn') as wkn ,extractvalue (value(e), '/nachricht/aktie/@name') as gesellschaft ,extractvalue (value(k), '/kontakt/@art') as kontaktart ,extractvalue (value(k), '/kontakt/ziel') as kontaktziel ,extractvalue (value(k), '/kontakt/adresse') as adresse from nr_nachricht_tab e ,table(xmlsequence(extract(value(e),'/nachricht/kontakt'))) k Beispiel Börsennachrichten Weiterverarbeitung View-Definition Oracle SQL PL/SQL Beispiel Börsennachrichten Kontakt-View Doppelte Kontakte eliminieren insert into nr_kontakte_rel_tab ( wkn, gesellschaft, kontaktart, kontaktziel, adresse ) ( select distinct wkn, gesellschaft, kontaktart, kontaktziel, adresse from nr_kontakte ) Einsatzgebiete für die Praxis Layoutneutrale Dokumentspeicherung Datenaustausch und Integration – – – DWH-Integration mit relationalen Sichten auf XML-Dokumente Datenaustausch mit XML-Sichten auf relationale Datenbestände XML-Messaging Beispiel Aktienkurse relationales Tabellenschema aktien_tab: wkn name 1 * kurse_tab: wkn datum kurs Beispiel Aktienkurse XML Views Erstellen der View create or replace view aktienkurse_xml as select XMLElement( "Aktienkurse", XMLElement("Aktie", XMLAttributes( wkn as "WKN", ak.name as "Gesellschaft")), XMLElement("Kurse", XMLAgg( XMLElement( "Kurs" ,XMLAttributes( k.datum as "vom"), k.kurs)))) as kurse_dokument from aktien_tab ak join kurse_tab k using (wkn) where k.datum > sysdate-60 group by wkn, ak.name XML Views Nutzbar wie XMLType Tabellen Stylesheet-Transformationen Zugriff durch HTTP einfacher Austausch relational vorliegender Daten XML-Datenaustausch mit Views Kommunikation mit Internet-Protokollen HTTP, FTP INSTEAD-OF Trigger Einsatzgebiete für die Praxis Layoutneutrale Dokumentspeicherung Datenaustausch und Integration – – – DWH-Integration mit relationalen Sichten auf XML-Dokumente Datenaustausch mit XML-Sichten auf relationale Datenbestände XML-Messaging Oracle Advanced Queuing Datenbankinternes Messaging Asynchron Point-to-Point / Publish-Subscribe Nutzung der Oracle Datenbank – Backup / Recovery, Datenintegrität, Skalierbarkeit, Nachrichten-Persistenz Transaktionskonzept SQL-Zugriff Oracle Advanced Queuing Messaging auf einem Rechnerknoten Point-to-Point Oracle Anwendung Enqueue Dequeue Advanced Queueing Anwendung Anwendung Oracle Advanced Queuing Messaging auf einem Rechnerknoten publish-subscribe Oracle publish subscribe Anwendung Advanced Queueing Anwendung publish Anwendung Anwendung subscribe Oracle Advanced Queuing Messaging über Rechnergrenzen Oracle Propagate Dequeue Anwendung Enqueue Anwendung Oracle Anwendung Advanced Queues Enqueue Advanced Queues Oracle Propagate Dequeue Advanced Queues Anwendung Oracle AQ Fähigkeiten Nachrichten – – – – – Nachrichten können nach dem Dequeue behalten werden Nachrichten-Historie Nachrichten-Transformation Kombination mit Oracle DWH-Fähigkeiten Business-Intelligence API-Unterstützung – – SQL, PL/SQL (DBMS_AQ) Java (JMS, Oracle AQ API, JDBC) Oracle AQ – PL/SQL Pakete DBMS_AQADM – – – – Administrative Aufgaben Einrichten von Queues Einrichten von Queue Tabellen Rechteverwaltung DBMS_AQ – – – Umgang mit Queues Einstellen von Nachrichten (ENQUEUE) Auslesen von Nachrichten (DEQUEUE) Oracle AQ Nachrichten-Transformation Oracle Propagate Dequeue Anwendung Enqueue Advanced Queues Oracle Anwendung Transform Anwendung Enqueue Advanced Queues Oracle Anwendung Propagate Advanced Queues Transform Dequeue Oracle AQ - Transformationen PL/SQL oder Java-Funktion Aktiv ... – – – direkt nach dem ENQUEUE direkt vor dem DEQUEUE direkt vor oder nach dem PROPAGATE Oracle AQ und XML DB Definition des Queue-Payload als XMLType Nachrichten-Transformation mit XSLT ENQUEUE / DEQUEUE mit – – AQ Servlet Oracle XML DB und RDBMS Trigger Zugriff auf Dokumentteile Integration mit Views – – Relationale Views auf Queue Tabelle XML-Views auf relationale Tabellen mit anschließendem ENQUEUE des virtuellen Dokumentes Oracle AQ und XML DB Datenbank II [Order] Oracle Anwendung FTP HTTP Datenbank I Datenbank III [DWH] Oracle AQ und XML DB Datenbank II [Order] Oracle Anwendung Log FTP HTTP Enqueue Datenbank I Datenbank III [DWH] Oracle AQ und XML DB Datenbank II [Order] Propagate Oracle Anwendung Log Dequeue FTP HTTP Enqueue Datenbank I Propagate Datenbank III [DWH] Oracle AQ und XML DB Datenbank II [Order] Dequeue Propagate Oracle Anwendung Log Dequeue FTP HTTP Enqueue Datenbank I Dequeue Propagate Datenbank III [DWH] Weitere Informationen Oracle Technology Network – http://otn.oracle.com/tech/xml/xmldb/content.html – http://otn.oracle.com/products/aq/index.html Dokumentation – Oracle XML database Developers Guide http://download-west.oracle.com/docs/cd/B10501_01 /appdev.920/a96620/toc.htm – Oracle Application Developer's Guide - Advanced Queuing http://download-west.oracle.com/docs/cd/B10501_01 /appdev.920/a96587/toc.htm