mehrere Datenbanken - Beuth Hochschule für Technik Berlin

Werbung
Mehrere Datenbanken
Grosse Anwender haben oft mehrere Datenbanksysteme gleichzeitig im Einsatz.
Die Gründe sind meist Tradition und spezielle Anwendungen, die ein dediziertes Datenbanksystem erfordern.
Es gibt folgende Verfahren:
1) Datenaustausch über Betriebssystemdateien: export und import, klassischer Weg, offline
2) gemeinsame Schnittstelle unter Windows ODBC, Windows-proprietär, online
3) gemeinsame Schnittstelle allgemein: XML, offline und online
4) Verteilte Datenbanksysteme
TFH Berlin/Steyer
1) Datenaustausch über Dateien
mit Access
Thema: In diesem Kapitel erfährt man, wie Daten mit anderem Dateiformat importiert oder exportiert
werden.
Importieren
Datei -> Externe Daten -> Importieren im Dateisystem suchen
wenn aus Access, dann Tabelle wählen, wenn Textdatei, dann Format angeben
Exportieren
Datei -> Speichern unter/Exportieren im Dateisystem suchen
wenn in Access, dann Tabelle wählen
wenn in Textdatei, dann Format angeben
Angaben über Herkunftsdateityp, Formatierung oder Trennzeichen, welche Trennzeichen, mit/ohne
Primärschlüssel, in alte oder neue Tabelle
Angaben über Zieldateityp, Formatierung oder Trennzeichen, welche Trennzeichen
"Hammer";20;5,00 €
"Amboss";10;25,50 €
"Steigbügel";5;8,99 €
mit dem SQL Server
BCP zu Import und Export
bcp ist ein Dienstprogramm zum Laden von Dateien in Tabellen bzw. Entladen von Tabellen in Dateien.
Formatangaben sind mölich.
Syntax: bcp [[db_name.]ben_name.]tab_name {IN|OUT} datei_name
[{-schalter parameter}...]
Beispiel:
bcp
beispiel..arbeiten out b.out -t"|" -r"\n" -SSYBASE10 -Upetra
Die Daten der Tabelle arbeiten werden in die Datei b.out entladen. Der Schalter "-t" spezifiziert den Feldbegrenzer,
"-r" spezifiziert den Datensatzbegrenzer.
10102|p1|Projektleiter |Oct 1 1988 12:00AM
10102|p3|Gruppenleiter |Jan 1 1989 12:00AM
25348|p2|Sacgbearbeiter|Feb 15 1988 12:00AM
mit MySQL
Exportieren
SELECT * FROM datenbanktabelle INTO OUTFILE ‘serverdatei’
Der Benutzer muss das FILE-Privileg haben.
mysqldump
Importieren
LOAD DATA [LOCAL] INFILE importdatei INTO TABLE Datenbankabelle [Optionen]
LOCAL Datei liegt auf einem Client und wird in den Server übertragen
Optionen
Definition eigener Trenner:
FIELDS TERMINATED BY
LINES TERMINATED BY
LOAD DATA LOCAL INFILE “buchdaten.txt” INTO TABLE buch;
LOAD DATA LOCAL INFILE “buchdaten.txt” INTO TABLE buch
FIELDS TERMINATED BY “##” LINES TERMINATED BY 0x03;
Der Benutzer muss das FILE-Privileg haben.
Beispiele:
2) ODBC
Abkürzung für: Open Database Connectivity
Standard-Datenbank-Schnittstelle für Anwendungsprogramme unter Windows
ProgLan 1
ProgLan 2
ProgLan 1
ProgLan 2
ODBC
m * n Precompiler
m + n Precompiler
Systemdatenquelle einrichten (als Administrator)
Benutzerdatenquelle einrichten (als normaler Benutzer)
->Start->Einstellungen->Systemsteuerung: ODBC-Datenquelle->DSN/Hinzufügen
installierten Treiber auswählen
(einige sind standardmässig vorhanden, nichtvorhandene müssen installiert werden)
TFH Berlin/Steyer
ODBC
2
Der ODBC-Treiber meldet sich, data source name vergeben, Datenbank suchen
TFH Berlin/Steyer
Access
mit Access
Verknüpfen als Client
Datei -> Externe Daten -> Verknüpfen im Dateisystem suchen
wenn aus Access, dann Tabelle wählen
wenn ODBC-Datenbank, dann Datenquelle auswählen
(Datenquellen können mit dem entsprechenden Treiber unter
Einstellungen -> Systemsteuerung -> 32Bit-ODBC eingerichtet werden.)
Verknüpfen als Server
als ODBC-Datenquelle einrichten
Einstellungen -> Systemsteuerung -> Datenquellen
An die andere Serverdatenbank anhängen
mit dem SQL Server
Verknüpfen als Server
als ODBC-Datenquelle einrichten
Einstellungen -> Systemsteuerung -> Datenquellen
An die andere Serverdatenbank anhängen
mit MySQL
Verknüpfen als Server
Nach der Installation des ODBC-Treibers (connector) als ODBC-Datenquelle einrichten
Einstellungen -> Systemsteuerung -> Datenquellen
An die andere Serverdatenbank anhängen
TFH Berlin/Steyer
3) XML
Einheitliches Java-Anwendungsprogramm
For XML
OPENXML
DB 1
DB 2
Vorteile von XML
- einheitliches Format zum Datenaustausch
- einheitliches Format für Anwendungsprogramme
SQL-Tabellen als XML-Ausdrücke
SQL-select und Ergebnistabelle
select * from kunde
kundenname
pin
kontostand
---------------------------------------------------------Meier
123
396.00
Müller
321
8000.00
Schulze
435
2203.00
SQL-select mit XML-Anforderung und Darstellung (raw)
select * from kunde for xml raw
<row kundenname="Meier
<row kundenname="Müller
<row kundenname="Schulze
" pin="123" kontostand="396.00"/>
" pin="321" kontostand="8000.00"/>
" pin="435" kontostand="2203.00"/>
Es gibt Standardelemente "row", Spalten werden zu Attributen.
SQL-select mit XML-Anforderung und Darstellung (auto)
select * from kunde for xml auto
<kunde kundenname="Meier
<kunde kundenname="Müller
<kunde kundenname="Schulze
" pin="123" kontostand="396.00"/>
" pin="321" kontostand="8000.00"/>
" pin="435" kontostand="2203.00"/>
Tabellennamen werden zu Elementnamen, Spalten werden zu Attributen.
TFH Berlin/Steyer
XML-Unterstützung
10-1
SQL-select mit XML-Anforderung und Darstellung (auto,
elements)
select * from kunde for xml auto, elements
<kunde>
<kunde>
<kunde>
<kundenname>Meier</kundenname>
<pin>123</pin>
<kontostand>396.00</kontostand></kunde>
<kundenname>Müller</kundenname>
<pin>321</pin>
<kontostand>8000.00</kontostand></kunde>
<kundenname>Schulze</kundenname>
<pin>435</pin>
<kontostand>2203.00</kontostand></kunde>
Tabellennamen werden zu Elementnamen, Spalten werden zu Unterelemente.
Der Inhalt eines XML-Dokuments ist eine Baumstruktur mit genau einem Wurzelelement und stellt die interne
Struktur des Dokuments dar. Dieser Baum kann durch einen sogenannten XML-Parser aufgebaut werden. Auf
diese Weise kann für eine Anwendung , z.B. einen Browser, der Zugriff auf einzelne Baumknoten ermöglicht
werden.
XML ist ein einfacher, flexibler und kostengünstiger Weg, um Daten zwischen verschiedenen Anwendungen
auszutauschen. Es ist ein Schlüsselelement der Business-zu-Business-Kommunikation (B2B).
XML-Ausdrücke als Bäume
{. . .} row mit Attributen (keine Baumdarstellung)
{. . .} Kunde mit Attributen (keine Baumdarstellung)
Kunde mit Elementen (Baumdarstellung)
<kunde>
<kunde>
<kunde>
<kundenname>Meier</kundenname>
<pin>123</pin>
<kontostand>396.00</kontostand></kunde>
<kundenname>Müller</kundenname>
<pin>321</pin>
<kontostand>8000.00</kontostand></kunde>
<kundenname>Schulze</kundenname>
<pin>435</pin>
<kontostand>2203.00</kontostand></kunde>
kunde
kunde
kunde
Kundenname
pin
kontostand Kundenname pin
kontostand Kundenname pin
Meier
123
396.00 ...Müller
8000.00
TFH Berlin/Steyer
XML-Unterstützung
321
Meier
435
kontostand
2203.00
10-2
<!-- DTD Definition kunde -->
<!ELEMENT kunde (kundenname, pin, kontostand)>
<!ELEMENT kundenname
#PCDATA>
<!ELEMENT pin
#PCDATA>
<!ELEMENT kontostand
#PCDATA>
Eine Tabellenzeile entspricht einem Kantenzug von der Wurzel zu einem Blattknoten.
OPENXML
Im Query Analyzer:
create procedure dbo.newshippers (@xml varchar(1000)) as
declare @ixml int, @rc int
execute sp_xml_preparedocument @ixml OUTPUT, @xml
select * from OPENXML(@ixml,'sp/Shippers')
select @rc=@@rowcount
exec sp_xml_removedocument @ixml
if @rc > 0 begin
select 'Success'
return 0
end
else begin
select 'Failure'
return 1
end
newshippers
'<sp>
<Shippers x="y" u="v"/>
</sp>'
newshippers
'<br>
<Shippers x="y" u="v"/>
</br>'
Ausgabe:
Ausgabe:
(kein Spaltenname)
(kein Spaltenname)
SUCCESS
FAILURE
Schritte zum Speichern von XML-Daten in relationale
Datenbanken
- aus dem XML-String einen Baum bauen (durch Parser, preparedocument)
- Zeilenmenge erzeugen (= jeder Kantenzug des XML-Baumes)
- eintragen der Zeilenmenge in eine Tabelle (bulk insert)
(- Speicherbereich des Baumes freigeben)
TFH Berlin/Steyer
Verteilte Datenbanksysteme
10-2
4) Verteilte Datenbanksysteme
z.B. auf einem Kleinrechnerverbund (PCs)
Anwendung mit zentraler Datenbank
Anwendung mit verteilter Datenbank
Oberfläche
Oberfläche
Programme
Programme
Datenverwaltung
Datenverwaltung
Motivation
Leistungsfähigkeit
Verfügbarkeit
Kosteneffektivität
Anpassung an dezentrale Organisationen
Regeln von Date (Buch S. 49)
1
2
3
4
5
6
7
8
9
10
11
12
Lokale Autonomie
Keine Abhängigkeit von zentralen Systemfunktionen
Hohe Verfügbarkeit
Ortstransparenz
Fragmentierungstransparenz
Replikationstransparenz
Verteilte Anfragebearbeitung
Verteilte Transaktionsverwaltung
Hardware-Unabhängigkeit
Betriebssystem-Unabhängigkeit
Netzwerk-Unabhängigkeit
Datenbanksystem-Unabhängigkeit
Katalog
bisher:
jetzt noch:
Tabellenbeschreibungen, Feldbeschreibungen, Speicheradressen
Indexinformationen
Zugriffsberechtigungen, Passwörter, Privilegien
Statistiken
Verteilungsinformationen
Annahme: horizontale Primärschlüsselzerlegung der Tabellen
TFH Berlin/Steyer
10-2
Verteilte Datenbanksysteme
DDL Kommandos
place person where pnr between x and y on location
|
|
|
|
Tabelle
Schlüssel mit Prädikat lokale Datenbank
pnr
p2
p4
p3
p1
p5
pname
Schulz
Meier
Müller
Scholz
Weber
pnr
p5
pname
Weber
loc1
pnr
p2
p1
pname
Schulz
Scholz
loc2
pnr
p4
p3
pname
Meier
Müller
loc3
pnr
p4
p3
pname
Meier
Müller
loc4
place person where pnr = p5 on loc1
place person where pnr = p2 or pnr = p1 on loc2
place person where pnr between p3 and p4 on loc3
place person where pnr between p3 and p4 on loc4 (repliziert)
Vertikal ist schwieriger
Andere Kommandos: move, remove
Fragmentierung und Replikation sind möglich.
Anfragebearbeitung
Zerlegung einer Anfrage in Teilanfragen
Lokalisierung der Daten und ihrer Locations
Globale Optimierung (CPU-Kosten/EA-Kosten/Kommunikationskosten)
Joinbearbeitung
select * from person where pnr between p1 and p4
ergibt
select * from person where pnr between p1 and p2 (von loc2)
select * from person where pnr between p3 and p4 (von loc3)
oder (falls loc3 nicht verfügbar oder langsamer ist)
select * from person where pnr between p1 and p2 (von loc2)
select * from person where pnr between p3 and p4 (von loc4)
Transaktionsverwaltung
Es gibt einen Transaktionsbaum mit Haupt- und Subtransaktionen.
Der Abbruch einer Subtransaktion bedeutet Abbruch der gesamten Transaktion.
Die ACID-Eigenschaften müssen erhalten bleiben.
Zwei-Phasen-Commit 1.Phase: Schreiben in die lokalen Logs (ToDoListen)
2.Phase: Realisieren in den Daten
Alle müssen Phase1 durchgeführt und Erfolg gemeldet haben. Dann erst kann Phase 2 beginnen.
TFH Berlin/Steyer
10-2
Verteilte Datenbanksysteme
Beispiel
Personentabelle
Definition
create table . . .
place . . .
(Verteilung auf alle locs)
Einfügen von Zeilen (Orte ermitteln, Transport, Speichern)
(Verteilung auf eine loc)
(Verteilung auf weitere locs bei Replikation)
Anfragebearbeitung (Zerlegung, Sammlung der Ergebnisse, Alternativen bei Replikation)
(Verteilung auf eine oder weitere locs)
Ändern aller Werte
(z.B. Gehaltserhöhung)
(Versand der Operation an alle locs, mit Erfolg/Misserfolg)
TFH Berlin/Steyer
10-3
Herunterladen