850 likes | 978 Views
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
E N D
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 • Aussehen der Dokumente unterscheidet sich stark • Vielzahl von Methoden zur Speicherung existiert • verschiedene Abfragemethoden • mehrere Varianten zur Modellierung von XML-Dokumenten und deren Struktur
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
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
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.
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>
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
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]
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
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
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]
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
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)
XML-Architektur [M. Klettke] Dokument- verarbeitung <..> </..> Konzeptueller <..> XML </..> Entwurf von XML- <..> </..> Dokumenten Datenbanken konzeptuelle logische physische Ebene Ebene Ebene
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!
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
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]
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 ]
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
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>‘ );
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
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
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‘);
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...
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“>
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
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
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
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
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
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
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
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
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
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>
Datenmodell 1 n 1 1 0/1 0/1
Import-Algorithmus <baum> <person alter=“36“> <name>Peter</name> <adresse> <strasse>Hauptstrasse4</strasse> <PLZ>04236</PLZ> <Ort>Leipzig</Ort> </adresse> </person> </baum>
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
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
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
Anfrageergebnis • XML-Ergebnis-Dokument <result> <person> <name>Peter</name> <adresse> <strasse>Hauptstrasse 4</strasse> <PLZ>04236</PLZ> <Ort>Leipzig</Ort> </adresse> </person> </result>
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
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
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)
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
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
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()
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)
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
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