1 / 74

XML und Datenbanken - Systeme -

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

maree
Télécharger la présentation

XML und Datenbanken - Systeme -

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. !!!!! • 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

  4. Oracle • Mit Oracle 10, Vereinigung der Daten- (Data) und Inhaltsverarbeitung (Content Processing) • Grundlegende Funktionen • Ausgabe von Datenbankinhalten mit XML-Syntax • Verschiedene Speicherungsverfahren

  5. 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 • …

  6. 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

  7. 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

  8. 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

  9. 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');

  10. 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!

  11. 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

  12. 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

  13. 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"/> …

  14. 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.

  15. 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

  16. Anfragen • bei CLOB-Speicherung: • in SQL MM Text definierte Operationen • XQuery-Anfragen als Bestandteil einer SQL-Anfragen • SQL bei relationaler Speicherung

  17. 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>

  18. Oracle – Ausgabe von XML Weitere Möglichkeit: SQL/XML Folgt bei DB2

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. Möglichkeiten zur Speicherung • XML Column • XML Collection

  25. Zusammenwirken der Komponenten

  26. 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>

  27. 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

  28. 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

  29. 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

  30. 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

  31. Viper

  32. Viper

  33. 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

  34. 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)

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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)

  40. 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

  41. Syntax select from where for xml (raw | auto [, elements] | explicit)

  42. 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"/>

  43. 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

  44. 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>')

  45. 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

  46. 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>

  47. SQL-Server – Einordnung konzeptuell XPath logisch SQL Updategram relationale Volltext-operationen Edge-Table physisch Datenbank daten- dokument- semi- zentriert strukturiert zentriert

  48. 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

  49. 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

  50. 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)

More Related