 
                                Oracle XML DB: Architektur
XML DB Repository
HTTP
FTP
XML Schema
SQL*NET
XML Dokumente
Oracle XML DB: Architektur
XML DB Repository
HTTP
FTP
XML Schema
SQL*NET
Oracle MTS
XML Dokumente
Oracle XML DB: Architektur
XML DB Repository
HTTP
FTP
XML Schema
SQL*NET
Oracle MTS
XML Dokumente
WebDAV
FTP
Http-Zugriff in Oracle9i
 relationale und XML Tabellen
 Suche mit XPath-Ausdrücken
Http-Zugriffe
 Stylesheet-Transformationen in der
Datenbank
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:
–
–
–
9i 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)
TCP/IP Port für FTP und HTTP
 Skriptgesteuert
–
$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)
Das Repository
RESOURCE_VIEW
PATH_VIEW
SQL> set long 1000
SQL> SELECT extract(r.res,'/Resource/ModificationDate') FROM resource_view r
2* WHERE equals_path(r.res,'/deptinst2.xml')>0
EXTRACT(R.RES,'/RESOURCE/MODIFICATIONDATE')
-----------------------------------------------------------------------------<ModificationDate
xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd">
2002-05-13T17:00:09.775591
</ModificationDate>
Folder anlegen
 PL/SQL
declare
result boolean;
begin
result := dbms_xdb.createFolder('/public/IDEVELOP');
dbms_xdb.setAcl
('/public/IDEVELOP','/sys/acls/all_owner_acl.xml');
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
XML Schema
DDL für XML in XML
DTD Unzulänglichkeiten
Strukturen
Bedingungen (Constraints)
Datentypen
OO-Konzepte
XML Schema
"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
XML Schema im Beispiel
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="http://www.fundsinc.com/funds/order.xsd"
xmlns:xdb="http://xmlns.oracle.com/xdb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.fundsinc.com/funds/order.xsd">
targetNamespace:
zur Referenzierung
des Schemas durch
ein Dokument
XML Schema im Beispiel
<xs:element name="customer" >
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="street" type="xs:string" />
<xs:element name="city" type="xs:string" />
...
</xs:sequence>
</xs:complexType>
</xs:element>
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.
XML Schema im Beispiel
<xs:element name="customer" xdb:SQLName="CUSTOMER" xdb:SQLType="CUSTOMER_T">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" xdb:SQLName="NAME" xdb:SQLTYPE="VARCHAR2" />
<xs:element name="street" type="xs:string" xdb:SQLName="STREET" xdb:SQLTYPE="VARCHAR2" />
<xs:element name="city" type="xs:string" xdb:SQLName="CITY" xdb:SQLTYPE="VARCHAR2" />
...
</xs:sequence>
</xs:complexType>
</xs:element>
SQLName:
Benennung von Elementen in
Oracle9i
SQLType:
Abbildung von XML-Datentypen
auf Oracle-Datentypen
XML Schema registrieren
 XML Schema mit Annotations
–
–
–
–
W3C-Standard
Objektnamen
Objekttabellen
Speicherstrukturen
 PL/SQL Paket
–
–
DBMS_XMLSCHEMA.REGISTERSCHEMA
DBMS_XMLSCHEMA.DELETESCHEMA
XML Schema registrieren
 Oracle Enterprise
Manager
Tabellen für XML Dokumente
 dokumentbasierter Speicherung
–
–
Schemabindung
keine Schemabindung
 modellbasierte Speicherung
–
Schemabindung
create table order_tab of xmltype
store as object relational
xmlschema "http//www.fundsinc.com/funds/order.xsd"
element "order"
XML Tabellen im Beispiel
TABLE OF XMLTYPE XMLSCHEMA....
XML Tabellen im Beispiel
TABLE OF XMLTYPE XMLSCHEMA....
<?xml version="1.0" encoding="UTF-8" ?>
<order xmlns="http://www.fundsinc.com/funds/order.xsd"
xmlns:xdb="http://xmlns.oracle.com/xdb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"
xsi:schemaLocation="http://www.fundsinc.com/funds/order.xsd
http://www.fundsinc.com/funds/order.xsd">
.
.
.
</order>
XML Tabellen
TABLE OF XMLTYPE XMLSCHEMA....
XMLDATA
order
customer
funds
funds
funds
name
street
city
wkn
wkn
wkn
name
name
name
amount
amount
amount
Select
select extract(value(e), '/order/customer/name')
from order_tab
where
existsnode(value(e),'/order/funds[wkn="471100"]')=1
 XPath in WHERE-Klausel selektiert das
Dokument
 XPath in Select-Liste selektiert innerhalb des
Dokumentes
Update
update order_tab e
set value(e) = updatexml
(value(e),'/order/funds[wkn="999999"]/name/text()',
'no funds')
where
existsnode(value(e),'/order/funds[wkn="999999"]')=1
 updateXML()-Funktion
 XPath Ausdruck
 Update findet auf den gespeicherten
Objekten statt – KEIN DOM-Parsing
Query Rewrite
select extractvalue(
value(e),
'/order/customer/name')
from order_tab e;
select e.xmldata.customer.name
from order_tab e;
Query Rewrite
 Optimierung der SQL-Kommandos
 XPath Auswertung
–
–
ohne Parsen des Gesamtdokuments
objektrelationales Mapping
 gezielte Ansprache der objektrelationalen
Tabellenspalten
Query Rewrite
Das Abfragen von Teilinformationen aus einem
XML Dokument mußte bislang durch
Parser-Funktionalität erfüllt werden.
Das implizierte den Aufbau eines DOM-Baumes.
Objektrelationale Tabelle
DOM-Baum
order
customer
funds
funds
funds
XPath:
wkn
wkn
wkn
name
name
name
amount
amount
amount
/order/customer/name
name
street
city
Query Rewrite
Der direkte Zugriff auf die objektrelationalen
Tabellenspalten kann durch Anwendung von
Query Rewrite erfolgen.
Objektrelationale Tabelle
order
customer
funds
funds
funds
XPath:
wkn
wkn
wkn
name
name
name
amount
amount
amount
/order/customer/name
name
street
city
Concurrency
order
customer
funds
name
wkn
street
name
city
Update 1
count
warten.....
Update 2
1 Dokument
enspricht
1 Tabellenzeile
Release 1
Concurrency
order
customer
name
street
city
Tabelle
funds
funds
funds
wkn
funds
wkn
wkn
name
wkn
name
name
count
name
count
count
count
Tabelle
Release 2
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
Integration durch relationale Views
Tabelle Kunden
Deptno
Dname
Name
1
2
:
:
BDU
Sales
:
:
Carsten...
Ulrike
:
:
relationale Ansichten
create or replace view order_view
as
select
extractvalue(value(e),'/order/customer/name') as CNAME,
extractvalue(value(e),'/order/customer/city') as CCITY,
extractvalue(value(i),'/funds/wkn') as FWKN,
extractvalue(value(i),'/funds/fundsname') as FNAME
from order_tab e, table(
xmlsequence(extract(value(e),'/order/funds'))
) i
Integration durch XML-Sichten
Tabelle Kunden
Deptno
Dname
Name
1
2
:
:
BDU
Sales
:
:
Carsten...
Ulrike
:
:
XML Sichten
 durch HTTP
–
–
–
Zugriff mit XPath und Internet-Explorer
Ansicht wird implizit erzeugt
Stylesheet-Transformation möglich
 Explizite XML View
–
–
Schemagebunden
nicht Schemagebunden
Oracle9i Advanced Queuing
Datenbankinternes Messaging
Asynchron
Point-to-Point / Publish-Subscribe
Nutzung der Oracle Datenbank
–
Backup / Recovery, Datenintegrität,
Skalierbarkeit, Nachrichten-Persistenz
 Transaktionskonzept
 SQL-Zugriff
Oracle9i Advanced Queuing
 Messaging auf einem Rechnerknoten
 Point-to-Point
Oracle9i
Anwendung
Enqueue
Dequeue
Advanced Queueing
Anwendung
Anwendung
Oracle9i Advanced Queuing
 Messaging auf einem Rechnerknoten
 publish-subscribe
Oracle9i
publish
subscribe
Anwendung
Advanced Queueing
Anwendung
publish
Anwendung
Anwendung
subscribe
Oracle9i Advanced Queuing
 Messaging über Rechnergrenzen
Oracle9i
Propagate
Dequeue
Anwendung
Advanced
Queues
Enqueue
Anwendung
Oracle9i
Anwendung
Advanced
Queues
Enqueue
Oracle9i
Propagate
Dequeue
Advanced
Queues
Anwendung
Oracle9i AQ Fähigkeiten
 Nachrichten
–
–
–
–
–
Nachrichten können nach dem Dequeue behalten werden
Nachrichten-Historie
Nachrichten-Transformation
Kombination mit Oracle9i DWH-Fähigkeiten
Business-Intelligence
 API-Unterstützung
–
–
SQL, PL/SQL (DBMS_AQ)
Java (JMS, Oracle AQ API, JDBC)
Oracle9i 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)
Oracle9i AQ
 Nachrichten-Transformation
Oracle9i
Propagate
Dequeue
Anwendung
Enqueue
Advanced
Queues
Oracle9i
Anwendung
Transform
Anwendung
Enqueue
Advanced
Queues
Oracle9i
Anwendung
Propagate
Advanced
Queues
Transform
Dequeue
Oracle9i AQ - Transformationen
 PL/SQL oder Java-Funktion
 Aktiv ...
–
–
–
direkt nach dem ENQUEUE
direkt vor dem DEQUEUE
direkt vor oder nach dem PROPAGATE
Oracle9i 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
Oracle9i AQ und XML DB
Datenbank II [Order]
Oracle9i
Anwendung
FTP
HTTP
Datenbank I
Datenbank III [DWH]
Oracle9i AQ und XML DB
Datenbank II [Order]
Oracle9i
Anwendung
Log
FTP
HTTP
Enqueue
Datenbank I
Datenbank III [DWH]
Oracle9i AQ und XML DB
Datenbank II [Order]
Propagate
Oracle9i
Anwendung
Log
Dequeue
FTP
HTTP
Enqueue
Datenbank I
Propagate
Datenbank III [DWH]
Oracle9i AQ und XML DB
Datenbank II [Order]
Dequeue
Propagate
Oracle9i
Anwendung
Log
Dequeue
FTP
HTTP
Enqueue
Datenbank I
Dequeue
Propagate
Datenbank III [DWH]
Q U E S T I O N S
A N S W E R S