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