technischer Überblick XML

Werbung
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
Herunterladen