strukturbasierte abbildung von xml auf relationale datenbanken n.
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


Download Now 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>vertrieb@db-Solutions.de

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