Sie sind auf Seite 1von 79

Verteilte Datenbanken

nach: Alfons Kemper, A. Eickler, Datenbanksysteme

Motivation:
geographisch verteilte Organisationsform
einer Bank mit ihren Filialen
Filialen sollen Daten lokaler Kunden
bearbeiten knnen
Zentrale soll Zugriff auf alle Daten
haben (z.B. fr Kontogutheissungen)

Terminologie

Sammlung von Informationseinheiten, verteilt auf


mehreren Rechnern, verbunden mittels
Kommunikationsnetz nach Ceri & Pelagatti (1984)
Kooperation zwischen autonom arbeitenden Stationen,
zur Durchfhrung einer globalen Aufgabe

Kommunikationsmedien

LAN: local area network, z.B. Ethernet, Token-Ring oder


FDDI-Netz
WAN: wide area network, z.B. das Internet
Telefonverbindungen, z.B. ISDN oder einfache ModemVerbindungen

Verteiltes Datenbanksystem

Station S1

Station S2

Kommunikationsnetz

Station S3

Client-Server-Architektur
Client C1

Client C2

Kommunikationsnetz

Server

Aufbau und Entwurf eines


verteilten Datenbanksystems
globales Schema
Fragmentierungsschema
Zuordnungsschema
lokales
Schema

...

lokales
Schema

lokales
DBMS

...

lokales
DBMS

lokale
DB

...

lokale
DB

Station S1

...

Station Sn

Fragmentierung und Allokation


einer Relation
Fragmentierung: Fragmente enthalten Daten mit
gleichem Zugriffsverhalten
Allokation: Fragmente werden den Stationen zugeordnet
- mit Replikation (redundanzfrei)
- ohne Replikation

Fragmentierung

R1

Allokation
(Zuordnung)

R11
Station S1
R12

R2
R21
R3

R32
R33

Station S2

Station S3
8

Fragmentierung

horizontale Fragmentierung: Zerlegung der Relation in


disjunkte Tupelmengen
vertikale Fragmentierung: Zusammenfassung von
Attributen mit gleichem Zugriffsmuster
kombinierte Fragmentierung: Anwendung horizontaler
und vertikaler Fragmentierung auf dieselbe Relation

Korrektheits-Anforderungen

Rekonstruierbarkeit
Vollstndigkeit
Disjunktheit

10

Beispielrelation Professoren

Professoren
PersNr

Name

Rang

Raum

Fakultt

Gehalt

Steuerklasse

2125

Sokrates

C4

226

Philosophie

85000

2126

Russel

C4

232

Philosophie

80000

2127

Kopernikus

C3

310

Physik

65000

2133

Popper

C3

52

Philosophie

68000

2134

Augustinus

C3

309

Theologie

55000

2136

Curie

C4

36

Physik

95000

2137

Kant

C4

Philosophie

98000

11

Horizontale Fragmentierung
abstrakte Darstellung:

R1
R2
R3
Fr 2 Prdikate p1 und p2 ergeben sich 4 Zerlegungen:
R1 := p1 p2(R)
R2 := p1 p2(R)
R3 := p1 p2 (R)
R4 := p1

p2 (R)

n Zerlegungsprdikate p1,...,pn ergeben 2n Fragmente

12

sinnvolle Gruppierung der Professoren nach Fakulttszugehrigkeit:


3 Zerlegungsprdikate:

p1

Fakultt = Theologie
p2 Fakultt = Physik
p3 Fakultt = Philosophie

TheolProfs := _p1p2 p3(Professoren) = _p1(Professoren)


PhysikProfs := _p1p2 p3(Professoren) = _p2(Professoren)
PhiloProfs

:= _p1p2 p3(Professoren) = _p3(Professoren)

AndereProfs := _p1p2 p3(Professoren)


13

Abgeleitete horizontale
Fragmentierung
Beispiel Vorlesungen aus dem Universittsschema:
Zerlegung in Gruppen mit gleicher SWS-Zahl
2SWSVorls := _SWS=2 (Vorlesungen)
3SWSVorls := _SWS=3 (Vorlesungen)
4SWSVorls := _SWS=4 (Vorlesungen)
fr Anfragebearbeitung schlechte Zerlegung

14

select Titel, Name


from Vorlesungen, Professoren
where gelesenVon = PersNr;
resultiert in:
Titel, Name((TheolProfs An2SWSVorls)
(TheolProfs A 3SWSVorls)
... (PhiloProfs A 4SWSVorls) )
Join-Graph zu diesem Problem:
TheolProfs

2SWSVorls

PhysikProfs

3SWSVorls

PhiloProfs

4SWSVorls
15

Lsung: abgeleitete Fragmentierung


TheolProfs

TheolVorls

PhysikProfs

PhysikVorls

PhiloProfs

PhiloVorls

TheolVorls := Vorlesungen E gelesenVon=PersNr TheolProfs


PhysikVorls := Vorlesungen E gelesenVon=PersNr PhysikProfs
PhiloVorls := Vorlesungen E

gelesenVon=PersNr

PhiloProfs

Titel, Name((TheolProfs Ap TheolVorls)


(PhysikProfs Ap PhysikVorls)
(PhiloProfs Ap PhiloVorls) )
mit p

(PersNr = gelesenVon)
16

Vertikale Fragmentierung
abstrakte Darstellung:

R1

R2
17

Vertikale Fragmentierung
Beliebige vertikale Fragmentierung gewhrleistet keine
Rekonstruierbarkeit
2 mgliche Anstze, um Rekonstruierbarkeit zu garantieren:
jedes Fragment enthlt den Primrschlssel der
Originalrelation. Aber: Verletzung der Disjunktheit
jedem Tupel der Originalrelation wird ein eindeutiges
Surrogat (= knstlich erzeugter Objektindikator)
zugeordnet, welches in jedes vertikale Fragment des
Tupels mit aufgenommen wird

18

Vertikale Fragmentierung
(Beispiel)
fr die Universittsverwaltung sind PersNr, Name, Gehalt und
Steuerklasse interessant:
ProfVerw := PersNr, Name, Gehalt, Steuerklasse (Professoren)
fr Lehre und Forschung sind dagegen PersNr, Name, Rang,
Raum und Fakultt von Bedeutung:
Profs := PersNr, Name, Rang, Raum, Fakultt (Professoren)
Rekonstruktion der Originalrelation Professoren:
Professoren = ProfVerw AProfVerw.PersNr = Profs.PersNr Profs

19

Kombinierte Fragmentierung
a) horizontale Fragmentierung nach vertikaler Fragmentierung
R
R21
R22
R23
R1

R2

b) vertikale Fragmentierung nach horizontaler Fragmentierung


R
R1
R2
R3
R31

R32

20

Rekonstruktion nach kombinierter


Fragmentierung

Fall a)

R = R1 A p (R21 R22 R23)


Fall b)

R = R1 R2 (R31 A R31. _ = R32. _ R32)


21

Baumdarstellung der
Fragmentierungen (Beispiel)
Professoren

v
Profs

ProfVerw

PhysikProfs TheolProfs

Vorlesungen

PhiloProfs

PhysikVorls TheolVorls

PhiloVorls
22

Allokation
Dasselbe Fragment kann mehreren Stationen
zugeordnet werden
Allokation fr unser Beispiel ohne Replikationen
redundanzfreie Zuordnung
Station
SVerw
SPhysik
SPhilo
STheol

Bemerkung

zugeordnete Fragemente

Verwaltungsrechner
{ProfVerw}
Dekanat Physik
{PhysikVorls, PhysikProfs}
Dekanat Philosophie {PhiloVorls, PhiloProfs}
Dekanat Theologie {TheolVorls, TheolProfs}

23

Transparenz in verteilten
Datenbanken

Grad der Unabhngigkeit den ein VDBMS dem


Benutzer beim Zugriff auf verteilte Daten vermittelt
verschiedene Stufen der Transparenz:
Fragmentierungstransparenz
Allokationstransparenz
Lokale Schema-Transparenz

24

Fragmentierungstranparenz
Beispielanfrage, die Fragmentierungstransparenz voraussetzt:
select Titel, Name
from Vorlesungen, Professoren
where gelesenVon = PersNr;
Beispiel fr eine nderungsoperation, die Fragmentierungstransparenz voraussetzt:
update Professoren
set Fakultt = Theologie
where Name = Sokrates;
25

Fortsetzung Beispiel
ndern des Attributwertes von Fakultt
Transferieren des Sokrates-Tupels aus Fragment PhiloProfs
in das Fragment TheolProfs (= Lschen aus PhiloProfs,
Einfgen in TheolProfs)
ndern der abgeleiteten Fragmentierung von Vorlesungen
(= Einfgen der von Sokrates gehaltenen Vorlesungen in
TheolVorls, Lschen der von ihm gehaltenen Vorlesungen
aus PhiloVorls)

26

Allokationstransparenz

Benutzer mssen Fragmentierung kennen, aber nicht den


Aufenthaltsort eines Fragments
Beispielanfrage:
select Gehalt
from ProfVerw
where Name = Sokrates;

27

Allokationstransparenz (Forts.)
unter Umstnden muss Originalrelation rekonstruiert werden
Beispiel:
Verwaltung mchte wissen, wieviel die C4-Professoren der
Theologie insgesamt verdienen
da Fragmentierungstransparenz fehlt muss die Anfrage
folgendermaen formuliert werden:
select sum (Gehalt)
from ProfVerw, TheolProfs
where ProfVerw.PersNr = TheolProfs.PersNr and
Rang = C4;
28

Lokale Schema-Transparenz
Der Benutzer muss auch noch den Rechner kennen, auf
dem ein Fragment liegt.
Beispielanfrage:
select Name
from TheolProfs at STheol
where Rang = C3;

29

Lokale Schema-Transparenz
(Forts.)
Ist berhaupt Transparenz gegeben?
Lokale Schema-Transparenz setzt voraus, dass alle Rechner
dasselbe Datenmodell und dieselbe Anfragesprache
verwenden.
vorherige Anfrage kann somit analog auch an Station
SPhilo ausgefhrt werden
Dies ist nicht mglich bei Kopplung unterschiedlicher DBMS.
Verwendung grundstzlich verschiedener Datenmodelle auf
lokalen DBMS nennt man Multi-Database-Systems (oft
unumgnglich in realer Welt).
30

Anfragebersetzung und
Anfrageoptimierung
Voraussetzung: Fragmentierungstransparenz
Aufgabe des Anfragebersetzers: Generierung eines
Anfrageauswertungsplans auf den Fragmenten
Aufgabe des Anfrageoptimierers: Generierung eines
mglichst effizienten Auswertungsplanes abhngig
von der Allokation der Fragmente auf den
verschiedenen Stationen des Rechnernetzes

31

Anfragebearbeitung bei
horizontaler Fragmentierung

bersetzung einer SQL-Anfrage auf dem globalen


Schema in eine quivalente Anfrage auf den Fragmenten
bentigt 2 Schritte:
Rekonstruktion aller in der Anfrage vorkommenden
globalen Relationen aus den Fragmenten, in die sie
whrend der Fragmentierungsphase zerlegt wurden.
Hierfr erhlt man einen algebraischen Ausdruck.
Kombination des Rekonstruktionsausdrucks mit dem
algebraischen Anfrageausdruck, der sich aus der
bersetzung der SQL-Anfrage ergibt.
32

Beispiel
select Titel
from Vorlesungen, Profs
where gelesenVon = PersNr and
Rang = C4;
Der entstandene algebraische Ausdruck heit kanonische Form
der Anfrage:
_Titel
_Rang=C4
A gelesenVon=PersNr

TheolVorls PhiloVorls PhysikVorls TheolProfs PhiloProfs PhysikProfs


33

Algebraische quivalenzen
Fr eine effizientere Abarbeitung der Anfrage benutzt der
Anfrageoptimierer die folgende Eigenschaft:
(R1 R2) Ap (S1 S2) =
(R1 Ap S1) (R1 Ap S2) (R2 Ap S1) (R2 Ap S2)
Die Verallgemeinerung auf n horizontale Fragmente R1,...,Rn
von R und m Fragmente S1,...,Sm von S ergibt:
(R1 ... Rn) Ap (S1 ... Sm) =

(Ri A

Sj)

1in 1jm

Falls gilt:
Si = S Ep Ri mit S = Si ... Sn
Dann gilt immer:
Ri Ap Sj = fr i j
34

Algebraische quivalenzen (Forts.)


Fr eine derartig abgeleitete horizontale Fragmentierung von S
gilt somit:
(R1 ... Rn) Ap (S1 ... Sm) =
(R1 Ap S1) (R2 Ap S2) ... (Rn Ap Sn)
Fr unser Beispiel gilt nun folgendes:
(TheolVorls PhysikVorls PhiloVorls) A...
(TheolProfs PhysikProfs PhiloProfs)
Um Selektionen und Projektionen ber den Vereinigungsoperator hinweg nach unten zu drcken bentigt man folgende
Regeln:
_p(R1 R2) = _p(R1) _p(R2)
L(R1 R2) = L(R1) L(R2)

35

Optimale Form der Anfrage


Die Anwendung dieser algebraischen Regeln generiert
den folgenden Auswertungsplan:

_Titel

_Titel
A gelesenVon=PersNr

A gelesenVon=PersNr

_Rang=C4
TheolVorls TheolProfs

_Titel

_Rang=C4
PhysikVorls

PhysikProfs

A gelesenVon=PersNr
_Rang=C4
PhiloVorls PhiloProfs

Auswertungen knnen lokal auf den Stationen STheol, SPhysik und SPhilo
ausgefhrt werden Stationen knnen parallel abarbeiten und lokales
Ergebnis voneinander unabhngig an die Station, die die abschliessende
Vereinigung durchfhrt, bermitteln.

36

Anfragebearbeitung bei
vertikaler Fragmentierung
Beispiel:

kanonischer Auswertungsplan:

select Name, Gehalt


from Professoren
where Gehalt > 80000;

_Name, Gehalt
_Gehalt>80000
A

TheolProfs

PhysikProfs PhiloProfs

ProfVerw

37

Optimierung bei vertikaler


Fragmentierung
Fr unser Beispiel gilt:
Alle notwendigen Informationen sind in ProfVerw enthalten
der Teil mit Vereinigung und Join kann abgeschnitten werden.
Das ergibt den folgenden
_Name, Gehalt
optimierten Auswertungsplan:
_Gehalt>80000
ProfVerw

Beispiel fr eine schlecht zu optimierende Anfrage:


(Attribut Rang fehlt in ProfVerw)
select Name, Gehalt, Rang
from Professoren
where Gehalt > 80000; 38

Der natrliche Verbund


zweier Relationen R und S
R

a1

b1

c1

c1

d1

e1

a2

b2

c2

c3

d2

e2

a3

b3

c1

c4

d3

e3

a4

b4

c2

c5

d4

e4

a5

b5

c3

c7

d5

e5

a6

b6

c2

c8

d6

e6

a7

b7

c6

c5

d7

e7

RAS
=

A
a1

B
b1

C
c1

D
d1

E
e1

a3

b3

c1

d1

e1

a5

b5

c3

d2

e2

39

Join-Auswertung in VDBMS
spielt kritischere Rolle als in zentralisierten Datenbanken
Problem: Argumente eines Joins zweier Relationen knnen auf
unterschiedlichen Stationen des VDBMS liegen
2 Mglichkeiten: Join-Auswertung mit und ohne Filterung

40

Join-Auswertung
Betrachtung des allgemeinsten Falles:
uere Argumentrelation R ist auf Station StR gespeichert
innere Argumentrelation S ist dem Knoten StS zugeordnet
Ergebnis der Joinberechnung wird auf einem dritten
Knoten StResult bentigt

41

Join-Auswertung ohne Filterung


Nested-Loops
Transfer einer Argumentrelation
Transfer beider Argumentrelationen

42

Nested-Loops

Iteration durch die uere Relation R mittels Laufvariable r


und Anforderung des zu jedem Tupel r passenden Tupel s S
mit r.C = s.C (ber Kommunikationsnetz bei StS)
Diese Vorgehensweise bentigt pro Tupel aus R eine
Anforderung und eine passende Tupelmenge aus S (welche bei
vielen Anforderungen leer sein knnte)
es werden 2 R Nachrichten bentigt

43

Transfer einer Argumentrelation


1.

vollstndiger Transfer einer Argumentrelation (z.B. R)


zum Knoten der anderen Argumentrelation

2.

Ausnutzung eines mglicherweise auf S.C


existierenden Indexes

44

Transfer beider
Argumentrelationen
1.
2.

Transfer beider Argumentrelationen zum Rechner


StResult
Berechnung des Ergebnisses auf den Knoten StResult
mittels
a) Merge-Join (bei vorliegender Sortierung)
oder
b) Hash-Join (bei fehlender Sortierung)

evtl. Verlust der vorliegenden Index fr die JoinBerechnung


kein Verlust der Sortierung der
Argumentrelation(en)

45

Join-Auswertung mit Filterung


Verwendung des Semi-Join-Operators zur
Filterung
Schlsselidee: nur Transfer von Tupel, die
passenden Join-Partner haben
Benutzung der folgenden algebraischen
Eigenschaften:
R A S = R A (R F S)
R F S = _C(R) F S

46

Join-Auswertung mit Filterung


(Beispiel, Filterung der Relation S)
1. Transfer der unterschiedlichen C-Werte von R (= _C(R) )
nach StS
2. Auswertung des Semi-Joins R F S = _C(R) F S auf StS und
Transfer nach StR
3. Auswertung des Joins auf StR, der nur diese transferierten
Ergebnistupel des Semi-Joins braucht
Transferkosten werden nur reduziert, wenn gilt:
_C(R) + R F S < S
mit P = Gre (in Byte) einer Relation
47

...

A
a1
a3
a5

R A (_C(R)
B
C
b1
c1
b3
c1
b5
c3

D
d1
d1
d2

E
e1
e1
e2

6 Attributwerte

A
a1
a2
a3
a4
a5
a6
a7

F S)

StResult

C
c1
c2
c3
c6
R
B
b1
b2
b3
b4
b5
b6
b7

C
c1
c2
c1
c2
c3
c2
c6

C
c1
c3

4 Attributwerte

D
d1
d2

E
e1
e2

S
D
d1
d2
d3
d4
d5
d6
d7

E
e1
e2
e1
e2
e3
e2
e6

_C

StR

_C(R) F S

StS

C
c1
c3
c4
c5
c7
c8
c5

Auswertung des Joins R A S


mit Semi-Join-Filterung von S

15 Attributwerte

48

Alternative
Auswertungungsplne
1. Alternative:

...

StResult

A
F
_C
R

StR

StS

2. Alternative:
(R E _C(S)) A (_C(R) F S)
49

Parameter fr die Kosten


eines Auswertungsplan
Kardinalitten von Argumentrelationen
Selektivitten von Joins und Selektionen
Transferkosten fr Datenkommunikation
(Verbindungsaufbau + von Datenvolumen abhngiger
Anteil fr Transfer)
Auslastung der einzelnen VDBMS-Stationen

Effektive Anfrageoptimierung muss auf Basis eines Kostenmodells durchgefhrt werden und soll mehrere Alternativen
fr unterschiedliche Auslastungen des VDBMS erzeugen.
50

Transaktionskontrolle in VDBMS
Transaktionen knnen sich bei VDBMS ber mehrere
Rechnerknoten erstrecken
=

Recovery:
Redo: Wenn eine Station nach einem Fehler wieder
anluft, mssen alle nderungen einmal
abgeschlossener Transaktionen - seien sie lokal auf
dieser Station oder global ber mehrere Stationen
ausgefhrt worden - auf den an dieser Station
abgelegten Daten wiederhergestellt werden.
Undo: Die nderungen noch nicht abgeschlossener
lokaler und globaler Transaktionen mssen auf den
an der abgestrzten Station vorliegenden Daten
rckgngig gemacht werden.
51

EOT-Behandlung
Die EOT (End-of-Transaction)-Behandlung von globalen
Transaktionen stellt in VDBMS ein Problem dar.
Eine globale Transaktion muss atomar beendet werden,
d.h. entweder
commit: globale Transaktion wird an allen
(relevanten) lokalen Stationen festgeschrieben
oder
abort:

globale Transaktion wird gar nicht


festgeschrieben

Problem in verteilter Umgebung, da die Stationen eines


VDBMS unabhngig voneinander abstrzen knnen

52

Problemlsung:
Zweiphasen-CommitProtokoll
gewhrleistet die Atomaritt der EOT-Behandlung
das 2PC-Verfahren wird von sog. Koordinator K
berwacht
gewhrleistet, dass die n Agenten (=Stationen im
VDBMS) A1,...An, die an einer Transaktion beteiligt
waren, entweder alle von Transaktion T genderten
Daten festschreiben oder alle nderungen von T
rckgngig machen

53

Nachrichtenaustausch beim
2PC-Protokoll (fr 4 Agenten)
A1

A1

A2

A2

PREPARE

A3

A3

A4

A4

FAILED/READY

COMMIT/ABORT

ACK
54

Ablauf der EOT-Behandlung


beim 2PC-Protokoll
K schickt allen Agenten eine PREPARE-Nachricht,
um herauszufinden, ob sie
PREPARE
Transaktionen festschreiben knnen
jeder Agent Ai empfngt PREPARE-Nachricht
und schickt eine von zwei
PREPARE
mglichen Nachrichten an K:
READY,
READY falls Ai in der Lage ist, die Transaktion T lokal
festzuschreiben
FAILED,
FAILED falls Ai kein commit durchfhren kann (wegen Fehler,
Inkonsistenz etc.)
hat K von allen n Agenten A1,...,An ein READY erhalten, kann K ein
COMMIT an alle Agenten schicken mit der Aufforderung, die nderungen
von T lokal festzuschreiben; antwortet einer der Agenten mit FAILED od.
gar nicht innerhalb einer bestimmten Zeit (timeout), schickt K ein ABORT
an alle Agenten und diese machen die nderungen der Transaktion
rckgngig
haben die Agenten ihre lokale EOT-Behandlung abgeschlossen, schicken sie
eine ACK-Nachricht
(=acknowledgement, dt. Besttigung) an den
ACK
Koordinator
55

Lineare Organisationsform beim


2PC-Protokoll

FAILED/READY

A1
COMMIT/ABORT

FAILED/READY

A2
COMMIT/ABORT

FAILED/READY

A3

A4

COMMIT/ABORT

56

Zustandsbergang beim
2PC-Protokoll: Koordinator
Bullet

= wichtigste Aktion(en)

Timeout oder FAILED


empfangen:
abort ins Log
ABORT senden

Initial
EOT:
sende PREPARE
an alle Agenten
Bereit

Abgebrochen

READY von allen Agenten


empfangen:
commit ins Log
sende COMMIT
Festschreibend

von allen ACK empfangen:

von allen ACK empfangen:


Fertig
57

Zustandsbergang beim
2PC-Protokoll: Agent
Timeout oder lokaler
Fehler entdeckt:
abort ins Log
sende FAILED

Wartend
PREPARE empfangen und
lokal alles okay:
Log-Eintrge ausschreiben
ready ins Log
sende READY
Bereit

ABORT empfangen:
abort ins Log
sende ACK
Abgebrochen
PREPARE empfangen:
sende FAILED

COMMIT empfangen:
commit ins Log
sende ACK
Festgeschrieben
Bullet

= wichtigste Aktion(en)
58

Fehlersituationen des
2PC-Protokolls
Absturz eines Koordinators
Absturz eines Agenten
verlorengegangene Nachrichten

59

Absturz eines Koordinators


_ Absturz vor dem Senden einer COMMIT-Nachricht
Rckgngigmachen der Transaktion durch
Versenden einer ABORT-Nachricht
_ Absturz nachdem Agenten ein READY mitgeteilt
haben Blockierung der Agenten

Hauptproblem des 2PC-Protokolls beim Absturz

des Koordinators, da dadurch die Verfgbarkeit des


Agenten bezglich andere globaler und lokaler
Transaktionen drastisch eingeschrnkt ist
Um Blockierung von Agenten zu verhindern, wurde ein
Dreiphasen-Commit-Protokoll konzipiert, das aber in der Praxis
zu aufwendig ist (VDBMS benutzen das 2PC-Protokoll).
60

Absturz eines Agenten


_ antwortet ein Agent innerhalb eines Timeout-Intervalls nicht
auf die PREPARE-Nachricht, gilt der Agent als abgestrzt;
der Koordinator bricht die Transaktion ab und schickt eine
ABORT-Nachricht an alle Agenten
_ abgestrzter Agent schaut beim Wiederanlauf in seine
Log-Datei:
_ kein ready-Eintrag bzgl. Transaktion T Agent fhrt ein
abort durch und teilt dies dem Koordinator mit (FAILEDNachricht)
_ ready-Eintrag aber kein commit-Eintrag Agent fragt
Koordinator, was aus Transaktion T geworden ist;
Koordinator teilt COMMIT oder ABORT mit, was beim
Agenten zu einem Redo oder Undo der Transaktion fhrt
_ commit-Eintrag vorhanden Agent wei ohne Nachfragen, dass ein (lokales) Redo der Transaktion ntig ist
61

Verlorengegangene
Nachrichten
_ PREPARE-Nachricht des Koordinators an einen Agenten
geht verloren oder
_ READY-(oder FAILED-)Nachricht eines Agenten geht
verloren
nach Timeout-Intervall geht Koordinator davon aus,
dass betreffender Agent nicht funktionsfhig ist und
sendet ABORT-Nachricht an alle Agenten (Transaktion
gescheitert)
_ Agent erhlt im Zustand Bereit keine Nachricht vom
Koordinator Agent ist blockiert, bis COMMIT- oder
ABORT-Nachricht vom Koordinator kommt, da Agent nicht
selbst entscheiden kann (deshalb schickt Agent eine
Erinnerung an den Koordinator)
62

Mehrbenutzersynchronisation
in VDBMS
Serialisierbarkeit
Zwei-Phasen-Sperrprotokoll in VDBMS
_
_

lokale Sperrverwaltung an jeder Station


globale Sperrverwaltung

63

Serialisierbarkeit
Lokale Serialisierbarkeit an jeder der an den
Transaktionen beteiligten Stationen reicht nicht aus.
Deshalb mu man bei der Mehrbenutzersynchronisation
auf globaler Serialisierbarkeit bestehen.
Beispiel (lokal serialisierbare Historien):
S1
S2
Schritt T1
Schritt T1 T2
1.
2.

T2

r(A)

w(A)

3.
4.

w(B)
r(B)

T1 T2
64

Lokale Sperrverwaltung
globale Transaktion mu vor Zugriff/Modifikation eines
Datums A, das auf Station S liegt, eine Sperre vom
Sperrverwalter der Station S erwerben
Vertrglichkeit der angeforderten Sperre mit bereits
existierenden Sperren kann lokal entschieden werden
favorisiert lokale Transaktionen, da diese nur mit
ihrem lokalen Sperrverwalter kommunizieren mssen

65

Globale Sperrverwaltung
= alle Transaktionen fordern alle Sperren an einer
einzigen, ausgezeichneten Station an.
Nachteile:
zentraler Sperrverwalter kann zum Engpass des VDBMS
werden, besonders bei einem Absturz der SperrverwalterStation (rien ne vas plus)
Verletzung der lokalen Autonomie der Stationen, da auch
lokale Transaktionen ihre Sperren bei der zentralisierten
Sperrverwaltung anfordern mssen
zentrale Sperrverwaltung i.a. nicht akzeptabel
66

Deadlocks in VDBMS

Erkennung von Deadlocks (Verklemmungen)


zentralisierte Deadlock-Erkennung
dezentrale (verteilte) Deadlock-Erkennung
Vermeidung von Deadlocks

67

Verteilter Deadlock

Schritt
0.
1.
2.

S1
T1

BOT
lockS(A)
r(A)

T2

Schritt

S2
T1

3.
4.
5.
6.

lockX(A)

7.

T2

BOT
lockX(B)
w(B)
lockS(B)

68

Timeout
betreffende Transaktion wird zurckgesetzt und erneut
gestartet einfach zu realisieren
Problem: richtige Wahl des Timeout-Intervalls:
zu lang schlechte Ausnutzung der Systemressourcen
zu kurz Deadlock-Erkennung, wo gar keine
Verklemmung vorliegt

69

Zentralisierte Deadlock-Erkennung

Stationen melden lokal vorliegende Wartebeziehungen


an neutralen Knoten, der daraus globalen Wartegraphen
aufbaut (Zyklus im Graphen Deadlock)
sichere Lsung
Nachteile:
hoher Aufwand (viele Nachrichten)
Entstehung von Phantom-Deadlocks (=nichtexistierende Deadlocks) durch berholen von
Nachrichten im Kommunikationssystem

70

Dezentrale Deadlock-Erkennung
lokale Wartegraphen an den einzelnen Stationen
Erkennen von lokalen Deadlocks
= Erkennung globaler Deadlocks:
jeder lokale Wartegraph hat einen Knoten External,
der stationenbergreifenden Wartebeziehungen zu
externen Subtransaktionen modelliert
Zuordnung jeder Transition zu einem Heimatknoten,
von wo aus externe Subtransaktionen auf anderen
Stationen initiiert werden
Die Kante
External _ Ti
wird fr jede von auen kommende Transaktion Ti eingefhrt.
Die Kante
Tj _ External
wird fr jede von auen kommende Transaktion Tj dieser Station
eingefhrt, falls Tj nach auen geht.
71

Beispiel:

S1 Heimatknoten von T1, S2 Heimatknoten von T2


Wartegraphen:
S1:

External _ T2 _ T1 _ External

S2:

External _ T1 _ T2 _ External

S2: External T1 T2 External


T1 _ T2 _ T1
T2 _ T1 _ T2
Zur Reduzierung des Nachrichtenaufkommens wird der Pfad
External _ T1 _ T2 _ . . . _ Tn _ External
nur weitergereicht, wenn T1 einen kleineren Identifikator als Tn
72
hat (= path pushing).

Deadlock-Vermeidung
optimistische Mehrbenutzersynchronisation:
nach Abschluss der Transaktionsbearbeitung wird
Validierung durchgefhrt
Zeitstempel-basierende Synchronisation:
Zuordnung eines Lese-/Schreib-Stempels zu jedem Datum
entscheidet, ob beabsichtigte Operation durchgefhrt
werden kann ohne Serialisierbarkeit zu verletzen oder ob
Transaktion abgebrochen wird (abort)

73

Sperrbasierte Synchronisation
wound/wait:
nur jngere Transaktionen warten auf ltere;
fordert ltere Transaktion Sperre an, die mit der von der
jngeren Transaktion gehaltenen nicht vertrglich ist, wird
jngere Transaktion abgebrochen
wait/die:
nur ltere Transaktionen warten auf jngere;
fordert jngere Transaktion Sperre an, die mit der von der
lteren Transaktion gehaltenen nicht kompatibel ist, wird
jngere Transaktion abgebrochen

74

Voraussetzungen fr
Deadlockvermeidungsverfahren
Vergabe global eindeutiger Zeitstempel als
Transaktionsidentifikatoren
lokale Zeit Stations-ID
lokale Uhren mssen hinreichend genau
aufeinander abgestimmt sein

75

Synchronisation
bei replizierten Daten
Problem:
Zu einem Datum A gibt es mehrere Kopien A1, A2, ..., An,
die auf unterschiedlichen Stationen liegen.
Eine Lesetransaktion erfordert nur eine Kopie,
bei nderungstransaktionen mssen aber alle bestehenden
Kopien gendert werden.

hohe Laufzeit und Verfgbarkeitsprobleme

76

Quorum-Consensus Verfahren
Ausgleich der Leistungsfhigkeit zwischen Lese- und
nderungstransaktionen teilweise Verlagerung des
Overheads von den nderungs- zu den Lesetransaktionen
indem den Kopien Ai eines replizierten Datums A
individuelle Gewichte zugeordnet werden
Lesequorum Qr(A)
Schreibquorum Qw(A)
Folgende Bedingungen mssen gelten:
1. Qw(A) + Qw(A) > W(A)
2. Qr(A) + Qw(A) > W(A)
77

Beispiel
Station (Si)

Kopie (Ai)

Gewicht (wi)

S1

A1

S2

A2

S3

A3

S4

A4

W ( A) = wi(A) = 8
i =1

Qr(A) = 4
Qw(A) = 5
78

Zustnde
a) vor dem Schreiben eines Schreibquorums
Station

Kopie

Gewicht

Wert

Versions#

S1
S2

A1
A2

3
1

1000
1000

1
1

S3
S4

A3
A4

2
2

1000
1000

1
1

b) nach dem Schreiben eines Schreibquorums


Station

Kopie

Gewicht

Wert

Versions#

S1
S2

A1
A2

3
1

1100
1000

2
1

S3
S4

A3
A4

2
2

1100
1000

2
1
79