XML Speicherung in der Oracle Datenbank CLOB, Objektrelational oder Binary XML, das ist die Frage Michael Pergande, PROMATIS software GmbH Mannheim, 8. November 2012 1
Agenda XML Allgemein Oracle XML DB Projektkontext und Hintergrund Speicherformen von XMLType Transformation von CLOB zu Objektrelational Zusätzliche Problemstellungen Zusammenfassung 2 2012 PROMATIS software GmbH
XML Allgemein Was macht es so interessant? Universelles Austauschformat Herstellerunabhängig (W3C Standards) Trennung zwischen Inhalt, Struktur und Layout ( XSL/XSLT Extensible Stylesheet Language) Strukturdefinitionen (XSD- XML Schema Definition, DTD Document Type Definition) Abbildung hierarchischer, verschachtelter, rekursiver Strukturen Transport strukturierter und unstrukturierter Informationen XML Dokument XSD XSL/XSLT Inhalt Struktur Layout (Stylesheets) Erschließung der Semantik Strukturdefinitionen können konsumiert werden 3 2012 PROMATIS software GmbH
XML Allgemein Anforderungen an eine XML Datenbank Verarbeitung und Generierung von XML-Dokumenten Umsetzung der W3C-Standards, insbesondere Fähigkeit zur Navigation über alle XML-Strukturen ( Xpath, Xquery) Zugriff auf spezifische Informationsinhalte Unterstützung von Programmierschnittstellen Bspw. DOM- Document Object Model, SAX Simple API for XML Integration in bestehende Systemumgebungen Unterstützung bei Performance-, Skalierbarkeits- und Sicherheitsaspekten 4 2012 PROMATIS software GmbH
Oracle XML DB Funktionsumfang SQL-Methoden für XML, sowie XML-/ SQL-Dualität Support für offene Standards: W3C: DOM, XML Schema, XSLT, Xquery IETF: WebDAV HTTP, FTP, JNDI, Web Services Integriertes XML-Repository in das RDBMS XML Schema Integrität und RDBMS Integritätsregeln für XML Dateien XML Views über relationale Daten und umgekehrt XML spezifische Performance, Skalierbarkeit und Sicherheit Bereitstellung geeigneter Tools für die Arbeit mit XML in der DB 5 2012 PROMATIS software GmbH
Oracle XML DB Architektur 6 2012 PROMATIS software GmbH
Oracle XML DB Vorteile Steuerung durch das DBMS Vereinfachung bei objektrelationalen Abbildungen (OR-Mapping) Eigenes Repository mit objektrelationaler Speicherung Wahlmöglichkeiten zwischen strukturierter und unstrukturierter Ablage Nativer SQL-Zugriff, API-Unterstützung Einsetzbarkeit relationaler Konstrukte (Tabellen, Views, Indizes) Abbildbarkeit von XML-Eigenschaften auf relationalen DB-Konstrukten und umgekehrt 7 2012 PROMATIS software GmbH
Projektkontext und Hintergrund Horus Business Modeler Profi-Tool für Modellierung und Simulation von Geschäftsprozessen. Nur 4 verschiedene Modellierungssprachen: Petri-Netze (XML-Netze), Organigramme, Semantisch-hierarchische Strukturen und ein Objekt/Relationship-Modell Basis bildet ein Oracle -basiertes Repository, in dem die Modelle in strukturierter Form abgelegt werden. 8 2012 PROMATIS software GmbH
Projektkontext und Hintergrund HORUS Repository 9 2012 PROMATIS software GmbH
Projektkontext und Hintergrund Beispiel-XML Horus Modelldaten als XML-File Metadaten eines Objektmodells inklusive Informationen über Entitäten, Attributen 10 2012 PROMATIS software GmbH
Speicherformen von XMLType CLOB Unstrukturiert Innerhalb der DB wird ein verstecktes CLOB angelegt XML wird als Ganzes darin gespeichert Bei fehlender Angabe der Storage-Clause beim Anlegen der Tabelle wird textbasierte Speicherung angenommen XML Daten: workspace.xml Exakte Physische Repräsentation innerhalb der DB Create XML Type Tables 11 2012 PROMATIS software GmbH
Speicherformen von XMLType Objektrelational Berücksichtigung der Struktur der XML-Dokumente Nur möglich mit entsprechender Schemaregistrierung Bekanntmachung XML-Schema mit Datenbank Funktion registerschema des Packages DBMS_XMLSCHEMA Entsprechende objektrelationale Tabellen und Views werden anhand XML- Schema erzeugt XML Schema Definition: workspace.xsd Schemaregistrierung XML Daten: workspace.xml Create XML Type Tables Mapping XML Elemente 12 2012 PROMATIS software GmbH
Speicherformen von XMLType Binary XML Neu seit Oracle Version 11g XML-Dokumente werden in speziell entwickeltem Binär-Format abgespeichert Flexibler Schema-Support XML-Dokumente, die mehreren Schemata genügen können Speicherung in gleicher Spalte XML Schema Definition: workspace.xsd XML Daten: workspace.xml Binäres Mapping XML-Schema Create XML Type Tables Binäres Abspeichern 13 2012 PROMATIS software GmbH
Speicherungsformen in XML DB Der Vergleich: DB-Operationen Anlegen der Tabelle: -- Tabelle für die textbasierte Speicherung create table xml_text of xmltype xmltype store as clob; -- Tabelle für die objektrelationale Speicherung create table xml_or of xmltype xmltype store as object relational xmlschema "http://www.horus.biz/xml-schemas/horus_workspace.xsd" element "test-xml ; -- Tabelle für die Speicherung als BINARY XML create table xml_binary of xmltype xmltype store as binary xml allow nonschema; 14 2012 PROMATIS software GmbH
Speicherformen von XMLType: interne Speicherung CLOB select e.xmldata from xml_text e where rownum = 1; XMLDATA -------------------------------------------------------------------------------- <test-xml><datum>2008-08-18</datum><name>kunde #731</name><gekaufte-stuecke><stu eck><id>10383</id><name>stueck #10482</name></stueck><stueck><id>10808</id><name Objektrelational select e.xmldata from xml_or e where rownum = 1; XMLDATA -------------------------------------------------------------------------------- (SYS_XDBPD$, datum, name, gekaufte-stuecke(sys_xdbpd$, stueck(sys_xdbpd$, testxml1690_t(xdb$raw_list_t('13070000000102'), '10.01.08', 'Kunde #4172', geka uftestuecke1691_t(xdb$raw_list_t('1301000080800a'), Binary XML select e.xmldata from xml_binary e where rownum = 1; XMLDATA -------------------------------------------------------------------------------- 9F01039E000000C83EC4C0092441323031332D30332D3239C00A2B384B756E6465202331393335C80 15 2012 PROMATIS software GmbH
Speicherformen von XMLType Vor- und Nachteile Kein Datenverlust, Original-XML wird Byte für Byte bereitgestellt Wann nehme ich ich was? Speicherung Schema-basierter oder nicht Schema-Basierter Dokumente CLOB Binary XML XML- OR Flexibel in der Struktur des XML: kann in XMLType Spalte oder Tabelle gespeichert werden schnelles Einfügen des gesamten Dokuments partielles Update erfordert Zurückschreiben des gesamten Dokuments langsam für Abfragen ins XML-Dokument hinein hoher Speicherplatzverbrauch 16 2012 PROMATIS software GmbH
Speicherformen von XMLType Vor- und Nachteile Speicherung Schema-basierter oder nicht Schema-Basierter Dokumente Flexibel in der Struktur des XML schnelles Abfragen auf einzelne Elemente im Dokument CLOB Wann nehme ich ich was? Binary XML XML- OR geringe Verarbeitungszeit bei Einfügeoperationen geringer Speicherplatzbedarf Datenverlust möglich, durch DOM-Objekte (Formatierungen, White Spaces, ) 17 2012 PROMATIS software GmbH
Speicherformen von XMLType Vor- und Nachteile Relationale Abfragegeschwindigkeit durch Query Rewrite Updates auf relationale Tabellen sehr schnell Geringer Speicherplatzbedarf CLOB Wann nehme ich ich was? Binary XML XML-OR Eingeschränkte Datenflexibilität: nur XML-Schema konforme Daten können gespeichert werden Insert-Operationen performancekritisch da XML auf Objekte gemappt werden muss Datenverlust möglich, durch DOM-Objekte (Formatierungen, White Spaces, ) 18 2012 PROMATIS software GmbH
Speicherform von XMLType Wann nehme ich was? Speicherform abhängig von Operationen abhängig, die auf XML- Dokumenten durchgeführt werden CLOB Bei Wiederherstellung des XML aus DB (inkl. Whitespaces) Bei häufig ändernder Struktur der XML-Dokumente Objektrelational Bei häufigen Zugriffen auf einzelne Teile des XML Relationale Performance bei Abfragen/Updates (Query Rewrite) CLOB Wann nehme ich ich was? Binary XML XML-OR Binary XML Bei vielen Inserts und häufigen Abfragen auf Teile der XML-Dokumente Geringer Netzwerkoverhead bei Übertragung Bei vielen Abfragen auf Teile der XML-Dokumente, die keinem einheitlichen XML- Schema genügen müssen 19 2012 PROMATIS software GmbH
Transformation von CLOB zu Objektrelational (1 von 2) XML-Schema registrieren begin dbms_xmlschema.registerschema(local => true, gentypes => true, gentables => false, schemaurl => 'http://www.horus.biz/xml-schemas/horus_workspace.xsd', schemadoc => '<?xml version="1.0" encoding="utf-8" standalone="yes"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:xdb="http://xmlns.oracle.com/xdb" xdb:storevarrayastable="true"> <xs:element name="project" type="project"/> <xs:sequence> <xs:element name="key" minoccurs="0" type="xs:string"/> <xs:element name="value" minoccurs="0" type="xs:string xdb: SQLType="CLOB"/> Schemabezogene Tabelle anlegen CREATE TABLE HORUS_WORKSPACES2 (ID Number(32) NOT NULL, WRK_XML XMLTYPE, ) TABLESPACE HORUS_DATA XMLTYPE COLUMN WRK_XML store as object relational xmlschema "http://www.horus.biz/xml-schemas/horus_workspace.xsd" element "project" varray WRK_XML.XMLDATA."properties"."entry" store as table horus_workspace2_entries; 20 2012 PROMATIS software GmbH
Transformation von CLOB zu Objektrelational (2 von 2) SQL-Abfragen auf Basis der XML-Schemabezogenen Tabelle -- relationales Aufbereiten der textbasiert abgelegten XML-Dokumente SELECT hws.id, extractvalue(hws.wrk_xml, '/project/name') ws_name, extractvalue(hws.wrk_xml, '/project/properties/entry) ws_base_path, FROM horus_workspaces hws; Query Rewrite zur Laufzeit -- SQL der Datenbank zur Laufzeit SELECT SYS_OP_ATG( [...] ) " ID", "SYS_ALIAS_1"."SYS_NC00009$" "WS_NAME", "SYS_ALIAS_1"."SYS_NC00008$" "WS_BASE_PATH", FROM HORUS_PROXY"."HORUS_WORKSPACES" "SYS_ALIAS_1", TABLE( [...] ) 21 2012 PROMATIS software GmbH
Zusätzliche Problemstellungen Erstellung von XSD-Schemata bei umfangreichen Objektmodellen sehr komplex JDBC XMLType und ORA-01461: HORUS Business Modeler nutzt 11gR1 jdbc Treiber um Insert/Update/Select auf XMLType Tabelle durchzuführen ORA-01461-Fehler bei Variablen die größer als 4000 Zeichen sind Grund: interne Typkonvertierung und Nutzung von raw/varchar2 anstatt blob/clob Workaround: datenbankseitige Erstellung View und zwei Instead-of-Trigger 11gR1 jdbc-treiber Zeilenumbrüche innerhalb XML-Attribute werden durch SQL-Anweisung extract() abgeschnitten: Betrifft Erstellung der Prozesshandbücher Anstelle von Zeilenumbrüchen werden Leerzeichen dargestellt Development arbeitet an aktuellem Patch (teilweise als One-Off Patch verfügbar) 22 2012 PROMATIS software GmbH
Zusammenfassung Fließender Übergang von hierarchischen Dokumentstrukturen zu DB- Strukturen (SQL/XML Dualität) Wahl der Speicherungsform nach Projekthintergrund und Anforderung Umstellung von unstrukturierter Speicherung (CLOB) auf objektrelational für einfache XML-Schema geeignet Performance-Tuning mit Datenbankinternen Mitteln (z.b. Query Rewrite) Performance-Test mit 5000 XML-Dokumenten Unstrukturierte Speicherung Objektrelationale Speicherung Binary XML Insert 00:00:13.25 00:00:43.56 00:00:02.07 Select auf Teile des XML-Dokuments 00:00:05.43 00:00:00.17 00:00:00.67 Neue Speicherungsform Binary XML als ernsthafte Alternative zu Objektrelational 23 2012 PROMATIS software GmbH
Michael Pergande Division Manager Enterprise Collaboration Products PROMATIS software GmbH Pforzheimer Str. 160 76275 Ettlingen Tel. +49 7243 2179 0 Fax +49 7243 2179 99 E-Mail: Web: michael.pergande@promatis.de www.promatis.de 24 2012 PROMATIS software GmbH