19.11.2013 Aufrufe

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

5.2 Transaktionsverwaltung<br />

<strong>E<strong>in</strong></strong>e Transaktion ist e<strong>in</strong>e Menge von Datenbank-Operationen, die von e<strong>in</strong>er<br />

BOT(Beg<strong>in</strong> of Transaction)-Operation und e<strong>in</strong>er EOT(End of Transaction)-<br />

o<strong>der</strong> Commit-Operation umschlossen s<strong>in</strong>d. Außerdem besteht die Möglichkeit<br />

mit e<strong>in</strong>er Rollback-Anweisung diese transaktion abzubrechen. Der Rechnerknoten,<br />

<strong>der</strong> die Transaktion veranlasst, wird als Koord<strong>in</strong>ator-Knoten <strong>der</strong><br />

Transaktion bezeichnet. Beschränken sich die Operationen e<strong>in</strong>er Transaktion<br />

auf den Koord<strong>in</strong>ator spricht man von e<strong>in</strong>er lokalen Transaktion woh<strong>in</strong>gegen<br />

e<strong>in</strong>e globale Transaktion noch weitere Knoten e<strong>in</strong>bezieht, die wir<br />

auch Agenten nennen. An diese werden Teil- o<strong>der</strong> Sub-Transaktionen<br />

übermittelt, welche auf dem Knoten ausgeführt werden. Die am Koord<strong>in</strong>ator-<br />

Knoten ausgeführte Teiltransaktion nennt man dann Primär-Transaktion.<br />

Die Atomarität von Transaktionen ist e<strong>in</strong> zentrales Problem bei verteilten<br />

Datenbanken und wird mit Hilfe von Commit-Protokollen gewährleistet.<br />

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

Um e<strong>in</strong>e Transaktion abschließen zu können, ist es nötig zu wissen, ob alle<br />

Subtranksaktionen erfolgreich waren und falls nicht müssen Än<strong>der</strong>ungen<br />

an sämtlichen beteiligten Knoten rückgängig gemacht werden. Für die<br />

Lösung dieses Problems gibt es <strong>das</strong> 2PC-Protokoll zur Festschreibung von<br />

Än<strong>der</strong>ungen auf verteilten Datenbanken. Es besteht wie <strong>der</strong> Name schon<br />

sagt aus zwei Phasen, <strong>der</strong> Prepare-Phase und <strong>der</strong> Commit/Abort-Phase.<br />

• Prepare-Phase : Will <strong>der</strong> Koord<strong>in</strong>ator e<strong>in</strong>e Transaktion abschließen,<br />

so schickt er e<strong>in</strong>e Prepare-Nachricht an alle beteiligten Knoten. Diese<br />

machen e<strong>in</strong>en Vermerk <strong>in</strong> ihren lokalen Log-Dateien und antworten<br />

mit e<strong>in</strong>er Ready-Nachricht, falls ihre Subtransaktion erfolgreich war.<br />

An<strong>der</strong>nfalls antworten sie mit e<strong>in</strong>er Failed-Nachricht und beg<strong>in</strong>nen<br />

die lokalen Än<strong>der</strong>ungen <strong>der</strong> Transaktion rückgängig zu machen,<br />

da ihre Failed-Nachricht e<strong>in</strong> Zurücksetzen <strong>der</strong> gesamten globalen<br />

Transaktion zur Folge hat.<br />

• Commit/Abort-Phase : Der Koord<strong>in</strong>ator wartet, nach dem Versandt<br />

<strong>der</strong> Prepare-Nachrichten auf die Antworten aller Agenten.<br />

Wenn alle mit e<strong>in</strong>em Ready antworten, so waren alle Subtransaktionen<br />

erfolgreich und die globale Transaktion kann übernommen wer-<br />

17

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!