1 / 84

Vergleichende Untersuchungen zur Verwaltung von XML-Dokumenten in Datenbanken

Vergleichende Untersuchungen zur Verwaltung von XML-Dokumenten in Datenbanken . Prof. Dr. Thomas Kudraß HTWK Leipzig. Datenbanken-Stammtisch HTW Dresden, 23.10.2002. Motivation. XML-Dokumente können für sehr verschiedene Anwendungen eingesetzt werden

joyce
Download Presentation

Vergleichende Untersuchungen zur Verwaltung von XML-Dokumenten in Datenbanken

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. Vergleichende Untersuchungen zur Verwaltung von XML-Dokumenten in Datenbanken Prof. Dr. Thomas Kudraß HTWK Leipzig Datenbanken-Stammtisch HTW Dresden, 23.10.2002

  2. Motivation • XML-Dokumente können für sehr verschiedene Anwendungen eingesetzt werden • Aussehen der Dokumente unterscheidet sich stark • Vielzahl von Methoden zur Speicherung existiert • verschiedene Abfragemethoden • mehrere Varianten zur Modellierung von XML-Dokumenten und deren Struktur

  3. Daten oder Dokumente (1) • „Lesbare Dokumente“ (dokumentzentriert) • sind selten genau gleich strukturiert • Reihenfolge ist wichtig • sinntragende Daten auf allen Ebenen, viel Mixed Content • Volltextsuche ist unabdingbar, aber nicht ausreichend • Beispiele • Zeitschriftenbeiträge, Bücher • Gebrauchsanweisungen, Handbücher • e-Mail • Präsentationen • Verträge

  4. Daten oder Dokumente (2) • Datenzentrierte Dokumente • wie Daten im herkömmlichen Sinn (z.B. in relationalen Datenbanken) • Reihenfolge ist oft nicht relevant • sind einheitlich und meist einfach strukturiert • haben Datentypen • sinntragende Daten in Blattelementen oder Attributen • Mixed Content ist die Ausnahme (oder Dekoration) • Beispiele: • Telefonbücher • wissenschaftliche Daten • Fahrpläne, Flugpläne • Bestellungen

  5. Daten und Dokumente • Semistrukturierte Daten • Strukturiert: Felder • Unstrukturiert: binäre Daten wie Text, Video- und Audio-Streams, Bilder (in XML: External Entities, CDATA Sections) • unregelmäßiges Auftreten von Hyperlinks • Mangel an Struktur • Mischform aus datenzentriert und dokumentenzentriert • Struktur implizit oder verborgen • Integration von Daten aus heterogenen Quellen (hierfür strukturiertes Modell oft zu restriktiv) • Bestimmte Anfragetypen ignorieren Schema bewußt (z.B. Zeichenkettensuche über gesamte Datenbank hinweg) • Beispiel Krankenakten: • Daten: Geburtsdatum, Adresse, etc, • binäre Daten: Röntgenbilder • Dokumente: Diagnose, Anamnese etc.

  6. Klassifikation: Beispiel <order> <customer>Meyer</customer> <position> <isbn>1-234-56789-0</isbn> <number>2</number> <price currency=“Euro“>30.00</price> </position> </order> Datenzentrierte Dokumente (strukturiert, regulär Beispiele: Produktkataloge, Bestellungen, Rechnungen) Dokumentzentrierte Dokumente (unstrukturiert, irregulär Beispiele: wissenschaftliche Artikel, Bücher, E-Mails, Webseiten) Semistrukturierte Dokumente (datenzentrierte und dokumentenzentrierte Anteile Beispiele: Veröffentlichungen, Amazon) <content> XML builds on the principles of two existing languages, <emph>HTML</emph> and <emph>SGML</emph> to create a simple mechanism .. The generalized markup concept .. </content> <book> <author>Neil Bradley</author> <title>XML companion</title> <isbn>1-234-56789-0</isbn> <content> XML builds on the principles of two existing languages, <emph>HTML</emph> and .. </content> </book>

  7. Warum XML in Datenbanken • XML als SGML-Nachfolger • entstehende Dokumente müssen gespeichert werden • XML als Austauschformat • Originaldaten werden in XML transformiert • Austauschdaten müssen aber ebenfalls gespeichert werden (z.B. beim Empfänger) • Nur die Speicherung in Datenbanken garantiert • mächtige und effiziente Suchfunktionen • transaktionsorientierte Speicherung • Mehrbenutzerbetrieb • Anwendungen • Dokumentenverwaltung • Website-Management • Information Publishing

  8. XML-Datenbanksysteme (1) • kann beliebige XML-Dokumente als solche speichern • kann XML-spezifische Anfragesprache verarbeiten • liefert XML als Ergebnis einer Anfrage • Dokumente und Extrakte • effiziente struktur-und wertebasierte Anfragen • unterstützt Daten- und Dokumentsicht (Mixed Content, Kommentare etc.) • erlaubt eine schematische Beschreibung der Dokumente (Validierung möglich) nach [H. Schöning]

  9. XML-Datenbanksysteme (2) • DB-Eigenschaften (Transaktionen, Skalierbarkeit etc.) • standardkonform • Sammlung von XML-Dokumenten? • Sammlung von XML-Dokumentfragmenten? • Unabhängigkeit von der Speicherungsstruktur • Indizierung? • Validierung • Sicherheit • Erweiterbarkeit

  10. Speichern und Liefern von Dokumenten • Round-Trip-Eigenschaft • Ausgabe des gespeicherten Dokuments in “unveränderter“ Form • Der ganze Inhalt • Prolog • Kommentare • Processing Instructions • “unverändert“ • unveränderte Reihenfolge der Elemente • identisches Aussehen gegenüber Original

  11. Anfragetypen für XML-Dokumente • werteorientiert • Suche nach Attributwerten • Suche nach Elementen • textorientiert • Information Retrieval Operationen: contains, similar • strukturorientiert • vgl. XPATH Query Language • linkorientiert • metadatenorientiert • kombinierte Anfragen nach [H. Schöning]

  12. XPath • Für die Verwendung in XSLT und XPointer entworfen • Beim W3C normiert (W3C Recommendation)http://www.w3.org/TR/xpath.html • Navigation in einem Dokument • Location Path • Achsen zur Navigation • child, descendant, parent, ancestor, sibling, following, preceding, attribute, namespace, self, z.B. descendant::Name/child::Vorname • Kurznotation ist verfügbar: //Name/Vorname

  13. XPath (Forts.) • Filter • [expression] • Beispiel: //Buch[@ISBN=“3-557-06021-7“ AND Author] • Wildcard • //*[@*=“Hugo“] • Position [pos] • /book/author[1] • kann auf Processing Instructions und Kommentare zugreifen • Weitere Query Languages • XQL: basiert auf XPath, W3C-Proposal • Quilt: Basis für XQuery (zur Zeit diskutierter Sprachvorschlag) • IPSI-QL (erste Implementierung)

  14. XML-Architektur [M. Klettke] Dokument- verarbeitung <..> </..> Konzeptueller <..> XML </..> Entwurf von XML- <..> </..> Dokumenten Datenbanken konzeptuelle logische physische Ebene Ebene Ebene

  15. Bedeutung des Dokumentcharakters • XML-Dokumente können die ganze Bandbreite von Daten bis zu Volltextdokumenten ein-nehmen • dokumentzentriert, semistrukturiert, datenzentriert • dementsprechend unterschiedliche Speiche-rungsverfahren von der Dokumentenverarbeitung bis zur DB-Technologie • weiterhin: Neuentwicklung von Methoden • keine optimale Lösung für alle Anwendungen, Dokumentcharakter spielt entscheidende Rolle!

  16. Architektur: physische Ebene Struktur auf Werteebene dok-zentriert Dateien Volltextindex, Strukturindex Struktur auf Schema- und Werteebene semistrukturiert generische Speicherung von Graphen oder physische Ebene DOM-Informationen Struktur auf Schemaebene datenzentriert relationale, objekt-relationale oder objekt-orientierte Datenbanken

  17. XML in Datenbanken - Optionen zur Realisierung Klassifizierung nach dem Ziel-Datenmodell • Relational • inhaltsorientiert zerlegt • generisch • definitorisch • strukturorientiert zerlegt • opaque Ansatz (Large Objects) • Objektorientiert (Objektrelational) • benutzerdefinierte Objekte • vordefinierte Objekte, basierend auf Large Objects (CLOBS) • “native“ XML-DBMS • Oracle-Konkurrenzprodukte (z.B. Tamino) nach [H. Schöning]

  18. Speicherung von XML-Dokumenten Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzer- definiertes Mapping Für dokument-zentrierte XML-Dokumente Für semistrukturierte XML-Dokumente Für daten-zentrierte XML-Dokumente [M. Klettke ]

  19. Oracle XML Infrastruktur - Basis für verschiedene Speicherungsformen Jserver Runtime Java Applikationen Tabellen Java XML SQL Utility interMedia Java XML Parser PL/SQL XML Packages JDBC Driver URIs LOBs XML Type Object Types

  20. CLOB-Ansatz (Opaque Ansatz) • Merkmale • XML-Dokument gespeichert als Large Object (LOB) • Dokument bleibt vollständig erhalten • Speicherung Insert into tblXMLClob values (1,‘person.xml‘,‘ <person> <name>Mary</name> </person>‘ );

  21. Volltext-Index Term Verweis Element <hotel> <hotelname>Hotel Hübner</hotelname> Warnemünde <adresse> <plz>18119</plz> Seestraße <ort>Warnemünde</ort> <strasse>Seestraße</strasse> Rostock </adresse> <anreisebeschreibung> Aus Richtung Rostock kommend fahren Sie auf der Stadtautobahn bis nach Warnemünde . . . <anreisebeschreibung> </hotel> XML-Index Element Verweis Vorgänger hotel adresse ort strasse anreise- beschreibung Kombinierter Volltext- und XML-Index XML - Struktur kann in Anfragen ausgewertet werden

  22. Oracle interMedia Text • Anfragen mit interMedia Text • Volltext-Retrieval (nur wortorientierte Suche) • Pfadangaben nur in Verbindung mit Wortsuche • keine Bereichsanfragen • Beispiel in interMedia Text: SELECT DocId FROM tblXMLClob WHERE CONTAINS(content,‘(Mary WITHIN name) WITHIN person‘)>0 • XML Volltext-Index • Autosectioner Index • XML Sectioner Index • WITHIN operator • text_subquery WITHIN elementname • sucht den vollständigen Textinhalt innerhalb der genannten Tags

  23. Beispiel:Arbeit mit interMedia Text (1) Speicherung von XML-Dokumenten einer Versicherungsgesellschaft create table ins_claim (id number (7) primary key, when date, doc clob); Spalte doc ist indiziert mit auto_section_group: create index doc_ix on ins_claim(doc) indextype is ctxsys.context parameters (‘section group ctxsys.auto_section_group‘);

  24. Beispiel: Arbeit mit interMedia Text (2) Beispiel-Dokument in der Spalte doc: The insured‘s <VEHICLE>car</VEHICLE>broke through the guard rail and plummeted into a ravine. The cause was determined to be <CAUSE>faulty braked</CAUSE> Amazingly there were no casualties. XML Section <cause> kann abgefragt werden: select id, when from ins_claim where contains (doc,‘brakes within cause‘) > 0; ID WHEN DOC ------- ------ ------- 1 12-OCT-00 The insured‘s <VEHICLE>car...

  25. Beispiel: Arbeit mit interMedia Text (3) Alternative zu vordefiniertem Auto-Sectioner: Definition eines eigenen Sectioners und Verwendung im Index section name tag name ctx_ddl.create_section_group(‘my_section‘, ‘XML_SECTION_GROUP‘); ctx_ddl.add_zone_section(‘my_section‘,‘cause‘,‘Cause‘); ... ctx_ddl.add_attr_section(‘my_section‘,‘make‘,‘Make@Vehicle‘); ... create index my_doc_ix on ins_claim(doc) indextype is ctxsys.context parameters(‘section group my_section‘); Mögliche Abfrage ist Suche nach Attributwerten: ... where contains (doc, ‘Audi within Make@Vehicle‘) Findet: <Vehicle Make=“Audi“>

  26. DB serverseitig XPath Anfragen mit PL/SQL • Voraussetzung: XDK für PL/SQL auf Server vorhanden • Übersetze CLOB in eine DOM-Darstellung XPath Anfrage Ermittle Document IDs aller CLOBs der XML-Tabelle Doc IDs Ausführen der XPath Anfrage auf dem DOM-Baum für jedes CLOB Objekt der Doc IDs Doc IDs mit Ergebnis XML- Dokument

  27. Oracle 9i XML Type Funktionen des Oracle XML Type • createXML(xml IN varchar2 return XMLType • createXML(xml IN clob) return XMLType • existsNode(xpath IN varchar2) return number • extract(xpath IN varchar2) return XMLType • isFragment() return number // 1 oder 0 • getClobVal() return clob • getStringVal() return varchar2 • getNumberVal() return number in Oracle 9i (Release 1) intern als CLOB realisiert

  28. Nutzung des XML Type Extraktion von Daten aus XML-Dokumenten mittels XML Type Funktionen select d.document.extract(‘/Item/desc/text()‘).getStringVal() from xmldocs d; select * from xmldocs d where d.document.extract(‘/Item/Qty/text()‘).getNumberVal()=4; select * from xmldocs d where d.document.existsNode(‘//Discount‘)=1; Insert, Update und Delete auf Spalten vom Typ XMLType erlaubt Zugriff auf XMLType in der DB in Java möglich mittels Klasse: oracle.xdb.XMLType

  29. liefert Dokument-IDs Wordsuche (Default) kein Existenztest für Elemente oder Attribute Pfadausdrücken beschränkt möglich durch WITHINe.g.: (xml WITHIN title) WITHIN book erlaubt begrenzt Attribut-wertsuche, keine Verschach-telung von Attributsuchen numerische und Datumswerte werde nicht konvertiert keine Bereichsanfragen auf Attributwerten findet Dokument-Fragmente Substring-Suche Suche nach vorhandenen Elementen oder Attributen Pfadausdrücke  struktur-orientierte Anfragen//Book/Title/[contains(..‘xml‘)] Suche nach Attributwerten und Element-Text kann kom-biniert werden berücksichtigt auch Dezimal-werte Bereichsanfragen möglich mittels Filter Vergleich der Anfragemöglichkeiten interMedia Text XPath 

  30. CLOB AnsatzVorteile • Bewahrung der Informationen des Dokuments • Behandlung großer Dokumente • geeignet für dokumentenzentrische Dokumente mit wenig Struktur und textreichen Elementen • Verschiedene XML Document APIs • interMedia Text: eingeschränkte Menge von XPath- Funktionalität • generiere ein DOM des Dokuments vor Anwendung von XPath-Queries

  31. CLOB AnsatzNachteile • Beschränkte Ausdrucksfähigkeit von Text-Anfragen • Performance vs. Genauigkeit der Anfrage-Ergebnisse • interMedia Text Queries auf CLOBs schneller als DOM-API • Beispiel-Dokument: 12.5 MB, Übersetzungszeit 3 Min., Ladezeit 5 Min. • Restriktionen der Indexe • Maximale Länge der Tag-Namen fürs Indexieren (inkl. Namespace): 64 Bytes • Probleme mit Markup • Character Entities: Dekodieren oder nicht? • Stabilität • maximale Dokumentgröße: 50 MB • Speicherfehler bereits bei kleineren Dokumenten möglich

  32. Speicherung von XML-Dokumenten Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzer- definiertes Mapping Für dokument-zentrierte XML-Dokumente Für semistrukturierte XML-Dokumente Für daten-zentrierte XML-Dokumente

  33. Elements: Element Type Value Descendant-of hotel adresse plz int 18119 ort string Warnemünde strasse string Seestrasse Attributes: Element Attribute Type Value url string www... autor string Müller Speicherung der Graphstruktur generische Speicherung der Struktur des XML-Dokumentes

  34. Relationale Strukturorientierte Zerlegung • Prinzip • Speicherung in generischen Tabellen (festes DB-Schema) • Zerlegung eines XML-Dokumentes in kleine Einheiten (Elemente) und Speichern in der Datenbank (Shredding) • Vielzahl von Mapping-Methoden • Abspeichern der Kanten und Knoten des zum XML-Dokument gehörenden Strukturbaums • Speichern der Kanten in einer Tabelle • Kantenverfahren (Florescu, Kossmann) • (Normalisiertes) Universalverfahren • Model-based Fragmentation • Monet XML-Modell • Speichern der Kanten in mehreren Tabellen • Attributverfahren

  35. Speichermethode [Krumbein] • XML-QL Datenmodell <tree> <person age=’55‘> <name>Peter</name> </person> <person age=’38‘> <name>Mary</name> <address>Fruitdale Ave. </address> </person></tree>

  36. Datenmodell 1 n 1 1 0/1 0/1

  37. Import-Algorithmus <baum> <person alter=“36“> <name>Peter</name> <adresse> <strasse>Hauptstrasse4</strasse> <PLZ>04236</PLZ> <Ort>Leipzig</Ort> </adresse> </person> </baum>

  38. Datenbank versteht nur SQL Transformation von XML-QL nach SQL notwendig Erzeugen eines Ergebnis-Dokumentes aus Tupeln Anfragemethode • Mit welcher Anfragesprache? • XML-Anfragesprache auf XML-Dokumente sinnvoll • Datenmodell ausgehend von XML-QL erstellt XML-QLAnfrage Parser Objekt-Struktur Generierung desSQL Statement SQLStatement DB Ausführung desSQL Statement Konstruktion desErgebnisdokuments Row Set XMLDokument

  39. XML-QL Anfrage CONSTRUCT <result> { WHERE <person> <name>$n</name> <adresse>$a</adresse> </person> CONSTRUCT <person> <name>$n</name> <adresse>$a</adresse> </person> } </result> SQL-Statement SELECT DISTINCT B.Type AS n_Type, B.TargetId AS n_TargetId, B.Depth AS n_Depth, C.Value AS n_Value, D.Type AS a_Type, D.TargetId AS a_TargetId, D.Depth AS a_Depth, E.Value AS a_Value FROM tblEdge A,tblEdge B,tblLeafs C, tblEdge D,tblLeafs E WHERE (A.EdgeName = ‘person’) AND (A.TargetId = B.SourceId) AND (B.EdgeName = ‘name’) AND (B.LeafId = C.LeafId(+)) AND (A.TargetId = D.SourceId) AND (D.EdgeName = ‘adresse’) AND (D.LeafId = E.LeafId(+)) Erzeugen eines SQL-Statements

  40. Konstruktion des Ergebnis-Dokumentes • Ergebnistupel SELECT A.EdgeName, A.Type, Al.Value AS A_LeafVal, Aa.Value AS A_AttrVal FROM tblEdge A, tblLeafs Al, tblAttrs Aa WHERE A.SourceId=5 AND A.leafId=Al.leafId(+) AND A.attrId=Aa.attrId(+) • Teilbaum-Rekonstruktion

  41. Anfrageergebnis • XML-Ergebnis-Dokument <result> <person> <name>Peter</name> <adresse> <strasse>Hauptstrasse 4</strasse> <PLZ>04236</PLZ> <Ort>Leipzig</Ort> </adresse> </person> </result>

  42. Strukturorientierte Zerlegung - Vorteile • Herstellerunabhängigkeit • benutzt keine spezifischen DBMS-Eigenschaften • Keine Schemadefinition durch Benutzer notwendig • hohe Flexibilität bei dynamisch erzeugten XML-Dokumenten • verwendete relationale Strukturen für Benutzer unbrauchbar (keine Anwendungssemantik) • Stabilität • Hohe Flexibilität der Anfragen • Lesen und Ändern einzelner Werte • volle SQL-Funktionalität nutzbar • Gute Eignung für strukturorientierte Anfragen • Strukturen in Tabellen repräsentiert

  43. Strukturorientierte Zerlegung - Nachteile • Informationsverlust • Comments • Processing Instructions • Prolog • CDATA Sections • Entities • Restriktionen des Abbildungsalgorithmus • nur ein Text (Inhalt) pro Element <element> Text1 <subelement/> Text2  geht verloren </element> • Element-Text als VARCHAR(n); n <= 4000

  44. Strukturorientierte Zerlegung - Nachteile (2) • Anfragesprache: nur SQL • keine XML-adäquaten Anfragekonstrukte • Anfrageformulierung schwierig • Änderungen auf SQL-Ebene können Struktur des Dokuments zerstören • Schlechte Performance • lange Ladezeit • Beispiel-Dokument: 3.3. MB, 130.000 Zeilen, 13 Minuten • komplexe Joins • Sortierung in Anfragen (wegen Reihenfolgeerhaltung)

  45. Speicherung von XML-Dokumenten Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzer- definiertes Mapping Für dokument-zentrierte XML-Dokumente Für semistrukturierte XML-Dokumente Für daten-zentrierte XML-Dokumente

  46. Node NodeList NamedNodeMap DOMImplementation Attr CharacterData Comment Text CDataSection Document DocumentFragment DocumentType Element Entity EntityReference Notation ProcessingInstruction Speicherung des DOM (1) • Informationen des Document Object Models werden in Datenbanken gespeichert • Verwendung relationaler oder objekt-orientierter Datenbanken oder • Entwicklung eigener Speicherungsstrukturen

  47. Speicherung des DOM (2) Methoden der Klasse Node: - getChildren() - getFirstChild() - getNextSibling() - getNodeType() - getParentNode() - getPreviousSibling() - hasChildren() Methoden der Klasse Element: - getAttributes() - getElementsByTagName(String) - getTagName() Methoden der Klasse Attribut: - getName() - getValue()

  48. Speicherung des DOM: Bewertung • Vorteile • benötigt keine Schemabeschreibung • XML-Anfragen möglich • standardisierte und allgemein akzeptierte Schnittstelle • vielfältige Einsatzmöglichkeiten: • für daten- und dokumentzentrierte sowie semistrukturierte XML-Anwendungen • Nachteile • Dokumentrekonstruktion möglich, aber aufwändig • wenig Produkte auf dem Markt • infonyte (IPSI Darmstadt) • eXcelon XIS (POET) • ozone (SMB Leipzig)

  49. Speicherung von XML-Dokumenten Als Dateien / Clobs Speicherung der Dokumentstruktur Strukturierte Speicherung in Datenbanken Volltextindex Abbildung der Graphstruktur Vollständiges Mapping Volltextindex und XML-Index Abbilden des DOM-Modells Benutzer- definiertes Mapping Für dokument-zentrierte XML-Dokumente Für semistrukturierte XML-Dokumente Für daten-zentrierte XML-Dokumente

  50. Strukturierte Speicherung in Datenbanken - Überblick • inhaltsorientiert • Struktur des Dokuments bestimmt DB-Struktur • generisch vs. definitorisch • generisch: vorgefundene Strukturen werden nach einem allgemeingültigen Konzept in XML-Strukturen umgesetzt • gilt analog auch für Generierung einer DTD aus relationalem Schema • definitorisch: die Abbildung der existierenden Strukturen in XML-Strukturen (und umgekehrt) wird jeweils spezifiziert • relational vs. objektrelational • Beispiel (generisch & relational): • Oracle XML SQL Utility (XSU) für Queries und DML-Operationen

More Related