strukturbasierte abbildung von xml auf relationale datenbanken
Download
Skip this Video
Download Presentation
Strukturbasierte Abbildung von XML auf relationale Datenbanken

Loading in 2 Seconds...

play fullscreen
1 / 28

Strukturbasierte Abbildung von XML auf relationale Datenbanken - PowerPoint PPT Presentation


  • 89 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Strukturbasierte Abbildung von XML auf relationale Datenbanken' - nyx


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
strukturbasierte abbildung von xml auf relationale datenbanken

Strukturbasierte Abbildung von XML auf relationale Datenbanken

XML & Datenbanken

SS 2004

Marcel Keller

inhalt des vortrags
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
1.1.Motivation

Warum XML in DB speichern?

  • Bewährte Datenbanktechnologie nutzen:
    • Transaktionsmanagement
    • Logging und Recovery
    • Synchronisation
    • Integritätsregeln
    • Anfrageoptimierung

RDBS

XML

einordnung der strukturbasierten abbildung
Einordnung der strukturbasierten Abbildung

Speicherung

von XML-

Dokumenten

Textbasierte

Abbildung

Modellbasierte

Abbildung

Strukturbasierte

Abbildung

Benutzerdefiniertes

Mapping

Vollständiges

Automatisches

Mapping

  • Bourret
  • Deutsch/Fernandez/
  • Suciu:STORED
  • IBM DB2 Extender
  • Klettke/Meyer
  • Shanmugasundaram et al
  • Deutsch/Fernandez/Suciu:STORED
  • Bourret
  • Oracle 9i XSU
1 2 art der zu speichernden xml dokumente
1.2. Art der zu speichernden XML-Dokumente
  • Abbildung auf DB-Struktur besonders geeignet für datenzentrierte XML- Dokumente
  • 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
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
anwendung der vorschrift
Anwendung der Vorschrift

Beispiel-DTD:

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

);

<!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 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)

);

CREATE TABLE Telefon (

ID INTEGER NOT NULL,

Telefon VARCHAR(30) NOT NULL,

PRIMARY KEY (ID,Telefon),

FOREIGN KEY (ID) references Hotel (ID)

);

abbildung von alternativen
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

abbildung von rekursiven datendefinitionen
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

Ausflugsziel

abbildung von elementordnungen
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>

darstellung von mixed content
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:

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

<!ELEMENT anreisebeschreibung (#PCDATA | auto | bahn)*>

2 2 anfragen
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
3 benutzerdefiniertes mapping
3. Benutzerdefiniertes Mapping
  • Art der Speicherung in der Datenbank konnte bisher nicht beeinflusst werden
  • Mappingvorschrift spezifiziert welche Informationen aus XML-Dokument 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
3.1. Beispiel einer Mappingvorschrift nach Ronald Bourret

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

<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

3 2 anfragen
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
4 was machen die hersteller
4. Was machen die Hersteller?

4.1. Oracle 9i (automatisches Mapping)

  • Shredding Storage zur strukturierten Speicherung von XML-Dokumenten
  • 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)

<ROWSET>

<ROW num="1">

<PersNr>234<PersNr>

<Name>Müller<Name>

<Gehalt>4000<Gehalt>

</ROW>

<ROW num="2">

...

</ROW>

...

</ROWSET>

Oracle DB

import von xml daten mit xsu
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
slide22

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
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, XML-Objekt
  • Verwendung von <Xcollection> in DAD:
    • 2 Abbildungsmethoden:
      • SQL-Zuordnung (nur bei Export)
      • RDB-node-Zuordnung (Import & Export)
shredding unter verwendung von rdb node beispiel
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

slide26
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

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

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

ad