ein XML

Werbung
XML-Speicherung in Datenbanken
Dr. Harald Schöning
Überblick
„
„
„
„
„
„
Einleitung
Modelle zur Speicherung von XML in RDBMS
Anfragesprachen
Stand der Technik in kommerziellen RDBMS
Tamino, ein natives XML-Datenbanksystem
Zusammenfassung
2
© Dr. Harald Schöning
1-1
Benutzung von XML
„ ursprüngliche Intention: Datenaustausch
„ inzwischen vermehrt: Format für persistente Daten
„ besonders für
„ semistrukturierte Information (Daten vs. Dokumente)
¾ Nachrichten
„ komplexe Daten
¾ Gesundheitswesen
„ 70%-85% der relevanten Geschäftsinformation in Textdokumenten
¾geeignet für Darstellung in XML
„ und für Protokolle
¾ Web Services
„ persistente Speicherung in Datenbanken
„
„
„
„
Schutz
Sicherheit
Anfragen
Transaktionen
3
Speicherung in relationalen Datenbanken?
„
„
„
„
eingeführte Technologie
seit 20 Jahren immer mehr optimiert
vielseitige Anwendungsszenarien
OODBMS als Negativbeispiel für nicht-relationale
Systeme
4
© Dr. Harald Schöning
1-2
Datenmodelle sind verschieden
XML
Relationale Welt
„ Daten in einer hierarchischen
„ Daten in mehreren flachen
Struktur
„ Knoten haben Elemente und /
oder Attributwerte
„ Elemente können geschachtelt
Tabellen
„ Spalten haben einen einzelnen
Wert
„ begrenzte Schachtelung
sein
„ Elemente sind geordnet
„ Schema ist optional
„ komplexes Typsystem
„ keine Ordnung
„ Schema ist verpflichtend
„ einfacheres Typsystem
5
Inhaltsorientierte Zerlegung (Shredding)
<Lieferung Datum="7.6.2001">
<Lieferadresse>
Lieferung Teilnr Menge
<Name>Harald Schöning</Name>
<Stadt>Dieburg</Stadt>
17
4711 10
</Lieferadresse>
17
4712 11
<Teil Nummer="4711" Menge="10"/>
<Teil Nummer="4712" Menge="11"/>
</Lieferung>
Lieferung
Kunden
Nr Datum Kunde
Kundennr
Name
Ort
17 7.6.2001 K19
K19
Harald Schöning Dieburg
6
© Dr. Harald Schöning
1-3
Beschränkungen der inhaltsorientierten
Zerlegung
„ Abbildung muss definiert sein (automatisch/manuell)
„ Dokumente ohne Schema können nicht gespeichert werden
„ Künstliche Schlüssel zur Darstellung von Hierarchie
„ Wild cards (offenes Schema), mixed content, Rekursion schwierig
„ Änderung schwierig / unmöglich
„ Originaltreue nicht garaniert
„ Verlust von Kommentaren, Processing Instructions, DTD, Reihenfolge
„ ineffiziente Nutzung relationaler Strukturen
„ ggf. dünn besetzte Tabellen (bei optionalen XML-Anteilen)
„ ggf. große Zahl von Tabellen
¾ hoher Rekonstruktions- und Sperraufwand
„ inkompatibles Typsystem
„ SQL-Typ darf nicht strenger sein
„ Normalisierung auf SQL-Ebene gefährdet Originaltreue
¾ Datum
7
Strukturorientierte Zerlegung
„ Speicherung in generischen Tabellen
¾ auch modellgestützte Speicherung genannt
„ Abspeichern der Kanten und Knoten des zum XML-Dokument gehörigen
Strukturbaumes
„ Aus 1 XML-Dokument werden viele Sätze
„ Schema der relationalen Datenbank ist unabhängig vom Schema der
XML-Dokumente
„ einmalige Definition
„ Verwendete relationale Strukturen für Benutzer unbrauchbar (keine
Anwendungssemantik)
„ vollständige Abbildung möglich
„ Kommentare, processing instructions
„ Reihenfolgeerhaltung
„ kanonische Äquivalenz
8
© Dr. Harald Schöning
1-4
Strukturorientierte Zerlegung - Beispiel
2
1 <Lieferung Datum=„11.11.2003">
3 <Lieferadresse>
Quelle Nr
4 <Name>
1
0
Harald Schöning
1
0
</Name>
1
1
<Stadt>
5
3
1
Dieburg
3
2
</Stadt>
1
2
</Lieferadresse>
6
0
6 <Teil Nummer="4711"7
6
0
8 Menge="10"
/>
1
3
9 <Teil Nummer="4712"10
9
0
/>
11 Menge="11"
9
0
</Lieferung>
Tag
Ziel
Daten
Lieferung
1
@Datum
0
11.11.2003
Lieferadresse 3
Name
4 Harald Schöning
Stadt
5
Dieburg
Teil
6
@Nummer
0
4711
@Menge
0
10
Teil
9
@Nummer
0
4712
@Menge
0
11
9
Strukturorientierte Zerlegung –
Problemfelder
„ Performance
„
„
„
„
Anfragen beinhalten komplexe Joins
Anfragen enthalten Sortierung (wegen der Reihenfolgeerhaltung)
keine gezielte Indizierung (z.B. auf Elementebene)
Locking
„ viele Tupel pro Dokument ⇒ viele Sperren pro Änderung
„ Anfragemächtigkeit
„ Elementübergreifende Anfragen
¾ text retrieval
10
© Dr. Harald Schöning
1-5
Opake Speicherung
„ XML-Dokument als Inhalt einer Spalte einer Tabelle
(BLOB, CLOB) oder als externe Datei
„ CREATE TABLE xmlTable (…
xml
BLOB)
„ schematische Beschreibung des XML-Dokumentes
nicht erforderlich
„ Bitidentität prinzipiell möglich
„ Heute oft XML-Typ
11
Opake Speicherung - Beispiel
<Lieferung Datum=„11.11.2003">
<Lieferadresse>
<Name>
Harald Schöning
</Name>
<Stadt>
Dieburg
</Stadt>
</Lieferadresse>
<Teil Nummer="4711"
Menge="10" />
<Teil Nummer="4712"
Menge="11" />
</Lieferung>
xml
<Lieferung Datum=„11.11.2003"><Lieferadresse><Name>
Harald Schöning</Name><Stadt>Dieburg</Stadt>
</Lieferadresse><Teil Nummer="4711" Menge="10" />
<Teil Nummer="4712" Menge="11"/></Lieferung>
12
© Dr. Harald Schöning
1-6
Opake Speicherung - Problemfelder
„ Optimierbarkeit der Anfrage
„ Das relationale System kennt die Struktur des Dokuments nicht
„ Ganzes Dokument muss gelesen werden
„ Auch beim Zugriff auf einzelnes Element
13
Anfragesprache (Benutzer)
„ SQL ist bestenfalls bei inhaltsorientierter Zerlegung geeignet
„ nur dort Anwendungssemantik auf relationaler Ebene
„ Elementübergreifende Anfragen nicht immer möglich
„ Ergebnis ist eine Tabelle
¾ Transformation nach XML in nachgelagertem Schritt
¾ SQL/XML zur XML-Einbettung
„ XPath
„ eingeschränkte Funktionalität
„ nicht als Anfragesprache entworfen
„ W3C XQuery
„ dedizierte XML-Anfragesprache
„ textorientierte Anfragen?
14
© Dr. Harald Schöning
1-7
Mischung von SQL und XPath / XQuery
„ Modellbruch
„ Oracle 9i / 10g: SQL/XML
„ SELECT extractValue(value(d), '/Description') "Description"
FROM
Purchaseorder,
table(xmlSequence(extract(object_value,
'/PurchaseOrder/LineItems/LineItem/Description'))) d
WHERE existsNode(object_value,
'PurchaseOrder[Ref="SV-2803030912"]')=1
entspricht XPath-Ausdruck
/PurchaseOrder[Ref="SV-2803030912"]/LineItems/LineItem/Description
„ UPDATE Personalakten p SET p.Personalakte =
SYS.XMLType.createXML('<?xml version="1.0"?>
<Personalakte Personalnummer="2234"> ...
</Personalakte> ')
WHERE p.Personalakte.extractvalue('/Personalakte/@Personalnummer') = 2234
15
Queries in kommerziellen RDBMS
„ MS SQL Server (SQL Server 2005)
„ SELECT PK,
XDOC.xquery('for $s in /BOOK/SECTION return
<topic>{data($s/TITLE)}</topic> ')
FROM DOCS
„ XQuery bezieht sich nur auf ein Dokument!
„ DB2 (native XML-Unterstützung, geplant)
„ for $e in db2-fn:xmlcolumn(″ DEPT.DEPTDOC ″)/dept/employee where
$e/office=344 return $e/name
„ let $d:=db2-fn:sqlquery(' select deptdoc from dept where deptID= ″ PR27 ″ ')
let $u:=db2-fn:sqlquery(' select XMLELEMENT(NAME ″Unit ″, XMLFOREST(ID,
name, manager)) from unit where ID= ″ PR27 ″“')
return <report><units>{$u}</units><department>{$d}</department>></report>
„ select deptID, deptdoc
from dept d
where deptID LIKE ″ PR% ″ and xmlexists(' $deptdoc/dept/employee[office=344] '
passing by ref d.deptdoc as ″ deptdoc ″)
16
© Dr. Harald Schöning
1-8
Stand der Technik (kommerzielle Systeme)
„ Oracle 10g
„
„
„
„
„
Opak oder inhaltsorientiert
Keine Unterstützung von XQuery
Forschung: Index gemäß strukturorientierter Zerlegung für opake Speicherung
Rudimentär: Text Retrieval
XML Schema Validierung nicht erzwungen
„ IBM DB2
„ In Vorbereitung: native Unterstützung von XML
„ Integration von XQuery im relationalen Optimierer
„ XML Schema Validierung nicht erzwungen
„ Microsoft SQL Server
„ In Vorbereitung: XQuery auf einzelnen Spalten
„ Index gemäß strukturorientierter Zerlegung
„ Tamino
„ Native Unterstützung seit 1999
„ XQuery seit 2003
17
Perspektive in relationalen Datenbanksystemen
„ eigene, gleichberechtigte
Anfrageauswertungskomponenten
SQL engine
SQLOptimierer
SQL Speicherung
XML-Anfrageauswertung
gemeinsame
Optimiererlogik
?
XQueryOptimierer
XML-Speicherung
18
© Dr. Harald Schöning
1-9
ein XMLDatenbanksystem
„
„
„
„
„
„
„
Seit 1999 verfügbar
Native XML-Unterstützung, kein Modellbruch
XQuery als primäre Anfragesprache
Integration heterogener Datenquellen
Erweiterbar durch "Server extensions"
speichert XML-Dokumente und "non-XML"
schematische Beschreibung ist möglich, aber nicht
zwingend
„ http ist primärer Zugang
„ Indizierung gemäß XML-Struktur
19
Der XML-Datenbankserver:
XML speichern
„ Dokumente mit und ohne Schemaassoziation
„ ggf. Validierung
„ einzeln oder als Menge von Dokumenten zu speichern
„ eindeutige ID pro Dokument
„ optional Dokumentname
Datenbank
Collection
…
Schema
Doctype
…
Collection
…
Schema
Doctype
20
© Dr. Harald Schöning
1-10
Der XML-Datenbankserver:
XML abfragen und ändern
„ XQuery
„ W3C draft
„ Erweiterung für update
„ plus Funktionsbibliothek
„ Tamino-Namensraum
„ Text-Retrieval
„ XQJ
Beispiel:
Beispiel:
„Autoren
„Autorenmit
mitihren
ihrenBüchern“:
Büchern“:
<Autorenliste>
<Autorenliste>
{for
{for$a
$ain
incollection(″Bücher″
collection(″Bücher″)/alle/Autor
)/alle/Autor
return
return<Eintrag>
<Eintrag>
{$a}
{$a}
{for
{for$b
$bin
incollection(″Bücher″
collection(″Bücher″)//Buch[Autor=$a]
)//Buch[Autor=$a]
return
return$b/Titel}
$b/Titel}
</Eintrag>}
</Eintrag>}
</Autorenliste>
</Autorenliste>
21
Der XML-Datenbankserver:
Text Retrieval
„ Wildcards
„ tf:containsText(Titel, "Tam* Data*")
„ Suche nach benachbarten Wörtern
„
„
„
„ tf:containsAdjacentText(Titel,3,"Tamino","Datenbanksystem")
„ Tamino ist ein Datenbanksystem
Suche nach Stammformengleichheit
„ tf:containsText(Titel,tf:stem("speichern"))
„ Tamino speichert XML
Suche nach gleichem Klang
„ tf:containsNearText(Titel,3,tf:phonetic("stark"), tf:stem("speichern")
„ XML-Speicherung ist Taminos Stärke
Mit anderen Bedingungen kombinierbar
„ declare namespace tf="…"
for $b in input()//Buch
where tf:containsText($b/Titel,"XML") and $b/Preis<100
return $b
„ Funktioniert mit und ohne Index
22
© Dr. Harald Schöning
1-11
Der XML-Datenbankserver:
XML Schema
„ Schemadefinition über W3C XML Schema
„ Das Tamino Schema ist ein gültiges XML Schema
„ Annotationen, um Tamino-Spezifika anzugeben
„ Standard-Mechanismus von XML Schema
„ eigener Tamino-Namensraum wird benutzt
„ Benutzt für logische Angaben, die über XML Schema hinausgehen
„ nationale Sortierordnungen, Zugehörigkeit zu Collections usw.
„ Benutzt für physische Angaben
„ Indexierung usw.
„ Schemaänderungen möglich (ggf. mit Validierung)
„ offene Schemata
23
Der XML-Datenbankserver:
Security
„ Autorisierung auf
„
„
„
„
Collection
Doctype
Knotenebene
Funktionen
„ Über ACLs
„ Benutzer
„ Gruppen
„ Rechte
„ Authentisierung
„ Web Server
„ Tamino
„ Betriebssystem
24
© Dr. Harald Schöning
1-12
Der XML-Datenbankserver:
Indexierung
„ Indextypen
„ Compound index
„ Standard
„ Elemente
„ Attribute
„ Text
„ Elemente
„ Attribute
„ Struktur
„ doctype
„ Kombination von Elementen
und Attributen zu einem
einzigen Index
„ Reference index
„ Speziell auf hierarchische XMLStruktur zugeschnitten
„ Multipath index
„ Besonders für rekursive
Strukturen
25
Der XML-Datenbankserver:
Internationalisierung
„ mehr als 100 encodings für XML-Dokumente unterstützt
„ <?xml version="1.0" encoding="iso-8859-2"?>
„ Konvertierung beim Speichern und Abfragen möglich
„
„
„
„
IRI-Unterstützung
Zeichenrepertoire von Unicode 3.2
nationale Sortierordnungen
Text Retrieval für nicht auf Buchstaben beruhende Sprachen
„
„
„
„
Chinesisch
Japanisch
Koreanisch
tf:containsText(" 心臟疾病 ", " 心")
„ Regeln für sprachspezifische Behandlung von Zeichen definierbar
„ ß Æ ss
26
© Dr. Harald Schöning
1-13
Der XML-Datenbankserver
... ist ein Datenbanksystem
„
„
„
„
„
Volle Unterstützung von ACID Transaktionen
verschiedene Isolationsebenen können gewählt werden
verteilte Transaktionen
Cursoring
Backup / Recovery
„ Einbindung der Backupkonzepte von EMC, Network Applicances usw.
„ High Availability
„ Replikation
27
Tamino X-Node:
XML-Anbindung an RDBMS
„ Abbildung relationaler
Strukuren nach XML
„ Teile von Dokumenten aus
Tamino, andere
aus dem RDBMS
„
„
„
„
Abfragen
Abspeichern
Ändern
Auch für Adabas
28
© Dr. Harald Schöning
1-14
Tamino X-Tension:
Erweiterung der Serverfunktionalität
„ Durch benutzerdefinierte Server-Extensions
„ Bibliotheken mit Callback-Möglichkeiten
„ Mapping
„ von XML (Sub-) Dokumenten auf externe Datenquellen
„ Trigger
„ Binden von Aktionen an Operationen auf Knoten
„ Anfragefunktionen
„ Erweiterung von X-Query durch benutzerdefinierte Funktionen
„ Reaktion auf Ereignisse
„ Beendigung einer Transaktion
„ usw.
29
XML-Anbindung anderer Formate
„ Tamino kann beliebige Dateien speichern
„ .txt, .gif, .doc usw.
„ Bei Text erfolgt automatisch eine Textindizierung
„ Weitergehende Indizierung möglich durch Server
Extension
„ Erzeugung eines "Schattendokumentes„
„ Dokumentinhalt und Metadaten werden in XML-Form
zugänglich
„ beliebige Anfragen
„ Extraktion / Konvertierung durch spezielle Server
Extension
© Dr. Harald Schöning
30
1-15
XML-Anbindung anderer Formate:
weitergehende Indizierung
Datenbank
Server extension
Nicht-XML
Dokument
Metadaten
+
Inhalt
Original
XML
31
Schnittstellen
X-Application
Framework
Java
Tamino Java API
Browser
OCX
WebDAV
WebDAV
Server
Server
.Net API
SOAP
SOAP
API
API
X-Node
X-Node
X-Tension
X-Tension
Server
Server
Extension
Server
Extension
Server
Extension
Extension
© Dr. Harald Schöning
SOAP
client
HTTP
JScript
HTTP
Client API
WebDAV
client
Tamino
Store
SQL
Store
ADABAS
Store
XML
non-XML
relational
Adabas
32
1-16
Tamino Werkzeuge: Tamino X-Plorer
„ Browser durch die Datenbank
„ Anfragen zur Einschränkung der sichtbaren Dokumente
33
Tamino Werkzeuge:Query Tool
„ Syntax highlighting
für W3C XQuery
„ Query history
34
© Dr. Harald Schöning
1-17
Tamino Werkzeuge: Schema Editor
35
Tamino Werkzeuge: Administration
36
© Dr. Harald Schöning
1-18
Zusammenfassung
„ RDBMS
„ Abbildung auf relationale Strukturen nicht zukunftsfähig
„ Entwicklung in Richtung nativer XML-Unterstützung
¾ noch sehr am Anfang
„ Tamino
„ XML speichern
„ mit oder ohne Schema, oder offenes Schema
„ Andere Formate speichern
„ Mit Brücke zu XML
„
„
„
„
XML Indizierung
XML-Security
X-Tension zur Erweiterung der Server-Funktionalität
X-Node zur Anbindung externer Datenbanken
37
38
© Dr. Harald Schöning
1-19
Herunterladen