Upload
jana-joseph
View
42
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Oracle XML Datenbank. Ralf Mueller Server Technologies Oracle Corporation. Agenda. XML in der Datenbank Speicherformen für XML-Dokumente, Datenbankansätze, Oracle XML Technologie, Architektur der Oracle XML-Datenbank, Installation + Konfiguration - PowerPoint PPT Presentation
Citation preview
Ralf Mueller
Server TechnologiesOracle Corporation
Oracle XML Datenbank
Agenda
XML in der DatenbankSpeicherformen für XML-Dokumente, Datenbankansätze, Oracle XML Technologie, Architektur der Oracle XML-Datenbank, Installation + Konfiguration
XML-Speicherstrukturen Festlegung der Speicherungsform, XML Schema, Registrierung, objektrelationale Strukturen
Umgang mit XML-DokumentenSpeichern und Abrufen von XML-Dokumenten; Verbindung mit SQL; Protokollzugriff
XML in der Praxis – Szenarien und ImplementierungImplementierung der Szenarien mit der XML-Datenbank, Zusammenspiel mit Oracle-Technologie
Warum XML in der Datenbank ...?
... und nicht einfach im Dateisystem?
Warum XML in der Datenbank ...... und nicht im Dateisystem? relationale Daten bereits vorhanden
– Kombination mit XML Dokumenten– Ausgabe als XML-Dokument
Erweiterung des XML-Datenmodells– Zusätzliche Datenbankvalidierung– Transaktionskonzept– Datennahe Sicherheitskonzepte– Datennahe Logik– ...
XML Standards
XML – W3C DOM – W3C XPath – W3C XML Schema – W3C XSL and XSLT – W3C WebDAV - IETF SQL/XML – ANSI/ISO
Wie speichert man XML-Dokumentein Datenbanken ...?
Herausforderungen
relationale Datenbestände
Abruf als XML
Beispiele:- heterogene Systeme- XML Schnittstellen- Versorgung des Workflow- Abruf per HTTP oder FTP
Herausforderungen
XML-Dokumente
Abruf mit SQL
Überführung in DWHoder andere Anwendung
Beispiele:- XML als Austauschformat im e-Business- Sammlung und Aggregation im DWH- DWH-Versorgung aus heterogenen Systemen
Herausforderungen
relationale Datenbestände
Integritäts-bedingungen
XMLDatenbestände
Beispiele:- XML Dokumente nativ speichern (jur. Gründe)- Validitätsprüfung gegen Stammdaten in einer relationalen Datenbank- Validierung im laufenden Workflow
HerausforderungenReferentielle Integrität in XML
XML-Datenmodell referentielle Integrität
– ID– IDREF– IDREFS
Dokumentbezogen
HerausforderungenReferentielle Integrität in XML
XML-Datenmodell referentielle Integrität
– ID– IDREF– IDREFS
Dokumentbezogen Das Dokument kann
ohne weiteres nicht verlassen werden
1. Lösungsansatz
relationale Speicherung Zwei-Tabellen-Modell
ID TYPE VALUE
1 ELE Order 2 ELE Kunde 3 ELE Name 4 TEX Mustermann 5 ATT id 6 TEXT 4711
ID PARENT_ID
1 NULL 2 1 3 2 4 3 5 1 6 5
1. Lösungsansatz
• Semantik aus Tabellen nicht nachvollziehbar• Schwierige Integration
• z.B. Stammdatentabellen
• Tuning schwierig• Indizierung schwierig• Volltextsuche schwierig• Komplexe JOIN-Operationen
2. Lösungsansatz
relationale Speicherung Fachliches Datenmodell
ID NAME DEPOT
1 Muster 4711 2 Meier 4712 3 Schmitt 4713
ID WERTPAPIER
1 VW AG 2 Oracle Corp. 3 Sun Microsys.
KUNDEN
2. Lösungsansatz
• Semantik nachvollziehbar• einfache Integration mit anderen Tabellen• Tuning für bestimmte Abfragen möglich• Volltextsuche schwierig• Komplexe Logik (Dokumentzerlegung)• Informationsverluste
gute Eignung, wenn XML als reines Transportformat dient und die relationale Tabellenform im Vordergrund steht.
3. Lösungsansatz
• Reine XML-Datenbank• "native" XML-Speicherung• für XML Strukturen optimiert• gute XML Schnittstellen• gute XML-Indizierung• Integration mit relationalen Daten schwierig
• Locking-Verhalten• Referentielle Integrität
Native XML-Speicherung
XML:DB Initiative Definition
– Unterstützt das XML-Datenmodell Elemente, Attribute, PCDATA, Kommentare, ...
– Garantiert 1:1-Wiederherstellung des XML-Dokumentes
– Unterstützt standardkonforme Abfragesprachen– Ist unabhängig von physikalischer Speicherung!
HTTP
FTP
SQL*NET
User XDB: XML DB Repository
Oracle Shared Server
XML Schema
Oracle XML DB: Architektur
User SCOTT: XML Dokumente
WebDAV
FTP
Installation der XML DB
Softwareinstallation– Keine Besonderheiten, automatisch bei der DB-
Konfiguration, zusätzliches Schema XDB, FTP und HTTP-Portkonfiguration
Datenbankerstellung
Installation der XML DB
Installation der XML DB
Voraussetzungen:– 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– Jeweiligen Port auf "0" setzen
XML DB Repository
TableName ACL
Property 1
Property N
Property N
XML Tabellen im
User SchemaB TreeIndex
TextIndex
HierarchicalIndex
FTP
HTTP
xdb$resource
Resource_view
Das Repository
RESOURCE_VIEW PATH_VIEW
SQL> desc path_view
Name Null? Type
----------------------------------------- -------- --------------------------
PATH VARCHAR2(1024)
RES SYS.XMLTYPE
LINK SYS.XMLTYPE
SQL> desc resource_view
Name Null? Type
----------------------------------------- -------- -------------------------
RES SYS.XMLTYPE
ANY_PATH VARCHAR2(4000)
Folder anlegen
PL/SQL
per FTP oder im WebDAV-Client
declare
result boolean;
begin
result := dbms_xdb.createFolder('/public/<Ein Name>');
end;
COMMIT;
Clob
Relational
Die Speicherart richtetsich nach den Anforderungen der Anwendung:
• Konkurrierender Zugriff• Vokabularänderung• Ladeperformance• Abfrage-Performance• Redundanzen• XML Schema Support
Unterschiedliche Speicherarten
Nativ alsDokument
NativObjektrelational
Clob
Relational
Die Speicherart richtetsich nach den Anforderungen der Anwendung:
• Konkurrierender Zugriff• Vokabularänderung• Ladeperformance• Abfrage-Performance• Redundanzen• XML Schema Support
Unterschiedliche Speicherarten
Nativ alsDokument
NativObjektrelational
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
Technologie-StackXML-Dokumentspeicherung
OS-Blöcke System Calls
Technologie-StackXML-Dokumentspeicherung
OS-Blöcke
relationaleTabellen(Oracle 1.0)
System Calls
SQL
Technologie-StackXML-Dokumentspeicherung
OS-Blöcke
relationaleTabellen
System Calls
SQL
ObjektrelationaleDatenbank(Oracle 8.0)
SQL – ObjektrelationaleSyntax (SQL99)
Technologie-StackXML-Dokumentspeicherung
OS-Blöcke
relationaleTabellen
System Calls
SQL
ObjektrelationaleDatenbank
SQL – ObjektrelationaleSyntax (SQL99)
XML DB(Oracle 9.2)
XML-NavigationXPath
Technologie-Stackrein dokumentorientiertes XML
OS-Blöcke System Calls
SQL
XML DBXML-NavigationXPath
CLOB-Datentyp
relationaleTabellen
Beispiel: Börsennachrichten
Beispiel: BörsennachrichtenBeschreibung als XML Schema
Beispiel: BörsennachrichtenÜberlegungen ... Strukturierte Informationen
– (WKN, Reuters-Code, Quelle, Kontakte, Datum)– Zugriff auf Elemente im Vordergrund– Kombination mit bspw. Kursdatenbank– Strukturierte Speicherung
Unstrukturierte Informationen– Zugriff auf den vollständigen Text im Vordergrund– Volltextsuche– Unstrukturierte Speicherung
Beispiel BörsennachrichtRegistrierung des XML Schemas 1. Ansatz:
– W3C XML Schema wird unverändert in Oracle registriert
– Oracle Enterprise Manager
Beispiel BörsennachrichtRegistrierung des XML Schemas Schema-URL zur
Identifizierung des XML Schemas in der Datenbank
URL sinnvoll jeder String möglich
Beispiel BörsennachrichtErgebnisse: Feingranulares Mapping Abbildung nach Objektmodell darüberhinaus „BODY“-Element SQL-Datentypen Systemgenerierte SQL-Namen
– Case-Sensitiv– Sequence-Element für Eindeutigkeit über Namespaces
hinweg– Neue Namen bei neuer Schema-Registrierung
Tabellen für XML-Dokumente bereits angelegt
"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://www.w3.org/2001/XMLSchema
http://xmlns.oracle.com/xdb
Ein XML Schema kann Annotations fürverschiedene Datenbanken enthalten,da die jeweiligen Datenbanken fremde Annotations gemäß W3C ignorieren sollen
http://xmlns.microsoft.com/xml
Beispiel BörsennachrichtSchema Annotations
Das XML Schema beschreibt die Struktur des XML-Dokumentes, nicht deren physikalische Speicherung in einer Datenbank.
Die Oracle XML DB macht daher Standard-Annahmenbei der Nachbildung des XML-Datenmodells mit Objekttypen.
<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>
Beispiel BörsennachrichtSchema Annotations
<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.
Beispiel BörsennachrichtSchema Annotations
<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.
Beispiel BörsennachrichtSchema Annotations
<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
Beispiel: BörsennachrichtenBeschreibung als XML Schema
Speicherung alsGanzes
Beispiel BörsennachrichtRegistrierung des XML Schemas 2. Ansatz:
– Oracle-Annotations– SQLType– SQLName– ...
Beispiel BörsennachrichtErgebnisse: Anforderung genaues Mapping Abbildung nach Objektmodell BODY Element als Fließtext (CLOB) abgebildet SQL-Datentypen Eigene SQL-Namen
– Hier: case-insensitiv– Ohne Sequence-Element– Bei jeder Schema Registrierung gleich
Tabellen für Nachrichten und Kontakte angelegt
Weitere Schema-AnnotationsmaintainDOM
<xs:complexType name="aktie_t" xdb:SQLType="NR_AKTIE_T"xdb:maintainDOM="false">
<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>
maintainDOM: Ein/Ausschalten der "DOM-Fidelity"
Steuert die Speicherung von Kommentaren, Processing Instructions, Mixed Content
Wenn "native XML Speicherung" nicht benötigt wird, kanndie "DOM-Fidelity" so ausgeschaltet werden. Die Performance
verbessert sich.
Schema AnnotationsmaintainDOM
Schema AnnotationsmaintainDOM Informationsverlust
– Kommentare– Processing Instructions– Mixed Content
Sinnvoll ....– Wenn "native XML-Speicherung" nicht nötig ist– Ladeperformance ist "Bottle-Neck"
Beispiel Börsennachrichten
Neue Tabellen anlegen– XMLTYPE als DatentypCREATE TABLE nachrichten_tab( nr_id number(10), nr_nachricht xmltype);
Ohne Angabe eines bereits registrieren XML Schemas fehlen die Angaben zur Objektrelationalen Speicherung,
daher wird dokumentbasiert als CLOB gespeichert.
Beispiel Börsennachrichten
Neue Tabellen anlegen– XMLTYPE als Datentyp
CREATE TABLE nachrichten_tab( nr_id number(10), nr_nachricht xmltype)xmltype column nr_nachricht store as object relationalxmlschema "<schema-url>" element "<root element>"
Tabellen partitionieren
Prinzip– Aufteilung in mehrere physikalische Einheiten– Nach außen eine normale Tabelle
Nutzen: Performance– Abfragen können auf einzelne
Partitionen beschränkt werden(Optimizer)
– Partitionen können als Einheit gelöscht oder verschoben werden
Tabellen partitionierenfür XML-Tabellen Voraussetzungen:
– Objektrelationale Speicherung – Lizenzierung (Datenbank-Option)
Partitionierungskriterien– Range, Hash, List– Partitionierungsschlüssel
Indizes– Globale Indizes– Lokale Indizes
Beispiel BörsennachrichtenPartitionierte Tabelle Neue Tabellen anlegen
create table nachrichten_part_tab of xmltypexmlschema "http://www.oracle.com/aktie/nachrichten.xsd"element "nachricht"partition by range (xmldata.nr_datum)( partition nachrichten_before_1999 values less than (to_date('01-01-1999','DD-MM-YYYY')), : partition nachrichten_2004 values less than (to_date('01-01-2005','DD-MM-YYYY')))/
nachricht:aktiedatumquellekontaktetitel
body
Beispiel Börsennachrichten:XML-Datenmodell In XML ist das Dokument die zentrale Einheit Integritätsbedingungen ohne weiteres nur innerhalb
des Dokumentes möglich Referenz zu anderen Dokumenten oder Daten muss
programmiert werdenaktie:wknnamebranchereuters
kontakte:zielartadresse
1 1
1 *
nachricht:aktiedatumquellekontaktetitelbody
Beispiel Börsennachrichten:Reales Datenmodell Überschreiten der Dokumentgrenze Durch Datenbank-Constraints Integritätsbedingungen möglich zu ...
– relationalen Tabellen – anderen XML-Dokumenten
aktie:wknnamebranchereuters
kontakte:zielartadresse
1
1 *
*
XML Schema referenzieren
<nachricht xmlns="http://www.oracle.com/aktie/nachrichten.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"typ="Unternehmensmeldung"
xsi:schemaLocation="http://www.oracle.com/aktie/nachrichten.xsd C:\nachrichten.xsd"
>
W3C-Standardkonforme Verknüpfung von XML Dokumentund XML Schema. Das Dokument wird häufig als "Instanz" des XML Schemas bezeichnet.Gut zu erkennen ist die Lage des Schemadokumentes im Dateisystem.
XML Schema referenzieren
<nachricht xmlns="http://www.oracle.com/aktie/nachrichten.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"typ="Unternehmensmeldung"
xsi:schemaLocation="http://www.oracle.com/aktie/nachrichten.xsd http://www.oracle.com/aktie/nachrichten.xsd"
>
Unter dieser URL wurde das XML Schema in Oracle mit dem Enterprise Manager registriert.
Beispiel BörsennachrichtenStatus .... XML Schema
– Oracle Annotations vorhanden– Schema in der Datenbank registriert
Speicherungsmodell objektrelational– Objekttypen vorhanden– Tabelle vorhanden
Laden
objektrelationale Speicherung– XML Schema muss in XML-Dokument
referenziert sein– FTP und WebDAV– SQL und SQL*Loader
Beispiel BörsennachrichtenLaden mit FTP oder WebDAV
Referenz auf XML Schema?
dokumentbasiert im XML DB Repository
Nein
Ohne Schema-Referenz ist keineTabellenzuordnung und somit keine objektrelationale Speicherung möglich.
Oracle kann nicht wissen, ob dieses XML Dokument gültig ist oder nichtund speichert es daher als Datei ins XML DB Repository.
Beispiel BörsennachrichtenLaden mit FTP oder WebDAV
Referenz auf XML Schema?
XML Schemaregistriert?
dokumentbasiert im XML DB Repository
Ja
Nein
Wenn das XML Schema nicht registriert wurde, kann Oracle ebenfalls nicht prüfen, ob das XML Dokument gültig ist oder nicht.
Es wird daher ebenfalls als Datei ins XML DB Repository abgelegt.
Beispiel BörsennachrichtenLaden mit FTP oder WebDAV
Referenz auf XML Schema?
XML Schemaregistriert?
Verstoß gegenConstraints?
Dokument wirdabgewiesen
Ja
Ja
Ja Wenn die Inhalte des XML-Dokumentsgegen hinterlegte Integritätsbedinungen verstoßen, wird es abgelehnt. Es ist für die Datenbank ungültig.
Beispiel BörsennachrichtenLaden mit FTP oder WebDAV
Referenz auf XML Schema?
XML Schemaregistriert?
Verstoß gegenConstraints?
objektrelational in XMLTYPE-Tabelle
Ja
Ja
Nein
Beispiel Börsennachrichten
SQL INSERTINSERT INTO NR_NACHRICHT_TABVALUES( XMLTYPE ( '<?xml version="1.0"?><nachricht xmlns........ ));
Schemavalidierung
"leichte Schemaprüfung"– beim Einfügen– Strukturprüfung– Performancegründe
vollständige Schemavalidierung– aktivierbar– RDBMS-Trigger
Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL
– Protokoll– Hostname und TCP/IP Port
http://localhost:9080/
Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL
– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel
http://localhost:9080/oradb/
Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL
– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel– Datenbankschema
http://localhost:9080/oradb/<User-ID>
Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL
– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel– Datenbankschema– Tabelle
http://localhost:9080/oradb/<User-ID>/NR_NACHRICHT_TAB
Beispiel BörsennachrichtenZugriff mit HTTP Zugriff mit URL
– Protokoll– Hostname und TCP/IP Port– Datenbank-Kürzel– Datenbankschema– Tabelle– Optional: XPath Einschränkung
http://localhost:9080/oradb/<User-ID>/NR_NACHRICHT_TAB/ROW/nachricht/kontakt[ziel="Finanzen.net"]
Zugriff mit SQL
Zugriff auf XML-Elemente XPath SQL-Funktionen
– EXTRACT– EXTRACTVALUE– EXISTSNODE
Zugriff mit SQL
Gib mir von allen Nachrichten das Datum, die Aktiengesellschaft und den Titel
select extractvalue (value(e), '/nachricht/datum') as datum ,extractvalue (value(e), '/nachricht/aktie/@name') as ag ,extractvalue (value(e), '/nachricht/titel') as titelfrom nr_nachricht_tab e
Zugriff mit SQL
Gib mir von allen Oracle-Nachrichten das Datum und den Titel
select extractvalue (value(e), '/nachricht/datum') as datum ,extractvalue (value(e), '/nachricht/aktie/@name') as ag ,extractvalue (value(e), '/nachricht/titel') as titelfrom nr_nachricht_tab ewhere existsnode( value(e), '/nachricht/aktie[@wkn="871460"]') = 1
Ohne „Query Rewrite“
XML-Dokument
DOM-Baum
wkn
SELECT extractvalue ...FROM nr_nachricht_tab e
Mit „Query Rewrite“
SELECT extractvalue ... FROM nr_nachricht_tab e
Objektrelational gespeichertesXML-Dokument
SELECT e.xmldata. ... FROM nr_nachricht_tab e
Query Rewrite nachricht:aktiedatumquellekontaktetitelbody
aktie:wknnamebranchereuters
kontakte:zielartadresse
Query Rewrite
Optimizer Funktionalität nicht möglich bei ...
– XPath Funktionen– XPath Variablen– Wildcards– UNION Operator
Technologie-StackXML-Dokumentspeicherung
OS-Blöcke
relationaleTabellen
System Calls
SQL
ObjektrelationaleDatenbank
SQL – ObjektrelationaleSyntax (SQL99)
XML DB(Oracle 9.2)
XML-NavigationXPath
QU ERY
REWRITE
Beispiel-BörsennachrichtB-Tree Index Einfaches Beispiel
Voraussetzung– Objektrelationale Speicherung
create index idx_aktie_wkn on nr_nachricht_tab e(extractvalue(value(e),'/nachricht/aktie@wkn')/
Beispiel-BörsennachrichtB-Tree Index
NR_NACHRICHT_TAB Objekt vollständig in einer Tabellenzeileabgelegt
Arrays werden intern als Bytestrom gespeichert
B-Tree Indizes auf Elemente im Array nicht möglich
Default-Abbildung eines XML-Dokumentes mit 1:n Hierarchien
Beispiel-BörsennachrichtB-Tree Index
NR_NACHRICHT_TAB
Auslagerung der 1:n Beziehung in eine eigene Tabelle mit Schema Annotations.
NR_KONTAKTE_TAB
Beispiel-BörsennachrichtB-Tree Index Indizierung eines Elementes in einer
1:n Hierarchie Voraussetzungen:
– Objektrelationale Speicherung– 1:n Hierarchie wird in eigene Tabelle ausgelagert– Schema Annotation "storeVarrayAsTable" wird
auf "true" gesetzt.create index idx_kontaktart on nr_kontakte_tab e(extractvalue(value(e),'/kontakt@art')/
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
Piecewise Update
Ändere den Firmennamen bei den Nachrichten mitder WKN 871460 auf "Oracle Corporation"
update nr_nachricht_tab e set value(e) = updatexml ( value(e), ,'/nachricht/aktie/@name' ,'Oracle Corporation' ) where existsnode ( value(e) ,'/nachricht/aktie[@wkn="871460"]' ) = 1
Piecewise Update
Ändere die Kontaktart "email" nach "Mail"
update nr_kontakte_tab e set value(e) = updatexml ( value(e) ,'/konkakt/@art' ,'Mail' ) where existsnode ( value(e), ,'/kontakt[@art="email"]' ) = 1
Einsatzgebiete für die Praxis
Layoutneutrale Dokumentspeicherung Datenaustausch und Integration
– DWH-Integration mit relationalen Sichten auf XML-Dokumente
– Datenaustausch mit XML-Sichten auf relationale Datenbestände
– XML-Messaging
Layoutneutrale Dokumentspeicherung Dokumente als XMLTYPE unstrukturiert
– u.U. strukturierte Teile– Börsennachrichten
Volltextsuche Stylesheet-Transformationen
Volltextsuchemit Oracle TEXT Volltextindex auf jedes XML-Dokument
möglich Oracle TEXT Index
– Wildcard Suche (links und rechts)– Phrasensuche– Unscharfe Suche (Fuzzy)– Wortstamm– Stopwort-Listen– Thesaurus-Unterstützung
Volltextsuche mit Oracle TEXT
ctx_ddl.create_section_group( group_name => 'nachrichten_sec_group' ,group_type => 'PATH_SECTION_GROUP');
create index idx_nachrichten_volltexton nr_nachricht_tab e (value(e))indextype is CTXSYS.CONTEXTparameters ('section group nachrichten_sec_group')
Index anlegen
Volltextsuche mit Oracle TEXT
select score(1), value(e)from nr_nachricht_tab ewhere CONTAINS ( value(e) ,' (Software and Kooperation) INPATH (/nachricht/body) ' ,1 )>0
Volltextrecherche ...
Stylesheet Transformationen
Datenbankintern– Stylesheet muss in der Datenbank vorliegen
SQL-Funktion– XMLTransform()
Aggregat über mehrere Dokumente – XMLAgg()
Stylesheet-Transformationen
select xmltransform ( value(e) ,xdburitype ( '/public/idevelop/nachricht_html.xsl' ).getxml() )from nr_nachricht_tab e
1:1-Transformation ... n:1 Transformation ...
Stylesheet-Transformationen
View-Definition
TABLE VIEW HTTP-Zugriff 1:1 Transformation
HTTP-Zugriff n:1 Transformation
Einsatzgebiete für die Praxis
Layoutneutrale Dokumentspeicherung Datenaustausch und Integration
– DWH-Integration mit relationalen Sichten auf XML-Dokumente
– Datenaustausch mit XML-Sichten auf relationale Datenbestände
– XML-Messaging
Beispiel Börsennachrichten
Kontaktinformationen– relationale Tabelle– schneller Zugriff– Herausforderung:
eine Nachricht hat viele Kontakte
WKN
GESELLSCHAFT
KONTAKTART
ADRESSE
Beispiel BörsennachrichtenKontakt-View
create or replace view nr_kontakteasselect extractvalue (value(e), '/nachricht/aktie/@wkn') as wkn ,extractvalue (value(e), '/nachricht/aktie/@name') as gesellschaft,extractvalue (value(k), '/kontakt/@art') as kontaktart ,extractvalue (value(k), '/kontakt/ziel') as kontaktziel ,extractvalue (value(k), '/kontakt/adresse') as adressefrom nr_nachricht_tab e ,table(xmlsequence(extract(value(e),'/nachricht/kontakt'))) k
Einsatzgebiete für die Praxis
Layoutneutrale Dokumentspeicherung Datenaustausch und Integration
– DWH-Integration mit relationalen Sichten auf XML-Dokumente
– Datenaustausch mit XML-Sichten auf relationale Datenbestände
– XML-Messaging
Beispiel Aktienkurserelationales Tabellenschema
aktien_tab:wknname
kurse_tab:wkndatumkurs
1
*
Beispiel AktienkurseXML Views Erstellen der View
create or replace view aktienkurse_xml as select XMLElement( "Aktienkurse", XMLElement("Aktie", XMLAttributes( wkn as "WKN", ak.name as "Gesellschaft")), XMLElement("Kurse", XMLAgg( XMLElement( "Kurs" ,XMLAttributes( k.datum as "vom"), k.kurs))))as kurse_dokumentfrom aktien_tab ak join kurse_tab k using (wkn)group by wkn, ak.name
XML Views
Nutzbar wie XMLType Tabellen Stylesheet-Transformationen Zugriff durch HTTP einfacher Austausch relational vorliegender
Daten
XML-Datenaustauschmit Views Kommunikation mit Internet-Protokollen
HTTP, FTP
INSTEAD-OFTrigger
Einsatzgebiete für die Praxis
Layoutneutrale Dokumentspeicherung Datenaustausch und Integration
– DWH-Integration mit relationalen Sichten auf XML-Dokumente
– Datenaustausch mit XML-Sichten auf relationale Datenbestände
– XML-Messaging
Oracle Advanced Queuing
Datenbankinternes Messaging Asynchron Point-to-Point / Publish-Subscribe Nutzung der Oracle Datenbank
– Backup / Recovery, Datenintegrität, Skalierbarkeit, Nachrichten-Persistenz
Transaktionskonzept SQL-Zugriff
Oracle Advanced Queuing
Messaging auf einem Rechnerknoten Point-to-Point
Anwendung
Advanced QueueingAnwendung
Anwendung
Oracle
Enqueue Dequeue
Oracle Advanced Queuing
Messaging auf einem Rechnerknoten publish-subscribe
Anwendung
Advanced QueueingAnwendung
Anwendung
Anwendung
Oraclepublish
publish
subscribe
subscribe
Oracle Advanced Queuing
Messaging über Rechnergrenzen
Anwendung
Anwendung
Anwendung
Advanced Queues
Advanced Queues
Advanced Queues
Oracle
Oracle
Oracle
Propagate
Propagate
Enqueue
Enqueue
Anwendung
Dequeue
Dequeue
Oracle AQ Fähigkeiten
Nachrichten– Nachrichten können nach dem Dequeue behalten werden– Nachrichten-Historie– Nachrichten-Transformation– Kombination mit Oracle DWH-Fähigkeiten– Business-Intelligence
API-Unterstützung– SQL, PL/SQL (DBMS_AQ)– Java (JMS, Oracle AQ API, JDBC)
Oracle 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)
Oracle AQ
Nachrichten-Transformation
Anwendung
Advanced Queues
Advanced Queues
Advanced Queues
Oracle
Oracle
Oracle
Propagate
PropagateAnwendung
Dequeue
Dequeue
Transform
Anwendung
Anwendung
Enqueue
Enqueue
Transform
Oracle AQ - Transformationen
PL/SQL oder Java-Funktion Aktiv ...
– direkt nach dem ENQUEUE– direkt vor dem DEQUEUE– direkt vor oder nach dem PROPAGATE
Oracle 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
Oracle AQ und XML DB
Datenbank IDatenbank III [DWH]
Oracle
Datenbank II [Order]
FTPHTTP
Anwendung
Oracle AQ und XML DB
Datenbank IDatenbank III [DWH]
Oracle
Datenbank II [Order]
FTPHTTP
Enqueue
Log
Anwendung
Oracle AQ und XML DB
Datenbank IDatenbank III [DWH]
Oracle
Datenbank II [Order]
FTPHTTP
Enqueue
Log
Propagate
Propagate
Anwendung
Dequeue
Oracle AQ und XML DB
Datenbank IDatenbank III [DWH]
Oracle
Datenbank II [Order]
FTPHTTP
Enqueue
Log
Anwendung
Propagate
Propagate
Dequeue
Dequeue
Dequeue
Zusammenfassung:Oracle XML DB: zwei Welten ...
SQ
LX
ML
RDBMS XML Server
... wachsen zusammen!
SQ
LX
ML
Integrität
Ansichten
Indizes
Oracle
XML-Technologie mit Oracle
Integrität
Ansichten
Indizes
Messaging mit Oracle AQ
Weitere Informationen
Oracle Technology Network– http://otn.oracle.com/tech/xml/xmldb/content.html– http://otn.oracle.com/products/aq/index.html
Dokumentation– Oracle XML database Developers Guide
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96620/toc.htm
– Oracle Application Developer's Guide - Advanced Queuinghttp://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96587/toc.htm
Ralf Müller
Oracle Technology Center 30. Mai, 1997
Oracle8, the O/R Database for VLDB
Ralf Müller, semjena.ppt, 26-May-97
ADT Order: more detailed
Order
idcustomerentry_dol_cntorder_lines
Item
idnamepricedata
Stock
itemquantitydist_01dist_02
OrderLine
idquantitystockorder
in Stock
refers to
has lines
... (customer ADT)
ADT Order: modelling in Oracle8
CREATE TYPE Item_t AS OBJECT ( i_id NUMBER, i_name VARCHAR2(24), i_price NUMBER, i_data VARCHAR2(50),
MEMBER FUNCTION getPricewithVAT RETURN NUMBER);
CREATE TYPE BODY Item_t AS MEMBER FUNCTION getPricewithVAT RETURN NUMBER IS BEGIN RETURN i_price * 1.15; END getPricewithVAT;END;
CREATE TABLE items of Item_t;
standard Oracle7 types
create table from ADT
ADT Order: modelling in Oracle8 (cont.)
CREATE TYPE Stock_t AS OBJECT ( s_item REF Item_t, s_quantity NUMBER, s_dist_01 CHAR(24), s_dist_02 CHAR(24),
MAP MEMBER FUNCTION item_name RETURN VARCHAR2);
CREATE TYPE BODY Stock_t AS MAP MEMBER FUNCTION item_name RETURN VARCHAR2 IS BEGIN RETURN s_item.i_name; END item_name;END;
CREATE TABLE stocks of Stock_t;
reference to item_t
dereference s_item
ADT Order: modelling in Oracle8 (cont.)
CREATE TYPE Order_line_t AS OBJECT (ol_id NUMBER,ol_quantity NUMBER,ol_stock REF stock_t,ol_order REF order_t
);
CREATE TYPE order_line_nt AS TABLE OF Order_line_t;