XML und Datenbanken
© 2006 Markus Röder
www.training-deluxe.de
Motivation für XML
Einfaches Textformat Weite Standardisierung Enthält Daten und Metadaten Ist erweiterbar
Einsatz
Ein RDBMS zur Speicherung hierarchisch strukturierter XML-Dokumente einzusetzen ist ungefähr so effizient, wie ein Auto abends nach Feierabend in seine Einzelteile zu zerlegen, um es morgens für die Fahrt zur Arbeit wieder zusammenzubauen
Datenbanken
Effiziente und strukturierte Speicherung Datenbanken speichern Informationen in strukturierten
Einheiten und bieten darüber hinaus unterschiedliche logische Sichten, ohne, dass der Anwender etwas über die Speicherung wissen muss. Indexe Durch gezielte Indizierung der Daten lassen sich Informationen schneller
auffinden. Schnelle Anfrageauswertung Anfragen werden durch das DBMS optimiert, um
schnellere Ergebnisse zu erhalten. Sicherheitskonzepte Um die Datenintegrität zu gewährleisten, kann die Manipulation der
Daten innerhalb gekapselter Transaktionen durchgeführt werden. Mehrbenutzerfähigkeit Die meisten DBMS unterstützen den gleichzeitigen Zugriff durch mehrere Benutzer. Standards DBMS sind weit verbreitet und viele Anwendungen verwenden bereits SQL-
Schnittstellen (bzw. JDBC, ODBC o.A.) zum Zugriff auf Datenbanken.
Datenbanken und Systeme im Einsatz
Relationale Datenbanken Relationale DB XML Enabled Objektorientierte Datenbanken Native XML Datenbanken Persistenzframeworks ( z.B. Hibernate ) Middleware EAI SOA Implementierungen Application-Server PDOMs Individuelle Anwendungen
XML Daten in relationalen Datenbanken speichern
Ablauf: Programmierung– Lesen der XML Daten mit Parser
individuelles Datenmodell in Memory SAX standard in memory Repräsentation DOM Fehler : ParserError optional: Vorher xsl Transformation in Normalform
– individuelles Mapping der Daten auf Tabellen Keys und Typbestimmung
– Daten in Datenbank speichern
DTD - > DB Schema
1. Für jedes komplexe Element eine Tabelle mit Primärschlüssel erzeugen. 2. Jeden Element-Inhalt (Subelemente und PCDATA) betrachten und
– für einzelne Referenzen zu einfachen Elementen eine Spalte erzeugen,– für mehrfache Elemente (*) eine abhängige Tabelle mit Fremdschlüssel erzeugen,– für Referenzen zu komplexen Elementen einen Fremdschlüssel bei diesen
erzeugen,– für PCDATA in komplexen Elementen eine abhängige Tabelle mit Fremdschlüssel in
dieser erzeugen, bei optionalen Elementen (?) Nullwerte in der entsprechenden Spalte erlauben
und– evtl. Spalten für Ordnungsnummern bei Subelementen und PCDATA einfügen, falls
deren Reihenfolge wichtig ist. 3. Jedes Attribut betrachten und für einfache Attribute eine Spalte erzeugen,
– für mehrwertige Attribute (z.B. IDREFS) eine abhängige Tabelle mit Fremdschlüssel erzeugen,
– bei optionalen Attributen (#IMPLIED) Nullwerte in der entsprechenden Spalte erlauben
– sowie Default-Werte ¨
DB-Schema -> DTD
1. Für jede Tabelle ein Element erzeugen, dessen Subelemente aus den Spalten der Tabelle
abgeleitet werden. Gleichzeitig für jede Spalte, die nicht Primär- oder Fremdschlüssel ist,
ein PCDATA-Element erzeugen. 2. Für jede abhängige Tabelle, die einen
Fremdschlüssel enthält, ein Subelement erzeugen. 3. Bei Spalten mit möglichen Nullwerten ein
optionales Subelement (?) erzeugen.
Table Based Mapping
<database>
<table> <row>
<column1>...</column1> <column2>...</column2> ... </row> <row> ... </row> ... </table> <table> ... </table> ...
</database>
Object-Relational Mapping
Es wird versucht den XML Baum auf den Datenbank Bereich mit jeder Ebene als eigene Tabelle zu mappen
Mapping vom Profi
http://www.rpbourret.com/xml/DTDToDatabase.htm#object
XML Enabled Datenbank
Speicherung von XML Daten als BLOB/CLOB
Je nach Tiefe der Daten können Teilbäume als Text im BLOB gespeichert werden.
Auslesen und Suche über Volltextrecherche Oder hinzufügen einer weiteren Spalte id
Beispiel Oracle 9i
Support für offene Standards– W3C: DOM, XML Schema, XSLT, XQuery– ANSI: SQLX– IETF: WebDAV– Und: HTTP, FTP, JNDI, Web Services
Integriertes XML Repository in das RDBMS XML Schema-Integrität und RDBMS-Integritätregeln für XML
Daten XML Views über relationale Daten und umgekehrt XML spezifische Performance Leichte Darstellbarkeit durch Transformation im Server
O
O
Im Hintergrund
Architektur
HTTP Zugriff
Altova Oracle Integration
XML native Datenbanken
6.3.1 What is a Native XML Database? 6.3.2 Native XML Database Architectures
– 6.3.2.1 Text-Based Native XML Databases – 6.3.2.2 Model-Based Native XML Databases
6.3.3 Features of Native XML Databases – 6.3.3.1 Document Collections – 6.3.3.2 Query Languages – 6.3.3.3 Updates and Deletes – 6.3.3.4 Transactions, Locking, and Concurrency – 6.3.3.5 Application Programming Interfaces (APIs) – 6.3.3.6 Round-Tripping – 6.3.3.7 Remote Data – 6.3.3.8 Indexes – 6.3.3.9 External Entity Storage
6.3.4 Normalization, Referential Integrity, and Scalability – 6.3.4.1 Normalization – 6.3.4.2 Referential Integrity – 6.3.4.3 Scalability
Artikel zur Entscheidung native or not
http://www.dotnet-magazin.de/itr/magazine/stuff/dm/Interview10_05.pdf
Tamino im Einsatz
Kommunikation mit Tamino
Kommunikationssprachen
XQuery XUpdate
Middleware, zB Simplex
Application Server f. Mapping
Bizztalk