Kapitel 6 Abbildung von Datenbanken auf XML

Größe: px
Ab Seite anzeigen:

Download "Kapitel 6 Abbildung von Datenbanken auf XML"

Transkript

1 Kapitel 6 Abbildung von Datenbanken auf XML Standardabbildung von Tabellen Standardabbildung von Anfrageergebnissen Individuelle Abbildungsvorschriften

2 Anforderungen an die Generierung von XML-Dokumenten aus Datenbanken Datenbanksysteme sind sehr weit verbreitet Grosse Datenmengen sind in Datenbanken elektronisch gespeichert XML attraktiv als Format zum Austausch zwischen Datenbanken Transport via Internet-Protokolle definiert Vereinheitlichung durch gemeinsame DTDs oder XML-Schemas möglich Viele Tools verfügbar Austausch erfordert Export und Import der Daten (unter anderem) Anforderungen an den Datenexport Standardabbildung von Tabellen Standardabbildung von Anfrageergebnissen oder Sichten Individuelle Abbildungsvorschriften 6-2

3 Allgemeine Problemstellung Datentypen Datenbank Tabellen- und Spaltennamen Daten aus Datenbanken? XML-Dokument Element- und Attributnamen Datentypen von XML-Schema Inhalte in XML-Dokumenten Problem ist für alle Hersteller von Datenbanksystemen im Prinzip gleich SQL/XML - Standardisierungsinitiative verschiedener Hersteller (siehe Kapitel 7) 6-3

4 Generieren von XML-Dokumenten aus Datenbanken Generieren von XML-Dokumenten Standardabbildung von Tabellen Standard- Abbildung von Anfrageergebnissen Individuelle Abbildungsvorschriften Feste Transformationsregeln Feststehende Syntax des entstehenden XML-Dokumentes Lee Buck (Grundprinzip) Tim Bray, Lee Buck (Datentypen in DTDs ergänzen) Oracle DB2 Informix SQL/XML (Standardisierungsinitiative) 6-4

5 Standardabbildung von Tabellen Datenbank als dreistufige Hierarchie von Datenbank Tabellen Spalten Darstellung der Datenbankinhalte und Struktur im XML-Dokument durch Elemente durch Elemente und Attribute Beispielrelationen: Hotel: Adresse: HotelID Name Kategorie Adresse AdresseID Ort PLZ Strasse Nr H0001 H0002 Hotel Hübner Warnemü- nder Hof 4 3 A0001 A0002 A0001 A0002 Warnemünde nde Warnemünde nde Seestrasse Stolteraer Weg

6 Standardabbildung von Tabellen: Darstellung durch Elemente Hotel: Adresse: HotelID H0001 H0002 Name Hotel Hübner Warnemü- nder Hof Kategorie 4 3 Adresse A0001 A0002 AdresseID A0001 A0002 Ort Warnemünde nde Warnemünde nde PLZ Strasse Seestrasse Stolteraer Weg Nr 12 8 <Hotelinformationen> <Hotel> <HotelID>H0001</HotelID> <Name>Hotel Hübner</Name> <Kategorie>4</Kategorie> <Hoteladr>A0001</Hoteladr> </Hotel> <Hotel>... </Hotel> <Adresse>... </Adresse> </Hotelinformationen> Standardabbildung der Spaltennamen auf Elementnamen 6-6

7 Hotel: HotelID H0001 H0002 Name Standardabbildung von Tabellen: Darstellung durch Elemente und Attribute Hotel Hübner Warnemü- nder Hof Kategorie 4 3 Adresse A0001 A0002 Adresse: AdresseID A0001 A0002 Ort Warnemünde nde Warnemünde nde PLZ Strasse Seestrasse Stolteraer Weg Nr 12 8 <Hotelinformationen> <Hotel HotelID='H0001' Name='Hotel Hübner' Kategorie='4' Hoteladr='A0001' /> <Hotel... /> <Adresse... /> </Hotelinformationen> Standardabbildung der Spaltennamen auf Attributnamen 6-7

8 Abbildung von Schlüssel-Fremdschlüssel Fremdschlüssel-Beziehungen Zielsetzung: Schlüssel und Fremdschlüssel sollen möglichst adäquat at im XML-Dokument wiedergegeben werden Abbildung von Schlüssel- und Fremdschlüsselbeziehungen auf Elementhierarchien 1:n-Beziehungen werden auf geschachtelte Elemente im Dokument abgebildet n:m-beziehungen sind problematisch: Abbildung auf ID/IDREF Denormalisierter Inhalt im XML-Dokument eventuell hohe Redundanz Verwendung von XML-Schema Darstellung von Schlüsseln und Fremdschlüsseln: Einsatz von key / keyref Verwendung einer DTD Darstellung von Schlüsseln und Fremdschlüsseln Abbildung auf Attribute (ID/IDREF) Eindeutigmachen der Schlüssel- und Fremdschlüsselwerte (ID muss eindeutig sein für das ganze Dokument) 6-8

9 Hotel: HotelID H0001 H0002 Name Hotel Hübner Warnemue- nder Hof Hierarchien aus Schlüssel- und Fremdschlüsselbeziehungen Kategorie 4 3 Adresse A0001 A0002 FK AdresseID A0001 A0002 Ort Warnemünde nde Warnemünde nde PLZ Strasse Seestrasse Adresse: Stolteraer Weg Nr 12 8 <!ELEMENT Hotel (HotelID, Name, Kategorie?, Hoteladr)> <!ELEMENT Hoteladr (AdresseID, Ort, PLZ, Strasse, Nr)> <!ELEMENT HotelID (#PCDATA)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Kategorie (#PCDATA)> <!ELEMENT AdresseID (#PCDATA)> <!ELEMENT Nr (#PCDATA)> <!ELEMENT Ort (#PCDATA)> <!ELEMENT PLZ (#PCDATA)> <!ELEMENT Strasse (#PCDATA)> Auflösung der Fremdschlüssel- Beziehungen durch Einbettung der referenzierten Elemente 6-9

10 Abbildung von Datentypen Verwendung von XML-Schema: Vielzahl vordefinierter Datentypen <xsd:element name=''ort'' type=''xsd:string''> <xsd:element name=''plz'' type=''xsd:integer''> Erweiterung von DTDs um reservierte Attribute <ort xml-sqltype=''varchar''>rostock</ ort> <plz xml-sqltype=''integer''>18055</plz> XML-Prozessoren oder Applikationen müssen diese Informationen kennen und auswerten 6-10

11 Abbildung von objektrelationalen Datenbanken (1) Objektrelationale Datenbanken unterstützen nicht-atomare, komplexe Spalten tupelwertig kollektionswertig objektwertig referenzwertig Vorhandene Struktur soll in das XML-Dokument übernommen werden Instanzenebene Schemaebene 6-11

12 Abbildung von objektrelationalen Datenbanken (2) Instanzenebene: : adäquate Abbildung von Instanzen mit komplexen Attributen (Tupel( Tupel,, Mengen oder Listen) HotelID Hotelname <Adresse> {Telefon} PLZ Ort Strasse Nr H0001 Hotel Hübner Warnemünde Seestrasse 12 {'0381/5434-0', '0381/ '} <Hotelinformationen> <Hotel> <HotelID>H0001</HotelID> <Name>Hotel Hübner</Name> <Adresse> <PLZ>18119</PLZ> <Ort>Warnemünde</Ort> <Strasse>Seestrasse</Strasse> <Nr>12</Nr> </Adresse> <Telefon>0381/5434-0</Telefon> <Telefon>0381/ </Telefon> </Hotel> </Hotelinformationen> 6-12

13 Abbildung von objektrelationalen Datenbanken (3) Schemaebene: : Ableiten eines XML-Schema oder einer DTD aus objektrelationalem Schema INFORMIX-DDL CREATE ROW TYPE AdresseTyp ( PLZ INTEGER, Ort VARCHAR(25), Strasse VARCHAR(20), Nr INTEGER ); CREATE TABLE Hotel ( HotelID INTEGER NOT NULL PRIMARY KEY, Name VARCHAR(20) NOT NULL, Adresse AdresseTyp, Telefon SET(INTEGER NOT NULL) ); XML-DTD <!ELEMENT Hotelinformationen (Hotel*)> <!ELEMENT Hotel (HotelID, Name, Adresse, Telefon+)> <!ELEMENT HotelID (#PCDATA)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Adresse (PLZ, Ort, Strasse, Nr)> <!ELEMENT PLZ (#PCDATA)> <!ELEMENT Ort (#PCDATA)> <!ELEMENT Strasse (#PCDATA)> <!ELEMENT Nr (#PCDATA)> <!ELEMENT Telefon (#PCDATA)> 6-13

14 Eigenschaften der Abbildung von Tabellen Ausgabe der Datenbank vollständig Erforderliche Informationen keine Variables Ausgabeformat nein Erhalt von Datentypen durch erweiterte DTDs durch ein XML-Schema Speicherung von Schlüsseln und Fremdschlüsseln Abbilden auf Hierarchien im XML- Dokument ID/IDREF XML-Schema Weitere Besonderheiten Parser müssen DTD-Erweiterungen auswerten XML-Schema ist wesentlich besser geeignet als DTDs adäquate Darstellung von Tupeln, Mengen, Listen und Referenzen aus objektrelationalen Datenbanken im XML-Dokument 6-14

15 Generieren von XML-Dokumenten aus Datenbanken Generieren von XML-Dokumenten Standardabbildung von Tabellen Standardabbildung von Anfrageergebnissen Individuelle Abbildungsvorschriften Feste Transformationsregeln Feststehende Syntax des entstehenden XML-Dokumentes Auswahl der dazustellenden Daten durch die Datenbankanfrage Oracle DB2 Microsoft 6-15

16 Abbildung von Anfrageergebnissen Ergebnisse von SQL-Anfragen als XML-Dokumente bzw. XML-Elemente ausgeben Abbildung der Ergebnistabelle in eine Standard-Repräsentation Ergebnistabelle auf rowset-element Jede Zeile auf ein row-element Tabellenspalten auf Sub-Elemente oder XML-Attribute Dadurch kein variables Ausgabeformat XML SQL SELECT Name, Kategorie, Ort FROM Hotel, Adresse WHERE Ort='Warnemünde' AND Hotel.Hoteladr Hoteladr=Adresse. =Adresse.AdresseIDAdresseID <rowset> <row no='1'> <Name>Hotel Hübner</Name> <Kategorie>4</Kategorie> <Ort>Warnemünde</ Warnemünde</Ort> </row row> </rowset rowset> Ähnliches Verfahren Bestandteil im zukünftigen SQL/XML-Standard Standard 6-16

17 Eigenschaften der Abbildung von Datenbankanfragen Ausgabe der Datenbank partiell Erforderliche Informationen Datenbankanfrage/Datenbanksicht Variables Ausgabeformat nein Erhalt von Datentypen geht typischerweise verloren, wäre aber ableitbar Speicherung von Schlüsseln und Fremdschlüsseln bei tabelleninternen Beziehung abbildbar Einbettung ID/IDREF XML-Schema Weitere Besonderheiten keine 6-17

18 Generieren von XML-Dokumenten aus Datenbanken Generieren von XML-Dokumenten Standardabbildung von Tabellen Standardabbildung von Anfrageergebnissen Individuelle Abbildungsvorschriften Silkroute (SQL,XML-QL) Courvoisier/ Flach (DaS) (SQL+Muster für Ergebnis) Shamnagunsadaram et. al. XPERANTO Volker Turau (DB2XML) (XSLT) Laddad (XSLT) Auswahl der darzustellenden Daten durch die Datenbankanfrage Individuelle Transformationsregeln durch den Benutzer Dadurch Spezifikation der Syntax des entstehenden XML-Dokumentes 6-18

19 Varianten für individuelle Abbildungsvorschriften 1 Erweiterte Datenbankanfrage mit Transformationsregeln Datenbank 2 XML-Sicht Standardtransformation XML-Anfragesprache XML-Dokument 3 Standardisiertes XML-Dokument Standardtransformation XSLT- Stylesheet 6-19

20 Erweiterte Datenbankanfragesprachen Anteile von Datenbank- und XML-Anfragesprache Erweiterung des SQL-Dialektes um XML-Operatoren Datenbank Erweiterte Datenbankanfrage XML-Dokument Datenbankanfrage (in SQL) zur Auswahl der darzustellenden Daten XML-Anfrage zur Bestimmung der Syntax des Zielformates (beispielsweise: CONSTRUCT / RETURN / FOR XML) 6-20

21 Erweiterte Datenbankanfragesprachen Anfrage: : select * from Hotel, Adresse where (Hoteladr = AdresseID) construct <hotel> <name>{$ >{$name}</ }</name> <adresse> <plz>{$ >{$plz}< }<plz> <wohnort>{$ort}</ >{$ort}</wohnort> <strasse>{$ >{$strasse}</ }</strasse> <hausnummer>{$ >{$nr}</ }</hausnummer> </adresse adresse> </hotel> Ergebnis: <hotel> <name>hotel Hübner</name> <adresse> <plz>18119< >18119<plz> <wohnort>warnemünde</wohnort> <strasse>seestrasse</ >Seestrasse</strasse> <hausnummer>12</ >12</hausnummer> </adresse adresse> </hotel> XML-Element und XML- Attributnamen frei wählbar Zugriff auf die Spalten im SQL- Ergebnis 6-21

22 Individuelle Abbildungsvorschriften und XML-Anfragen Anfrage an die Datenbank mit XML-Anfragesprachen ermöglichen Naive Umsetzung Kompletten Datenbankinhalt in ein XML-Dokument umsetzen Komplettes XML-Dokument mit XML-Anfrage verarbeiten Sehr ineffizient (XML-Dokument evtl. gross, nur Teile davon gebraucht) Besser: XML-Sicht auf die Daten in einer Datenbank XML-Dokument wird nicht materialisiert (virtuell) XML-Anfragen werden an dieses virtuelle XML-Dokument gestellt Möglichst grosser Anteil der Verabeitung mittels nativer DB-Engine XML-Anfrage Datenbank XML-Sicht XML-Dokument 6-22

23 Speziallfall: : Annotationen von DTD oder XML-Schema Festlegen der genauen Verbindung von Datenbank-Entit Entitäten ten und XML- Elementen bzw. XML-Attributen Datenbank: Tabelle Hotel Hotel-URL huebner.de Name Hotel Hübner Einzelzimmer 198 Abbildungsvorschrift: <ClassMap> <ElementType Name=''hotel''/> <ToClassTable> <Table Name=''Hotel''> </ToClassTable> <PropertyMap> <Attribute Name=''url''/> <ToColumn> <Column Name=''Hotel-URL''/> </ToColumn> </PropertyMap> <PropertyMap>... <ElementType Name=''hotelname''/> Ergebnisdokument: <hotel url='' huebner.de''> <hotelname> Hotel Hübner </hotelname> <einzelzimmer> 198 </einzelzimmer> </hotel> Angabe der DB-Tabelle Konstruktion des XML- Ergebnisses Angabe des DB-Attributs 6-23

24 Beispiel Silkroute Silkroute Middleware zwischen RDBMS und XML- Applikation Entwickelt von AT&T und Uni Pennsylvania Erzeugen einer XML-Sicht Freie Wahl des Ausgabeformats Sichtinhalt wird nicht materialisiert XML-Anfragen über diese XML-Sicht XML-QL XQuery Problematik Ableiten der SQL-Queries aus der Sichtdefinition Meist muss nicht die ganze Sicht berechnet werden Beispiel einer View-Definition in Silkroute-Syntax: construct <view> from Adresse a, Hotel h construct <hotel> <name>$h.name</name> <adresse> <ort>$a.ort</ort> <plz>$a.plz</plz> <strasse>$a.strasse</strasse> <nummer>$a.nr</nummer> </adresse> </hotel> </view> 6-24

25 Eigenschaften individueller Abbildungsvorschriften Ausgabe der Datenbank vollständig oder partiell Erforderliche Informationen XML-Anfrage XSLT Sichtdefinition Variables Ausgabeformat ja Speicherung von Schlüsseln und Fremdschlüsseln Element-Schachtelung ID/IDREF XML-Schema Weitere Besonderheiten keine Erhalt von Datentypen gehen typischerweise verloren, wären aber ableitbar 6-25

26 Zusammenfassung Verschiedene Methoden existieren, um XML-Dokumente aus anderweitig elektronisch gespeicherten Informationen zu generieren Standardabbildung von Tabellen auf XML Standard-XML-Dokument: festgelegtes Ausgabeformat Standardabbildung von Abfrageergebnissen auf XML Ergänzung von Datenbankabfragen um XML-Funktionalität Standard-XML-Dokument Individuelle Abbildung von Tabellen und Abfrageergebnissen XML-Sichten auf Datenbankinhalte XML-Anfragesprachen arbeiten auf der Sicht Schwerpunkt dabei relationale und objektrelationale Datenbanken 6-26