25_8335_901-XML-Entwicklungstendenz - Offene

Werbung
Das diesem Dokument zugrundeliegende Vorhaben wurde mit
Mitteln des Bundesministeriums für Bildung und Forschung
unter dem Förderkennzeichen 16OH21005 gefördert.
Die Verantwortung für den Inhalt dieser Veröffentlichung liegt
beim Autor/bei der Autorin.
1
In diesem Abschnitt wollen wir uns mit dem Thema XML Datenbank
beschäftigen. Das Ziel ist, herauszufinden, was XML Datenbank überhaupt sind
und was die wichtigsten Konzepte sind.
Den Themenbereich XML werden wir aber nur soweit vertiefen, wie es für das
Verständnis bzgl. Datenbanken notwendig ist.
2
Bisher:
Bei den relationalen Datenbank liegt der Schwerpunkt immer auf der Erstellung
eines Datenmodells und dem Anlegen eines relationalen Datenbankschemas in
einer Datenbank.
Das wesentliche hierbei ist, dass die Anwendungsdaten in Form eines relationalen
Modells strukturiert wird.
Die XML_DB Idee:
Bei den XML-Datenbank liegt folgende Idee zu Grunde.
Viele Daten liegen bereits in der Form von XML-Dokumenten vor. Denken wir
nur an den Bereich „Business-to-Business“ (B2B“).
Dort werden Daten zwischen Geschäftspartner in Form von XML Dokumenten
ausgetauscht.
Somit liegt folgende Fragestellung nahe:
Warum nicht die XML Dokumente direkt in einer Datenbank
speichern, da die beteiligten Anwendungen die Daten bereits in XML
3
Form verarbeiten?
3
Da die Anwendungen bereits die Daten in Form von XML Dokumenten
verarbeiten, versucht man zu vermeiden, dass man den Inhalt der XML
Dokument an ein Datenmodell konvertieren muss, um die Daten dann dort
abzulegen.
XML Datenbanken haben also das Ziel:
• XML Daten effizient zu speichern
• Anwendungen direkt in den XML-Datenbanken nach Daten suchen können,
wie sie es bereits von den XML-Dateien her kennen
• Man kann mehrere XML-Dokumente zu einen Dokument aggregieren, um
dort zu suchen. Also so etwas wie eine Suche über mehrere XML-Dokumente
hinweg
4
Damit wir ein tieferes Verständnis für XML-Datenbanken erlangen, müssen wir
uns näher mit XML beschäftigen.
Aber nur soweit wie unbedingt nötigt ist. Da XML sehr vielfältig einsetzbar ist
und die XML Sprachelement sehr umfangreich sind, würde es den Rahmen des
Datenbankkurses sprengen, sich tiefergehend in XML einzuarbeiten
XML in Kürze
XML steht für EXtensible Markup Language
• Das sind zunächst Tags
Dies bedeutet, dass man um die einzelnen Daten , die man austauschen möchte
sogenannte TAG setzt. Somit gibt es einen TAG , wenn die Daten beginnen und
ein TAG wenn die Daten zu Ende sind. Das Tag am Anfang nennt man
sinnvollerweise Start Tag und das Tag am Ende sinnvollerweise Ende-Tag.
Tags sind einfach Namen.
Tags kennen wir schon von HTML her. (HTML ist ja auch eine Markup
Language).
5
Damit man Tag erkennen kann, sind diese in dem Zeichen ‚< ‚und ‚>‘ eingebettet.
Beispiel für ein Start-Tag ist
<interpret>
Das Ende-Tag hat zusätzlich noch das Zeichen ‚/‘ , damit man es von einem Star-Tag
unterscheiden kann.
Einem Tag kann man Attribute zuordnen, die Zusatzinformationen geben können.
Als nächste schauen wir uns mal den Inhalt einer korrekten XML Datei an.
5
In dieser Abbildung sehen Sie ein korrekte XML Datei:
Zeile 1 : Gibt an, dass es sich um eine XML Datei handelt. Ist eine Art Meta
Information. Erkennt man daran, dass das Tag mit einem ‚<?‘ anfängt.
Zeile 3: Dort steht das Start-Tag ‚<musicstore>‘. Es wird als Root-Tag
bezeichnet. Wie der Name schon vermuten lässt, darf es in einer XML Daten nur
eine Root-Tag geben ( nur eine Wurzel).
Zeile 4 und ff enthalten weitere Tags. Wie man sieht, kann man Tags beliebig tief
schachteln. Wichtig ist nur, dass die Tags in umgekehrter Reichenfolge
geschlossen werden.
Also
<interpret> <cd> … </cd> </interpret> ist korrekt
<interpret> <cd> </interpret> </cd>
ist nicht erlaubt
Zeile 20: Dort steht das Ende-Tag und kennzeichnet das Ende der Wurzel:.
6
Wie man an der Beispiel XML-Datei gesehen hat, kann man via XML Daten in
einer einfachen Form beschreiben, damit man sie in einer Anwendung auch
einfach verarbeiten kann.
Die Beschreibung der Daten ist dabei unabhängig von der Programmiersprache,
in der eine Anwendung erstellt wurde.
Aus der XML Syntax heraus ergibt sich die Tatsache, dass die Daten dabei immer
eine Baumstruktur aufweisen. Damit lassen sich – bis auf wenige Ausnahmenalle möglichen Arten von Daten beschreiben. Daher hat sich XML als StandardDatenform für den Austausch von Daten durchgesetzt.
7
XML ist von dem W3 Konsortium standardisiert und jeder kann die Standards im
Internet einsehen.
Die wichtigsten URLs sind in der Abbildung aufgeführt.
8
Der XML Standard legt nicht fest, welche TAG-Namen für ein XML Dokument
zu verwenden sind. Jede Entwicklerin bzw. Entwickler kann seine eigenen TAGNamen definieren.
Welche Tag-Namen verwendet werden dürfen und wie die Tags geschachtelt sein
müssen/dürfen, kann man in einer extra Datei definieren. Diese Definition wird
als XML-Schema Definition bezeichnet.
An dieser Stellen wollen wir uns nicht näher mit XML-Schema Definitionen
beschäftigen.
Wichtig ist an dieser Stelle ist folgender Sachverhalt:
• Kann man für eine XML-Datei ein XML Schema festlegen (also man kann
genaue Regeln vorgeben) , dann besitzt die XML-Datei eine feste Struktur. In
diesem Fall spricht man von „Datenzentrierten XML Dokumenten“. Diese
Art von Dokumenten werden verwendet, wenn man Daten zwischen
Anwendungen austauschen möchte, (Stichwort B2B).
• Kann man keine XML Schema vorgeben, weil bestimmte Tag an beliebiger
Stelle auftreten können ( Vergleiche HTML <p> ), dann besitzt die XML-Datei
eine unregelmäßige Struktur. In diesem Fall spricht man von
„Dokumentenzentrierten XML Dokumenten“. Diese Art von XML Dateien
werden verwendet, wenn man Webseiten-Inhalte oder sonstige TextDokumente in XML-Form austauschen möchte.
9
Die Idee ist ja, XML direkt in einer Datenbank abzulegen.
Hierbei kann man zwischen zwei Verfahren unterscheiden. Es gibt also zwei
verschiedene Kategorien von XML Datenbanken.
Test-Based Storage
Bei den Text-Based Storage Datenbanken, werden die XML Dokumente direkt in
Form von XML Textfiles in der Datenbank gespeichert.
Dies bedeutet:
• Die XML Daten, die man abspeichert, bekommt man beim Lesen wieder in
Originalform zurück
Model-Based Storage
Bei den Model-Based Storage Datenbanken werden die XML Daten in einer Art
Modell abgelegt. Dies kann man sich wie folgt vorstellen.
Die XML Tags werden als Knoten aufgefasst. Für jeden Knoten in einem XML
Dokument wird dann ein Eintrag in einer Tabelle abgelegt. Es findet also eine
Umwandlung von einer Textform in ein Modell statt.
10
Dies bedeutet:
Beim Ablegen der XML Daten wird ein Mapping (eine Art Abbildung) vorgenommen, um
die Daten in einem Modell abzulegen. Beim Lesen eines Dokumentes müssen aus den
Daten des Modells die XML Dateien erstellt werden.
10
Die bisher betrachteten Kategorien werden als Nativ-XML Datenbanken (NXD)
bezeichnet, da dort immer XML in direkter Form abgelegt werden.
In der Praxis gibt es noch zwei weitere Kategorien.
Zum einen sind dies die „XML Enabled“ Datenbanken und zum Anderen die
„Hybriden“ Datenbanken.
XML-Enabled Databases (XEDB)
Bei den XEDB wird ein sogenannter XML-Relational Mapper verwendet. Dieser
Mapper nimmt eine Interpretation der XML Daten vor und wandelt die Daten in
das darunterliegende relationale Schema um . Ähnlich wie bei Dokument-Based
Storages. Während bei den „Native-Document-Based“ Datenbanken, die
Umwandlung Teil der Datenbank (Datenbank Engine) selbst ist, erfolgt hier das
Mapping außerhalb der eigentlichen Datenbank Engine.
Einige Datenbank Hersteller wie z.B. Oracle haben einen speziellen Datentyp
XMLTYPE für Datenbankspalten, der es erlaubt ganze XML Dokumente
abzuspeichern.
11
Hybrid XML Database (HXD)
Bei den Hybrid-XML Datenbanken handelt es sich um eine Mischform., Diese Art von
Datenbanken bieten beide Möglichkeiten an. Sowohl das direkte Einlesen und Speichern
der XML Dokumente in XML Form als auch die Möglichkeit mit einem Mapping zu
arbeiten.
11
Die interessantes Frage bei XML Datenbank ist, wie man Abfragen gestalten
kann.
Bei relationalen Datenbanken verwenden wir SQL-Queries, um nach Daten zu
suchen.
Bei XML Dokumenten wird dagegen eine eigene XML–Query Sprache
verwendet.
Hierzu müssen wir zunächst zwei Fälle unterscheiden.
• Suchen innerhalb eines XML Dokumentes
• Suche in mehreren XML Dokumenten. Hierzu werden die XML Daten
aggregiert zu einem einzigen Dokument und anschließend gesucht.
Quellen:
• XQUERY : https://www.w3.org/TR/xquery/
12
Schauen wir uns zunächst das Suchen nach Daten in einem XML-Dokument an.
Hierzu verwendet man sogenannte XPath Expressions.
Da die XML Knoten einen Baum darstellen, kann man die einzelnen Knoten wie
einem Dateisystem durch eine Pfadangabe bestimmen.
Da Tags ( Knoten) auch Attribute haben können, kann man durch Angabe eines
Prädikates innerhalb eines XPATH Ausdruckes die Auswahl der Knoten näher
einschränken.
Auf die Inhalte eines Knotens kann man dann mittels einer Funktion „text()“
zugreifen.
Dies sind nur die wichtigsten Elemente eines Xpath Ausdruckes. Dies soll hier
genügen, um einen ersten Eindruck zu erhalten, wie mächtig XPATH ist.
Am besten verdeutlicht ein Beispiel wie XPath funktioniert.
Quellen:
• XPATH Standard:
• Beispiele: http://www.w3schools.com/xsl/xpath_examples.asp
13
Auf der linken Seite sehen wir ein XML Dokument.
Rechts oben sehen wir einen XPATH Ausdruck.
Rechts unten sehen wir das Ergebnis, nach der Ausführung der XPATH
Anweisung auf das XML Dokument.
Der XPATH Ausdruck definiert folgenden Query:
• Mit „//interpret“ geben wir an, dass wir nach Tags suchen, die den Tag Namen
‚interpret‘ haben, unabhängig davon, wo genau im Baum das Tag zu finden
ist. Dies wird durch ‚//‘ vor dem Tag Namen erreicht.
• [@name=‚ ‚] gibt dabei an, dass wir nur Tags von ‚interpret‘ suchen, die das
Attribute „name“ haben und der Wert des Attributes „pink floyd“ ist
• Danach steht „/cd“. Dies gibt an, dass zusätzlich unterhalb des Tags
„interpret“ ein Tag „cd“ gesucht werden soll.
• Wird ein solches Tag gefunden, dann wird dieses Tag und ggf. alle weiteren
Tags im Unterbaum in die Ausgabemenge übernommen.
Somit sollte nun klar sein, wie die abgebildete Ergebnismenge zu Stande kommt.
14
Online Tool zum ausprobieren:
• http://www.xpathtester.com/xpath
• http://codebeautify.org/Xpath-Tester
14
Mit XQUERY steht eine weitere, noch mächtigere Möglichkeit für Abfragen zur
Verfügung.
Dort können wir neben den XQuery Anweisungen auch auf XPATH
zurückgreifen.
XQuery enthält ähnliche syntaktische Element wie SQL ( wie zum Beispiel
ORDER BY)
Ein Beispiel zeigt am besten, wie man XQuery einsetzen kann.
Quellen:
• XQUERY Standard: https://www.w3.org/TR/xquery/
• Beispiele: http://www.w3schools.com/xsl/xquery_example.asp
15
Schauen wir uns nun ein XQUERY Beispiel an.
Auf der linken Seite ist das XML Dokument abgebildet.
Oben rechts ist ein zweizeiliges Query Script abgebildet
Unten rechts sehen wir die Ergebnismenge.
Das Script ist wie folgt zu interpretieren:
• „For“ ist eine Schlüsselwort
• „$res“ ist eine Variable
• „in“ ist Schlüsselwort
• „//cd“ ist eine XPATH Anweisung
• „return $res“ gibt an, dass der Inhalt der Variable „res“
Die Syntax ist also wie folgt.
For
<$variable> in
<xpath>
Return <$variable>
16
Online Tools:
• Online Tool: http://www.xpathtester.com/xquery
16
In dieser Tabelle sehen Sie einen kleinen Auszug von verfügbaren XML
Datenbanken.
Wer über den Einsatz einer XML Datenbank nachdenkt, kommt allerdings nicht
darum herum eigene Recherchen durchzuführen, um den aktuellen Stand der
unterstützen Funktionen, Features und Standards zu evaluieren.
Quellen:
• http://db-engines.com/en/ranking/native+xml+dbms
• Siehe auch: http://www.rpbourret.com/xml/XMLDatabaseProds.htm
17
Hier noch einmal einen kleinen Überblick mit Links zur weiteren Vertiefung.
18
19
20
21
Herunterladen