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