21.11.2013 Aufrufe

7. Verteilte Transaktionen 7.1 Verteilte Datenbanksysteme

7. Verteilte Transaktionen 7.1 Verteilte Datenbanksysteme

7. Verteilte Transaktionen 7.1 Verteilte Datenbanksysteme

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

• Überblick<br />

<strong>7.</strong> <strong>Verteilte</strong> <strong>Transaktionen</strong><br />

<strong>7.</strong>1 <strong>Verteilte</strong> <strong>Datenbanksysteme</strong><br />

<strong>7.</strong>2 <strong>Verteilte</strong> <strong>Transaktionen</strong><br />

<strong>7.</strong>3 Dezentrale Koordination<br />

<strong>7.</strong>4 Replikation<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-1<br />

<strong>7.</strong>1 <strong>Verteilte</strong><br />

<strong>Datenbanksysteme</strong><br />

• Definition: <strong>Verteilte</strong>s Datenbanksystem (VDBS)<br />

Unter VDBS wird eine logisch integrierte Sammlung gemeinsam<br />

genutzter Daten verstanden, die physikalisch auf einer Anzahl von<br />

Knoten in einem Rechnernetzwerk verteilt ist<br />

• „Natürliche“ Datenverteilung: mehrere unabhängige Systeme mit<br />

ihren lokalen Datenmengen werden zu einer Einheit kombiniert<br />

Beispiel: multimediale Datenbank über Filme kann auf zwei Arten aus<br />

mehreren lokalen Datenbanken aufgebaut werden<br />

Lokale Datenbanken speichern Medien und Metainformationen, z.B.<br />

Bilddatenbank mit Fotos von Schauspielern, Bilddatenbank mit<br />

Keyframes aus verschiedenen Filmen, Videoserver sowie relationale<br />

Datenbanken mit bibliografischen und Filmangaben<br />

Jede lokale Datenbank enthält eine Teilmenge des Filmmaterials,<br />

z.B. nach Herstellerland geordnet<br />

In beiden Fällen ermöglicht eine zentrale Schnittstelle den Zugriff auf die<br />

Daten in allen lokalen Datenbanken<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-2


Klassifikation <strong>Verteilte</strong>r<br />

<strong>Datenbanksysteme</strong><br />

DBMS = Datenbankmanagementsystem<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-3<br />

• Homogene VDBS leiten sich aus<br />

konventionellen DBS durch<br />

Partitionierung der Daten auf<br />

mehrere Knoten ab<br />

Zugriff auf alle Teile der<br />

lokalen Datenbanken zentral über<br />

ein einheitliches Schema<br />

Fragmentierungsschicht:<br />

Unterteilung der globalen<br />

Operationen in Segmente für<br />

einzelne Knoten ⇒ notwendige<br />

Einschränkungen zur sinnvollen<br />

Vereinigung der Teilergebnisse<br />

Homogene VDBS<br />

Allokationsschicht: Zuordnung von<br />

Fragmenten zu Knoten, besonders<br />

wichtig in Kombination mit<br />

Replikation, Scheduling, ….<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-4


Heterogene VDBS<br />

• Verschiedene DBS auf den Knoten erlaubt ⇒ Vorteil der einheitlichen<br />

Verteilung/Ausführung der Operationen existiert nicht mehr<br />

• Die einzelnen Systeme verfügen über<br />

Umsetzungsschemata zur vollständigen Integration im globalen DBS<br />

Schnittstellen (Gateways) für den Zugriff auf die lokalen Daten<br />

Beispiel: Metasuchmaschinen geben Stichwörter nach syntaktischer<br />

Anpassung in mehrere Suchmaschinen ein ⇒ Parallele Bearbeitung<br />

Syntaktische Umwandlung betrifft die Formulierung der logischen<br />

Ausdrücke, z.B. Wort1 AND Wort2 wird zu +Wort1+Wort2<br />

• Vollintegrierte DBS: bereits vorhandene Datenbanken werden über<br />

Konvertierungssubsysteme in ein neues globales System gekoppelt<br />

• Partiell integrierte DBS<br />

Zentrale Schnittstelle zur Abfrage / Kombination der Ergebnisse<br />

Lokaler Zugriff ohne Nutzung globaler Schnittstellen und -mechanismen<br />

erlaubt ⇒ Mitgliedschaft im globalen System bleibt unsichtbar<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-5<br />

Föderierte <strong>Datenbanksysteme</strong><br />

• Eng verbundene (Tightly<br />

coupled) DBS verfügen über<br />

ein globales konzeptionelles<br />

Schema als Vereinigung von<br />

Teilen der lokalen Schemata<br />

Lokale DBS erlauben – je nach<br />

Autonomiegrad – die<br />

Aufnahme von Teilen der<br />

Daten im globalen Schema<br />

Auf die anderen Daten kann<br />

nur lokal zugegriffen werden<br />

Hilfsschema legt die Regel für<br />

die Datenkonvertierung fest,<br />

z.B. 13. November 2000 in<br />

2000/11/13<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-6


Datenmanagement in verteilten<br />

<strong>Datenbanksysteme</strong>n<br />

• Wesentliche Bedingungen aus Verteilung der Daten über die Knoten<br />

• Kompromiss zwischen<br />

Datenlokalität (Benötigte Daten auf einem Knoten) und<br />

Nebenläufigkeit (Daten gleichmäßig über alle Knoten verteilt)<br />

• Dieses Allokationsproblem ist NP-vollständig ⇒ Einsatz von<br />

Heuristiken<br />

• Bei VDBS wird eine Transaktion in mehrere Subtransaktionen –<br />

Agenten – unterteilt und an die entsprechenden Knoten versendet<br />

Transaktionskontrolle muss auf alle beteiligten Knoten verteilt werden<br />

⇒ Anpassung der bestehenden Verfahren notwendig<br />

Berücksichtigung der Replikation<br />

Alle Knoten müssen stets die aktuelle Version der Daten haben<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-7<br />

<strong>7.</strong>2 <strong>Verteilte</strong> <strong>Transaktionen</strong><br />

• <strong>Verteilte</strong> Transaktion greifen auf Objekte zu, die auf mehreren räumlich<br />

getrennten Servern verteilt sind<br />

Atomarität: Transaktion ist entweder bei allen Servern festgeschrieben<br />

oder wird von allen Servern abgebrochen<br />

⇒ Koordination durch einen/mehrere Server erforderlich<br />

• Transaktionsarten<br />

Flache Transaktion: Die aktuelle Anforderung der Transaktion wird<br />

abgeschlossen, bevor die nächste Anforderung abgesetzt wird<br />

Verschachtelte Transaktion: Top-Level-Transaktion öffnet untergeordnete<br />

<strong>Transaktionen</strong>, die wieder weitere Anforderungen absetzen können<br />

T<br />

T<br />

Client<br />

X<br />

Y<br />

Z<br />

Client<br />

T<br />

T 11<br />

X<br />

T 1<br />

T 12<br />

T<br />

T 21<br />

2<br />

Y<br />

T 22<br />

M<br />

N<br />

P<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-10


Architektur verteilter<br />

Transaktionssysteme<br />

T 11<br />

T 12<br />

T 1m<br />

Transaktionsmanager<br />

T 21<br />

T 22<br />

T 2m<br />

Transaktionsmanager<br />

T n1<br />

T n2<br />

T nm<br />

Transaktionsmanager<br />

Kommunikationsnetz<br />

Scheduler<br />

Scheduler<br />

Scheduler<br />

Ressourcenmanager<br />

Ressourcenmanager<br />

Ressourcenmanager<br />

Daten<br />

Daten<br />

Daten<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-11<br />

Architektur verteilter<br />

Transaktionssysteme (2)<br />

• Annahmen<br />

Homogene Umgebung existiert ⇒ Jeder Knoten besteht aus einem lokalen<br />

Transaktionsverwaltungssystem<br />

Jeder Knoten verwaltet einen Teil der Daten<br />

Jedes Datum befindet sich auf genau einem Knoten (keine Redundanz)<br />

Eine Transaktion sendet Operationen an lokalen Transaktionsmanager TM<br />

Falls das Datum lokal nicht verfügbar ist, wird eine Anforderung an den<br />

TM geschickt, bei dem das Datum sich befindet<br />

Bei Commit oder Abort muss der TM alle Knoten verständigen, die von der<br />

Transaktion betroffen waren<br />

• Fehlerarten<br />

Knotenfehler: Der Knoten stoppt sofort und führt keinerlei Operationen<br />

mehr durch ⇒ Der Inhalt des flüchtigen Speichers geht verloren und der<br />

Knoten muss eine Restart-Operation durchführen<br />

Netzfehler: Ausfall der Verbindung, Fehler in Kommunikationssoftware,<br />

Ausfall eines Zwischenknoten, Nachrichtenverlust und -verfälschung<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-12


Koordinator einer <strong>Verteilte</strong>n<br />

Transaktion<br />

• Client startet eine verteilte Transaktion durch eine openTransaction<br />

Anforderung an einen Transaktionsverwalter auf beliebigem Server<br />

Verwalter öffnet die Transaktion, vergibt systemweit-eindeutige ID<br />

Verwalter wird zur Koordinator für die gesamte Transaktion ⇒<br />

Verantwortung für Annahme/Abbruch der Transaktion<br />

Teilnehmer = Server, die benötigte Objekte bereitstellen<br />

openTransaction<br />

join Teilnehmer<br />

closeTransaction<br />

.<br />

A a.withdraw(4);<br />

join<br />

T = openTransaction<br />

a.withdraw(4);<br />

c.deposit(4);<br />

b.withdraw(3);<br />

d.deposit(3);<br />

closeTransaction<br />

T<br />

Client<br />

b.withdraw(T, 3);<br />

Koordinator ist einer der Server, z.B. Filiale X<br />

join<br />

Filiale X<br />

Teilnehmer<br />

Filiale Y<br />

Teilnehmer<br />

C<br />

D<br />

Filiale Z<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-13<br />

B<br />

b.withdraw(3);<br />

c.deposit(4);<br />

d.deposit(3);<br />

Koordinator einer <strong>Verteilte</strong>n<br />

Transaktion (2)<br />

• Während der Ausführung der verteilten Transaktion<br />

Koordinator erstellt Liste mit Verweisen auf alle Teilnehmer<br />

Teilnehmer notieren den Koordinator<br />

Hinzufügen von weiteren Teilnehmern mit der Funktion join(Trans-ID,<br />

Verweis auf neuen Teilnehmer)<br />

⇒ Koordinator wird über die Neuzugänge informiert<br />

• Bei Aufruf von closeTransaction besitzt der Koordinator Verweise<br />

auf alle Teilnehmer<br />

• Sicherstellung der Atomaritätseigenschaft mit sog. Commit-<br />

Protokollen<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-14


Koordination durch zentralen<br />

Planer<br />

• Zentraler Planer verwaltet alle<br />

<strong>Transaktionen</strong><br />

2PL-Sperrprotokoll: Globale Sicht auf<br />

die Sperrsituation, wie im lokalen Fall<br />

Optimistische Verfahren: Nach<br />

Abschluss muss jede Transaktion<br />

ihren r/w-Set an die zentrale<br />

Validierungsstelle senden<br />

• Nachteile<br />

Zentrale darf nicht ausfallen<br />

Eingeschränkte Skalierbarkeit<br />

Eingeschränkte Knotenautonomie<br />

Auch ausschließlich lokale<br />

<strong>Transaktionen</strong> müssen sich an den<br />

zentralen Planer wenden ⇒ unnötiger<br />

Aufwand<br />

T 11<br />

T 12 T 1m T 21<br />

T 22 T 2m T n1<br />

T n2 T nm<br />

TM<br />

RM<br />

TM<br />

Sch.<br />

RM<br />

TM<br />

RM<br />

Daten Daten Daten<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-15<br />

<strong>7.</strong>3 Dezentrale Koordination<br />

• Gewährleistung der Korrektheit eines Transaktionskonzepts ist<br />

schwierig, da es im verteilten Fall einer Abstimmung der Knoten<br />

bedarf und Ausfälle nicht ausgeschlossen werden können<br />

• Anforderung an ein atomares Commit-Protokoll (ACP) für verteilte<br />

<strong>Transaktionen</strong><br />

1. Alle Knoten, die eine Entscheidung treffen, treffen dieselbe Entscheidung<br />

2. Ein Knoten kann seine Entscheidung nicht nachträglich ändern<br />

3. Die Entscheidung, eine Transaktion zu bestätigen, kann nur von allen<br />

Knoten einstimmig getroffen werden<br />

4. Falls keine Ausfälle vorliegen und alle Knoten zugestimmt haben, wird<br />

die Transaktion bestätigt<br />

5. Nach Behebung von Ausfällen muss eine Entscheidung getroffen werden<br />

• Einfachste Realisierung: Koordinator fordert alle Teilnehmer solange<br />

auf, die aktuelle Transaktion zu bestätigen/abbrechen, bis alle<br />

geantwortet haben (Ein-Phasen-Commit-Protokoll, 1PC)<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-16


Zwei-Phasen-Commit-Protokoll<br />

(2PC)<br />

• Probleme bei 1PC: Ein Server kann die Transaktion nicht einseitig<br />

abbrechen, z.B. wenn Konflikte oder Deadlocks aufgetreten sind<br />

• Bei 2PC kann jeder Teilnehmer seinen Transaktionsteil abbrechen und<br />

somit den Abbruch der gesamten Transaktion herbeiführen<br />

• Grundidee<br />

Jeder Knoten unterhält eine spezielle Log-Datei mit relevanten Ereignissen<br />

In der ersten Vorbereitungsphase (Abstimmphase) wird abgestimmt, ob<br />

die Transaktion festgeschrieben oder abgebrochen wird<br />

Ist einmal ein Votum abgegeben, so darf das Votum nicht geändert<br />

werden auch wenn das System ausfällt ⇒ alle relevanten Daten müssen<br />

im stabilen Speicher zusammen mit dem Status prepared sein<br />

In der zweiten Phase (Abschlussphase) wird die getroffene Entscheidung<br />

von jedem Teilnehmer durchgeführt<br />

• Probleme: Sicherstellung, dass alle Teilnehmer abstimmen und die<br />

getroffene Entscheidung tatsächlich umsetzen<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-17<br />

Zwei-Phasen-Commit-Protokoll (2)<br />

• Das 2PC-Protokoll besteht aus vier Schritten<br />

1. Aufforderung zur Stimmabgabe (vote request)<br />

2. Stimmabgabe (vote)<br />

3. Mitteilung über die Entscheidung (decision)<br />

4. Bestätigung der Entscheidung (acknowledge)<br />

• Einzelne Operationen<br />

canCommit?(trans)-> Yes / No: Aufruf vom Koordinator an den Teilnehmer,<br />

ob er eine Transaktion festschreiben kann. Teilnehmer stimmt ab<br />

doCommit(trans): Koordinator->Teilnehmer: Festschreiben der Transaktion<br />

doAbort(trans) : Analog zu doCommit(), jetzt aber mit Abort<br />

haveCommitted(trans, participant) : Teilnehmer->Koordinator: Transaktion<br />

festgeschrieben<br />

getDecision(trans) -> Yes / No: Teilnehmer->Koordinator mit Frage nach<br />

Entscheidung über Transaktion, für die er mit Yes gestimmt hat aber noch<br />

keine Antwort kam ⇒ Timeout zur Erkennung von Serverabstürzen<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-18


Ablauf bei 2PC<br />

• Koordinator fragt alle Teilnehmer canCommit() und sammelt die<br />

Antworten<br />

• Koordinator wertet alle Stimmen (auch die eigene) aus<br />

Falls alle mit Yes gestimmt haben, so wird die Anweisung zum<br />

Festschreiben doCommit() verteilt<br />

Andernfalls wird die Transaktion abgebrochen doAbort()<br />

• Alle Teilnehmer warten auf den Befehl, bestätigen die Ausführung<br />

• Falls Bestätigung ⇒ haveCommited Nachricht an den Koordinator<br />

Schritt<br />

1<br />

3<br />

Koordinator<br />

Status<br />

Vorbereitet auf<br />

Festschreiben<br />

(Wartet auf Stimmen)<br />

festgeschrieben<br />

fertig<br />

canCommit?<br />

Yes<br />

doCommit<br />

haveCommitted<br />

Teilnehmer<br />

Schritt Status<br />

2 Vorbereitet auf<br />

Festschreiben<br />

(unsicher)<br />

4 Festgeschrieben<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-19<br />

Leistung des 2PC<br />

• Kosten für das 2PC im fehlerfreien Fall sind bei N Teilnehmern<br />

proportional zu 3N Nachrichten<br />

Je N Nachrichten für canCommit, Yes/No und doCommit<br />

haveCommited-Nachrichten werden nicht mitgezählt, da diese für die<br />

Organisation der Koordinatoraktivitäten notwendig sind<br />

• Ausfall- und Fehleranfälligkeit<br />

2PC kann mehrere Server-/Kommunikationsfehler tolerieren und wird<br />

garantiert irgendwann abgeschlossen. Die Vorgabe einer Zeitgrenze ist<br />

allerdings nicht möglich<br />

Die Verzögerung bei der Ausführung von 2PC kann dazu führen, dass<br />

einige Teilnehmer in einen unsicheren (ungewissen) Zustand geraten<br />

Besonders kompliziert, wenn der Koordinator ausgefallen ist und auf<br />

keine getDecision() Anforderung reagiert<br />

⇒ Drei-Phasen-Commit-Protokolle (3PC) zur Reduktion der<br />

Verzögerungen<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-20


Drei-Phasen-Commit-Protokoll (3PC)<br />

• 3PC-Protokoll: nicht-blockierende Verbesserung des 2PC-Protokolls<br />

• Voraussetzung<br />

• Idee<br />

Höchstens K


Ablauf bei 3PC (2)<br />

Schritt<br />

1<br />

3<br />

Koordinator<br />

Status<br />

Vorbereitet auf<br />

Festschreiben<br />

(Wartet auf Stimmen)<br />

Logging preCommit<br />

fertig<br />

5 Logging preCommit<br />

fertig<br />

canCommit?<br />

Yes<br />

preCommit<br />

preCommit ack<br />

Commit<br />

acknowledge<br />

Schritt<br />

2<br />

4<br />

Teilnehmer<br />

Status<br />

Vorbereitet auf<br />

Festschreiben<br />

(ungewiss)<br />

Logging preCommit<br />

6 Logging Commit<br />

Sperrfreigabe<br />

• Ein Koordinatorausfall wird durch Time-Outs erkannt<br />

Alle aktiven Teilnehmer wählen einen neuen Koordinator<br />

Damit der neue Koordinator die commit-Behandlung fortführen kann,<br />

wird ein Terminierungsprotokoll gestartet<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-23<br />

3PC-Terminierungsprotokoll<br />

• Der neue Koordinator sammelt die Zustandsinformation aller<br />

Teilnehmer und verfährt nach den folgenden Regeln<br />

R1: Falls ein Knoten im Zustand finished oder aborted ist, so lautet die<br />

Entscheidung abort<br />

R2: Falls irgendein Knoten im Zustand commit ist, lautet die Entscheidung<br />

commit<br />

R3: Sind alle Knoten im Zustand uncertain, lautet die Entscheidung abort<br />

R4: Sind einige Knoten im Zustand preCommit, aber keiner im Zustand<br />

commit, sendet er preCommit an alle Knoten<br />

• Nach Eingang der Quittungen (Ack) kann commit entschieden<br />

werden<br />

• Teilnehmer, die ihren Zustand nicht melden, werden ignoriert<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-24


Beispiel zu 3PC<br />

• Alle Teilnehmer haben mit Yes gestimmt<br />

• Der Koordinator beginnt, preCommit zu verschicken, fällt aber aus,<br />

so dass nur ein Teil der Knoten die Nachricht erhält<br />

• Einige Knoten sind im Zustand preCommit, die anderen im Zustand<br />

uncertain<br />

• Angenommen, die Knoten im Zustand preCommit fallen ebenfalls<br />

aus<br />

Die restlichen Knoten starten das Terminierungsprotokoll<br />

Der (gewählte) neue Koordinator sammelt die Zustände der<br />

operationalen Knoten (alle uncertain) und beschließt gemäß Regel<br />

R3 abort<br />

Ausgefallene Knoten starten nach dem Restart das<br />

Terminierungsprotokoll und erfahren die Entscheidung abort<br />

Obwohl sie bereits preCommit erhalten hatten, entscheiden sie Abort<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-25<br />

• Ziele der Replikation<br />

<strong>7.</strong>4 Replikation<br />

Steigerung der Verfügbarkeit<br />

Daten werden auf k Knoten kopiert ⇒ Daten bleiben auch beim<br />

Ausfall von k-1 Knoten erhalten<br />

Leistungssteigerung<br />

Parallele Ausführung der Lesezugriffe für die gleichen Daten<br />

Verringerung der Anzahl notwendiger Kommunikationsvorgänge<br />

durch Unterstützung der Datenlokalität<br />

• Beispiel: Replizierte Kontodaten<br />

A<br />

R1<br />

(Paderborn)<br />

R3<br />

(Frankfurt)<br />

A<br />

B<br />

B<br />

R2<br />

(Kassel)<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-26


Probleme mit replizierten<br />

Daten<br />

• Verwaltung replizierter Daten erhöht den Speicherbedarf und die<br />

Kommunikationsleistung bei Schreibzugriffen<br />

• Hoher Implementierungsaufwand, da ein verteiltes DBS die<br />

Existenz der replizierten Daten für den Benutzer transparent sein<br />

soll<br />

Automatische, transparente Aktualisierung aller Repliken, sobald ein<br />

Datum verändert wird<br />

Aufrechterhaltung der Datenkonsistenz unter Berücksichtigung aller<br />

Repliken<br />

• Anforderungen für Synchronisationsprotokolle, die das<br />

Korrektheitskriterium der 1-Kopie-Serializierbarkeit unterstützen<br />

Es werden nur solche Schedules zugelassen, die zu serialisierbaren<br />

Schedules auf einer nicht-redundanten Datenbank äquivalent sind<br />

Insbesondere muss dies auch für mögliche Fehlerfälle gelten<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-27<br />

Ansätze<br />

• Drei wichtigste Verfahrensklassen für die Aktualisierung und<br />

Synchronisation auf replizierten Datenbanken<br />

Write-All-Ansatz: Synchrone Aktualisierung aller replizierten Kopien<br />

Primary-Copy-Verfahren: Sofortige Aktualisierung einer Masterkopie,<br />

die Veränderungen werden mit etwas Verspätung weitergegeben<br />

Voting-Verfahren: Jede der Repliken bekommt eine oder mehrere<br />

Stimmen zugeordnet. Bei jedem Schreib- oder Lesezugriff muss die<br />

Mehrheit dieser Stimmen durch Sperren der entsprechenden Objekte<br />

gewonnen werden<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-28


Varianten des Write-All-<br />

Ansatzes<br />

• Bekanntestes Variante: Write-All-Read-Any oder auch Read-Once-<br />

Write-All (ROWA) Strategie genannt<br />

Synchrone Änderung aller Replikate vor Abschluss der<br />

Änderungstransaktion<br />

⇒ Jedes Replikat ist auf dem aktuellen Stand und kann für die<br />

Lesezugriffe verwendet werden<br />

⇒ Auswahl beim Lesen erfolgt basierend auf minimaler Kommunikation<br />

oder Auslastung der einzelnen Knoten<br />

⇒ Einzelne Knotenausfälle können problemlos kompensiert werden<br />

• Beispiel zu ROWA-Strategie (siehe Skizze auf Folie 7-33)<br />

Alle Lesezugriffe der Zentrale (R2) werden auf replizierten Daten und<br />

ohne Verzögerung ausgeführt<br />

Zugriff auf alle Daten trotz Ausfalls von einem der Rechner möglich<br />

Allerdings erfordert die Aktualisierung der Kontodaten das Sperren<br />

und die synchrone Aktualisierung beider Kopien<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-29<br />

Nachteile der ROWA-Strategie<br />

• Änderung der Sperrprotokolle erforderlich<br />

Vor dem Zugriff muss eine Schreibsperre auf allen replizierten<br />

Datensätzen – auf unterschiedlichen Knoten – erworben werden<br />

Alle Knoten müssen an dem Commit-Protokoll beteiligt werden<br />

• Entscheidender Nachteil: Ausfallsicherheit schlechter als bei nichtredundanten<br />

Datenbanken<br />

Fällt nur einer der replizierten Knoten aus, so ist die gesamte<br />

Datenbank nicht mehr funktionsfähig, da alle Knoten mit Replikaten<br />

berücksichtigt werden müssen<br />

• Abgeschwächte Forderung Write-All-Available-Read-Any<br />

Die replizierten Datensätze werden nur auf den verfügbaren Rechnern<br />

aktualisiert<br />

Bei ausgefallenen Rechnern werden alle Aktualisierungen protokolliert<br />

und beim nächsten Start nachgeholt<br />

Probleme entstehen, wenn sich die Knoten in unterschiedlichen<br />

Netzwerkpartitionen befinden<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-30


Primary-Copy-Verfahren<br />

• Ziel<br />

Effiziente Bearbeitung von Änderungen, indem nur ein Replikat – so<br />

genannte Primärkopie – sofort aktualisiert wird<br />

Die anderen Kopien werden asynchron vom Primary-Copy-Rechner aus<br />

und sobald möglich (as soon as possible) aktualisiert<br />

• Effizienzvorteil<br />

Aktualisierungsnachrichten werden gebündelt und zusammen zum<br />

Zielknoten übertragen<br />

Primärkopien werden auf unterschiedlichen Knoten gespeichert, um<br />

Engpässe zu vermeiden<br />

• Nachteil: Verzögerte Anpassung der Replikate<br />

• Realisierung des Primary-Copy-Protokolls<br />

Anforderung von Schreibsperren für alle Replikate (wie bei ROWA),<br />

allerdings wird nur die primäre Kopie synchron aktualisiert<br />

Die Sperre geht in Besitz des Primary-Copy-Rechners über, der dann<br />

nach und nach die Replikate aktualisiert und erst nach Abschluss alle<br />

Sperren wieder frei gibt<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-31<br />

Alternativen zum Primary-Copy-<br />

Protokoll<br />

• Schreibsperren werden nur noch zentral auf der Primärkopie<br />

angefordert ⇒ Anzahl von Sperrkonflikte wird reduziert<br />

• Behandlung der Lesezugriffe wegen eventuell veralteter,<br />

inkonsistenter Daten erforderlich<br />

Lesezugriff auf Primärkopie: Alle Lesetransaktion referenzieren nur die<br />

primäre Kopie ⇒ keine Lokalität/Parallelität, lediglich Ausfallsicherheit<br />

Lesezugriff auf lokale Kopien, Sperranforderung beim Primary-Copy-<br />

Rechner: Nur die Sperren werden beim primären Rechner positioniert,<br />

die Zugriffe selbst können auf einem anderen Rechner erfolgen<br />

Beim Sperren wird überprüft, ob das Datum aktualisiert werden<br />

muss und ggf. die Aktualisierung bevorzugt behandelt<br />

Entlastung des Primary-Copy-Rechners<br />

Lokale Abwicklung von Lesezugriffen: Inkonsistenzen – in praktischen<br />

Anwendungen von wenigen Sekunden – werden in Kauf genommen<br />

und auf die Daten ohne vorherige Überprüfung der Primärkopie<br />

zugegriffen ⇒ Anwendung nur in speziellen Fällen tolerierbar<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-32


• Annahmen<br />

Beispiel zu Primary-Copy-<br />

Verfahren<br />

Die Primärkopien der Kontodatensätze liegen auf den Filialrechnern (R1<br />

hält Primärkopie von A und R3 von B)<br />

Sämtliche Lese- und Schreibzugriffe können lokal durchgeführt werden,<br />

Kommunikation nur bei Kontenzugriffe der Zentrale (R2), d.h. Sperren<br />

und Aktualisieren der Primärkopien<br />

Strategie 1 verlangt Sperren und Lesen der Primärkopie ⇒<br />

Nachrichten für Objektzugriff und Commit<br />

Strategie 2 erfordert Nachrichten für Sperranforderung und –freigabe<br />

Strategie 3 ist z.B. für globale Auswertungen ausreichend<br />

• Was passiert, wenn der Knoten mit der Primärkopie ausfällt?<br />

Primärkopie nicht erreichbar ⇒ keine Transaktion kann ausgeführt<br />

werden, wenn sie diese Daten benötigt<br />

Ausweg: Wahlalgorithmen zur Bestimmung einer neuen Primärkopie.<br />

Vorraussetzung ist allerdings, dass die Repliken auf dem aktuellen Stand<br />

sind bzw. gebracht werden können<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-33<br />

Voting-Verfahren<br />

• Vor jedem Zugriff auf ein repliziertes Datum müssen ausreichend<br />

viele Stimmen (votes) gesammelt werden<br />

• Mehrheits-Votum<br />

Die Transaktion muss die Mehrheit der Repliken des benötigten<br />

Objekts sperren (Sperre = Stimme)<br />

Beim Lesen wird analog eine Mehrheit der Repliken mit Lesesperren<br />

belegt und ein Element referenziert<br />

Somit ist es sichergestellt, dass das Objekt nicht von einer anderen<br />

Transaktion zwischenzeitlich verändert werden kann<br />

Mindestens ein der Replikate befindet sich auf dem aktuellen Stand<br />

⇒ Aktualität der Replikate wird durch einen Änderungszähler festgestellt<br />

• Vorteil: Objekte auch bei mehreren Knotenausfällen referenzierbar<br />

• Nachteil: Jede Zugriff verlangt mehrere Nachrichten zur<br />

Sicherstellung der Mehrheit<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-34


Gewichtetes Voting<br />

(Quorum Consensus)<br />

• Jedem Replikat eines Objektes wird ein bestimmtes Gewicht<br />

(Stimmenanzahl) zugeordnet<br />

• Zum Lesen bzw. Schreiben eines Datums wird eine bestimmte Anzahl<br />

von Stimmen (Lese-Quorum bzw. Schreib-Quorum) gesammelt<br />

• Es seien insgesamt v Stimmen möglich und r/w Lese/Schreib-Quorum<br />

Bedingung w>v/2 garantiert, dass kein Objekt gleichzeitig von mehr als 1<br />

Transaktion geändert wird<br />

Bedingung r+w>v verhindert, dass ein Objekt gleichzeitig gelesen und<br />

geschrieben wird. Ferner wird sichergestellt, dass mindestens ein Objekt<br />

zum letzten Schreib-Quorum gehörte<br />

• Durch die Gewichte können sowohl die Kosten für Schreib/Lese-<br />

Zugriffe als auch die Verfügbarkeit bestimmt werden<br />

Je kleiner r bzw. w, desto schneller sind die Lese- bzw. Schreibzugriffe<br />

Erhöhte Verfügbarkeit, da einige Rechner ausfallen dürfen<br />

Lesebevorzugung geht auf Kosten der Schreiboperationen und umgekehrt<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-35<br />

Beispiel zu Quorum-Verfahren<br />

• Objekt A sei an vier Rechnern R1 bis R4 repliziert<br />

• Stimmenverteilung , d.h. R1 hat 2 Stimmen<br />

• Wählt man r = 3 und w = 3, so sind 2 oder 3 Rechner bei jeder<br />

Transaktion involviert<br />

Durch Bevorzugung von R1 ist ein schnellerer Zugriff auf die Daten<br />

von R1 gewährleistet<br />

Zugriff ist auch nach Ausfall von jedem der Rechner möglich. Wenn R1<br />

intakt bleibt, dürfen auch zwei Rechner ausfallen<br />

• Lesezugriffe werden gegenüber von Schreibzugriffen bevorzugt,<br />

wenn z.B. r=2 und w=4 gilt<br />

Lesezugriffe können auf R1 lokal ausgeführt werden<br />

Bei Schreibzugriffen sind allerdings mindestens 3 Rechner beteiligt.<br />

Nach Ausfall von R1 ist das Objekt nicht mehr modifizierbar<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-36


Vor- und Nachteile des<br />

Quorum-Verfahrens<br />

• Durch spezielle Parameterwahl lassen sich das Mehrheits- und<br />

das ROWA-Verfahren sowie eines der Primary-Copy-Protokolle<br />

nachbilden<br />

Mehrheitsverfahren: Jedes Replikat hat das gleiche Gewicht (1<br />

Stimme)<br />

ROWA-Verfahren: Jedes Replikat hat eine Stimme. Ferner ist r=1 und<br />

w=v=Anzahl Replikate<br />

Primary-Copy: Primärkopie bekommt 1 Stimme, alle anderen Replikate<br />

bekommen keine Stimme und r=w=1 ⇒ Lesezugriffe müssen an<br />

Primärkopie gerichtet werden, Repliken ohne Stimme werden ohne<br />

Konsistenzzusicherung genutzt<br />

• Hauptnachteil der Voting-Verfahren ist die geeignete Wahl der<br />

Parameter, insbesondere wenn diese ohne oder mit geringer<br />

Beteiligung des Systemverwalters erfolgen sollen<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-37<br />

Schnappschuss-Replikation<br />

• Replikationsaufwand erhöht sich deutlich, wenn die Komponenten<br />

geographisch weit verteilt sind und die Aktualisierungskosten<br />

aufgrund der langsamen Netze noch höher sind<br />

• Verringerung der Aktualisierungskosten durch Einführung von<br />

Schnappschüssen (snapshots)<br />

• Definition Schnappschuss<br />

Entspricht materialisierten durch eine DB-Anfrage spezifizierten Sicht<br />

Ergebnis der Anfrage wird als eigenständiges DB-Objekt unter einem<br />

benutzerspezifizierten Namen abgelegt<br />

Zugriff auf einen Schnappschuss erfolgt mit der jeweiligen DB-<br />

Anfragesprache, nur Lesezugriffe zulässig<br />

• Beispieldefinition<br />

CREATE SNAPSHOT underflow AS<br />

SELECT KNR, KTONR, KTOSTAND<br />

FROM KONTO WHERE KTOSTAND


• Im Beispiel<br />

Eigenschaften des<br />

Schnappschusses<br />

Schnappschuss entspricht einer Kopie der Teilmenge aller überzogenen<br />

Konten<br />

Schnappschuss wird in explizit angegebenen Abschnitten aktualisiert<br />

(REFRESH – Angabe)<br />

• Vorteile<br />

Durch Bindung an DB-Sprachen können beliebige Informationen (auch<br />

aggregierte Informationen, Verknüpfungen, … ) zusammengefasst werden<br />

Entlastung des Primary-Copy-Rechners, da alle Zugriffe lokal und ohne<br />

Kommunikation erfolgen<br />

Kein Synchronisationsproblem, da lediglich Leseoperationen zulässig<br />

• Nachteile<br />

Qualität geringer als bei „echter“ Replikation ⇒ Daten im kontrollierten<br />

Maß veraltet<br />

Veraltete Daten reduzieren den Wert des Schnappschusses im Fehlerfall<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-39<br />

Anwendungen für<br />

Schnappschuss-Replikation<br />

• Die schwache Form der Replikation wird z.B. angewendet bei<br />

Ersatzteillisten bei KFZ-Betrieben<br />

Buchkataloge in Bibliotheken<br />

Telefonbücher<br />

Andere Verzeichnisse, auf die vorwiegend lesend zugegriffen wird<br />

⇒ Reduzierter Kommunikationsaufwand ist an dieser Stelle wichtiger als<br />

die 100% Aktualität (auf Sekunde/Minute/Stunde genau)<br />

• Varianten<br />

Quasi-Kopien: Verwendung von anwendungsbezogenem Wissen, um<br />

die Aktualisierungen bei bedeutender Veränderung weiterzugeben<br />

O. Kao Systemaspekte <strong>Verteilte</strong>r Systeme 7-40

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!