Seminar XML und Datenbanken Speicherung von XML-Werten vor SQL:2003 XML vor SQL:2003 Inhalt Einführung und Motivation Grundlagen und Verständnis Speichermethoden Speicherung als Ganzes Speicherung der Dokumentenstruktur Abbildung auf Datenbankstruktur Andere Verfahren Zusammenfassung XML vor SQL:2003 Einführung und Motivation Notwendigkeit einer persistenten Speicherung von XML-Dokumenten Vor SQL:2003 Keine XML-Unterstützung in SQL-Norm Speichertechniken nur Notbehelf Mit Nachteilen behaftet XML vor SQL:2003 Inhalt Einführung und Motivation Grundlagen und Verständnis Speichermethoden Speicherung als Ganzes Speicherung der Dokumentenstruktur Abbildung auf Datenbankstruktur Andere Verfahren Zusammenfassung XML vor SQL:2003 Grundlagen und Verständnis Dokumenten-Charakter Datenzentrierte Dokumente Dokumentenzentrierte Dokumente Semistrukturierte Dokumente Document Object Model (DOM) XML vor SQL:2003 – Grundlagen und Verständnis Datenzentrierte Dokumente Daten <adresse> selbst von Interesse Strukturinformationen dienen Unterteilung <plz>07743</plz> Regulär <ort>Jena</jena> Strenge Typinformationen <strasse>Lutherplatz</strasse> <nummer>2</nummer> Dokumente meist aus anderen Informationen generiert <telefon>03641/406-0</telefon> Beispiele: Produktkataloge, Rechnungen, <fax>03641/406-113</fax> Fahrpläne </adresse>< XML vor SQL:2003 – Grundlagen und Verständnis Dokumentenzentrierte Dokumente Daten und Struktur beinhalten Information <anreisebeschreibung> Häufig als XML-Dokument erzeugt Sie können unser Haus auf Darstellung irregulär verschiedenen Wegen erreichen: Meist keine Typinformationen <bahn>per bahn: 1km ab Bahnhof …</bahn> Beispiele: wissenschaftliche Artikel, <auto>per Auto: 10km ab Autobahn A4 … </auto> Buchinhalte, eMails, Webseiten Sie finden uns in direkter Citylage. </anreisebeschreibung> XML vor SQL:2003 – Grundlagen und Verständnis Semistrukturierte Dokumente <hotel> Mischform aus daten- und <name>Schwarzer Bär</name> dokumentenzentrierten Dokumenten <adresse> <strasse>Fürstengraben</strasse> Beispiele: … Bücher (Metadaten vs. Inhalten) </adresse> Hotelinformationen (Preise, Adresse vs. <anreisebeschreibung> Beschreibungen, Anreisemöglichkeiten) Sie können unser Haus auf verschiedenen Wegen erreichen: Online-Buchhändler (Bücher, Lieferzeiten vs. … Inhaltsangeben, Rezessionen) </anreisebeschreibung> </hotel> XML vor SQL:2003 Grundlagen und Verständnis Dokumenten-Charakter Datenzentrierte Dokumente Dokumentenzentrierte Dokumente Semistrukturierte Dokumente Document Object Model (DOM) XML vor SQL:2003 – Speichermethoden für XML-Dokumente Document Object Model (DOM) DOMImplementation Node NodeList NamedNodeMap Attr Empfehlung des W3C CharacterData Comment Text CDataSection Document beschreibt Schnittstellen zum Zugriff auf XML-Dokumente und zur Veränderung von Struktur und Inhalten DocumentFragment DocumentType Element Entity EntityReference Notation ProcessingInstruction die zugrundeliegende Implementierung und Speicherung der XMLDokumente wird nicht definiert XML vor SQL:2003 Inhalt Einführung und Motivation Grundlagen und Verständnis Speichermethoden für XML-Dokumente Speicherung als Ganzes Speicherung der Dokumentenstruktur Abbildung auf Datenbankstruktur Zusammenfassung XML vor SQL:2003 – Speichermethoden für XML-Dokument Klassifikation der Speicherung Zahlreiche verschiedene Methoden Drei grundlegende Klassen von Verfahren Speicherung von XML-Dokumenten Speicherung als Ganzes Speicherung von der Dokumentenstruktur XML-Dokumenten Speicherung Abbildung auf von Datenbankstruktur XML-Dokumenten XML vor SQL:2003 Inhalt Einführung und Motivation Grundlagen und Verständnis Speichermethoden für XML-Dokumente Speicherung als Ganzes Speicherung der Dokumentenstruktur Abbildung auf Datenbankstruktur Zusammenfassung XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes XML-Dokumente als Datei in Dateisystem speichern und verwalten Keine Umwandlungsoperationen nötig Orginalzustand bleibt erhalten und jederzeit verfügbar Character Language OBject Speicherung als CLOBs in Datenbankfeld zur Speicherung Datenbanksystem von sehr langen Textdaten XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Anfragen durchsuchen Dokumente sequentiell Ineffizient bei großen Mengen Lösung: Index Speicherung als Ganzes Volltext-Index Volltext- und Struktur-Index XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Verwendung eines Volltextindex Information Retrieval Anfragen auf Volltext Verwendung in Suchmaschinen Anfragen möglich wie: „Welche Dokumente handeln von XML?“ „In welchem Dokument treten Datenbanken im Zusammenhang mit XML auf?“ Deskribierung – Aufbereitung von Dokumenten •Statistisch wortbasierte Verfahren Deskribierung, Recherche und •Linguistische Verfahren Ergebnispräsentation •Wissensbasierte Verfahren XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Verwendung eines Volltextindex Index als invertierte Liste Dokumente Stichworte Stichworte 1 A D F 2 B C D 3 A C D E A B C D E F Dokumente 1 2 2 1 3 1 3 3 2 3 XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Verwendung eines Volltextindex Index als invertierte Liste Begriff Verweis hotel Jena Richtung ort anreisebeschreibung <hotel> <hotelname>Schwarzer Bär</hotelname> <adresse> <plz>07743</plz> <ort>Jena</ort> <strasse>Lutherplatz</strasse> <nummer>2</nummer> </adresse> <anreisebeschreibung> Aus Richtung Erfurt kommend ... </anreisebeschreibung> </hotel> XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Verwendung eines Volltextindex Ranking Dokumente Stichworte 1 A D F 2 B C D 3 A C D Stichworte E A B C D E F Dokumente 3 2 3 2 3 1 1 2 3 1 XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Verwendung eines Volltextindex Anfragen: boolesches Retrieval Kombination von Anfrageteilen mit AND, OR oder NOT Beispiele: • Hotel AND Jena • (Hotel OR Pension) AND (Jena OR Weimar) linguistische Anfragen Stammwortsuche, phonetische Suche, Ähnlichkeitssuche XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Verwendung eines Volltextindex Fazit: Schemabeschreibung Nicht erforderlich Dokumentenrekonstruktion Dokumente bleiben im Original erhalten Anfragen Anfragen des Information Retrieval Besonderheiten Volltextfunktion Keine Auswertung der XML-Struktur Einsatz dokumentenzentrierte XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Kombination Volltext- und Strukturindex Erweiterung des Volltextindex um Strukturinfos Index geteilt (Struktur-, Volltextinformationen) Term Verweis Element Jena 07743 x x x x Element Verweis hotel adresse ort plz x x x x Volltext-Index <hotel> <name>Schwarzer Bär</name> <adresse> Ordnung Vorgänger 1 2 3 3 x x x <ort>Jena</ort> <plz>07743</plz> </adresse> </hotel> Struktur-Index XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Kombination Volltext- und Strukturindex Anfragen: Boolesches Retrieval Linguistische Anfragen Position der Stichworte im Index erlaubt weitere Anfragen Auswertung der XML-Struktur hotel.adresse CONTAINS (“Jena”) hotel.adresse CONTAINS (“Weimar”) OR pension.adresse CONTAINS (“Erfurt”) XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung als Ganzes Kombination Volltext- und Strukturindex Fazit: Schemabeschreibung nicht erforderlich Dokumentenrekonstruktion Original bleibt erhalten Anfragen Information Retrieval und Auswertung der Struktur Besonderheiten Volltextfunktion Einsatz dokumentenzentriert semistrukturiert XML vor SQL:2003 Inhalt Einführung und Motivation Grundlagen und Verständnis Speichermethoden Speicherung als Ganzes Speicherung der Dokumentenstruktur Abbildung auf Datenbankstruktur Zusammenfassung XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Speicherung der Dokumentenstruktur Einfache Abbildung der Graphenstruktur DOM XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Abbildung der Graphenstruktur Elemente: Attribute DocID Elementname ID Vorgänger Kind-Nr Wert h001 hotel 101 h001 name 102 101 1 h001 adresse 103 101 2 h001 strasse 104 103 1 Fürstengraben h001 nummer 105 103 2 2 h001 ort 106 103 3 Jena 1 Schwarzer Bär DocID Attributname ElementID Wert h001 url 101 www.schwarzer-baer-jena.de h001 id 101 h001 XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Abbildung der Graphenstruktur - Anfragen Einfache Anfragen effizient SQL, Fähigkeiten jedoch kaum genutzt Beispiel: alle Hotelnamen in Jena: SELECT FROM Elemente a, Elemente b WHERE a.elemetname = ‘name‘ AND b.elementname = ‘ort‘ AND b.wert = ‘Jena‘ AND a.DocID = b.DocID; XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Abbildung der Graphenstruktur - Anfragen Fazit: Schemabechreibung nicht erforderlich Dokumentenrekonstruktion möglich, aber sehr aufwendig Anfragen XQuery / XQL / angepasstes SQL Besonderheiten - Einsatz semistrukturiert, aber auch für daten- und dokumentenstrukturierte Anwendungen XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Document Object Model Speicherung von XML-Dokumenten node_id node_typ doc_id parent p_sibling n_sibling 001 element h001 - - - 002 element h001 001 - 003 003 element h001 001 002 004 034 attribut h001 027 033 035 035 attribut h001 001 034 - … Node XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Document Object Model Speicherung von XML-Dokumenten node_id tag_name text 001 hotel 002 name 003 adresse 004 plz 07743 … … … 011 anreisebeschreibung Sie finden ... node_id attr_name attr_value specified 012 url www.schwarzer-baer-jena.de true 013 id h001 true Element Schwarzer Bär Attribut XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Document Object Model Anfragen DOM-Methoden XPath oder XQuery SQL XML vor SQL:2003 – Speichermethoden für XML-Dokumente Speicherung der Dokumentenstruktur Document Object Model Fazit: Schemabechreibung nicht erforderlich Dokumentenrekonstruktion möglich, aber sehr aufwendig Anfragen XQuery / XQL / angepasstes SQL Besonderheiten Anfragen und Updates über DOMMethoden Einsatz semistrukturiert, aber auch für daten- und dokumentenzentrierte Anwendungen XML vor SQL:2003 Inhalt Einführung und Motivation Grundlagen und Verständnis Speichermethoden Speicherung als Ganzes Speicherung der Dokumentenstruktur Abbildung auf Datenbankstruktur Zusammenfassung XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Abbildung auf Datenbankstrukturen Automatische Verfahren Benutzerdefiniertes Mapping XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Abbildung auf Struktur objektorientierter Datenbanken XML-Dokument Objektrelationale Datenbank Hotel hotelID name adresse Ort H0001 <hotel url="www.schwarzer-baer-jena.de"> <name>Schwarzer Bär</name> <adresse> <ort>Jena</ort> <strasse>Fürstengraben</strasse> ... </adresse> <preise> <einzelzimmer>89 </einzelzimmer> ... </preise> </hotel> strasse Schwarzer Bär Jena Fürstengraben preise ... einzelzimmer ... 89 XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Abbildung auf Struktur relationaler Datenbanken XML-Dokument <hotel url="www.schwarzer-baer-jena.de"> <name>Schwarzer Bär</name> <adresse> <ort>Jena</ort> <strasse>Fürstengraben</strasse> ... </adresse> <preise> <einzelzimmer>89 </einzelzimmer> ... </preise> </hotel> Relationale Datenbank Hotel: HotelID Hotelname H0001 Schwarzer Bär A0001 Adresse: AdresseID Ort A0001 Adresse Preise Strasse Jena Fürstengraben Preise: PreiseID Einzelzimmer ... P0001 198 P0001 ... XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Automatische Verfahren - Fazit Schemabechreibung erforderlich Dokumentenrekonstruktion nur teilweise möglich Anfragen SQL- und XML-Anfrage und Transformation möglich Besonderheiten Erhalten der Dokumentordnung über zusätzliches Attribut Einsatz datenzentrierte Anwendungen XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Benutzerdefiniertes Mapping bisher: Art der Speicherung nicht beeinflussbar jetzt: Mappingvorschrift durch Benutzer spezifiziert Struktur der XML-Dokumente und Datenbankschema können unabhängig voneinander entworfen werden (und relativ autonom sein) ebenso: Speicherung von XML-Dokumenten in existierende Datenbanken XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Benutzerdefiniertes Mapping XML-Dokument Mapping Vorschrift <hotel url="www.schwarzer-baer-jena.de"> <name>Schwarzer Bär</name> <adresse> <ort>Jena</ort> <strasse>Fürstengraben</strasse> ... <ClassMap> <ElementType Name="hotel"/> <ToClassTable> <Table Name="Hotelpreise"/> </ToClassTable> <PropertyMap> </adresse> <preise> <einzelzimmer>89</einzelzimmer> ... </preise> </hotel> <Attribute Name="url"/> <ToColumn> <Column Name="Hotel_URL"/> </ToColumn> </PropertyMap> <PropertyMap> <ElementType Name="name"/> <ToColumn> <Column Name="Name"/> </ToColumn> </PropertyMap> ... </Classmap> (schreddern) Hotelpreise Hotel_URL Name www.schwarzer-baer-jena.de Schwarzer Bär Einzelzimmer Datenbank 89 XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Benutzerdefiniertes Mapping Beispiel nach Ronald Bourret <ClassMap> <ElementType Name="hotel"/> <ToClassTable> <Table Name="Hotelpreise"/> </ToClassTable> <PropertyMap> <Attribute Name="url"/> <ToColumn> <Column Name="Hotel_ULR"/> </ToColumn> </PropertyMap> ... </ClassMap> Verbindung zwischen Elementen und Relationen Verbindung zwischen Elementen/Attributen und Datenbankattributen XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Benutzerdefiniertes Mapping Anfragen: Datenbankenanfragen XML-Anfragen XML vor SQL:2003 – Speichermethoden für XML-Dokumente Abbildung auf Datenbankstrukturen Benutzerdefiniertes Mapping - Fazit Schemabechreibung erforderlich Dokumentenrekonstruktion nicht möglich Anfragen SQL Besonderheiten Mapping-Vorschriften erforderlich Speicherung der DokumentenOrdnung durch zusätzliches Attribut Einsatz datenzentrierte XML-Dokumente XML vor SQL:2003 Inhalt Einführung und Motivation Grundlagen und Verständnis Speichermethoden Speicherung als Ganzes Speicherung der Dokumentenstruktur Abbildung auf Datenbankstruktur Zusammenfassung XML vor SQL:2003 Zusammenfassung Vielzahl von Verfahren und Techniken existieren nebeneinander oft aus den Bereichen Datenbanken und Dokumentverarbeitung generell: keine „beste Lösung“ für alle XMLDokumente geeignetste Lösung ist abhängig von konkreten Erfordernissen vieles ist noch in der Entwicklung SQL:2003 <ende> Vielen Dank für die Aufmerksamkeit! <frage> Fragen? </frage> </ende> XML vor SQL:2003 – Speichermethoden für XML-Dokumente Document Object Model (DOM) Methoden der Klasse Node Fast alle Dokumentbestandteile basieren auf dieser Klasse Die Klasse Node enthält: Methoden zur Identifikation des Knotentyps Methoden zur Navigation durch die Dokumentstruktur Methoden zur Manipulation der Dokumentstruktur XML vor SQL:2003 – Speichermethoden für XML-Dokumente Document Object Model (DOM) Zugriff kann durch Navigation erfolgen Ausgehend vom Knoten liefern folgende Methoden der Klasse Node die Knoten bzw. Knotenlisten als Ergebnis: 1 5 4 6 2 3 1 - getParentNode() 2 - getFirstChild() 3 - getLastChild() 4 - getChildren() 5 - getPreviousSibling() 6 - getNextSibling() XML vor SQL:2003 – Speichermethoden für XML-Dokumente Document Object Model (DOM) Manipulation des Dokumentstruktur insertBefore (newChild, refChild) refChild newChild refChild appendChild (newChild) newChild removeChild (oldChild) oldChild Methoden zum oLöschen, oErgänzen, oVerschieben oVerändern von Dokumentanteilen XML vor SQL:2003 – Speichermethoden für XML-Dokumente Document Object Model (DOM) Methoden der Klasse Elemente getTagName() - Tagnamen eines Elementes getAttribute(name) - liefert das angegebene Attribut setAttribute(name, value) - Verändern und Ergänzen von Attributen removeAttribute(name) - löscht das spezifizierte Attribut getElementsByTagName(tagname) - alle Elemente des Dokumentes, mit angegebenen Elementnamen haben getElementsByTagName(*) - alle Elemente. XML vor SQL:2003 – Speichermethoden für XML-Dokumente Document Object Model (DOM) Methoden der Klasse Attribute Attributinformationen können über die folgenden Methoden erfragt werden: getName() getValue() setValue(value) - Attributnamen - Attributwert - setzt Attributwert. XML vor SQL:2003 – Speichermethoden für XML-Dokumente Document Object Model (DOM) Methoden der Klasse Character Data Zum Auslesen, Verändern und Setzen von Textanteilen getLength() getData() liefert den vollständigen Text substringData(start,count) appendData(text) replaceData(offset,count,text) insertData(offset,text) deleteData(offset,count)