XML-Datenbanken

Werbung
XML-Datenbanken
1. Traditionale Datenbanken
1.1
Heutzutage, wenn wir von Datenbanken reden, denken wir vielleicht zuerst an
den traditionale Datenbaken, bzw relationale Datenbanken, die wir schon seit
lange kennen gelernt haben.
Konzeptionell ist eine relationale Datenbank eine Ansammlung von Tabellen.
Hinter den Tabellen steht mathematisch die Idee einer Relation, ein
grundlegender Begriff, der dem gesamten Ansatz den Namen gegeben hat.
Jede Tabelle stellt eine Relation dar und jede Zeile in einer Tabelle
repräsentiert ein bestimmtes Objekt an. Jede Tabelle hat einen eindeutigen
Primärschlüssel, durch den die Zeilen voneinander zu unterscheiden sind, Im
Idealfall sind deshalb niemals zwei Zeilen einer Tabelle gleich. Eine
Datenbank besteht im relationalen Modell aus einer Menge von Basistabellen.
Ein Datenbanksystem kann mehrere Datenbanken aufweisen.
Die folgenden zwei Tabellen sollen die Daten einer Bibliothekausleihe
darstellen. Eine Tabelle beinhaltet die Ausleihdaten, die zweite die
Informationen über die verwalteten Bücher alle
Ausleih
INVENTARNR
4711
1201
0007
4712
Buch
INVENTARNR
0007
1201
4711
4712
4717
Anfragesprache—SQL
NAME
Meyer
Schulz
Müller
Meyer
TITEL
Dr.No
Objektbanken
Datenbanken
Datenbanken
XML in Bioinformatik
BENUTZNR
150230
140160
150180
150230
ISBN
3-125
3-111
3-765
3-891
3-999
AUTOR
James Bond
Heuer
Vossen
Ullman
Wirth
SQL ist eine standardisierte Datenbanksprache. Sie enthält alle nötigen
Sprachbausteine für den Umgang mit einer relationale Datenbank. Die
Anweisung, über die SQL verfügt, lassen sich in Gruppen zusammenfassen:
• Data Definition Language ( DDL)
Unter der Gruppe DDL stehen verschiedene Anweisungen, die sich mit
der Definition von Daten beschäftigen. Im Einzelnen kann man leere
Datenbank einrichten ( z.B.Tabellen , Indizes, Views und weitere
Objekte), die Strukturdefinitionen existierender Objekte verändern und
Objekte löschen.
Syntax Beispielen in SQL
create database datenbankname --- Eine Datenbank datenbankname
wird erzeugt.
drop database datenbankname --- Eine Datenbank datenbankname
wird gelöscht.
create table tabellenname (spaltenname datentyp not null)
--- Erzeugt eine neue Tabelle „tabellenname” und eine Spalte
„spaltenname“. Der Spalte muss ein zulässiger Datentyp zugewiesen
werden. Die Option not null bestimmt , dass in jeder Spalte ein Wert
stehen muss.
• Data Manipulation Language (DML)
Die Gruppe DML dient der Manipulation von Daten und deren
Auswertung. Es gibt Operatoren zum Einfügen, Ändern und Löschen.
Die Anweisung SELECT hat eine zentrale Bedeutung, da sie
Auswertungen fast jeder Komplexität ermöglicht.
Beispiel:
select … from tabellenname [ where bedingung]
konkret in unserem vorherigen Beispiel:
select name from Ausleih
die Ergebnisrelation
Name
Meyer
Schulz
Müller
Meyer
•
Data Control Language (DCL)
In der DCL sind die Anweisungen zur Steuerung der Vergabe von
Zugriffsrechten zusammengefasst, mit denen man Benutzern
Systemprivilegien und Rechte auf Datenbankobjekte gewähren und
entziehen
2. XML-Datenbanken
2.1
XML bietet viele Sache ,um ein Datenbanksystem zu bauen.
storage: XML- documents
shemas: DTD , XML schema languages
query languages XQuery, XPath, XQL,etc.
programming interfaces :SAX, DOM
Vorteile: Die Benutzer kann passendes Format selbst auswählen.
Größtmögliche Flexibilität.
Nachteil: Effizient
Zeitliche Entwicklung XML:
XPath 2.0 XQuery 1.0
XML
Schema
2001
2000
1999
XUpdate
Quilt
XPath 1.0
W3C Empfehlungen
1998
XQL
XML-QL
DOM
noch in der Entwicklung
1997
XML
andere Vorschläge
2.2 XPath
Xpath ist eine Sprache, mit der Sie bestimmte Teile eines XML-Dokuments
Selektieren können. XPath verwendet keine XML-Syntax, sondern eine Art
Pfadangabe(daher auch der Name XPath) , um Elemente aus einem XMLDokument anzusteuern
2.2.1 XPath-Datenmodell
Ein XML-DOkument
<?xml version=“1.0“?>
<presentation status=“draft“ date=“2003-01-29“>
<title>XML</title>
<author>User</author>
<slide>
<title toc=“yes“>What is XML?</title>
<ilist>
<item>XML is not a markeup language (unlike HTML)</item>
<item>XML instances can be <emph>well formed</emph>or even
<emph>validating</emph></item>
</ilist>
</slide>
<slide>…</slide>
</presentation>
root
presentation
status
date
title
text
author
text
slide
title
toc
text
ilist
slide
item
text
item
text
Eine XML-Datei als Baum
XPath kennt folgende Arten von Knoten:
• Wurzelknoten root
• Elementknoten
• Textknoten
• Attributknoten
• Namensraumknoten
• Processing-Instruction-Knoten
• Kommentarknoten
Nicht abgebildet sind aber z.B.Dokumenttyp-Deklarationen und CDATAAbschnitte.
2.2.2 Achsen in XPath
Achsen sind Wege oder Pfade, entlang derer Sie durch die Baumstruktur
navigieren können. Sie beginnen bei einem bestimmten Knoten, dem
Kontextknoten( context node), und folgen den Achsen zwischen den Knoten.
In der Regel entspricht der Kontextknoten in XPath dem gegenwärtigen
Knoten).
XPath kennt 13 Achsen:
ancestor, ancestor-or-self, attribute, child, descendant, descendant-orself, following,following-sibling, namespace, parent, preceding,
preceding-sibling, self.
ancestor:Diese Achse wählt alle Knoten aus, die Vorfahren des
Kontextknotens sind. Die Knoten werden in umgekehrter
Dokumentordnung aufgelistet.
2
1
Der Kontextknoten ist grau markiert.
attribute: Wenn der Kontextknoten ein Element ist, selektiert diese Achse alle
seine Attribute in beliebiger Reihenfolge. Ansonsten wird nichts selektiert.
child: Diese Achse wählt alle Kinder (die direkten Nachfahren) des
Kontextknotens in Dokumentordnung aus.
1
2
2.2.3. Knoten auswählen mit XPath
Lokalisierungspfade
Es ist sehr ähnlich wie in einem Dateisystem
• absoluter Pfad : Wegbeschreibung vom Wurzelverzeichnis
/vol/gnu/bin/ls
• relativer Pfad : Wegbeschreibung vom „ aktuellen“ Verzeichnis
../juser/manual.txt
• Unterschied bei XML: gleichnamige Kindknoten erlaubt.
/
homes
juser
manual.txt
nzhang
vol
gnu
bin
local
lib
tex
share
ls
Lokalisierungsschritte
Achsenname::Knotentest[Pädikat]
Knotentests: bestimmt den Typ oder den Name des Knotens, der durch den
Lokalisierungsschritt ausgwählt werden soll.
Knotenfunktionen ,die bestimmte Knotentypen selektieren:
• * für alle Elementknoten,
• text() für alle Textknoten,
• comment() für Kommentarknoten
• processing-instruction() für Processing-Instruction-Knoten
• node() für beliebige Knotentypen
Prädikate: Ausdrücke, mit deren Hilfe Sie eine weitere Spezifizierung der
Knotenauswahl vornehmen können, also so etwas wie ein zusätzlich Filter.
Beispiel:
child::tiltle – alle <title> Elemente ,die Kinder des Kontextknoten sind
attribute::* -- alle Attribute des Kontextknotens
/Child::presentation/attribute::status -- das status-Attribute von presentationElement
Abgekürzte XPath-Syntax
• child:: kann einfach weg lassen
• // = descendant-or-self::node()
• . =self::node() ; .. =parent::node()
• @ =attribute::
slide/title
/presentation/author/text()
/presentation/@status
/presentation/slide[1]/ilist/item[2]
/presentation/slide/title[@toc=”yes”]
2.3 XQuery
XQuery wurde erstmals im Februar 2001 als working Draft vorgestellt. Die
Sprache übernimmt von XPath die Pfadausdruckssyntax für hierarchische
Dokumente.
2.3.1 XQuery-Datenmodell
Das in XQuery verwendete Datenmodell ist eine Erweiterung von XPath.
2.3.2 XQuery Ausdrücke
In XQuery werden die Anfragen mit verschiedenen Arten von Ausdrücken
Formuliert .Diese Ausdrücke können beliebig verschachtelt sein und zu einem
einzigen Anfrageausdruck kombiniert werden. Als Ergebnis liefert ein
Ausdruck immer eine Liste, die sowohl einzelne Werte als auch Knoten
enthalten kann.
2.3.2.1 Einfache Beispiele
Erste Beispiele:
let $x:=5 let $y:=6 return 10*$x+$y
> 56
Sequenz:
let $a:=3,4
let $b:=($a, $a)
let $c:=99
let $d= ()
return (count($a), count($b), count($c), count($d))
>(2, 4, 1, 0)
Kommentar beginnt mit #
2.3.2.2 Pfadausdrücke
gleich wie in XPath 2.0
Erweiterung gegenüber XPath1.0: ein Ausdruck in XQuery liefert immer eine
Sequenz , hat Ordnung (XPath kennt nur Knotenmengen)
Beispiele:
let $book := document(“mybook.xml”)/book
return $book/chapter
document Funktion gibt die Wurzelknoten von einem Dokument zurück. Der
/book Ausdruck selektiert das <book>-Element direkt unterhalb des
Wurzelknotens. Das Programm gibt einen Sequenz aus alle <chapter>Elemente unter <book>-Element.
oder
return $book//para[@class=“waring“]
2.3.2.3FLWR-Ausdrücke
Die wichtigsten Ausdrücke in XQuery sind die FLWR-Ausdrücke (gesprochen
„Flower-Ausdrücke“) .Sie setzen sich aus den Teilen FOR bzw. LET, WHERE
und RETURN zusammen.
for $ x in (1 to 3) return ($x,10+$x)
>1,11,2,12,3,13
for $c in customers
for $o in orders
where $c.cust_id=$o.cust_ id and $o.part_id=”xx”
return $c.name
entspricht ähnlich Funktion in SQL
select customers.name
from customers, order
where customer.cust_id=orders.cust_id
and orders.part_id=”xx”
2.3.2.4Funktionen
define funktion descendant-or-self($x)
{
$x,
for $y in children($x)
return descendant-or-self($y)
}
descendant-or-self(<a>X<b>Y</b></a>)
> <a>X<b>Y</b></a>; ”X”; <b>Y</b>; “Y”
2.3.2.5 Sortieren
$books sortby (author/name)
Was kann XQuery nicht ?
Insert ,Delet ,Update
2.4XUpdate
• Erzeugen und Löschen von allen XPath-Elementtypen (element,
attribute, text)
• Aktualisierung von Elementen (Update)
• Umbenennen von Elementen
3.Daten und Dokumente
• Daten-zentrierte Dokumente
strukturiert, regulär
Beispiele: Produktkataloge, Bestellungen, Rechnungen
• Dokument-zentrierte Dokumente
unstrukturiert, irregulär
Beispiele: wissenschaftliche Artikel, Bücher, E-Mails, Webseiten
• Semistrukturierte Dokumente
datenzentrierte und dokumentenzentrierte Anteile
Beispiele: Veröffentlichungen, Amazon
XML-fähige Datenbanken:
Oracle8i RDBMS mit vielen Erweiterungen und Werkzeugen für XML
Native XML-Datenbank:
Tamino
Herunterladen