XML Schema

Werbung
HP IT-Symposium 2006
Page 1
www.decus.de
1
HP IT-Symposium 2006
Oracle – Die XML Datenbank
Nikolaus Eichler
STCC Düsseldorf
ORACLE Deutschland GmbH
Warum XML in der Datenbank ...?
Page 2
www.decus.de
2
HP IT-Symposium 2006
... und nicht einfach im Dateisystem?
Herausforderungen
Abruf als XML
Beispiele:
- heterogene Systeme
- XML Schnittstellen
- Versorgung des Workflow
- Abruf per HTTP oder FTP
relationale
Datenbestände
Page 3
www.decus.de
3
HP IT-Symposium 2006
Herausforderungen
Beispiele:
- XML als Austauschformat
im e-Business
- Sammlung und
Aggregation im DWH
- DWH-Versorgung aus
heterogenen Systemen
Abruf mit SQL
XML-Dokumente
Überführung in DWH
oder andere Anwendung
XML Standards
•
•
•
•
•
•
•
XML – W3C
DOM – W3C
XPath – W3C
XML Schema – W3C
XSL and XSLT – W3C
WebDAV - IETF
SQL/XML – ANSI/ISO
Page 4
www.decus.de
4
HP IT-Symposium 2006
Oracle XML DB: Entwicklung
9iR2
9iR1
8i
XML-Datentyp
eingeführt
Oracle XML DB
Repository
(für XML Schema)
Ausbau der
bestehenden
Funktionalitäten
• Performance
• größere XML
Dokumente
• DOM API für "C"
• Schema Evolution
• Im- und Export
• direct load
• XQuery
XML Generierung
und Verarbeitung
Oracle XML DB: zwei Welten ...
RDBMS
XML Server
Änderungen
Änderungen
XQuery
SQL
XPath
Recherchen
Recherchen
Page 5
www.decus.de
5
HP IT-Symposium 2006
... wachsen zusammen!
Oracle XML DB
XQuery
XPath
SQL
Transformationen
XML- Sichten
SQL*Net
HTTP / WebDAV
Recherchen
FTP
Relationale Sichten
Oracle XML DB Repository - Architektur
JDBC
Oracle
Net
SQL
XML Table
Repository
Resource View
Schema
Page 6
www.decus.de
6
HP IT-Symposium 2006
Oracle 9iR2 u. 10g – XML und SQL Integration
Schema
Registration
XML
JNDI
Schema Namespaces
TCP/IP
HTTP
WebDav
XML Dokumente
Oder
Nachrichten
FTP
DOM
Intelligent
Indexing
JNDI
XML
Views
SQLX
XSLT
Transforms
XPath
ACLs
Java
Beans
Foldering
XML Schemas
XML Attributes
XML Dokumente
und Fragmente
Relationale Tabellen
Versioning
native Speicherung
•
•
•
vollständige 1:1-Wiederherstellung des
gespeicherten Dokumentes
n
y Reihenfolge
sche !!!
i
n
h
y Elemente / Attribute
r tec e Rolle
e
d
in
y "Processing-Instructions"
se
Wei pielt ke
d
n
W3C-Standardkonformer
tu
g s Zugriff
e Ar ntierun
i
D
y XPath eme
l
ImpDOM - API
y Java
Transparenter Zugriff
Page 7
www.decus.de
7
HP IT-Symposium 2006
Oracle XML DB
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
• XML Schema Support
Relationale Speicherung
Clob
Nativ als
Dokument
Relational
Nativ
Objektrelational
y hierarchische
Strukturen der XML
Dokumente werden für
die relationale
Speicherung
"aufgebrochen"
y Struktur des XML
Dokumentes muß ggf.
für spätere
Weiterverwendung neu
aufgebaut werden
Page 8
www.decus.de
8
HP IT-Symposium 2006
Speicherung als CLOB
Clob
Nativ als
Dokument
Relational
Nativ
Objektrelational
y Speicherung als CLOB
(Zeichenkette); DB weiß
nicht, daß es sich beim
Inhalt um XML handelt
y keine Prüfung auf
Wohlgeformtheit oder
Gültigkeit beim Input
y beim nachträglichen
Ändern wird das
gesamte Dokument
ausgetauscht
y Dateninput
programmiertechnisch
oder über den SQL
Loader
Native Speicherung
Clob
Nativ als
Dokument
Relational
Nativ
Objektrelational
y CLOB:Der DB ist bekannt,
daß es sich um XML
handelt
y Prüfung auf
Wohlgeformtheit beim
Input
y ggf. Prüfung auf
Gültigkeit
y beim nachträglichen
Ändern ist immer das
gesamte Dokument
betroffen
y Dateninput
programmiertechnisch
/WebDAV/FTP
Page 9
www.decus.de
9
HP IT-Symposium 2006
Objektrelationales Mapping
y
y
y
Clob
Nativ als
Dokument
Relational
Nativ
Objektrelational
y
y
y
Speicherung
objektrelational
Prüfung auf Gültigkeit
Optimierung der
Abfrageperformance
durch Query ReWrite
nachträgliche
Änderungen können
gezielt durchgeführt
werden
Dateninput
programmiertechnisch,
über den SQL Loader
und über ftp / WebDAV
"DOM-Fidelity"
gewährleistet
Datentyp XMLTYPE
• Verwendbar wie jeder andere Datentyp
• Tabellenspalten
• PL/SQL-Logik
• Speicherungsform
• CLOB
• Objektrelational (XML Schema)
• Unabhängige Schnittstelle
• EXTRACT, EXTRACTVALUE
• SCHEMAVALIDATE
Page 10
www.decus.de
10
HP IT-Symposium 2006
DOM
Rechnung
<?xml version="1.0" ?>
<rechnung>
<kunde>
<name>Franz Mustermann</name>
<strasse>Musterstr. 1</strasse>
<ort>80981 Musterstadt</ort>
</kunde>
<bestellung>
<artikel>
<nr>4711</nr>
<name>CD Rom</name>
<anzahl>1000</anzahl>
</bestellung>
</rechnung>
Kunde
name
Bestellung
Artikel
strasse
ort
Artikel
nr
nr
name
name
anzahl
anzahl
DOM
• Nachbildung der XML Struktur mit
Objektbaum
• Durch XML Parser
• In-Memory-Struktur
• Navigation möglich
• Strukturänderungen möglich
• für alle OO-Programmiersprachen
• Hoher Speicherbedarf
Page 11
www.decus.de
11
HP IT-Symposium 2006
Tabellen anlegen
Speicherungsform als CLOB
• Neue Tabellen anlegen
• XMLTYPE als Datentyp
CREATE TABLE nachrichten_tab
(
nr_id
number(10),
nr_nachricht xmltype
);
Ohne Angabe eines bereits registrierten XML Schemas
fehlen die Angaben zur objektrelationalen Speicherung,
daher wird dokumentbasiert als CLOB gespeichert.
Tabellen anlegen
Objektrelationale Speicherungsform
• 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>"
Page 12
www.decus.de
12
HP IT-Symposium 2006
XML Schema
Codebeispiel
<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.
"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"
Page 13
www.decus.de
13
HP IT-Symposium 2006
Schema Annotations
Interne Namensgebung
<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.
Schema Annotations
Speicherungsform für Fragmente
<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.
Page 14
www.decus.de
14
HP IT-Symposium 2006
Schema Annotations
Speicherung 1:n-Collections
<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
XML DB: Zugriffe
ftp> open 192.168.2.140 2100
Connected to 192.168.2.140.
220- cczarski-linux-140
Unauthorised use of this FTP server is prohibited and may be subject to
civil SQL>
and criminal
prosecution.
select extract(object_value,
'/nachricht/aktie').getstringval()
220 cczarski-linux-140
FTP Server (Oracle
XML DB/Oracle Database) ready.
2 from "nachricht429_TAB"
e;
ftp> user xmldemo xmldemo
331 pass
required for XMLDEMO
XML_TITEL
230 XMLDEMO
logged in
----------------------------------------------------------------------ftp> dir
<aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="871460„
200 PORT Command
successfulreuters="ORCL" branche="Software"/>
name="Oracle"
150 ASCII
Data
Connection
<aktie
xmlns="http://www.oracle.com/aktie/nachrichten.xsd"
wkn="871460„
drw-r--r-2 SYS
oracle
0 AUG
09 15:48 home
name="Oracle"
reuters="ORCL"
branche="Software"/>
drw-r--r-2
SYS
oracle
0
AUG
10
11:14
i
<aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="840400„
drw-r--r-2 SYS
oracle
0 AUG
30 17:57 public
name="Allianz"
reuters="ALV"
branche="Versicherungen"/>
drw-r--r-2 SYS
oracle
0 AUG 09 15:48 sys
:
226 ASCII Transfer Complete
ftp: 238
SQL>bytes received in 0,03Seconds 7,93Kbytes/sec.
ftp>
Page 15
www.decus.de
15
HP IT-Symposium 2006
Zugriff mit HTTP
• Zugriff mit URL
• Protokoll
• Hostname und TCP/IP Port
http://neichler-de:8080/
Zugriff mit HTTP
• Zugriff mit URL
• Protokoll
• Hostname und TCP/IP Port
• Datenbank-Kürzel
http://neichler-de:8080/oradb/
Page 16
www.decus.de
16
HP IT-Symposium 2006
Zugriff mit HTTP
• Zugriff mit URL
•
•
•
•
Protokoll
Hostname und TCP/IP Port
Datenbank-Kürzel
Datenbankschema
http://neichler-de:8080/oradb/SCOTT
Zugriff mit HTTP
• Zugriff mit URL
•
•
•
•
•
Protokoll
Hostname und TCP/IP Port
Datenbank-Kürzel
Datenbankschema
Tabelle/View
http://lneichler-det:8080/oradb/SCOTT/EMP
Page 17
www.decus.de
17
HP IT-Symposium 2006
Zugriff mit HTTP
• Zugriff mit URL
•
•
•
•
•
•
Protokoll
Hostname und TCP/IP Port
Datenbank-Kürzel
Datenbankschema
Tabelle/View
Optional: XPath Einschränkung
http://neichler-de:8080/oradb/SCOTT/EMP/ROW[ENAME="MILLER"]
Zugriff mit HTTP
• Zugriff mit URL
•
•
•
•
•
•
•
Protokoll
Hostname und TCP/IP Port
Datenbank-Kürzel
Datenbankschema
Tabelle/View
Optional: XPath Einschränkung
Optional: Rowsettag für Wellformed XML
http://neichler-de:8080/oradb/SCOTT/EMP/
ROW/ENAME?rowsettag=Employees
Page 18
www.decus.de
18
HP IT-Symposium 2006
XPath
•
•
•
•
•
•
W3C-Standard
Navigation in einem XML Dokument
Analog Verzeichnisbaum
/Rechnung/Kunde/name
Inhaltliche Einschränkung möglich
/Rechnung[/kunde/name="Ellision"]
XQuery: FLWOR-Ausdrücke
Page 19
www.decus.de
19
HP IT-Symposium 2006
XQuery and SQL/XML
•
•
•
XQuery – In der Entwicklung befindender W3C Abfrage Standard für
XML
SQL/XML Standard – SQL Standard zur Integration von XML und
XQuery in SQL (http://www.sqlx.org)
SQL/XML 2003 Standard
•
•
XML als “built-in type” in SQL
SQL/XML Darstellungsfunktionen zum generieren von XML aus
relationalen Daten
•
•
XMLElement(), XMLForest(), XMLAgg(), XMLConcat()
SQL/XML 2005
•
•
XMLQuery- Abfrage von XML mit “embedded” XQuery
XMLTable construct – Transformation des XQuery Ergebnisses in
eine raltionale Struktur
XQuery
Anwendungsgebiete
XQuery
Transformation
XML nach XML
•XSLT
•SQL/XML
XML-Abfragen
•XPath
•SQL
•SQL/XML
XML erzeugen
•SQL/XML
•PL/SQL
gR
10
2
Relationale
Sichten
•XPath
•SQL
Page 20
www.decus.de
20
HP IT-Symposium 2006
Zugriff mit SQL-Funktionen
• EXTRACT
• EXTRACTVALUE
• EXISTSNODE
create view ... as
select
extractvalue
(value(po), '/PurchaseOrder/Reference') as reference
,extractvalue
(value(po), '/PurchaseOrder/User') as username
,extractvalue
(value(po), '/PurchaseOrder/CostCenter') as cc
from PURCHASEORDER_TAB po
Zugriff mit SQL
Hierarchie vs. flache Tabellen
• Übersetzung ...
• XMLSEQUENCE()-Funktion
• Auch mehrere Hierarchieebenen möglich
select
extractvalue
(value(po), '/PurchaseOrder/Reference') reference
,extractvalue
(value(po), '/PurchaseOrder/User') as username
,count(value(li)) as lineitems
from
PURCHASEORDER_TAB po,
table(xmlsequence(extract
(value(po),'/PurchaseOrder/LineItems/LineItem')
)) li
where existsnode
(value(po),'/PurchaseOrder/[CostCenter="A10"]')=1
Page 21
www.decus.de
21
HP IT-Symposium 2006
XML Schema in der Oracle-Datenbank
• "Registrierung"
• PL/SQL Paket (DBMS_XMLSCHEMA)
• Oracle Enterprise Manager
• Nachbildung der XML-Strukturen
• Oracle Objekttypen
• XML-Speicherung als "Objekt"
Abfrageoptimierung
Query Rewrite
SELECT
extractvalue(...),
...
FROM PURCHASEORDER_TAB
Objektrelational gespeicherte
XML-Dokumente
Query Rewrite
SELECT
SYS_NC000015$,
...
FROM PURCHASEORDER_TAB
PurchaseOrder
PurchaseOrder
PurchaseOrder
PurchaseOrder
PurchaseOrder
* *LineItem
LineItem
* *LineItem
LineItem
LineItem
11User
11User
User
User
User
Page 22
www.decus.de
22
HP IT-Symposium 2006
Ausführung ohne Query Rewrite
DOM Parsing
SELECT
extractvalue(...),
...
FROM PURCHASEORDER_TAB
XML-Dokument
DOM-Baum
wkn
Data Dictionary ...
• Welche XML Views gibt es ...
SQL> select view_name from user_xml_views;
VIEW_NAME
-----------------------------KUNDE_XML_VIEW
DEPOT_XML_VIEW
WERTPAPIER_XML_VIEW
OVERVIEW_XML_VIEW
WERTPAPIER_XML_VIEW_XQUERY
DEPOT_XML_VIEW_XQUERY
KUNDE_XML_VIEW_XQUERY
OVERVIEW_XML_VIEW_XQUERY
Page 23
www.decus.de
23
HP IT-Symposium 2006
Oracle XML DB
“Oracle 9i is now by every definition that I know of,
a native XML database“
Kimbro Staken
http://www.xmldatabases.org/radio/xmlDatabases/2002/06/25.html
Weitere Informationen
• Oracle Dokumentation: XML DB
http://download-uk.oracle.com/docs/cd/
B19306_01/appdev.102/b14259/toc.htm
• Oracle XML DB im OTN
http://www.oracle.com/technology/tech/xml/
xmldb/index.html
Page 24
www.decus.de
24
HP IT-Symposium 2006
Q U E S T I O N S
A N S W E R S
Page 25
www.decus.de
25
Herunterladen