Benutzung von XML in Oracle 10g Richard Dörfler, DOAG - Trier, 13.09.2005 Deutsche Post ITSolutions GmbH Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 2 Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 3 Einleitung Richard Dörfler – Student an der FH-Trier – Diplomand bei der Deutschen Post IT-Solutions Kontakt zu XML – Datenbanken – Vorlesung objektrelationale Datenbanken Prof. Klösener, FH-Trier – Workshop Datawarehouse / XML u.a. Czarski, Oracle Vortrag bei DOAG – Anfrage von Bernd Tuba, DP ITS – Keine Erfahrung mit XML in der Datenbank Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 4 Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 5 Warum XML? XML ist Auszeichnungssprache (Markup Language) – Vergleich HTML (fester Sprachumfang) – Metadaten in Form der Tags Wohlgeformtes Beispiel: – <?xml version=„1.0“ encoding=„ISO-8859-1“ ?> <Person> <Personalnr>256279</Personalnr> <Vorname>Hans</Vorname> <Nachname>Meier</Nachname> </Person> Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 6 Warum XML? Ziel von W3C: Trennung von Inhalt und Layout von Webseiten XSLT (eXtensible Stylesheet Language Transformations) Standards zum Umgang mit XML – z.B. XML-Parser Datenaustausch Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 7 XML zum Datenaustausch Vorteile: Abgrenzung von Datenfeldern – Berücksichtigt Sonder- und Steuerzeichen Struktur durch Metadaten Zahlreiche Software zur Bearbeitung – Konzentration auf fachliche Probleme möglich Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 8 Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 9 Speicherung von XML in einer Datenbank Klassische Verfahren: Clob – Keine XML-Funktionalität nötig Clob – Kein Wissen über XML Nativ als Dokument Relational – Keine Prüfung möglich Relational Nativ Objektrelational – Keine XML-Funktionalität nötig – Zerlegung meist außerhalb – Wiederherstellung kompliziert – Attribut oder Element – Reihenfolge – Kommentare Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 10 Speicherung von XML in einer Datenbank Attribut oder Element – <?xml version=„1.0“ encoding=„ISO-8859-1“ ?> <Person Name=„Hans Meier“ /> – <?xml version=„1.0“ encoding=„ISO-8859-1“ ?> <Person> <Name>Hans Meier</Name> </Person> Reihenfolge – <?xml version=„1.0“ encoding=„ISO-8859-1“ ?> <Artikel> <Absatz>Text hat mehrere Absätze</Absatz> <Absatz>Auf die Reihenfolge kommt es an</Absatz> </Artikel> Kommentare – <?xml version=„1.0“ encoding=„ISO-8859-1“ ?> <Person> <Name>Hans Meier</Name> <!-- Kommentar in XML --> </Person> Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 11 Speicherung von XML in einer Datenbank Native Speicherung Anforderungen an die DB: – XML Dokumente vollständig wiederherstellbar – Kommentare – Processing Instructions – Reihenfolge – Attribut oder Element – Zugriff auf XML-Dokumente über XPATH – HTTP – FTP – WebDAV Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 12 Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 13 Oracle XML - DB XML in Oracle integriert Steht nach Installation zur Verfügung – Zugriff über HTTP (8080), FTP (2100), WebDAV möglich – User XDB als Eigentümer des XML DB Repository – Virtuelles Dateisystem Ports lassen sich ändern – $ORACLE_HOME/rdbms/admin/catxdbdbca.sql – Port auf „0“ schaltet Zugang ab WebDAV – Datenbank als Windows-Netzwerk-Laufwerk Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 14 Oracle XML - DB XML DB Repository Virtuelles Dateisystem – Standard: public, sys, xdbconfig.xml – Berechtigungen über Access Control Lists /sys/acls – Ordner public für alle Lese- und Schreibrechte Zugriff über SQL – PATH_VIEW (select path from path_view) – Package DBMS_XDB – Create_folder – Create_resource Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 15 Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 16 Speicherungsformen XMLTYPE - Datentyp – Wohlgeformtes XML – Ganze Tabelle oder Spalte – XPATH als Abfragesprache möglich Dokumentenorientiert – XML-Dokument als eine Einheit – Einzelne Information ohne Kontext wertlos (Artikel) – Transformation durch XSLT in anderes Layout Datenorientiert – Datenaustausch – Information kann alleine Stehen (Preisliste) – Integration mit relationalen Tabellen Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 17 Speicherungsformen Dokumentenbasierte Speicherung Speicherung als Textstrom (intern als CLOB) – Datentyp XMLTYPE notwendig – SQL> create table XML_DOK_1 of xmltype; – SQL> create table XML_DOK_2 ( ID number(10), DOC xmltype ) xmltype column DOC store as CLOB; – SQL> insert into XML_DOK_2 (id,doc) values (1, XMLTYPE(‘<?xml version…‘)); – Keine Rücksicht auf Struktur der Dokumente – Nur Wohlgeformtheit wird geprüft Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 18 Speicherungsformen Dokumentenbasierte Speicherung Speicherung über FTP oder DBMS_XDB – DECLARE ret boolean; BEGIN ret:=dbms_xdb.createresource( '/public/xperson.xml‚ ,'<Person> <Vorname>Hugo</Vorname> <Nachname>Schmitz</Nachname> <Adresse> … </Adresse> </Person>') END; / – Dokument wird im Repository dokumentenorientiert abgelegt – Tabelle XDB$RESOURCE (->path_view) Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 19 Speicherungsformen Objektrelationale Speicherung / Datenorientiert Struktur des XML-Dokument muss Datenbank bekannt sein – Objekttypen müssen vorhanden sein – XML-Schema registrieren – DBMS_XMLSCHEMA.REGISTERSCHEMA – DBMS_XMLSCHEMA.REGISTERURI – zus. Parameter: – LOCAL – GENTABLES Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 20 Speicherungsformen Objektrelationale Speicherung Überprüfen der angelegten Struktur – USER_XML_SCHEMAS – USER_OBJECTS – Default Table Eigene Tabellen anlegen – create table meine_xml_personen of xmltype xmlschema „http://www.doag.de/person.xsd“ element „Person“ Löschen des XMLSchemas – DBMS_XMLSCHEMA.DELETESCHEMA Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 21 Speicherungsformen Objektrelationale Speicherung Steuern der Namensgebung – Schema Annotationen im XML-Schema – Namespace: http://xmlns.oracle.com/xdb – Ignoriert von anderen Anwendungen – SQLName, SQLType – defaultTable Mischformen in XML-Dokument – Personendaten – Adresse als SQLType=„CLOB“ Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 22 Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 23 Umgang mit XML Zugriff über FTP, HTTP, WebDAV, DBMS_XDB möglich Problem: oft Angabe von Tabellenname nicht möglich – put dokument.xml – Verbindung herstellen zum registrierten Schema – Schema referenzieren: – <Person xmlns:xsi=„http://www.w3.org/2001/XMLSchema-instance“ xsi:noNamespaceSchemaLocation=„http://www.doag.de/xperson.xsd“ > … </Person> – Größe gibt Speicherort an Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 24 Umgang mit XML Abfragen von Informationen Abrufen per FTP oder WebDAV – Nur vollständige Dokumente abrufbar Abrufen per HTTP – Einzelne Zeilen abrufbar – http://localhost:8080/oradb/<schema>/<tabelle>/XPATH – XPATH-Ausdruck anwendbar – Auch für relationale Tabellen möglich Abruf per SQL – SQL> select object_value from „XMLPersonen“ Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 25 Umgang mit XML Abfragen von Informationen Zugriff auf Teile eines Dokuments – EXTRACT(doc XMLTYPE, xpath VARCHAR2) – EXTRACTVALUE(doc XMLTYPE, xpath VARCHAR2) – EXISTSNODE(doc XMLTYPE, xpath VARCHAR2) – SQL> select extractvalue(object_value, ‘/Person/Name‘) from XMLPersonen where existsnode( object_value ,‘/Person/Adresse[Hausnummer=1234]‘ )=1; Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 26 Umgang mit XML Aktualisieren von XML-Dokumenten Vollständiger Austausch eines Dokuments Piecewise Update – Nur ein Teil wird aktualisiert – SQL> update XMLPersonen set object_value = UPDATEXML( object_value, ‚/Person/Name/text()‘, ‚Fitz Quack‘ ) where existsnode … Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 27 Umgang mit XML Relationale Sichten auf XML-Tabellen Abfrage wie beschrieben Struktur innerhalb der Zeilen auflösen – … table(XMLSequence(…)) Create view als Rahmen – SQL> create or replace view RPersonen as select extract … Nutzung in Anwendungen ohne XML Funktionalität Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 28 Umgang mit XML XML Sichten auf relationale Tabellen SQLX - Syntax – Teil des SQL2003 Standard – In Oracle bereits implementiert – XMLElement – XMLAttribut – XMLAgg Beispiel: – SQL> create or replace view XPerson as select XMLElement(„Person“, XMLElement(„Name“, Name), ...) from RPersonen Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 29 Inhalt: Einleitung Warum XML? Speichern von XML in einer Datenbank Oracle XML-DB Speicherungsformen Umgang mit XML Zusammenfassung / Ausblick Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 30 Zusammenfassung XML in Datenbanken speichern Speicherungsformen Arbeiten mit XML in der Datenbank Ausblick: – Fremdschlüssel – Zugriffsunterschiede bei den Speicherungsarten – Validierungen – SQL*Loader mit XML-Dokumenten – XSLT Transformationen – Oracle Advanced Queuing – … Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 31 Oracle und XML Quellen: – Oracle 10g Kompendium, Fröhlich, Meier, Czarski Markt+Technik, 2005; ISBN 3-8272-6679-3 – Vorlesungsunterlagen Prof. Klösener – Oracle Technology Network http://www.oracle.com/xml/index.html Fragen / Anmerkungen ? Deutsche Post ITSolutions GmbH · Richard Dörfler · DOAG - Trier · 13.09.2005 Seite 32 Vielen Dank für Ihre Aufmerksamkeit Deutsche Post ITSolutions GmbH