Strukturbasierte Abbildung von XML auf relationale Datenbanken

Werbung
Strukturbasierte Abbildung
von XML auf relationale
Datenbanken
XML & Datenbanken
SS 2004
Marcel Keller
Inhalt des Vortrags
• 1.Einführung in das Thema
– 1.1 Motivation
– 1.2 Art der zu speichernden Dokumente
• 2.Automatisches Mapping
– 2.1. Prinzipielle Abbildungsvorschrift
– 2.2. Anfragen
– 2.3. Eigenschaften
• 3.Benutzerdefiniertes Mapping
– 3.1. Abbildungsvorschrift
– 3.2. Anfragen
– 3.3. Eigenschaften
• 4. Was machen die Hersteller?
– 4.1.Oracle 9i
– 4.2. IBM DB2
1.1.Motivation
Warum XML in DB speichern?
• Bewährte Datenbanktechnologie nutzen:
–
–
–
–
–
Transaktionsmanagement
Logging und Recovery
Synchronisation
Integritätsregeln
XML
Anfrageoptimierung
RDBS
Einordnung der strukturbasierten Abbildung
Speicherung
von XMLDokumenten
Textbasierte
Abbildung
Modellbasierte
Abbildung
Vollständiges
Automatisches
Mapping
Strukturbasierte
Abbildung
Benutzerdefiniertes
Mapping
•Klettke/Meyer
•Bourret
•Shanmugasundaram et al
•Deutsch/Fernandez/
•Deutsch/Fernandez/Suciu:STORED
Suciu:STORED
•Bourret
•IBM DB2 Extender
•Oracle 9i XSU
1.2. Art der zu speichernden XML-Dokumente
• Abbildung auf DB-Struktur besonders geeignet für datenzentrierte XMLDokumente
•Bei XML als Medium zum Datenaustausch zwischen Systemen sehr
strukturierte Daten
•Beispiele: Übermittlung von Bestellungen, Produktdaten usw.
•Leichte Abbildung in relationales Schema möglich
•Gemischte Inhalte treten selten auf
•Reihenfolge von Geschwisterelementen spielt in der Regel keine Rolle
•Hierarchische Strukturen lassen sich auf mehrere Tabellen mit
entsprechenden Fremdschlüsselbeziehungen abbilden
2. Automatisches Mapping
• DTD,XML-Schema muss vorhanden sein
• Datenbankentwurf richtet sich nach Struktur der Dokumente
• automatische Abbildung eines Schemas von XML-Dokumenten auf
Datenbankschema mit Hilfe einer Defaultmappingvorschrift
• Das Bedeutet:XML-Strukturen werden von allgemeingültigem, vom
Schema unabhängigem, Konzept umgesetzt
• bildet ganzes XML-Dokument ab
2.1. Prinzipielle Abbildungsvorschrift nach
Klettke/Meyer
XML-Information
Element
Attribut
Datenbank-Information
Wurzelelement
Relation mit eindeutiger ID
Normales XML-Element
Attribut einer Relation
Sequenz von Elementen
Attribute einer Relation
Alternative von Elementen
Attribute einer Relation
Element mit Quantifizierer ?
Attribut einer Relation,
Nullwerte möglich
Elemente mit Quantifizierer +
oder *
Relation mit eindeutiger ID und
Element ist Attribut der Relation
Komplex strukturiertes
(geschachteltes) Element,also
Element mit Subelementen
Relation mit eindeutiger ID
wobei Subelemente Attribute der
Relation
XML-Attribut
Attribut einer Relation
#IMPLIED
Nullwert erlaubt
#REQUIRED
Nullwert nicht erlaubt
Defaultwert
Defaultwert
Anwendung der Vorschrift
Beispiel-DTD:
<!ELEMENT hotel (hotelname, kategorie, adresse,
telefon+, fax)>
<!ATTLIST hotel id ID #REQUIRED>
<!ELEMENT hotelname (#PCDATA)>
<!ELEMENT kategorie (#PCDATA)>
<!ELEMENT adresse (plz, ort, strasse, nummer)>
<!ELEMENT plz (#PCDATA)>
<!ELEMENT ort (#PCDATA)>
<!ELEMENT strasse (#PCDATA)>
<!ELEMENT nummer (#PCDATA)>
<!ELEMENT telefon (#PCDATA)>
<!ELEMENT fax (#PCDATA)>
Datenbankentwurf:
CREATE TABLE Telefon (
ID INTEGER NOT NULL,
Telefon VARCHAR(30) NOT NULL,
PRIMARY KEY (ID,Telefon),
FOREIGN KEY (ID) references Hotel (ID)
);
CREATE TABLE Hotel (
ID INTEGER PRIMARY KEY,
Hotelname VARCHAR(50) NOT NULL,
Kategorie INTEGER NOT NULL,
Adresse VARCHAR(5) NOT NULL,
Telefon VARCHAR(5) NOT NULL,
Fax VARCHAR(30) NOT NULL
);
CREATE TABLE Adresse (
ID INTEGER PRIMARY KEY,
Plz INTEGER NOT NULL,
Ort VARCHAR(50) NOT NULL,
Strasse VARCHAR(30) NOT NULL,
Nummer INTEGER NOT NULL,
FOREIGN KEY (ID) references Hotel (ID)
);
Relationenschema für die DTD
Hotel
ID
Hotelname
Kategorie
Fax
1
Hotel Hübner
1
0381-543444
ID
PLZ
Ort
Strasse
Nummer
1
18119
Warnemünde
Seestraße
12
Adresse
Telefon
ID
Telefon
1
0381-54340
1
0381-540
Abbildung von Alternativen
• Elementnamen werden zu Attributnamen einer Relation
• Problem: Viele Nullwerte in der Tabelle (Speicherplatzverschwendung)
•Beispiel:
....
<!ELEMENT Kontakt (Telefon|Fax|Email)*>
<!ELEMENT Telefon (#PCDATA)>
<!ELEMENT Fax (#PCDATA)>
<!ELEMENT Email (#PCDATA)>
....
....
<Kontakt>
<Telefon>0381/7774</Telefon>
<Fax>0381/7775</Fax>
<Email>[email protected]
</Email>
<Kontakt>
....
Kontakt
ID
Telefon
Fax
Email
1
0712/4455
NULL
NULL
2
0381/7774
0381/7775
vertrieb@dbsolutions
Abbildung von rekursiven Datendefinitionen
•DTD's können beispielsweise rekursiv sein
•Unendliche Rekursion auf der Instanzenebene einer Datenbank nicht möglich
•Vorgehensweise:
•Aufspaltung in separate Tabellen
•Verwendung von Primär-/Fremdschlüssel
....
<!ELEMENT ort (name, einwohnerzahl, ausflugsziel*)>
<!ELEMENT ausflugsziel (ort, entfernung, beschreibung)>
....
•Beispiel:
Ort
ID
Name
Einwohnerzahl
Ausflugsziel
20
Jena
....
33
21
Weimar
22
Kahla
....
....
ID
Ort
Entfernung
Beschreibung
33
22
.....
....
33
21
....
....
....
Ausflugsziel
Abbildung von Elementordnungen
•
•
•
•
Dokumentordnung von XML-Dokumenten aus DB nicht erkennbar
Reihenfolge kann aber von Bedeutung sein (Beispiel:Wissenschaftliche
Publikationen)
In diesen Fällen: zusätzliches ordnungserhaltendes Attribut
Beispiel:
<Buch>
<Kapitel>Einführung</Kapitel>
<Kapitel>Theoretische Grundlagen</Kapitel>
<Kapitel>Konzeption</Kapitel>
<Kapitel>Beispiel</Kapitel>
<Kapitel>Zusammenfassung</Kapitel>
</Buch>
Ordnung
Kapitel
1
Einführung
2
Theoretische
Grundlagen
3
Konzeption
4
Beispiel
5
Zusammenfassung
Darstellung von Mixed-Content
•
•
•
•
•
Speicherung von Mixed-Content-Elementen in relationalen Datenbanken sehr
umständlich
Keine effizienten Anfragen möglich
Selten bei datenzentrierten Dokumenten
Andere Form der Speicherung wählen bei häufigem Vorkommen!
Beispiel:
<anreisebeschreibung>
Sie können unser Haus auf verschiedenen Wegen erreichen:
<!ELEMENT anreisebeschreibung
(#PCDATA | auto | bahn)*>
<bahn>per Bahn: 1km ab Bahnhof Warnemünde</bahn>
<auto>per Auto: 19km ab Autobahn A19 Rostock-Berlin</auto>
Sie finden uns direkt an der Uferpromenade.
</anreisebeschreibung>
Ordnung
#PCDATA
Bahn
Auto
1
Sie können unser Haus auf verschiedenen
Wegen erreichen:
NULL
NULL
2
NULL
per Bahn: 1km ab Bahnhof Warnemünde
NULL
3
NULL
NULL
per Auto: 19km ab Autobahn
A19 Rostock-Berlin
4
Sie finden uns direkt an der
Uferpromenade.
NULL
NULL
2.2. Anfragen
•Datenbankanfragen mit SQL:
–Struktur der Datenbank muss bekannt sein
–Joins, Aggregatfunktionen usw. lassen sich ausführen
–Optimierung übernimmt das DBMS
•XML-Anfragen mit den XML-QL:XPath oder XQuery:
–Prozess der Abbildung XML auf Datenbank muss protokolliert
sein
–Datenbankanfrage für XML-Anfrage muss automatisch generiert
werden können
–Ergebnis für die XML-Anfrage muss generiert werden können
2.3. Eigenschaften der Speicherung mit
automatischem Mapping
Schemabeschreibung (DTD o.XMLSchema)
erforderlich
Dokumentrekonstruktion
Nur eingeschränkt möglich (Protokollierung des Abbildungsprozesses
nötig)
Anfragen
SQL- und XML-Anfragen (Transformation) sind möglich
Effizienz
Hoch durch Einsatz der DB-Engine
Einsatz
Für datenzentrierte XML-Dokumente
Weitere Besonderheiten
•Erhalten der Dokumentordnung nur über zusätzliches Attribut
•OODBS/ORDBS erlauben natürlichere Abbildung der
Elementhierarchien
•Änderung des XML-Schemas erfordert Anpassung der DB
•Oft großes Schema & schwach gefüllte Datenbanken (Nullwerte)
•Speicherung von Alternativen,Mixed-Content-Typ, Rekursion
problematisch
•Speicherung von Elementen vom Typ ANY nicht möglich
•Speicherung von Kommentaren,PI‘s,Prolog und der DTD nicht möglich
•Bei DTD Anpassung der DB-Attributtypen vom Anwender nötig
3. Benutzerdefiniertes Mapping
• Art der Speicherung in der Datenbank konnte bisher nicht beeinflusst
werden
• Mappingvorschrift spezifiziert welche Informationen aus XMLDokument auf welche Datenbankstruktur abgebildet wird (vollständig
oder nur Ausschnitt)
• Sehr flexible Methode
• Unabhängiges Entwerfen von XML-Schema und Datenbankschema
möglich
• Speicherung von XML-Dokumenten in existierende Datenbanken
möglich
• Zusammenführen von XML-Dokumenten mit in anderer Form
gespeicherter Daten möglich
• Erstellen von Mappingvorschrift erfordert großen manuellen Aufwand
3.1. Beispiel einer Mappingvorschrift nach
Ronald Bourret
<Hotel url= "www.hotel-huebner.de“>
<HotelID>H0001</HotelID>
<Name>Hotel Huebner </Name>
<Adresse>
<PLZ>18119</PLZ>
<Ort>Warnemünde</Ort>
<Strasse>Seestrasse</Strasse>
<Nr>12</Nr>
</Adresse>
<Preise>
<Einzelzimmer>198</Einzelzimmer>
</Preise>
</Hotel>
Preise
Hotel_url
Name
Einzelzimmer
www.hotelhuebner.de
Hotel Hübner
198
<ClassMap>
<ElementType Name="Hotel“/>
<ToClassTable>
<Table Name="Preise">
</ToClassTable>
<PropertyMap>
<Attribute Name="url"/>
<ToColumn>
<Column Name="Hotel_url">
</ToColumn>
</PropertyMap>
<PropertyMap>
<ElementType Name="hotelname"/>
<ToColumn>
<Column Name="Name"/>
</ToColumn>
</PropertyMap>
<PropertyMap>
<ElementType Name="Einzelzimmer"/>
<ToColumn>
<Column Name="Einzelzimmer"/>
</ToColumn>
</PropertyMap>
.....
</ClassMap>
3.2. Anfragen
• Datenbankanfragen mit SQL:
– Struktur der Datenbank muss bekannt sein
• XML-Anfragen: (nur sehr eingeschränkt)
– Nur möglich wenn Abbildungsprozess in Metadaten
protokolliert wird
– Alle für Anfrage relevanten Daten müssen dabei
gespeichert sein
– Problem:unvollständige Speicherung,Art der
Speicherung gegenüber Originaldokument stark
verändert
3.3. Eigenschaften der Speicherung mit
benutzerdefiniertem Mapping
Schemabeschreibung (DTD o.XMLSchema)
erforderlich
Dokumentrekonstruktion
meist nicht möglich (Protokollierung des Abbildungsprozesses
nötig,vollständige Abbildung)
Anfragen
SQL-Anfragen möglich
XML-Anfragen in Ausnahmefällen möglich
Effizienz
Hoch durch Einsatz der DB-Engine
Einsatz
Für datenzentrierte XML-Dokumente
Weitere Besonderheiten
•Erhalten der Dokumentordnung nur über zusätzliches Attribut
•Änderung des XML-Schemas erfordert Anpassung der
Mappingvorschrift
•Zusammenhang von Elementen und Attributen eines XMLDokumentes kann verloren gehen
•sehr variable Methode
•Speicherung in bestehende Datenbanken möglich
•Verantwortung für das Mapping liegt beim Anwender
4. Was machen die Hersteller?
4.1. Oracle 9i (automatisches Mapping)
– Shredding Storage zur strukturierten Speicherung von XMLDokumenten
– Programm XSU (XML SQL Utility) kann Ergebnisse von SQL-Anfragen
in XML ausgeben und Daten aus XML-Dokumente in Tabellen einlesen
(Export & Import von XML-Daten)
Oracle DB
<ROWSET>
<ROW num="1">
<PersNr>234<PersNr>
<Name>Müller<Name>
<Gehalt>4000<Gehalt>
</ROW>
<ROW num="2">
...
</ROW>
...
</ROWSET>
Import von XML-Daten mit XSU
– Import:
• Name der bestehenden Tabelle und des XML-Dokumentes
müssen als Parameter an XSU übergeben werden
• XSU erzeugt automatisch SQL-Insert-Befehle
• XML- und relationales Schema müssen exakt übereinstimmen
• Ist dies nicht der Fall, Anpassung des relationalen Schemas
oder Transformation des XML-Dokumentes mit XSLT
4.2. IBM DB2 UDB (benutzerdefiniertes Mapping)
• DB2 XML-Extender (ab V.7.1. Bestandteil):
– 2 Zugriffs- bzw. Speicherungsformen für XML:
• XML-Collection (<Xcollection>): Abbildung auf relationale
Strukturen
• XML-Column: XML-Datentyp,Speicherung von ganzen
XML-Dokumenten oder Fragmenten
– Genaue Form der Speicherung wir in DAD-Datei (Document
Access Definition) beschrieben
– DAD-Datei ist XML-formatiertes Dokument welches auf Client
gespeichert ist
Weitere Eigenschaften der DAD-Datei
• DAD-Datei muss beim Aktivieren einer XML-Collection (Gruppe
relationaler Tabellen die XML enthalten) angegeben werden
• dxxEnableCollection(): Eingabe: DB-Name, Name der Collection, DAD als
CLOB, Tablespace
• Stored-Procedures:
• dxxShredXML(): Eingabe: DAD-Datei und XML-Objekt (!Tabellen müssen
vorhanden sein!)
• dxxInsertXML():Eingabe: Name der aktivierten XML-Collection, XMLObjekt
• Verwendung von <Xcollection> in DAD:
• 2 Abbildungsmethoden:
• SQL-Zuordnung (nur bei Export)
• RDB-node-Zuordnung (Import & Export)
XML-Column und XML-Collection
Shredding unter Verwendung von RDB-node
(Beispiel)
Beispiel-DTD:
<!ELEMENT Order (Customer, Part+)>
<!ATTLIST Order order_key ID #REQUIRED>
<!ELEMENT Customer (Name, Email)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Email (#PCDATA)>
<!ELEMENT Part (Key, Quantity, ExtendedPrice,Tax,Shipment)>
<!ATTLIST Part color CDATA #IMPLIED>
<!ELEMENT Key (#PCDATA)>
<!ELEMENT Quantity (#PCDATA)>
<!ELEMENT ExtendedPrice (#PCDATA)>
<!ELEMENT Tax (#PCDATA)>
<!ELEMENT Shipment (ShipDate, ShipMode)>
<!ELEMENT ShipDate (#PCDATA)>
<!ELEMENT ShipMode (#PCDATA)>
order_tab
relationaler Entwurf:
part_tab
order_key
customer_name
cuctomer_email
1
Müller
mü[email protected]
part_key
order_key
price
tax
quantity
color
date
mode
1
1
100
16
1
black
20.05.2004
1
XML-Dokumentstruktur und mögliche Zuordnung von
Elementen/Attributen zu Spalten von relationalen Tabellen:
order_tab
part_tab
DAD-Fragment:Zerlegung mit Xcollection &
RDB_node
<?xml version="1.0"?>
<!DOCTYPE DAD SYSTEM "dxx_install_verz/samples/db2xml/dtd/dad.dtd">
<DAD>
<dtdid>dxx_install_verz/samples/dad/getstart.dtd</dtdid>
<validation>YES</validation>
<Xcollection>
<prolog>?xml version="1.0"?</prolog>
<doctype>! DOCTYPE Order SYSTEM "dxx_install_verz/samples/db2xml/dtd/getstart.dtd"</doctype>
<root_node>
<element_node name="Order">
<RDB_node>
<table name="order_tab" key="order_key"/>
<table name="part_tab" key="part_key order_key"/>
<condition>order_tab.order_key = part_tab.order_key</condition>
</RDB_node>
<attribute_node name="key">
<RDB_node>
<table name="order_tab"/>
<column name="order_key" type="integer"/>
</RDB_node>
</attribute_node>
Fortsetzung DAD-Fragment
<element_node name="Customer">
<element_node name="Name">
<text_node>
<RDB_node>
<table name="order_tab"/>
<column name="customer_name" type="varchar(30)"/>
</RDB_node>
</text_node>
</element_node>
<element_node name="Email">
<text_node>
<RDB_node>
<table name="order_tab"/>
<column name="email_name" type="varchar(30)"/>
</RDB_node>
</text_node>
</element_node>
</element_node>
................
..........
</element_node>
</root_node>.
</Xcollection>
</DAD>
Herunterladen