XML in relationalen Datenbanksystemen

Werbung
XML in relationalen Datenbanksystemen
XML-Abfragesprachen
XML-Schemasprachen
XPath
DTD
XQuery
XML-Transformationssprache
XML-Schema
XSLT
...
XML
Relationale
DBMS
204
XML in DBMS
Dedizierte
XML-DBMS
XML-Grundlagen, -Sprachen, -Datenhaltungsfragen
XML in relationalen Datenbanksystemen
4. XML in relationalen Datenbanksystemen
-
205
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
206
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, ...)
- ...
207
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,...)
208
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
209
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
210
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)
211
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)
212
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
213
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
214
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
215
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
216
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
217
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
218
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
219
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
220
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
221
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
222
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
223
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
224
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>
225
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
- ...
226
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
227
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
228
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
229
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
230
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
231
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 NULL,
NAME VARCHAR(1000) NOT NULL,
WERT VARCHAR(1000) NULL)
<!ELEMENT vorlesung (teilnehmer+)>
<!ATTLIST vorlesung titel CDATA #REQUIRED>
<!ELEMENT teilnehmer (name, vorname, semester,
studienfach)>
<!ATTLIST teilnehmer matrikel NMTOKEN #REQUIRED>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
232
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
233
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
234
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)
235
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
236
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
237
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 NULL)
<!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
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
239
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
240
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
241
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
242
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 Facetten
VARCHAR(10)
243
<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>
244
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
245
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)
246
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
247
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
248
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
249
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
250
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
251
<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;
252
<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
253
<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
254
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
255
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;
256
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
257
SchemaValidierung
XMLSchema
XML-Grundlagen, -Sprachen, -Datenhaltungsfragen
Herunterladen