XML und Datenbanken - Systeme - Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik [email protected] www.xml-und-datenbanken.de Inhalt der Vorlesung Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Vorstellung verschiedener Systeme Objektrelationale und relationale Datenbanksysteme und ihre Erweiterungen – Oracle – DB2 – MS SQL-Server Native XML-Datenbanksysteme – Tamino – Infonyte Weitere Systeme – Galax – Berkeley DB XML Benchmarks Literatur Meike Klettke !!!!! Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Alle Systeme zur Speicherung und Verwaltung von XMLDokumenten unterliegen ständig Änderungen damit ändert sich auch die Funktionalität besonders aber kann sich auch die Syntax verändern es gibt also keine langfristige Garantie für die Korrektheit der Beispiele Syntaxbeispiele werden deshalb nur sparsam eingesetzt und dienen vorwiegend der Illustration von dargestellter Funktionalität Wenn Syntax aus dem Buch und der VL voneinander abweichen, dann gilt Syntax der VL Meike Klettke Oracle Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Mit Oracle 10, Vereinigung der Daten- (Data) und Inhaltsverarbeitung (Content Processing) Grundlegende Funktionen – – Ausgabe von Datenbankinhalten mit XML-Syntax Verschiedene Speicherungsverfahren Meike Klettke Oracle XML Developer's Kit (Oracle XDK) Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Grundbausteine zum Lesen, Manipulieren, Transformieren, Anzeigen und Generieren von XML-Dokumenten XML Parser: – DOM (einschließlich Version 3.0), SAX – direkter Zugriff auf XMLTypen in den Oracle Datenbanken über C DOM Schnittstellen XSLT Prozessoren (mit XSLT 2.0 Java Unterstützung) XML Schema Prozessoren: unterstützen die Validierung gegen ein XMLSchema XML Class Generator: generiert automatisch Java-Klassen aus DTDs oder XML-Schemata XML SQL Utility: – generiert XML-Dokumente, DTDs und XML-Schemas aus SQLAnfragen – realisiert das Insert von XML-Dokumenten in Oracle-Datenbanken … Meike Klettke verschiedene Modi zur XMLSpeicherung Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Speicherungsverfahren – Native Speicherung von XML-Dokumenten • Verschiedene Möglichkeiten • Anfrage mit XPath, XQuery – Strukturierte Speicherung von XML-Dokumenten in Datenbanken, • Anfragen: XPath, XQuery, SQL Meike Klettke 1. Speicherung als CLOB Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Verwendung von Oracle Text zur Speicherung kein Schema erforderlich Auswertung durch Anfragen, in denen auch das Markup ausgewertet wird SELECT * FROM hotels WHERE contains(hotel, 'Strand INPATH (/hotels/hotel/beschreibung) ') > 0 ORDER BY score DESC; Auch Methoden hasPath() und contains() erlaubt Meike Klettke 2. relationale Speicherung Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Umkehrung der Exportfunktion XML-Dokumente müssen einer bestimmten Syntax entsprechen (dreistufige Schachtelung von Elementen, die auch beim Export eingesetzt wird) diese Syntax kann auch über XSLT erreicht werden Meike Klettke native Speicherung als Dokument /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme ab Version 9i , Release 2: XMLType (Datentyp) Für Relationen oder Attribute einsetzbar, die dann XML enthalten können Validierung beim Einfügen von Daten ist möglich Transformation mit XSL kann erfolgen CREATE TABLE hotels ( name VARCHAR2(40), ort VARCHAR2(35), beschreibung SYS.XMLTYPE, ausstattung SYS.XMLTYPE, preise SYS.XMLTYPE, telefonnr 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'); Meike Klettke native Speicherung als Dokument /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XPath-Ausdrücke in SQL SELECT ausstattung.extract ('schwimmbad/text()').getStringVal() "Swimmingpool" FROM hotels; Swimmingpool ----------------Original-Thalassozentrum. Wir haben fuer Sie frisches Ostseewasser in das Hotel geholt! Meike Klettke native Speicherung als Dokument /3 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Neben create und extract weitere Methoden: – existNode(), – schemaValidate(), • Validierung der XML-Dokumente gegen das zugeordnete Schema – appendChildXML(), insertXMLBefore(), deleteXML(), updateXML(), • Also Updateoperationen – transform() • XSL-Transformationen Meike Klettke 4. native objektrelationale Speicherung Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme ab Version 9 i, Release 2 Einsatz eines annotierten XML-Schema, das die Zuordnung zwischen den – Elementen/Attributen der XML-Dokumente und den – Relationen und Attributen der Datenbank beschreibt. Beispiel: warum nativ: alle Informationen aus dem DOM in Metadaten gespeichert Meike Klettke native objektrelationale Speicherung Beschreibung des Mappings Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Oracle: XML schema extension <xs:schema … > <xs:element name="PurchaseOrder" type="PurchaseOrderType" xdb:defaultTable="PURCHASEORDER"/> <xs:complexType name="PurchaseOrderType" xdb:SQLType="PURCHASEORDER_T"> <xs:sequence> <xs:element name="Reference" type="ReferenceType" minOccurs="1" xdb:SQLName="REFERENCE"/> <xs:element name="Actions" type="ActionsType" xdb:SQLName="ACTIONS"/> <xs:element name="Reject" type="RejectionType" minOccurs="0" xdb:SQLName="REJECTION"/> <xs:element name="Requestor" type="RequestorType" xdb:SQLName="REQUESTOR"/> <xs:element name="User" type="UserType" minOccurs="1" xdb:SQLName="USERID"/> … Meike Klettke Kombination von Speicherungsvarianten Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Verschiedene Speicherungsvarianten können kombiniert werden. Unterstützung bei der hybriden Speicherung von XMLDokumenten dadurch möglich – Datenzentrierte Anteile werden strukturiert in Datenbanken gespeichert – dokumentzentrierte Anteile als XMLType gespeichert Anfragen können dann auf beiden Speicherungsvarianten durchgeführt werden. Beim Export lassen sich die verschiedenen Speicherungsformen wieder zusammenführen, sodass die XML-Dokumente wiederhergestellt werden können. Meike Klettke Oracle – Schemaprüfung Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme beim Einfügen von XMLDokumenten erfolgt "leichte" Schemaprüfung (Test auf Gültigkeit) aus Effizienzgründen vollständige Schemaprüfung ist aktivierbar Meike Klettke Anfragen Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme bei CLOB-Speicherung: – in SQL MM Text definierte Operationen XQuery-Anfragen als Bestandteil einer SQL-Anfragen SQL bei relationaler Speicherung Meike Klettke Oracle – Ausgabe von XML /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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> Meike Klettke Oracle – Ausgabe von XML Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Weitere Möglichkeit: SQL/XML Folgt bei DB2 Meike Klettke logisch physisch Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme konzeptuell Oracle – Einordnung IR-Anfragen CLOB XMLType SQL + XPath relationale Speicherung nativ objektrelationale Sp. dokumentzentriert Meike Klettke XPath, XQuery semistrukturiert datenzentriert Oracle – Zusammenfassung /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML-Speicherung: Modell: objektrelationales Modell, oder Dokumentmodell (bei CLOBs) Schemabeschreibung: nicht notwendig, Validierung möglich, bei objektrelationaler Speicherung annotiertes Schema erforderlich Art der Speicherung: – (Als CLOB) – vollständige Speicherung als XMLType (nativ als Dokument), – Native objekt-relationale Speicherung – fragmentierte Speicherung ist ebenfalls möglich Ordnungserhaltung: ja, außer bei relationaler Speicherung Indizierung: Struktur, Pfade: in Oracle Text schon länger, Strukturindex seit Version 10 Werte: ja Volltext: ja Meike Klettke Oracle – Zusammenfassung /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML-Import, XML-Export: Export in festes Format, Import aus feststehendem Format, weitere Anpassungen mit XSLT Import über annotiertes XML-Schema Export durch SQL/XML oder auch XQuery Anfrage- und Manipulationsschnittstellen: Anfragen: XPath auf XMLType, XQuery, SQL Volltextfunktionalität: ja (Information Retrieval mit Oracle Text), also bei Speicherung als CLOB und XMLType Änderungsoperationen: darstellbar, bei XMLType und CLOB realisiert durch vollständigen Austausch der XML-Dokumente Transformationen: XSLT Werkzeuge, Besonderheiten XSLT-Prozessor, XML-Prozessoren (DOM, SAX), XML Schema Validator Meike Klettke DB2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme DB2 UDB mit XML- und TextExtender 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 Meike Klettke XML Extender Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme vereinigt objektrelationale Datenbanktechnologie mit XML ab DB2 UDB V7.1 integriert realisiert zwei Speicherungstechniken – XML Collection • Mechanismus zur Abbildung auf objektrelationale Strukturen – XML Column • XML-Datentyp zur Speicherung von ganzen XMLDokumenten oder XML-Fragmenten eingesetzt Form der Speicherung wird mit Data Access Definition (DAD) beschrieben Einsatz beim Import und Export Anfragemöglichkeiten von SQL und XPath Meike Klettke Möglichkeiten zur Speicherung Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML Column XML Collection Meike Klettke Zusammenwirken der Komponenten Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Meike Klettke Syntaxbeispiel: DAD-File Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme <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> Meike Klettke Anfragen Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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 Meike Klettke Text Extender und Volltextsuche Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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 Meike Klettke Ausgabe von XML-Dokumenten Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme SQL/XML – Sprache wurde bei der Vorstellung von Oracle schon kurz beschrieben über DAD-Files angegeben damit Beschreibung, welche Daten ausgegeben werden sollen und wie die Syntax der Ergebnis-XML-Dokumente aussehen soll Meike Klettke Nativer Datentyp XML Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Seit 2006: nativer XML-Type Viper (Beta-Testversion) XML als Type kann Attributen beim Erzeugen von Relationen zugeordnet werden Einfügen von Werten in Form von XML-Dokumenten in diese Relationen Anfrage von XML-Attributen durch Pfadausdrücke (XPath) und XQueries Meike Klettke Viper Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Meike Klettke Viper Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Meike Klettke Viper Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Relationen mit XML-Attributen entwerfen create table items ( id brandname itemname sku srp comments ) int primary key not null, varchar(30), varchar(30), int, decimal(7,2), xml Erstellen eines Indexes in XML-Typen create index myindex on items(comments) generate key using xmlpattern '/Comments/Comment/CommentID' as sql double Meike Klettke Viper Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML-Datentypen in SQL-Anfragen select * from items where sku = 112233 select id, brandname, itemname, sku, srp, comments from items where sku = 112233 XQuery-Anfragen zur Suche im XMLType xquery db2-fn:xmlcolumn ('ITEMS.COMMENTS')/Comments/Comment/Message prefix XQuery ist erforderlich, weil Viper 2 Anfragesprachen unterstuetzt Gleiche Anfrage xquery for $y in db2fn:xmlcolumn('ITEMS.COMMENTS')/Comments/Comment return ($y/Message) Meike Klettke DB2 – Ausgabe von XML Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Weitere Möglichkeit: SQL/XML select xmlserialize (content xmlelement(name "testname",fachrichtung_name) as clob(120)) as "result" from studienfach select xmlserialize(content xmlelement(name "studentendaten", xmlelement(name "nachname", name), xmlelement(name "vorname", vorname)) as clob(120)) as "result" from student select xmlserialize(content (xmlelement(name "studentendaten", xmlagg(xmlelement(name "nachname", name))) as clob(600)) as "result" from student Meike Klettke logisch SQL-MM mit Erweiterungen physisch Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme konzeptuell DB2 – Einordnung Volltext- und Strukturindex dokumentzentriert Meike Klettke XML Type (Viper) Mapping durch DAD-Files SQL Verarbeitung des XML Types semistrukturiert objektrelationale Datenbank datenzentriert DB2 – Zusammenfassung /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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 Meike Klettke DB2 – Zusammenfassung /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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 Meike Klettke MS SQL Server Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme SQL Server 2000 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 SQL Server 2005 Nativer XML-Datentyp XML-Index XQuery und XML DML (XML Data Manipulation Language) Meike Klettke Ausgabe von XML Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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. in SQL-Server 2005 auch SQL/XML Meike Klettke Syntax Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme select from where for xml (raw | auto [, elements] | explicit) Meike Klettke RAW-Modus Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme SELECT Hotel.Name, Zimmertyp.Typ, Zimmertyp.Preis FROM Hotel, Zimmertyp WHERE Hotel.Name = Zimmertyp.HName FOR XML RAW 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"/> Meike Klettke 3 Arten der Speicherung von XMLDokumenten Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Native Speicherung als XML Type Abbildung auf relationale Speicherung Speicherung als large Objekts LOBs – (wenn Dokumente exakt erhalten bleiben müssen und nicht nur Infoset „-konformität“ ausreicht) Hybride XML-Speicherungsverfahren sind möglich – Auswahl verschiedener Verfahren für unterschiedliche XML-Dokumentanteile Meike Klettke Nativer Datentyp XML /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Validitätstests beim Einfügen von Daten möglich Intern wird ein Binärformat verwendet, schneller in der Verarbeitung als die Textrepräsentation CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML) INSERT INTO docs VALUES (1,‚ <book genre="security" publicationdate="2002" ISBN="0-7356-1588-2"> <title>Writing Secure Code</title> <author> <first-name>Michael</first-name> <last-name>Howard</last-name> </author> <author> <first-name>David</first-name> <last-name>LeBlanc</last-name> </author> <price>39.99</price> </book>') Meike Klettke Nativer Datentyp XML /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML Type kann in der gleichen Relation oder in einer separaten (verbunden durch Fremdschlüssel) abgelegt werden (in separater, wenn XML-Index nicht über dem Primärschlüssel der Hauptrelation erfolgen soll) XML-Index indiziert Tags, Werte, Pfade (verwendet B+-Bäume für alles) Volltextindex möglich SELECT * FROM docs WHERE contains (xCol, 'Visionen', LANGUAGE 'German') Anfragen: SELECT * FROM docs WHERE CONTAINS(xCol,'Secure') AND Col.exist('/book/title/text()[contains(.,"Secure")]') =1 Im oberen Beispiel: verschiedene Semantik von contains: – 1. Auftreten Stammwortreduktion – 2. Teilstring-Match Meike Klettke SQL-Server – XML-Sichten über einer Datenbank Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme durch annotierter XDR (XML-Data Reduced) Schema oder annotiertes XML-Schema (AXDS) 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> Meike Klettke logisch physisch Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme konzeptuell SQL-Server – Einordnung Meike Klettke XPath SQL Updategram Volltextoperationen Edge-Table dokumentzentriert semistrukturiert relationale Datenbank datenzentriert SQL-Server–Zusammenfassung /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML-Speicherung: Modell: relationales Modell Schemabeschreibung: XDR für XML-Sichten, DTD oder Schema zur Typableitung in OpenXML Art der Speicherung: fragmentierte Speicherung oder XMLDatentyp Ordnungserhaltung: ja (Beim XML-Datentyp) XML-Datentyp: ja Indizierung Struktur, Pfade: ja Werte: ja Volltext: ja Meike Klettke SQL-Server–Zusammenfassung /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML-Import, XML-Export: Import und Export durch annotiertes XDR-Schema oder XML-Schema (AXDS annotated …) Anfrage- und Manipulationsschnittstellen: Anfragen: SQL, XPath, XQuery Volltextfunktionalität: ja Änderungsoperationen: an XML mit Updategrammen Transformationen: XSLT 1.0 Werkzeuge, Besonderheiten: Integration mit Web-Services über Middleware Laden von XML-Massendaten Hybride Speicherung wird ausdrücklich empfohlen Meike Klettke Tamino Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme von der Software AG entwickelt eines des bekanntesten nativen XML-Datenbanken vollständig für die Verarbeitung von XML-Dokumenten entwickelt (Erfahrungen aus der Entwicklung von adabas) Meike Klettke Tamino - Eigenschaften Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme native Speicherung der XML-Dokumente Anfragen mit XPath / XQuery Volltextfunktionalität ergänzt Updateoperationen möglich Sperrverfahren auf der Ebene von ganzen XMLDokumenten Meike Klettke Tamino - Architektur XML Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme HTTP Web-Server X-Port X-Machine XML Engine Meike Klettke XML Data Server metadata Data map X-Node Server extensions X-Tension Data Store Kernel open API external data source Speicherung und Retrieval von XML-Dokumenten XML-Ausgabe Anfrage (URL) Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Query Interpreter XML Objekte, DTDs XML Parser Object Prozessor Object Composer Daten von externen Datenquellen und/ oder der internen Datenspeicherung Meike Klettke Data Map Utilities Daten an externe Datenquellen und/ oder an die intere Datenspeicherung Editor für XMLDokumente, Schema, ... XML Spy logisch XPath 1.0 XQuery 1.0 mit XPath 2.0 physisch Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme konzeptionell Tamino - Einordnung native Speicherung der XMLDokumente dokumentzentriert Meike Klettke semistrukturiert datenzentriert Tamino –Zusammenfassung /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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 Indizierung Struktur, Pfade: ja Werte: ja Volltext: ja Meike Klettke Tamino –Zusammenfassung /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme 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) Meike Klettke infonyte Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Am Fraunhofer Institut IPSI in Darmstadt entwickelt, vom Spin-Off Infonyte GmbH weiterentwickelt und vermarktet Grundidee: persistente Speicherung des DOM Vorgehensweise Speicherung kann ohne DTD oder Schemainformationen erfolgen Anfragen: XPath, XQL oder über DOM-API Integration eines XSLT-Prozessors Meike Klettke Systemeigenschaften Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme basiert nicht auf existierenden Datenbanken, entwickelt eigene Komponenten zur physischen Speicherung, Indizierung, usw. Benötigt also auch kein zusätzliches Datenbanksystem Modular konzipiert dadurch "schlanke und leistungsfähige" Implementierung Offengelegte Backend-Schnittstelle erlaubt die Integration anderer Speicherungssysteme Meike Klettke infonyte - Architektur Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Meike Klettke logisch DOM XPath1.0 XQL Updates physisch Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme konzeptionell infonyte - Einordnung Speicherung der DOM Informationen dokumentzentriert Meike Klettke semistrukturiert datenzentriert infonyte - Lösungen Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Datenintegration und -bereinigung in Data Warehouses – Mit Anfragetechniken und XSLT, verschiedene Umformungen, zum Beispiel Gruppierung möglich Datenpublikation – Individuell angepasste Lese-/Browsingumgebungen – Umfangreiche XML-Dokumente erfordern zur Speicherung oft 10-20fachen Platz im Hauptspeicher – Einsatz von infonyte reduziert das – Darstellung von Inhalten ohne Speicherbegrenzung Technische Dokumentationen – ähnliches Szenario – Autorenseite und – Anwender /Leserseite, über Webbrowser, aber auch PDAs Meike Klettke infonyte – Zusammenfassung /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML-Speicherung: Modell: Struktur des DOM Kompaktes verlustfreies Binärformat für XML-Dokumente Schemabeschreibung: Schema ist keine Voraussetzung für die Speicherung Art der Speicherung: vollständige Speicherung Ordnungserhaltung: ja XML-Datentyp: nein Indizierung: Struktur, Pfade: ja Werte: ja Volltext: ja Meike Klettke infonyte – Zusammenfassung /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme XML-Import, XML-Export nein, allerdings Integration von XSLT Anfrage- und Manipulationsschnittstellen Anfragen: XPath 1.0, XQL Volltextfunktionalität: nein Änderungsoperationen: über DOM-Methoden Transformationen: XSLT 1.0 Werkzeuge, Besonderheiten: Keine XSLT für riesige XML-Dokumente (im Gigabereich) 2-Phasen Commit Protokoll für Updaterealisierung Graphische XML-Autorenumgebung (Texteditor, Baumansichten, Fenster für XPath, XQL, Benutzerschnittstelle für Datenbankeinstellungen) Meike Klettke exist Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme eXist: Open Source native XML database • effiziente, index-basierte XQuery Verarbeitung, XQuery 1.0 Working Draft ist implementiert • Automatische Indizierung • Erweiterungen zur Volltextsuche • XQuery Update Erweiterung http://exist.sourceforge.net Meike Klettke Berkeley DB XML Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme basiert auf der Berkeley DB sind C++-Bibliotheken, die in die jeweilige Anwendung eingebunden werden – kostenfrei speichert XML-Dokumente im XML-Format (nicht in Form von Relationen) Zusammenfassung von gleichartigen XML-Dokumenten in Containern Abspeicherung als komplettes Dokument oder aufgeteilt auf individuelle Knoten möglich Ergänzen von individuellen Metadaten zu den XMLDokumenten ist möglich Anfragen: XPath, XQuery Meike Klettke Galax Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme open-source Implementation of XQuery 1.0 Ziel: volle Übereinstimmung mit den W3C XQuery Spezifikationen Referenzimplementation für XQuery 1.0 Anfrageoptimierung steht im Mittelpunkt über XQueyr hinaus gehende Eigenschaften: – Updates – Volltextoperationen Galax release 0.5.0 http://www.galaxquery.org Meike Klettke Galax - Mitwirkende Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Mary Fernández, AT&T Labs Jérôme Siméon, IBM Watson Research Cindy Chen, University of Massachusetts at Lowell Byron Choi, University of Pennsylvania Vladimir Gapeyev, University of Pennsylvania Amélie Marian, Columbia University Philippe Michiels, Universiteit Antwerpen, Belgium Nicola Onose, Ecole Polytechnique, France Douglas Petkanics, University of Pennsylvania Christopher Ré, University of Washington Michael Stark, University of Darmstadt Gargi Sur, University of Florida Avinash Vyas, Bell Laboratories Philip Wadler, University of Edinburgh, Scotland Meike Klettke Query-Verarbeitung Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Meike Klettke XML-Benchmarks /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Ziel: Vergleich von Systemen Bekannte Benchmarks – Xmark (Schmidt et.al: Niederlande) – XOO7 (Nambiar et al.: University of Singapore, Arizona State University) – XMach-1 (Böhme, Rahm: Universität Leipzig) – es gibt noch weitere, auch noch welche, die sich in der Entwicklung befinden Meike Klettke XML-Benchmarks /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme Vorgehensweise: definieren Umgebungen für Benchmarktests, bestehend aus – gegebenen XML-Dokumenten oder – Methoden zum Generieren von XML-Dokumenten mit bestimmten Eigenschaften – Menge von XQuery-Anfragen – teilweise Updates Bewertet wird der Durchsatz in den einzelnen getesteten Systemen. (Metrik: XML queries per second) Meike Klettke Wahl des Speicherungssystems Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme alle Systeme haben die „Datenbankvorteile“ gegenüber dem Filesystem, z.B.: – Datensicherheit, Konsistenztests, Indizierung, Anfragerealisierung, Optimierung, und viele mehr Wahl des Systems hängt von aktuellen Anforderungen ab hier dargestellte Eigenschaften stellen qualitative Kriterien dar (diese nähern sich aber durch die Standardisierung an) Benchmarks versuchen quantitative Vergleiche häufig spielt sicher auch eine Rolle, ob schon ein DBS in einer Firma/ einem Projekt/ einer Anwendung eingesetzt wird, das wird dann häufig auch für die Speicherung der XML-Dokumente verwendet Meike Klettke Literatur /1 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme – www.ibm.com – www.oracle.com/xml – Ulrike Schwinn (Oracle): XML in der Oracle Datenbank „relational and beyond“, BTW 2003 – Rüdiger Eichin, Excelon: Prozeßmanagement auf der Basis von XML, Fachgruppentreffen, GI-Fachgruppe Datenbanksysteme, Darmstadt, 2002 – eXtensible Information Server (XIS), Native XML Data Management System, www.exceloncorp.com/products/xis/ – www.microsoft.com Meike Klettke Literatur /2 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme – www.softwareag.com/tamino – Harald Schöning, Jürgen Wäsch: Tamino --- An Internet Database System, Advances in Database Technology --- EDBT 2000, LNCS 1777, S. 383—387 – Harald Schöning: XML und Datenbanken, Hanser Verlag, 2003 – Walter Waterfeld: Realisierungsaspekte eines XML Datenbanksystems, BTW 2001 – www.infonyte.com – Thomas Tesch, Peter Fankhauser, Tim Weitzel (infonyte): Skalierbare Verarbeitung von XML-Dokumenten in Datenbanken, BTW 2003 – Berkeley DB XML – www.sleepycat.com Meike Klettke Literatur /3 Einleitung Anwendungen XML XPath XQuery XML-Prozessoren Architektur Modellierung XML-Speicherung Indizierung XML-Generierung Systeme – Tim Rieger: Benchmarking XML Databases, Universität Rostock, Fachbereich Informatik, Bachelorarbeit, 2002 – Jana Jonas: Evaluating XML Database Benchmarks and Analyzing the Integration of XML Schema Evolution Steps, Studienarbeit, 2005 – Timo Böhme, Erhard Rahm: XMach-1 Homepage, http://dbs.uni-leipzig.de/de/projekte/XML/XmlBenchmarking.html, 2002 – Timo Böhme, Erhard Rahm: XMach-1: A Benchmark for XML Data Management, Proceedings of the BTW, S. 264-273, 2001 – Stephane Bressan, Gillian Dobbie, Zoe Lacroix, Mong-Li Lee, Ying Guang Li, Ullas Nambiar, Bimlesh Wadhwa: X007: Applying 007 Benchmark to XML Query Processing Tool, CIKM, S. 167-174, 2001 – Albrecht Schmidt, Florian Waas, Martin L. Kersten, Daniela Florescu, Ioana Manolescu, Michael Carey, Ralph Busse: XMark - An XML Benchmark Project, http://monetdb.cwi.nl/xml/, 2002 – Albrecht Schmidt, Florian Waas, Martin L. Kersten, Michael J. Carey, Ioana Manolescu, Ralph Busse: XMark: A Benchmark for XML Data Management, Proceedings of the VLDB Conference, 2002 Meike Klettke