Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO...

22
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

Transcript of Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO...

Page 1: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

Datenbankadministration9. 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

Page 2: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XML in DB2

XML in DB2 vor Version 9als CLOBmit XML-Extender: Dekomposition von XML-Dokumenten aufrelationale Tabellen

XML in DB2 ab Version 9Datentyp XML fur wohlgeformte XML-Dokumenteinternes Speicherformathierarchische SpeicherungAnfragen mittels XQuery, SQL oder KombinationXML-Indizes

K. Schmidt 9. XML und XQuery

Page 3: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XQuery-Datenmodell undXML-Schema

K. Schmidt 9. XML und XQuery

Page 4: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XQuery-Datenmodell

XQuery-Datenmodell (XDM)Instanz des XDM: SequenzSequenz: geordnete Sammlung von null oder mehrerenElementenElement: atomarer Wert, Knoten, komplettes XML-Dokumentatomarer Wert: definiert durch XML-Schema (xs:string,xs:integer, xs:decimal, xs:date, . . . )Knoten: Dokumentknoten, Elementknoten, Attributknoten,Textknoten, . . .

Eigenschaftenkeine Unterscheidung zwischen einelementiger Menge und demElement selbstkeine geschachtelten Sequenzen

Beispiele(42,

”text“,<wichtig/>)

13

K. Schmidt 9. XML und XQuery

Page 5: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XML-Schema

XML-SchemaInformationen zur Struktur des XML-Dokuments

Art der Schachtelung von ElementenHaufigkeit des Auftretens von ElementenAttribute von ElementenDatentyp und Wertebereich

kann aus mehreren XML-Schemadokumenten bestehen

XML-Schema RepositoryInformationen zum Validieren und Verarbeiten vonXML-Dokumenten (XML-Schema, DTD, externe Objekte)Katalogsicht SYSCAT.XSROBJECTS

XML-Schema registrieren

REGISTER XMLSCHEMA <schemaURI> FROM <contentURI> AS

<relationalIdentifier>

XML-Schema uberprufen, Registrierung abschließen

COMPLETE XMLSCHEMA <relationalIdentifier>

K. Schmidt 9. XML und XQuery

Page 6: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XML-Daten

K. Schmidt 9. XML und XQuery

Page 7: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

Einfugen, Andern und Loschen von XML-Daten

Einfugen von XML-DatenValidierung optionalimplizites oder explizites Parsen der DatenBeispiele

INSERT INTO xmltab

(xmlcol) VALUES (’<doc>...</doc>’)

INSERT INTO xmltab (xmlcol) VALUES ( XMLVALIDATE

(XMLPARSE (DOCUMENT ’<doc>...</doc>’) ACCORDING TO

XMLSCHEMA ID myschema))

Andern von XML-Datenkeine Anderungen an XML-Dokumenten moglich → gesamtesXML-Dokument ersetzen

Loschen von XML-DatenSpaltenwert auf NULL setzen

K. Schmidt 9. XML und XQuery

Page 8: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

Austausch von XML-Daten

Import von XML-DatenValidierung optionalkein LOAD moglichXML-spezifische Optionen fur IMPORT

Pfad zu XML-Daten: XML FROM <xml-path>

Datentyp: MODIFIED BY XMLCHAR

weitere: XMLPARSE, XMLVALIDATE

Export von XML-Datenseparate Speicherung der XML-DatenErsetzen der XML-Daten durch XML-Kennung (XML DataSpecifier)XML-spezifische Optionen fur EXPORT

Speicherpfad fur XML-Daten: XML TO <xml-path>

Datentyp: MODIFIED BY XMLCHAR

weitere: XMLFILE, XMLSAVESCHEMA

K. Schmidt 9. XML und XQuery

Page 9: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XML-Funktionen

XML-FunktionenXMLPARSE

Zeichendaten, Binardaten → XDM

XMLSERIALIZE

XDM → Zeichendaten, Binardaten

XMLVALIDATE

Gultigkeitsprufung von Struktur, Inhalt und Datentypen einesXML-Dokumentsnur fur XML-Schema (nicht DTD)

XMLCAST

Datentypkonvertierung zwischen XML- und SQL-Datentypen

XMLEXISTS

Uberprufung, ob XQuery-Ausdruck nicht-leere Sequenzzuruckgibt

K. Schmidt 9. XML und XQuery

Page 10: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XQuery

K. Schmidt 9. XML und XQuery

Page 11: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XQuery

XQueryvom W3C standardisierte XML-Anfragespracheeigenstandige Anfragesprache in DB2Einbettung in und von SQL moglich

XQuery vs. SQL

XQuery SQLDatenmodell hierarchisch, flach,

geordnet mengenorientiertErgebnisse Sequenz von XML- Menge verschiedener

Daten SQL-DatentypenGroß-/Kleinschrei- ja neinbung relevantNULL-Werte nein ja

K. Schmidt 9. XML und XQuery

Page 12: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XPath

XPathBestandteil von XQueryNavigation durch XML-Dokument

Beispielealle EMail-Adressen aller Kunden/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 Stadte unterhalb des direkten Kinderknotens aller Kunden/Client/*/city

alle EMail-Adressen imgesamten XML-Dokument//email

K. Schmidt 9. XML und XQuery

<Client id=‘‘...’’>

<email>...</email>

<Address>

<city>...</city>

<state>...</state>

</Address>

</Client>

Page 13: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

FLWOR

FLWORkomplexe Anfragen an XML-Dokumentefor: Iteration durch Eingabesequenz, Variablenbindung bei jedemDurchlauflet: Variablendeklaration und Wertzuweisung (keine Iteration!)where: Filterorder by: Sortierungreturn: Ergebniskonstruktion

Beispielefor $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

Page 14: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

Beispiel

Tabelle person

firstname lastname age addressKathy Smith 32 . . .

Larry Menard 45 . . .

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

Page 15: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XQuery als eigenstandige Anfragesprache

XQuery als eigenstandige AnfragespracheKennzeichnung durch Schlusselwort XQUERY

Eingabedaten fur XQuery mittels db2-fn:xmlcolumn

Achtung: Tabellen- und Spaltennamen in Großbuchstaben

BeispielTelefonnummern 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

Page 16: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

SQL in XQuery

SQL in XQueryeingebettete SQL-Anfrage mittels db2-fn:sqlquery

SQL-Anfrage muss XML-Daten zuruckliefernMaskierung einfacher Anfuhrungszeichen erforderlich

BeispielTelefonnummer 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

Page 17: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XQuery in SQL

XQuery in SQLProjektion von XML-Daten in SQL-Anfrageergebnis mitXMLQUERY

Erzeugen einer relationalen Tabelle aus XML-Daten mit XMLTABLEEinschrankung der Ergebnismenge mit XMLEXISTS

BeispielName und Telefonnummer aller Personen uber 40, fur die eineEMail-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

Page 18: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XML-Indizes

K. Schmidt 9. XML und XQuery

Page 19: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XML-Indizes

XML-Indizesauf Komponente des XML-Dokumentes (nicht gesamte Spalte)Identifizierung des zu indexierenden Teils durch XML-Muster(eingeschrankter XPath-Ausdruck)auf Elementen und Attributen moglichauch // und * unterstutztAngabe eines SQL-Datentypes fur die indexierten Werteerforderlich (DATE, TIMESTAMP, VARCHAR oder DOUBLE)nur einzelne XML-Spalten indexierbar (keine zusammengesetztenIndizes)mehrere Indizes fur eine XML-Spalte moglich

BeispielCREATE INDEX p_xml_idx ON person (address) GENERATE KEY

USING XMLPATTERN ’/address/@country’ AS SQL VARCHAR(20)

K. Schmidt 9. XML und XQuery

Page 20: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

XML-Indizes

Bedingungen fur IndexnutzungIndex auf komplexen Elementen moglich, aber Auswirkung aufAnfrageBeispiel:<name> CREATE INDEX ... USING

<first>Kathy</first> XMLPATTERN ’//name’ AS

<last>Smith</last> SQL VARCHAR(50)

</name>

→ Pradikat muss [name=‘‘KathySmith’’] lautenIndex auf Textknoten → Anfrage nach TextknotenUbereinstimmung des Datentyp des Literals eines Pradikates mitDatentyp des Indexes → relevant fur DOUBLE

/element[element = ‘‘value’’] → keine Indexnutzung/element[element = value] → Indexnutzung

K. Schmidt 9. XML und XQuery

Page 21: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

Anforderungen und Einschrankungen

AnforderungenUnicode-Datenbank (UTF-8)

Einschrankungenan XML-Spalten

nicht als Schlussel verwendbar (z.B. Primar-, Fremdschlussel,eindeutige Schlussel, . . . )nicht in relationale Indizeskeine Standardwerte oder generierte Werte. . .

an Datenbank

keine Partinionierung

keine Langenbeschrankung fur XML-Spalten, aber furserialsierte XML-Daten: 2GB

K. Schmidt 9. XML und XQuery

Page 22: Datenbankadministration - 9. XML und XQuery · (XMLPARSE (DOCUMENT ’...’) ACCORDING TO XMLSCHEMA IDmyschema)) Andern von XML-Daten keine Anderungen an XML-Dokumenten

Zusammenfassung

XQuery-DatenmodellSequenzen, Elemente, Knoten

XML-SchemaValidierung von XML-Daten

DML und Austausch von XML-DatenBesonderheiten im Umgang mit XML-Daten

XQueryeigenstandig oder eigebettet

XML-IndizesAnfrageoptimierung mit Indizes auf XML-Dokumenten

weitere Informationen zum XQuery-Datenmodell,XML-Schema, XPath und XQuery in den Vorlesungen

K. Schmidt 9. XML und XQuery