© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG-SIG Development,
© 2003, Rudolf Jansen Agenda Oracle XML DB Oracle XML Repository XML Developer`s Kits (XDK) Zusammenfassung
© 2003, Rudolf Jansen Einleitung - XML DB Oracle 9i Rel.2 -Datenbank XML-RepositoryXMLType-Tabellen XML-DB JDBC-Applikation Browser SQL-Net- Zugriff http Externe Tools ftp WebDAV
© 2003, Rudolf Jansen XML DB - Datentyp XMLType XMLType als Spaltentyp create table person ( prs_nr number, prs_data XMLTYPE ); XMLType als Tabellentyp ( ab 9i Rel.2 ) CREATE TABLE person_xml of XMLTYPE;
© 2003, Rudolf Jansen XML DB - Datentyp XMLType INSERT INTO person_xml VALUES (XMLType(' 1 Willi Schmitz Hauptstrasse Entenhausen '));
© 2003, Rudolf Jansen XML DB - Datentyp XMLType Indexbildung CREATE INDEX plz_index ON person (prs_data.extract ('/PRS_DATA//PRS_ADRESSE/ADR_PLZ/text()').getNumberVal()); Validierungsmöglichkeiten - Constraints create table person ( prs_nr number, prs_data XMLTYPE NOT NULL ); - Trigger
© 2003, Rudolf Jansen XML DB - Datentyp XMLType Speicheroptionen Unstrukturiert als LOB + Zugriff auf Gesamtdokument performant + Einfügen von XML mit variabler Struktur möglich - SELECT und UPDATE von einzelnen Elementen aufwendig Strukturiert über objektrelationale Tabellen Voraussetzung: XML-Schema-Definition -> Definition von SQL-Objekten, die dem XML-Schema entsprechen + Zugriff auf einzelne Elemente schneller + geringerer Speicherbedarf (Tagnamen brauchen nicht gespeichert werden)
© 2003, Rudolf Jansen XML DB - XML-Schema W3C-Standard zur Festlegung von Inhalt und Struktur von XML-Dokumenten Voraussetzung für strukturierte Speicherung Vorteil: Struktur der XML-Dokumente, die in eine Spalte eingetragen werden sollen, ist bereits bekannt -> passende Speicherobjekte können im voraus angelegt werden Bei Eintrag von Daten, die auf dem XML-Schema beruhen: - Aufsplitten der Daten in einzelne Bestandteile - (objekt-)relationale Speicherung dieser Einzelbestandteile - spätere UPDATEs nicht auf dem Gesamtdokument, sondern nur in den betroffenen Bestandteilen
© 2003, Rudolf Jansen XML DB - XML-Schema 1.Schritt: Registrieren einer XML-Schema-Definition: DECLARE xmlschema_doc varchar2(1000) := ' '; BEGIN DBMS_XMLSCHEMA.REGISTERSCHEMA(' xmlschema_doc); END;
© 2003, Rudolf Jansen XML DB - XML-Schema 2.Schritt: (Automatische) Erzeugung passender Speicherobjekte create type PersonType_t ( Prs_Id NUMBER, Prs_Vorname VARCHAR2(4000), Prs_Nachname VARCHAR2(4000), Prs_Adresse TEST.Prs_Adresse_t ); create type Prs_Adresse_t ( Adr_Strasse VARCHAR2(4000), Adr_Hausnr NUMBER, Adr_Plz NUMBER, Adr_Ort VARCHAR2(4000) );
© 2003, Rudolf Jansen XML DB - XML-Schema 3.Schritt: XML-Schema-Angabe bei Tabellendefinition create table person_mit_xml_schema_spalte( prs_id number, prs_data XMLType ) XMLType column prs_data XMLSCHEMA ELEMENT "Person"; desc person_mit_xml_schema_spalte; Name Null? Typ PRS_ID NUMBER PRS_DATA SYS.XMLTYPE(XMLSchema Element "Person") STORAGE Object-relational TYPE "PersonType_T"
© 2003, Rudolf Jansen Agenda Oracle XML DB Oracle XML Repository XML Developer`s Kits (XDK) Zusammenfassung
© 2003, Rudolf Jansen XML-Repository Ziel: „Einsatz der Datenbank als Dateisystem“ Zugriff über FTP, HTTP, WebDAV (Web Distributed Authoring and Versioning)
© 2003, Rudolf Jansen XML-Repository Installation: HTTP-Zugriff über Oracle XML DB Protokoll Server: Session-Pool für FTP-, HTTP- und WebDAV-Zugriffe
© 2003, Rudolf Jansen XML-Repository XML-Repository : Hierarchische Verzeichnisstruktur Verzeichnisse enthalten Ressourcen (XMLType-Instanzen) PL/SQL-Package DBMS_XDB zum Anlegen und Verwalten von Ressourcen. Beispiele: DBMS_XDB.createfolder('/home'); DBMS_XDB.createfolder('/home/xmltest'); Ähnlichkeit zu UNIX-Dateisystemen
© 2003, Rudolf Jansen XML-Repository HTTP-Zugriff auf neu angelegten Ordner über Webbrowser:
© 2003, Rudolf Jansen XML-Repository Anlegen von Inhalten: DECLARE retValue BOOLEAN; xmlDoc SYS.XMLType; BEGIN select SYS_XMLAGG(value(a)) into xmldoc from adressen_view a; retValue:= DBMS_XDB.createresource( '/home/xmltest/adressenliste.xml', xmldoc); commit; END;
© 2003, Rudolf Jansen XML-Repository Oracle 9i - Datenbank adresse_rel adressenliste.xml person_rel adressen_view Relationale Tabellen XMLType- View XML- Repository- Ressource Externe Anwendung (Explorer, Browser, FTP-Client) Http-, FTP-, WebDAV-Zugriff
© 2003, Rudolf Jansen XML-Repository
© 2003, Rudolf Jansen XML-Repository
© 2003, Rudolf Jansen XML-Repository Externer Eintrag von Dateien in das XML-Repository Beispiel: Datei neue_adressenliste.xml aus dem Windows-Dateisystem Eintrag per Drag&Drop in den XML-Repository-Ordner des Windows Explorers
© 2003, Rudolf Jansen XML-Repository
© 2003, Rudolf Jansen XML-Repository Weitere Funktionen (analog UNIX) Anlegen von Links DBMS_XDB.link('/home/xmltest/adressenliste.xml', '/public', 'adressenliste.xml'); Sicherheitskonzept: – Rechtevergabe über Access Control Lists (ACL) – Rechte pro Ressource oder auch für komplette Teilbäume XML DB Versioning: – „Versionskontrolle in der Datenbank“ – Verwaltung mehrerer Versionen von XML-Repository-Ressourcen – derzeit noch keine Versionskontrolle von normalen relationalen Datenbankinhalten
© 2003, Rudolf Jansen Agenda Oracle XML DB Oracle XML Repository XML Developer`s Kits (XDK) Zusammenfassung
© 2003, Rudolf Jansen XML Developer‘s Kits (XDK) Sammlung von Tools für die Schnittstelle von XML und (Oracle-)Datenbank Einsatzgebiete: – Anbindung von XML-Systemen an bestehende Datenbanken mit relational gespeicherten Daten – Neue Projekte: lose Kopplung zwischen XML und DB Programmiersprachen: Java, C, C++, PL/SQL Einsatz mit jeder Datenbank, für die es JDBC-Treiber gibt Vorteil: Klare Trennung zwischen XML und SQL – Portabilität (Datenbankwechsel) – KnowHow-Trennung (XML-Entwickler und DB-Entwickler)
© 2003, Rudolf Jansen XML Developer‘s Kits (XDK)
© 2003, Rudolf Jansen XML Developer‘s Kits (XDK) XSQL-Servlet Client JDBC- Datenbank Web-Server Stylesheets XSQL-Servlet XML-SQL- Utility (XSU) XMLParser XSLT-ProzessorHTML, XML,... SQL HTTP
© 2003, Rudolf Jansen XML Developer‘s Kits (XDK) XSQL-Servlet Ausgangsbasis: XSQL-Page Beispiel: Datei person_select_mit_xslt.xsql SELECT prs_id, prs_vorname, prs_nachname from person_rel
© 2003, Rudolf Jansen XML Developer‘s Kits (XDK) XSQL-Servlet Servlet-Engine-Konfiguration: Registrieren der Dateiendung.xsql mit XSQL-Servlet Aufruf: – – Konsolenaufruf: java oracle.xml.xsql.XSQLCommandLine person_select_mit_xslt.xsql person_select_mit_xslt_ergebnis.html
© 2003, Rudolf Jansen XML Developer‘s Kits (XDK) XSQL-Servlet
© 2003, Rudolf Jansen Zusammenfassung Vielzahl von Integrationsmöglichkeiten Lose Kopplung (XML Developer‘s Kit) Enge Kopplung (Datentyp XMLType) Entscheidungskriterien: – Bindung an DB-Hersteller kritisch? (Migrationsarbeiten) – Entwickler-KnowHow (XML und/oder SQL) – Zentrale Administration durch XML-Repository („Datenbank als Dateisystem“)
© 2003, Rudolf Jansen Literatur OTN-Webseiten – Dokumentation – XML Developer‘s Kits (aktuelle Version) – Sourcecode-Beispiele „Oracle, Java, XML. Integration in Oracle 9i“ Rudolf Jansen Software&Support Verlag 360 Seiten ISBN