Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Helene Sternberg Geändert vor über 8 Jahren
1
Ralf Mueller Server Technologies Oracle Corporation Oracle XML Datenbank
2
Agenda XML in der Datenbank Speicherformen 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-Dokumenten Speichern und Abrufen von XML-Dokumenten; Verbindung mit SQL; Protokollzugriff XML in der Praxis – Szenarien und Implementierung Implementierung der Szenarien mit der XML-Datenbank, Zusammenspiel mit Oracle- Technologie
3
Warum XML in der Datenbank...?
4
... und nicht einfach im Dateisystem?
5
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 –...
6
XML Standards XML – W3C DOM – W3C XPath – W3C XML Schema – W3C XSL and XSLT – W3C WebDAV - IETF SQL/XML – ANSI/ISO
7
Wie speichert man XML-Dokumente in Datenbanken...?
8
Herausforderungen relationale Datenbestände Abruf als XML Beispiele: - heterogene Systeme - XML Schnittstellen - Versorgung des Workflow - Abruf per HTTP oder FTP
9
Herausforderungen XML-Dokumente Abruf mit SQL Überführung in DWH oder andere Anwendung Beispiele: - XML als Austauschformat im e-Business - Sammlung und Aggregation im DWH - DWH-Versorgung aus heterogenen Systemen
10
Herausforderungen relationale Datenbestände Integritäts- bedingungen XML Datenbestände Beispiele: - XML Dokumente nativ speichern (jur. Gründe) - Validitätsprüfung gegen Stammdaten in einer relationalen Datenbank - Validierung im laufenden Workflow
11
Herausforderungen Referentielle Integrität in XML XML-Datenmodell referentielle Integrität – ID – IDREF – IDREFS Dokumentbezogen
12
Herausforderungen Referentielle Integrität in XML XML-Datenmodell referentielle Integrität – ID – IDREF – IDREFS Dokumentbezogen Das Dokument kann ohne weiteres nicht verlassen werden
13
1. Lösungsansatz relationale Speicherung Zwei-Tabellen-Modell IDTYPEVALUE 1 ELE Order 2 ELE Kunde 3 ELE Name 4 TEX Mustermann 5 ATT id 6 TEXT 4711 IDPARENT_ID 1 NULL 2 1 3 2 4 3 5 1 6 5
14
1. Lösungsansatz Semantik aus Tabellen nicht nachvollziehbar Schwierige Integration z.B. Stammdatentabellen Tuning schwierig Indizierung schwierig Volltextsuche schwierig Komplexe JOIN-Operationen
15
2. Lösungsansatz relationale Speicherung Fachliches Datenmodell IDNAMEDEPOT 1 Muster 4711 2 Meier 4712 3 Schmitt 4713 IDWERTPAPIER 1 VW AG 2 Oracle Corp. 3 Sun Microsys. KUNDEN
16
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.
17
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
18
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!
19
HTTP FTP SQL*NET User XDB: XML DB Repository Oracle Shared Server XML Schema Oracle XML DB: Architektur User SCOTT: XML Dokumente
20
WebDAV
21
FTP
22
Installation der XML DB Softwareinstallation – Keine Besonderheiten, automatisch bei der DB- Konfiguration, zusätzliches Schema XDB, FTP und HTTP-Portkonfiguration Datenbankerstellung Datenbankerstellung
23
Installation der XML DB
24
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
25
TCP/IP Port für FTP und HTTP
26
Manuelle Änderung der Ports über Skripts – $ORACLE_HOME/rdbms/admin/catxdbdbca.sql [ftp-port] [http-port] Protokollserver abschalten – Jeweiligen Port auf "0" setzen
27
XML DB Repository Table Name ACL Property 1 Property N Property N XML Tabellen im User Schema B Tree Index Text Index Hierarchical Index FTP HTTP xdb$resource Resource_view
28
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)
29
Folder anlegen PL/SQL per FTP oder im WebDAV-Client declare result boolean; begin result := dbms_xdb.createFolder('/public/ '); end; COMMIT;
30
Clob Relational Die Speicherart richtet sich nach den Anforderungen der Anwendung: Konkurrierender Zugriff Vokabularänderung Ladeperformance Abfrage-Performance Redundanzen XML Schema Support Unterschiedliche Speicherarten Nativ als Dokument Nativ Objektrelational
31
Clob Relational Die Speicherart richtet sich nach den Anforderungen der Anwendung: Konkurrierender Zugriff Vokabularänderung Ladeperformance Abfrage-Performance Redundanzen XML Schema Support Unterschiedliche Speicherarten Nativ als Dokument Nativ Objektrelational
32
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
33
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
34
Mischformen Beide Konzepte in einem Dokument Beispiele: – Zeitungsartikel mit strukturierten Zusatzinformationen Autor, Zeitung, Erscheinungsdatum ... – Kreditanträge Strukturierte Kunden- und Kreditdaten Unstrukturierte Begründungen
35
Technologie-Stack XML-Dokumentspeicherung OS-BlöckeSystem Calls
36
Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen (Oracle 1.0) System Calls SQL
37
Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen System Calls SQL Objektrelationale Datenbank (Oracle 8.0) SQL – Objektrelationale Syntax (SQL99)
38
Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen System Calls SQL Objektrelationale Datenbank SQL – Objektrelationale Syntax (SQL99) XML DB (Oracle 9.2) XML-Navigation XPath
39
Technologie-Stack rein dokumentorientiertes XML OS-BlöckeSystem Calls SQL XML DB XML-Navigation XPath CLOB-Datentyp relationale Tabellen
40
Beispiel: Börsennachrichten
41
Beispiel: Börsennachrichten Beschreibung als XML Schema
42
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
43
Beispiel Börsennachricht Registrierung des XML Schemas Registrierung 1. Ansatz: – W3C XML Schema wird unverändert in Oracle registriert – Oracle Enterprise Manager
44
Beispiel Börsennachricht Registrierung des XML Schemas Schema-URL zur Identifizierung des XML Schemas in der Datenbank URL sinnvoll jeder String möglich
45
Beispiel Börsennachricht Ergebnisse: 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
46
"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"
47
annotated XML Schema http://www.w3.org/2001/XMLSchema http://xmlns.oracle.com/xdb Ein XML Schema kann Annotations für verschiedene Datenbanken enthalten, da die jeweiligen Datenbanken fremde Annotations gemäß W3C ignorieren sollen http://xmlns.microsoft.com/xml
48
Beispiel Börsennachricht Schema Annotations 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.
49
Beispiel Börsennachricht Schema Annotations 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.
50
Beispiel Börsennachricht Schema Annotations 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.
51
Beispiel Börsennachricht Schema Annotations 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
52
Beispiel: Börsennachrichten Beschreibung als XML Schema Speicherung als Ganzes
53
Beispiel Börsennachricht Registrierung des XML Schemas Registrierung 2. Ansatz: – Oracle-Annotations – SQLType – SQLName –...
54
Beispiel Börsennachricht Ergebnisse: 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
55
Weitere Schema-Annotations maintainDOM maintainDOM:Ein/Ausschalten der "DOM-Fidelity" Steuert die Speicherung von Kommentaren, Processing Instructions, Mixed Content Wenn "native XML Speicherung" nicht benötigt wird, kann die "DOM-Fidelity" so ausgeschaltet werden. Die Performance verbessert sich.
56
Schema Annotations maintainDOM
57
Informationsverlust – Kommentare – Processing Instructions – Mixed Content Sinnvoll.... – Wenn "native XML-Speicherung" nicht nötig ist – Ladeperformance ist "Bottle-Neck"
58
Beispiel Börsennachrichten Neue Tabellen anlegen – XMLTYPE als Datentyp CREATE 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.
59
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 relational xmlschema " " element " "
60
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
61
Tabellen partitionieren für XML-Tabellen Voraussetzungen: – Objektrelationale Speicherung – Lizenzierung (Datenbank-Option) Partitionierungskriterien – Range, Hash, List – Partitionierungsschlüssel Indizes – Globale Indizes – Lokale Indizes
62
Beispiel Börsennachrichten Partitionierte Tabelle Neue Tabellen anlegen create table nachrichten_part_tab of xmltype xmlschema "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')) ) /
63
nachricht: aktie datum quelle kontakte titel 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 werden aktie: wkn name branche reuters kontakte: ziel art adresse 11 1 *
64
nachricht: aktie datum quelle kontakte titel body Beispiel Börsennachrichten: Reales Datenmodell Überschreiten der DokumentgrenzeDokumentgrenze Durch Datenbank-ConstraintsDatenbank-Constraints Integritätsbedingungen möglich zu... – relationalen Tabellen – anderen XML-Dokumenten aktie: wkn name branche reuters kontakte: ziel art adresse 1 1 * *
65
XML Schema referenzieren W3C-Standardkonforme Verknüpfung von XML Dokument und XML Schema. Das Dokument wird häufig als "Instanz" des XML Schemas bezeichnet. Gut zu erkennen ist die Lage des Schemadokumentes im Dateisystem.
66
XML Schema referenzieren Unter dieser URL wurde das XML Schema in Oracle mit dem Enterprise Manager registriert.
67
Beispiel Börsennachrichten Status.... XML Schema – Oracle Annotations vorhanden – Schema in der Datenbank registriert Speicherungsmodell objektrelational – Objekttypen vorhanden – Tabelle vorhanden
68
Laden objektrelationale Speicherung – XML Schema muss in XML-Dokument referenziert sein – FTP und WebDAV FTPWebDAV – SQL und SQL*Loader
69
Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? dokumentbasiert im XML DB Repository Nein Ohne Schema-Referenz ist keine Tabellenzuordnung und somit keine objektrelationale Speicherung möglich. Oracle kann nicht wissen, ob dieses XML Dokument gültig ist oder nicht und speichert es daher als Datei ins XML DB Repository.
70
Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? XML Schema registriert? 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.
71
Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? XML Schema registriert? Verstoß gegen Constraints? Dokument wird abgewiesen Ja Wenn die Inhalte des XML-Dokuments gegen hinterlegte Integritätsbedinungen verstoßen, wird es abgelehnt. Es ist für die Datenbank ungültig.
72
Beispiel Börsennachrichten Laden mit FTP oder WebDAV Referenz auf XML Schema? XML Schema registriert? Verstoß gegen Constraints? objektrelational in XMLTYPE-Tabelle Ja Nein
73
Beispiel Börsennachrichten SQL INSERT INSERT INTO NR_NACHRICHT_TAB VALUES ( XMLTYPE ( ' <nachricht xmlns........ ) );
74
Schemavalidierung "leichte Schemaprüfung" – beim Einfügen – Strukturprüfung – Performancegründe vollständige Schemavalidierung – aktivierbar – RDBMS-Trigger
75
Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – Protokoll – Hostname und TCP/IP Port http://localhost:9080/
76
Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel http://localhost:9080/oradb/
77
Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel – Datenbankschema http://localhost:9080/oradb/
78
Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel – Datenbankschema – Tabelle http://localhost:9080/oradb/ / NR_NACHRICHT_TAB
79
Beispiel Börsennachrichten Zugriff mit HTTP Zugriff mit URL – Protokoll – Hostname und TCP/IP Port – Datenbank-Kürzel – Datenbankschema – Tabelle – Optional: XPath Einschränkung http://localhost:9080/oradb/ / NR_NACHRICHT_TAB/ ROW/nachricht/kontakt[ziel="Finanzen.net"]
80
Zugriff mit SQL Zugriff auf XML-Elemente XPath SQL-Funktionen – EXTRACT – EXTRACTVALUE – EXISTSNODE
81
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 titel from nr_nachricht_tab e
82
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 titel from nr_nachricht_tab e where existsnode ( value(e), '/nachricht/aktie[@wkn="871460"]' ) = 1
83
Ohne „Query Rewrite“ XML-Dokument DOM-Baum wkn SELECT extractvalue... FROM nr_nachricht_tab e
84
Mit „Query Rewrite“ SELECT extractvalue... FROM nr_nachricht_tab e Objektrelational gespeichertes XML-Dokument SELECT e.xmldata.... FROM nr_nachricht_tab e Query Rewrite nachricht: aktie datum quelle kontakte titel body aktie: wkn name branche reuters kontakte: ziel art adresse
85
Query Rewrite Optimizer Funktionalität nicht möglich bei... – XPath Funktionen – XPath Variablen – Wildcards – UNION Operator
86
Technologie-Stack XML-Dokumentspeicherung OS-Blöcke relationale Tabellen System Calls SQL Objektrelationale Datenbank SQL – Objektrelationale Syntax (SQL99) XML DB (Oracle 9.2) XML-Navigation XPath QUERYREWRITEQUERYREWRITE
87
Beispiel-Börsennachricht B-Tree Index Einfaches Beispiel Voraussetzung – Objektrelationale Speicherung create index idx_aktie_wkn on nr_nachricht_tab e (extractvalue(value(e),'/nachricht/aktie@wkn') /
88
Beispiel-Börsennachricht B-Tree Index NR_NACHRICHT_TAB Objekt vollständig in einer Tabellenzeile abgelegt 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
89
Beispiel-Börsennachricht B-Tree Index NR_NACHRICHT_TAB Auslagerung der 1:n Beziehung in eine eigene Tabelle mit Schema Annotations. NR_KONTAKTE_TAB
90
Beispiel-Börsennachricht B-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') /
91
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
92
Piecewise Update Ändere den Firmennamen bei den Nachrichten mit der 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
93
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
94
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
95
Layoutneutrale Dokumentspeicherung Dokumente als XMLTYPE unstrukturiert – u.U. strukturierte Teile – Börsennachrichten Volltextsuche Stylesheet-Transformationen
96
Volltextsuche mit 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
97
Volltextsuche mit Oracle TEXT ctx_ddl.create_section_group ( group_name => 'nachrichten_sec_group',group_type => 'PATH_SECTION_GROUP' ); create index idx_nachrichten_volltext on nr_nachricht_tab e (value(e)) indextype is CTXSYS.CONTEXT parameters ('section group nachrichten_sec_group') Index anlegen
98
Volltextsuche mit Oracle TEXT select score(1), value(e) from nr_nachricht_tab e where CONTAINS ( value(e),' (Software and Kooperation) INPATH (/nachricht/body) ',1 )>0 Volltextrecherche...
99
Stylesheet Transformationen Datenbankintern – Stylesheet muss in der Datenbank vorliegen SQL-Funktion – XMLTransform() Aggregat über mehrere Dokumente – XMLAgg()
100
Stylesheet-Transformationen select xmltransform ( value(e),xdburitype ( '/public/idevelop/nachricht_html.xsl' ).getxml() ) from nr_nachricht_tab e 1:1-Transformation... 1:1-Transformation n:1 Transformation... n:1 Transformation
101
Stylesheet-Transformationen View-Definition TABLEVIEW HTTP-Zugriff 1:1 Transformation HTTP-Zugriff n:1 Transformation
102
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
103
Beispiel Börsennachrichten Kontaktinformationen – relationale Tabelle – schneller Zugriff – Herausforderung: eine Nachricht hat viele Kontakte WKN GESELLSCHAFTKONTAKTARTADRESSE
104
Beispiel Börsennachrichten Kontakt-View create or replace view nr_kontakte as select 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 adresse from nr_nachricht_tab e,table(xmlsequence(extract(value(e),'/nachricht/kontakt'))) k
105
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
106
Beispiel Aktienkurse relationales Tabellenschema relationales Tabellenschema aktien_tab: wkn name kurse_tab: wkn datum kurs 1 *
107
Beispiel Aktienkurse XML 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_dokument from aktien_tab ak join kurse_tab k using (wkn) group by wkn, ak.name
108
XML Views Nutzbar wie XMLType Tabellen Stylesheet-Transformationen Zugriff durch HTTP Zugriff durch HTTP einfacher Austausch relational vorliegender Daten
109
XML-Datenaustausch mit Views Kommunikation mit Internet-Protokollen HTTP, FTPFTP INSTEAD-OF Trigger
110
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
111
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
112
Oracle Advanced Queuing Messaging auf einem Rechnerknoten Point-to-Point Anwendung Advanced Queueing Anwendung Oracle EnqueueDequeue
113
Oracle Advanced Queuing Messaging auf einem Rechnerknoten publish-subscribe Anwendung Advanced Queueing Anwendung Oracle publish subscribe
114
Oracle Advanced Queuing Messaging über Rechnergrenzen Anwendung Advanced Queues Advanced Queues Advanced Queues Oracle Propagate Enqueue Anwendung Dequeue
115
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)
116
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)
117
Oracle AQ Nachrichten-Transformation Anwendung Advanced Queues Advanced Queues Advanced Queues Oracle Propagate Anwendung Dequeue Transform Anwendung Enqueue Transform
118
Oracle AQ - Transformationen PL/SQL oder Java-Funktion Aktiv... – direkt nach dem ENQUEUE – direkt vor dem DEQUEUE – direkt vor oder nach dem PROPAGATE
119
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
120
Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Anwendung
121
Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Enqueue Log Anwendung
122
Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Enqueue Log Propagate Anwendung Dequeue
123
Oracle AQ und XML DB Datenbank I Datenbank III [DWH] Oracle Datenbank II [Order] FTP HTTP Enqueue Log Anwendung Propagate Dequeue
124
Zusammenfassung: Oracle XML DB: zwei Welten... SQL XML RDBMSXML Server
125
... wachsen zusammen! SQL XML Integrität Ansichten Indizes Oracle
126
XML-Technologie mit Oracle Integrität Ansichten Indizes Messaging mit Oracle AQ
127
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 Queuing http://download-west.oracle.com/docs/cd/B10501_01 /appdev.920/a96587/toc.htm
128
Ralf Müller Oracle Technology Center 30. Mai, 1997 Oracle8, the O/R Database for VLDB Ralf M ü ller, semjena.ppt, 26-May-97
129
ADT Order: more detailed Order id customer entry_d ol_cnt order_lines Item id name price data Stock item quantity dist_01 dist_02 OrderLine id quantity stock order in Stock refers to has lines... (customer ADT)
130
ADT Order: modelling in Oracle8 CREATE TYPE Item_t AS OBJECT ( i_idNUMBER, i_nameVARCHAR2(24), i_priceNUMBER, i_dataVARCHAR2(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
131
ADT Order: modelling in Oracle8 (cont.) CREATE TYPE Stock_t AS OBJECT ( s_itemREF Item_t, s_quantityNUMBER, s_dist_01CHAR(24), s_dist_02CHAR(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
132
ADT Order: modelling in Oracle8 (cont.) CREATE TYPE Order_line_t AS OBJECT ( ol_idNUMBER, ol_quantityNUMBER, ol_stockREF stock_t, ol_orderREF order_t ); CREATE TYPE order_line_nt AS TABLE OF Order_line_t;
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.