XML und Datenbanken

Werbung
XML und Datenbanken
Überblick
Was ist XML?
Mapping von Klassendiagramm (ERM) zu XML
• Eine einfache Klasse
• Assoziationen mit niedriger Komplexität (1:1, 1:n)
• Assoziationen mit hoher Komplexität (m:n)
• Generalisierung/Spezialisierung
XML als Brücke zwischen verschiedenen Datenbanksystemen
XML in DB-Produkten
• Export aus Access
• Import in Access
XML-Datenbanken und XML als Schnittstelle
Karczewski
Datenbanken II
1
XML und Datenbanken
XML:
Überblick:
Ein weiterer Pfad
der Datenmodellierung?
XML model
XML
Database
nach Erbs 2003
Karczewski
Datenbanken II
2
XML und Datenbanken
Was ist XML?
• eXtensible Markup Language (XML)
• ungewöhnliche Modellierungstechnik: erst Daten, dann Schema
• Tags zur Strukturierung von Daten
• Ursprung: Standard Generalized Markup Language (SGML)
als Metasprache mit den Regeln:
• Jedes SGML-Dokument besteht aus logischen Elementen
• Jedes Element ist durch seinen Inhalt definiert
• Jedes Element ist Knoten eines Baumes
• Inhalt ist unabhängig von der Darstellung (z.B. Buch, Web)
• Struktur kann durch eine Typdefinition bestimmt werden (DTD)
Karczewski
Datenbanken II
3
XML und Datenbanken
SGML und XML:
SGML
SGML ist „presentation
oriented publishing“ (POP):
Kommunikationspartner
sind Menschen!
XML
Dokumentklasse
XML ist „message oriented
middleware“ (MOM):
Kommunikationspartner
sind Computer!
Dokument
als Instanz
Karczewski
Datenbanken II
4
XML und Datenbanken
Mapping von Klassendiagrammen (ERM) zu XML:
• Gezeigt wird für die wesentlichen Situationen in
Klassendiagrammen, wie diese in entsprechende XMLSchemata überführt werden können.
• Nicht alle Details werden dabei erläutert, sondern es wird
aufgezeigt, dass es verschiedene Wege zur Lösung gibt.
• Eine Standardisierung ist für diese Fälle (leider) noch nicht
abgeschlossen.
Karczewski
Datenbanken II
5
XML und Datenbanken
DTD-Mapping (eine einfache Klasse):
„Objekt“ Produkt als XML-File:
<Produkt>
<Nummer>106222</Nummer>
<Bezeichnung>Kanne</Bezeichnung>
<Groesse></Groesse>
<Fassungsvermoegen>1.20</Fassungsvermoegen>
<Preis>59.00</Preis>
<Funktion>1</Funktion>
<Foto>106222.IMG</Foto>
</Produkt>
„Klasse“ als Document Type Definition (DTD)
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Fassungsvermoegen (#PCDATA)>
…
<!ELEMENT Produkt (Nummer, Bezeichnung, Groesse,
Fassungsvermoegen, Preis, Funktion, Foto)>
<!ELEMENT Produkte (Produkt+)>
Karczewski
Datenbanken II
Menge von Objekten:
<Produkte>
<Produkt>
…
</Produkt>
<Produkt>
…
</Produkt>
</Produkte>
+ bedeutet 1..*
6
XML und Datenbanken
DTD-Mapping (Assoziationen mit niedriger Komplexität (1:n)):
Produkt
Dekor
- Bezeichnung : String
- Foto
: BLOB
0..1
- Nummer
: int
- Bezeichnung
: String
: double
0..* - Grösse
- Fassungsvermögen : double
ist versehen mit
- Preis
: double
- Funktion
: int
- Foto
: BLOB
+ getAnzVerkauft () : int
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Fassungsvermoegen (#PCDATA)>
<!ELEMENT Foto (#PCDATA)>
<!ELEMENT Funktion (#PCDATA)>
<!ELEMENT Groesse (#PCDATA)>
<!ELEMENT Nummer (#PCDATA)>
<!ELEMENT Preis (#PCDATA)>
<!ELEMENT Produkt (Nummer, Bezeichnung, Groesse,
Fassungsvermoegen, Preis, Funktion, Foto)>
<!ELEMENT Dekor (Bezeichnung, Foto, Produkt*)>
Karczewski
Datenbanken II
* bedeutet 0..*
7
XML und Datenbanken
DTD-Mapping ermöglich einfache reguläre Ausdrücke zur
Beschreibung der erlaubten XML-“Objekte“:
*
+
?
|
Karczewski
für 0 bis beliebig viele
für 1 bis beliebig viele
0 bis 1
als Symbol für Alternativen
Datenbanken II
8
XML und Datenbanken
XML-Schema-Mapping als Alternative zu DTD (Bsp: Produkt):
Karczewski
Datenbanken II
9
XML und Datenbanken
XML-Schema (Ausschnitt) mit min/max-Angaben:
<xs:element name="Dekor">
<xs:complexType>
<xs:sequence>
<xs:element ref="Produkt"
minOccurs="0" maxOccurs="unbounded"/>
…
</xs:sequence>
</xs:complexType>
</xs:element>
Karczewski
Datenbanken II
10
XML und Datenbanken
DTD-Mapping (Assoziationen mit hoher Komplexität (m:n)):
Markt
Produkt
- Nummer
: int
- Bezeichnung
: String
- Grösse
: double
- Fassungsvermögen : double
- Preis
: double
- Funktion
: int
- Foto
: BLOB
+ getAnzVerkauft () : int
1..*
0..*
- Bezeichnung
- Standort
- Termin von
- Termin bis
- URL
- Kategorie
- Ranking
- Standgebühr pro qm
+ getDauer () : int
: String
: String
: Date
: Date
: String
: int
: int
: double
Angebot
- Anzahl : int
Karczewski
Datenbanken II
11
XML und Datenbanken
DTDMapping
(Assoziationen mit
hoher
Komplexität (m:n))
XML-File:
3 Tags
werden
benötigt
wg. Attr.
bei WAA!
Karczewski
<?xml version="1.0" encoding="UTF-8"?>
<MaerkteUndProdukte>
<Maerkte>
<Markt Nr="M1">
<Bezeichnung>Krefelder Töpfermarkt</Bezeichnung>
…
</Markt>
<Markt Nr="M2">
<Bezeichnung>Lichtenberger Adventsmarkt</Bezeichnung>
…
</Markt>
</Maerkte>
<Produkte>
<Produkt Nr="P1">
<Nummer>106222</Nummer>
…
</Produkt>
<Produkt Nr="P2">
<Nummer>101222</Nummer>
…
</Produkt>
</Produkte>
<M-P>
<WirdAngebotenAuf Nr="MP1" Produkt-Nr="P1" Markt-Nr="M1">
<Anzahl>10</Anzahl>
</WirdAngebotenAuf>
<WirdAngebotenAuf Nr="MP2" Produkt-Nr="P2" Markt-Nr="M1">
<Anzahl>20</Anzahl>
</WirdAngebotenAuf>
</M-P>
Datenbanken II
</MaerkteUndProdukte>
12
XML und Datenbanken
DTD-Mapping (Assoziationen mit hoher Komplexität (m:n)):
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Markt (Bezeichnung, Standort,
Oeffnungszeiten, Termin, URL)>
<!ATTLIST Markt Nr ID #REQUIRED >
<!ELEMENT Maerkte (Markt+)>
<!ELEMENT Produkt (Nummer, Bezeichnung, Preis)>
<!ATTLIST Produkt Nr ID #REQUIRED>
<!ELEMENT Produkte (Produkt+)>
<!ELEMENT M-P (WirdAngebotenAuf*)>
<!ELEMENT Anzahl (#PCDATA)>
<!ELEMENT WirdAngebotenAuf (Anzahl)>
<!ATTLIST WirdAngebotenAuf
Produkt-Nr IDREF #REQUIRED
Markt-Nr
IDREF #REQUIRED
>
<!ELEMENT MaerkteUndProdukte (Maerkte, Produkte, M-P)>
Karczewski
Datenbanken II
Linking-Konzept
(XLINK, XPOINTER):
Jedes Element hat
eindeutige ID, mit
IDREF kann
referenziert werden.
13
XML und Datenbanken
DTD-Mapping
(Assoziationen mit
hoher Komplexität
(m:n)):
Stylesheet (XSL)
zur WebPräsentation:
<?xml version="1.0" encoding="UTF-8"?>
…
<xsl:template match="/">
…
<xsl:for-each select="MaerkteUndProdukte/Maerkte/Markt">
<tr>
<td><xsl:value-of select="Bezeichnung"/></td>
<td><xsl:value-of select="Standort"/></td>
<td><xsl:value-of select="Termin"/></td>
<xsl:variable name="MarktRef" select="@Nr"/>
<xsl:apply-templates
select="/MaerkteUndProdukte/M-P/WirdAngebotenAuf
[@Markt-Nr=$MarktRef] "/>
</tr>
</xsl:for-each>
…
</xsl:template>
<xsl:template match="Produkt">
<td> <xsl:value-of select="Bezeichnung"/></td>
</xsl:template>
<xsl:template match="WirdAngebotenAuf">
<xsl:variable name="ProduktRef" select="@Produkt-Nr"/>
<td><xsl:value-of select="Anzahl"/></td>
<xsl:apply-templates
select="/MaerkteUndProdukte/Produkte/Produkt
[@Nr=$ProduktRef] "/>
</xsl:template>
Karczewski
Datenbanken II
14
XML und Datenbanken
DTD-Mapping (Assoziationen mit hoher Komplexität (m:n)):
Web-Präsentation:
Karczewski
Datenbanken II
15
XML und Datenbanken
DTD-Mapping (Spezialisierung):
Geschäftspartner
-
Name
Vorname
Strasse
Land
PLZ
Ort
Telefonnummer
email
Rechtsform
: String
: String
: String
: String
: String
: String
: String
: String
: int
{disjoint,
complete}
Karczewski
Händler
Spediteur
Kunde
Veranstalter
- Firmenname : String
- Firmenname : String
- Nummer
: int
- Erstkontakt : Date
- Bezeichnung : String
- Typ
: String
Datenbanken II
16
XML und Datenbanken
DTD-Mapping (Spezialisierung):
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Geschaeftspartner (Name, Vorname, … )>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Haendler (Geschaeftspartner, Name)>
<!ELEMENT Spediteur (Geschaeftspartner, Name)>
<!ELEMENT Kunde (Geschaeftspartner, Nummer, ErstKontakt)>
<!ELEMENT Nummer (#PCDATA)>
<!ELEMENT ErstKontakt (#PCDATA)>
<!ELEMENT Veranstalter (Geschaeftspartner, Bezeichnung, Typ)>
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Typ (#PCDATA)>
Karczewski
Datenbanken II
17
XML und Datenbanken
Konkretes XML-„Objekt“ (Kunde) nach DTD (Spezialisierung):
<?xml version="1.0" encoding="UTF-8"?>
<Kunde>
<Geschaeftspartner>
<Name>Meier</Name>
<Vorname>Paula</Vorname>
</Geschaeftspartner>
<Nummer>4713</Nummer>
<ErstKontakt>1.1.2002</ErstKontakt>
</Kunde>
Karczewski
Datenbanken II
18
XML und Datenbanken
DTD-Mapping vs. XML-Schema
• DTD ist prägnanter
• XML-Schema lässt detailiertere Bedingungen zu (z.B. min/max)
• Konverter von DTD nach XML-Schema existieren
• XSL-Transformationen dienen in beiden Fällen der automatischen
Generierung von html-Dateien zur besseren Darstellung im Browser
Karczewski
Datenbanken II
19
XML und Datenbanken
XML ist „message oriented middleware“ (MOM):
XML als Schnittstelle zwischen Systemen
C1
XMLDokument
C2
DB2
DB1
C1 erzeugt aus DB1 eine zu übermittelnde Datenmenge, „mapped“
sie mit XML und übermittelt das XML-Dokument an C2. Dieser filtert
die Datenmenge und trägt sie in DB2 ein. Jedes beteiligte DBSystem muss entsprechende Import-/Export-Programme besitzen.
Karczewski
Datenbanken II
20
XML und Datenbanken
Anwendungsfall 1 (MOM): Export/Import von Daten (MS Access):
MS-Access-Tabelle:
Karczewski
Datenbanken II
21
XML und Datenbanken
XML-Beispiel (Export
aus MS-Access):
Exportierte XML-Datei:
• Kopfzeile enthält
XML-Version und
Zeichensatz
• (ggf.) Verweis auf
Strukturdatei (DTD)
• Daten in Tags
• Tags beginnen mit
<…> und enden mit
</…>
• Tags sind beliebig tief
schachtelbar
Karczewski
Datenbanken II
22
XML und Datenbanken
Anwendungsfall 2 (MOM): Datenschnittstelle für Web-Auftritt
(MS Access):
MS
AccessClient MS Access
Datenbank
XMLDokument
XSLVorlage
XSLT
Prozessor
HTMLDokument
• Daten werden aus Datenbank exportiert (-> XML-Dokument),
• Parallel dazu wird eine XSL-Vorlage generiert.
• Mit Hilfe des XSLT-Prozessors wird ein HTML-Dokument
automatisch erzeugt.
Karczewski
Datenbanken II
23
XML und Datenbanken
Beispiel der Generierung eines eXstensible Style Language (XSL) zur
Formatierung von XML-Dokumenten (Bsp: Produkt) aus MS Access
heraus:
Karczewski
Datenbanken II
24
XML und Datenbanken
Ergebnis der
Generierung
eines
eXstensible
Style Language
(XSL) zur
Formatierung
von XMLDokumenten
(Bsp: Produkt)
aus MS Access
heraus:
Karczewski
Datenbanken II
25
XML und Datenbanken
Fazit:
XML als native Datenbank-Systeme (z.B. Tamino) fristen ein
Nischendasein
XML als Schnittstellensprache in verschiedenen Verwendungen
(XML-Dokument, XML-Schema, XSL) gewinnt an Bedeutung, da
einfache Struktur mit generischem Ansatz und webfähig
Karczewski
Datenbanken II
26
XML in DB-Produkten (Oracle)
Oracle:
Grundlegende Funktionen
• Ausgabe von Datenbankinhalten mit XML-Syntax
• Speicherung
- Native Speicherung von XML-Dokumenten
- Strukturierte Speicherung von XML-Dokumenten in Datenbanken
Oracle XML Developer´s Kit (Oracle XDK)
Grundbausteine zum Lesen, Manipulieren, Transformieren,
Anzeigen und Generieren von XML-Dokumenten
Karczewski
Datenbanken II
27
XML in DB-Produkten (Oracle)
Speicherung als CLOB (Character Large Object)
• Verwendung von Oracle Text zur Speicherung
• kein Schema erforderlich
• Auswertung erfolgt durch Anfragen, in denen auch das Markup
ausgewertet wird
Karczewski
Datenbanken II
28
XML in DB-Produkten (Oracle)
Relationale Speicherung
• Umkehrung der Exportfunktion
• XML-Dokumente müssen einer bestimmten Syntax entsprechen
(dreistufige Schachtelung, die auch beim Export eingesetzt wird)
• diese Syntax kann auch über XSLT erreicht werden
Karczewski
Datenbanken II
29
XML in DB-Produkten (Oracle)
Verwendung des XML-Type (native Speicherung)
CREATE TABLE hotels
(
name
ort
beschreibung
ausstattung
preise
telefonnr
);
VARCHAR2(40),
VARCHAR2(35),
SYS.XMLTYPE,
SYS.XMLTYPE,
SYS.XMLTYPE,
VARCHAR(30)
insert into hotels (name, ort, beschreibung, ausstattung, preise,
telefonnr)
values ('Hotel Neptun', 'Warnemuende', sys.XMLType.createXML('In
Warnemuende
ankommen und sich zu Hause fuehlen'), sys.XMLType.createXML('<schwimmbad>
Original-Thalassozentrum. Wir haben fuer Sie frisches Ostseewasser in das
Hotel
geholt!</schwimmbad>'), sys.XMLType.createXML('<DZ waehrung="Euro">186</DZ>
<EZ waehrung="Euro">135</EZ>'), '0381-54370');
Karczewski
Datenbanken II
30
XML in DB-Produkten (Oracle)
Verwendung des XML-Type (native Speicherung)
mit Hilfe von XPath-Ausdrücken in SQL
SELECT ausstattung.extract
('schwimmbad/text()').getStringVal()
"Swimmingpool"
FROM hotels;
liefert
Swimmingpool
----------------Original-Thalassozentrum. Wir haben fuer Sie
frisches Ostseewasser in das Hotel geholt!
Karczewski
Datenbanken II
31
XML in DB-Produkten (Oracle)
Native objektrelationale Speicherung
Einsatz eines annotierten XML-Schema, das die Zuordnung zwischen
• den Elementen/Attributen der XML-Dokumente und
• den Relationen und Attributen der Datenbank beschreibt
Karczewski
Datenbanken II
32
XML in DB-Produkten (Oracle)
Native objektrelationale Speicherung
• Beim Einfügen von XML-Dokumenten
erfolgt ein Test auf Gültigkeit.
• Dabei werden die XML-Schemata
objektrelational abgebildet.
Karczewski
Datenbanken II
33
XML in DB-Produkten (Oracle)
Ausgabe von XML:
Anfrage:
SELECT Name, Kategorie, Ort
FROM Hotel, Adresse
WHERE (Ort='Warnemuende') AND
(Hotel.Hoteladr=Adresse.AdresseID);
Ergebnis:
<rowset>
<row no=´1´>
<Name>Hotel Huebner</Name>
<Kategorie>4</Kategorie>
<Ort>Warnemuende</Ort>
</row>
</rowset>
Karczewski
Datenbanken II
34
XML in DB-Produkten (Oracle)
Kombination von Speicherungsverfahren:
• Datenzentrierte Anteile werden strukturiert in
Datenbanken gespeichert
• Dokumentenzentrierte Anteile werden als XML-Type gespeichert
Anfragen können auf beiden Speicherungsvarianten durchgeführt
werden.
Beim Export lassen sich die verschiedenen Speicherungsformen
wieder zusammenführen, so dass die XML-Dokumente wieder
hergestellt werden können.
Karczewski
Datenbanken II
35
Zusammenfassung 1 (Oracle)
XML-Speicherung:
• Modell: objektrelationales Modell
• Schemabeschreibung: nicht notwendig, Validierung möglich, bei
objektrelationaler Speicherung annotiertes Schema erforderlich
• Art der Speicherung: vollständige Speicherung als XML Type
• fragmentierte Speicherung ist ebenfalls möglich
• Ordnungserhaltung: bei XMLType
• XML-Datentyp: XMLType mit Anfragemöglichkeit XPath 1.0
Indizierung:
• Struktur, Pfade: in Oracle Text
• Werte: ja
• Volltext: ja
Karczewski
Datenbanken II
36
Zusammenfassung 2 (Oracle)
XML-Import, XML-Export:
• Export in festes Format, Import aus feststehendem Format,
weitere Anpassungen mit XSLT
• Im- und Export über annotiertes XML-Schema
Anfrage- und Manipulationsschnittstellen:
• Anfragen: XPath 1.0 auf XMLType, SQL
• Volltextfunktionalität: ja (Information Retrieval mit Oracle Text)
• Änderungsoperationen: nur Löschen und Hinzufügen vollständiger
Werte für XMLType
• Transformationen: XSLT
Werkzeuge, Besonderheiten
• XSLT-Prozessor, XML-Prozessoren (DOM, SAX), XML Schema
Validator
Karczewski
Datenbanken II
37
XML in DB-Produkten (DB2)
DB2 UDB mit XML- und TextExtender bietet
verschiedene Arten der Speicherung von XML-Dokumenten:
• direkte Speicherung in einem XML-Datentyp
• Abbildung auf objektrelationale Strukturen
• Speicherung als Volltext und Anfrage unter Berücksichtigung des
Markups
Karczewski
Datenbanken II
38
XML in DB-Produkten (DB2)
XML Extender
• vereinigt objektrelationale DB-Technologie mit XML
• realisiert zwei Speicherungstechniken
- XML Collection -> Abbildung auf objektrelationale Strukturen
- XML Column -> Datentyp zur Speicherung von ganzen XMLDokumenten
• Form der Speicherung wird mit Data Access Definition (DAD)
beschrieben
• Einsatz beim Import und Export
• Anfragemöglichkeit von SQL und XPath
Karczewski
Datenbanken II
39
XML in DB-Produkten (DB2)
Zusammenwirken der Komponenten:
Karczewski
Datenbanken II
40
XML in DB-Produkten (DB2)
Syntaxbeispiel DAD-File:
<DAD>
<Xcollection>
<root_node>
<element_node name="hotel">
<RDB_node>
<table name="hotel" key="hname"/>
<table name="zimmertyp" key="hname, ztyp"/>
<condition>hotel.hname = zimmertyp.hname</condition>
</RDB_node>
<attribute_node name="hname">
<RDB_node>
<table name="hotel"/>
<column name="hname" type="VARCHAR(32)"/>
</RDB_node>
</attribute_node>
RDB – node = relational DataBase node
...
</root_name>
</Xcollection>
</DAD>
Karczewski
Datenbanken II
41
XML in DB-Produkten (DB2)
Ausgabe aller Zimmerpreise:
SELECT db2xml.extractDouble(zimmertyp, '/zimmertyp/preis')
FROM zimmertyp
WHERE hname = 'Hotel am Leuchtturm'
Ausgabe aller Hotelnamen in Form einer Tabelle
SELECT *
FROM table(db2xml.extractStrings(
db2xml.XMLFile('/home/hme/hotel/hotels.xml'), '/hotel/*/name'))
AS hotelname
Karczewski
Datenbanken II
42
XML in DB-Produkten (DB2)
Text Extender und Volltextsuche
• Abspeicherung von XML-Dokumenten als Ganzes
• Textindizierung
• Text Retrieval Anfragen, auch unter Auswertung des Markup
• Beispiel
SELECT hotelname, beschreibung
FROM hotel
WHERE contains(hotel,'MODEL order SECTION(hotel/beschreibung) "Seeblick"') = 1
Karczewski
Datenbanken II
43
XML in DB-Produkten (DB2)
Ausgabe von XML-Dokumenten
• über DAD Files angegeben mit den Informationen,
- welche Daten ausgegeben werden sollen
- wie die Syntax der Ergebnis-XML-Dokumente erscheinen
Karczewski
Datenbanken II
44
XML in DB-Produkten (DB2)
Ausgabe von XML-Dokumenten
• über DAD Files angegeben mit den Informationen,
- welche Daten ausgegeben werden sollen
- wie die Syntax der Ergebnis-XML-Dokumente erscheinen
Karczewski
Datenbanken II
45
Zusammenfassung 1 (DB2)
XML-Speicherung
• Modell: objektrelationales Modell
• Schemabeschreibung: Validierung bei Import (DTD, Schema)
• Art der Speicherung: sowohl vollständig als auch fragmentierend
• Ordnungserhaltung: nur XML-Datentyp (XML Column)
• XML-Datentyp: ja
Indizierung:
• Pfade: nur TextExtender
• Werte: ja
• Volltext: nur TextExtender
Karczewski
Datenbanken II
46
Zusammenfassung 2 (DB2)
XML-Import, XML-Export
• Unterstützung von Im- und Export, Abbildung spezifiziert durch
DAD-Dateien
• Anfrage- und Manipulationsschnittstellen
• Anfragen: SQL und XPath 1.0
• Volltextfunktionalität: ja (Information Retrieval mit TextExtender)
• Änderungsoperationen: SQL, spezielle Methoden
• Transformationen: nein
Werkzeuge, Besonderheiten:
• XML-sensitiver Volltextindex
• Speicherung basiert auf dem objektrelationalen Modell
Karczewski
Datenbanken II
47
XML in DB-Produkten (MS SQL Server)
Import und Export von XML-Dokumenten
Middleware zur Verarbeitung von XML-Dokumenten
Verwendung von XPath-Ausdrücken
Ausgabe von Anfrageergebnissen mit XML-Syntax
Manipulation von XML-Dokumenten durch Updategramme
Karczewski
Datenbanken II
48
XML in DB-Produkten (MS SQL Server)
Ausgabe von SQL-Anfrageergebnissen als XML-Dokumente
Drei Modi werden unterschieden:
• RAW: erzeugt für jedes Ergebnistupel ein XML-Element ohne
Subelemente.
• AUTO: erzeugt ein geschachteltes XML-Dokument mit dem
Anfrageergebnis
• EXPLICIT: erlaubt, die Form und Schachtelung des
Ergebnisdokumentes in der Anfrage selbst zu
bestimmen.
Karczewski
Datenbanken II
49
XML in DB-Produkten (MS SQL Server)
Syntax:
select
from
where
for xml (raw | auto [, elements] | explicit)
Karczewski
Datenbanken II
50
XML in DB-Produkten (MS SQL Server)
Im RAW-Modus wird mit
SELECT Hotel.Name, Zimmertyp.Typ, Zimmertyp.Preis
FROM Hotel, Zimmertyp
WHERE Hotel.Name = Zimmertyp.HName
FOR XML RAW
wird vom SQL Server dieses XML-Fragment erstellt:
<row Name="Hotel Neptun" Typ="EZ" Preis="120"/>
<row Name="Hotel Neptun" Typ="DZ" Preis="170"/>
<row Name="Hotel Neptun" Typ="Suite" Preis="350"/>
Karczewski
Datenbanken II
51
XML in DB-Produkten (MS SQL Server)
Im AUTO-Modus wird mit
SELECT Hotel.Name, Zimmertyp.Typ, Zimmertyp.Preis
FROM Hotel, Zimmertyp
WHERE Hotel.Name = Zimmertyp.HName
FOR XML AUTO, ELEMENTS
dieses vom SQL-Server dieses XML-Dokument erzeugt:
<Hotel>
<Name>Hotel Neptun</Name>
<Zimmertyp><Typ>EZ</Typ><Preis>120</Preis></Zimmertyp>
<Zimmertyp><Typ>DZ</Typ><Preis>170</Preis></Zimmertyp>
<Zimmertyp><Typ>Suite</Typ><Preis>350</Preis></Zimmerty
p>
</Hotel>
Karczewski
Datenbanken II
52
XML in DB-Produkten (MS SQL Server)
Im EXPLICIT-Modus erfolgt die Verarbeitung in zwei Schritten:
• Bearbeitung einer Anfragesicht (Universal-Relation-Format)
• einem Serialisierungsprozess zur Ergebnisaufbereitung
Karczewski
Datenbanken II
53
XML in DB-Produkten (MS SQL Server)
EXPLICIT-Modus
SELECT 1 AS Tag,
NULL AS Parent,
Hotel.Name AS "Hotel!1!Name",
NULL AS "Zimmertyp!2!Typ"
FROM Hotel
UNION ALL
SELECT 2, 1, Hotel.Name, Zimmertyp.Typ
FROM Hotel, Zimmertyp
WHERE Hotel.Name = Zimmertyp.HName
ORDER BY [Hotel!1!Name], [Zimmertyp!2!Typ] Die Angabe von [Zimmertyp!2!Typ!element]
erreicht, dass der Spalteninhalt von
FOR XML EXPLICIT
Zimmertyp.Typ als Elementinhalt
anstatt eines Attributwertes ausgegeben wird.
Karczewski
Datenbanken II
54
XML in DB-Produkten (MS SQL Server)
EXPLICIT-Modus
Durch den Serialisierungsprozess wird das folgende
XML-Fragment erzeugt:
<Hotel Name="Neptun">
<Zimmertyp Typ="EZ"/>
<Zimmertyp Typ="DZ"/>
<Zimmertyp Typ="Suite"/>
</Hotel>
<Hotel Name="Am Leuchtturm">
<Zimmertyp Typ="EZ"/>
<Zimmertyp Typ="DZ"/>
</Hotel>
Karczewski
Datenbanken II
55
XML in DB-Produkten (MS SQL Server)
Edge-Table: beinhaltet
• id
• parentid
• nodetype
• Localname (Element oder Attributname)
• datatype
• namespaceuri (falls vorhanden)
• prev (vorhergehender Geschwisterknoten)
• text (Attributwert oder Elementinhalt)
Karczewski
Datenbanken II
56
XML in DB-Produkten (MS SQL Server)
•durch
annotierter XDR (XML-Data Reduced) Schema wird
Abbildung auf ein relationales Schema beschrieben, Beispiel:
<schema
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="zimmertyp" sql:relation="Zimmertyp">
<attribute type="ztyp" sql:field="ZTyp"/>
<attribute type="hname" sql:field="HName"/>
</ElementType>
</schema>
Karczewski
Datenbanken II
57
Zusammenfassung 1 (MS SQL Server)
XML-Speicherung:
• Modell: relationales Modell
• Schemabeschreibung: XDR für XML-Sichten, DTD oder
Schema zur Typableitung in OpenXML
• Art der Speicherung: fragmentierte Speicherung
• Ordnungserhaltung:nein
• XML-Datentyp: nein
Indizierung
• Struktur, Pfade: nein
• Werte: ja
• Volltext: nein
Karczewski
Datenbanken II
58
Zusammenfassung 2 (MS SQL Server)
XML-Import, XML-Export:
• Import und Export durch annotiertes XDR-Schema
Anfrage- und Manipulationsschnittstellen
• Anfragen: SQL + Erweiterungen, XPath
•Volltextfunktionalität: nein
• Änderungsoperationen: an XML mit Updategrammen
• Transformationen: XSLT 1.0
Werkzeuge, Besonderheiten:
• Integration mit Web-Services über Middleware
• Laden von XML-Massendaten
Karczewski
Datenbanken II
59
SQL und XML
Bis heute existiert keine einheitliche Syntax in den verschiedenen
Systemen
Eine Vereinheitlichung der Syntax ist über neue Standards zu
erwarten
Damit wird auch eine weitere Angleichung der Funktionalität
einhergehen
SQL/XML basiert auf XQuery, das seinerseits nicht standardisiert ist
Karczewski
Datenbanken II
60
Tamino
Eigenschaften:
• native Speicherung der XML-Dokumente
• Anfragen mit XPath (Entwicklung Richtung XQuery)
• Volltextfunktionalität ergänzt
• Updateoperationen möglich
• Sperrverfahren auf der Ebene von ganzen XML-Dokumenten
Karczewski
Datenbanken II
61
Tamino
XML
Architektur:
HTTP
Web-Server
X-Port
X-Machine
XML Engine
Karczewski
XML
Data
Server
Datenbanken II
metadata
Data
map
X-Node
Server
extensions
X-Tension
Data Store Kernel
open
API
external
data
source
62
Tamino
Speicherung undRetrieval von XML-Dokumenten:
XML-Ausgabe Anfrage (URL)
Query
Interpreter
Object
Composer
Daten von externen
Datenquellen und/
oder der internen
Datenspeicherung
Karczewski
XML
Parser
Object
Prozessor
Data Map
Datenbanken II
XML Objekte, DTDs
Utilities
Daten an externe
Datenquellen und/
oder an die intere
Datenspeicherung
63
Zusammenfassung 1 (Tamino)
XML-Speicherung:
• Modell: native Speicherung, Basis adabas-Komponenten
• Schemabeschreibung: DTD + Datentypen von XML Schema,
Test auf Gültigkeit,
Schema ist zur Speicherung von XML-Dokumenten nicht erforderlich
• Art der Speicherung: vollständige Speicherung
• Ordnungserhaltung: ja
• XML-Datentyp: nein
Indizierung
• Struktur, Pfade: ja
• Werte: ja
• Volltext: ja
Karczewski
Datenbanken II
64
Zusammenfassung 2 (Tamino)
XML-Import, XML-Export
• Verarbeitung externer Informationen aus Datenbanken und
Spezifikation von Zuordnungsvorschriften, Einbeziehung weiterer
Formate
Anfrage- und Manipulationsschnittstellen
• Anfragen: XPath 1.0, zukünftig XQuery auf XPath 2.0
• Volltextfunktionalität: ja
• Änderungsoperationen: ja
• Transformationen: XSLT 1.0
Werkzeuge, Besonderheiten
• Transaktionsverwaltung, Mehrnutzerbetrieb, graphische
Unterstützung der Angabe des Mappings, Integration von
Editoren (XML Spy)
Karczewski
Datenbanken II
65
Einordnung der Produkte
Kriterien:
• konzeptuell: Modellierungsebene
• logisch: Anfrageebene
• physisch: Speicherebene
• dokumentzentriert: Betrachtung der Informationen als Dokument
• datenzentriert: Betrachtung der Informationen als Daten (Tupel,
Attribute etc.)
• semistrukturiert: liegt zwischen dokument- und datenzentriert
Karczewski
Datenbanken II
66
physisch
logisch
konzeptuell
Einordnung der Produkte – Oracle
Karczewski
IR-Anfragen
XPath
CLOB
XMLType
dokumentzentriert
semistrukturiert
Datenbanken II
SQL + XPath
relationale
Speicherung
nativ objektrelationale Sp.
datenzentriert
67
logisch
SQL mit
Erweiterungen
physisch
konzeptuell
Einordnung der Produkte – DB2
Volltext- und
Strukturindex
dokumentzentriert
Karczewski
Mapping durch
DAD-Files
SQL
objektrelationale
Datenbank
semistrukturiert
Datenbanken II
datenzentriert
68
logisch
konzeptuell
Einordnung der Produkte – SQL-Server
XPath
physisch
Updategram
Edge-Table
dokumentzentriert
Karczewski
SQL
Datenbanken II
semistrukturiert
relationale
Datenbank
datenzentriert
69
Editor für XMLDokumente, Schema,
...
XML Spy
XPath 1.0
logisch
konzeptionell
Einordnung der Produkte – Tamino
physisch
XQuery 1.0
mit XPath 2.0
native Speicherung
der XMLDokumente
dokumentzentriert
Karczewski
semistrukturiert
Datenbanken II
datenzentriert
70
Herunterladen