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