HP IT-Symposium 2006 Page 1 www.decus.de 1 HP IT-Symposium 2006 Oracle – Die XML Datenbank Nikolaus Eichler STCC Düsseldorf ORACLE Deutschland GmbH Warum XML in der Datenbank ...? Page 2 www.decus.de 2 HP IT-Symposium 2006 ... und nicht einfach im Dateisystem? Herausforderungen Abruf als XML Beispiele: - heterogene Systeme - XML Schnittstellen - Versorgung des Workflow - Abruf per HTTP oder FTP relationale Datenbestände Page 3 www.decus.de 3 HP IT-Symposium 2006 Herausforderungen Beispiele: - XML als Austauschformat im e-Business - Sammlung und Aggregation im DWH - DWH-Versorgung aus heterogenen Systemen Abruf mit SQL XML-Dokumente Überführung in DWH oder andere Anwendung XML Standards • • • • • • • XML – W3C DOM – W3C XPath – W3C XML Schema – W3C XSL and XSLT – W3C WebDAV - IETF SQL/XML – ANSI/ISO Page 4 www.decus.de 4 HP IT-Symposium 2006 Oracle XML DB: Entwicklung 9iR2 9iR1 8i XML-Datentyp eingeführt Oracle XML DB Repository (für XML Schema) Ausbau der bestehenden Funktionalitäten • Performance • größere XML Dokumente • DOM API für "C" • Schema Evolution • Im- und Export • direct load • XQuery XML Generierung und Verarbeitung Oracle XML DB: zwei Welten ... RDBMS XML Server Änderungen Änderungen XQuery SQL XPath Recherchen Recherchen Page 5 www.decus.de 5 HP IT-Symposium 2006 ... wachsen zusammen! Oracle XML DB XQuery XPath SQL Transformationen XML- Sichten SQL*Net HTTP / WebDAV Recherchen FTP Relationale Sichten Oracle XML DB Repository - Architektur JDBC Oracle Net SQL XML Table Repository Resource View Schema Page 6 www.decus.de 6 HP IT-Symposium 2006 Oracle 9iR2 u. 10g – XML und SQL Integration Schema Registration XML JNDI Schema Namespaces TCP/IP HTTP WebDav XML Dokumente Oder Nachrichten FTP DOM Intelligent Indexing JNDI XML Views SQLX XSLT Transforms XPath ACLs Java Beans Foldering XML Schemas XML Attributes XML Dokumente und Fragmente Relationale Tabellen Versioning native Speicherung • • • vollständige 1:1-Wiederherstellung des gespeicherten Dokumentes n y Reihenfolge sche !!! i n h y Elemente / Attribute r tec e Rolle e d in y "Processing-Instructions" se Wei pielt ke d n W3C-Standardkonformer tu g s Zugriff e Ar ntierun i D y XPath eme l ImpDOM - API y Java Transparenter Zugriff Page 7 www.decus.de 7 HP IT-Symposium 2006 Oracle XML DB 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 • XML Schema Support Relationale Speicherung Clob Nativ als Dokument Relational Nativ Objektrelational y hierarchische Strukturen der XML Dokumente werden für die relationale Speicherung "aufgebrochen" y Struktur des XML Dokumentes muß ggf. für spätere Weiterverwendung neu aufgebaut werden Page 8 www.decus.de 8 HP IT-Symposium 2006 Speicherung als CLOB Clob Nativ als Dokument Relational Nativ Objektrelational y Speicherung als CLOB (Zeichenkette); DB weiß nicht, daß es sich beim Inhalt um XML handelt y keine Prüfung auf Wohlgeformtheit oder Gültigkeit beim Input y beim nachträglichen Ändern wird das gesamte Dokument ausgetauscht y Dateninput programmiertechnisch oder über den SQL Loader Native Speicherung Clob Nativ als Dokument Relational Nativ Objektrelational y CLOB:Der DB ist bekannt, daß es sich um XML handelt y Prüfung auf Wohlgeformtheit beim Input y ggf. Prüfung auf Gültigkeit y beim nachträglichen Ändern ist immer das gesamte Dokument betroffen y Dateninput programmiertechnisch /WebDAV/FTP Page 9 www.decus.de 9 HP IT-Symposium 2006 Objektrelationales Mapping y y y Clob Nativ als Dokument Relational Nativ Objektrelational y y y Speicherung objektrelational Prüfung auf Gültigkeit Optimierung der Abfrageperformance durch Query ReWrite nachträgliche Änderungen können gezielt durchgeführt werden Dateninput programmiertechnisch, über den SQL Loader und über ftp / WebDAV "DOM-Fidelity" gewährleistet Datentyp XMLTYPE • Verwendbar wie jeder andere Datentyp • Tabellenspalten • PL/SQL-Logik • Speicherungsform • CLOB • Objektrelational (XML Schema) • Unabhängige Schnittstelle • EXTRACT, EXTRACTVALUE • SCHEMAVALIDATE Page 10 www.decus.de 10 HP IT-Symposium 2006 DOM Rechnung <?xml version="1.0" ?> <rechnung> <kunde> <name>Franz Mustermann</name> <strasse>Musterstr. 1</strasse> <ort>80981 Musterstadt</ort> </kunde> <bestellung> <artikel> <nr>4711</nr> <name>CD Rom</name> <anzahl>1000</anzahl> </bestellung> </rechnung> Kunde name Bestellung Artikel strasse ort Artikel nr nr name name anzahl anzahl DOM • Nachbildung der XML Struktur mit Objektbaum • Durch XML Parser • In-Memory-Struktur • Navigation möglich • Strukturänderungen möglich • für alle OO-Programmiersprachen • Hoher Speicherbedarf Page 11 www.decus.de 11 HP IT-Symposium 2006 Tabellen anlegen Speicherungsform als CLOB • Neue Tabellen anlegen • XMLTYPE als Datentyp CREATE TABLE nachrichten_tab ( nr_id number(10), nr_nachricht xmltype ); Ohne Angabe eines bereits registrierten XML Schemas fehlen die Angaben zur objektrelationalen Speicherung, daher wird dokumentbasiert als CLOB gespeichert. Tabellen anlegen Objektrelationale Speicherungsform • 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>" Page 12 www.decus.de 12 HP IT-Symposium 2006 XML Schema Codebeispiel <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. "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" Page 13 www.decus.de 13 HP IT-Symposium 2006 Schema Annotations Interne Namensgebung <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. Schema Annotations Speicherungsform für Fragmente <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. Page 14 www.decus.de 14 HP IT-Symposium 2006 Schema Annotations Speicherung 1:n-Collections <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 XML DB: Zugriffe ftp> open 192.168.2.140 2100 Connected to 192.168.2.140. 220- cczarski-linux-140 Unauthorised use of this FTP server is prohibited and may be subject to civil SQL> and criminal prosecution. select extract(object_value, '/nachricht/aktie').getstringval() 220 cczarski-linux-140 FTP Server (Oracle XML DB/Oracle Database) ready. 2 from "nachricht429_TAB" e; ftp> user xmldemo xmldemo 331 pass required for XMLDEMO XML_TITEL 230 XMLDEMO logged in ----------------------------------------------------------------------ftp> dir <aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="871460„ 200 PORT Command successfulreuters="ORCL" branche="Software"/> name="Oracle" 150 ASCII Data Connection <aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="871460„ drw-r--r-2 SYS oracle 0 AUG 09 15:48 home name="Oracle" reuters="ORCL" branche="Software"/> drw-r--r-2 SYS oracle 0 AUG 10 11:14 i <aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="840400„ drw-r--r-2 SYS oracle 0 AUG 30 17:57 public name="Allianz" reuters="ALV" branche="Versicherungen"/> drw-r--r-2 SYS oracle 0 AUG 09 15:48 sys : 226 ASCII Transfer Complete ftp: 238 SQL>bytes received in 0,03Seconds 7,93Kbytes/sec. ftp> Page 15 www.decus.de 15 HP IT-Symposium 2006 Zugriff mit HTTP • Zugriff mit URL • Protokoll • Hostname und TCP/IP Port http://neichler-de:8080/ Zugriff mit HTTP • Zugriff mit URL • Protokoll • Hostname und TCP/IP Port • Datenbank-Kürzel http://neichler-de:8080/oradb/ Page 16 www.decus.de 16 HP IT-Symposium 2006 Zugriff mit HTTP • Zugriff mit URL • • • • Protokoll Hostname und TCP/IP Port Datenbank-Kürzel Datenbankschema http://neichler-de:8080/oradb/SCOTT Zugriff mit HTTP • Zugriff mit URL • • • • • Protokoll Hostname und TCP/IP Port Datenbank-Kürzel Datenbankschema Tabelle/View http://lneichler-det:8080/oradb/SCOTT/EMP Page 17 www.decus.de 17 HP IT-Symposium 2006 Zugriff mit HTTP • Zugriff mit URL • • • • • • Protokoll Hostname und TCP/IP Port Datenbank-Kürzel Datenbankschema Tabelle/View Optional: XPath Einschränkung http://neichler-de:8080/oradb/SCOTT/EMP/ROW[ENAME="MILLER"] Zugriff mit HTTP • Zugriff mit URL • • • • • • • Protokoll Hostname und TCP/IP Port Datenbank-Kürzel Datenbankschema Tabelle/View Optional: XPath Einschränkung Optional: Rowsettag für Wellformed XML http://neichler-de:8080/oradb/SCOTT/EMP/ ROW/ENAME?rowsettag=Employees Page 18 www.decus.de 18 HP IT-Symposium 2006 XPath • • • • • • W3C-Standard Navigation in einem XML Dokument Analog Verzeichnisbaum /Rechnung/Kunde/name Inhaltliche Einschränkung möglich /Rechnung[/kunde/name="Ellision"] XQuery: FLWOR-Ausdrücke Page 19 www.decus.de 19 HP IT-Symposium 2006 XQuery and SQL/XML • • • XQuery – In der Entwicklung befindender W3C Abfrage Standard für XML SQL/XML Standard – SQL Standard zur Integration von XML und XQuery in SQL (http://www.sqlx.org) SQL/XML 2003 Standard • • XML als “built-in type” in SQL SQL/XML Darstellungsfunktionen zum generieren von XML aus relationalen Daten • • XMLElement(), XMLForest(), XMLAgg(), XMLConcat() SQL/XML 2005 • • XMLQuery- Abfrage von XML mit “embedded” XQuery XMLTable construct – Transformation des XQuery Ergebnisses in eine raltionale Struktur XQuery Anwendungsgebiete XQuery Transformation XML nach XML •XSLT •SQL/XML XML-Abfragen •XPath •SQL •SQL/XML XML erzeugen •SQL/XML •PL/SQL gR 10 2 Relationale Sichten •XPath •SQL Page 20 www.decus.de 20 HP IT-Symposium 2006 Zugriff mit SQL-Funktionen • EXTRACT • EXTRACTVALUE • EXISTSNODE create view ... as select extractvalue (value(po), '/PurchaseOrder/Reference') as reference ,extractvalue (value(po), '/PurchaseOrder/User') as username ,extractvalue (value(po), '/PurchaseOrder/CostCenter') as cc from PURCHASEORDER_TAB po Zugriff mit SQL Hierarchie vs. flache Tabellen • Übersetzung ... • XMLSEQUENCE()-Funktion • Auch mehrere Hierarchieebenen möglich select extractvalue (value(po), '/PurchaseOrder/Reference') reference ,extractvalue (value(po), '/PurchaseOrder/User') as username ,count(value(li)) as lineitems from PURCHASEORDER_TAB po, table(xmlsequence(extract (value(po),'/PurchaseOrder/LineItems/LineItem') )) li where existsnode (value(po),'/PurchaseOrder/[CostCenter="A10"]')=1 Page 21 www.decus.de 21 HP IT-Symposium 2006 XML Schema in der Oracle-Datenbank • "Registrierung" • PL/SQL Paket (DBMS_XMLSCHEMA) • Oracle Enterprise Manager • Nachbildung der XML-Strukturen • Oracle Objekttypen • XML-Speicherung als "Objekt" Abfrageoptimierung Query Rewrite SELECT extractvalue(...), ... FROM PURCHASEORDER_TAB Objektrelational gespeicherte XML-Dokumente Query Rewrite SELECT SYS_NC000015$, ... FROM PURCHASEORDER_TAB PurchaseOrder PurchaseOrder PurchaseOrder PurchaseOrder PurchaseOrder * *LineItem LineItem * *LineItem LineItem LineItem 11User 11User User User User Page 22 www.decus.de 22 HP IT-Symposium 2006 Ausführung ohne Query Rewrite DOM Parsing SELECT extractvalue(...), ... FROM PURCHASEORDER_TAB XML-Dokument DOM-Baum wkn Data Dictionary ... • Welche XML Views gibt es ... SQL> select view_name from user_xml_views; VIEW_NAME -----------------------------KUNDE_XML_VIEW DEPOT_XML_VIEW WERTPAPIER_XML_VIEW OVERVIEW_XML_VIEW WERTPAPIER_XML_VIEW_XQUERY DEPOT_XML_VIEW_XQUERY KUNDE_XML_VIEW_XQUERY OVERVIEW_XML_VIEW_XQUERY Page 23 www.decus.de 23 HP IT-Symposium 2006 Oracle XML DB “Oracle 9i is now by every definition that I know of, a native XML database“ Kimbro Staken http://www.xmldatabases.org/radio/xmlDatabases/2002/06/25.html Weitere Informationen • Oracle Dokumentation: XML DB http://download-uk.oracle.com/docs/cd/ B19306_01/appdev.102/b14259/toc.htm • Oracle XML DB im OTN http://www.oracle.com/technology/tech/xml/ xmldb/index.html Page 24 www.decus.de 24 HP IT-Symposium 2006 Q U E S T I O N S A N S W E R S Page 25 www.decus.de 25