7. Verteilte Transaktionen • Überblick 7.1 7.2 7.3 7.4 Verteilte Datenbanksysteme Verteilte Transaktionen Dezentrale Koordination Replikation O. Kao Systemaspekte Verteilter Systeme 7-1 7.1 Verteilte Datenbanksysteme • Definition: Verteiltes Datenbanksystem (VDBS) Unter VDBS wird eine logisch integrierte Sammlung gemeinsam genutzter Daten verstanden, die physikalisch auf einer Anzahl von Knoten in einem Rechnernetzwerk verteilt ist • „Natürliche“ Datenverteilung: mehrere unabhängige Systeme mit ihren lokalen Datenmengen werden zu einer Einheit kombiniert Beispiel: multimediale Datenbank über Filme kann auf zwei Arten aus mehreren lokalen Datenbanken aufgebaut werden Lokale Datenbanken speichern Medien und Metainformationen, z.B. Bilddatenbank mit Fotos von Schauspielern, Bilddatenbank mit Keyframes aus verschiedenen Filmen, Videoserver sowie relationale Datenbanken mit bibliografischen und Filmangaben Jede lokale Datenbank enthält eine Teilmenge des Filmmaterials, z.B. nach Herstellerland geordnet In beiden Fällen ermöglicht eine zentrale Schnittstelle den Zugriff auf die Daten in allen lokalen Datenbanken O. Kao Systemaspekte Verteilter Systeme 7-2 Klassifikation Verteilter Datenbanksysteme DBMS = Datenbankmanagementsystem O. Kao Systemaspekte Verteilter Systeme 7-3 Homogene VDBS • Homogene VDBS leiten sich aus konventionellen DBS durch Partitionierung der Daten auf mehrere Knoten ab Zugriff auf alle Teile der lokalen Datenbanken zentral über ein einheitliches Schema Fragmentierungsschicht: Unterteilung der globalen Operationen in Segmente für einzelne Knoten ⇒ notwendige Einschränkungen zur sinnvollen Vereinigung der Teilergebnisse Allokationsschicht: Zuordnung von Fragmenten zu Knoten, besonders wichtig in Kombination mit Replikation, Scheduling, …. O. Kao Systemaspekte Verteilter Systeme 7-4 Heterogene VDBS • Verschiedene DBS auf den Knoten erlaubt ⇒ Vorteil der einheitlichen Verteilung/Ausführung der Operationen existiert nicht mehr • Die einzelnen Systeme verfügen über Umsetzungsschemata zur vollständigen Integration im globalen DBS Schnittstellen (Gateways) für den Zugriff auf die lokalen Daten Beispiel: Metasuchmaschinen geben Stichwörter nach syntaktischer Anpassung in mehrere Suchmaschinen ein ⇒ Parallele Bearbeitung Syntaktische Umwandlung betrifft die Formulierung der logischen Ausdrücke, z.B. Wort1 AND Wort2 wird zu +Wort1+Wort2 • Vollintegrierte DBS: bereits vorhandene Datenbanken werden über Konvertierungssubsysteme in ein neues globales System gekoppelt • Partiell integrierte DBS Zentrale Schnittstelle zur Abfrage / Kombination der Ergebnisse Lokaler Zugriff ohne Nutzung globaler Schnittstellen und -mechanismen erlaubt ⇒ Mitgliedschaft im globalen System bleibt unsichtbar O. Kao Systemaspekte Verteilter Systeme 7-5 Föderierte Datenbanksysteme • Eng verbundene (Tightly coupled) DBS verfügen über ein globales konzeptionelles Schema als Vereinigung von Teilen der lokalen Schemata Lokale DBS erlauben – je nach Autonomiegrad – die Aufnahme von Teilen der Daten im globalen Schema Auf die anderen Daten kann nur lokal zugegriffen werden Hilfsschema legt die Regel für die Datenkonvertierung fest, z.B. 13. November 2000 in 2000/11/13 O. Kao Systemaspekte Verteilter Systeme 7-6 Datenmanagement in verteilten Datenbanksystemen • Wesentliche Bedingungen aus Verteilung der Daten über die Knoten • Kompromiss zwischen Datenlokalität (Benötigte Daten auf einem Knoten) und Nebenläufigkeit (Daten gleichmäßig über alle Knoten verteilt) • Dieses Allokationsproblem ist NP-vollständig ⇒ Einsatz von Heuristiken • Bei VDBS wird eine Transaktion in mehrere Subtransaktionen – Agenten – unterteilt und an die entsprechenden Knoten versendet Transaktionskontrolle muss auf alle beteiligten Knoten verteilt werden ⇒ Anpassung der bestehenden Verfahren notwendig Berücksichtigung der Replikation Alle Knoten müssen stets die aktuelle Version der Daten haben O. Kao 7-7 Systemaspekte Verteilter Systeme 7.2 Verteilte Transaktionen • Verteilte Transaktion greifen auf Objekte zu, die auf mehreren räumlich getrennten Servern verteilt sind Atomarität: Transaktion ist entweder bei allen Servern festgeschrieben oder wird von allen Servern abgebrochen ⇒ Koordination durch einen/mehrere Server erforderlich • Transaktionsarten Flache Transaktion: Die aktuelle Anforderung der Transaktion wird abgeschlossen, bevor die nächste Anforderung abgesetzt wird Verschachtelte Transaktion: Top-Level-Transaktion öffnet untergeordnete Transaktionen, die wieder weitere Anforderungen absetzen können X T11 Client T T Y X T1 T 12 N T21 T T2 Client Y Z O. Kao M T22 Systemaspekte Verteilter Systeme P 7-10 Architektur verteilter Transaktionssysteme T11 T12 T1m Transaktionsmanager T21 T22 T2m Transaktionsmanager Tn1 Tn2 Tnm Transaktionsmanager Kommunikationsnetz Scheduler Scheduler Scheduler Ressourcenmanager Ressourcenmanager Ressourcenmanager Daten Daten Daten O. Kao Systemaspekte Verteilter Systeme 7-11 Architektur verteilter Transaktionssysteme (2) • Annahmen Homogene Umgebung existiert ⇒ Jeder Knoten besteht aus einem lokalen Transaktionsverwaltungssystem Jeder Knoten verwaltet einen Teil der Daten Jedes Datum befindet sich auf genau einem Knoten (keine Redundanz) Eine Transaktion sendet Operationen an lokalen Transaktionsmanager TM Falls das Datum lokal nicht verfügbar ist, wird eine Anforderung an den TM geschickt, bei dem das Datum sich befindet Bei Commit oder Abort muss der TM alle Knoten verständigen, die von der Transaktion betroffen waren • Fehlerarten Knotenfehler: Der Knoten stoppt sofort und führt keinerlei Operationen mehr durch ⇒ Der Inhalt des flüchtigen Speichers geht verloren und der Knoten muss eine Restart-Operation durchführen Netzfehler: Ausfall der Verbindung, Fehler in Kommunikationssoftware, Ausfall eines Zwischenknoten, Nachrichtenverlust und -verfälschung O. Kao Systemaspekte Verteilter Systeme 7-12 Koordinator einer Verteilten Transaktion • Client startet eine verteilte Transaktion durch eine openTransaction Anforderung an einen Transaktionsverwalter auf beliebigem Server Verwalter öffnet die Transaktion, vergibt systemweit-eindeutige ID Verwalter wird zur Koordinator für die gesamte Transaktion ⇒ Verantwortung für Annahme/Abbruch der Transaktion Teilnehmer = Server, die benötigte Objekte bereitstellen join openTransaction closeTransaction . T Client join Teilnehmer A Filiale X a.withdraw(4); Teilnehmer b.withdraw(T, 3); T =openTransaction a.withdraw(4); c.deposit(4); b.withdraw(3); d.deposit(3); closeTransaction join Koordinator ist einer der Server, z.B. Filiale X O. Kao B Filiale Y b.withdraw(3); Teilnehmer C c.deposit(4); D d.deposit(3); Filiale Z Systemaspekte Verteilter Systeme 7-13 Koordinator einer Verteilten Transaktion (2) • Während der Ausführung der verteilten Transaktion Koordinator erstellt Liste mit Verweisen auf alle Teilnehmer Teilnehmer notieren den Koordinator Hinzufügen von weiteren Teilnehmern mit der Funktion join(Trans-ID, Verweis auf neuen Teilnehmer) ⇒ Koordinator wird über die Neuzugänge informiert • Bei Aufruf von closeTransaction besitzt der Koordinator Verweise auf alle Teilnehmer • Sicherstellung der Atomaritätseigenschaft mit sog. CommitProtokollen O. Kao Systemaspekte Verteilter Systeme 7-14 Koordination durch zentralen Planer • Zentraler Planer verwaltet alle Transaktionen 2PL-Sperrprotokoll: Globale Sicht auf die Sperrsituation, wie im lokalen Fall Optimistische Verfahren: Nach Abschluss muss jede Transaktion ihren r/w-Set an die zentrale Validierungsstelle senden T11 T12 T1m T21 T22 T 2m TM • Nachteile TM Tn1 Tn2 Tnm TM Sch. Zentrale darf nicht ausfallen Eingeschränkte Skalierbarkeit Eingeschränkte Knotenautonomie Auch ausschließlich lokale Transaktionen müssen sich an den zentralen Planer wenden ⇒ unnötiger Aufwand O. Kao RM RM RM Daten Daten Daten Systemaspekte Verteilter Systeme 7-15 7.3 Dezentrale Koordination • Gewährleistung der Korrektheit eines Transaktionskonzepts ist schwierig, da es im verteilten Fall einer Abstimmung der Knoten bedarf und Ausfälle nicht ausgeschlossen werden können • Anforderung an ein atomares Commit-Protokoll (ACP) für verteilte Transaktionen 1. Alle Knoten, die eine Entscheidung treffen, treffen dieselbe Entscheidung 2. Ein Knoten kann seine Entscheidung nicht nachträglich ändern 3. Die Entscheidung, eine Transaktion zu bestätigen, kann nur von allen Knoten einstimmig getroffen werden 4. Falls keine Ausfälle vorliegen und alle Knoten zugestimmt haben, wird die Transaktion bestätigt 5. Nach Behebung von Ausfällen muss eine Entscheidung getroffen werden • Einfachste Realisierung: Koordinator fordert alle Teilnehmer solange auf, die aktuelle Transaktion zu bestätigen/abbrechen, bis alle geantwortet haben (Ein-Phasen-Commit-Protokoll, 1PC) O. Kao Systemaspekte Verteilter Systeme 7-16 Zwei-Phasen-Commit-Protokoll (2PC) • Probleme bei 1PC: Ein Server kann die Transaktion nicht einseitig abbrechen, z.B. wenn Konflikte oder Deadlocks aufgetreten sind • Bei 2PC kann jeder Teilnehmer seinen Transaktionsteil abbrechen und somit den Abbruch der gesamten Transaktion herbeiführen • Grundidee Jeder Knoten unterhält eine spezielle Log-Datei mit relevanten Ereignissen In der ersten Vorbereitungsphase (Abstimmphase) wird abgestimmt, ob die Transaktion festgeschrieben oder abgebrochen wird Ist einmal ein Votum abgegeben, so darf das Votum nicht geändert werden auch wenn das System ausfällt ⇒ alle relevanten Daten müssen im stabilen Speicher zusammen mit dem Status prepared sein In der zweiten Phase (Abschlussphase) wird die getroffene Entscheidung von jedem Teilnehmer durchgeführt • Probleme: Sicherstellung, dass alle Teilnehmer abstimmen und die getroffene Entscheidung tatsächlich umsetzen O. Kao Systemaspekte Verteilter Systeme 7-17 Zwei-Phasen-Commit-Protokoll (2) • • Das 2PC-Protokoll besteht aus vier Schritten 1. Aufforderung zur Stimmabgabe (vote request) 2. Stimmabgabe (vote) 3. Mitteilung über die Entscheidung (decision) 4. Bestätigung der Entscheidung (acknowledge) Einzelne Operationen canCommit?(trans)-> Yes / No: Aufruf vom Koordinator an den Teilnehmer, ob er eine Transaktion festschreiben kann. Teilnehmer stimmt ab doCommit(trans): Koordinator->Teilnehmer: Festschreiben der Transaktion doAbort(trans) : Analog zu doCommit(), jetzt aber mit Abort haveCommitted(trans, participant) : Teilnehmer->Koordinator: Transaktion festgeschrieben getDecision(trans) -> Yes / No: Teilnehmer->Koordinator mit Frage nach Entscheidung über Transaktion, für die er mit Yes gestimmt hat aber noch keine Antwort kam ⇒ Timeout zur Erkennung von Serverabstürzen O. Kao Systemaspekte Verteilter Systeme 7-18 Ablauf bei 2PC • Koordinator fragt alle Teilnehmer canCommit() und sammelt die Antworten • Koordinator wertet alle Stimmen (auch die eigene) aus Falls alle mit Yes gestimmt haben, so wird die Anweisung zum Festschreiben doCommit() verteilt Andernfalls wird die Transaktion abgebrochen doAbort() • Alle Teilnehmer warten auf den Befehl, bestätigen die Ausführung • Falls Bestätigung ⇒ haveCommited Nachricht an den Koordinator Koordinator Schritt 1 3 Teilnehmer Status Schritt Vorbereitet auf Festschreiben (Wartet auf Stimmen) festgeschrieben fertig Yes 2 Vorbereitet auf Festschreiben (unsicher) 4 Festgeschrieben doCommit haveCommitted O. Kao Status canCommit? Systemaspekte Verteilter Systeme 7-19 Leistung des 2PC • Kosten für das 2PC im fehlerfreien Fall sind bei N Teilnehmern proportional zu 3N Nachrichten Je N Nachrichten für canCommit, Yes/No und doCommit haveCommited-Nachrichten werden nicht mitgezählt, da diese für die Organisation der Koordinatoraktivitäten notwendig sind • Ausfall- und Fehleranfälligkeit 2PC kann mehrere Server-/Kommunikationsfehler tolerieren und wird garantiert irgendwann abgeschlossen. Die Vorgabe einer Zeitgrenze ist allerdings nicht möglich Die Verzögerung bei der Ausführung von 2PC kann dazu führen, dass einige Teilnehmer in einen unsicheren (ungewissen) Zustand geraten Besonders kompliziert, wenn der Koordinator ausgefallen ist und auf keine getDecision() Anforderung reagiert ⇒ Drei-Phasen-Commit-Protokolle (3PC) zur Reduktion der Verzögerungen O. Kao Systemaspekte Verteilter Systeme 7-20 Drei-Phasen-Commit-Protokoll (3PC) • 3PC-Protokoll: nicht-blockierende Verbesserung des 2PC-Protokolls • Voraussetzung Höchstens K<N Rechner fallen aus, K Verfahrensparameter • Idee Blockieren im 2PC resultiert aus einer Situation, in der alle nicht ausgefallenen Knoten im Zustand uncertain (ungewiss) sind und nicht einseitig Abort entscheiden können, weil einige Knoten vielleicht schon Commit entschieden haben • 3PC verhindert diese Situation, indem es sicherstellt, dass kein Knoten Commit entschieden haben kann, solange noch ein nicht ausgefallener Knoten ungewiss ist • Allerdings Der Verwaltungsaufwand ist deutlich höher, insgesamt werden 6N Nachrichten und 3(N+1) Log-Vorgänge notwendig O. Kao Systemaspekte Verteilter Systeme 7-21 Ablauf bei 3PC • Phase 1: Analog zur ersten Phase von 2PC • Der Koordinator sammelt die Stimmen und trifft eine Entscheidung No: Abbruch und Information der mit Yes abgestimmten Teilnehmer ⇒ Behandlung des Abort-Falls (mind. 1 Knoten stimmt mit Abort) wie 2PC Yes: alle Knoten antworten mit Yes ⇒ zusätzliche Phase ⇒ Einsatz 3PC • Phase 2: Koordinator nimmt Zwischenzustand (preCommit) ein ⇒ der Koordinator sichert zu, dass er von sich aus die Transaktion nicht mehr abbrechen wird. Allerdings, falls er ausfällt ist ein Zurücksetzen immer noch möglich Koordinator protokolliert den Zustand und sendet preCommitAnforderungen an die Teilnehmer Teilnehmer protokollieren und bestätigen die preCommit-Anforderungen • Phase 3: Koordinator sammelt alle Bestätigungen Wurden alle empfangen, wird commit ausgeführt und doCommit an alle Teilnehmer gesendet ⇒ Teilnehmer schreiben die Daten fest O. Kao Systemaspekte Verteilter Systeme 7-22 Ablauf bei 3PC (2) Koordinator Schritt 1 3 5 Teilnehmer Status Schritt Vorbereitet auf Festschreiben (Wartet auf Stimmen) Logging preCommit fertig Yes 2 Vorbereitet auf Festschreiben (ungewiss) 4 Logging preCommit 6 Logging Commit Sperrfreigabe preCommit preCommit ack Commit Logging preCommit fertig Status canCommit? acknowledge • Ein Koordinatorausfall wird durch Time-Outs erkannt Alle aktiven Teilnehmer wählen einen neuen Koordinator Damit der neue Koordinator die commit-Behandlung fortführen kann, wird ein Terminierungsprotokoll gestartet O. Kao Systemaspekte Verteilter Systeme 7-23 3PC-Terminierungsprotokoll • Der neue Koordinator sammelt die Zustandsinformation aller Teilnehmer und verfährt nach den folgenden Regeln R1: Falls ein Knoten im Zustand finished oder aborted ist, so lautet die Entscheidung abort R2: Falls irgendein Knoten im Zustand commit ist, lautet die Entscheidung commit R3: Sind alle Knoten im Zustand uncertain, lautet die Entscheidung abort R4: Sind einige Knoten im Zustand preCommit, aber keiner im Zustand commit, sendet er preCommit an alle Knoten • Nach Eingang der Quittungen (Ack) kann commit entschieden werden • Teilnehmer, die ihren Zustand nicht melden, werden ignoriert O. Kao Systemaspekte Verteilter Systeme 7-24 Beispiel zu 3PC • Alle Teilnehmer haben mit Yes gestimmt • Der Koordinator beginnt, preCommit zu verschicken, fällt aber aus, so dass nur ein Teil der Knoten die Nachricht erhält • Einige Knoten sind im Zustand preCommit, die anderen im Zustand uncertain • Angenommen, die Knoten im Zustand preCommit fallen ebenfalls aus Die restlichen Knoten starten das Terminierungsprotokoll Der (gewählte) neue Koordinator sammelt die Zustände der operationalen Knoten (alle uncertain) und beschließt gemäß Regel R3 abort Ausgefallene Knoten starten nach dem Restart das Terminierungsprotokoll und erfahren die Entscheidung abort Obwohl sie bereits preCommit erhalten hatten, entscheiden sie Abort O. Kao 7-25 Systemaspekte Verteilter Systeme 7.4 Replikation • Ziele der Replikation Steigerung der Verfügbarkeit Daten werden auf k Knoten kopiert ⇒ Daten bleiben auch beim Ausfall von k-1 Knoten erhalten Leistungssteigerung Parallele Ausführung der Lesezugriffe für die gleichen Daten Verringerung der Anzahl notwendiger Kommunikationsvorgänge durch Unterstützung der Datenlokalität • Beispiel: Replizierte Kontodaten A R1 (Paderborn) R3 (Frankfurt) B O. Kao A B R2 (Kassel) Systemaspekte Verteilter Systeme 7-26 Probleme mit replizierten Daten • Verwaltung replizierter Daten erhöht den Speicherbedarf und die Kommunikationsleistung bei Schreibzugriffen • Hoher Implementierungsaufwand, da ein verteiltes DBS die Existenz der replizierten Daten für den Benutzer transparent sein soll Automatische, transparente Aktualisierung aller Repliken, sobald ein Datum verändert wird Aufrechterhaltung der Datenkonsistenz unter Berücksichtigung aller Repliken • Anforderungen für Synchronisationsprotokolle, die das Korrektheitskriterium der 1-Kopie-Serializierbarkeit unterstützen Es werden nur solche Schedules zugelassen, die zu serialisierbaren Schedules auf einer nicht-redundanten Datenbank äquivalent sind Insbesondere muss dies auch für mögliche Fehlerfälle gelten O. Kao Systemaspekte Verteilter Systeme 7-27 Ansätze • Drei wichtigste Verfahrensklassen für die Aktualisierung und Synchronisation auf replizierten Datenbanken Write-All-Ansatz: Synchrone Aktualisierung aller replizierten Kopien Primary-Copy-Verfahren: Sofortige Aktualisierung einer Masterkopie, die Veränderungen werden mit etwas Verspätung weitergegeben Voting-Verfahren: Jede der Repliken bekommt eine oder mehrere Stimmen zugeordnet. Bei jedem Schreib- oder Lesezugriff muss die Mehrheit dieser Stimmen durch Sperren der entsprechenden Objekte gewonnen werden O. Kao Systemaspekte Verteilter Systeme 7-28 Varianten des Write-AllAnsatzes • Bekanntestes Variante: Write-All-Read-Any oder auch Read-OnceWrite-All (ROWA) Strategie genannt Synchrone Änderung aller Replikate vor Abschluss der Änderungstransaktion ⇒ Jedes Replikat ist auf dem aktuellen Stand und kann für die Lesezugriffe verwendet werden ⇒ Auswahl beim Lesen erfolgt basierend auf minimaler Kommunikation oder Auslastung der einzelnen Knoten ⇒ Einzelne Knotenausfälle können problemlos kompensiert werden • Beispiel zu ROWA-Strategie (siehe Skizze auf Folie 7-33) Alle Lesezugriffe der Zentrale (R2) werden auf replizierten Daten und ohne Verzögerung ausgeführt Zugriff auf alle Daten trotz Ausfalls von einem der Rechner möglich Allerdings erfordert die Aktualisierung der Kontodaten das Sperren und die synchrone Aktualisierung beider Kopien O. Kao Systemaspekte Verteilter Systeme 7-29 Nachteile der ROWA-Strategie • Änderung der Sperrprotokolle erforderlich Vor dem Zugriff muss eine Schreibsperre auf allen replizierten Datensätzen – auf unterschiedlichen Knoten – erworben werden Alle Knoten müssen an dem Commit-Protokoll beteiligt werden • Entscheidender Nachteil: Ausfallsicherheit schlechter als bei nichtredundanten Datenbanken Fällt nur einer der replizierten Knoten aus, so ist die gesamte Datenbank nicht mehr funktionsfähig, da alle Knoten mit Replikaten berücksichtigt werden müssen • Abgeschwächte Forderung Write-All-Available-Read-Any Die replizierten Datensätze werden nur auf den verfügbaren Rechnern aktualisiert Bei ausgefallenen Rechnern werden alle Aktualisierungen protokolliert und beim nächsten Start nachgeholt Probleme entstehen, wenn sich die Knoten in unterschiedlichen Netzwerkpartitionen befinden O. Kao Systemaspekte Verteilter Systeme 7-30 Primary-Copy-Verfahren • Ziel Effiziente Bearbeitung von Änderungen, indem nur ein Replikat – so genannte Primärkopie – sofort aktualisiert wird Die anderen Kopien werden asynchron vom Primary-Copy-Rechner aus und sobald möglich (as soon as possible) aktualisiert • Effizienzvorteil Aktualisierungsnachrichten werden gebündelt und zusammen zum Zielknoten übertragen Primärkopien werden auf unterschiedlichen Knoten gespeichert, um Engpässe zu vermeiden • Nachteil: Verzögerte Anpassung der Replikate • Realisierung des Primary-Copy-Protokolls Anforderung von Schreibsperren für alle Replikate (wie bei ROWA), allerdings wird nur die primäre Kopie synchron aktualisiert Die Sperre geht in Besitz des Primary-Copy-Rechners über, der dann nach und nach die Replikate aktualisiert und erst nach Abschluss alle Sperren wieder frei gibt O. Kao Systemaspekte Verteilter Systeme 7-31 Alternativen zum Primary-CopyProtokoll • Schreibsperren werden nur noch zentral auf der Primärkopie angefordert ⇒ Anzahl von Sperrkonflikte wird reduziert • Behandlung der Lesezugriffe wegen eventuell veralteter, inkonsistenter Daten erforderlich Lesezugriff auf Primärkopie: Alle Lesetransaktion referenzieren nur die primäre Kopie ⇒ keine Lokalität/Parallelität, lediglich Ausfallsicherheit Lesezugriff auf lokale Kopien, Sperranforderung beim Primary-CopyRechner: Nur die Sperren werden beim primären Rechner positioniert, die Zugriffe selbst können auf einem anderen Rechner erfolgen Beim Sperren wird überprüft, ob das Datum aktualisiert werden muss und ggf. die Aktualisierung bevorzugt behandelt Entlastung des Primary-Copy-Rechners Lokale Abwicklung von Lesezugriffen: Inkonsistenzen – in praktischen Anwendungen von wenigen Sekunden – werden in Kauf genommen und auf die Daten ohne vorherige Überprüfung der Primärkopie zugegriffen ⇒ Anwendung nur in speziellen Fällen tolerierbar O. Kao Systemaspekte Verteilter Systeme 7-32 Beispiel zu Primary-CopyVerfahren • Annahmen Die Primärkopien der Kontodatensätze liegen auf den Filialrechnern (R1 hält Primärkopie von A und R3 von B) Sämtliche Lese- und Schreibzugriffe können lokal durchgeführt werden, Kommunikation nur bei Kontenzugriffe der Zentrale (R2), d.h. Sperren und Aktualisieren der Primärkopien Strategie 1 verlangt Sperren und Lesen der Primärkopie ⇒ Nachrichten für Objektzugriff und Commit Strategie 2 erfordert Nachrichten für Sperranforderung und –freigabe Strategie 3 ist z.B. für globale Auswertungen ausreichend • Was passiert, wenn der Knoten mit der Primärkopie ausfällt? Primärkopie nicht erreichbar ⇒ keine Transaktion kann ausgeführt werden, wenn sie diese Daten benötigt Ausweg: Wahlalgorithmen zur Bestimmung einer neuen Primärkopie. Vorraussetzung ist allerdings, dass die Repliken auf dem aktuellen Stand sind bzw. gebracht werden können O. Kao Systemaspekte Verteilter Systeme 7-33 Voting-Verfahren • Vor jedem Zugriff auf ein repliziertes Datum müssen ausreichend viele Stimmen (votes) gesammelt werden • Mehrheits-Votum Die Transaktion muss die Mehrheit der Repliken des benötigten Objekts sperren (Sperre = Stimme) Beim Lesen wird analog eine Mehrheit der Repliken mit Lesesperren belegt und ein Element referenziert Somit ist es sichergestellt, dass das Objekt nicht von einer anderen Transaktion zwischenzeitlich verändert werden kann Mindestens ein der Replikate befindet sich auf dem aktuellen Stand ⇒ Aktualität der Replikate wird durch einen Änderungszähler festgestellt • Vorteil: Objekte auch bei mehreren Knotenausfällen referenzierbar • Nachteil: Jede Zugriff verlangt mehrere Nachrichten zur Sicherstellung der Mehrheit O. Kao Systemaspekte Verteilter Systeme 7-34 Gewichtetes Voting (Quorum Consensus) • Jedem Replikat eines Objektes wird ein bestimmtes Gewicht (Stimmenanzahl) zugeordnet • Zum Lesen bzw. Schreiben eines Datums wird eine bestimmte Anzahl von Stimmen (Lese-Quorum bzw. Schreib-Quorum) gesammelt • Es seien insgesamt v Stimmen möglich und r/w Lese/Schreib-Quorum Bedingung w>v/2 garantiert, dass kein Objekt gleichzeitig von mehr als 1 Transaktion geändert wird Bedingung r+w>v verhindert, dass ein Objekt gleichzeitig gelesen und geschrieben wird. Ferner wird sichergestellt, dass mindestens ein Objekt zum letzten Schreib-Quorum gehörte • Durch die Gewichte können sowohl die Kosten für Schreib/LeseZugriffe als auch die Verfügbarkeit bestimmt werden Je kleiner r bzw. w, desto schneller sind die Lese- bzw. Schreibzugriffe Erhöhte Verfügbarkeit, da einige Rechner ausfallen dürfen Lesebevorzugung geht auf Kosten der Schreiboperationen und umgekehrt O. Kao Systemaspekte Verteilter Systeme 7-35 Beispiel zu Quorum-Verfahren • Objekt A sei an vier Rechnern R1 bis R4 repliziert • Stimmenverteilung <2,1,1,1>, d.h. R1 hat 2 Stimmen • Wählt man r = 3 und w = 3, so sind 2 oder 3 Rechner bei jeder Transaktion involviert Durch Bevorzugung von R1 ist ein schnellerer Zugriff auf die Daten von R1 gewährleistet Zugriff ist auch nach Ausfall von jedem der Rechner möglich. Wenn R1 intakt bleibt, dürfen auch zwei Rechner ausfallen • Lesezugriffe werden gegenüber von Schreibzugriffen bevorzugt, wenn z.B. r=2 und w=4 gilt Lesezugriffe können auf R1 lokal ausgeführt werden Bei Schreibzugriffen sind allerdings mindestens 3 Rechner beteiligt. Nach Ausfall von R1 ist das Objekt nicht mehr modifizierbar O. Kao Systemaspekte Verteilter Systeme 7-36 Vor- und Nachteile des Quorum-Verfahrens • Durch spezielle Parameterwahl lassen sich das Mehrheits- und das ROWA-Verfahren sowie eines der Primary-Copy-Protokolle nachbilden Mehrheitsverfahren: Jedes Replikat hat das gleiche Gewicht (1 Stimme) ROWA-Verfahren: Jedes Replikat hat eine Stimme. Ferner ist r=1 und w=v=Anzahl Replikate Primary-Copy: Primärkopie bekommt 1 Stimme, alle anderen Replikate bekommen keine Stimme und r=w=1 ⇒ Lesezugriffe müssen an Primärkopie gerichtet werden, Repliken ohne Stimme werden ohne Konsistenzzusicherung genutzt • Hauptnachteil der Voting-Verfahren ist die geeignete Wahl der Parameter, insbesondere wenn diese ohne oder mit geringer Beteiligung des Systemverwalters erfolgen sollen O. Kao Systemaspekte Verteilter Systeme 7-37 Schnappschuss-Replikation • Replikationsaufwand erhöht sich deutlich, wenn die Komponenten geographisch weit verteilt sind und die Aktualisierungskosten aufgrund der langsamen Netze noch höher sind • Verringerung der Aktualisierungskosten durch Einführung von Schnappschüssen (snapshots) • Definition Schnappschuss Entspricht materialisierten durch eine DB-Anfrage spezifizierten Sicht Ergebnis der Anfrage wird als eigenständiges DB-Objekt unter einem benutzerspezifizierten Namen abgelegt Zugriff auf einen Schnappschuss erfolgt mit der jeweiligen DBAnfragesprache, nur Lesezugriffe zulässig • Beispieldefinition CREATE SNAPSHOT underflow AS SELECT KNR, KTONR, KTOSTAND FROM KONTO WHERE KTOSTAND <0 REFRESH EVERY DAY O. Kao Systemaspekte Verteilter Systeme 7-38 Eigenschaften des Schnappschusses • Im Beispiel Schnappschuss entspricht einer Kopie der Teilmenge aller überzogenen Konten Schnappschuss wird in explizit angegebenen Abschnitten aktualisiert (REFRESH – Angabe) • Vorteile Durch Bindung an DB-Sprachen können beliebige Informationen (auch aggregierte Informationen, Verknüpfungen, … ) zusammengefasst werden Entlastung des Primary-Copy-Rechners, da alle Zugriffe lokal und ohne Kommunikation erfolgen Kein Synchronisationsproblem, da lediglich Leseoperationen zulässig • Nachteile Qualität geringer als bei „echter“ Replikation ⇒ Daten im kontrollierten Maß veraltet Veraltete Daten reduzieren den Wert des Schnappschusses im Fehlerfall O. Kao Systemaspekte Verteilter Systeme 7-39 Anwendungen für Schnappschuss-Replikation • Die schwache Form der Replikation wird z.B. angewendet bei Ersatzteillisten bei KFZ-Betrieben Buchkataloge in Bibliotheken Telefonbücher Andere Verzeichnisse, auf die vorwiegend lesend zugegriffen wird ⇒ Reduzierter Kommunikationsaufwand ist an dieser Stelle wichtiger als die 100% Aktualität (auf Sekunde/Minute/Stunde genau) • Varianten Quasi-Kopien: Verwendung von anwendungsbezogenem Wissen, um die Aktualisierungen bei bedeutender Veränderung weiterzugeben O. Kao Systemaspekte Verteilter Systeme 7-40