<Präsentation> <Speaker> <Name> Carsten Czarski Ulrike Schwinn <?xml version=“1.0“> <!doctype Präsentation [ <!element Speaker (Name)> <!element Name (#pcdata)> <!element Thema (#pcdata)> ]> Oracle Deutschland GmbH </Name> </Speaker> <Thema> “Relational and Beyond”: Oracle9i, die native XML Datenbank </Thema> </Präsentation> Agenda y y y y y y y y Warum XML in der Datenbank? Speicherarten für XML-Dokumente Die Objektrelationale Speicherform Zugriffsarten Integration XML-Datenbank-Architektur Informationen Demonstration Warum XML in der Datenbank ? y y y y y y Vereinigung von verschiedensten Daten (wie z.B. Strukturierte und unstrukturierte Daten) in einem Server Erweiterung des XML Datenmodells Einfache Administration Hohe Skalierbarkeit (Performanz) durch XML Verarbeitung und Datenspeicherung in der DB Standardkonformität der Applikationen Einfache Integrationsmöglichkeiten Agenda y y y y y y y y Warum XML in der Datenbank? Speicherarten für XML-Dokumente Die Objektrelationale Speicherform Zugriffsarten Integration XML-Datenbank-Architektur Informationen Demonstration 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 Geschichte Release 1 Release 2 Geschichte y y y y XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility Release 1 Release 2 Geschichte y y y y y y y y XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility y y y y XML Datentyp dokumentbasiert XPath Zugriffe Indizes XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility Release 2 Geschichte y y y y y y y y y y y XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility y y y y XML Datentyp dokumentbasiert XPath Zugriffe Indizes XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility y y y y y y y y Objektrelational XML Schema Zugriffe mit WebDAV, DOM XML Datentyp dokumentbasiert XPath Zugriffe Indizes XML Werkzeuge relational / CLOB XSQL Servlet XML SQL Utility Agenda y y y y y y y y Warum XML in der Datenbank? Speicherarten für XML-Dokumente Die objektrelationale Speicherform Zugriffsarten Integration XML-Datenbank-Architektur Informationen Demonstration Beispiel order Tabelle order{Verweis auf Customer, Verweis auf funds} customer Tabelle customer{“MaxMustermann“,“Ringstr14“,“Frankfurt“,4711) customer{...} funds Tabelle funds{“471100“,“Funds Inc..“,1000} funds{“081500“,...,....} Was sind "annotated" XML Schemas? y y Sind W3C Standardkonform (siehe Namespace-Konzept) Sind XML Schemas mit "Zusatzinformationen" – y hier: Oracle spezifische Objektnamen, Speicherung etc Bei der Schema-Prüfung ignoriert der Parser gemäß W3C alle unbekannte Namespaces – Datenbankunabhängige Parser beachten nur das allgemeine XML Schema 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 Informationen durch Namespaces abgegrenzt werden. http://xmlns.oracle.com/xdb Beispiel: XML Schema XML Schema Annotations Annotation y SQLName y SQLType y SQLCollType y MaintainOrder y MaintainDOM y SQLInline y ColumnProps y TableProps y DefaultTable Beschreibung y y y y y y y y y Name SQL Objekt Name SQL Typ Name SQL Collection OCT oder VARRAY Speichern DOM Info Speicherung in Objekt ? Storage Klausel für Spalten Storage Klausel für Tabelle Tabellename bei Auslagerung Schema-Registrierung . . . ------------ QMTS Executing SQL -----------CREATE OR REPLACE TYPE "XMLUSER"."CUSTOMER_T" AS OBJECT ("SYS_XDBPD$" "XDB"."XDB$RAW_LIST_T", "NAME" VARCHAR2(4000), "STREET" VARCHAR2(4000), "CITY" VARCHAR2(4000), "ACCOUNT" VARCHAR2(10)) NOT FINAL INSTANTIABLE ------------ QMTS Executing SQL -----------CREATE OR REPLACE TYPE "XMLUSER"."ORDER_T" AS OBJECT ("SYS_XDBPD$" "XDB"."XDB$RAW_LIST_T", "WKN" VARCHAR2(6), "FUNDSNAME" VARCHAR2(50), "AMOUNT" NUMBER) NOT FINAL INSTANTIABLE . . . Nach der Schema-Registrierung Eine zugehörige XML-Instanz XML Tabellen y dokumentbasierte Ablage als CLOB CREATE TABLE order_tab OF XMLTYPE; y objektrelationale Ablage in einer XMLTYPE-Tabelle CREATE TABLE order_tab OF XMLTYPE XMLSCHEMA "http://www.fundsinc.com/funds/order.xsd" ELEMENT "order"; y objektrelationale Ablage in einer Tabellenspalte CREATE TABLE order_tab (id NUMBER, order_doc XMLTYPE) XMLTYPE order_doc STORE AS OBJECT RELATIONAL XMLSCHEMA "http://www.fundsinc.com/funds/order.xsd" ELEMENT "order"; XML Tabellen TABLE OF XMLTYPE XMLSCHEMA.... XML Tabellen TABLE OF XMLTYPE XMLSCHEMA.... XMLDATA order customer funds funds funds name street city wkn wkn wkn name name name amount amount amount Agenda y y y y y y y y Warum XML in der Datenbank? Speicherarten für XML-Dokumente Die Objektrelationale Speicherform Zugriffsarten Integration XML-Datenbank-Architektur Informationen Demonstration JDBC Zugriffsarten HTTP WebDAV FTP Oracle Net AQ Zugriff HTTP Protokoll-Handler XML Datenbank Oracle9i Datenbank DAV,FTP Protokoll-Handler SQL Engine Select select extract(value(e), ’/order/customer/name’) from order_tab e where existsnode(value(e),’/order/funds[wkn="471100"]’)=1 y y XPath in WHERE-Klausel selektiert das Dokument XPath in SELECT-Liste selektiert innerhalb des Dokumentes Piecewise 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 y y y updateXML()-Funktion XPath Ausdruck Update findet auf den gespeicherten Objekten statt – KEIN DOM-Parsing „Piecewise Update“ order customer name street city Tabelle funds funds funds wkn funds wkn wkn name wkn name name count name count count count Tabelle en r r e p s n e o i s t e a l L a e k n s E kei k c o L e kein Query Rewrite y y Optimierung der SQL-Kommandos XPath Auswertung – – y ohne Parsen des Gesamtdokuments objektrelationales Mapping gezielte Ansprache der objektrelationalen Tabellenspalten Ohne „Query Rewrite“ y y Das Abfragen von Teilinformationen eines XML Dokuments muß durch Parserfunktionalität erfüllt werden Aufbau eines DOM Baumes ist erforderlich DOM-Baum Objektrelationale Tabelle order XPath: customer /order/customer/name funds funds funds name street city wkn wkn wkn name name name amount amount amount Mit „Query Rewrite“ Objektrelationale Tabelle order SELECT extractvalue(value(e), ’/order/customer/name’) FROM order_tab e funds funds funds wkn wkn wkn name name name amount amount amount customer name street city SELECT e.xmldata.customer.name FROM order_tab e XML Indizes – Volltextindex y Oracle Text: – – Context CTXXPATH [vollst. XPath-Unterstützung] create index idx_ctxxpath on order_tab e (value(e)) indextype is ctxsys.ctxxpath; select extract(value(e), ’/order/customer/name’) from order_tab e where existsnode(value(e),’/order/funds[wkn="471100"]’)=1 XML Indizes – B-Baum Index y y Query Rewrite größer-als und kleiner-als Abfragen create index idx_account on order_tab e (extractvalue(value(e), ’/order/customer/account’) select extract(value(e), ’/order/customer/name’) from order_tab e where existsnode(value(e),’/order/funds[amount > 1000]’)=1 Agenda y y y y y y y y Warum XML in der Datenbank? Speicherarten für XML-Dokumente Die Objektrelationale Speicherform Zugriffsarten Integration XML-Datenbank-Architektur Informationen Demonstration HTTP-Zugriffe y y Stylesheet-Transformationen werden in der Datenbank duchgeführt Beispiel: Integration durch relationale Views Tabelle Order_tab Konto Kundenname Strasse 4711 . : : Max Mustermann . : : Ringstra.. : : : Beispiel für eine Relationale View CREATE OR REPLACE VIEW order_view AS SELECT extractvalue(value(e),’/order/customer/name’) as CNAME, 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 SELECT * FROM order_view CACC ---------4711 4711 CNAME -------------Max Mustermann Max Mustermann FWKN -----471100 081500 FNAME ------------------------Funds Inc Global Treasury Funds Inc American Technology Integration durch XML-Views Tabelle Order_tab Konto Kundenname Strasse 4711 . : : Max Mustermann . : : : : Ringstra.. Definition XML View create view customer_xml as select xmlelement ( "customer", xmlattributes(account as "Konto"), xmlforest ( c.name as "name", c.street as "street", c.city as "city" ), xmlelement ( "orders", xmlattributes(count(o.id) as "count") ) ) as result from customer c left outer join orders o using (account) group by account, c.name, c.street, c.city Integration durch Foreign Keys Integrität alter table order_tab add constraint FK_CUSTOMER_ACCOUNT foreign key (xmldata.customer.account) references customer_rel_tab(account); Agenda y y y y y y y y Warum XML in der Datenbank? Speicherarten für XML Dokumente Die objekrelationale Speicherform Zugriffsmöglichkeiten Integration XML Datenbank-Architektur Informationen Demonstration Architektur XML DB Repository HTTP FTP SQL*NET Shared Server XML Schemas DB-Schema Installation und Konfiguration y y y y y y y Enthalten in Standard- und Enterprise-Edition Benutzt OR Features Legt neues Schema an: XDB (account locked) Beim Aufruf des DBCAs wird automatisch die XDB mitinstalliert und die Protokolle konfiguriert Konfigurationsdatei: /xdbconfig.xml Konfigurierbar über EM Default: – – WEBDAV, HTTP: Port: 8080 FTP : Port: 2100 EM- Unterstützung Gegenüberstellung der Speicherformen Nativ als Dokument y y y y CLOB wird als gesamte Datei abgespeichert Eingeschränkte DML Fähigkeiten Sehr flexibel Hoher Platzverbrauch Nativ Objektrelational y y y y y y Schemaabhängigkeit Objektrelationale Speicherung Integration in die relationale Welt „Piecewise Update“ möglich Geringer Speicherplatzverbrauch Zugriffsoptimierung durch „Query Rewrite“ Agenda y y y y y y y y Warum XML in der Datenbank? Speicherarten für XML Dokumente Die Modelbasierte Speicherform Zugriffe Integration XML Datenbank Architektur Informationen Demonstration Informationen y Schulungen/Seminare: – – y y Oracle9i: XML Fundamentals for Developers (3 Tage) Oracle und XML Handbücher: – XML API Reference – XML Database Developer’s Guide – XML Developer’s Kits (XDKs) Guide OTN: http://otn.oracle.com/tech/xml/xmldb/content.htm – Oracle XML DB : Uniting XML Content and Data (Seybold Consulting Group, March 2002) – Oracle XML DB : Frequently Asked Questions – Oracle XML DB : Technical White paper – Oracle XML DB : Key Features in Oracle9i Database Release 2