· Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen...

78
1

Transcript of  · Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen...

Page 1:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

1

Page 2:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

Ihre Datenbank besser in Wert setzenNutzung von Oracle Text, Multimedia, XML DB und TimesTen

Karin Patenge | Oracle Deutschland B.V. & Co. KG | [email protected]

DOAG Regionalgruppentreffen Berlin-Brandenburg | 7. September 2011 | Potsdam

Page 3:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

Agenda

• Motivation

• Volltextsuche und mehr mit Oracle Text

• Real-time Verarbeitung mit Oracle TimesTen

• Objektrelationales Know How in der Datenbank

• Multimediale Inhalte

• XML

• F & A

• Weiterführende Informationen

Page 4:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Motivation

• Strukturierte Daten organisiert in Relationen

(Tabellen)

• Immer größerer Anteil an semi- und unstrukturierten

Daten komplexe Informationen

• Optimieren der Datenorganisation

Page 5:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

Volltextsuche und mehr mit

Oracle Text

Page 6:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXTWarum macht Oracle das?

Strukturierte Daten Textdokumente andere Daten

Viele Datenhaltungs-Systeme

Große Aufwände zur Integration

Interaktion sehr langsam

Page 7:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Einstieg in Oracle TEXTIn Datenbank integrierte Volltextrecherche

• Linguistische Suchen, Mustersuchen, Suchen mit Booleschen Operatoren, Abschnittssuchen bei XML und HTML-Formaten, ...

• Abfrage mit SQL

• CONTAINS-Funktion

• Kombinierbar mit relationalen Abfragen

• Relevanz-Ranking anhand Wort-Häufigkeiten (inverse Häufigkeit)

• SCORE()-Funktion

• Ergebnis-Aufbereitung

• Highlighting

• "Keyword-in-Context„ (Suchstring wird im Result in Tags eingeschlossen)

select score(1), dokument

from dokument_tab

where CONTAINS(dokument, 'Software AND Oracle')>0

/

Page 8:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXTEine Beispielapplikation: Trefferliste

Page 9:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXTIndizierung

• Unterstützung aller gängigen Datentypen• XMLTYPE, VARCHAR2, CLOB, BLOB, Database Filesystem,

SecureFile (encrypt, compress ...)

• Filter bei Binärdaten möglich

• Auch mehrere Indizes pro Tabelle

SQL> create index idx_textindex

2 on dokument_tab (dokument)

3 indextype is CTXSYS.CONTEXT

4 /

Index created.HINTERGRUND:

• Extensible Indexing Framework

• Spatial, TEXT, Expression Filter• Eigene Indizes möglich

Page 10:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXTAbfragemöglichkeiten

• Exakte Wort/Phrasensuche... where contains(text,'Hund')>0

• Logische Kombinationen... where contains(text,'Hund AND Katze')>0

• Wildcard-Suche ... where contains(text,'Hu%d AND Kat_e')>0

• Namenssuche... where contains(text,'NDATA(name, Hunt)')>0

• Fuzzy matching ... where contains(text,'?Hunt')>0

• Multilinguale Stammsuche... where contains(text,'$läuft' )>0

Page 11:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXTWeitere Abfragemöglichkeiten

• NEAR-Operator... where contains(text,'near(Hund, Katze), 4')>0

• Suche in Sektionen, Sätzen und Paragraphen (XML)... where contains(text,'Hund WITHIN TITEL')>0

Score-bezogene Funktionen... where contains(text,'Hund MINUS Katze')>0

... where contains(text,'Hund OR Katze*3‚)>0

• Score-bezogene Operationen auf Ergebnislisten... where contains(text,'Hund’ )>10

• ISO 2788 konformer Thesaurus... where contains(text,'SYN(Hund,[thes]‘)>0

• Soundex... where contains(text,'!Smythe')>0

Page 12:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle Text Name Search Feature

• Namenssuche

• mit Rücksicht auf verschiedene Schreibweisen

• in unterschiedlichen Kulturen

• Anwendung eines Regelwerks

• Basis ist Oracle TEXT

• Volltextindex nötig – User Data Store für relationale Daten

• SQL-Funktion CONTAINS mit NDATA-Operator

SQL> select * from names

where contains(name, 'NDATA(name,Patenga)') > 0

ID NAME

---------- ----------------------------------------

4 Karin Patenge

Page 13:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Unscharfe NamenssucheOracle 11.2.0.2

Page 14:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Progressive Relaxation

• Was ist das?• Erweiterung der Textquery ...

• ... schrittweise ...

• ... bis die gewünschte Trefferzahl erreicht ist.

SQL> select score(1), title from test_table

where contains (

dokument,

'<query>

<textquery>

<progression>

<seq>Hund and Katze</seq>

<seq>Hund or Katze</seq>

<seq>Hund? or Katze?</seq>

:

Page 15:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXTDatenquellen und Datastores

• DIRECT_DATASTORE

• MULTI_COLUMN_DATASTORE

• DETAIL_DATASTORE

• FILE_DATASTORE

• URL_DATASTORE

• NESTED_DATASTORE

• USER_DATASTORE

Page 16:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

GrundlagenAufbau eines TEXT Index

• DR$[Indexname]$I

• Token-Tabelle: Enthält alle Tokens mit (binären)

Informationen über die Dokumente, in denen sie vorkommen.

• DR$[Indexname]$R

• Mapping-Tabelle DOCID ROWID

• DR$[Indexname]$K

• Mapping-Tabelle ROWID DOCID

• DR$[Indexname]$N

• Negativliste: Enthält alle gelöschten DOCID's

Page 17:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Aufbau eines Oracle TEXT-IndexToken-Tabelle ($I)

• Tabellenaufbau

Name Null? Type

----------------- -------- ------------

TOKEN_TEXT NOT NULL VARCHAR2(64)

TOKEN_TYPE NOT NULL NUMBER(3)

TOKEN_FIRST NOT NULL NUMBER(10)

TOKEN_LAST NOT NULL NUMBER(10)

TOKEN_COUNT NOT NULL NUMBER(10)

TOKEN_INFO BLOB

Page 18:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXTVerhalten bei DML

• Besonderheit ...

• Idealfall: In-Place-Pflege in der Token-Tabelle

• Aber: Zu teuer!

• Daher:

• INSERT: PENDING-Tabelle

• DELETE: Negativliste

• UPDATE: DELETE und INSERT

• Zusätzliche Aufgaben:

• Index-Synchronisierung

• Index-Optimierungen

Page 19:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle TEXT MonitoringAllgemeines

• Optimizer-Statistiken sammeln (empfohlen)• DBMS_STATS.GATHER_..._STATS

• PL/SQL Paket CTX_REPORT• DESCRIBE_INDEX

• INDEX_SIZE

• INDEX_STATS

• Ausgabeformate• Plain TEXT

• XML

ACHTUNG:

• Vollständiger Index-Scan

• Lange Laufzeit bei großen Indizes

Page 20:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

Real-Time Verarbeitung mit

Oracle TimesTen

Page 21:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Was ist TimesTen?

• TimesTen In-Memory Database

und In-Memory Database Cache

• Speicherresidente relationale Datenbank

• Mehrbenutzer- und Multi-Threading-Unterstützung

• Optimiertes Speicherlayout und -algorithmen

• Transaktional (ACID)

• Synchrone oder asynchrone Festplattenprotokollierung

• Zugriffschnittstellen SQL und PL/SQL

• JDBC, ODBC, ADO.NET, OCI, Pro*C/C++

• Datentypen kompatibel mit Oracle DB

• Anwendungsfälle

• Echt-Zeit-Antwortzeiten und hohe Arbeitslasten

http://www.youtube.com/watch?v=MoifpZh-lIw

Page 22:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

In-Memory Database Architecture

Page 23:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

TimesTen und IMDB Features und Use

Cases

• TimesTen API Support

• Access Control

• Database Connectivity

• Durability

• Query Optimization

• Concurrency

• Automatic Data Aging

• Globalization Support

• Administration / Utilities

• Replication

• IMDB Cache

• TimesTen als

• Primary Database für

Echtzeitanwendungen

• Data Utility für performanzkritische Teile

einer Anwendung

• Für integrierte Datenhaltung aus

Anwendungssicht („Central data

repository“)

• IMDB Cache genutzt als

• Real-Time Manager für

„Zusammenspiel“ mit Oracle DB

• Read-Only Cache

• Updatable Cache

• Distributed Cache

Page 24:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

TimesTen In-Memory DatenbankPersistenz und Echtzeitreplikation

• Transaktionen persistieren

• Asynchron und synchron

• Hohe Performanz

• Bei gesicherten Latenzzeiten

• Unterschiedliche Topologien

• Active /Standby

• Active/Active für

Lastverteilung

• Optional Read-Only

subscribers

• Online Upgrades möglich

• Keine Downtimes

Page 25:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

In-Memory Database Cache

• Cache Group

• Beschreibt wie Daten aus der

Oracle DB im Cache abgelegt

werden

• Alle / Subsets von Zeilen und

Spalten

• Cache Tables

• Reguläre DB Tabellen in TimesTen

• Joins/Search, insert/update/delete

CREATE CACHE GROUP

FROM OWNER.TAB1 (COL1, COL3),

OWNER.TAB2 (COL2, COL4)

...

WHERE

Page 26:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Vergleich RDBMS und TimesTen

Page 27:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Antwortzeiten

Oracle TimesTen In-Memory DB 11g Intel Xeon 5670, 2 CPUs, 6 cores per CPU Solaris 10

Satz lesen Satz ändern

Mik

rose

kun

de

n

Durchschnittliche Antwortzeiten mit TimesTen

Page 28:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Antwortzeiten im Vergleich

Page 29:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

TimesTen aus Sicht der

Anwendungsentwicklung

Page 30:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Schritt für Schritt Vorgehen

1. Installation der TimesTen Software auf App Server

2. Skript ausführen zum Anlegen des TimesTen Schemas

in der Oracle DB

3. Definition und Anlegen der TimeTen Cache Datenbank

4. Anlegen des gleichen Oracle Nutzers in TeminTen

5. Definition und Anlegen von Cache Groups

6. Pre-Load der Cache Tables

7. Kopieren der PL/SQL Packages und Subprograms

nach TimesTen

8. Überprüfen und ggf. Anpassen des Anwendungscodes

für Kommunikation mit TimesTenhttp://download.oracle.com/otn_hosted_doc/timesten/1121/quickstart/index.html

Page 31:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

TimesTen nutzen mit SQL Developer

Page 32:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

LizenzsichtEin Blick auf die Oracle Preisliste

• Standalone Variante

(für Anwendungen mit „Embedded Database“)

• TimesTen In-Memory Database

• Option zur Oracle Datenbank

• In-Memory Database Cache (IMDB)

• Replikation mit der Oracle Datenbank

• Kostet das Gleiche

• NUP oder CPU Metrik

Page 33:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

Objekt-relationales Know How

in der Oracle Datenbank

Page 34:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

DatenorganisationNicht-relationale Daten in der Oracle DB

• Objekt-“Know How“ in der Datenbank

Art der Daten Oracle-Datentyp

XML-Dokumente XMLTYPE

Räumliche (Geo-)Daten SDO_GEOMETRY, SDO_GEORASTER

Texte ORDDOC, CLOB

Bilder ORDIMAGE, ORDDOC, BLOB

Audio ORDAUDIO, ORDDOC

Video ORDVIDEO, ORDDOC

Medizinische Bilder ORDDICOM

URL UriType (HTTPUriType)

Objekte, eigene Definitionen Objekttypen

Page 35:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Daher...

• Einführung mit Oracle DB Version 8 (1997) von

objekt-relationalen Datentypen

• XML Unterstützung beginnend mit Oracle DB 9i

(2001)

• Modellierung komplexer Informationen der realen

Welt

• Konzepte aus Objektorientierung in die DB „übersetzt“

• Typen

• Instanzen

• Vererbung

• Methoden ...

Page 36:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle Domain IndexDefinition

• Applikationsspezifische Indizes

• Grundlage ist das Extensible Indexing Framework

• Enthält Operatoren, die den Indextyp unterstützen

Art der Daten Index

Index für räumliche Daten MDSYS.SPATIAL_INDEX

Index für Image Signatures ORDSYS.ORDIMAGEINDEX

Index für Texte CTXSYS.CONTEXT

XML Index XDB.INDEX

Page 37:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

AnwendungenEine Auswahl

Volltextrecherche, Klassifizierung und Clustering,

Kataloganfragen, Räumliche Suchen,

Geokodierung, Anfragen im RDF Modell, XML

Anfragen mit SQL, Metadatenextraktion von

Bildern, „Thumbnail“-Generierung, RSS Feeds

auslesen mit Uritypes, XQuery-Anwendungen,

relationale Daten als XML ausgeben, relationale

Sichten auf XML Daten

Page 38:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Integration

• SQL-Beispiel

Page 39:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

Oracle Multimedia

im Überblick

Page 40:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle MultimediaBilder, Audio, Video ...

• Erweitert Oracle DB um Management von Medien-Daten

• Seit 14 Jahren Feature der DB

• „Media-Know How" in der Datenbank• z.B. Einfache Bildbearbeitung

• Skalieren, Drehen, Spiegeln, Aufhellen,Abdunkeln, Kontraste, Watermarking

• Metadatenextraktion

• Erzeugen von Vorschaubildern (Thumbnails)

• SQL und Java-API

• Spezialfall: Multimedia DICOM• Umgang mit Medizinischen Bildern

und deren Metadaten

• Anonymisieren, Konvertieren, ...

Page 41:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Der Datentyp ORDIMAGE

• Unterstützung für gängige Bildformate und mehr

• JPEG, GIF, TIFF, PNG, BMP, ...

SQL> desc ordimage

Name Null? Type

--------------------- -------- ----------------

SOURCE ORDSYS.ORDSOURCE

HEIGHT NUMBER(38)

WIDTH NUMBER(38)

CONTENTLENGTH NUMBER(38)

FILEFORMAT VARCHAR2(4000)

CONTENTFORMAT VARCHAR2(4000)

COMPRESSIONFORMAT VARCHAR2(4000)

MIMETYPE VARCHAR2(4000)

Page 42:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

OperationenBeispiel Thumbnail berechnen

• Befehl "maxScale"

declare

v_new_image blob;

begin

dbms_lob.createtemporary(v_new_image, true, dbms_lob.call);

ordimage.processcopy(

imageblob => get_image_blob(), -- Ausgansbild holen

command => 'maxscale 75 75', -- "maxScale" Operator

dest => v_new_image -- Ergebnis in BLOB schreiben

);

do_something_with_blob(v_new_image);

dbms_lob.freetemporary(v_new_image);

end;

Page 43:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

OperationenBeispiel Metadaten extrahieren

• Funktion GETMETADATA

• Rückgabe als XMLTYPE

• Beispiel: Minimal-MetadatenSQL> select column_value

2 from table(ordimage.getmetadata(get_image_blob(), 'ALL'));

COLUMN_VALUE

--------------------------------------------------------------------------------

<ordImageAttributes xmlns="http://xmlns.oracle.com/ord/meta/ordimage" xmlns:xsi=

"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.ora

cle.com/ord/meta/ordimage http://xmlns.oracle.com/ord/meta/ordimage">

<height>800</height>

<width>600</width>

<contentLength>80533</contentLength>

<fileFormat>JFIF</fileFormat>

<contentFormat>24BITRGB</contentFormat>

<compressionFormat>JPEG</compressionFormat>

<mimeType>image/jpeg</mimeType>

</ordImageAttributes>

Page 44:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

BeispielBildarchiv mit Application Express (APEX)

Page 45:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Der Datentyp ORDAUDIO

• ... Audio-relavante Attribute: encoding, samplingRate,

numberOfChannels, sampleSize, compressionType,

audioDuration

• Methoden / Operatoren

• z.B. get-/set-Funktionen bzw. –Prozeduren, import, export,

processAudioCommand, ...

SQL> desc ordaudio

Name Null? Type

--------------------- -------- ----------------

SOURCE ORDSYS.ORDSOURCE

DESCRIPTION VARCHAR2(4000)

FORMAT VARCHAR2(31)

MIMETYPE VARCHAR2(4000)

COMMENTS CLOB

...

Page 46:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Der Datentyp ORDVIDEO

• ... Video-relavante Attribute: weight, height, frameRate,

frameResolution, videoDuration, numberOfFrames,

compressionType, numberOfColors, bitRate

• Methoden / Operatoren

• z.B. Import, Export, getcontentLength, processVideoCommands,

get-/set-Funktionen bzw. -Prozeduren

SQL> desc ordvideo

Name Null? Type

--------------------- -------- ----------------

SOURCE ORDSYS.ORDSOURCE

DESCRIPTION VARCHAR2(4000)

FORMAT VARCHAR2(31)

MIMETYPE VARCHAR2(4000)

COMMENTS CLOB

...

Page 47:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

XML in der Datenbank

Page 48:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle XML DBKurzprofil

• XML und SQL in einer Datenbank• Nahtlose Integration

• Standardkonform (W3C, SQL:2003...)• XML/SQL

• XQuery, XPath

• XML Schema, DOM, Namespaces, XSLT, DOM, WebDAV

• 1. DB-seitige Implementierung der XQuery Spezifikation (seit 10g R2)

• Verfügbar ab Oracle 9i Release 2

• Alle Datenbankeditionen

• Keine zusätzliche Installation erforderlich

Page 49:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Transformationen

Recherchen Relationale Sichten

XML- Sichten

SQL

FTP

HTTP / WebDAV

SQL*Net

XPath

XQuery

Oracle XML DB

Oracle XML DBKurzprofil

Page 50:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

XML Views und das XML DB RepositoryAbrufen der Inhalte per HTTP oder FTP

• Virtuelle Dateien: Inhalte kommen aus View

Page 51:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

XML DB: Zugriffe

ftp> open 192.168.2.140 2100

Connected to 192.168.2.140.

220- kpatenge-linux-140

Unauthorised use of this FTP server is prohibited and may be subject to

civil and criminal prosecution.

220 kpatenge-linux-140 FTP Server (Oracle XML DB/Oracle Database) ready.

ftp> user xmldemo xmldemo

331 pass required for XMLDEMO

230 XMLDEMO logged in

ftp> dir

200 PORT Command successful

150 ASCII Data Connection

drw-r--r-- 2 SYS oracle 0 AUG 09 15:48 home

drw-r--r-- 2 SYS oracle 0 AUG 10 11:14 i

drw-r--r-- 2 SYS oracle 0 AUG 30 17:57 public

drw-r--r-- 2 SYS oracle 0 AUG 09 15:48 sys

226 ASCII Transfer Complete

ftp: 238 bytes received in 0,03Seconds 7,93Kbytes/sec.

ftp>

SQL> select extract(object_value, '/nachricht/aktie').getstringval()

2 from "nachricht429_TAB" e;

XML_TITEL

-----------------------------------------------------------------------

<aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="871460„

name="Oracle" reuters="ORCL" branche="Software"/>

<aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="871460„

name="Oracle" reuters="ORCL" branche="Software"/>

<aktie xmlns="http://www.oracle.com/aktie/nachrichten.xsd" wkn="840400„

name="Allianz" reuters="ALV" branche="Versicherungen"/>

:

SQL>

Page 52:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

XML DB Repository im SQL DeveloperSQL Developer

Page 53:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Datentyp XMLTYPE

• Verwendbar wie jeder andere Datentyp

• als Tabellenspalte

• in PL/SQL Logik

• XML-Know How in der Datenbank

• EXTRACT, EXTRACTVALUE *

• XSLTRANSFORM

• UPDATEXML

• APPENDCHILDXML

• SCHEMAVALIDATE

• ...

* Seit 11.2 „deprecated“. Funktionieren immer noch. Empfehlung ist die Verwendung der neuen Syntax XMLQUERY und XMLTABLE.

Page 54:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

XML nativ speichern: Oracle XML DB Speicherungsformen

Page 55:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Verwendung XMLTYPE am Beispiel

-- Tabellen anlegen

create table xml_tab (doc xmltype)

xmltype column doc

store as [clob | object relational | binary];

-- Beispiel Objekt-relational Speicherung

create table order_tab (

id number(10),

order_doc xmltype)

xmltype column order_doc store as object relational

xmlschema „http://xmldb.oracle.com/purchaseOrder“

element „purchaseOrder“

Page 56:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle XML DB: TextbasiertEin Blick hinter die Kulisse

SQL> select object_value from xml_text where rownum=1;

OBJECT_VALUE------------------------------------------------------------<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http:/localhost:9021

1 Zeile wurde ausgewählt.

SQL> select e.xmldata from xml_text e where rownum=1;

XMLDATA------------------------------------------------------------<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http:/localhost:9021

Page 57:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle XML DB: ObjektrelationalEin Blick hinter die Kulisse

SQL> select object_value from xml_or where rownum=1;

OBJECT_VALUE------------------------------------------------------------<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http:/localhost:9021

1 Zeile wurde ausgewählt.

SQL> select e.xmldata from xml_or e where rownum=1;

XMLDATA(SYS_XDBPD$, Reference, ACTIONS(SYS_XDBPD$, ACTION(SY------------------------------------------------------------XDBPO_TYPE(XDB$RAW_LIST_T('23FF01020084000088010035687474703A2F6C6F63616C686F73743A393032312F7075626C69632F584D4C44454D4F2F70757263686173654F726465722E787364000102030405060708'), 'ADAMS-20011127121044463PST', XDBPO_ACTIONS_TYPE(XDB$RAW_LIST_T('1301000000'), ...

Page 58:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Oracle XML DB: Binary XMLEin Blick hinter die Kulisse

SQL> select object_value from xml_binary where rownum=1;

OBJECT_VALUE------------------------------------------------------------<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http:/localhost:9021

1 Zeile wurde ausgewählt.

SQL> select e.xmldata from xml_binary e where rownum=1;

XMLDATA------------------------------------------------------------9F01039E000000B203000000030001787369C85DA1DD0001C0340015687474703A2F6C6F63616C686F73743A393032312F7075626C69632F584D4C44454D4F2F70757263686173654F726465722E787364C01956E14144414D532D3230303131313237313231303434343633505354C83A7CC81AAAC004033F53434F....

Page 59:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Zugriffsoptionen

Daten-/ Dokumentzugriffe

Query-basiert Path-basiert

Verfügbare Sprachen /

XML Type APIs

• JDBC

• PL/SQL

• C

Objektrelational

SQL Repository

Verfügbare Sprachen / XML

Type APIs

• SQL (RESOURCE_VIEW

bzw. PATH_VIEW)

• FTP

• HTTP/WebDav

Page 60:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Speicherungsformen und Platzverbrauch

• 680 XML-Dokumente – Größe: ~ 10KB

TNAME MB

------------------------------ --------

PO_TAB_OR 4,4

PO_TAB_BIN_BASICFILE 2,2

PO_TAB_BIN_SECUREFILE 2,2

PO_TAB_BIN_SECUERFILE_COMPRESS 0,8

PO_TAB_CL_BASICFILE 5,9

PO_TAB_CL_SECUREFILE 7,4

PO_TAB_CL_SECUERFILE_COMPRESS 1,0

Binary XML

XML als CLOB

Objektrelational

Page 61:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Speicherungsformen und Platzbedarf

0

10

20

30

40

50

60

Platzbedarf 1 gr. Dokument Platzbedarf 680 kl. Dokumente

CLOB

OR

BINARY

Page 62:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Performance: 680 kleine DokumenteAntwortzeiten

0

1

2

3

4

5

6

7

8

9

XML speichern ganze Dokumente

lesen

einzelne

Dokumentknoten

Relationale View Update

Einzelknoten

CLOB

OR

BINARY

Page 63:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

0

50

100

150

200

250

XML speichern ganze Dokumente

lesen

einzelne

Dokumentknoten

Relationale View Update

Einzelknoten

CLOB

OR

BINARY

E

R

R

O

R

Performance: 1 gr. Dkument (~55 MB)Antwortzeiten

Page 64:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

XML erzeugen/abfragen in der Datenbank

• Verfügbare SQL/XML-Funktionen

9iR2 11gR2

APPENDCHILDXML

DELETEXML

DEPTH

EXTRACT

EXTRACTVALUE

INSERTCHILDXML

INSERTXMLBEFORE PATH

SYS _DBURIGEN

SYS_XMLAGG

SYS_XMLGEN

UPDATEXML

XMLAGG

XMLCAST

XMLXDATA

XMLCOLATTRVAL

XMLCOMMENT

XMLCONCAT

XMLDIFF

XMLELEMENT

XMLFOREST

XMLPARSE

XMLPATCH

XMLPI

XMLQUERY

XMLROOT

XMLSEQUENCE

XMLSERIALIZE

XMLTABLE

XMLTRANSFORM

Page 65:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Zugriff mit SQL

• EXTRACT, EXTRACTVALUE bzw.

XMLTABLE, XMLQUERY

-- Syntax seit Oracle 9i

select

id, extractvalue(xml, '/emps/@cnt') emp_cnt

from xmltest;

-- Optimierte Syntax seit Oracle 11.2

select

t.id, x.emp_cnt

from

xmltest t,

xmltable(

'for $i in /emps return $i'

passing xml

columns "EMP_CNT" number path '/emps/@cnt' ) x;

Page 66:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Zugriff mit SQLUmgang mit Hierarchien

• XMLSEQUENCE bzw. XMLTABLE

-- Syntax seit Oracle 9i

select

id,

extractvalue(xml, '/emps/@cnt') emp_cnt,

extractvalue(value(e), '/emp/@ename') ename,

extractvalue(value(e), '/emp/@sal') sal

from xmltest,

table(xmlsequence(extract(xml, '/emps/emp'))) e;

-- Standardisierte Syntax

select

t.id, x.emp_cnt, e.ename, e.sal

from

xmltest t,

xmltable( -- FLOWR

'for $i in /emps

return $i'

passing xml

columns "EMP_CNT" number path '/emps/@cnt' ) x,

xmltable(

'for $i in /emps/emp return $i'

passing xml

columns "ENAME" varchar2(20) path '/emp/@ename',

"SAL" number path '/emp/@sal' ) e;

Page 67:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Zugriff mit SQLBearbeiten von XML-Dokumenten

• DML-Kommandos für XML

• updateXML()

• insertChildXML()

• appendChildXML()

• insertXMLbefore()

• deleteXML()

• Piecewise Updates = Performance!

• Bei objektrelationaler Speicherung

Page 68:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

XML Schema in der Datenbank

• "Registrierung"

• PL/SQL Paket (DBMS_XMLSCHEMA)

• Oracle Enterprise Manager

• Nachbildung der XML-Strukturen

• Oracle Objekttypen

• XML-Speicherung als "Objekt"

Page 69:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

XML Indizieren:Möglichkeiten bis Oracle10g

• B-Tree Index (Nur objektrelationale Speicherung)

• Indizierung einzelner Knoten oder Attribute

• Verhalten wie "normale" B-Tree Indizes; sehr performant

• Function Based Index (Alle Speicherungsformen)

• Indizierung von 1:n-Beziehungen nicht möglich

• Oracle TEXT-Index (Alle Speicherungsformen)

• Volltextrecherche, aber keine Bereichssuche

• Für "einfaches" Indizieren eines Knotens zu aufwändig

• Für Experten: CTXXPATH-Index

• Sollte nicht mehr genutzt werden

Page 70:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

AnfrageoptimierungQuery Rewrite

SELECT

extractvalue(...),

...

FROM PURCHASEORDER_TAB

Objektrelational gespeicherte

XML-Dokumente

SELECT

SYS_NC000015$,

...

FROM PURCHASEORDER_TAB

Query Rewrite

PurchaseOrder

LineItem

User

PurchaseOrder

1

* LineItem

User

PurchaseOrder

1

* LineItem

User

PurchaseOrder

1

* LineItem

User

PurchaseOrder

1

* LineItem

User

Page 71:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Ausführung ohne Query-RewriteDOM Parsing

XML-Dokument

DOM-Baum

wkn

SELECT

extractvalue(...),

...

FROM PURCHASEORDER_TAB

Page 72:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

SpeicherungsformenEntscheidungsbaum

1. Zugriffe Nur auf ganze Dokumente

2. XML Schema ...

Auf einzelne Dokumentknoten

<document id="2"><element date="2007-0

<action><member name="Ora

:

Textbasierte

Speicherung

Nicht vorhanden

3. Flexibilität ...

Vorhanden

110100100100111000100100101010111010001110111001000111100001111100010011110100001000111100011100011111001

Binary XML

XML Schemawird sich

häufig ändern

XML Schemawird stabil sein

Objektrelational

Page 73:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

„Daumenregel“Daten- oder Dokumentzentrische Sicht

Dokumentzentrisch

Datenzentrisch

Page 74:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

SpeicherungsformenZusammenfassung

• Drei Fragen führen zur richtigen Speicherungsform

• Zugriffe auf ganze Dokumente oder auf Dokumentteile?

• Liegt ein XML Schema vor oder nicht?

• Wird sich das XML Schema ändern oder stabil bleiben?

• Richtige Speicherungsform ist entscheidend!

• Performance-Unterschied: Faktoren

• Durch Tuning (Index, I/O) nicht einzuholen

Page 75:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland
Page 76:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

<Insert Picture Here>

Weiterführende

Informationen

Page 77:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland

Workshops, Webcasts und Links

• Oracle TimesTen Hands-on Workshop im Dez/Jan

2011/12 in Potsdam

• Oracle Text und Oracle XML DB Hands-On Workshop im

Dez/Jan 2011/12

• Vertiefende Webcast und weitere Workshops zu

Einzelthemen auf Anfrage bei [email protected]

• Dokumentation

http://otn.oracle.com

• Technische Foren

http://forums.oracle.com

• Diverse Blogs, u.a. von Carsten Czarski

Page 78:  ·  Ihre Datenbank besser in Wert setzen Nutzung von Oracle Text, Multimedia, XML DB und TimesTen Karin Patenge | Oracle Deutschland