Vortrag - HTW Dresden

Werbung
XML-Dokumente in
objektrelationalen
Datenbanksystemen
Meike Klettke
Universität Rostock
[email protected]
www.xml-und-datenbanken.de
1
Ein Titel ... und ein Untertitel
XML-Dokumente in objektrelationalen
Datenbanksystemen –
Wunschvorstellung der Speicherung,
Möglichkeiten in DB2 und Oracle,
Kombination von XQuery und SQL,
hybride Speicherung
Motivation
„ XML als Format zur Dokumentdarstellung existiert
seit 10 Jahren
„
„
„
„
als Schlagwort sehr populär (gewesen)
mittlerweile gibt es viele Anwendungen, die XML-Dokumente
erzeugen oder verwenden
häufig ist eine dauerhafte Speicherung notwendig
Datenbanksysteme wurde erweitert, um XML-Dokumente
verarbeiten zu können
... zur Popularität von XML ...
„ „XML is the ASCII of the 21th century.“
„ „XML is the ASCII of the Web“
(Henry Thompson, 1999)
„ It takes ten minutes to understand (base) XML, and then ten
month to understand the new technologies hung around it.
(Peter Chen)
„ warum wurde XML so populär?
„
„
„
einfach zu verstehen, leicht zu erlernen (Syntax von XMLDokumenten)
lesbar, selbstbeschreibend
damit prädestiniert als Austauschformat
... im Vortrag heute ...
Erweiterungen von Datenbankmanagementsystemen, um XMLDokumente zu speichern, anzufragen und zu verändern, dazu
1. Arten von XML-Dokumenten
2. Klassifikation von Speicherungsverfahren
1.
2.
3.
4.
3.
Realisierung in objekt-relationalen Datenbanksystemen
1.
2.
3.
4.
Speicherung als Ganzes und Indizierung
Speicherung der Graphstruktur
strukturierte Speicherung in Datenbanken
Hybride Verfahren
Speicherung
Anfragen in DB2 und Oracle
Updates und Schemaevolution
Einsatz und Verwendung dieser Speicherungsvarianten
1) Klassifikation von XMLDokumenten
Datenzentrierte Dokumente
strukturiert, regulär
Beispiele: Produktkataloge, Bestellungen,
Rechnungen
Dokumentzentrierte Dokumente
unstrukturiert, irregulär
Beispiele: wissenschaftliche Artikel,
Bücher, E-Mails, Webseiten
Semistrukturierte Dokumente
datenzentrierte und dokumentzentrierte
Anteile
Beispiele: Veröffentlichungen, Kundendaten
und Originalverträge, ...
<order>
<customer>Meyer</customer>
<position>
<isbn>1-234-56789-0</isbn>
<number>2</number>
<price currency=„Euro“>30.00</price>
</position>
</order>
<content>
XML builds on the principles of two existing
languages, <emph>HTML</emph> and
<emph>SGML</emph> to create a simple
mechanism ..
The generalized markup concept ..
</content>
<book>
<author>Neil Bradley</author>
<title>XML companion</title>
<isbn>1-234-56789-0</isbn>
<content>
XML builds on the principles of two existing
languages, <emph>HTML</emph> and ..
</content>
</book>
2) Anforderungen an die XMLSpeicherung
Nach (Fiebig, Kanne, Moerkotte)
„ Effektive Speicherung
„ Effizienter Zugriff auf XML-Dokumente oder Teile
davon
„
„
„
Unterstützung von XPath und XQuery
Unterstützung von SAX und DOM für Anwendungen
Transaktionsverwaltung
„ Wiederherstellbarkeit der Dokumente (oder der
Informationen aus den Dokumenten)
Speicherung von XML-Dokumenten
Als Dateien /
Clobs
Speicherung der
Dokumentstruktur
Strukturierte
Speicherung
in Datenbanken
Volltextindex
Abbildung der
Graphstruktur
Vollständiges
Mapping
Volltextindex
und XML-Index
Abbilden des
DOM-Modells
Benutzerdefiniertes
Mapping
Speicherung als Ganzes und
Volltextindizierung
Term
Element
nachricht
autor
nachname
Fürst
vorname
Christian
inhalt
ueberschrift
Vermarktungsfest
text
Wolfgang
…
<nachricht id="ID0001" bedeutung="4">
<autor autor_id="A0001">
<nachname>Fürst</nachname>
<vorname>Christian</vorname>
<agentur>dpa</agentur>
<e-mail>[email protected]</e-mail>
</autor>
<einordnung>
<rubrik>Mozartjahr 2006</rubrik>
…
<inhalt>
<ueberschrift>Ein Vermarktungsfest
</ueberschrift>
<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ..
</text>
</inhalt>
</nachricht>
• bekannte Methode (älter als relationale Datenbanken)
• Verfahren aus dem Bereich Information Retrieval
• Anfragen können linguistische Merkmale nutzen
(Stammwortsuche, Ähnlichkeitssuche)
• keine Auswertung von Markup in den Anfragen
Erweiterung um Pfadindex
Term
Verweis
Element
Fürst
Christian
Mozartjahr
Vermarktungsfest
Wolfgang
…
Element
Verweis
Ordnung
nachricht
1
autor
1
nachname
1
vorname
2
…
inhalt
3
ueberschrift
1
text
2
Vorgänger
<nachricht id="ID0001" bedeutung="4">
<autor autor_id="A0001">
<nachname>Fürst</nachname>
<vorname>Christian</vorname>
<agentur>dpa</agentur>
<e-mail>[email protected]</e-mail>
</autor>
<einordnung>
<rubrik>Mozartjahr 2006</rubrik>
…
<inhalt>
<ueberschrift>Ein Vermarktungsfest
</ueberschrift>
<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ..
</text>
</inhalt>
</nachricht>
• damit Auswertung von Markup in den Anfragen möglich
• XPath, XQuery
Speicherung von XML-Dokumenten
Als Dateien /
Clobs
Speicherung der
Dokumentstruktur
Strukturierte
Speicherung
in Datenbanken
Volltextindex
Abbildung der
Graphstruktur
Vollständiges
Mapping
Volltextindex
und XML-Index
Abbilden des
DOM-Modells
Benutzerdefiniertes
Mapping
2.2) Speicherung der
Graphstruktur, Grundprinzip/ 1
<nachricht id="ID0001" bedeutung="4">
<autor autor_id="A0001">
<nachname>Fürst</nachname>
<vorname>Christian</vorname>
<agentur>dpa</agentur>
<e-mail>[email protected]</e-mail>
</autor>
<einordnung>
<rubrik>Mozartjahr 2006</rubrik>
…
<inhalt>
<ueberschrift>Ein Vermarktungsfest
</ueberschrift>
<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ..
</text>
</inhalt>
</nachricht>
ID
Element
n001
Wert
Ordnung
Vorgänger
nachricht
1
-
n002
autor
1
h001
n003
nachname
Fürst
2
h001
n004
vorname
Christian
1
H002
n005
agentur
dpa
2
H002
n006
e-mail
fuerst@dpa
.de
3
h002
Element
Attribut
Typ
Wert
n001
id
xs:ID
ID0001
n001
bedeutung
xs:int
4
n002
autor_id
xs:ID
A0001
• generische Speicherung der XML-Dokumente
• werden mehrere XML-Dokumente in der Relation gespeichert, muss
noch eine ID des XML-Dokumentes in der Relation ergänzt werden
• kein Schema erforderlich
Alternative dazu: basierend auf
DOM (Document Object Model)
Empfehlung des W3C
DOMImplementation
Node
NodeList
NamedNodeMap
Attr
CharacterData
Comment
Text
CDataSection
beschreibt Schnittstellen
zum Zugriff auf XMLDokumente und zur
Veränderung von
Struktur und Inhalten
Document
DocumentFragment
DocumentType
Element
Entity
EntityReference
Notation
ProcessingInstruction
diese ist die Grundlage
für die persistente
Speicherung der
XML-Dokumente
Speicherung von XML-Dokumenten
Als Dateien /
Clobs
Speicherung der
Dokumentstruktur
Strukturierte
Speicherung
in Datenbanken
Volltextindex
Abbildung der
Graphstruktur
Vollständiges
Mapping
Volltextindex
und XML-Index
Abbilden des
DOM-Modells
Benutzerdefiniertes
Mapping
2.3) strukturierte Speicherung in
relationalen Datenbanken
„ Änderung des Datenbankschemas
nachricht:
<nachricht id="ID0001" bedeutung="4">
<autor autor_id="A0001">
<nachname>Fürst</nachname>
<vorname>Christian</vorname>
<agentur>dpa</agentur>
<e-mail>[email protected]</e-mail>
</autor>
<einordnung>
<rubrik>Mozartjahr 2006</rubrik>
…
<inhalt>
<ueberschrift>Ein Vermarktungsfest
</ueberschrift>
<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ..
</text>
</inhalt>
</nachricht>
id
bedeutung
autor
inhalt
ID0001
4
A0001
P0001
autor:
ID
autor_id
nachname
Vorname
agentur
e-mail
x00001
A0001
Fürst
Christian
dpa
fuerst@dpa.
de
inhalt:
ID
ueberschrift
text
y00001
Ein
Vermarktungsfest
Als Wolfgang Amadeus Mozart
im Alter von 35 Jahren starb, ..
• Abbildung der Struktur der XML-Dokumente auf Datenbankstruktur
• Schema erforderlich !!
Verwendung objekt-relationaler
Datenbanken
„ Änderung des Datenbankschemas
<nachricht id="ID0001" bedeutung="4">
<autor autor_id="A0001">
<nachname>Fürst</nachname>
<vorname>Christian</vorname>
<agentur>dpa</agentur>
<e-mail>[email protected]</e-mail>
</autor>
<einordnung>
<rubrik>Mozartjahr 2006</rubrik>
…
<inhalt>
<ueberschrift>Ein Vermarktungsfest
</ueberschrift>
<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ..
</text>
</inhalt>
</nachricht>
id
ID0001
• adäquatere Darstellung von
hierarchischen Informationen
• gut abbildbar: Sequenzen von
Elementen, Attribute
• schlecht abbildbar: mixed content
bedeutung
4
autor
...
autor_id
nachname
vorname
agentur
e-mail
A0001
Fürst
Christian
dpa
fuerst@
dpa.de
Problemfall bei der Abbildung:
Mixed Content
<text>Als <person>Wolfgang Amadeus Mozart</person> im Alter von 35 Jahren starb, war er
bettelarm. Jetzt, zu seinem 250. Geburtstag, zeigen insbesondere österreichische PRExperten, wie man mit dem Namen des Salzburger Genies Millionen machen kann: Das
<ereignis>Mozartjahr 2006</ereignis> ist zu einem Vermarktungsfest geworden, das der
österreichischen Fremdenverkehrsindustrie und anderen Unternehmen -nicht nur in der
Alpenrepublik -vermutlich mehrere hundert Millionen Euro zusätzlich in die Kassen bringen
wird.
</text>
Ordnung
#PCDATA
1
Als
2
3
ereignis
Wolfgang Amadeus
Mozart
im Alter von 35 Jahren starb, war er bettelarm. Jetzt,
zu seinem 250. Geburtstag, zeigen insbesondere
österreichische PR-Experten, wie man mit dem Namen
des Salzburger Genies Millionen machen kann: Das
4
5
person
Mozartjahr 2006
ist zu einem Vermarktungsfest geworden, das der
österreichischen Fremdenverkehrsindustrie und
anderen Unternehmen -nicht nur in der Alpenrepublik vermutlich mehrere hundert Millionen Euro zusätzlich
in die Kassen bringen wird.
Problemfall bei der Abbildung:
Mixed Content
Verwendung eines Attributes vom Typ XML
„ Beispiel: <!ELEMENT text (#PCDATA | person|
ereignis)*>
text
<text>Als <person>Wolfgang Amadeus Mozart</person> im
Alter von 35 Jahren starb, war er bettelarm. Jetzt, zu seinem
250. Geburtstag, zeigen insbesondere österreichische PRExperten, wie man mit dem Namen des Salzburger Genies
Millionen machen kann: Das <ereignis>Mozartjahr
2006</ereignis> ist zu einem Vermarktungsfest geworden, das
der österreichischen Fremdenverkehrsindustrie und anderen
Unternehmen -nicht nur in der Alpenrepublik -vermutlich
mehrere hundert Millionen Euro zusätzlich in die Kassen
bringen wird. </text>
Verwendung der
Speicherungsmethoden
Als Dateien /
Clobs
Speicherung der
Dokumentstruktur
Strukturierte
Speicherung
in Datenbanken
Volltextindex
Abbildung der
Graphstruktur
Vollständiges
Mapping
Volltextindex
und XML-Index
Abbilden des
DOM-Modells
Benutzerdefiniertes
Mapping
Für dokument-zentrierte XML-Dokumente
Für semistrukturierte XML-Dokumente
Für daten-zentrierte XML-Dokumente
Was ist native Speicherung?
Als Dateien /
Clobs
Speicherung der
Dokumentstruktur
Strukturierte
Speicherung
in Datenbanken
Volltextindex
Abbildung der
Graphstruktur
Vollständiges
Mapping
Volltextindex
und XML-Index
Abbilden des
DOM-Modells
Benutzerdefiniertes
Mapping
Textbasierte native Modellbasierte native
Speicherung
Speicherung
2.4) Hybride Ansätze
nachricht:
<nachricht id="ID0001" bedeutung="4">
<autor autor_id="A0001">
<nachname>Fürst</nachname>
<vorname>Christian</vorname>
<agentur>dpa</agentur>
<e-mail>[email protected]</e-mail>
</autor>
<einordnung>
<rubrik>Mozartjahr 2006</rubrik>
…
<inhalt>
<ueberschrift>Ein Vermarktungsfest
</ueberschrift>
<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ..
</text>
</inhalt>
</nachricht>
id
bedeutung
autor
inhalt
ID0001
4
A0001
P0001
autor:
ID
autor_id
nachname
Vorname
x00001
A0001
Fürst
Christian
...
<inhalt>
<ueberschrift>Ein Vermarktungsfest
</ueberschrift>
<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ..
</text>
</inhalt>
„ für daten- als auch dokumentzentrierte Anteile
„ Auswahl unterschiedlicher Speicherungsmethoden für verschiedene
Dokumentanteile
3) Realisierung in
objektrelationalen Datenbanken
„ verschiedene Speicherungsmöglichkeiten werden
unterstützt:
„ Speicherungsmöglichkeiten bei Oracle:
„ DB2:
Abbildung nach Ulrike Schwinn,
Oracle
Realisierung in objektrelationalen
Datenbanken
Abbildung: DB2,
aus einem Artikel
von Holger Seubert
3.1) Verwenden des XML-Typs
„ XML als nativer Datentyp, kann einzelnen Attributen
zugeordnet sein
„ Beispiel:
create table nachricht
( id integer not null primary key,
titel varchar(30) not null,
autor varchar(30) not null,
datum date,
agentur varchar(10),
text xml,
kontext xml );
„ also hybride Speicherung
Werte einfügen
insert into nachricht values(1, 'Ein Vermarktungsfest',
'Christian Fürst', '2006-12-12', 'dpa', '<text>Als Wolfgang
Amadeus Mozart im Alter von 35 Jahren starb, war er
bettelarm. Jetzt, zu seinem 250. Geburtstag, zeigen
insbesondere österreichische PR-Experten, wie man mit dem
Namen des Salzburger Genies Millionen machen kann...
</text>',
'<einordnung>
<ort>
<land>Österreich</land>
<stadt>Salzburg</stadt>
<stadt>Wien</stadt>
</ort>
<zeit> ... </zeit>
<rubrik>Festakte</rubrik>
<kategorie>Mozart</kategorie>
<kategorie>Musik</kategorie>
<kategorie>Kultur</kategorie>
</einordnung>');
es erfolgt: Test auf Wohlgeformtheit
Gültigkeitstest beim Einfügen von
Werten
Test auf Gültigkeit ist möglich:
„ dazu Schemazuordnung
REGISTER XMLSCHEMA
http://www.informatik.uni-rostock/~meike/testschema_text.xsd
FROM /users/db01/meike/public_html/testschema_text.xsd
AS text_schema COMPLETE;
insert into nachricht values(1, 'Ein Vermarktungsfest',
'Christian Fürst', '2006-12-12', 'dpa', XMLVALIDATE (
XMLPARSE(document '<text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, war er bettelarm. Jetzt, zu
seinem 250. Geburtstag, zeigen insbesondere österreichische
PR-Experten, wie man mit dem Namen des Salzburger Genies
Millionen machen kann... </text>' )
ACCORDING TO XMLSCHEMA ID text_schema)), ...
);
3.2) Anfragen
„ Anfragesprache für relationale: SQL
„ Anfragesprache für XML-Dokumente: XQuery
„ Anfragemöglichkeiten (Kombination dieser Anfragen):
„
„
„
„
SQL
SQL mit eingebettetem XQuery
XQuery
XQuery mit eingebettetem SQL
„ Verwendung von build-in-functions zum Zugriff auf
die XML-Anteile bzw. SQL-Anteile
„ Zugriff auf die XML-Anteile über build-in-functions
innerhalb von SQL-Anweisungen
„ Dazu verfügbare build-in-functions (für die Einbettung
von XQuery in SQL):
„
„
„
„
xmlquery
xmlexists
xmltable
...
„ Ergebnis der build-in-functions:
„
„
„
„
Relation (xmltable) oder
Wert (contains, xmlexists, xmlquery)
XML-Element (XMLELEMENT)
XML-Attribut (XMLATTRIBUTE)
Relationale Anfragen /1
select * from nachricht;
select titel, text from nachricht;
Liefert als Ergebnis:
TITEL
TEXT
-----------------------------------------------------------Ein Vermarktungsfest <text>Als Wolfgang Amadeus Mozart im
Alter von 35 Jahren starb, ... </text>
Mozartjahr eröffnet
<text>Mit einem Fest für Mozart haben
Salzburg und Wien am ... </text>
Relationale Anfragen /2
„ In den Anfragen werden XML-Attribute nur als “Ganzes”
behandelt, das heißt vollständig ausgegeben oder vollständig in
Bedingungen verglichen
„ Will man Bedingungen an die XML-Attribute formulieren, lässt
sich die Funktion contains einsetzen, Beispiel:
select titel
from nachricht
where contains(text, 'Mozart')=1;
„ DB2 Net Search Extender muss dafür verfügbar sein,
„ unterstützt werden:
„ Schlüsselwortsuche,
„ Stammwortsuche,
„ fuzzy search in 37 Sprachen, ..
SQL mit eingebetteten XQueryAnfragen /1
select titel,
xmlquery(
'for $e in $i/einordnung/ort/stadt/text()
return $e' passing kontext as "i ")
as Ortsbezug
from nachricht;
„ Ergebnis:
„ TITEL
-------------------Ein Vermarktungsfest
ORTSBEZUG
------------------------------Salzburg Wien Augsburg
Mozartjahr eröffnet
Salzburg Wien Augsburg
SQL mit eingebetteten XQueryAnfragen /2
„ Verwendet wird also eine Funktion xmlquery,
„
„
die als Eingabeparameter eine XQuery-Anfrage hat, weiterer
Parameter beschreibt die Belegung einer XQuery-Variablen
mit einem Datenbankattribut
Ergebnis der Funktion ist ein Wert (String), der als Attribut
ausgegeben wird
XQuery-Anfragen /1
xquery
for $e in db2-fn:xmlcolumn('NACHRICHT.KONTEXT')
where $e/einordnung/ort/stadt/text()="Wien"
return $e;
„ Anmerkung:
Großschreibung der Bezeichnungen VORLESUNG und INHALT
notwendig, sonst werden Relation und Attribut nicht gefunden
XQuery-Anfragen /2
Ergebnis:
1
----------------------------------------------------------<einordnung><ort><land>Österreich</land><land>Deutschland</
land><stadt>Salzburg</stadt><stadt>Wien</stadt><stadt>Augsb
urg</stadt></ort><zeit><datum>2006-0127</datum></zeit><rubrik>Festakte</rubrik><kategorie>Mozart
</kategorie><kategorie>Musik</kategorie><kategorie>Kultur</
kategorie></einordnung>
<einordnung><ort><land>Österreich</land><land>Deutschland</
land><stadt>Salzburg</stadt><stadt>Wien</stadt><stadt>Augsb
urg</stadt></ort><zeit><datum>2006-0127</datum></zeit><rubrik>Festakte</rubrik><kategorie>Mozart
</kategorie><kategorie>Musik</kategorie><kategorie>Kultur</
kategorie></einordnung>
XQuery-Anfragen /3
xquery
for $e in db2-fn:xmlcolumn('NACHRICHT.KONTEXT')
where $e/einordnung/ort/stadt/text()="Wien"
return $e;
„ Innerhalb dieser Anfrage ist eine Funktion zu sehen:
db2-fn:xmlcolumn,
„
„
Hat als Parameter die Angaben zu (Owner.)Relation.Attribut
Liefert den Inhalt des Attributes als Ergebnis, es muss ein
Attribut vom Typ XML sein
XQuery-Anfragen /4
Verwendung eines etwas komplexeren Beispiels mit Pfadausdrücken
xquery
for $e in
db2-fn:xmlcolumn('NACHRICHT.TEXT')[person/text()=
"Wolfgang Amadeus Mozart"]
return $e;
Ergebnis:
1
--------------------------------------------------<text>Jedes Jahr ist Mozartjahr. ... Aber nicht um
isoliertes, unreflektiertes Feiern des 250.
Geburtsjahres <person>Wolfgang Amadeus Mozart</person>
sollte und durfte es beim WIENER MOZARTJAHR 2006 gehen,
sondern um einen neuerlichen Versuch, sich dem „Wunder
Mozart“ (Goethe) von verschiedenen Seiten zu nähern und
gleichzeitig, mit seiner Hilfe, ... </text>
XQuery mit eingebetteten SQLAnfragen
„ man kann auch Anfragen stellen,
„
die XQuery-Anfragen sind und
über build-in-functions auf relationale Anteile zugreifen
„
dazu jetzt ein Beispiel
„
XQuery mit eingebetteten SQLAnfragen
xquery for $n in db2-fn:sqlquery("select einordnung
from nachricht where agentur='dpa‘ ")
where $n[//land/stadt/text()="Wien"] return $n;
Ergebnis:
1
----------------------------------------------------<einordnung><ort><land>Österreich</land><land>Deutschland</
land><stadt>Salzburg</stadt><stadt>Wien</stadt><stadt>Augsb
urg</stadt></ort><zeit><datum>Freitag, 27. Januar
2006</datum><uhrzeit>String</uhrzeit><zeitzone>String</zeit
zone></zeit><rubrik>Festakte</rubrik><kategorie>Mozart</kat
egorie><kategorie>Musik</kategorie><kategorie>Kultur</kateg
orie></einordnung>
Auch möglich: Verwendung von XQuery
zur Anfrage relationaler Daten
xquery
for $x in db2-fn:sqlquery ("select XMLELEMENT(NAME
""headline"", XMLATTRIBUTES(id AS ""id""), titel)
from nachricht")
for $y in db2-fn:sqlquery ("select XMLELEMENT(NAME
""nachrichtenagentur"", XMLATTRIBUTES(id AS
""id""), agentur) from nachricht")
where (contains($x/text(), 'Mozart')) and
(contains($y/text(), 'spiegel')) and
($x/@id=$y/@id)
return <klassiknachricht>{$x} </klassiknachricht>;
Verwendung von XQuery zur
Anfrage relationaler Daten /2
Ergebnis:
1
---------------------------------------------<klassiknachricht><headline id="2">Mozartjahr
eröffnet</headline></klassiknachricht>
Verwendung von SQL
Verwendung:
„ Zur Anfrage relationaler Attribute
„ Soll XML-Attribut als Ganzes ausgegeben werden
und ist zur Suche auf den XML-Attributen
Volltextsuche ausreichend
„ dann eignet sich diese Variante
Nicht realisierbar:
„ Anfragen auf den XML-Attributen (XPath, XQuery)
Verwendung von SQL mit
eingebettetem XQuery
„ Verwendung:
„
„
„
überwiegend relationale Daten und wenig XMLFunktionalität, die ergänzt werden muss
geeignet, wenn Anfragen gleichzeitig auf relationale Daten
und XML-Daten zugreifen
wenn Volltextsuchanfragen notwendig sind
„ wenn Entwickler SQL bevorzugen
Verwendung von XQuery
Verwendung:
„ reine XML-Anwendungen
„ verfügbare XQuerys können mit nur geringen
Änderungen (db2-fn:xmlcolumn() statt collection() )
verwendet werden
„ wenn das Ergebnis XML sein soll
„ kann joins zwischen XML-Dokumenten ausdrücken
„ bisher keinen Volltextunterstützung
„ keine Verwendung von user-defined functions
Verwendung von XQuery mit
eingebettetem SQL
„ effizient bei Verwendung auf XML-Daten,
„ ineffizient, wenn relationale Daten und XML-Daten
zusammen ausgewertet werden
„ Volltextsuche möglich (über contains)
„ keine Joins zwischen relationalen Attributen und
XML-Attributen
Oracle: XML-Unterstützung /1
„ XMLType statt XML
„ Anfragen ebenfalls über Funktionen realisiert, andere
Bezeichnungen:
„
„
„
ExtractValue
extract
existsNode
„ im Create Table kann einem XML-Attribut ein
Schema zugeordnet sein
Oracle: XML-Unterstützung /2
„ Update von XML-Dokumenten ist hier möglich,
Funktionen dazu:
„
„
„
„
„
UpdateXML
insertChildXML
insertXMLbefore
appendChildXML
deleteXML
im Fall einer Schemazuordnung:
partielle Validierung
3.3) Update
„ Updatesprache (also XQuery-Erweiterung) beim
W3C als Working Draft
„ Update von
„
„
Werten und
Struktur in den XML-Dokumenten
„ bisher nicht in DB2 umgesetzt: nur Update des
gesamten XML-Attributes, Revalidierung möglich
„ in Oracle: Update von XML-Dokumenten möglich
über die function UPDATEXML
XQuery Update
„ Erster Sprachvorschlag vom 26. Januar 2006
„ Aktueller Working Draft vom 11. Juli 2006
„ Syntaxbeispiele:
„
„
„
do replace fn:doc("bib.xml")/books/book[1]/publisher with
fn:doc("bib.xml")/books/book[2]/publisher
do rename fn:doc("books.xml")/book/author as "editor“
do insert <year>2005</year> after
fn:doc("bib.xml")/books/book[1]/publisher
Updates von Struktur
Abweisen von Updates,
die die Gültigkeit verletzen
Schema
„
Realisierung:
„
XMLDokumente
Abweisen der
Operation
Update
(Strukturänderung)
„
„
„
Validierung gegen das
Schema vor Umsetzung des
Updates
bei Verletzung der Gültigkeit
wird Operation abgewiesen
alle gespeicherten XMLDokumente sind
schemakonform
nicht alle Updates können
umgesetzt werden
Updates von Struktur
„ 1. Schritt: Update wird abgewiesen (Schemaverletzung)
„ 2. Schritt: manuelle Schemaevolution
„ 3. Schritt: Update (sofern Schemaevolution richtig war)
Update
Manuelle Schemaevolution durch
den Anwender
Adaption der XML-Dokumente
Update
Bewertung
„ Realisierung:
„
„
„
„
Validierung gegen das Schema vor Umsetzung des Updates
Manuelle Schemaevolution erforderlich
Adaption der XML-Dokumente
Updateoperation wird abgewiesen, Schemaveränderung muss
durch den Anwender erfolgen, Update erneut durchführen
„ Einsatz: In allen Systemen möglich, die
„
„
„
Updates realisieren können
Updates, die die Gültigkeit verletzen, ablehnen und
Schemaevolution unterstützen
Updates von Struktur, Variante 4
Durchführen von Updates, Veränderung des Schemas,
anschließender Evolutionsprozess
3 Evolution
Schema
2
XMLDokumente
1
Update
(Strukturänderung)
Neues Schema
?
Welche Schemaevolutionsschritte können
durch Updateoperationen
überhaupt erfolgen?
Verbindung zwischen
Schemaevolution und Updates
„ Schemaänderung,
„ Überprüfung und Anpassung der zugehörigen XML-
Dokumente
1 Evolution
Altes Schema
Neues Schema
2 Update
XMLDokumente
Veränderte
XML-Dokumente
Umsetzung der Schemaevolution
bei Oracle
Oracle: Schemaevolution seit Version 10g:
„ Speicherung der XML-Dokumente als CLOB:
Schemaevolution hat keine Auswirkungen, neue und
alte Dokumente werden in der gleichen Relation/ im
gleichen Attribut gespeichert
„ Objektrelationale Speicherung: 2 Fälle:
„
„
Alte Struktur soll neben der neuen weiterexistieren =
Versionierung
„ Anschließend existieren beide Speicherungsformen in
der DB (zum Beispiel in 2 Relationen)
Neue Struktur soll alte ersetzen
„ Dokumente entladen, transformieren, neu laden
„ in Oracle 10 automatisiert, Eingabeparameter: neues
Schema und XSL-Stylesheets
Schemaevolution in DB2
„ neue Version des Schemas als neues Schema registrieren
„ Bestimmen, welche Attribute mit dem alten Schema validiert wurden:
select xmlxsrobjectid(kontext) from nachricht where id=4;
1
-------------------11821949021857536
select objectname, schemaLocation from syscat.xsrobjects where
objectid=11821949021857536;
----------------------------------------------------------------------------------------------EINORDNUNG_SCHEMA3 http://www.informatik.uni-rostock/
/~meike/testschema_einordnung3.xsd
„ Update dieser Dokumente und Revalidieren mit dem neuen Schema
Zusammenfassung
„ Vorstellung der gegenwärtig vorhandenen Methoden
zur Speicherung und Anfrage von XML-Dokumenten
in DB2 und Oracle
„ Schwerpunkt: verschiedene Varianten zur
Anfragerealisierung
„ weiterhin gezeigt: XML-Dokumentvalidierung bei
Insert und Update
„ offene Punkte im Bereich XML-Update und XMLSchema-Evolution
Systeme, hybrid
„ Hybride Speicherungsverfahren werden durch
Datenbanksysteme unterstützt, die mehrere
Speicherungsmöglichkeiten für XML-Dokumente
anbieten.
„ Oracle
„
„
Speicherung eines XMLType in relationalen Datenbanken
Anfragen realisierbar
„ DB2
„
„
„
Speicherung von XML-Dokumenten als Attribut vom Typ
XML in relationalen Datenbanken
Anfragen realisierbar
Updates bisher nur Austausch der gesamten XMLDokumente
Vorschläge für die Diskussion
Technology Hype
Popularität
(Häufigkeit der
Verwendung) Gipfel der
übersteigerten
Erwartungen
Anstieg zur
Wiederauferstehung
Tal der Ernüchterung
Ebene der
Produktivität
Zeit
5) Verwendung dieser Methoden
„ Verwendung von XML-Typen in Datenbanken
„ Verwendung der Anfragevarianten
„ Verwendung der Validierung
„ Verwendung der Updatefunktionen
„ XML-Schemaevolution
?
Literatur /1
„ www.ibm.com
„ Matthias Nicola, Fatma Ozcan: pureXML in DB2 9: Which way to
query your XML data?
http://www.ibm.com/developerworks/db2/library/techarticle/dm0606nicola/, Juni 2006
„ Holger Seubert: XML-Indizierung, Update und SchemaVerwaltung mit DB2 9,
http://entwickler.de/zonen/portale/psecom,id,101,online,1037,p,0.h
tml
„ www.oracle.com
„ Ulrike Schwinn (Oracle): XML in der Oracle Datenbank „relational
and beyond“, BTW 2003
„ Meike Klettke, Holger Meyer, XML and databases, dpunkt.verlag,
2003
„ Meike Klettke, Holger Meyer: http://www.xml-und-datenbanken.de
Literatur /2
„ Igor Tatarinov, Zachary G. Ives, Alon Y. Halevy, Daniel S. Weld,
Updating XML, Proceedings of the ACM SIGMOD International
Conference on Management of Data, 2001
(Syntax einer Updatesprache, basierend auf XQuery)
„ Patrick Lehti: Design and Implementation of a Data Manipulation
Processor for an XML Query Language, DA, TU Darmstadt, 2001
„ Hong Su, Diane K. Kramer, Elke A. Rundensteiner, XEM: XML
Evolution Management, Computer Science Technical Report
Series, Worchester Polytechnic Institute, WPI-CS-TR-02-09
„ Béatrice Bouchou, Denio Duarte, Mírian Halfeld Ferrari Alves,
Dominique Laurent and Martin Musicante: Schema Evolution for
XML: A Consistency-preserving Approach. 29th International
Symposium, Mathematical Foundations of Computer Science
MFCS 2004
Literatur /3
„ Meike Klettke, Holger Meyer, Birger Hänsel: Evolution --- The
Other Side of the XML Update Coin. 2nd International Workshop
on XML Schema and Data Management (XSDM), Tokyo, April
2005
„ Christian Will: Ableitung von Schemaevolutionsschritten aus XMLUpdateoperationen, Studienarbeit, Fakultät für Informatik und
Elektrotechnik, 2006
Herunterladen