Oracle XML Datenbank

Werbung
Oracle XML Datenbank
Carsten Czarski
Business Unit Database
Oracle Deutschland GmbH
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 OracleTechnologie
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
Abruf als XML
relationale
Datenbestände
Beispiele:
- heterogene Systeme
- XML Schnittstellen
- Versorgung des Workflow
- Abruf per HTTP oder FTP
Herausforderungen
Abruf mit SQL
Beispiele:
- XML als Austauschformat
im e-Business
- Sammlung und
Aggregation im DWH
- DWH-Versorgung aus
heterogenen Systemen
XML-Dokumente
Überführung in DWH
oder andere Anwendung
Herausforderungen
Beispiele:
- XML Dokumente nativ
speichern (jur. Gründe)
- Validitätsprüfung gegen
Stammdaten in einer
relationalen Datenbank
- Validierung im laufenden
Workflow
Integritätsbedingungen
relationale
Datenbestände
XML
Datenbestände
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
ID
1
2
3
4
5
6
TYPE
VALUE
ELE
ELE
ELE
TEX
ATT
TEXT
Order
Kunde
Name
Mustermann
id
4711
ID
1
2
3
4
5
6
PARENT_ID
NULL
1
2
3
1
5
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
KUNDEN ID
NAME
DEPOT
1 Muster
2 Meier
3 Schmitt
4711
4712
4713
ID
WERTPAPIER
1
VW AG
2
Oracle Corp.
3
Sun Microsys.
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 XMLDokumentes
Unterstützt standardkonforme Abfragesprachen
Ist unabhängig von physikalischer Speicherung!
Praxisanforderungen
Lösungsansatz:
I
II
III
native XML-Speicherung
Nein
Nein
Ja
XML-Standardkonformität
Nein
Nein
Ja
offene Schnittstellen
Nein
Nein
Ja
Integrität relational - XML
Nein
Ja
Nein
relationale XML-Darstellung
Nein
Ja
Nein
Ja
Ja
Nein
XML-Darstellung von rel. Tabellen
Oracle XML DB: zwei Welten ...
XML Server
SQL
XML
RDBMS
... wachsen zusammen!
Oracle
SQL
Indizes
Integrität
XML
Ansichten
XML-Technologie mit Oracle
Ansichten
Indizes
Integrität
Messaging mit Oracle AQ
Oracle XML Technologie
Oracle XML DB (seit Oracle Release 2)
Oracle XDK (seit Oracle8i )
–
–
XML Parser [DOM, SAX]
XSQL Servlet
Dynamische XML-Dokumente auf SQL-Basis
XSQL-Pages
deklaratorisch
–
XML Class Generator
Geschichte
i
8
Release 1
Release 2
Geschichte
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
Release 1
Release 2
Geschichte
XML Datentyp
SQL-Zugriffe
einfache Indizes
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
Release 2
Geschichte
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
XML Schema
XML Standards
HTTP, WebDAV
FTP
XML Datentyp
SQL-Zugriffe
einfache Indizes
XML Datentyp
SQL-Zugriffe
einfache Indizes
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
Oracle XML DB: Architektur
User XDB: XML DB Repository
HTTP
FTP
XML Schema
User VW: XML Dokumente
SQL*NET
Oracle Shared Server
WebDAV
FTP
Installation der XML DB
Softwareinstallation
–
Keine Besonderheiten, automatisch bei der DBKonfiguration, zusätzliches Schema XDB,
FTP und HTTP-Portkonfiguration
Datenbankerstellung
Installation der XML DB
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
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
–
Initialisierungsparameter
dispatchers =
(protocol=TCP)(service=<SID>XDB)
XML DB Repository
xdb$resource
Table
Name
ACL
Property Property Property
1
N
N
Resource_view
FTP
HTTP
B Tree
Index
Text
Index
Hierarchical
Index
XML Tabellen im
User Schema
Das Repository
RESOURCE_VIEW
SQL> desc path_view
Name
----------------------------------------PATH
RES
LINK
SQL> desc resource_view
Name
----------------------------------------RES
ANY_PATH
PATH_VIEW
Null?
Type
-------- -------------------------VARCHAR2(1024)
SYS.XMLTYPE
SYS.XMLTYPE
Null?
Type
-------- ------------------------SYS.XMLTYPE
VARCHAR2(4000)
Folder anlegen
PL/SQL
declare
result boolean;
begin
result := dbms_xdb.createFolder('/public/VW');
end;
COMMIT;
per FTP oder im WebDAV-Client
Unterschiedliche Speicherarten
Die Speicherart richtet
sich nach den
Anforderungen der
Anwendung:
Clob
Nativ als
Dokument
Relational
Nativ
Objektrelational
• Konkurrierender Zugriff
• Vokabularänderung
• Ladeperformance
• Abfrage-Performance
• Redundanzen
• XML Schema Support
Unterschiedliche Speicherarten
Die Speicherart richtet
sich nach den
Anforderungen der
Anwendung:
Clob
Nativ als
Dokument
Relational
Nativ
Objektrelational
• Konkurrierender Zugriff
• Vokabularänderung
• Ladeperformance
• Abfrage-Performance
• Redundanzen
• XML Schema Support
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öcke
System Calls
Technologie-Stack
XML-Dokumentspeicherung
relationale
Tabellen
(Oracle 1.0)
SQL
OS-Blöcke
System Calls
Technologie-Stack
XML-Dokumentspeicherung
Objektrelationale
Datenbank
(Oracle 8.0)
SQL – Objektrelationale
Syntax (SQL99)
relationale
Tabellen
SQL
OS-Blöcke
System Calls
Technologie-Stack
XML-Dokumentspeicherung
XML DB
(Oracle 9.2)
XML-Navigation
XPath
Objektrelationale
Datenbank
SQL – Objektrelationale
Syntax (SQL99)
relationale
Tabellen
SQL
OS-Blöcke
System Calls
Technologie-Stack
rein dokumentorientiertes XML
XML DB
XML-Navigation
XPath
CLOB-Datentyp
relationale
Tabellen
SQL
OS-Blöcke
System Calls
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
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
http://xmlns.microsoft.com/xml
http://www.w3.org/2001/XMLSchema
Ein XML Schema kann Annotations für
verschiedene Datenbanken enthalten,
da die jeweiligen Datenbanken fremde
Annotations gemäß W3C ignorieren
sollen
http://xmlns.oracle.com/xdb
Beispiel Börsennachricht
Schema Annotations
<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>
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
<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.
Beispiel Börsennachricht
Schema 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.
Beispiel Börsennachricht
Schema 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
Beispiel: Börsennachrichten
Beschreibung als XML Schema
Speicherung als
Ganzes
Beispiel Börsennachricht
Registrierung des XML Schemas
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
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 "<schema-url>"
element "<root element>"
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 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
<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.
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
SQL und SQL*Loader
Beispiel Börsennachrichten
Laden mit FTP oder WebDAV
Referenz auf Nein
XML Schema?
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.
dokumentbasiert im
XML DB Repository
Beispiel Börsennachrichten
Laden mit FTP oder WebDAV
Ja
XML Schema
registriert?
Referenz auf
XML Schema?
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.
dokumentbasiert im
XML DB Repository
Beispiel Börsennachrichten
Laden mit FTP oder WebDAV
Ja
Ja
XML Schema
registriert?
Ja Verstoß gegen
Constraints?
Dokument wird
abgewiesen
Referenz auf
XML Schema?
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
Ja
Ja
Referenz auf
XML Schema?
XML Schema
registriert?
Verstoß gegen Nein
Constraints?
objektrelational in
XMLTYPE-Tabelle
Beispiel Börsennachrichten:
Constraints und 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
nachricht:
aktie
datum
quelle
kontakte
titel
body
1
1
1
*
aktie:
wkn
name
branche
reuters
kontakte:
ziel
art
adresse
Beispiel Börsennachrichten:
Constraints und Datenmodell
Überschreiten der Dokumentgrenze
Integritätsbedingungen möglich zu ...
–
–
–
relationalen Tabellen
anderen XML-Dokumenten
Flat files (external tables)
nachricht:
aktie
datum
quelle
kontakte
titel
body
*
1
1
*
aktie:
wkn
name
branche
reuters
kontakte:
ziel
art
adresse
Beispiel Börsennachrichten
SQL INSERT
INSERT INTO NR_NACHRICHT_TAB
VALUES
(
XMLTYPE
(
'<?xml version="1.0"?><nachricht xmlns........
)
);
Schemavalidierung
"leichte Schemaprüfung"
–
–
–
beim Einfügen
Strukturprüfung
Performancegründe
vollständige Schemavalidierung
–
–
–
aktivierbar
Trigger
XMLTYPE.schemaValidate()
Beispiel Börsennachrichten
Zugriff mit HTTP
Zugriff mit URL
–
–
Protokoll
Hostname und TCP/IP Port
http://localhost:9080/
Beispiel Börsennachrichten
Zugriff mit HTTP
Zugriff mit URL
–
–
–
Protokoll
Hostname und TCP/IP Port
Datenbank-Kürzel
http://localhost:9080/oradb/
Beispiel Börsennachrichten
Zugriff mit HTTP
Zugriff mit URL
–
–
–
–
Protokoll
Hostname und TCP/IP Port
Datenbank-Kürzel
Datenbankschema
http://localhost:9080/oradb/VW
Beispiel Börsennachrichten
Zugriff mit HTTP
Zugriff mit URL
–
–
–
–
–
Protokoll
Hostname und TCP/IP Port
Datenbank-Kürzel
Datenbankschema
Tabelle
http://localhost:9080/oradb/VW/
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
http://localhost:9080/oradb/VW/
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), '/nachricht/aktie/@name') 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), '/nachricht/aktie/@name') as ag
,extractvalue
(value(e), '/nachricht/titel') as titel
from nr_nachricht_tab e
where existsnode
(
value(e), '/nachricht/aktie[@wkn="871460"]'
) = 1
Ohne „Query Rewrite“
SELECT
extractvalue ...
FROM nr_nachricht_tab e
XML-Dokument
DOM-Baum
wkn
Mit „Query Rewrite“
SELECT
extractvalue ...
FROM nr_nachricht_tab e
Query Rewrite
SELECT
e.xmldata. ...
FROM nr_nachricht_tab e
Objektrelational gespeichertes
XML-Dokument
nachricht:
aktie
datum
quelle
kontakte
titel
body
1
1
1
*
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
XML DB
(Oracle 9.2)
Objektrelationale
Datenbank
relationale
Tabellen
OS-Blöcke
Q
U
E
XML-Navigation
R
XPath
Y
R
E
SQL – Objektrelationale
W
Syntax (SQL99)
R
I
T
E
SQL
System Calls
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 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
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
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
Index anlegen
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')
Volltextsuche mit
Oracle TEXT
Volltextrecherche ...
select score(1), value(e)
from nr_nachricht_tab e
where
CONTAINS
(
value(e)
,'
(Software and Kooperation)
INPATH
(/nachricht/body)
'
,1
)>0
Stylesheet Transformationen
Datenbankintern
–
Stylesheet muss in der Datenbank vorliegen
SQL-Funktion
–
XMLTransform()
Aggregat über mehrere Dokumente
–
XMLAgg()
Stylesheet-Transformationen
1:1-Transformation ...
n:1 Transformation ...
select
xmltransform
(
value(e)
,xdburitype
(
'/public/idevelop/nachricht_html.xsl'
).getxml()
)
from nr_nachricht_tab e
Stylesheet-Transformationen
View-Definition
TABLE
VIEW
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
DWH-Integration
Was hat das mit XML zu tun?
Data Warehouse
–
–
–
relationale Tabellen
Star Schema
Auswertungswerkzeuge
XML
–
–
–
hierarchisch
W3C-Abfragesprachen
XML-Parsing-Vorgänge sehr aufwendig
Integration mit relationalen Views
Beispiel Börsennachrichten
Kontaktinformationen
–
–
–
relationale Tabelle
schneller Zugriff
Herausforderung:
eine Nachricht hat viele Kontakte
WKN
GESELLSCHAFT
KONTAKTART ADRESSE
Beispiel Börsennachrichten
Kontakt-View
create or replace view nr_kontakte
as
select
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 adresse
from
nr_nachricht_tab e
,table(xmlsequence(extract(value(e),'/nachricht/kontakt'))) k
Beispiel Börsennachrichten
Weiterverarbeitung
View-Definition
Oracle
SQL
PL/SQL
Beispiel Börsennachrichten
Kontakt-View
Doppelte Kontakte eliminieren
insert into nr_kontakte_rel_tab
(
wkn, gesellschaft, kontaktart, kontaktziel, adresse
)
(
select distinct
wkn, gesellschaft, kontaktart, kontaktziel, adresse
from nr_kontakte
)
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
aktien_tab:
wkn
name
1
*
kurse_tab:
wkn
datum
kurs
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)
where k.datum > sysdate-60
group by wkn, ak.name
XML Views
Nutzbar wie XMLType Tabellen
Stylesheet-Transformationen
Zugriff durch HTTP
einfacher Austausch relational vorliegender
Daten
XML-Datenaustausch
mit Views
Kommunikation mit Internet-Protokollen
HTTP, FTP
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
Oracle
Anwendung
Enqueue
Dequeue
Advanced Queueing
Anwendung
Anwendung
Oracle Advanced Queuing
Messaging auf einem Rechnerknoten
publish-subscribe
Oracle
publish
subscribe
Anwendung
Advanced Queueing
Anwendung
publish
Anwendung
Anwendung
subscribe
Oracle Advanced Queuing
Messaging über Rechnergrenzen
Oracle
Propagate
Dequeue
Anwendung
Enqueue
Anwendung
Oracle
Anwendung
Advanced
Queues
Enqueue
Advanced
Queues
Oracle
Propagate
Dequeue
Advanced
Queues
Anwendung
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
Oracle
Propagate
Dequeue
Anwendung
Enqueue
Advanced
Queues
Oracle
Anwendung
Transform
Anwendung
Enqueue
Advanced
Queues
Oracle
Anwendung
Propagate
Advanced
Queues
Transform
Dequeue
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 II [Order]
Oracle
Anwendung
FTP
HTTP
Datenbank I
Datenbank III [DWH]
Oracle AQ und XML DB
Datenbank II [Order]
Oracle
Anwendung
Log
FTP
HTTP
Enqueue
Datenbank I
Datenbank III [DWH]
Oracle AQ und XML DB
Datenbank II [Order]
Propagate
Oracle
Anwendung
Log
Dequeue
FTP
HTTP
Enqueue
Datenbank I
Propagate
Datenbank III [DWH]
Oracle AQ und XML DB
Datenbank II [Order]
Dequeue
Propagate
Oracle
Anwendung
Log
Dequeue
FTP
HTTP
Enqueue
Datenbank I
Dequeue
Propagate
Datenbank III [DWH]
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 Queuing
http://download-west.oracle.com/docs/cd/B10501_01
/appdev.920/a96587/toc.htm
Herunterladen