ralf mueller server technologies oracle corporation

132
Ralf Mueller Server Technologies Oracle Corporation Oracle XML Datenbank

Upload: jana-joseph

Post on 01-Jan-2016

42 views

Category:

Documents


1 download

DESCRIPTION

Oracle XML Datenbank. Ralf Mueller Server Technologies Oracle Corporation. Agenda. XML in der Datenbank Speicherformen für XML-Dokumente, Datenbankansätze, Oracle XML Technologie, Architektur der Oracle XML-Datenbank, Installation + Konfiguration - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Ralf Mueller Server Technologies Oracle Corporation

Ralf Mueller

Server TechnologiesOracle Corporation

Oracle XML Datenbank

Page 2: Ralf Mueller Server Technologies Oracle Corporation

Agenda

XML in der DatenbankSpeicherformen 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-DokumentenSpeichern und Abrufen von XML-Dokumenten; Verbindung mit SQL; Protokollzugriff

XML in der Praxis – Szenarien und ImplementierungImplementierung der Szenarien mit der XML-Datenbank, Zusammenspiel mit Oracle-Technologie

Page 3: Ralf Mueller Server Technologies Oracle Corporation

Warum XML in der Datenbank ...?

Page 4: Ralf Mueller Server Technologies Oracle Corporation

... und nicht einfach im Dateisystem?

Page 5: Ralf Mueller Server Technologies Oracle Corporation

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– ...

Page 6: Ralf Mueller Server Technologies Oracle Corporation

XML Standards

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

Page 7: Ralf Mueller Server Technologies Oracle Corporation

Wie speichert man XML-Dokumentein Datenbanken ...?

Page 8: Ralf Mueller Server Technologies Oracle Corporation

Herausforderungen

relationale Datenbestände

Abruf als XML

Beispiele:- heterogene Systeme- XML Schnittstellen- Versorgung des Workflow- Abruf per HTTP oder FTP

Page 9: Ralf Mueller Server Technologies Oracle Corporation

Herausforderungen

XML-Dokumente

Abruf mit SQL

Überführung in DWHoder andere Anwendung

Beispiele:- XML als Austauschformat im e-Business- Sammlung und Aggregation im DWH- DWH-Versorgung aus heterogenen Systemen

Page 10: Ralf Mueller Server Technologies Oracle Corporation

Herausforderungen

relationale Datenbestände

Integritäts-bedingungen

XMLDatenbestände

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

Page 11: Ralf Mueller Server Technologies Oracle Corporation

HerausforderungenReferentielle Integrität in XML

XML-Datenmodell referentielle Integrität

– ID– IDREF– IDREFS

Dokumentbezogen

Page 12: Ralf Mueller Server Technologies Oracle Corporation

HerausforderungenReferentielle Integrität in XML

XML-Datenmodell referentielle Integrität

– ID– IDREF– IDREFS

Dokumentbezogen Das Dokument kann

ohne weiteres nicht verlassen werden

Page 13: Ralf Mueller Server Technologies Oracle Corporation

1. Lösungsansatz

relationale Speicherung Zwei-Tabellen-Modell

ID TYPE VALUE

1 ELE Order 2 ELE Kunde 3 ELE Name 4 TEX Mustermann 5 ATT id 6 TEXT 4711

ID PARENT_ID

1 NULL 2 1 3 2 4 3 5 1 6 5

Page 14: Ralf Mueller Server Technologies Oracle Corporation

1. Lösungsansatz

• Semantik aus Tabellen nicht nachvollziehbar• Schwierige Integration

• z.B. Stammdatentabellen

• Tuning schwierig• Indizierung schwierig• Volltextsuche schwierig• Komplexe JOIN-Operationen

Page 15: Ralf Mueller Server Technologies Oracle Corporation

2. Lösungsansatz

relationale Speicherung Fachliches Datenmodell

ID NAME DEPOT

1 Muster 4711 2 Meier 4712 3 Schmitt 4713

ID WERTPAPIER

1 VW AG 2 Oracle Corp. 3 Sun Microsys.

KUNDEN

Page 16: Ralf Mueller Server Technologies Oracle Corporation

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.

Page 17: Ralf Mueller Server Technologies Oracle Corporation

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

Page 18: Ralf Mueller Server Technologies Oracle Corporation

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!

Page 19: Ralf Mueller Server Technologies Oracle Corporation

HTTP

FTP

SQL*NET

User XDB: XML DB Repository

Oracle Shared Server

XML Schema

Oracle XML DB: Architektur

User SCOTT: XML Dokumente

Page 20: Ralf Mueller Server Technologies Oracle Corporation

WebDAV

Page 21: Ralf Mueller Server Technologies Oracle Corporation

FTP

Page 22: Ralf Mueller Server Technologies Oracle Corporation

Installation der XML DB

Softwareinstallation– Keine Besonderheiten, automatisch bei der DB-

Konfiguration, zusätzliches Schema XDB, FTP und HTTP-Portkonfiguration

Datenbankerstellung

Page 23: Ralf Mueller Server Technologies Oracle Corporation

Installation der XML DB

Page 24: Ralf Mueller Server Technologies Oracle Corporation

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

Page 25: Ralf Mueller Server Technologies Oracle Corporation

TCP/IP Port für FTP und HTTP

Page 26: Ralf Mueller Server Technologies Oracle Corporation

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

Page 27: Ralf Mueller Server Technologies Oracle Corporation

XML DB Repository

TableName ACL

Property 1

Property N

Property N

XML Tabellen im

User SchemaB TreeIndex

TextIndex

HierarchicalIndex

FTP

HTTP

xdb$resource

Resource_view

Page 28: Ralf Mueller Server Technologies Oracle Corporation

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)

Page 29: Ralf Mueller Server Technologies Oracle Corporation

Folder anlegen

PL/SQL

per FTP oder im WebDAV-Client

declare

result boolean;

begin

result := dbms_xdb.createFolder('/public/<Ein Name>');

end;

COMMIT;

Page 30: Ralf Mueller Server Technologies Oracle Corporation

Clob

Relational

Die Speicherart richtetsich nach den Anforderungen der Anwendung:

• Konkurrierender Zugriff• Vokabularänderung• Ladeperformance• Abfrage-Performance• Redundanzen• XML Schema Support

Unterschiedliche Speicherarten

Nativ alsDokument

NativObjektrelational

Page 31: Ralf Mueller Server Technologies Oracle Corporation

Clob

Relational

Die Speicherart richtetsich nach den Anforderungen der Anwendung:

• Konkurrierender Zugriff• Vokabularänderung• Ladeperformance• Abfrage-Performance• Redundanzen• XML Schema Support

Unterschiedliche Speicherarten

Nativ alsDokument

NativObjektrelational

Page 32: Ralf Mueller Server Technologies Oracle Corporation

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

Page 33: Ralf Mueller Server Technologies Oracle Corporation

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

Page 34: Ralf Mueller Server Technologies Oracle Corporation

Mischformen

Beide Konzepte in einem Dokument Beispiele:

– Zeitungsartikel mit strukturierten Zusatzinformationen Autor, Zeitung, Erscheinungsdatum ...

– Kreditanträge Strukturierte Kunden- und Kreditdaten Unstrukturierte Begründungen

Page 35: Ralf Mueller Server Technologies Oracle Corporation

Technologie-StackXML-Dokumentspeicherung

OS-Blöcke System Calls

Page 36: Ralf Mueller Server Technologies Oracle Corporation

Technologie-StackXML-Dokumentspeicherung

OS-Blöcke

relationaleTabellen(Oracle 1.0)

System Calls

SQL

Page 37: Ralf Mueller Server Technologies Oracle Corporation

Technologie-StackXML-Dokumentspeicherung

OS-Blöcke

relationaleTabellen

System Calls

SQL

ObjektrelationaleDatenbank(Oracle 8.0)

SQL – ObjektrelationaleSyntax (SQL99)

Page 38: Ralf Mueller Server Technologies Oracle Corporation

Technologie-StackXML-Dokumentspeicherung

OS-Blöcke

relationaleTabellen

System Calls

SQL

ObjektrelationaleDatenbank

SQL – ObjektrelationaleSyntax (SQL99)

XML DB(Oracle 9.2)

XML-NavigationXPath

Page 39: Ralf Mueller Server Technologies Oracle Corporation

Technologie-Stackrein dokumentorientiertes XML

OS-Blöcke System Calls

SQL

XML DBXML-NavigationXPath

CLOB-Datentyp

relationaleTabellen

Page 40: Ralf Mueller Server Technologies Oracle Corporation

Beispiel: Börsennachrichten

Page 41: Ralf Mueller Server Technologies Oracle Corporation

Beispiel: BörsennachrichtenBeschreibung als XML Schema

Page 42: Ralf Mueller Server Technologies Oracle Corporation

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

Page 43: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtRegistrierung des XML Schemas 1. Ansatz:

– W3C XML Schema wird unverändert in Oracle registriert

– Oracle Enterprise Manager

Page 44: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtRegistrierung des XML Schemas Schema-URL zur

Identifizierung des XML Schemas in der Datenbank

URL sinnvoll jeder String möglich

Page 45: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtErgebnisse: 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

Page 46: Ralf Mueller Server Technologies Oracle Corporation

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

Page 47: Ralf Mueller Server Technologies Oracle Corporation

annotated XML Schema

http://www.w3.org/2001/XMLSchema

http://xmlns.oracle.com/xdb

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

http://xmlns.microsoft.com/xml

Page 48: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtSchema Annotations

Das XML Schema beschreibt die Struktur des XML-Dokumentes, nicht deren physikalische Speicherung in einer Datenbank.

Die Oracle XML DB macht daher Standard-Annahmenbei der Nachbildung des XML-Datenmodells mit Objekttypen.

<xs:complexType name="aktie_t"> <xs:attribute name="wkn" use="required" type="xs:string"> <xs:attribute name="name" use="required" type="xs:string"> <xs:attribute name="reuters" use="required" type="xs:string"> <xs:attribute name="branche" use="required" type="xs:string">  </xs:complexType>

Page 49: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtSchema Annotations

<xs:complexType name="aktie_t" xdb:SQLType="NR_AKTIE_T"> <xs:attribute name="wkn" use="required" xdb:SQLName="AKT_WKN"> <xs:attribute name="name" use="required" xdb:SQLName="AKT_NAME"> <xs:attribute name="reuters" use="required" xdb:SQLName="AKT_REUTERSCODE"> <xs:attribute name="branche" use="required" xdb:SQLName="AKT_BRANCHE">  </xs:complexType>

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.

Page 50: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtSchema Annotations

<xs:element name="body" xdb:SQLName="NR_BODY"> <xs:complexType mixed="true" xdb:SQLType="CLOB"> <xs:choice minOccurs="0" maxOccurs="unbounded"> </xs:complexType></xs:element>

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.

Page 51: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtSchema Annotations

<xs:element name="kontakt" type="kontakt_t" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="NR_KONTAKT" xdb:defaultTable="NR_KONTAKT_TAB" xdb:SQLInline="false"/>

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

Page 52: Ralf Mueller Server Technologies Oracle Corporation

Beispiel: BörsennachrichtenBeschreibung als XML Schema

Speicherung alsGanzes

Page 53: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtRegistrierung des XML Schemas 2. Ansatz:

– Oracle-Annotations– SQLType– SQLName– ...

Page 54: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtErgebnisse: 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

Page 55: Ralf Mueller Server Technologies Oracle Corporation

Weitere Schema-AnnotationsmaintainDOM

<xs:complexType name="aktie_t" xdb:SQLType="NR_AKTIE_T"xdb:maintainDOM="false">

<xs:attribute name="wkn" use="required" xdb:SQLName="AKT_WKN"> <xs:attribute name="name" use="required" xdb:SQLName="AKT_NAME"> <xs:attribute name="reuters" use="required" xdb:SQLName="AKT_REUTERSCODE"> <xs:attribute name="branche" use="required" xdb:SQLName="AKT_BRANCHE">  </xs:complexType>

maintainDOM: Ein/Ausschalten der "DOM-Fidelity"

Steuert die Speicherung von Kommentaren, Processing Instructions, Mixed Content

Wenn "native XML Speicherung" nicht benötigt wird, kanndie "DOM-Fidelity" so ausgeschaltet werden. Die Performance

verbessert sich.

Page 56: Ralf Mueller Server Technologies Oracle Corporation

Schema AnnotationsmaintainDOM

Page 57: Ralf Mueller Server Technologies Oracle Corporation

Schema AnnotationsmaintainDOM Informationsverlust

– Kommentare– Processing Instructions– Mixed Content

Sinnvoll ....– Wenn "native XML-Speicherung" nicht nötig ist– Ladeperformance ist "Bottle-Neck"

Page 58: Ralf Mueller Server Technologies Oracle Corporation

Beispiel Börsennachrichten

Neue Tabellen anlegen– XMLTYPE als DatentypCREATE 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.

Page 59: Ralf Mueller Server Technologies Oracle Corporation

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 relationalxmlschema "<schema-url>" element "<root element>"

Page 60: Ralf Mueller Server Technologies Oracle Corporation

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

Page 61: Ralf Mueller Server Technologies Oracle Corporation

Tabellen partitionierenfür XML-Tabellen Voraussetzungen:

– Objektrelationale Speicherung – Lizenzierung (Datenbank-Option)

Partitionierungskriterien– Range, Hash, List– Partitionierungsschlüssel

Indizes– Globale Indizes– Lokale Indizes

Page 62: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenPartitionierte Tabelle Neue Tabellen anlegen

create table nachrichten_part_tab of xmltypexmlschema "http://www.oracle.com/aktie/nachrichten.xsd"element "nachricht"partition by range (xmldata.nr_datum)( partition nachrichten_before_1999 values less than (to_date('01-01-1999','DD-MM-YYYY')), : partition nachrichten_2004 values less than (to_date('01-01-2005','DD-MM-YYYY')))/

Page 63: Ralf Mueller Server Technologies Oracle Corporation

nachricht:aktiedatumquellekontaktetitel

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 werdenaktie:wknnamebranchereuters

kontakte:zielartadresse

1 1

1 *

Page 64: Ralf Mueller Server Technologies Oracle Corporation

nachricht:aktiedatumquellekontaktetitelbody

Beispiel Börsennachrichten:Reales Datenmodell Überschreiten der Dokumentgrenze Durch Datenbank-Constraints Integritätsbedingungen möglich zu ...

– relationalen Tabellen – anderen XML-Dokumenten

aktie:wknnamebranchereuters

kontakte:zielartadresse

1

1 *

*

Page 65: Ralf Mueller Server Technologies Oracle Corporation

XML Schema referenzieren

<nachricht xmlns="http://www.oracle.com/aktie/nachrichten.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"typ="Unternehmensmeldung"

xsi:schemaLocation="http://www.oracle.com/aktie/nachrichten.xsd C:\nachrichten.xsd"

>

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

Page 66: Ralf Mueller Server Technologies Oracle Corporation

XML Schema referenzieren

<nachricht xmlns="http://www.oracle.com/aktie/nachrichten.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"typ="Unternehmensmeldung"

xsi:schemaLocation="http://www.oracle.com/aktie/nachrichten.xsd http://www.oracle.com/aktie/nachrichten.xsd"

>

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

Page 67: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenStatus .... XML Schema

– Oracle Annotations vorhanden– Schema in der Datenbank registriert

Speicherungsmodell objektrelational– Objekttypen vorhanden– Tabelle vorhanden

Page 68: Ralf Mueller Server Technologies Oracle Corporation

Laden

objektrelationale Speicherung– XML Schema muss in XML-Dokument

referenziert sein– FTP und WebDAV– SQL und SQL*Loader

Page 69: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenLaden mit FTP oder WebDAV

Referenz auf XML Schema?

dokumentbasiert im XML DB Repository

Nein

Ohne Schema-Referenz ist keineTabellenzuordnung und somit keine objektrelationale Speicherung möglich.

Oracle kann nicht wissen, ob dieses XML Dokument gültig ist oder nichtund speichert es daher als Datei ins XML DB Repository.

Page 70: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenLaden mit FTP oder WebDAV

Referenz auf XML Schema?

XML Schemaregistriert?

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.

Page 71: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenLaden mit FTP oder WebDAV

Referenz auf XML Schema?

XML Schemaregistriert?

Verstoß gegenConstraints?

Dokument wirdabgewiesen

Ja

Ja

Ja Wenn die Inhalte des XML-Dokumentsgegen hinterlegte Integritätsbedinungen verstoßen, wird es abgelehnt. Es ist für die Datenbank ungültig.

Page 72: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenLaden mit FTP oder WebDAV

Referenz auf XML Schema?

XML Schemaregistriert?

Verstoß gegenConstraints?

objektrelational in XMLTYPE-Tabelle

Ja

Ja

Nein

Page 73: Ralf Mueller Server Technologies Oracle Corporation

Beispiel Börsennachrichten

SQL INSERTINSERT INTO NR_NACHRICHT_TABVALUES( XMLTYPE ( '<?xml version="1.0"?><nachricht xmlns........ ));

Page 74: Ralf Mueller Server Technologies Oracle Corporation

Schemavalidierung

"leichte Schemaprüfung"– beim Einfügen– Strukturprüfung– Performancegründe

vollständige Schemavalidierung– aktivierbar– RDBMS-Trigger

Page 75: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL

– Protokoll– Hostname und TCP/IP Port

http://localhost:9080/

Page 76: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL

– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel

http://localhost:9080/oradb/

Page 77: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL

– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel– Datenbankschema

http://localhost:9080/oradb/<User-ID>

Page 78: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL

– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel– Datenbankschema– Tabelle

http://localhost:9080/oradb/<User-ID>/NR_NACHRICHT_TAB

Page 79: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL

– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel– Datenbankschema– Tabelle– Optional: XPath Einschränkung

http://localhost:9080/oradb/<User-ID>/NR_NACHRICHT_TAB/ROW/nachricht/kontakt[ziel="Finanzen.net"]

Page 80: Ralf Mueller Server Technologies Oracle Corporation

Zugriff mit SQL

Zugriff auf XML-Elemente XPath SQL-Funktionen

– EXTRACT– EXTRACTVALUE– EXISTSNODE

Page 81: Ralf Mueller Server Technologies Oracle Corporation

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), '/nachricht/aktie/@name') as ag ,extractvalue (value(e), '/nachricht/titel') as titelfrom nr_nachricht_tab e

Page 82: Ralf Mueller Server Technologies Oracle Corporation

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), '/nachricht/aktie/@name') as ag ,extractvalue (value(e), '/nachricht/titel') as titelfrom nr_nachricht_tab ewhere existsnode( value(e), '/nachricht/aktie[@wkn="871460"]') = 1

Page 83: Ralf Mueller Server Technologies Oracle Corporation

Ohne „Query Rewrite“

XML-Dokument

DOM-Baum

wkn

SELECT extractvalue ...FROM nr_nachricht_tab e

Page 84: Ralf Mueller Server Technologies Oracle Corporation

Mit „Query Rewrite“

SELECT extractvalue ... FROM nr_nachricht_tab e

Objektrelational gespeichertesXML-Dokument

SELECT e.xmldata. ... FROM nr_nachricht_tab e

Query Rewrite nachricht:aktiedatumquellekontaktetitelbody

aktie:wknnamebranchereuters

kontakte:zielartadresse

Page 85: Ralf Mueller Server Technologies Oracle Corporation

Query Rewrite

Optimizer Funktionalität nicht möglich bei ...

– XPath Funktionen– XPath Variablen– Wildcards– UNION Operator

Page 86: Ralf Mueller Server Technologies Oracle Corporation

Technologie-StackXML-Dokumentspeicherung

OS-Blöcke

relationaleTabellen

System Calls

SQL

ObjektrelationaleDatenbank

SQL – ObjektrelationaleSyntax (SQL99)

XML DB(Oracle 9.2)

XML-NavigationXPath

QU ERY

REWRITE

Page 87: Ralf Mueller Server Technologies Oracle Corporation

Beispiel-BörsennachrichtB-Tree Index Einfaches Beispiel

Voraussetzung– Objektrelationale Speicherung

create index idx_aktie_wkn on nr_nachricht_tab e(extractvalue(value(e),'/nachricht/aktie@wkn')/

Page 88: Ralf Mueller Server Technologies Oracle Corporation

Beispiel-BörsennachrichtB-Tree Index

NR_NACHRICHT_TAB Objekt vollständig in einer Tabellenzeileabgelegt

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

Page 89: Ralf Mueller Server Technologies Oracle Corporation

Beispiel-BörsennachrichtB-Tree Index

NR_NACHRICHT_TAB

Auslagerung der 1:n Beziehung in eine eigene Tabelle mit Schema Annotations.

NR_KONTAKTE_TAB

Page 90: Ralf Mueller Server Technologies Oracle Corporation

Beispiel-BörsennachrichtB-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(extractvalue(value(e),'/kontakt@art')/

Page 91: Ralf Mueller Server Technologies Oracle Corporation

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

Page 92: Ralf Mueller Server Technologies Oracle Corporation

Piecewise Update

Ändere den Firmennamen bei den Nachrichten mitder WKN 871460 auf "Oracle Corporation"

update nr_nachricht_tab e set value(e) = updatexml ( value(e), ,'/nachricht/aktie/@name' ,'Oracle Corporation' ) where existsnode ( value(e) ,'/nachricht/aktie[@wkn="871460"]' ) = 1

Page 93: Ralf Mueller Server Technologies Oracle Corporation

Piecewise Update

Ändere die Kontaktart "email" nach "Mail"

update nr_kontakte_tab e set value(e) = updatexml ( value(e) ,'/konkakt/@art' ,'Mail' ) where existsnode ( value(e), ,'/kontakt[@art="email"]' ) = 1

Page 94: Ralf Mueller Server Technologies Oracle Corporation

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

Page 95: Ralf Mueller Server Technologies Oracle Corporation

Layoutneutrale Dokumentspeicherung Dokumente als XMLTYPE unstrukturiert

– u.U. strukturierte Teile– Börsennachrichten

Volltextsuche Stylesheet-Transformationen

Page 96: Ralf Mueller Server Technologies Oracle Corporation

Volltextsuchemit 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

Page 97: Ralf Mueller Server Technologies Oracle Corporation

Volltextsuche mit Oracle TEXT

ctx_ddl.create_section_group( group_name => 'nachrichten_sec_group' ,group_type => 'PATH_SECTION_GROUP');

create index idx_nachrichten_volltexton nr_nachricht_tab e (value(e))indextype is CTXSYS.CONTEXTparameters ('section group nachrichten_sec_group')

Index anlegen

Page 98: Ralf Mueller Server Technologies Oracle Corporation

Volltextsuche mit Oracle TEXT

select score(1), value(e)from nr_nachricht_tab ewhere CONTAINS ( value(e) ,' (Software and Kooperation) INPATH (/nachricht/body) ' ,1 )>0

Volltextrecherche ...

Page 99: Ralf Mueller Server Technologies Oracle Corporation

Stylesheet Transformationen

Datenbankintern– Stylesheet muss in der Datenbank vorliegen

SQL-Funktion– XMLTransform()

Aggregat über mehrere Dokumente – XMLAgg()

Page 100: Ralf Mueller Server Technologies Oracle Corporation

Stylesheet-Transformationen

select xmltransform ( value(e) ,xdburitype ( '/public/idevelop/nachricht_html.xsl' ).getxml() )from nr_nachricht_tab e

1:1-Transformation ... n:1 Transformation ...

Page 101: Ralf Mueller Server Technologies Oracle Corporation

Stylesheet-Transformationen

View-Definition

TABLE VIEW HTTP-Zugriff 1:1 Transformation

HTTP-Zugriff n:1 Transformation

Page 102: Ralf Mueller Server Technologies Oracle Corporation

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

Page 103: Ralf Mueller Server Technologies Oracle Corporation

Beispiel Börsennachrichten

Kontaktinformationen– relationale Tabelle– schneller Zugriff– Herausforderung:

eine Nachricht hat viele Kontakte

WKN

GESELLSCHAFT

KONTAKTART

ADRESSE

Page 104: Ralf Mueller Server Technologies Oracle Corporation

Beispiel BörsennachrichtenKontakt-View

create or replace view nr_kontakteasselect extractvalue (value(e), '/nachricht/aktie/@wkn') as wkn ,extractvalue (value(e), '/nachricht/aktie/@name') as gesellschaft,extractvalue (value(k), '/kontakt/@art') as kontaktart ,extractvalue (value(k), '/kontakt/ziel') as kontaktziel ,extractvalue (value(k), '/kontakt/adresse') as adressefrom nr_nachricht_tab e ,table(xmlsequence(extract(value(e),'/nachricht/kontakt'))) k

Page 105: Ralf Mueller Server Technologies Oracle Corporation

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

Page 106: Ralf Mueller Server Technologies Oracle Corporation

Beispiel Aktienkurserelationales Tabellenschema

aktien_tab:wknname

kurse_tab:wkndatumkurs

1

*

Page 107: Ralf Mueller Server Technologies Oracle Corporation

Beispiel AktienkurseXML 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_dokumentfrom aktien_tab ak join kurse_tab k using (wkn)group by wkn, ak.name

Page 108: Ralf Mueller Server Technologies Oracle Corporation

XML Views

Nutzbar wie XMLType Tabellen Stylesheet-Transformationen Zugriff durch HTTP einfacher Austausch relational vorliegender

Daten

Page 109: Ralf Mueller Server Technologies Oracle Corporation

XML-Datenaustauschmit Views Kommunikation mit Internet-Protokollen

HTTP, FTP

INSTEAD-OFTrigger

Page 110: Ralf Mueller Server Technologies Oracle Corporation

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

Page 111: Ralf Mueller Server Technologies Oracle Corporation

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

Page 112: Ralf Mueller Server Technologies Oracle Corporation

Oracle Advanced Queuing

Messaging auf einem Rechnerknoten Point-to-Point

Anwendung

Advanced QueueingAnwendung

Anwendung

Oracle

Enqueue Dequeue

Page 113: Ralf Mueller Server Technologies Oracle Corporation

Oracle Advanced Queuing

Messaging auf einem Rechnerknoten publish-subscribe

Anwendung

Advanced QueueingAnwendung

Anwendung

Anwendung

Oraclepublish

publish

subscribe

subscribe

Page 114: Ralf Mueller Server Technologies Oracle Corporation

Oracle Advanced Queuing

Messaging über Rechnergrenzen

Anwendung

Anwendung

Anwendung

Advanced Queues

Advanced Queues

Advanced Queues

Oracle

Oracle

Oracle

Propagate

Propagate

Enqueue

Enqueue

Anwendung

Dequeue

Dequeue

Page 115: Ralf Mueller Server Technologies Oracle Corporation

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)

Page 116: Ralf Mueller Server Technologies Oracle Corporation

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)

Page 117: Ralf Mueller Server Technologies Oracle Corporation

Oracle AQ

Nachrichten-Transformation

Anwendung

Advanced Queues

Advanced Queues

Advanced Queues

Oracle

Oracle

Oracle

Propagate

PropagateAnwendung

Dequeue

Dequeue

Transform

Anwendung

Anwendung

Enqueue

Enqueue

Transform

Page 118: Ralf Mueller Server Technologies Oracle Corporation

Oracle AQ - Transformationen

PL/SQL oder Java-Funktion Aktiv ...

– direkt nach dem ENQUEUE– direkt vor dem DEQUEUE– direkt vor oder nach dem PROPAGATE

Page 119: Ralf Mueller Server Technologies Oracle Corporation

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

Page 120: Ralf Mueller Server Technologies Oracle Corporation

Oracle AQ und XML DB

Datenbank IDatenbank III [DWH]

Oracle

Datenbank II [Order]

FTPHTTP

Anwendung

Page 121: Ralf Mueller Server Technologies Oracle Corporation

Oracle AQ und XML DB

Datenbank IDatenbank III [DWH]

Oracle

Datenbank II [Order]

FTPHTTP

Enqueue

Log

Anwendung

Page 122: Ralf Mueller Server Technologies Oracle Corporation

Oracle AQ und XML DB

Datenbank IDatenbank III [DWH]

Oracle

Datenbank II [Order]

FTPHTTP

Enqueue

Log

Propagate

Propagate

Anwendung

Dequeue

Page 123: Ralf Mueller Server Technologies Oracle Corporation

Oracle AQ und XML DB

Datenbank IDatenbank III [DWH]

Oracle

Datenbank II [Order]

FTPHTTP

Enqueue

Log

Anwendung

Propagate

Propagate

Dequeue

Dequeue

Dequeue

Page 124: Ralf Mueller Server Technologies Oracle Corporation

Zusammenfassung:Oracle XML DB: zwei Welten ...

SQ

LX

ML

RDBMS XML Server

Page 125: Ralf Mueller Server Technologies Oracle Corporation

... wachsen zusammen!

SQ

LX

ML

Integrität

Ansichten

Indizes

Oracle

Page 126: Ralf Mueller Server Technologies Oracle Corporation

XML-Technologie mit Oracle

Integrität

Ansichten

Indizes

Messaging mit Oracle AQ

Page 127: Ralf Mueller Server Technologies Oracle Corporation

Weitere Informationen

Oracle Technology Network– http://otn.oracle.com/tech/xml/xmldb/content.html– http://otn.oracle.com/products/aq/index.html

Dokumentation– Oracle XML database Developers Guide

http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96620/toc.htm

– Oracle Application Developer's Guide - Advanced Queuinghttp://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96587/toc.htm

Page 128: Ralf Mueller Server Technologies Oracle Corporation

Ralf Müller

Oracle Technology Center 30. Mai, 1997

Oracle8, the O/R Database for VLDB

Ralf Müller, semjena.ppt, 26-May-97

Page 129: Ralf Mueller Server Technologies Oracle Corporation

ADT Order: more detailed

Order

idcustomerentry_dol_cntorder_lines

Item

idnamepricedata

Stock

itemquantitydist_01dist_02

OrderLine

idquantitystockorder

in Stock

refers to

has lines

... (customer ADT)

Page 130: Ralf Mueller Server Technologies Oracle Corporation

ADT Order: modelling in Oracle8

CREATE TYPE Item_t AS OBJECT ( i_id NUMBER, i_name VARCHAR2(24), i_price NUMBER, i_data VARCHAR2(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

Page 131: Ralf Mueller Server Technologies Oracle Corporation

ADT Order: modelling in Oracle8 (cont.)

CREATE TYPE Stock_t AS OBJECT ( s_item REF Item_t, s_quantity NUMBER, s_dist_01 CHAR(24), s_dist_02 CHAR(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

Page 132: Ralf Mueller Server Technologies Oracle Corporation

ADT Order: modelling in Oracle8 (cont.)

CREATE TYPE Order_line_t AS OBJECT (ol_id NUMBER,ol_quantity NUMBER,ol_stock REF stock_t,ol_order REF order_t

);

CREATE TYPE order_line_nt AS TABLE OF Order_line_t;