XML in relationalen Datenbanksystemen XML-Abfragesprachen XML-Schemasprachen XPath DTD XQuery XML-Transformationssprache XML-Schema XSLT ... XML Relationale DBMS 210 XML in DBMS Dedizierte XML-DBMS XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen 4. XML in relationalen Datenbanksystemen - 211 XML in Datenbanken Ansätze zur Speicherung von XML in relationalen DBMS Verträglichkeit von SQL und XML pureXML – XML in DB2 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken – Warum? sichere, dauerhafte Speicherung von (ausgetauschten) Dokumenten im Originalzustand (auch aufgrund rechtlicher Vorschriften) Datenaustausch ... Dokumentenverwaltung XML-Datenbanksystem als intelligentes und leistungsstarkes Backend mit Basisfunktionalitäten (wie bspw. Textsuchverfahren) für Dokumentenverwaltungssysteme 212 XML effizientes Suchen in XMLAnwendungsdaten, Möglichkeit paralleler Mehrbenutzerzugriffe XML-basierte Anwendungen XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Modelle von XML-Datenbanken – monolithische Ansatz („aus einem Guss“) • gesamte Datenbank = ein einziges großen XML-Dokument • Daten sind unter einem (virtuellen) Wurzelelement gespeichert • alle Operationen beziehen sich stets auf Gesamtdokument (Bsp.: Einfügen oder Löschen von Daten ≙ Ändern des Dokuments) • Vorteile - Adressierung aller Daten mit XML-Mitteln (bspw. XPath) - Verarbeitung der Gesamtdatenbank per DOM • Nachteile - vollständige Validierung bei Schemaevolution nötig - Verwaltung Dokument-spezifischer Informationen/ Metadaten problematisch (XML-Deklaration, DTD, Referenzen, ...) - ... 213 XML XML XML XML XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Modelle von XML-Datenbanken – fragmentorientierte Ansatz • gespeicherte Daten (aus XML-Sicht) nicht miteinander verknüpft • Kombination zu XML-Fragmenten erst bei Extraktion aus DB • umgekehrt Auflösung von XML-Fragmenten beim Einfügen in DB • Vorteile - eignet sich für Koexistenz von relationaler und XML-Sicht bei relationaler Datenspeicherung in Tabellen • Nachteile - ursprünglicher Zusammenhang der Dokumente datenbankseitig nicht abgebildet - Rekonstruktion problematisch - Informationsverlust möglich (XML-Deklaration, DTD, Kommentare, Verarbeitungsanweisungen,...) 214 X XML XML M L XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Modelle von XML-Datenbanken – dokumentorientierte Ansatz • Datenbank = Menge (ungeordnet) von XML-Dokumenten • Gruppierung von Dokumenten - typbezogen nach gleicher schematischer Beschreibung - nach benutzerspezifischen Kriterien zu Sammlungen (collections) • Vorteile - Beibehaltung Dokument-spezifischer Informationen möglich (XML-Deklaration, DTD, Kommentare) • Nachteile - gleichzeitiger „relationaler Zugriff“ auf gespeicherte Daten nur auf Umwegen XML XML XMLXML 215 XML XML XML XML XML XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – Datenbank-spezifisch • Effizienz effiziente Ausführung von Abfragen und Operationen unterstützt durch Indexstrukturen, einen Anfrageoptimierer, Caching, etc. • Mehrbenutzerbetrieb Unterstützung von parallelem Mehrbenutzerbetrieb auf Basis eines Transaktionskonzepts und ausreichender Skalierbarkeit • Skalierbarkeit möglichst (unter-)lineare Erhöhung der Antwortzeiten bei steigender Benutzerzahl oder Datenmenge; konstanter Aufwand für konstante Datenmengen ohne Einfluss von XML-Dokumentgröße oder -tiefe 216 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – Datenbank-spezifisch • Transaktionskonzept (ACID) Unterstützung von atomaren, konsistenten, voneinander isolierten und dauerhaften Transaktionen • Speicherstrukturunabhängigkeit Unabhängigkeit der Anfragen und Operationen von Zugriffsstrukturen (bspw. Indexe) ist Voraussetzung für effiziente Abfrageoptimierung • Sicherheit Mechanismen zur Authentisierung (Identitätsprüfung) und Autorisierung (Rechteprüfung, typbezogen oder wertebasiert) 217 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – Datenbank-spezifisch • Verfügbarkeit Hochverfügbarkeit durch Mechanismen wie bspw. Replikation • Erweiterbarkeit Möglichkeit zur Definition eigener Datentypen und Methoden (wäre bereits durch Unterstützung von XML-Schema und XQuery erfüllt) 218 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – XML-spezifisch • Standardkonformität - Konformität zu XML 1.0 (bzw. XML 1.1) - Unterstützung von XML-Schema und XQuery • Dokumentenbehandlung - Verwaltung ganzer XML-Dokumente und dazugehöriger Metadaten - Möglichkeit zur vollständigen unveränderten Dokumentrückgabe (Originaltreue) XML XML XML XML XML 219 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – XML-spezifisch • Schemaunabhängigkeit - Verarbeitung von XML-Dokumenten mit vorgegebenem und ohne XML-Schema XMLSchema XML XML XML XML XML XML • Strukturunabhängigkeit - Verarbeitung von XML-Dokumenten beliebiger Struktur - flache und tiefe XML-Dokumente* - daten- und.dokumentorientierte Dokumente* * zzgl. Mischformen 220 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – XML-spezifisch • Schemavorgabe und Validierung - datenbankseitige Vorgabe (weiterer) XML-Schemas und Validierung von gespeicherten XML-Dokumenten gegen diese • Web-Anbindung und andere Protokolle - Unterstützung des Zugriffs über verschiedene Protokolle wie HTTP oder WEBDav HTTP WEBDav ... XML XML XML 221 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – XML-spezifisch • Kodierung und Internationalisierung - Unterstützung verschiedener (nationaler) Kodierungen - Berücksichtigung sprachspezifischer Sortierordnungen (collations) - weitere nationalspezifische Eigenheiten (bspw. Fehlermeldungen in Anwendersprache) • XML-spezifische Schnittstellen zur Datenabfrage und –manipulation - flexible Schnittstelle zum Auslesen ganzer XML-Dokumente oder zur Abfrage aggregierter Daten aus mehreren XML-Dokumenten - Möglichkeiten zum Einfügen, Ändern und Löschen von ganzen Dokumenten und einzelnen Dokumentinhalten 222 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – XML-spezifisch • offenes Inhaltsmodell - Unterstützung für offene bzw. unbekannte Strukturen (bspw. Ignorieren nicht relevanter Schemavorgaben (xs:any)) <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="vorlesung"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="teilnehmer"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="vorname" type="xs:string" /> <xs:element name="semester" type="xs:int" /> <xs:element name="studienfach" type="xs:int" /> </xs:sequence> <xs:attribute name="matrikel" type="xs:int" use="required" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="titel" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema> offener Bereich • Schema-Evolution - effiziente Durchführbarkeit von Schemaevolutionen bei Konsistenzwahrung der Daten 223 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – XML-spezifisch • unterschiedlich granulare Möglichkeiten zur Autorisierung - Vergabe von Zugriffsrechten auf verschiedenen Ebenen nötig - alle XML-Dokumente eines bestimmten XML-Schemas XMLSchema XML XML XML XML XML XML - einzelne XML-Dokumente XML XML XML XML XML XML - Teile von XML-Dokumenten (Elemente, Attribute, ...) XML 224 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in Datenbanken - Anforderungen an XML-Datenbanken – XML-spezifisch • Speicherung von Nicht-XML-Daten - bspw. multimedialen Daten, die von XML-Dokumenten referenziert werden können XML XML XML 225 XML XML XML XML XML XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML in relationalen DBMS - relationale DBMS sind die am weitesten verbreiteten und etablierten Datenbankmanagementsysteme - Gegenüberstellung: relationale Welt 226 XML Strukturen flache Tabellen hierarchische Struktur Werte atomare Informationen in Spalten Informationen in Elementen und Attributen Ordnung keine Reihenfolge der Tupel Elemente sind geordnet Schema verpflichtend und vollständig optional und bei Bedarf offen Struktur eindeutig komplex XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Ansätze zur Speicherung von XML in relationalen DBMS - inhaltsorientierte Zerlegung - strukturorientierte Zerlegung - opake Speicherung XML 227 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen inhaltsorientierte Zerlegung - transformiert ein XML-Dokument in ein inhaltlich entsprechendes Netz von Tabellen (und umgekehrt) - keine explizite Abbildung der Markups (Auszeichnungen) - sondern implizite Kodierung der Markups in Tabellenstruktur - Vorgehensweisen • generisch – allgemeingültiges Umsetzungskonzept • definitorisch – Transformation anhand schematischer Beschreibung 228 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen generische inhaltsorientierte Zerlegung - allgemeingültiger Ansatz zur Transformation (unabhängig von Schemainformationen) - Anwendung der Methode häufig um relationale Tabellen als (flache) XMLDokumente darzustellen (XML-Publishing) - unterschiedliche Varianten möglich • Spaltennamen werden zu Elementnamen • Spaltennamen werden zu Attributnamen • Spaltennamen werden zu Attributwerten • weitere (Misch-)Formen XML 229 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen generische inhaltsorientierte Zerlegung - Spaltennamen zu Elementnamen am Beispiel CREATE TABLE TEILNEHMER (MATRIKEL INT NOT NULL, NAME VARCHAR(20) NOT NULL, VORNAME VARCHAR(20) NOT NULL, STUDIENFACH INT NOT NULL, SEMESTER INT NOT NULL) <!ELEMENT TEILNEHMER (Row*)> <!ELEMENT Row (MATRIKEL, NAME, VORNAME, SEMESTER, STUDIENFACH)> <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT 230 MATRIKEL (#PCDATA)> NAME (#PCDATA)> VORNAME (#PCDATA)> SEMESTER (#PCDATA)> STUDIENFACH (#PCDATA)> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen generische inhaltsorientierte Zerlegung - Spaltennamen zu Elementnamen am Beispiel MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 <TEILNEHMER> <ROW> <MATRIKEL>4711</MATRIKEL> <NAME>Mustermann</NAME> <VORNAME>Max</VORNAME> <SEMESTER>5</SEMESTER> <STUDIENFACH>8</STUDIENFACH> </ROW> </TEILNEHMER> 231 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen generische inhaltsorientierte Zerlegung - Nachteile • nur für flache, gleichartige XML-Dokumente auch in Umkehrrichtung anwendbar • problematisch dabei zudem Abbildung von Knotenreihenfolgen, Kommentaren und Verarbeitungsanweisungen • weitere Nachteile abhängig von der gewählten Variante - bspw. bei Spaltennamen werden zu Elementnamen: hoher Speicher-Overhead für Elementdefinitionen (jeweils öffnendes + schließendes Tag) pro Spaltenwert - ... 232 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen definitorische inhaltsorientierte Zerlegung - erfordert explizite Definition der Abbildungsvorschrift (zumeist auf Schemainformationen aufbauend) - ermöglicht flexible Transformation von relationalen Tabellen zu XMLDokumenten und umgekehrt XMLSchema, DTD XML 233 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen definitorische inhaltsorientierte Zerlegung - Nachteile • Erfordernis von XML-Schema bzw. DTD • daher für dokumentorientierte Dokumente (eher) ungeeignet • Abbildung von XML-Deklaration, DTD (dokumentintern), gemischtem Inhalt, Kommentaren und Verarbeitungsanweisungen nicht möglich • Reihenfolge nur über zusätzliche Positionskennungsfelder beibehaltbar 234 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen inhaltsorientierte Zerlegung - Bewertung • Komplikationen durch unterschiedliche Typsysteme möglich - führende 0en für integer-Zahlen - verschiedene nicht-erlaubte Zeichen - maximale Längen relationaler Datentypen • effiziente Unterstützung durch relationale Indexe möglich - XML-Dokumente werden bis auf Elementebene in inhaltlich zusammengehörende Tupel zerteilt - XML-Abfrageprofil ähnelt in der Regel somit dem relationalen - relationale Wert- und Textindizierung somit wiederverwendbar 235 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen inhaltsorientierte Zerlegung - Bewertung • Anfragen und Ergebnisse - Übersetzung XML-spezifischer Anfragen zu SQL nötig (Abbildungsautomatismus erstrebenswert) - textorientierte Anfragen nur bedingt möglich (nur direkte Elementinhalte zusammenhängend gespeichert) - SQL-Ergebnis (Tabelle) muss nach XML konvertiert werden • Änderungen am relationalen Schema und XML-Schema bedingen sich einander • Originaltreue für Dokumentstruktur nicht gewährleistet • Zugriffsrechte auf relational zusammen gespeicherten Informationen aus XML-Teilbäumen bzw. über einzelne Spalten auf einzelnen Knoten spezifizierbar 236 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen strukturorientierte Zerlegung - transformiert ein XML-Dokument durch Abbildung der Knoten und Kanten rein abhängig von seiner hierarchischen (Baum-)Struktur in eine (oder mehrere) Tabelle(n) - für beliebig strukturierte XML-Dokumente anwendbar, da unabhängig von Schemainformationen - einfache Variante für eine solche Abbildung • Elemente und Attribute werden jeweils zu einer Zeile mit Name, Wert und Metainformationen abgebildet • XML-Dokument wird dabei in nur eine Tabelle transformiert XML 237 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen strukturorientierte Zerlegung - Beispiel für eine einfache Abbildungsvariante CREATE TABLE VORLESUNG (DOKUMENTKENNUNG INT NOT NULL, KNOTENNUMMER INT NOT NULL, VORGÄNGERNUMMER INT NOT NULL, ORDNUNGSZAHL INT, NAME VARCHAR(1000) NOT NULL, WERT VARCHAR(1000)) <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT 238 name (#PCDATA)> vorname (#PCDATA)> semester (#PCDATA)> studienfach (#PCDATA)> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen strukturorientierte Zerlegung - Zweck der (Metainformations-)Spalten • DOKUMENTKENNUNG – dient der Zuordnung der Informationen zu einem Dokument • KNOTENNUMMER – identifiziert jeden einzelnen Knoten um mithilfe der Vorgängernummer hierarchische Beziehungen abzubilden • VORGÄNGERNUMMER – informiert über den Vorgänger (im Sinne des Parent bzw. des beinhaltenden Elements) eines Knotens • ORDNUNGSZAHL – identifiziert die Position eines Knotens und bildet dadurch die Reihenfolge im Dokument ab (Attribute sind ungeordnet und haben daher keine feste Position) • NAME – enthält den Namen eines Knotens • WERT – bildet den Wert eines (möglicherweise auch leeren) Knotens ab 239 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen strukturorientierte Zerlegung - Beispiel für eine einfache Abbildungsvariante DOKUMENTKENNUNG KNOTENNUMMER VORGÄNGERNUMMER ORDNUNGSZAHL NAME 1 1 0 1 vorlesung 1 2 1 1 3 1 1 4 3 1 5 3 1 6 3 1 7 3 1 8 3 240 titel 1 WERT XML... teilnehmer matrikel 4711 1 name Mustermann 2 vorname Max <vorlesung titel="XML ..."> 3 <teilnehmer semester 5 matrikel="4711"> <name>Mustermann</name> 4 studienfach 8 <vorname>Max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> </vorlesung> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen strukturorientierte Zerlegung - Bewertung • Typprüfungen nur außerhalb des relationalen Systems möglich - aufgrund rein strukturorientierter Zerlegung kein Bezug zwischen XML-Schema und relationalem Schema gegeben - abstrakte Spalten mit sämtlichen Informationen (bspw. WERT enthält die Werte aller Elemente und Attribute) - maximale Längen relationaler Datentypen problematisch • effiziente Unterstützung durch relationale Indexe kaum möglich - gezielte Indizierung einzelner Attribut- und Elementwerte nicht möglich - stattdessen nur Indizierung von bspw. der WERT-Spalte denkbar (dennoch nur für Zeichenkettenvergleich nutzbar) 241 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen strukturorientierte Zerlegung - Bewertung • Anfragen und Ergebnisse - Anfragen sind sehr komplex und benötigen viele Join-Operationen - automatisierte Übersetzung XML-spezifischer Anfragen zu SQL daher (fast) zwingend nötig - textorientierte Anfragen nur bedingt möglich (nur direkte Elementinhalte zusammenhängend gespeichert) - Ergebnisbildung sehr aufwändig und teuer • Änderungen am relationalen Schema können die gesamte Struktur der XML-Dokumente zerstören • Originaltreue für Dokumentstruktur kann gewährleistet werden • Zugriffsrechte sind selbst global nur durch Kapselung über relationale werteabhängige Sichten möglich 242 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen opake Speicherung - transformiert ein XML-Dokument zu einem Spaltenwert einer Spalte mit zeichenbasiertem Datentyp, der die Speicherung langer Zeichenketten erlaubt (bspw. Character Large OBject (CLOB)) - für beliebige XML-Dokumente anwendbar, da Speicherung als „Grey Box“ erfolgt (nur textuelle Information relevant, XML-Struktur dagegen nicht) XML 243 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen opake Speicherung - Beispiel für eine mögliche Abbildung CREATE TABLE VORLESUNG (ID INT NOT NULL, XML CLOB(1M)) <!ELEMENT vorlesung (teilnehmer+)> <!ATTLIST vorlesung titel CDATA #REQUIRED> <!ELEMENT teilnehmer (name, vorname, semester, studienfach)> <!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED> <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT 244 name (#PCDATA)> vorname (#PCDATA)> semester (#PCDATA)> studienfach (#PCDATA)> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen opake Speicherung - Bewertung • Typprüfungen nur durch relationale Erweiterungen möglich - spezielle zu implementierende Funktionen oder Prozeduren könnten effiziente Prüfungen bspw. im Sinne einer XML-Schemavalidierung realisieren - Schemainformationen müssen dazu datenbankseitig bekannt sein • effiziente Unterstützung durch relationale Indexe teilweise möglich - Textindexierung beschleunigt primitive Textsuchoperationen auf den als Zeichenkette gespeicherten XML-Dokumenten - XML-spezifisch erweiterte Textindexe sind etwas mächtiger 245 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen opake Speicherung - Bewertung • Anfragen und Ergebnisse - keine Möglichkeit mit SQL-Mitteln gezielt auf Teile des XMLDokuments zuzugreifen bzw. diese im Ergebnis zurückzugeben - primitive inhaltliche Abfragen über Textsuchmechanismen relationaler Systeme durchführbar - erweiterte (und auch wertebasierte) Abfragen können durch XMLspezifische Erweiterungen (Funktionen oder Prozeduren) ermöglicht werden • auch gezielte Änderungen am XML-Dokument erfordern stets die Behandlung des Gesamtdokuments • Originaltreue für Dokumentstruktur kann gewährleistet werden • Zugriffsrechte sind nur auf Dokumentebene definierbar 246 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - SQL/XML ist ein Teil der SQL-Normierung, der SQL um standardisierte XML-spezifische Aspekte zur Speicherung und Verarbeitung von XMLDokumenten erweitert - Abbildungsvorschriften zwischen SQL und XML XML XML - relationaler Datentyp XML - XML-spezifische (SQL-)Funktionen 247 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - Abbildungsvorschriften zwischen SQL und XML • unterschiedliches Datenmodell von XML und SQL macht Abbildungsvorschriften zwischen XML- zu SQL-Konzepten nötig • Zeichensätze - XML basiert auf Unicode, SQL (nahezu) beliebig (je nach DBMS) - homomorphe Abbildung (gleicher Inhalt und gleiche Länge) • Namen (Bezeichner) - in SQL: beliebige Namen bei Benutzung von doppelten Anführungszeichen, aber begrenzte Länge - in XML: nicht alle Zeichen erlaubt (bspw. <, >, $, ...), aber keine Längenbeschränkung - bei Abbildung werden ungültige Zeichen maskiert (nicht zulässige Zeichen werden als hexadezimaler Unicode-Codepoint dargestellt) & x0026 248 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - Abbildungsvorschriften zwischen SQL und XML • Datentypnamen (/-bezeichner) - Bezeichner selbst einfach übertragbar (in SQL lediglich Großschreibung der Typnamen) - Parametrisierung aus SQL wird bei der XML-Abbildung mit in den Namen aufgenommen (bspw. durch Unterstrich getrennt) VARCHAR(10) VARCHAR_10 • Datentypen - Abbildung von SQL-Datentypen erfolgt auf die jeweils am besten passendsten XML-Datentypen - SQL meist restriktiver, daher weitere Einschränkungen der XML(Ziel-)Datentypen durch Fassetten VARCHAR(10) 249 <xs:simpleType name="VARCHAR_10" > <xs:restriction base="xs:string"> <xs:maxlength value="10"/> </xs:restriction> </xs:simpleType> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - Abbildungsvorschriften zwischen SQL und XML • SQL-Tabelle - Abbildung zu XML-Dokument (Inhalt) und XML-SchemaDokument (Datentypen) - angelehnt an generische inhaltsorientierte Zerlegung MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 <TEILNEHMER> <ROW> <MATRIKEL>4711</MATRIKEL> <NAME>Mustermann</NAME> <VORNAME>Max</VORNAME> <SEMESTER>5</SEMESTER> <STUDIENFACH>8</STUDIENFACH> </ROW> </TEILNEHMER> 250 XML-Schema XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - Abbildungsvorschriften zwischen SQL und XML • SQL-Schema und SQL-Katalog - werden zu einem XML-Schema abgebildet (ähnlich der Abbildung einer einzelnen Tabelle) - zusätzliche Ebene zur Behandlung mehrerer Tabellen in einem XML-Schema XMLSchema 251 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - relationaler Datentyp XML • dient der Speicherung von XML-Dokumenten als atomare Werte einer Spalte (opake Speicherung) XML • Inhalt ist entweder ein XML-Dokument oder NULL (wenn Tabellendefinition dies erlaubt) • Werte vom Typ XML sind nicht miteinander vergleichbar (auch nicht auf Gleichheit) 252 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen • Konstruktionsfunktionen (XML-Publishing) • Konvertierungsfunktionen • Funktion zur Auswertung von XML-Daten • Funktion zur Zerlegung von XML-Dokumenten in relationale Strukturen (XML-Decomposition) • Funktion zur XML-Schemavalidierung XMLSchema Auswertung Konvertierung XML-Decomposition SchemaValidierung XML XML-Publishing 253 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Konstruktionsfunktionen • XMLDOCUMENT (Inhalt) - erzeugt ein XML-Dokument in seiner intern codierten Form (≙ Wert des Typs XML) • XMLELEMENT (Name, [Attribute], Inhalt) - erzeugt ein Element mit speziellem Namen, Inhalt und optionaler Attributdefinition • XMLATTRIBUTES (Wert [AS Name]) - erzeugt für ein Element eine Menge von Attributen mit Attributwert und -name 254 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Konstruktionsfunktionen • XMLFOREST (Inhalt [AS Name], {Inhalt [AS Name]}) - erzeugt einen Wald (eine Sequenz) von mehreren attributlosen Elementen mit Name und Wert • XMLCOMMENT (Kommentartext) - erzeugt einen XML-Kommentar • XMLPI (Verarbeitungsanweisungstext) - erzeugt eine XML-Verarbeitungsanweisung 255 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Konstruktionsfunktionen • XMLCONCAT (Inhalt, {Inhalt}) - erzeugt eine Sequenz aus beliebig vielen XML-Inhalten • XMLAGG (XML-Ausdruck) - aggregiert ein mehrzeiliges Ergebnis eines XML-Ausdrucks zu einem Wert 256 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Konstruktionsfunktionen • Beispiele MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 SELECT XMLELEMENT(NAME "TEILNEHMER", XMLELEMENT(NAME "ROW", XMLFOREST( MATRIKEL, NAME, VORNAME, SEMESTER, STUDIENFACH ) ) ) FROM TEILNEHMER 257 <TEILNEHMER> <ROW> <MATRIKEL>4711</MATRIKEL> <NAME>Mustermann</NAME> <VORNAME>Max</VORNAME> <SEMESTER>5</SEMESTER> <STUDIENFACH>8</STUDIENFACH> </ROW> </TEILNEHMER> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Konstruktionsfunktionen • Beispiele MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 4736 Normalverbraucher Otto 6 10 SELECT XMLELEMENT(NAME "TEILNEHMER", XMLAGG( XMLELEMENT(NAME "ROW", XMLFOREST( MATRIKEL, NAME, VORNAME, SEMESTER, STUDIENFACH ) ) ) ) FROM TEILNEHMER; 258 <TEILNEHMER > <ROW> <MATRIKEL>4711</MATRIKEL> <NAME>Mustermann</NAME> <VORNAME>Max</VORNAME> <SEMESTER>5</SEMESTER> <STUDIENFACH>8</STUDIENFACH> </ROW> <ROW> <MATRIKEL>4711</MATRIKEL> <NAME>Mustermann</NAME> <VORNAME>Max</VORNAME> <SEMESTER>5</SEMESTER> <STUDIENFACH>8</STUDIENFACH> </ROW> </TEILNEHMER> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Konstruktionsfunktionen • Beispiele MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 SELECT XMLELEMENT(NAME "teilnehmer", XMLATTRIBUTES( MATRIKEL AS "matrikel" ), XMLFOREST( NAME AS "name", VORNAME AS "vorname", SEMESTER AS "semester", STUDIENFACH AS "studienfach" ) ) FROM TEILNEHMER 259 <teilnehmer matrikel="4711"> <name>Mustermann</name> <vorname>Max</vorname> <semester>5</semester> <studienfach>8</studienfach> </teilnehmer> XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Konvertierungsfunktionen • XMLCAST (Wert, Zieldatentyp) - transformiert einen Wert in einen Zieldatentyp - entweder der Ausgangs- oder der Zieltyp muss vom Typ XML sein • XMLSERIALIZE (Inhalt, Zieldatentyp) - transformiert die interne Repräsentation eines XML-Dokuments in eine (menschenlesbare) textuelle Form (VARCHAR, CLOB, etc.) • XMLPARSE (XML-Dokument) - transformiert ein textuell repräsentiertes XML-Dokument in eine intern codierte (binäre) Form 260 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Funktion zur Auswertung • XMLQUERY (XQuery-Ausdruck {PASSING Spalte}) - wertet einen übergebenen XQuery-Ausdruck aus - über PASSING können dabei Spaltenwerte einbezogen werden ID XML_DATEN 1 <teilnehmer matrikel="4711"> <name>Mustermann</name><vorname>Max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> SELECT XMLQUERY( 'for $var1 in //teilnehmer return $var1/@matrikel' PASSING XML_DATEN ) AS ERGEBNIS FROM TEILNEHMER 261 ERGEBNIS 4711 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Funktion zur XML-Decomposition • XMLTABLE (Inhalt, {Inhalt}) - zerlegt („schreddert“) XML-Dokumente in relationale Strukturen anhand von XQuery-Ausdrücken ID XML_DATEN 1 <teilnehmer matrikel="4711"> <name>Mustermann</name><vorname>Max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> SELECT X.MATRIKEL, X.NAME, X.VORNAME, X.SEMESTER, X.STUDIENFACH FROM TEILNEHMER T, XMLTABLE( '$xml_daten/teilnehmer' PASSING T.XML_DATEN AS "xml_daten" COLUMNS MATRIKEL INTEGER PATH '@matrikel', NAME VARCHAR(20) PATH 'name', VORNAME VARCHAR(20) PATH 'vorname', SEMESTER INTEGER PATH 'semester', STUDIENFACH INTEGER PATH 'studienfach' ) X; 262 MATRIKEL NAME VORNAME SEMESTER STUDIENFACH 4711 Mustermann Max 5 8 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Verträglichkeit von SQL und XML – SQL/XML - XML-spezifische (SQL-)Funktionen – Funktion zur Schemavalidierung • XMLVALIDATE (XML-Dokument, XML-Schema) - validiert ein XML-Dokument (genauer gesagt eine beliebige XQuery-Sequenz) gegen ein XML-Schema - anschließende Gültigkeitsauskunft über VALID-Prädikat möglich XML 263 SchemaValidierung XMLSchema XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen IBM DB2 - von IBM entwickeltes und vertriebenes relationales DBMS - Ursprung geht zurück auf relationalen Prototyp „System R“ (1970er Jahre) - DB2 erstmalig 1983 für MVS (heute weiterentwickelt zu z/OS) veröffentlicht - verschiedene Produktlinien je nach Plattform • DB2 for z/OS („das große DB2“) • DB2 for LUW (Linux, Unix and Windows – „das kleine DB2“) • ... 264 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen pureXML – XML in DB2 - XML-Funktionalität in DB2 erstmals seit dem XML-Extender (ab Version 7) • Extender sind DB2 Softwareerweiterung, die spezielle funktionelle Erweiterung leisten • weitere DB2 Extender: Text Extender, Spatial Extender, etc. - zwei Varianten der XML-Speicherung durch den XML Extender • XML-Collection - inhaltsorientierte Zerlegung von XML-Dokumenten in relationale Strukturen über Dokumentzugriffsdefinitionen (DAD) • XML-Column - opake Speicherung von XML-Dokumenten als VARCHAR (XMLVARCHAR), CLOB (XMLCLOB) oder als externe Datei im Dateisystem (XMLFILE) 265 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen pureXML – XML in DB2 Anwendung XML-Speicherung als erweiterte Textablage Aufbau und Zerlegung von Dokumenten XML-Dokumente als Daten vom Typ XML in spezieller interner Struktur DB2 XML XML-Column XML-Collection pureXML 266 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen pureXML – XML in DB2 - pureXML-Technologie seit DB2 Version 9 fest integrierter Bestandteil des DBMS (sowohl in DB2 for LUW als auch in DB2 for z/OS*) - verspricht eine native („natürliche“) Speicherung von XML-Dokumenten in dem logischen Datentyp XML (vgl. SQL/XML) - Themenschwerpunkte • XML-Speicherstrukturen • XML-Schema-Management • Unterstützung für effiziente XML-Anfragen * Implementierung in beiden Systemen sehr ähnlich, bei Abweichungen beziehen sich die Ausführungen auf DB2 for z/OS 267 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Speicherstrukturen - Exkurs: Speicherstrukturen in relationalen DBMsen (am Beispiel von DB2) Datenbank Pagesets Tablespaces Tabellen (1 - n) Pages 268 Indexspaces Index (1) Pages XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Speicherstrukturen - Exkurs: Speicherstrukturen in relationalen DBMsen (am Beispiel von DB2) • LOB-Daten werden (ab einer gewissen Größe) außerhalb der (Basis-) Tabelle (Outline) gespeichert LOBRowID Spalte LOBWert n 1 BasisTabelle LOB n 1 (Basis-) Tablespaces 269 RowID Auxiliary Index LOBAuxiliaryTabelle 1 1 LOB-(Auxiliary-) Tablespaces XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Speicherstrukturen - die XML-Speicherstrukturen in DB2 sind denen der LOB-Speicherung sehr ähnlich, wenn auch etwas komplexer XMLDocID Spalte min_ XMLData NodeID n 1 BasisTabelle XML n 1 (Basis-) Tablespaces 270 DocID Doc-ID Index XMLAuxiliaryTabelle 1 1 XML Tablespaces XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Speicherstrukturen - im Gegensatz zu LOB-Daten werden XML-Dokumente nur bis zu einer bestimmten Größe (ca. 16 KB) innerhalb einer Zeile in der XML-AuxiliaryTabelle gespeichert - übersteigt ein XML-Dokument diese, wird es in kleinere Teilbäume zerlegt, die wiederum jeweils in eigenen Zeilen gespeichert werden XMLData Record 1 Record 2 Record 3 Proxy-Node 271 Kontext-Node XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Speicherstrukturen - die XML-spezifischen Verwaltungsstrukturen werden von DB2 implizit erstellt explizit zu erstellen Table Space „Daten001“ Tabelle „MeineTabelle“ rel. Spalten … XML Spalte 1 XML Spalte n DocID SYSIBM.SYSXMLRELS DocID DocID XMLData XML Aux Tabelle(n) „XMeineTabelle“ min_NodeID XML Table Space(s) 272 „XMei0000“ DocID XMLData „XMeineTabelle000“ min_NodeID „XMei0001“ DocID XMLData „XMeineTabelle…“ min_NodeID „XMei…“ XMLData „XMeineTabelleXXX“ (XXX ≙ n-2) min_NodeID „XMeiXXXX“ (XXXX ≙ n-1) XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Speicherstrukturen - Datenmanipulationen (INSERT, UPDATE, DELETE) auf den XML-Daten erfolgen analog zu anderen relationalen Daten - Inplace-Update (gezielte und effiziente Änderung von Dokumentteilen) in DB2 ab Version 10 durch Built-In Function XMLMODIFY möglich - unterstützend dazu Implementierung eines Versionskonzepts XMLDocID Spalte min_ NodeID XMLData START_TS n 1 BasisTabelle XML n 1 (Basis-) Tablespaces 273 DocID Doc-ID Index END_TS XMLAuxiliaryTabelle 1 1 XML Tablespaces XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Schema-Management - DB2 Version 9 • Unterstützung des Konzepts XML-Schema • Bereitstellung eines XML-Schema-Repositories (XSR) als Teil des Datenbankkatalogs • Schemavalidierungsfunktion DSN_XMLVALIDATE als Argument der XMLPARSE-Funktion - hoher Overhead durch (eigentlich unnötiges) Serialisieren und Parsen zum Zweck der Validierung XMLDokument Validierung und Parsen XMLParsen XML Serialisieren Tabelle 274 XMLSchema Ergebnis XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Schema-Management - DB2 Version 9 • spezielle Anforderungen an XML-Schema-Management... - Verknüpfung von XML-Dokument und XML-Schema - transparenter Automatismus zur Schemavalidierung - flexibler Umgang mit ungültigen XML-Dokumenten - Auskunft über Gültigkeit von XML-Dokumenten - nachträgliche XML-Schemavalidierung - - Unterstützung bei Schemaevolution ... bleiben weitgehend ungelöst (lassen sich aber manuell „nachbauen“) 275 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Schema-Management - DB2 Version 10 • (neue) DSN_XMLVALIDATE-Funktion - unabhängig von der XMLPARSE-Funktion verwendbar - akzeptiert auch bereits geparste XML-Daten als Input • XML type modifier - ermöglicht die Zuordnung von XML-Schemas (aus dem XSR) zu einer Spalte vom Datentyp XML - mehrere XML-Schema gleichzeitig zuordbar (XML-Dokumente müssen gegen mindestens ein XML-Schema gültig validieren) • XMLXSROBJECTID -Funktion - ermittelt die XSROBJECTID des XML-Schemas gegen das ein XML-Dokument validiert worden ist - falls keine Validierung stattgefunden hat ist das Ergebnis 0 276 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen XML-Schema-Management - DB2 Version 10 • spezielle Anforderungen an XML-Schema-Management... ermöglicht automatische XMLSchemavalidierung beim Einfügen und Ändern von XMLDokumenten Validierungsergebn is (erfolgreich bzw. nicht validiert) ermittelbar (inklusive XML-Schema) Verknüpfung von XML-Dokument und XML-Schema durch XML type modifier - Verknüpfung von XML-Dokument und XML-Schema - transparenter Automatismus zur Schemavalidierung - flexibler Umgang mit ungültigen XML-Dokumenten - Auskunft über Gültigkeit von XML-Dokumenten - nachträgliche XML-Schemavalidierung - Unterstützung bei Schemaevolution nachträgliche Zuordnung erlaubt, bewirkt CHECKpending Status und erfordert/„ermöglicht“ Nachvalidieren durch CHECK-Utility - ... sind weitgehend mit DB-Mitteln erfüllt Unterstützung bei Schemaevolution durch Versionierung von XMLSchemas (XML-Dokumente müssen mindestens gegen ein XML-Schema gültig validieren) Weiterentwicklungen 277 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Unterstützung für effiziente XML-Anfragen - über XMLQUERY-Funktion werden XML-Abfragesprachen gekapselt • XPath (ab DB2 Version 9) • XQuery (ab DB2 Version 10) - spezielle XML-Indexe • „Verwaltungsindexe“ (DocID-Index, NodeID-Index) zum effizienten Zugriff von Basistabelle auf XML-Auxiliary Tabellen • User-Defined-XML-Index - als reine Werteindexe - aufbauend auf „herkömmlichen“ relationalen Indexstrukturen CREATE INDEX MATRIKEL_IDX ON TEILNEHMER(XML_DATEN) GENERATE KEY USING XMLPATTERN '/teilnehmer/@matrikel' AS SQL DECFLOAT; 278 XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Unterstützung für effiziente XML-Anfragen - User-Defined-XML-Indexe nur zur Optimierung der Auswertung • der XMLTABLE-Funktion (Dekompositionsfunktion) und • des XMLEXISTS-Prädikats (vgl. EXISTS-Prädikat) - kein Einfluss auf die Abarbeitung der XMLQUERY-Funktion ID XML_DATEN 1 <teilnehmer matrikel="4711"> <name>Mustermann</name><vorname>Max</vorname> <semester>5</semester><studienfach>8</studienfach> </teilnehmer> SELECT XMLQUERY( 'data(//teilnehmer/@matrikel)' PASSING T.XML_DATEN ) AS MATRIKEL, X.NAME, X.VORNAME FROM TEILNEHMER T, XMLTABLE( '$xml_daten/teilnehmer' PASSING T.XML_DATEN AS "xml_daten" COLUMNS NAME VARCHAR(20) PATH 'name', VORNAME VARCHAR(20) PATH 'vorname' ) X WHERE XMLEXISTS('//teilnehmer[semester < 6]' PASSING T.XML_DATEN); 279 MATRIKEL NAME VORNAME 4711 Mustermann Max XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen pureXML - Bewertung - 280 Standardkonformität Dokumentenbehandlung Schema-Unabhängigkeit Strukturunabhängigkeit Schemavorgabe und Validierung Web-Anbindung und andere Protokolle Kodierung und Internationalisierung XML-spezifische Schnittstellen zur Datenabfrage und –manipulation offenes Inhaltsmodell Schema-Evolution unterschiedlich granulare Möglichkeiten zur Autorisierung Speicherung von Nicht-XML-Daten XML-Grundlagen, -Sprachen, -Datenhaltungsfragen XML in relationalen Datenbanksystemen Zusammenfassung 281 - XML ist nicht nur ein Datenaustausch sondern auch Datenspeicherformat und benötigt daher ein geeignetes Konzept zur Verwaltung von XML in Datenbanken, dass sowohl datenbank- als auch XML-spezifische Anforderungen erfüllt - es existieren verschiedene XML-Speichermodelle für Datenbanken: das monolithische, das fragmentorientierte und das dokumentorientierte Speichermodell - neben dedizierten XML-Datenbanken gibt es speziell für die Speicherung von XML in relationalen DBMS nochmals differenziertere Ansätze: inhaltsorientierte, strukturorientierte und opake XML-Speicherung - die Integration von XML in SQL (bzw. in relationale DBMS) ist standardisiert worden und unter dem Begriff SQL/XML in der SQL-Norm zu finden - DB2 ist eines der relationalen DBMS, dass bereits frühzeitig um XMLFunktionalitäten erweitert wurde und nun mit der pureXML-Technologie eine effiziente Speicher- und Verwaltungsform für XML-Dokumente bereitstellt, die sich am SQL/XML-Standard orientiert XML-Grundlagen, -Sprachen, -Datenhaltungsfragen