Datenbankadministration

Werbung
Datenbankadministration
9. XML und XQuery
AG DBIS University of Kaiserslautern, Germany
Karsten Schmidt [email protected]
(Vorlage TU-Dresden)
Wintersemester 2008/2009
K. Schmidt
9. XML und XQuery
XML in DB2
XML in DB2 vor Version 9
als CLOB
mit XML-Extender: Dekomposition von XML-Dokumenten auf
relationale Tabellen
XML in DB2 ab Version 9
Datentyp XML für wohlgeformte XML-Dokumente
internes Speicherformat
hierarchische Speicherung
Anfragen mittels XQuery, SQL oder Kombination
XML-Indizes
K. Schmidt
9. XML und XQuery
XQuery-Datenmodell und
XML-Schema
K. Schmidt
9. XML und XQuery
XQuery-Datenmodell
XQuery-Datenmodell (XDM)
Instanz des XDM: Sequenz
Sequenz: geordnete Sammlung von null oder mehreren
Elementen
Element: atomarer Wert, Knoten, komplettes XML-Dokument
atomarer Wert: definiert durch XML-Schema (xs:string,
xs:integer, xs:decimal, xs:date, . . . )
Knoten: Dokumentknoten, Elementknoten, Attributknoten,
Textknoten, . . .
Eigenschaften
keine Unterscheidung zwischen einelementiger Menge und dem
Element selbst
keine geschachtelten Sequenzen
Beispiele
(42, text“,<wichtig/>)
”
13
K. Schmidt
9. XML und XQuery
XML-Schema
XML-Schema
Informationen zur Struktur des XML-Dokuments
Art der Schachtelung von Elementen
Häufigkeit des Auftretens von Elementen
Attribute von Elementen
Datentyp und Wertebereich
kann aus mehreren XML-Schemadokumenten bestehen
XML-Schema Repository
Informationen zum Validieren und Verarbeiten von
XML-Dokumenten (XML-Schema, DTD, externe Objekte)
Katalogsicht SYSCAT.XSROBJECTS
XML-Schema registrieren
REGISTER XMLSCHEMA <schemaURI> FROM <contentURI> AS
<relationalIdentifier>
XML-Schema überprüfen, Registrierung abschließen
COMPLETE XMLSCHEMA <relationalIdentifier>
K. Schmidt
9. XML und XQuery
XML-Daten
K. Schmidt
9. XML und XQuery
Einfügen, Ändern und Löschen von XML-Daten
Einfügen von XML-Daten
Validierung optional
implizites oder explizites Parsen der Daten
Beispiele
INSERT INTO xmltab
(xmlcol) VALUES (’<doc>...</doc>’)
INSERT INTO xmltab (xmlcol) VALUES ( XMLVALIDATE
(XMLPARSE (DOCUMENT ’<doc>...</doc>’) ACCORDING TO
XMLSCHEMA ID myschema))
Ändern von XML-Daten
keine Änderungen an XML-Dokumenten möglich → gesamtes
XML-Dokument ersetzen
Löschen von XML-Daten
Spaltenwert auf NULL setzen
K. Schmidt
9. XML und XQuery
Austausch von XML-Daten
Import von XML-Daten
Validierung optional
kein LOAD möglich
XML-spezifische Optionen für IMPORT
Pfad zu XML-Daten: XML FROM <xml-path>
Datentyp: MODIFIED BY XMLCHAR
weitere: XMLPARSE, XMLVALIDATE
Export von XML-Daten
separate Speicherung der XML-Daten
Ersetzen der XML-Daten durch XML-Kennung (XML Data
Specifier )
XML-spezifische Optionen für EXPORT
Speicherpfad für XML-Daten: XML TO <xml-path>
Datentyp: MODIFIED BY XMLCHAR
weitere: XMLFILE, XMLSAVESCHEMA
K. Schmidt
9. XML und XQuery
XML-Funktionen
XML-Funktionen
XMLPARSE
Zeichendaten, Binärdaten → XDM
XMLSERIALIZE
XDM → Zeichendaten, Binärdaten
XMLVALIDATE
Gültigkeitsprüfung von Struktur, Inhalt und Datentypen eines
XML-Dokuments
nur für XML-Schema (nicht DTD)
XMLCAST
Datentypkonvertierung zwischen XML- und SQL-Datentypen
XMLEXISTS
Überprüfung, ob XQuery-Ausdruck nicht-leere Sequenz
zurückgibt
K. Schmidt
9. XML und XQuery
XQuery
K. Schmidt
9. XML und XQuery
XQuery
XQuery
vom W3C standardisierte XML-Anfragesprache
eigenständige Anfragesprache in DB2
Einbettung in und von SQL möglich
XQuery vs. SQL
Datenmodell
Ergebnisse
Groß-/Kleinschreibung relevant
NULL-Werte
XQuery
hierarchisch,
geordnet
Sequenz von XMLDaten
ja
SQL
flach,
mengenorientiert
Menge verschiedener
SQL-Datentypen
nein
nein
ja
K. Schmidt
9. XML und XQuery
XPath
XPath
Bestandteil von XQuery
Navigation durch XML-Dokument
Beispiele
alle EMail-Adressen aller Kunden
<Client id=‘‘...’’>
<email>...</email>
<Address>
<city>...</city>
<state>...</state>
</Address>
</Client>
/Client/email
erste EMail-Adresse des Kunden mit der ID 123
/Client[@id=‘‘123’’]/email[1]
alle EMail-Adressen aller Kunden aus Kalifornien
/Client[Address/state=‘‘CA’’]/email
/Client/Address[state=‘‘CA’’]/../email
alle Städte unterhalb des direkten Kinderknotens aller Kunden
/Client/*/city
alle EMail-Adressen imgesamten XML-Dokument
//email
K. Schmidt
9. XML und XQuery
FLWOR
FLWOR
komplexe Anfragen an XML-Dokumente
for: Iteration durch Eingabesequenz, Variablenbindung bei jedem
Durchlauf
let: Variablendeklaration und Wertzuweisung (keine Iteration!)
where: Filter
order by: Sortierung
return: Ergebniskonstruktion
Beispiele
for $i in (1,2,3) return <out>{$i}</out>
→ <out>1</out>, <out>2</out>, <out>3</out>
let $i := (1,2,3) return <out>{$i}</out>
→ <out>1 2 3</out>
for $i in (3,2,1) where $i>1 order by $i return
<out>{$i}</out>
→ <out>2</out>, <out>3</out>
K. Schmidt
9. XML und XQuery
Beispiel
Tabelle person
firstname
Kathy
Larry
lastname
Smith
Menard
age
32
45
address
...
...
XML-Dokumente mit Adressinformation
<address country=‘‘canada’’>
<street>25 East Creek</street>
<city>Markham</city>
<phone type=‘‘home’’>905-555-7258</phone>
<email>[email protected]</email>
</address>
K. Schmidt
9. XML und XQuery
XQuery als eigenständige Anfragesprache
XQuery als eigenständige Anfragesprache
Kennzeichnung durch Schlüsselwort XQUERY
Eingabedaten für XQuery mittels db2-fn:xmlcolumn
Achtung: Tabellen- und Spaltennamen in Großbuchstaben
Beispiel
Telefonnummern aller Personen aus Markham
XQUERY
for $addr in db2-fn:xmlcolumn
(’PERSON.ADDRESS’)/address
where $addr/city = ‘‘Markham’’
return $addr/phone
oder kurz:
XQUERY db2-fn:xmlcolumn
(’PERSON.ADDRESS’)/address[city =
‘‘Markham’’]/phone
K. Schmidt
9. XML und XQuery
SQL in XQuery
SQL in XQuery
eingebettete SQL-Anfrage mittels db2-fn:sqlquery
SQL-Anfrage muss XML-Daten zurückliefern
Maskierung einfacher Anführungszeichen erforderlich
Beispiel
Telefonnummer von Kathy Smith
XQUERY let $phone := db2-fn:sqlquery (’
SELECT address
FROM person
WHERE firstname = ‘‘Kathy’’ AND
lastname = ‘‘Smith’’
’)/address/phone/text()
return <kathysphone>{$phone}</kathysphone>
K. Schmidt
9. XML und XQuery
XQuery in SQL
XQuery in SQL
Projektion von XML-Daten in SQL-Anfrageergebnis mit
XMLQUERY
Erzeugen einer relationalen Tabelle aus XML-Daten mit XMLTABLE
Einschränkung der Ergebnismenge mit XMLEXISTS
Beispiel
Name und Telefonnummer aller Personen über 40, für die eine
EMail-Adresse angegeben ist
SELECT firstname, lastname, XMLQUERY (’
$doc/address/phone’
passing address as ‘‘doc’’ ) as phone
FROM person
WHERE age > 40
AND XMLEXISTS (’$doc/address/email’ passing address
as ‘‘doc’’)
K. Schmidt
9. XML und XQuery
XML-Indizes
K. Schmidt
9. XML und XQuery
XML-Indizes
XML-Indizes
auf Komponente des XML-Dokumentes (nicht gesamte Spalte)
Identifizierung des zu indexierenden Teils durch XML-Muster
(eingeschränkter XPath-Ausdruck)
auf Elementen und Attributen möglich
auch // und * unterstützt
Angabe eines SQL-Datentypes für die indexierten Werte
erforderlich (DATE, TIMESTAMP, VARCHAR oder DOUBLE)
nur einzelne XML-Spalten indexierbar (keine zusammengesetzten
Indizes)
mehrere Indizes für eine XML-Spalte möglich
Beispiel
CREATE INDEX p_xml_idx ON person (address) GENERATE KEY
USING XMLPATTERN ’/address/@country’ AS SQL VARCHAR(20)
K. Schmidt
9. XML und XQuery
XML-Indizes
Bedingungen für Indexnutzung
Index auf komplexen Elementen möglich, aber Auswirkung auf
Anfrage
Beispiel:
<name>
CREATE INDEX ... USING
<first>Kathy</first> XMLPATTERN ’//name’ AS
<last>Smith</last>
SQL VARCHAR(50)
</name>
→ Prädikat muss [name=‘‘KathySmith’’] lauten
Index auf Textknoten → Anfrage nach Textknoten
Übereinstimmung des Datentyp des Literals eines Prädikates mit
Datentyp des Indexes → relevant für DOUBLE
/element[element = ‘‘value’’] → keine Indexnutzung
/element[element = value] → Indexnutzung
K. Schmidt
9. XML und XQuery
Anforderungen und Einschränkungen
Anforderungen
Unicode-Datenbank (UTF-8)
Einschränkungen
an XML-Spalten
nicht als Schlüssel verwendbar (z.B. Primär-, Fremdschlüssel,
eindeutige Schlüssel, . . . )
nicht in relationale Indizes
keine Standardwerte oder generierte Werte
...
an Datenbank
keine Partinionierung
keine Längenbeschränkung für XML-Spalten, aber für
serialsierte XML-Daten: 2GB
K. Schmidt
9. XML und XQuery
Zusammenfassung
XQuery-Datenmodell
Sequenzen, Elemente, Knoten
XML-Schema
Validierung von XML-Daten
DML und Austausch von XML-Daten
Besonderheiten im Umgang mit XML-Daten
XQuery
eigenständig oder eigebettet
XML-Indizes
Anfrageoptimierung mit Indizes auf XML-Dokumenten
weitere Informationen zum XQuery-Datenmodell,
XML-Schema, XPath und XQuery in den Vorlesungen
K. Schmidt
9. XML und XQuery
Herunterladen