Xml-Speicherung in Datenbanksystemen
Xml-Speicherung in Datenbanksystemen
Xml-Speicherung in Datenbanksystemen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Überblick<br />
XML-<strong>Speicherung</strong> <strong>in</strong><br />
<strong>Datenbanksystemen</strong><br />
Dr. Harald Schön<strong>in</strong>g<br />
„ Motivation: XML und e-Commerce<br />
„ XML <strong>in</strong> relationalen Datenbanken<br />
„ Das XML-Datenbanksystem Tam<strong>in</strong>o<br />
1<br />
2<br />
1
XML<br />
„ Ist e<strong>in</strong>e Metasprache<br />
„ entstanden aus SGML<br />
„ die neue Sprache für das Web<br />
„ ist recht e<strong>in</strong>fach aufgebaut<br />
„ <br />
<br />
XML-<strong>Speicherung</strong> <strong>in</strong> Datenbanken<br />
Dr. Harald Schön<strong>in</strong>g<br />
Software AG<br />
<br />
Wichtige Eigenschaften von XML<br />
„ Dokumente haben e<strong>in</strong>e Baumstruktur, e<strong>in</strong>en optionalen<br />
Prolog und ggf. e<strong>in</strong>e DTD<br />
„ Die wichtigsten Bauste<strong>in</strong>e s<strong>in</strong>d Elemente und Attribute<br />
„ Dokumente s<strong>in</strong>d wohlgeformt (well-formed), wenn sie<br />
den Syntaxregeln genügen (im wesentlichen, wenn sie<br />
die geforderte Baumstruktur haben)<br />
„ Dokumente können e<strong>in</strong> Schema haben. Wenn sie<br />
wohlgeformt s<strong>in</strong>d und dem Schema entsprechen, nennt<br />
man sie gültig (valid)<br />
„ Kommentare und process<strong>in</strong>g <strong>in</strong>structions s<strong>in</strong>d an jeder<br />
Stelle erlaubt<br />
3<br />
4<br />
2
Wichtige Eigenschaften von XML - 2<br />
„ Elemente können auch rekursiv geschachtelt se<strong>in</strong><br />
„ Elemente gleichen Namens dürfen mehrfach<br />
vorkommen<br />
„ Reihenfolge und Position s<strong>in</strong>d wichtig<br />
„ Mixed content ist möglich <br />
„ Elemente können leer se<strong>in</strong><br />
„ Attribute können optional se<strong>in</strong><br />
„ Bei Attributen ist Reihenfolge unwichtig<br />
„ Es gibt spezielle Attribute zur Referenzierung (ID und<br />
IDREF)<br />
Datenaustausch - Schlüssel zum e-<br />
Commerce<br />
„ Company to company (supply cha<strong>in</strong>)<br />
„ EDI<br />
„ Punkt-zu-Punkt Lösung<br />
„ hoher Investitionsaufwand<br />
„ für Mittelstand ungeeignet<br />
„ Ablösung durch XML<br />
„ Standardisierte DTDs (OASIS)<br />
„ Können auch unilateral erweitert werden<br />
„ Standardwerkzeuge<br />
5<br />
6<br />
3
Supply cha<strong>in</strong><br />
Flexible Formatierung<br />
„ XML impliziert ke<strong>in</strong>e bestimmte Präsentationsform<br />
„ Unterschiedliche Präsentationen von XML-<br />
Dokumenten wird durch Style-Sheets möglich<br />
„ Hohe Flexibilität<br />
„ Generischer Ansatz<br />
7<br />
8<br />
4
… und <strong>in</strong>tegriertes Content Management<br />
Andere Anwendungen<br />
„ Dokumentenverwaltung / content management<br />
„ Website-Management<br />
„ electronic mall<br />
„ <strong>in</strong>telligente Suchmasch<strong>in</strong>en<br />
„ Katalogverwaltung<br />
„ Knowledge management<br />
„ e-government<br />
„ mobile Anwendungen<br />
„ Metadatenverwaltung<br />
9<br />
10<br />
5
Warum XML <strong>in</strong> Datenbanken?<br />
„ In diesen Anwendungen besteht der Bedarf der<br />
<strong>Speicherung</strong><br />
„ effizient<br />
„ sicher<br />
„ mit Abfragemöglichkeiten<br />
„ Mehrbenutzerbetrieb<br />
„ ...<br />
„ Aber auch Anb<strong>in</strong>dung an vorhandene DBS!<br />
Anfragetypen<br />
„ Werteorientiert:<br />
„ @attribute > 5<br />
„ <br />
„ element < 7.1<br />
„ 6.1<br />
„ element = "Hugo"<br />
„ Hugo<br />
„ Hugo<br />
„ Hugo<br />
„ element > "Otto"<br />
11<br />
16<br />
6
Anfragetypen (2)<br />
„ Textorientiert:<br />
„ documents conta<strong>in</strong><strong>in</strong>g „XML“<br />
„ documents conta<strong>in</strong><strong>in</strong>g "XML" OR "HTML but not<br />
"SGML"<br />
„ documents conta<strong>in</strong><strong>in</strong>g "XML" with<strong>in</strong> two words of<br />
"database"<br />
„ documents with words similar to "XML" (rank<strong>in</strong>g)<br />
Anfragetypen (3)<br />
„ Strukturorientiert:<br />
„ //Buch<br />
Dokumente, <strong>in</strong> denen e<strong>in</strong> Element "Buch" vorkommt<br />
„ //Buch/@ISBN<br />
Dokumente, <strong>in</strong> denen e<strong>in</strong> Element "Buch" e<strong>in</strong> Attribut<br />
"ISBN" hat<br />
„ /Buch/Titel<br />
„ /Buch/Autor[1]<br />
„ Titel AFTER /Buch/Autor<br />
17<br />
18<br />
7
Anfragetypen (4)<br />
„ L<strong>in</strong>korientiert<br />
„ Dokumente, die auf e<strong>in</strong>e bestimmte Stelle zeigen<br />
„ Dokumente, die aus e<strong>in</strong>em Dokument referenziert<br />
werden<br />
„ Komb<strong>in</strong>ationen aus<br />
„ wertorientiert<br />
„ textorientiert<br />
„ strukturorientiert<br />
„ l<strong>in</strong>korientiert<br />
„ //Buch[Preis < 50 AND Titel CONTAINS "XML"]<br />
XML <strong>in</strong> Datenbanken - Optionen zur<br />
Realisierung<br />
„ relational<br />
„ <strong>in</strong>haltsorientiert zerlegt<br />
„ generisch<br />
„ def<strong>in</strong>itorisch<br />
„ strukturorientiert zerlegt<br />
„ opak<br />
„ objektorientiert<br />
„ XML (Tam<strong>in</strong>o)<br />
19<br />
21<br />
8
Relational <strong>in</strong>haltsorientiert<br />
<br />
<br />
Harald Schön<strong>in</strong>g<br />
Dieburg<br />
<br />
<br />
<br />
Lieferung<br />
Nr Datum Kunde<br />
17 7.6.2001<br />
K19<br />
Lieferung Teilnr Menge<br />
17 4711 10<br />
17 4712 11<br />
Kunden<br />
Kundennr Name Ort<br />
K19 Harald Schön<strong>in</strong>g Dieburg<br />
Relational <strong>in</strong>haltsorientiert - generisch<br />
„ Darstellung von relationalen Tabellen als XML-<br />
Dokumente<br />
„ Columns als Elemente oder Attribute<br />
„ <br />
17<br />
Egon Maier <br />
18<br />
Hugo Maier <br />
<br />
„ <br />
<br />
<br />
<br />
22<br />
23<br />
9
Relational <strong>in</strong>haltsorientiert - generisch (2)<br />
„ Konvertierung e<strong>in</strong>er Tabelle (d.h. jedes SQL-<br />
Anfrageergebnisses) nach XML ist e<strong>in</strong>fach<br />
„ kann außerhalb der Datenbank geschehen<br />
„ z.B. Bluestone’s XML Suite (generierte Java-Klassen)<br />
„ Umgekehrter Weg:<br />
„ Abspeichern von XML-Dokumenten <strong>in</strong> vorgegebene<br />
Tabellen<br />
„ Setzt e<strong>in</strong>e veränderbare Sicht oder Basistabelle voraus<br />
„ Die XML-Dokumente müssen <strong>in</strong> der Struktur der<br />
Tabelle entsprechen<br />
Relational <strong>in</strong>haltsorientiert - generisch (3)<br />
„ Dokumentstruktur starr,<br />
„ Rekursion, mixed content nicht def<strong>in</strong>ierbar<br />
„ Schema durch relationales Schema gegeben<br />
„ “ round trip” möglich?<br />
„ Kommentare, process<strong>in</strong>g <strong>in</strong>structions?<br />
„ XML-Prolog<br />
„ Reihenfolge der Elemente<br />
„ Element vs. Attribut<br />
„ offensichtlich ke<strong>in</strong>e beliebigen (nicht vordef<strong>in</strong>ierten)<br />
XML-Dokumente speicherbar<br />
24<br />
25<br />
10
Relational <strong>in</strong>haltsorientiert - def<strong>in</strong>itorisch<br />
„ Def<strong>in</strong>ition e<strong>in</strong>er Abbildungsvorschrift zwischen XML-<br />
Dokument und Datenbanktabellen<br />
„ Elemente und Attribute können auf Zeilen / Spalten<br />
verschiedener Tabellen abgebildet werden<br />
„ Abbildungsvorschrift wird vor dem ersten<br />
Abspeichern erstellt und <strong>in</strong> der Datenbank<br />
gespeichert<br />
Relational <strong>in</strong>haltsorientiert - def<strong>in</strong>itorisch (2)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
26<br />
27<br />
11
Relational <strong>in</strong>haltsorientiert - def<strong>in</strong>itorisch (3)<br />
„ Nur Dokumente mit a priori bekanntem Schema<br />
„ Rekursion?<br />
„ Reihenfolgeerhaltung?<br />
„ Prolog, Kommentare, process<strong>in</strong>g <strong>in</strong>structions gehen<br />
verloren<br />
„ ke<strong>in</strong> mixed content<br />
„ Anfragesprache ist SQL<br />
„ wertebasierte Anfrage ist e<strong>in</strong>fach, textorientierte nur<br />
bed<strong>in</strong>gt, strukturorientierte schwierig<br />
„ Konvertierung SQL-Ergebnis o XML notwendig<br />
Relational <strong>in</strong>haltsorientiert - def<strong>in</strong>itorisch (4)<br />
„ Nur Dokumente mit a priori bekanntem Schema<br />
„ Unterschiedliche Schemamächtigkeit<br />
„ Rekursion?<br />
„ ke<strong>in</strong> mixed content<br />
„ Ke<strong>in</strong>e vollständige Abbildung von Dokumenten<br />
„ Reihenfolgeerhaltung?<br />
„ Prolog, Kommentare, process<strong>in</strong>g <strong>in</strong>structions gehen verloren<br />
„ Anfragesprache ist SQL<br />
„ Anfragen aus XML-Sicht müssen immer <strong>in</strong> SQL übersetzt werden<br />
„ Werkzeuge?<br />
28<br />
29<br />
12
Relational <strong>in</strong>haltsorientiert - def<strong>in</strong>itorisch (5)<br />
„ Anderes Datenmodell<br />
„ Konvertierung SQL-Ergebnis → XML notwendig<br />
„ Auflösen synonymer Darstellungen notwendig:<br />
&apos ' ´<br />
„ beim Speichern andere Validierungsanforderungen:<br />
„ was als DATE deklariert ist, muß dem auch syntaktisch<br />
entsprechen<br />
„ Konvertierung wegen Datentypen kann round-trip verh<strong>in</strong>dern<br />
„ DATE Format<br />
„ wertebasierte Anfrage ist e<strong>in</strong>fach, textorientierte nur<br />
bed<strong>in</strong>gt, strukturorientierte schwierig<br />
Beliebiges XML <strong>in</strong> (objekt-)relationalen DB<br />
„ Ziel: Abspeichern beliebig strukturierter XML-<br />
Dokumente <strong>in</strong> relationalen Datenbanken<br />
„ Elemente und Attribute<br />
„ multiple Elemente (z.B. mehrere Vornamen)<br />
„ rekursive Struktur<br />
„ reihenfolgeerhaltend<br />
„ mixed content<br />
„ Kommentare und process<strong>in</strong>g <strong>in</strong>structions<br />
„ XML Prolog<br />
30<br />
31<br />
13
Strukturorientiert zerlegt - Beispiel<br />
1<br />
2<br />
<br />
3 <br />
4 <br />
Harald Schön<strong>in</strong>g<br />
<br />
Quelle<br />
0<br />
1<br />
1<br />
Nr<br />
1<br />
0<br />
1<br />
Tag<br />
Lieferung<br />
@Datum<br />
Lieferadresse<br />
Ziel<br />
1<br />
0<br />
3<br />
Daten<br />
7.6.2001<br />
5 <br />
3 1 Name 4 Harald Schön<strong>in</strong>g<br />
Dieburg<br />
3 2 Stadt 5 Dieburg<br />
<br />
1 2 Teil 6<br />
6 <br />
9 <br />
<br />
6<br />
6<br />
1<br />
9<br />
9<br />
0<br />
0<br />
3<br />
0<br />
0<br />
@Nummer<br />
@Menge<br />
Teil<br />
@Nummer<br />
@Menge<br />
0<br />
0<br />
9<br />
0<br />
0<br />
4711<br />
10<br />
4712<br />
11<br />
Relational strukturorientiert zerlegt<br />
„ z.B. Xbase oder Florescu & Kossmann:<br />
„ <strong>Speicherung</strong> <strong>in</strong> generischen Tabellen<br />
„ Abspeichern der Kanten des zum XML-Dokument<br />
gehörigen Strukturbaumes<br />
„ Aus 1 XML-Dokument werden n Sätze<br />
„ Kommentare, mixed content?<br />
„ Verwendete relationale Strukturen für Benutzer<br />
unbrauchbar<br />
32<br />
33<br />
14
Relational strukturorientiert zerlegt (2)<br />
„ Anfragesprache: nur SQL<br />
„ ke<strong>in</strong>e adäquaten Anfragekonstrukte<br />
„ Schlechte Performance<br />
„ Anfragen be<strong>in</strong>halten komplexe Jo<strong>in</strong>s<br />
„ Anfragen enthalten Sortierung (wegen der<br />
Reihenfolgeerhaltung)<br />
„ Lock<strong>in</strong>g<br />
„ viele Tupel pro Dokument ⇒ viele Sperren pro Änderung<br />
Relational opak<br />
„ XML-Dokument als Inhalt e<strong>in</strong>er Spalte e<strong>in</strong>er Tabelle<br />
(BLOB, CLOB) oder als externe Datei<br />
CREATE TABLE xmlTable (<br />
xml BLOB)<br />
„ schematische Beschreibung des XML-Dokumentes nicht<br />
Voraussetzung<br />
„ Anfragen mittels Extenders/Data Blades<br />
„ Zugriffspfade / Indizes über Datenbankerweiterungen?<br />
„ Lock<strong>in</strong>g auf Dokumentebene<br />
„ fe<strong>in</strong>eres Lock<strong>in</strong>g unmöglich<br />
34<br />
35<br />
15
Anfragen über Extensions<br />
„ Anfragen über<br />
„ UDF,die e<strong>in</strong>e eigene Anfragesprache verstehen können<br />
SELECT xml<br />
FROM xmlTable<br />
WHERE QUERY(xml, “/uni/fachbereich[@name=“Informatik]”)<br />
„ Optimierung von Anfragen über mehrere Dokumente?<br />
„ Sortierung des Ergebnisses?<br />
„ UPDATE xmlTable<br />
SET xml = Transform<strong>Xml</strong>(xml, “ replace by ” )<br />
„ ersetzt den kompletten Attributwert, d.h. das gesamte Dokument!<br />
Anfragen über Extensions<br />
„ Behandlung der Daten-Sicht<br />
„ Beispiel: …<br />
„ F<strong>in</strong>de alle Dokumente, deren Wichtigkeit m<strong>in</strong>destens 3 ist<br />
„ Text-Retrieval-Funktionen helfen nicht weiter<br />
„ Kann es Zugriffsstrukturen (Indizes) dafür geben?<br />
„ Voraussetzung wäre Erkennung als numerisches Feld<br />
„ DB2: side tables<br />
„ Konsistenz nicht garantiert!<br />
„ Auch syntaktisch getrennt<br />
„ ggf. nested tables (multiplicity > 1)<br />
36<br />
37<br />
16
Anfragen über Extensions<br />
„ Textsuche<br />
„ separate Software? (so bei DB2)<br />
„ <strong>Speicherung</strong> des XML-Dokumentes muss<br />
entsprechendes Format haben<br />
„ character entities<br />
„ encod<strong>in</strong>g<br />
„ Komb<strong>in</strong>ation aus struktureller Suche und Textsuche?<br />
„ Z.B. “Alle Dokumente, <strong>in</strong> denen e<strong>in</strong> Element Firma vorkommt,<br />
das die Zeichenfolge “AG” im Inhalt hat.<br />
XML-Unterstützung <strong>in</strong> relationalen DBMS<br />
„ Generelles Problem:<br />
„ Für e<strong>in</strong>e Anfrage muß bekannt se<strong>in</strong><br />
„ bei <strong>in</strong>haltsorientierter Zerlegung: Struktur des Dokumentes<br />
„ <strong>Speicherung</strong>smethode des Dokumentes<br />
„ Änderungen der <strong>Speicherung</strong>sform (zerlegt, opak)<br />
zw<strong>in</strong>gt zur Änderung aller Anwendungsprogramme<br />
„ Ergebnis ist immer e<strong>in</strong>e Tabelle, die nach XML<br />
konvertiert werden muß<br />
„ Anfrage muß <strong>in</strong> SQL übersetzt oder verpackt werden<br />
38<br />
39<br />
17
XML-Anfragen (opak): Kontrollfluß <strong>in</strong><br />
ORDBMS<br />
XML frontend<br />
SQL-Verpackung<br />
der XML query<br />
ORDBMS<br />
Tabelle →XML<br />
Variante 1: ke<strong>in</strong> XMLspezifischer<br />
Index<br />
Aufruf für jedes Dokument<br />
UDF: auswerten XML query<br />
XML-Anfragen (opak): Kontrollfluß <strong>in</strong><br />
ORDBMS (2)<br />
XML frontend<br />
SQL-Verpackung<br />
der XML query<br />
ORDBMS<br />
Tabelle →XML<br />
Variante 2: XMLspezifischer<br />
Index als<br />
Datenbankerweiterung<br />
UDF: auswerten XML query<br />
Daten- und Indexzugriffe<br />
40<br />
41<br />
18
XML-Anfragen (opak): Kontrollfluß <strong>in</strong><br />
ORDBMS (3)<br />
XML frontend<br />
SQL-Generierung<br />
aus XML query<br />
Indexzugriffe<br />
ORDBMS<br />
Tabelle →XML<br />
Wozu das ORDBMS?<br />
XML frontend<br />
SQL-Generierung<br />
aus XML query<br />
Tabelle →XML<br />
Variante 3: Index als<br />
SQL-Tabelle<br />
UDF: auswerten XML query<br />
UDF: auswerten XML query<br />
42<br />
43<br />
19
XML-Datenbanksystem<br />
„ Kann XML-spezifische Anfragesprache verarbeiten<br />
„ z.B. XML-QL, XQL, XPATH, XQuery<br />
„ kann XML-Dokumente als solche speichern<br />
„ liefert XML als Ergebnis<br />
„ unterstützt struktur-, text- und wertebasierte Anfragen<br />
effizient<br />
„ unterstützt Daten- und Dokumentsicht (mixed content,<br />
Kommentare etc.)<br />
„ erlaubt e<strong>in</strong>e schematische Beschreibung der<br />
Dokumente<br />
e<strong>in</strong> XML-<br />
Datenbanksystem<br />
„ Seit 1999 verfügbar<br />
„ Anfragesprache: Xpath-Erweiterung<br />
„ Integration heterogener Datenquellen<br />
„ Erweiterbar durch "Server extensions"<br />
„ speichert XML-Dokumente und "non-XML"<br />
„ schematische Beschreibung ist möglich, aber nicht<br />
zw<strong>in</strong>gend<br />
„ http ist primärer Zugang<br />
„ Indizierung gemäß XML-Struktur<br />
44<br />
45<br />
20
Anfragesprache<br />
„ Kompatibel zu XPATH<br />
„ /talk<br />
„ //speaker[company=“Software AG”]<br />
„ //@time<br />
„ /talk/*/company<br />
„ mengenorientiert<br />
„ Erweiterungen, z.B. für Textsuche<br />
„ /talk[title ~= “XML”]<br />
„ Ergebnis ist well-formed XML<br />
Architekturüberblick<br />
web server<br />
Tam<strong>in</strong>o server<br />
XML<br />
data<br />
Xmach<strong>in</strong>e<br />
web<br />
application<br />
X<br />
n<br />
o<br />
d<br />
e<br />
External<br />
database<br />
External<br />
application<br />
46<br />
48<br />
21
Integration anderer Datenquellen<br />
„ Warum: legacy Daten sollen per Web zugänglich<br />
gemacht werden<br />
„ Daten anderer Quellen sollen mit den <strong>in</strong> Tam<strong>in</strong>o<br />
gespeicherten Daten e<strong>in</strong> geme<strong>in</strong>sames Dokument<br />
ergeben<br />
„ Als XML gelieferte Daten sollen (teilweise) <strong>in</strong> operative<br />
Datenbanken fließen<br />
„ Zugang z.B. zu ERP-Systemen<br />
Erweiterbarkeit<br />
„ Integration benutzerdef<strong>in</strong>ierter Funktionen <strong>in</strong> die<br />
Anfragesprache<br />
„ server extensions<br />
„ Abbildungsfunktionen, die beliebige Abbildungen<br />
zulassen (z.B. auf Email oder e<strong>in</strong> ERP-System)<br />
„ lesend (d.h. bei Anfragen)<br />
„ schreibend (d.h. bei E<strong>in</strong>fügungen, Änderungen,<br />
Löschungen)<br />
„ Server extensions s<strong>in</strong>d COM oder Java-basiert<br />
49<br />
50<br />
22
Architektur der X-Masch<strong>in</strong>e<br />
X-Mach<strong>in</strong>e<br />
Index<br />
Processor<br />
<strong>in</strong>dex data<br />
Query<br />
Interpreter<br />
Document Post<br />
composer processor Document processor<br />
Schema<br />
<strong>in</strong>formation<br />
Interne <strong>Speicherung</strong><br />
XML data<br />
XML parser<br />
X node,<br />
server<br />
extensions<br />
„ Parsen des Dokumentes<br />
„ dabei Auflösen von Entity-Referenzen, Default-Werten<br />
für Attribute etc.<br />
„ Bilden von Indizes<br />
„ Werte<br />
„ Text<br />
„ Struktur<br />
„ Abspeichern des Dokumentes <strong>in</strong> <strong>in</strong>terner Form<br />
51<br />
53<br />
23
Externe <strong>Speicherung</strong><br />
„ “ middleware” - Ansatz<br />
„ Dokument wird geparst, entsprechende Informationen<br />
werden <strong>in</strong> externen Datenhaltungssystemen<br />
gespeichert<br />
„ bei Anfrage entsprechendes Lesen<br />
„ Kenntnis der Dokumentstruktur erforderlich<br />
„ verteilte Transaktionen<br />
„ Dokumentenänderung an Tam<strong>in</strong>o vorbei<br />
„ Indizierung im Fremdsystem<br />
„ Suchmöglichkeiten nicht durch Fremdsystem beschränkt<br />
Prozedurale <strong>Speicherung</strong><br />
„ Aufruf e<strong>in</strong>er Prozedur für (Teil-) Baum statt<br />
<strong>Speicherung</strong> / Lesen aus der Datenbank<br />
„ Verhalten der Prozedur offen<br />
„ Verschicken von Mail<br />
„ <strong>Speicherung</strong> <strong>in</strong> ERP-System<br />
„ …<br />
„ round trip<br />
„ vom Verhalten der Prozedur abhängig<br />
54<br />
55<br />
24
Komb<strong>in</strong>ation<br />
„ Die vorgestellten <strong>Speicherung</strong>svarianten lassen sich<br />
untere<strong>in</strong>ander und mit der <strong>in</strong>ternen <strong>Speicherung</strong> auf<br />
Dokumentebene komb<strong>in</strong>ieren<br />
„ Dokumentstruktur wird ohneh<strong>in</strong> abgebildet<br />
„ ermöglicht strukturbasierte Suche<br />
„ vollständige <strong>Speicherung</strong> für nicht weiter spezifizierte<br />
Teilbäume möglich<br />
„ Schema-Evolution wird unterstützt<br />
Indizierung<br />
„ klassische Indizes für Daten<br />
„ Zahlen<br />
„ Zeichenketten<br />
„ Datentypdef<strong>in</strong>ition erforderlich<br />
„ Text<strong>in</strong>dizes für dokumentartige Teile<br />
„ mit Wildcards<br />
„ Struktur<br />
„ Frei komb<strong>in</strong>ierbar<br />
„ <strong>in</strong>nerhalb e<strong>in</strong>es Dokumententyps<br />
56<br />
57<br />
25
Schema-Sprache<br />
„ Erste XML-Schemasprache: DTD<br />
„ Aus Datenbanksicht unzulänglich<br />
„ ke<strong>in</strong>e Datentypen<br />
„ ke<strong>in</strong>e Erweiterbarkeit (Indizierung)<br />
„ ke<strong>in</strong> XML!<br />
„ Seit Mai 2001 ist XML Schema e<strong>in</strong>e Recommendation<br />
des W3C<br />
„ Basis für neue Tam<strong>in</strong>o-Schemasprache<br />
Schema ist optional<br />
„ E<strong>in</strong> XML-Datenbanksystem darf ke<strong>in</strong> bekanntes<br />
Schema voraussetzen<br />
„ DTD-lose / schemalose Dokumente müssen verarbeitet werden<br />
„ Kommentare / process<strong>in</strong>g <strong>in</strong>structions müssen<br />
gespeichert werden<br />
„ obwohl nicht im Schema deklariert<br />
„ Offenheit des Schemas von Anwendungsszenarien<br />
gefordert<br />
„ das ist nicht das ANY aus DTDs<br />
„ Tam<strong>in</strong>o<br />
„ open content oder closed content<br />
58<br />
59<br />
26
Open content <strong>in</strong> Tam<strong>in</strong>o - Beispiel<br />
<br />
<br />
Darmstadt<br />
The city of art nouveau<br />
<br />
Langer Ludwig<br />
<br />
Luisenplatz<br />
M5<br />
<br />
<br />
Open content <strong>in</strong> Tam<strong>in</strong>o<br />
Name<br />
Name<br />
City<br />
Monument<br />
Location<br />
<br />
<br />
<br />
<br />
„ Strikte Schema-Validierung<br />
„ closed content def<strong>in</strong>ieren<br />
„ Ansonsten: Elemente und Attribute def<strong>in</strong>ieren, wenn<br />
„ sie <strong>in</strong>diziert werden sollen<br />
„ wenn sie auf externe Datenquellen oder server extensions<br />
abgebildet werden sollen<br />
„ Zugriffsrechte darauf def<strong>in</strong>iert werden sollen<br />
„ Eigenschaften (z.B. Multiplicity) erzwungen werden sollen<br />
„ e<strong>in</strong>er dieser Punkte für e<strong>in</strong> K<strong>in</strong>delement gilt<br />
+<br />
60<br />
61<br />
27
Tam<strong>in</strong>o Schemabehandlung<br />
„ Dokumente ohne bekanntes Schema können<br />
gespeichert werden<br />
„ ke<strong>in</strong>e schemabasierte Gruppierung<br />
„ Tam<strong>in</strong>o collections als benutzerdef<strong>in</strong>ierte Gruppierung<br />
„ Kommentare und process<strong>in</strong>g <strong>in</strong>structions werden<br />
gespeichert<br />
„ Unabhängig vom content Modell<br />
XML Datenorganisation<br />
XML<br />
data<br />
„ Collection<br />
„ Dokument-Typ<br />
„ dokumente<br />
„ eigene Collection für “ unbekannte<br />
Dokumenttypen” (well-formed XML)<br />
„ Auch nicht-XML-Objekte (*.gif etc)<br />
„ physische Organisation<br />
„ Dokumenten<strong>in</strong>halt<br />
„ Struktur<br />
„ Indizes<br />
62<br />
63<br />
28
http als primärer Zugang<br />
Anwendung<br />
http://myserver/tam<strong>in</strong>o/mydb?_xql=/Vortrag<br />
Inter-/Intranet<br />
„ Beschränkung der akzeptierten Web-Server<br />
„ Security-Check schon im Web-Server möglich<br />
„ wegen hierarchischer URL-Struktur<br />
Web server<br />
Tam<strong>in</strong>o server<br />
Tam<strong>in</strong>o plug<strong>in</strong><br />
Existierende Anwendungen<br />
„ Datenaustausch, z.B.<br />
„ mobile Anwendungen<br />
„ Gesundheitswesen<br />
„ Dokumentenverwaltung / content management<br />
„ Dokumentgenerierung aus Bauste<strong>in</strong>en<br />
„ B2C, webshops , B2B, bus<strong>in</strong>ess <strong>in</strong>tegration (electronic mall)<br />
„ <strong>in</strong>telligente Suchmasch<strong>in</strong>en<br />
„ Katalogverwaltung komplexer Teile (web2CAD)<br />
„ Knowledge management<br />
„ e-government (UK)<br />
„ persistente <strong>Speicherung</strong> von XML (Messag<strong>in</strong>g)<br />
„ Metadatenverwaltung / Servicebeschreibung<br />
64<br />
65<br />
29
Zusammenfassung<br />
„ XML-<strong>Speicherung</strong> ist e<strong>in</strong>e wichtige Anforderung an<br />
Datenbanksysteme im e-Commerce<br />
„ Zugriff auf vorhandene Daten (RDBMS) im XML-<br />
Format ist e<strong>in</strong>fach<br />
„ direkter Anschluss an das Web<br />
„ <strong>Speicherung</strong> von XML-Dokumenten <strong>in</strong> (objekt-)<br />
relationalen <strong>Datenbanksystemen</strong> ist e<strong>in</strong>e Notlösung<br />
„ Speziell auf XML zugeschnittene Datenbanksysteme<br />
bieten bessere Unterstützung<br />
66<br />
30