Microsoft SQL Server 2000: Architektur Anwendung XML-Dokumente Internet Information Server (IIS) ADO Middleware SQLOLEDB MS SQL Server 2000 Datenbank Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-59 Abbildung von XML auf Datenbanken z Drei Varianten zur Speicherung von XML-Dokumenten – Modellbasierte Speicherung nach dem EDGE-Ansatz – Strukturbasierte Speicherung über STORED-Queries – SQL-Erweiterung um einen XML-Parser, der STORED-Queries verarbeitet Textbasierte Speicherung z SQL-Erweiterung um einen XML-Parser, der eine Ausgabe nach dem EDGE-Format generiert XML-Dokumente als CLOBs gespeichert Speicherung der XML-Inhalte (EDGE oder strukturbasierte Daten) über INSERT-SQL-Befehle in der Datenbank Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-60 Modellbasierte Speicherung mit EDGE (1) z Aufruf von OPENXML ohne WITH-Klausel liefert EDGE-Tabelle Spalte Datentyp Funktion id bigint Eineindeutige Knoten-ID parentid bigint ID des Vaterknotens nodetype int Unterscheidet Elemente, Attribute, Kommentare localname nvarchar Tag prefix nvarchar Präfix des XML-Namensraums namespaceuri nvarchar URI des XML-Namensraums datatype nvarchar Datentyp (abgeleitet aus DTD oder XML-Schema) prev bigint ID des Vorgängerknotens (in Dokumentordnung) text ntext Inhalt des Knotens Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-61 Modellbasierte Speicherung mit EDGE (2) EXEC sp_xml_preparedocument @hdoc OUTPUT, @xmldoctext INSERT INTO EDGE SELECT * FROM OpenXML (@hdoc, '', 0) EXEC sp_xml_removedocument @hdoc EDGE-Tabelle id parentid nodetype localname prefix namespaceuri datatype prev 0 NULL text 1 book NULL NULL NULL NULL NULL 3 #text NULL NULL NULL NULL ' Vossen ' ... 17 6 Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-62 Strukturbasierte Speicherung mit STORED-Queries z SQL-Erweiterung mit OPENXML z OPENXML transformiert XML-Inhalte zu Datenbanktabellen (Shredding) z OPENXML ermöglicht es damit auch, STORED-Queries zu implementieren z Beispiel für die Umsetzung einer STORED-Query: EXEC sp_xml_preparedocument @hdoc OUTPUT, @xmldoctext INSERT INTO book SELECT * FROM OpenXML (@hdoc, '//book/', 0) WITH ( title NVARCHAR(3000) ‘./title', publisher NVARCHAR(200) ‘./publisher‘, isbn NVARCHAR(15) ‘./isbn‘ ) EXEC sp_xml_removedocument @hdoc Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-63 Strukturbasierte Speicherung: Beispiel z Ergebnistabelle erzeugen: CREATE TABLE book ( publisher NVARCHAR(200) , title NVARCHAR(3000), isbn NVARCHAR(15) ) z Nach STORED-Query von der vorigen Seite ergibt sich der Tabelleninhalt: publisher title Addison Wesley Datenmodelle isbn 3-89319-566-1 Springer Datenbank-Handbuch 3-540-10741-X Thomson Objektdatenbanken Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 3-8266-0258-7 11-64 Abbildung von Datenbanken auf XML z Variante 1: Standardabbildung mit SQL SELECT und FOR XML-Klausel – – FOR XML RAW: Umsetzung in ROW-XML-Elemente und XML-Attribute FOR XML AUTO: – z Semantisch reiche XML-Element-Namen Fremdschlüssel-Beziehungen werden in Hierarchien umgesetzt FOR XML EXPLICIT: Nutzer steuert XML-Aufbau durch Metadaten (EDGE) Variante 2: Benutzerdefinierte XML-Sicht – – – Verwendung eines (vorhandenen) XML-Schemas Annotation des Schemas mit Informationen über Tabellen und Spalten Zugriff der Anwendung auf die XML-Sicht über: IIS-Funktionalität ADO (ActiveX Data Objects) – Middleware zum DB-Zugriff Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-65 Variante 1: FOR XML-Klausel SELECT title, publisher, isbn, lastname FROM book, author WHERE book.id = author.bookid FOR XML AUTO, ELEMENT XML-Elemente statt Attribute verwenden XML_XXXX: NTEXT (CLOB) <book> <title> Datenmodelle </title> <author> <lastname> Vossen </lastname> </author> <isbn>3-89319-566-1 </isbn> <publisher> Addison-Wesley </publisher> </book> ... Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-66 Variante 2: Benutzerdefinierte XML-Sichten z Annotiertes XML-Schema – – – – – z Zusätzlicher Namensraum: xmlns:sql="urn:schemas-microsoft-com:mapping-schema" Konform zum XML-Schema-Standard des W3C Annotation sql:relation: Bezug zwischen XML und einer Tabelle Annotation sql:field: Bezug zwischen XML und einer Tabellenspalte Annotation sql:relationship: Schlüssel-Fremdschlüssel-Beziehung in der DB Zugriff auf die XML-Sicht über XPath ist möglich – – – – aus dem Browser über IIS aus Applikationen via ActiveX Data Object (ADO) – Middleware zum DB-Zugriff Nicht alle XPath-Konstrukte können abgedeckt werden XPath wird in äquivalentes SQL auf der Datenbank übersetzt Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-67 Benutzerdefinierte XML-Sicht: Beispiel <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema"> <xsd:element name= "Buch" sql:relation= "book" type= "BuchTyp"/> <xsd:complexType name= "BuchTyp" > <xsd:sequence> <xsd:element name= "Titel" sql:field= "title"/> <xsd:element name= "ISBN" sql:field= "isbn"/> <xsd:element name= "Verlag" sql:field= "publisher"/> </xsd:sequence> </xsd:complexType> </xsd:schema> Definition der XML-Struktur Definition der Tabellenspalten Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-68 Benutzerdefinierte XML-Sicht: Beispiel publisher title Addison Wesley Datenmodelle isbn 3-89319-566-1 Springer Datenbank-Handbuch 3-540-10741-X Thomson Objektdatenbanken 3-8266-0258-7 <Buch> <Titel> Datenmodelle </Titel> <ISBN> 3-89319-566-1 </ISBN> <Verlag> Addision Wesley</Verlag> </Buch> ... <Buch> <Titel> Objektdatenbanken </Titel> <ISBN>3-8266-00258-7 </ISBN> <Verlag> Thomson </Verlag> </Buch> Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) SichtDefinition Sichten können als XML-Dokumente über den IIS abgerufen werden, um sie dann weiterzuverarbeiten 11-69 Manipulationen z SQL Server 2000 bietet keine Funktion zur Manipulation von XMLDokumenten, die als CLOB gespeichert sind z Dadurch deutliche Einschränkung des textbasierten Ansatzes z Manipulationen bei strukturbasierten Abbildungen sind möglich über sogenannte Updategrams – – – Aufbauend auf annotierte XML-Schemas Formulierung der Änderungen in einem XML-Dokument: Neuer Namensraum: xmlns:updg="urn:schemas-microsoft-com:xml-updategram" – Definition eines vorigen (abzuändernden) Zustandes Definition des neuen Zustandes Unterschiedliche Änderungsoperationen durch verschiedene Elementinhalte z Element before: Element after: Einfügen : Löschen: Update: before-Element wird leer gelassen after-Element wird leer gelassen beide Elemente haben nicht-leeren Inhalt Automatische Durchführung der erforderlichen Datenbankoperationen Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-70 Manipulationen: Beispiel für Updategrams z Datenbestand mit XML-Sicht wie im vorigen Beispiel z Änderungsoperation: Update der Verlagsinformation <ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> <updg:sync > <updg:before> <Buch> <Titel> Objektdatenbanken </Titel> <ISBN>3-8266-00258-7 </ISBN> <Verlag> Thomson </Verlag> </Buch> </updg:before> <updg:after> <Buch> <Titel> Objektdatenbanken </Titel> <ISBN>3-8266-00258-7 </ISBN> <Verlag> International Thomson Publishing </Verlag> <Buch> </updg:after> </updg:sync> </ROOT> Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-71 Zusammenfassung SQL Server 2000 XML-Unterstützung XML-Speicherung Modell relational Schemabeschreibung inline DTD oder XML-Schema Art der Speicherung textbasiert: CLOB-Spalte modellbasiert: mit OPENXML benutzerdefiniert strukturbasiert: mit OPENXML – STORED Queries Abbildungen von DB auf XML automatisch: FOR XML-Klausel benutzerdefiniert: XSD-Annotationen XML-Datentyp Indexe Wertindex Standard-DBS-Indexe Volltextindex keine XML-spezifischen Funktionen Pfadindex Anfragen und Manipulation Anfragen SQL-Erweiterungen, XPath-Dialekt Manipulationen mit Updategrams Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-72 Kritik des Ansatzes von SQL Server 2000 z Zu eingeschränkte Unterstützung von XML im DBS-Kern – – – z Viele Möglichkeiten, XML auf DB-Strukturen abzubilden – z Unterstützung von STORED-Queries positiv Benötigte Infrastruktur zu komplex – z kein XML-Datentyp vorhanden keine Unterstützung für Updates durch XML-Prozessor im DBS Unterstützung für SQL/XML fehlt komplett Internet Information Server ist hier eigentlich unnötig Positiv: Annotation von Standard-XML-Schemas für die Sichtenbildung Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-73 Tamino - Architektur (1) Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-74 Tamino - Architektur (2) XML Parser: Wohlgeformtheit & Korrektheit Object Processor: Speichert XML und SQL Daten Query Interpreter: X-Query (XPath-ähnlich) Interpretation gemäß Data Map Objekt Composer: Generiert XML Dokumente aus Anfragen Utilities: Beschleunigung beim Laden Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-75 Speicherungsstrukturen: Abbildung von XML z Tamino verwendet eine "native" Speicherungsstruktur für XML z Ergänzung der nativen Speicherung durch diverse klassische Indextypen – – – z B-Baum-Index Volltextindex zusätzlich: Pfadindex Speicherungsalternativen – – Speicherung von wohlgeformten XML-Dokumenten ohne Schemadefinition Speicherung von schemavaliden XML-Dokumenten z Annotation der Schema-Definition mit Speicherungsvarianten Hierarchie der Speicherung – – – – 1. Ebene: Tamino 2. Ebene: Kollektion 3. Ebene: Dokumenttyp (definiert durch Menge von XML-Schema-Definitionen) 4. Ebene: Dokumentinstanz Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-76 <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tsd="namespaces.softwareag.com/tamino/TaminoSchemaDefinition"> <xs:annotation> <xs:appinfo> <tsd:schemaInfo name="book"> <tsd:collection name="books"></tsd:collection> <tsd:doctype name="book"> <tsd:logical> <tsd:content>open<tsd:content></tsd:logical> </tsd:doctype> </tsd:schemaInfo> </xs:appinfo> </xs:annotation> <xs:element name = "book"> <xs:complexType> <xs:sequence> <xs:element name = "title" type = "xs:string"></xs:element> … <xs:element name = "summary" type = "xs:string"> <xs:annotation> <xs:appinfo> <tsd:elementInfo> <tsd:physical> <tsd:native> <tsd:index> <tsd:text></tsd:text> </tsd:index> </tsd:native> </tsd:physical> </tsd:elementInfo> </xs:appinfo> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> Speicherung: Beispielschema mit Annotation für Text-Index Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-77 Anfragen z Möglichkeiten zum Zugriff – – – z Programmgesteuert bspw. über DCOM-Komponenten Ad-Hoc-Anfragen mit Query Tool des X-Plorer "Interactive Interface" Unterstützte Anfragesprachen – XPath 1.0-Dialekt mit Erweiterungen für Textsuche (auch ohne Index möglich) Enthaltensein (~=) /Buch[Titel ~= "Datenmodelle"]/Beschreibung Platzhalter (*) /*[. ~= "*XML*"] Kontextberücksichtigung (NEAR) /*[/Autor ~= "Gunter" NEAR "Saake"] – XQuery-Dialekt Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-78 Manipulation z Operationen (innerhalb von UPDATE sind mehrere Operationen möglich) – Löschen: UPDATE DELETE $buch//Verlag[@Ort="Zürich"]/@Ort – Einfügen: UPDATE INSERT <Preis Waehrung="EUR">35</Preis> INTO $buch[@ISBN="3-8266-0258-7"] – Ersetzen: UPDATE REPLACE $buch//Verlag[@Ort="Zürich"]/@Ort WITH ATTRIBUTE Ort {"Wiesbaden"} Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-79 Zusammenfassung Tamino XML-Speicherung Modell nativ Schemabeschreibung Validierung möglich Art der Speicherung modellbasiert Abbildungen von DB auf XML nativ XML-Datentyp — Indexe Wertindex vorhanden Volltextindex vorhanden Pfadindex vorhanden Anfragen und Manipulation Anfragen Tamino X-Query (Erweiterungen und kleinen Abweichung von W3C XQuery) Volltextsuche unterstützt Manipulationen unterstützt Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-80 Excelon - Architektur Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-81 Zusammenfassung Excelon XML-Speicherung Modell objektorientiert (DOM) Schemabeschreibung Validierung möglich Art der Speicherung modellbasiert Abbildungen von DB auf XML nativ XML-Datentyp — Indexe Wertindex Volltextindex Pfadindex Anfragen und Manipulation Anfragen XQL, XPath 1.0 + Teile von XQuery 1.0 Volltextsuche Manipulationen XUpdate (SQL-ähnlich mit XPath 1.0) Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-82 Poet - Architektur Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-83 Zusammenfassung Poet XML-Speicherung Modell objektorientiert Schemabeschreibung für strukturierte Speicherung erforderlich Art der Speicherung modellbasiert, strukturiert Abbildungen von DB auf XML über Java-Methoden XML-Datentyp — Indexe Wertindex Volltextindex — Pfadindex Anfragen und Manipulation Anfragen OQL Volltextsuche — Manipulationen OQL Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-84 Infonyte-DB - Architektur Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-85 Zusammenfassung Infonyte-DB XML-Speicherung Modell nativ (DOM) Schemabeschreibung Validierung möglich Art der Speicherung modellbasiert Abbildungen von DB auf XML nativ XML-Datentyp Indexe Wertindex Volltextindex Pfadindex Anfragen und Manipulation Anfragen XPath 1.0 + Teile von XQuery 1.0 Volltextsuche — Manipulationen über DOM-Methoden Vorlesung "XML und Datenbanken" - WS 2003/2004 (Dr. C. Türker) 11-86