slides

Werbung
XML in der Oracle Datenbank
"relational and beyond"
Ulrike Schwinn
([email protected])
Oracle Deutschland GmbH
Oracle XML DB
Ein Überblick
1-1
Agenda
• Warum XML in der Datenbank?
• Unterschiedliche Speichermöglichkeiten
• Ein Beispiel
• Die Oracle XML DB Architektur
• Zugriffe
• Integrationszenarien
• Informationsquellen
1-2
Warum XML in der Datenbank ?
• Weiterverarbeitung von relationalen Daten in XML
• Performantes Einfügen,Verändern und Bereitstellen von XML
Dokumenten
• Suche innerhalb eines XML Dokuments oder einer Anzahl von
XML Dokumenten
• Zugriff über Standardprotokolle wie FTP, WEBDAV und HTTP
• Verwendung von Technologien wie Java, SQL, XPATH und
XSLT
• Zusätzliche Validierung (durch Trigger und Constraints)
• Schutz von “mission critical” Daten
• Einfache Handhabung und Verwaltung in einem Server
1-3
Was bietet die Oracle XML DB?
• Support für offene Standards
–
W3C: DOM, XML Schema, XSLT, XQuery
– ANSI: SQLX
– IETF: WebDAV
–
Und: HTTP, FTP, JNDI, Web Services
• Integriertes XML Repository in das RDBMS
• XML Schema-Integrität und RDBMS-Integritätregeln für XML
Daten
• XML Views über relationale Daten und umgekehrt
• XML spezifische Performance
• Leichte Darstellbarkeit durch Transformation im Server
1-4
Unterschiedliche
Speichermöglichkeiten
Character Large
Object (CLOB)
Nativ als
Dokument
Relational
Nativ
Objektrelational
1-5
Die Speicherart richtet
sich nach den
Anforderungen der
Anwendung:
• Konkurrierender Zugriff
• Vokabularänderung
• Ladeperformance
• Abfrage-Performance
• Redundanzen
• XML Schema Support
Beispiel
order Tabelle
order{Verweis auf Customer, Verweis auf funds}
customer Tabelle
customer{“MaxMustermann“,“Ringstr14“,“Frankfurt“,4711)
customer{...}
1-6
funds Tabelle
funds{“471100“,“Funds Inc..“,1000}
funds{“081500“,...,....}
Beispiel: XML Schema
1-7
XML DB Schema Attribute
Attribute
SQLName
•
•
•
•
•
•
•
•
•
SQLType
MaintainOrder
MaintainDOM
SQLInline
ColumnProps
TableProps
DefaultTable
....
1-8
•
•
•
•
•
•
•
•
Beschreibung
Name des SQL-Objektes
Name des SQL-Typs
Nested Table oder VARRAY
Speichern DOM Info
Speicherung in Objekt ?
Storage-Klausel für Spalten
Storage-Klausel für Tabelle
Tabellename bei Auslagerung
1-9
Abbildung auf Objekte
1-10
Im Hintergrund ...?
-------------------------------------------------------------CREATE OR REPLACE TYPE "BTW"."FUNDS_T" AS OBJECT
("SYS_XDBPD$" "XDB"."XDB$RAW_LIST_T",
"WKN" VARCHAR2(4000),
"FUNDSNAME" VARCHAR2(4000),
"AMOUNT" NUMBER)
NOT FINAL INSTANTIABLE
/
.....
-------------------------------------------------------------CREATE OR REPLACE TYPE "BTW"."CUSTOMER_T" AS OBJECT
("SYS_XDBPD$" "XDB"."XDB$RAW_LIST_T",
"NAME" VARCHAR2(4000),
"STREET" VARCHAR2(4000),
"CITY" VARCHAR2(4000),
"ACCOUNT" VARCHAR2(4000))
NOT FINAL INSTANTIABLE
/
.....
1-11
JDBC
Architektur
HTTP
WebDAV
FTP
Oracle
Net
AQ Zugriff
Oracle9i Datenbank
HTTP
Protokoll-Handler
DAV,FTP
Protokoll-Handler
SQL
Engine
DB- Schemas
XML DB
Respository
1-12
SQL-Verarbeitung
• OHNE Query Rewrite
DOM-Baum
Objektrelationale Tabelle
XPath:
order
customer
/order/customer/name
name
street
city
funds
funds
funds
wkn
wkn
wkn
name
name
name
amount
amount
amount
• MIT Query Rewrite
order
SELECT extractvalue
(value(e),
’/order/customer/name’)
FROM order_tab e
1-13
funds
funds
funds
wkn
name
amount
customer
name
street
city
SELECT
e.xmldata.
customer.name
FROM order_tab e
„Piecewise Update“
order
customer
name
street
city
account
Customer
Tabelle
1-14
Order
Tabelle
funds
funds
funds
wkn
funds
wkn
wkn
name
wkn
name
name
amount
name
count
count
count
• OHNE Lesesperre
• OHNE Lock-Eskalation
Funds
Tabelle
UPDATE funds f
SET value(f) =
updateXML(value(f),
’/FUNDS/AMOUNT/text()’,2222)
WHERE existsNode(value(f),
’FUNDS[AMOUNT=10]’) = 1
HTTP-Zugriff
• Auf Relationale und XML Tabellen
• Suche durch XPath-Ausdrücken
1-15
HTTP-Zugriff
• Stylesheet-Transformationen in der Datenbank
1-16
WebDAV- Zugriff
1-17
FTP-Zugriff
1-18
Integration: relationale Views
Tabelle Order_tab
1-19
Konto
Kundenname
Strasse
4711
.
:
:
Max Mustermann
.
:
:
Ringstra..
:
:
:
Beispiel für eine Relationale View
CREATE OR REPLACE VIEW order_view
AS
SELECT
extractvalue(value(e),’/order/customer/name’) as CNAME,
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
SELECT * FROM order_view
CACC
---------4711
4711
1-20
CNAME
-------------Max Mustermann
Max Mustermann
FWKN
-----471100
081500
FNAME
------------------------Funds Inc Global Treasury
Funds Inc American Technology
Integration: XML-Views
Tabelle Order_tab
Konto
Kundenname
Strasse
4711
.
:
:
Max Mustermann
.
:
:
:
:
Ringstra..
1-21
Beispiel für XML-Generierung
aus der DB
SELECT XMLELEMENT("Emp",
XMLATTRIBUTES ( e.first_name ||’ ’|| e.last_name AS "name" ),
XMLForest (e.hire_date, e.department_id AS "department"))
AS "result"
FROM employees e;
result
---------------------------------------------<Emp name="Jennifer Whalen">
<HIRE_DATE>17.09.1987</HIRE_DATE>
<department>10</department>
</Emp>
<Emp name="Michael Hartstein">
<HIRE_DATE>17.02.1996</HIRE_DATE>
...
1-22
Integration: Oracle9i Advanced
Queuing (Messaging)
Datenbank II [Order]
Dequeue
Propagate
Oracle9i
Anwendung
Log
Dequeue
FTP
HTTP
Enqueue
Datenbank I
1-23
Dequeue
Propagate
Datenbank III [DWH]
Oracle XML DB
Standards
W3C, ANSI, IETF
Integration
XML Views, relationale Views, Volltextsuche, Messaging,...
Repository
Hierarchische Organisation, Foldering, Versionierung,...
Performanz
Query Rewrite, Indizierung, Speicherung,...
Protokoll-Zugriff
1-24
HTTP, WebDAV, FTP
Programmzugriff
SQL, PL/SQL, JAVA, JDBC,...
Datenbank
Sicherheit, Verfügbarkeit, Skalierbarkeit, Integrität, Verwaltungstool
Informationen
• Handbücher:
– XML API Reference
– XML Database Developer’s Guide
– XML Developer’s Kits (XDKs) Guide
• OTN: http://otn.oracle.com/tech/xml/xmldb/content.htm
– Oracle XML DB : Uniting XML Content and Data
(Seybold Consulting Group, March 2002)
– Oracle XML DB : Frequently Asked Questions
– Oracle XML DB : Technical White paper
1-25
Herunterladen