740 likes | 1k Views
XML und Datenbanken - Systeme - . Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik meike@informatik.uni-rostock.de www.xml-und-datenbanken.de. Inhalt der Vorlesung. Vorstellung verschiedener Systeme
E N D
XML und Datenbanken - Systeme - Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik meike@informatik.uni-rostock.de www.xml-und-datenbanken.de
Inhalt der Vorlesung 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
!!!!! • Alle Systeme zur Speicherung und Verwaltung von XML-Dokumenten 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
Oracle • Mit Oracle 10, Vereinigung der Daten- (Data) und Inhaltsverarbeitung (Content Processing) • Grundlegende Funktionen • Ausgabe von Datenbankinhalten mit XML-Syntax • Verschiedene Speicherungsverfahren
Oracle XML Developer's Kit (Oracle XDK) • 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 XML-Schema • XML Class Generator: generiert automatisch Java-Klassen aus DTDs oder XML-Schemata • XML SQL Utility: • generiert XML-Dokumente, DTDs und XML-Schemas aus SQL-Anfragen • realisiert das Insert von XML-Dokumenten in Oracle-Datenbanken • …
Speicherungsverfahren Native Speicherung von XML-Dokumenten Verschiedene Möglichkeiten Anfrage mit XPath, XQuery Strukturierte Speicherung von XML-Dokumenten in Datenbanken, Anfragen: XPath, XQuery, SQL verschiedene Modi zur XML-Speicherung
1. Speicherung als CLOB • 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) ') > 0ORDER BY score DESC; Auch Methoden hasPath() und contains() erlaubt
2. relationale Speicherung • 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
native Speicherung als Dokument /1 • 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 ankommenund sich zu Hause fuehlen'), sys.XMLType.createXML('<schwimmbad> Original-Thalassozentrum. Wir haben fuer Sie frischesOstseewasser in das Hotel geholt!</schwimmbad>'),sys.XMLType.createXML('<DZ waehrung="Euro">186</DZ> <EZ waehrung="Euro">135</EZ>'), '0381-54370');
native Speicherung als Dokument /2 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!
native Speicherung als Dokument /3 • 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
4. native objektrelationale Speicherung • 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
native objektrelationale SpeicherungBeschreibung des Mappings 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"/> …
Kombination von Speicherungsvarianten • VerschiedeneSpeicherungsvarianten können kombiniert werden. • Unterstützung beider hybriden Speicherung von XML-Dokumenten 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.
Oracle – Schemaprüfung • beim Einfügen von XML-Dokumenten erfolgt "leichte" Schemaprüfung (Test auf Gültigkeit) • aus Effizienzgründen • vollständige Schemaprüfung ist aktivierbar
Anfragen • bei CLOB-Speicherung: • in SQL MM Text definierte Operationen • XQuery-Anfragen als Bestandteil einer SQL-Anfragen • SQL bei relationaler Speicherung
Oracle – Ausgabe von XML /1 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>
Oracle – Ausgabe von XML Weitere Möglichkeit: SQL/XML Folgt bei DB2
Oracle – Einordnung konzeptuell logisch XPath, XQuery IR-Anfragen SQL + XPath relationale Speicherung physisch CLOB XMLType nativ objekt- relationale Sp. dokument- semi- daten- zentriert strukturiert zentriert
Oracle – Zusammenfassung /1 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
Oracle – Zusammenfassung /2 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
DB2 • 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
XML Extender • 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 XML-Dokumenten 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
Möglichkeiten zur Speicherung • XML Column • XML Collection
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>
Anfragen 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
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
Ausgabe von XML-Dokumenten • 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
Nativer Datentyp XML • 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
Viper Relationen mit XML-Attributen entwerfen • create table items ( id int primary key not null, brandname varchar(30), itemname varchar(30), sku int, srp decimal(7,2), comments xml) Erstellen eines Indexes in XML-Typen • create index myindex on items(comments) generate key using xmlpattern '/Comments/Comment/CommentID' as sql double
Viper 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 db2-fn:xmlcolumn('ITEMS.COMMENTS')/Comments/Comment return ($y/Message)
DB2 – Ausgabe von XML 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
DB2 – Einordnung konzeptuell Mapping durch SQL-MM mit XML Type (Viper) DAD-Files logisch Erweiterungen SQL objekt- Verarbeitung des XML Types Volltext- und physisch relationale Strukturindex Datenbank dokument- semi- daten- zentriert strukturiert zentriert
DB2 – Zusammenfassung /1 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
DB2 – Zusammenfassung /2 XML-Import, XML-Export • Unterstützung von Im- und Export, Abbildung spezifiziertdurch 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
MS SQL Server 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)
Ausgabe von XML 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 Anfrageselbst zu bestimmen. in SQL-Server 2005 auch SQL/XML
Syntax select from where for xml (raw | auto [, elements] | explicit)
RAW-Modus 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"/>
3 Arten der Speicherung von XML-Dokumenten • 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
Nativer Datentyp XML /1 • 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>')
Nativer Datentyp XML /2 • 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
SQL-Server – XML-Sichten über einer Datenbank • 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>
SQL-Server – Einordnung konzeptuell XPath logisch SQL Updategram relationale Volltext-operationen Edge-Table physisch Datenbank daten- dokument- semi- zentriert strukturiert zentriert
SQL-Server–Zusammenfassung /1 XML-Speicherung: • Modell: relationales Modell • Schemabeschreibung: XDR für XML-Sichten, DTD oder Schema zur Typableitung in OpenXML • Art der Speicherung: fragmentierte Speicherung oder XML-Datentyp • Ordnungserhaltung: ja (Beim XML-Datentyp) • XML-Datentyp: ja Indizierung • Struktur, Pfade: ja • Werte: ja • Volltext: ja
SQL-Server–Zusammenfassung /2 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
Tamino • 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)