Ralf Mueller Server Technologies Oracle Corporation Oracle XML Datenbank.

Slides:



Advertisements
Ähnliche Präsentationen
ER-Datenmodell und Abfragen in SQL
Advertisements

Objekt – Relationales – Modell Tomasz Makowski IN
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
SQL Server 2005 Übersicht für Entwickler Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
MySQL.
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
XML - Aufbau und Struktur - mit Einsatz im B2B
DOM (Document Object Model)
AGXIS – Ein Konzept für eine generische Schnittstellenbeschreibung Dr.-Ing. Ulrich Hussels, RISA GmbH 07. Juni 2005 Workshop Umweltdatenbanken 2005.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Speicherung von XML- Dokumenten als Large Objects.
Einführung XML XML Einführung Andreas Leicht.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Datenbanken und XML Vortrag: Oliver Klein Seminar Weltweite Datenbanken WS 2000/01 CvO Universität Oldenburg.
Access 2000 Datenbanken.
Oracle interMedia Image
Einführung MySQL mit PHP
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
objekt-relationale Datenbanken
Visualisierung objektrelationaler Datenbanken
Architektur und Funktionalitäten der Oracle XML DB - ein Überblick mit ausgewählten praktischen Beispielen - im Rahmen des 17. Workshop Grundlagen von.
Die Persistenzschicht
Installation FAQ-Forum Zope Basisinstallation Zusätzliche Module (Products) Grundkonfiguration Einrichten neuer Foren.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
SharePoint 2010 for Information Architects
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Java für Fortgeschrittene
Sesame Florian Mayrhuber
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
Allgemeines zu Datenbanken
Datenbanksysteme für hörer anderer Fachrichtungen
XML und Datenbanken © 2006 Markus Röder
XML in relationalen Datenbanken
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
SQLite und XML in PHP 5.
Universität Stuttgart Enforcing Constraints and Triggers for Active Data Services Xiaolong Wan Abschlußpräsentation:
Structured Query Language
Eike Schallehn, Martin Endig
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Oberseminar Moderne Datenbanken WS03/04
TypoScript.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Gottfried Vossen 5. Auflage 2008 Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme Kapitel 12: XQuery und SQL/XML.
Datenbank für Skriptenverkauf
PHPmyadmin Maya Kindler 6c.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
Deutsche Post ITSolutions GmbH Benutzung von XML in Oracle 10g Richard Dörfler, DOAG - Trier,
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
1 © Thales IS GmbH 2002 Thales Information Systems GmbH Im Team für Ihren Erfolg DOAG - Regionaltreffen Hannover Donnerstag, Oracle 9i XML Datenbank.
1DOAG Regionalmeeting bei DEICHMANN Juni 2004 Advanced Queuing Anwendung in der DEICHMANN Bestandsführung.
 ====!"§==Systems= M. Scholz, 'Erfahrungen mit Oracle interMedia Text 8.1.7' debis Systemhaus GEI GmbH, GS Berlin , Seite 1. Erfahrungen mit.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Niels Schmahljohann Systemberater STCC ORACLE Deutschland GmbH.
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Oracle und XML: Ein Überblick
Create Table, Rechte und Rollen
Betriebsmittelsuche M.Hoppe
Von Wietlisbach, Lenzin und Winter
Von Wietlisbach, Lenzin und Winter
 Präsentation transkript:

Ralf Mueller Server Technologies Oracle Corporation Oracle XML Datenbank

Agenda XML in der Datenbank Speicherformen für XML-Dokumente, Datenbankansätze, Oracle XML Technologie, Architektur der Oracle XML-Datenbank, Installation + Konfiguration XML-Speicherstrukturen Festlegung der Speicherungsform, XML Schema, Registrierung, objektrelationale Strukturen Umgang mit XML-Dokumenten Speichern und Abrufen von XML-Dokumenten; Verbindung mit SQL; Protokollzugriff XML in der Praxis – Szenarien und Implementierung Implementierung der Szenarien mit der XML-Datenbank, Zusammenspiel mit Oracle- Technologie

Warum XML in der Datenbank...?

... und nicht einfach im Dateisystem?

Warum XML in der Datenbank und nicht im Dateisystem?  relationale Daten bereits vorhanden – Kombination mit XML Dokumenten – Ausgabe als XML-Dokument  Erweiterung des XML-Datenmodells – Zusätzliche Datenbankvalidierung – Transaktionskonzept – Datennahe Sicherheitskonzepte – Datennahe Logik –...

XML Standards  XML – W3C  DOM – W3C  XPath – W3C  XML Schema – W3C  XSL and XSLT – W3C  WebDAV - IETF  SQL/XML – ANSI/ISO

Wie speichert man XML-Dokumente in Datenbanken...?

Herausforderungen relationale Datenbestände Abruf als XML Beispiele: - heterogene Systeme - XML Schnittstellen - Versorgung des Workflow - Abruf per HTTP oder FTP

Herausforderungen XML-Dokumente Abruf mit SQL Überführung in DWH oder andere Anwendung Beispiele: - XML als Austauschformat im e-Business - Sammlung und Aggregation im DWH - DWH-Versorgung aus heterogenen Systemen

Herausforderungen relationale Datenbestände Integritäts- bedingungen XML Datenbestände Beispiele: - XML Dokumente nativ speichern (jur. Gründe) - Validitätsprüfung gegen Stammdaten in einer relationalen Datenbank - Validierung im laufenden Workflow

Herausforderungen Referentielle Integrität in XML  XML-Datenmodell  referentielle Integrität – ID – IDREF – IDREFS  Dokumentbezogen

Herausforderungen Referentielle Integrität in XML  XML-Datenmodell  referentielle Integrität – ID – IDREF – IDREFS  Dokumentbezogen  Das Dokument kann ohne weiteres nicht verlassen werden

1. Lösungsansatz  relationale Speicherung  Zwei-Tabellen-Modell IDTYPEVALUE 1 ELE Order 2 ELE Kunde 3 ELE Name 4 TEX Mustermann 5 ATT id 6 TEXT 4711 IDPARENT_ID 1 NULL

1. Lösungsansatz Semantik aus Tabellen nicht nachvollziehbar Schwierige Integration z.B. Stammdatentabellen Tuning schwierig Indizierung schwierig Volltextsuche schwierig Komplexe JOIN-Operationen

2. Lösungsansatz  relationale Speicherung  Fachliches Datenmodell IDNAMEDEPOT 1 Muster Meier Schmitt 4713 IDWERTPAPIER 1 VW AG 2 Oracle Corp. 3 Sun Microsys. KUNDEN

2. Lösungsansatz Semantik nachvollziehbar einfache Integration mit anderen Tabellen Tuning für bestimmte Abfragen möglich Volltextsuche schwierig Komplexe Logik (Dokumentzerlegung) Informationsverluste gute Eignung, wenn XML als reines Transportformat dient und die relationale Tabellenform im Vordergrund steht.

3. Lösungsansatz Reine XML-Datenbank "native" XML-Speicherung für XML Strukturen optimiert gute XML Schnittstellen gute XML-Indizierung Integration mit relationalen Daten schwierig Locking-Verhalten Referentielle Integrität

Native XML-Speicherung  XML:DB Initiative  Definition – Unterstützt das XML-Datenmodell  Elemente, Attribute, PCDATA, Kommentare,... – Garantiert 1:1-Wiederherstellung des XML- Dokumentes – Unterstützt standardkonforme Abfragesprachen – Ist unabhängig von physikalischer Speicherung!

HTTP FTP SQL*NET User XDB: XML DB Repository Oracle Shared Server XML Schema Oracle XML DB: Architektur User SCOTT: XML Dokumente

WebDAV

FTP

Installation der XML DB  Softwareinstallation – Keine Besonderheiten, automatisch bei der DB- Konfiguration, zusätzliches Schema XDB, FTP und HTTP-Portkonfiguration  Datenbankerstellung Datenbankerstellung

Installation der XML DB

 Voraussetzungen: – R2 Standard oder Enterprise Edition – Oracle Java VM – Shared Server um Protokolle zu nutzen  Manuelle Installation in eine bestehende Datenbank – $ORACLE_HOME/rdbms/admin/catqm.sql [XDB-Passwort] [XDB-TS] [TEMP-TS] – $ORACLE_HOME/rdbms/admin/catxdbj.sql  Deaktivieren der XML DB – $ORACLE_HOME/rdbms/admin/catnoqm.sql – Datenbank neu starten

TCP/IP Port für FTP und HTTP

 Manuelle Änderung der Ports über Skripts – $ORACLE_HOME/rdbms/admin/catxdbdbca.sql [ftp-port] [http-port]  Protokollserver abschalten – Jeweiligen Port auf "0" setzen

XML DB Repository Table Name ACL Property 1 Property N Property N XML Tabellen im User Schema B Tree Index Text Index Hierarchical Index FTP HTTP xdb$resource Resource_view

Das Repository RESOURCE_VIEW PATH_VIEW SQL> desc path_view Name Null? Type PATH VARCHAR2(1024) RES SYS.XMLTYPE LINK SYS.XMLTYPE SQL> desc resource_view Name Null? Type RES SYS.XMLTYPE ANY_PATH VARCHAR2(4000)

Folder anlegen  PL/SQL  per FTP oder im WebDAV-Client declare result boolean; begin result := dbms_xdb.createFolder('/public/ '); end; COMMIT;

Clob Relational Die Speicherart richtet sich nach den Anforderungen der Anwendung: Konkurrierender Zugriff Vokabularänderung Ladeperformance Abfrage-Performance Redundanzen XML Schema Support Unterschiedliche Speicherarten Nativ als Dokument Nativ Objektrelational

Clob Relational Die Speicherart richtet sich nach den Anforderungen der Anwendung: Konkurrierender Zugriff Vokabularänderung Ladeperformance Abfrage-Performance Redundanzen XML Schema Support Unterschiedliche Speicherarten Nativ als Dokument Nativ Objektrelational

Dokumentorientiertes XML  Dokument im Vordergrund  Dokument-Transformationen  Dokument als kleinste Einheit – Lesen und Schreiben als Ganzes  Dokumentteile nur selten  Skalare Daten nur selten – Häufig Volltextsuche  XML als medienneutrales Speicherformat

Datenorientiertes XML  Daten im Vordergrund  Dokumentkontext nicht unbedingt wichtig  Häufig strukturierte Suche – größer-als und kleiner-als Abfragen  XML als Austauschformat – Standardisierung der Werkzeuge – Integration in die IT-Landschaft

Mischformen  Beide Konzepte in einem Dokument  Beispiele: – Zeitungsartikel mit strukturierten Zusatzinformationen  Autor, Zeitung, Erscheinungsdatum ... – Kreditanträge  Strukturierte Kunden- und Kreditdaten  Unstrukturierte Begründungen

Technologie-Stack XML-Dokumentspeicherung OS-BlöckeSystem Calls

Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen (Oracle 1.0) System Calls SQL

Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen System Calls SQL Objektrelationale Datenbank (Oracle 8.0) SQL – Objektrelationale Syntax (SQL99)

Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen System Calls SQL Objektrelationale Datenbank SQL – Objektrelationale Syntax (SQL99) XML DB (Oracle 9.2) XML-Navigation XPath

Technologie-Stack rein dokumentorientiertes XML OS-BlöckeSystem Calls SQL XML DB XML-Navigation XPath CLOB-Datentyp relationale Tabellen

Beispiel: Börsennachrichten

Beispiel: Börsennachrichten Beschreibung als XML Schema

Beispiel: Börsennachrichten Überlegungen...  Strukturierte Informationen – (WKN, Reuters-Code, Quelle, Kontakte, Datum) – Zugriff auf Elemente im Vordergrund – Kombination mit bspw. Kursdatenbank – Strukturierte Speicherung  Unstrukturierte Informationen – Zugriff auf den vollständigen Text im Vordergrund – Volltextsuche – Unstrukturierte Speicherung

Beispiel Börsennachricht Registrierung des XML Schemas Registrierung  1. Ansatz: – W3C XML Schema wird unverändert in Oracle registriert – Oracle Enterprise Manager

Beispiel Börsennachricht Registrierung des XML Schemas  Schema-URL zur Identifizierung des XML Schemas in der Datenbank  URL sinnvoll  jeder String möglich

Beispiel Börsennachricht Ergebnisse:  Feingranulares Mapping  Abbildung nach Objektmodell  darüberhinaus „BODY“-Element  SQL-Datentypen  Systemgenerierte SQL-Namen – Case-Sensitiv – Sequence-Element für Eindeutigkeit über Namespaces hinweg – Neue Namen bei neuer Schema-Registrierung  Tabellen für XML-Dokumente bereits angelegt

"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"

annotated XML Schema Ein XML Schema kann Annotations für verschiedene Datenbanken enthalten, da die jeweiligen Datenbanken fremde Annotations gemäß W3C ignorieren sollen

Beispiel Börsennachricht Schema Annotations 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.

Beispiel Börsennachricht Schema Annotations 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.

Beispiel Börsennachricht Schema Annotations 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.

Beispiel Börsennachricht Schema Annotations 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

Beispiel: Börsennachrichten Beschreibung als XML Schema Speicherung als Ganzes

Beispiel Börsennachricht Registrierung des XML Schemas Registrierung  2. Ansatz: – Oracle-Annotations – SQLType – SQLName –...

Beispiel Börsennachricht Ergebnisse:  Anforderung genaues Mapping  Abbildung nach Objektmodell  BODY Element als Fließtext (CLOB) abgebildet  SQL-Datentypen  Eigene SQL-Namen – Hier: case-insensitiv – Ohne Sequence-Element – Bei jeder Schema Registrierung gleich  Tabellen für Nachrichten und Kontakte angelegt

Weitere Schema-Annotations maintainDOM maintainDOM:Ein/Ausschalten der "DOM-Fidelity" Steuert die Speicherung von Kommentaren, Processing Instructions, Mixed Content Wenn "native XML Speicherung" nicht benötigt wird, kann die "DOM-Fidelity" so ausgeschaltet werden. Die Performance verbessert sich.

Schema Annotations maintainDOM

 Informationsverlust – Kommentare – Processing Instructions – Mixed Content  Sinnvoll.... – Wenn "native XML-Speicherung" nicht nötig ist – Ladeperformance ist "Bottle-Neck"

Beispiel Börsennachrichten  Neue Tabellen anlegen – XMLTYPE als Datentyp CREATE TABLE nachrichten_tab ( nr_id number(10), nr_nachricht xmltype ); Ohne Angabe eines bereits registrieren XML Schemas fehlen die Angaben zur Objektrelationalen Speicherung, daher wird dokumentbasiert als CLOB gespeichert.

Beispiel Börsennachrichten  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 " " element " "

Tabellen partitionieren  Prinzip – Aufteilung in mehrere physikalische Einheiten – Nach außen eine normale Tabelle  Nutzen: Performance – Abfragen können auf einzelne Partitionen beschränkt werden (Optimizer) – Partitionen können als Einheit gelöscht oder verschoben werden

Tabellen partitionieren für XML-Tabellen  Voraussetzungen: – Objektrelationale Speicherung – Lizenzierung (Datenbank-Option)  Partitionierungskriterien – Range, Hash, List – Partitionierungsschlüssel  Indizes – Globale Indizes – Lokale Indizes

Beispiel Börsennachrichten Partitionierte Tabelle  Neue Tabellen anlegen create table nachrichten_part_tab of xmltype xmlschema " element "nachricht" partition by range (xmldata.nr_datum) ( partition nachrichten_before_1999 values less than (to_date(' ','DD-MM-YYYY')), : partition nachrichten_2004 values less than (to_date(' ','DD-MM-YYYY')) ) /

nachricht: aktie datum quelle kontakte titel body Beispiel Börsennachrichten: XML-Datenmodell  In XML ist das Dokument die zentrale Einheit  Integritätsbedingungen ohne weiteres nur innerhalb des Dokumentes möglich  Referenz zu anderen Dokumenten oder Daten muss programmiert werden aktie: wkn name branche reuters kontakte: ziel art adresse 11 1 *

nachricht: aktie datum quelle kontakte titel body Beispiel Börsennachrichten: Reales Datenmodell  Überschreiten der DokumentgrenzeDokumentgrenze  Durch Datenbank-ConstraintsDatenbank-Constraints  Integritätsbedingungen möglich zu... – relationalen Tabellen – anderen XML-Dokumenten aktie: wkn name branche reuters kontakte: ziel art adresse 1 1 * *

XML Schema referenzieren W3C-Standardkonforme Verknüpfung von XML Dokument und XML Schema. Das Dokument wird häufig als "Instanz" des XML Schemas bezeichnet. Gut zu erkennen ist die Lage des Schemadokumentes im Dateisystem.

XML Schema referenzieren Unter dieser URL wurde das XML Schema in Oracle mit dem Enterprise Manager registriert.

Beispiel Börsennachrichten Status....  XML Schema – Oracle Annotations vorhanden – Schema in der Datenbank registriert  Speicherungsmodell objektrelational – Objekttypen vorhanden – Tabelle vorhanden

Laden  objektrelationale Speicherung – XML Schema muss in XML-Dokument referenziert sein – FTP und WebDAV FTPWebDAV – SQL und SQL*Loader

Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? dokumentbasiert im XML DB Repository Nein Ohne Schema-Referenz ist keine Tabellenzuordnung und somit keine objektrelationale Speicherung möglich. Oracle kann nicht wissen, ob dieses XML Dokument gültig ist oder nicht und speichert es daher als Datei ins XML DB Repository.

Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? XML Schema registriert? dokumentbasiert im XML DB Repository Ja Nein Wenn das XML Schema nicht registriert wurde, kann Oracle ebenfalls nicht prüfen, ob das XML Dokument gültig ist oder nicht. Es wird daher ebenfalls als Datei ins XML DB Repository abgelegt.

Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? XML Schema registriert? Verstoß gegen Constraints? Dokument wird abgewiesen Ja Wenn die Inhalte des XML-Dokuments gegen hinterlegte Integritätsbedinungen verstoßen, wird es abgelehnt. Es ist für die Datenbank ungültig.

Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? XML Schema registriert? Verstoß gegen Constraints? objektrelational in XMLTYPE-Tabelle Ja Nein

Beispiel Börsennachrichten  SQL INSERT INSERT INTO NR_NACHRICHT_TAB VALUES ( XMLTYPE ( ' <nachricht xmlns ) );

Schemavalidierung  "leichte Schemaprüfung" – beim Einfügen – Strukturprüfung – Performancegründe  vollständige Schemavalidierung – aktivierbar – RDBMS-Trigger

Beispiel Börsennachrichten Zugriff mit HTTP  Zugriff mit URL – Protokoll – Hostname und TCP/IP Port

Beispiel Börsennachrichten Zugriff mit HTTP  Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel

Beispiel Börsennachrichten Zugriff mit HTTP  Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel – Datenbankschema

Beispiel Börsennachrichten Zugriff mit HTTP  Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel – Datenbankschema – Tabelle / NR_NACHRICHT_TAB

Beispiel Börsennachrichten Zugriff mit HTTP  Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel – Datenbankschema – Tabelle – Optional: XPath Einschränkung / NR_NACHRICHT_TAB/ ROW/nachricht/kontakt[ziel="Finanzen.net"]

Zugriff mit SQL  Zugriff auf XML-Elemente  XPath  SQL-Funktionen – EXTRACT – EXTRACTVALUE – EXISTSNODE

Zugriff mit SQL Gib mir von allen Nachrichten das Datum, die Aktiengesellschaft und den Titel select extractvalue (value(e), '/nachricht/datum') as datum,extractvalue (value(e), as ag,extractvalue (value(e), '/nachricht/titel') as titel from nr_nachricht_tab e

Zugriff mit SQL Gib mir von allen Oracle-Nachrichten das Datum und den Titel select extractvalue (value(e), '/nachricht/datum') as datum,extractvalue (value(e), as ag,extractvalue (value(e), '/nachricht/titel') as titel from nr_nachricht_tab e where existsnode ( value(e), ) = 1

Ohne „Query Rewrite“ XML-Dokument DOM-Baum wkn SELECT extractvalue... FROM nr_nachricht_tab e

Mit „Query Rewrite“ SELECT extractvalue... FROM nr_nachricht_tab e Objektrelational gespeichertes XML-Dokument SELECT e.xmldata.... FROM nr_nachricht_tab e Query Rewrite nachricht: aktie datum quelle kontakte titel body aktie: wkn name branche reuters kontakte: ziel art adresse

Query Rewrite  Optimizer Funktionalität  nicht möglich bei... – XPath Funktionen – XPath Variablen – Wildcards – UNION Operator

Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen System Calls SQL Objektrelationale Datenbank SQL – Objektrelationale Syntax (SQL99) XML DB (Oracle 9.2) XML-Navigation XPath QUERYREWRITEQUERYREWRITE

Beispiel-Börsennachricht B-Tree Index  Einfaches Beispiel  Voraussetzung – Objektrelationale Speicherung create index idx_aktie_wkn on nr_nachricht_tab e /

Beispiel-Börsennachricht B-Tree Index NR_NACHRICHT_TAB  Objekt vollständig in einer Tabellenzeile abgelegt  Arrays werden intern als Bytestrom gespeichert  B-Tree Indizes auf Elemente im Array nicht möglich Default-Abbildung eines XML-Dokumentes mit 1:n Hierarchien

Beispiel-Börsennachricht B-Tree Index NR_NACHRICHT_TAB Auslagerung der 1:n Beziehung in eine eigene Tabelle mit Schema Annotations. NR_KONTAKTE_TAB

Beispiel-Börsennachricht B-Tree Index  Indizierung eines Elementes in einer 1:n Hierarchie  Voraussetzungen: – Objektrelationale Speicherung – 1:n Hierarchie wird in eigene Tabelle ausgelagert – Schema Annotation "storeVarrayAsTable" wird auf "true" gesetzt. create index idx_kontaktart on nr_kontakte_tab e /

Piecewise Update  XML Dokumentknoten gezielt ändern  kein Ersetzen des Gesamtdokumentes  nur auf SQL-Ebene – FTP und WebDAV sind dateiorientiert  SQL-Funktion updateXML ()  Durch Query Rewrite direkte Änderung der Objektrelationalen Tabellenspalten

Piecewise Update Ändere den Firmennamen bei den Nachrichten mit der WKN auf "Oracle Corporation" update nr_nachricht_tab e set value(e) = updatexml ( Corporation' ) where existsnode ( ) = 1

Piecewise Update Ändere die Kontaktart " " nach "Mail" update nr_kontakte_tab e set value(e) = updatexml ( ) where existsnode ( ) = 1

Einsatzgebiete für die Praxis  Layoutneutrale Dokumentspeicherung  Datenaustausch und Integration – DWH-Integration mit relationalen Sichten auf XML-Dokumente – Datenaustausch mit XML-Sichten auf relationale Datenbestände – XML-Messaging

Layoutneutrale Dokumentspeicherung  Dokumente als XMLTYPE  unstrukturiert – u.U. strukturierte Teile – Börsennachrichten  Volltextsuche  Stylesheet-Transformationen

Volltextsuche mit Oracle TEXT  Volltextindex auf jedes XML-Dokument möglich  Oracle TEXT Index – Wildcard Suche (links und rechts) – Phrasensuche – Unscharfe Suche (Fuzzy) – Wortstamm – Stopwort-Listen – Thesaurus-Unterstützung

Volltextsuche mit Oracle TEXT ctx_ddl.create_section_group ( group_name => 'nachrichten_sec_group',group_type => 'PATH_SECTION_GROUP' ); create index idx_nachrichten_volltext on nr_nachricht_tab e (value(e)) indextype is CTXSYS.CONTEXT parameters ('section group nachrichten_sec_group')  Index anlegen

Volltextsuche mit Oracle TEXT select score(1), value(e) from nr_nachricht_tab e where CONTAINS ( value(e),' (Software and Kooperation) INPATH (/nachricht/body) ',1 )>0  Volltextrecherche...

Stylesheet Transformationen  Datenbankintern – Stylesheet muss in der Datenbank vorliegen  SQL-Funktion – XMLTransform()  Aggregat über mehrere Dokumente – XMLAgg()

Stylesheet-Transformationen select xmltransform ( value(e),xdburitype ( '/public/idevelop/nachricht_html.xsl' ).getxml() ) from nr_nachricht_tab e  1:1-Transformation... 1:1-Transformation  n:1 Transformation... n:1 Transformation

Stylesheet-Transformationen  View-Definition TABLEVIEW HTTP-Zugriff 1:1 Transformation HTTP-Zugriff n:1 Transformation

Einsatzgebiete für die Praxis  Layoutneutrale Dokumentspeicherung  Datenaustausch und Integration – DWH-Integration mit relationalen Sichten auf XML-Dokumente – Datenaustausch mit XML-Sichten auf relationale Datenbestände – XML-Messaging

Beispiel Börsennachrichten  Kontaktinformationen – relationale Tabelle – schneller Zugriff – Herausforderung: eine Nachricht hat viele Kontakte WKN GESELLSCHAFTKONTAKTARTADRESSE

Beispiel Börsennachrichten Kontakt-View create or replace view nr_kontakte as select extractvalue (value(e), as wkn,extractvalue (value(e), as gesellschaft,extractvalue (value(k), as kontaktart,extractvalue (value(k), '/kontakt/ziel') as kontaktziel,extractvalue (value(k), '/kontakt/adresse') as adresse from nr_nachricht_tab e,table(xmlsequence(extract(value(e),'/nachricht/kontakt'))) k

Einsatzgebiete für die Praxis  Layoutneutrale Dokumentspeicherung  Datenaustausch und Integration – DWH-Integration mit relationalen Sichten auf XML-Dokumente – Datenaustausch mit XML-Sichten auf relationale Datenbestände – XML-Messaging

Beispiel Aktienkurse relationales Tabellenschema relationales Tabellenschema aktien_tab: wkn name kurse_tab: wkn datum kurs 1 *

Beispiel Aktienkurse XML Views  Erstellen der View create or replace view aktienkurse_xml as select XMLElement( "Aktienkurse", XMLElement("Aktie", XMLAttributes( wkn as "WKN", ak.name as "Gesellschaft")), XMLElement("Kurse", XMLAgg( XMLElement( "Kurs",XMLAttributes( k.datum as "vom"), k.kurs)))) as kurse_dokument from aktien_tab ak join kurse_tab k using (wkn) group by wkn, ak.name

XML Views  Nutzbar wie XMLType Tabellen  Stylesheet-Transformationen  Zugriff durch HTTP Zugriff durch HTTP  einfacher Austausch relational vorliegender Daten

XML-Datenaustausch mit Views  Kommunikation mit Internet-Protokollen HTTP, FTPFTP INSTEAD-OF Trigger

Einsatzgebiete für die Praxis  Layoutneutrale Dokumentspeicherung  Datenaustausch und Integration – DWH-Integration mit relationalen Sichten auf XML-Dokumente – Datenaustausch mit XML-Sichten auf relationale Datenbestände – XML-Messaging

Oracle Advanced Queuing  Datenbankinternes Messaging  Asynchron  Point-to-Point / Publish-Subscribe  Nutzung der Oracle Datenbank – Backup / Recovery, Datenintegrität, Skalierbarkeit, Nachrichten-Persistenz  Transaktionskonzept  SQL-Zugriff

Oracle Advanced Queuing  Messaging auf einem Rechnerknoten  Point-to-Point Anwendung Advanced Queueing Anwendung Oracle EnqueueDequeue

Oracle Advanced Queuing  Messaging auf einem Rechnerknoten  publish-subscribe Anwendung Advanced Queueing Anwendung Oracle publish subscribe

Oracle Advanced Queuing  Messaging über Rechnergrenzen Anwendung Advanced Queues Advanced Queues Advanced Queues Oracle Propagate Enqueue Anwendung Dequeue

Oracle AQ Fähigkeiten  Nachrichten – Nachrichten können nach dem Dequeue behalten werden – Nachrichten-Historie – Nachrichten-Transformation – Kombination mit Oracle DWH-Fähigkeiten – Business-Intelligence  API-Unterstützung – SQL, PL/SQL (DBMS_AQ) – Java (JMS, Oracle AQ API, JDBC)

Oracle AQ – PL/SQL Pakete  DBMS_AQADM – Administrative Aufgaben – Einrichten von Queues – Einrichten von Queue Tabellen – Rechteverwaltung  DBMS_AQ – Umgang mit Queues – Einstellen von Nachrichten (ENQUEUE) – Auslesen von Nachrichten (DEQUEUE)

Oracle AQ  Nachrichten-Transformation Anwendung Advanced Queues Advanced Queues Advanced Queues Oracle Propagate Anwendung Dequeue Transform Anwendung Enqueue Transform

Oracle AQ - Transformationen  PL/SQL oder Java-Funktion  Aktiv... – direkt nach dem ENQUEUE – direkt vor dem DEQUEUE – direkt vor oder nach dem PROPAGATE

Oracle AQ und XML DB  Definition des Queue-Payload als XMLType  Nachrichten-Transformation mit XSLT  ENQUEUE / DEQUEUE mit – AQ Servlet – Oracle XML DB und RDBMS Trigger  Zugriff auf Dokumentteile  Integration mit Views – Relationale Views auf Queue Tabelle – XML-Views auf relationale Tabellen mit anschließendem ENQUEUE des virtuellen Dokumentes

Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Anwendung

Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Enqueue Log Anwendung

Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Enqueue Log Propagate Anwendung Dequeue

Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Enqueue Log Anwendung Propagate Dequeue

Zusammenfassung: Oracle XML DB: zwei Welten... SQL XML RDBMSXML Server

... wachsen zusammen! SQL XML Integrität Ansichten Indizes Oracle

XML-Technologie mit Oracle Integrität Ansichten Indizes Messaging mit Oracle AQ

Weitere Informationen  Oracle Technology Network – –  Dokumentation – Oracle XML database Developers Guide  /appdev.920/a96620/toc.htm – Oracle Application Developer's Guide - Advanced Queuing  /appdev.920/a96587/toc.htm

 Ralf Müller  Oracle Technology Center  30. Mai, 1997 Oracle8, the O/R Database for VLDB Ralf M ü ller, semjena.ppt, 26-May-97

ADT Order: more detailed Order id customer entry_d ol_cnt order_lines Item id name price data Stock item quantity dist_01 dist_02 OrderLine id quantity stock order in Stock refers to has lines... (customer ADT)

ADT Order: modelling in Oracle8 CREATE TYPE Item_t AS OBJECT ( i_idNUMBER, i_nameVARCHAR2(24), i_priceNUMBER, i_dataVARCHAR2(50), MEMBER FUNCTION getPricewithVAT RETURN NUMBER ); CREATE TYPE BODY Item_t AS MEMBER FUNCTION getPricewithVAT RETURN NUMBER IS BEGIN RETURN i_price * 1.15; END getPricewithVAT; END; CREATE TABLE items of Item_t; standard Oracle7 types create table from ADT

ADT Order: modelling in Oracle8 (cont.) CREATE TYPE Stock_t AS OBJECT ( s_itemREF Item_t, s_quantityNUMBER, s_dist_01CHAR(24), s_dist_02CHAR(24), MAP MEMBER FUNCTION item_name RETURN VARCHAR2 ); CREATE TYPE BODY Stock_t AS MAP MEMBER FUNCTION item_name RETURN VARCHAR2 IS BEGIN RETURN s_item.i_name; END item_name; END; CREATE TABLE stocks of Stock_t; reference to item_t dereference s_item

ADT Order: modelling in Oracle8 (cont.) CREATE TYPE Order_line_t AS OBJECT ( ol_idNUMBER, ol_quantityNUMBER, ol_stockREF stock_t, ol_orderREF order_t ); CREATE TYPE order_line_nt AS TABLE OF Order_line_t;