Oracle XML DB: Architektur XML DB Repository HTTP FTP XML Schema SQL*NET XML Dokumente Oracle XML DB: Architektur XML DB Repository HTTP FTP XML Schema SQL*NET Oracle MTS XML Dokumente Oracle XML DB: Architektur XML DB Repository HTTP FTP XML Schema SQL*NET Oracle MTS XML Dokumente WebDAV FTP Http-Zugriff in Oracle9i relationale und XML Tabellen Suche mit XPath-Ausdrücken Http-Zugriffe Stylesheet-Transformationen in der Datenbank 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: – – – 9i 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) TCP/IP Port für FTP und HTTP Skriptgesteuert – $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) Das Repository RESOURCE_VIEW PATH_VIEW SQL> set long 1000 SQL> SELECT extract(r.res,'/Resource/ModificationDate') FROM resource_view r 2* WHERE equals_path(r.res,'/deptinst2.xml')>0 EXTRACT(R.RES,'/RESOURCE/MODIFICATIONDATE') -----------------------------------------------------------------------------<ModificationDate xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd"> 2002-05-13T17:00:09.775591 </ModificationDate> Folder anlegen PL/SQL declare result boolean; begin result := dbms_xdb.createFolder('/public/IDEVELOP'); dbms_xdb.setAcl ('/public/IDEVELOP','/sys/acls/all_owner_acl.xml'); 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 XML Schema DDL für XML in XML DTD Unzulänglichkeiten Strukturen Bedingungen (Constraints) Datentypen OO-Konzepte XML Schema "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 XML Schema im Beispiel <?xml version="1.0" encoding="UTF-8" ?> <xs:schema targetNamespace="http://www.fundsinc.com/funds/order.xsd" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.fundsinc.com/funds/order.xsd"> targetNamespace: zur Referenzierung des Schemas durch ein Dokument XML Schema im Beispiel <xs:element name="customer" > <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="street" type="xs:string" /> <xs:element name="city" type="xs:string" /> ... </xs:sequence> </xs:complexType> </xs:element> 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. XML Schema im Beispiel <xs:element name="customer" xdb:SQLName="CUSTOMER" xdb:SQLType="CUSTOMER_T"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" xdb:SQLName="NAME" xdb:SQLTYPE="VARCHAR2" /> <xs:element name="street" type="xs:string" xdb:SQLName="STREET" xdb:SQLTYPE="VARCHAR2" /> <xs:element name="city" type="xs:string" xdb:SQLName="CITY" xdb:SQLTYPE="VARCHAR2" /> ... </xs:sequence> </xs:complexType> </xs:element> SQLName: Benennung von Elementen in Oracle9i SQLType: Abbildung von XML-Datentypen auf Oracle-Datentypen XML Schema registrieren XML Schema mit Annotations – – – – W3C-Standard Objektnamen Objekttabellen Speicherstrukturen PL/SQL Paket – – DBMS_XMLSCHEMA.REGISTERSCHEMA DBMS_XMLSCHEMA.DELETESCHEMA XML Schema registrieren Oracle Enterprise Manager Tabellen für XML Dokumente dokumentbasierter Speicherung – – Schemabindung keine Schemabindung modellbasierte Speicherung – Schemabindung create table order_tab of xmltype store as object relational xmlschema "http//www.fundsinc.com/funds/order.xsd" element "order" XML Tabellen im Beispiel TABLE OF XMLTYPE XMLSCHEMA.... XML Tabellen im Beispiel TABLE OF XMLTYPE XMLSCHEMA.... <?xml version="1.0" encoding="UTF-8" ?> <order xmlns="http://www.fundsinc.com/funds/order.xsd" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance" xsi:schemaLocation="http://www.fundsinc.com/funds/order.xsd http://www.fundsinc.com/funds/order.xsd"> . . . </order> XML Tabellen TABLE OF XMLTYPE XMLSCHEMA.... XMLDATA order customer funds funds funds name street city wkn wkn wkn name name name amount amount amount Select select extract(value(e), '/order/customer/name') from order_tab where existsnode(value(e),'/order/funds[wkn="471100"]')=1 XPath in WHERE-Klausel selektiert das Dokument XPath in Select-Liste selektiert innerhalb des Dokumentes Update update order_tab e set value(e) = updatexml (value(e),'/order/funds[wkn="999999"]/name/text()', 'no funds') where existsnode(value(e),'/order/funds[wkn="999999"]')=1 updateXML()-Funktion XPath Ausdruck Update findet auf den gespeicherten Objekten statt – KEIN DOM-Parsing Query Rewrite select extractvalue( value(e), '/order/customer/name') from order_tab e; select e.xmldata.customer.name from order_tab e; Query Rewrite Optimierung der SQL-Kommandos XPath Auswertung – – ohne Parsen des Gesamtdokuments objektrelationales Mapping gezielte Ansprache der objektrelationalen Tabellenspalten Query Rewrite Das Abfragen von Teilinformationen aus einem XML Dokument mußte bislang durch Parser-Funktionalität erfüllt werden. Das implizierte den Aufbau eines DOM-Baumes. Objektrelationale Tabelle DOM-Baum order customer funds funds funds XPath: wkn wkn wkn name name name amount amount amount /order/customer/name name street city Query Rewrite Der direkte Zugriff auf die objektrelationalen Tabellenspalten kann durch Anwendung von Query Rewrite erfolgen. Objektrelationale Tabelle order customer funds funds funds XPath: wkn wkn wkn name name name amount amount amount /order/customer/name name street city Concurrency order customer funds name wkn street name city Update 1 count warten..... Update 2 1 Dokument enspricht 1 Tabellenzeile Release 1 Concurrency order customer name street city Tabelle funds funds funds wkn funds wkn wkn name wkn name name count name count count count Tabelle Release 2 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 Integration durch relationale Views Tabelle Kunden Deptno Dname Name 1 2 : : BDU Sales : : Carsten... Ulrike : : relationale Ansichten create or replace view order_view as select extractvalue(value(e),'/order/customer/name') as CNAME, extractvalue(value(e),'/order/customer/city') as CCITY, extractvalue(value(i),'/funds/wkn') as FWKN, extractvalue(value(i),'/funds/fundsname') as FNAME from order_tab e, table( xmlsequence(extract(value(e),'/order/funds')) ) i Integration durch XML-Sichten Tabelle Kunden Deptno Dname Name 1 2 : : BDU Sales : : Carsten... Ulrike : : XML Sichten durch HTTP – – – Zugriff mit XPath und Internet-Explorer Ansicht wird implizit erzeugt Stylesheet-Transformation möglich Explizite XML View – – Schemagebunden nicht Schemagebunden Oracle9i Advanced Queuing Datenbankinternes Messaging Asynchron Point-to-Point / Publish-Subscribe Nutzung der Oracle Datenbank – Backup / Recovery, Datenintegrität, Skalierbarkeit, Nachrichten-Persistenz Transaktionskonzept SQL-Zugriff Oracle9i Advanced Queuing Messaging auf einem Rechnerknoten Point-to-Point Oracle9i Anwendung Enqueue Dequeue Advanced Queueing Anwendung Anwendung Oracle9i Advanced Queuing Messaging auf einem Rechnerknoten publish-subscribe Oracle9i publish subscribe Anwendung Advanced Queueing Anwendung publish Anwendung Anwendung subscribe Oracle9i Advanced Queuing Messaging über Rechnergrenzen Oracle9i Propagate Dequeue Anwendung Advanced Queues Enqueue Anwendung Oracle9i Anwendung Advanced Queues Enqueue Oracle9i Propagate Dequeue Advanced Queues Anwendung Oracle9i AQ Fähigkeiten Nachrichten – – – – – Nachrichten können nach dem Dequeue behalten werden Nachrichten-Historie Nachrichten-Transformation Kombination mit Oracle9i DWH-Fähigkeiten Business-Intelligence API-Unterstützung – – SQL, PL/SQL (DBMS_AQ) Java (JMS, Oracle AQ API, JDBC) Oracle9i 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) Oracle9i AQ Nachrichten-Transformation Oracle9i Propagate Dequeue Anwendung Enqueue Advanced Queues Oracle9i Anwendung Transform Anwendung Enqueue Advanced Queues Oracle9i Anwendung Propagate Advanced Queues Transform Dequeue Oracle9i AQ - Transformationen PL/SQL oder Java-Funktion Aktiv ... – – – direkt nach dem ENQUEUE direkt vor dem DEQUEUE direkt vor oder nach dem PROPAGATE Oracle9i 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 Oracle9i AQ und XML DB Datenbank II [Order] Oracle9i Anwendung FTP HTTP Datenbank I Datenbank III [DWH] Oracle9i AQ und XML DB Datenbank II [Order] Oracle9i Anwendung Log FTP HTTP Enqueue Datenbank I Datenbank III [DWH] Oracle9i AQ und XML DB Datenbank II [Order] Propagate Oracle9i Anwendung Log Dequeue FTP HTTP Enqueue Datenbank I Propagate Datenbank III [DWH] Oracle9i AQ und XML DB Datenbank II [Order] Dequeue Propagate Oracle9i Anwendung Log Dequeue FTP HTTP Enqueue Datenbank I Dequeue Propagate Datenbank III [DWH] Q U E S T I O N S A N S W E R S