Transaktionen sind grundlegende Vorgänge, die es uns ermöglichen, Daten zu ändern und abzurufen. Um die Integrität einer Datenbank sicherzustellen, ist es jedoch wichtig, dass diese Transaktionen so ausgeführt werden, dass die Konsistenz, Korrektheit und Zuverlässigkeit auch im Falle von Ausfällen/Fehlern gewahrt bleibt. Hier kommen die ACID-Eigenschaften ins Spiel.
ACID steht für Atomicity Consistency Isolation and Durability.
Eigenschaften von Säure:
Es gibt vier Eigenschaften von ACID
1. Atomarität
Atomarität bedeutet, dass es sich bei einer Transaktion um alles oder nichts handelt, entweder alle ihre Vorgänge erfolgreich sind oder keine ausgeführt werden. Wenn ein Teil fehlschlägt, wird die gesamte Transaktion zurückgesetzt, um die Datenbank konsistent zu halten.
- Begehen : Wenn die Transaktion erfolgreich ist, werden die Änderungen dauerhaft übernommen.
- Abbruch/Rollback : Wenn die Transaktion fehlschlägt, werden alle während der Transaktion vorgenommenen Änderungen verworfen.
Beispiel : Betrachten Sie die folgende Transaktion T bestehend aus T1 Und T2 : Überweisung von 0 vom Konto X zur Rechenschaft ziehen UND .
AtomaritätWenn die Transaktion nach Abschluss von T1, aber vor Abschluss von T2 fehlschlägt, verbleibt die Datenbank in einem inkonsistenten Zustand. Wenn bei Atomicity ein Teil der Transaktion fehlschlägt, wird der gesamte Prozess auf seinen ursprünglichen Zustand zurückgesetzt und es werden keine teilweisen Änderungen vorgenommen.
Konsistenz bei Transaktionen bedeutet, dass die Datenbank vor und nach einer Transaktion in einem gültigen Zustand bleiben muss.
Gleichheit von Strings in Java
- Ein gültiger Zustand folgt allen definierten Regeln, Einschränkungen und Beziehungen (wie Primärschlüssel, Fremdschlüssel usw.).
- Wenn eine Transaktion gegen eine dieser Regeln verstößt, wird sie zurückgesetzt, um beschädigte oder ungültige Daten zu verhindern.
- Wenn bei einer Transaktion Geld von einem Konto abgebucht, aber nicht auf ein anderes Konto überwiesen wird (bei einer Überweisung), verstößt dies gegen die Konsistenz.
Beispiel : Angenommen, die Summe aller Guthaben in einem Banksystem sollte immer konstant sein. Vor einer Überweisung beträgt der Gesamtsaldo 0. Nach der Transaktion sollte der Gesamtsaldo 0 bleiben. Wenn die Transaktion mittendrin fehlschlägt (z. B. die Aktualisierung eines Kontos, aber nicht des anderen), sollte das System seine Konsistenz aufrechterhalten, indem es die Transaktion zurücksetzt.
Gesamtwert vor dem Auftreten von T = 500 + 200 = 700 .
Gesamtwert, nachdem T auftritt = 400 + 300 = 700 .
Konsistenz3. Isolation
Durch die Isolation wird sichergestellt, dass Transaktionen unabhängig voneinander ausgeführt werden, ohne sich gegenseitig zu beeinflussen. Von einer Transaktion vorgenommene Änderungen sind für andere erst sichtbar, wenn sie festgeschrieben werden.
Es stellt sicher, dass das Ergebnis gleichzeitiger Transaktionen dasselbe ist, als ob sie nacheinander ausgeführt würden, und verhindert Probleme wie:
- Dirty liest: Lesen nicht festgeschriebener Daten
- Nicht wiederholbare Lesevorgänge: Datenänderungen zwischen zwei Lesevorgängen
- Phantom liest: Während einer Transaktion erscheinen neue Zeilen
Beispiel : Betrachten Sie zwei Transaktionen T und T''.
- X = 500 Y = 500
IsolierungErläuterung:
1. Transaktion T:
- T möchte von X nach Y wechseln.
- T liest UND (Wert: 500) wird von X abgezogen (neues X = 450) und zu Y addiert (neues Y = 550).
2. Transaktion T'':
- T' ' startet und liest X (500) und Y (500).
- Es berechnet die Summe: 500 + 500 = 1000.
- Inzwischen ändern sich die Werte von X und Y auf 450 bzw. 550.
- Die richtige Summe sollte also 450 + 550 = 1000 sein.
- Durch die Isolation wird sichergestellt, dass T'' keine veralteten Werte liest, während eine andere Transaktion (T) noch läuft.
- Transaktionen sollten unabhängig sein und T'' sollte erst auf die endgültigen Werte zugreifen, nachdem T einen Commit durchgeführt hat.
- Dies vermeidet inkonsistente Ergebnisse wie die von T'' berechnete falsche Summe.
4. Haltbarkeit:
Durch die Haltbarkeit wird sichergestellt, dass die Änderungen nach dem Commit einer Transaktion dauerhaft gespeichert werden, selbst wenn das System ausfällt. Die Daten werden im nichtflüchtigen Speicher gespeichert, sodass die Datenbank ohne Datenverlust ihren letzten festgeschriebenen Zustand wiederherstellen kann.
Expertensysteme
Beispiel : Nach erfolgreicher Geldüberweisung von Konto A auf Konto B werden die Änderungen auf der Festplatte gespeichert. Selbst wenn es direkt nach dem Commit zu einem Absturz kommt, bleiben die Übertragungsdetails bei der Wiederherstellung des Systems erhalten, um die Haltbarkeit zu gewährleisten.
Wie sich ACID-Eigenschaften auf DBMS-Design und -Betrieb auswirken
Der ACID-Eigenschaften in ihrer Gesamtheit stellen einen Mechanismus bereit, um die Korrektheit und Konsistenz einer Datenbank sicherzustellen, sodass jede Transaktion eine Gruppe von Vorgängen ist, die als einzelne Einheit konsistente Ergebnisse liefert, isoliert von anderen Vorgängen agiert und von ihr durchgeführte Aktualisierungen dauerhaft gespeichert werden.
ACID-Eigenschaften schützen die Datenintegrität eines DBMS, indem sie sicherstellen, dass Transaktionen entweder erfolgreich abgeschlossen werden oder bei Unterbrechung keine Spuren hinterlassen. Sie verhindern, dass Teilaktualisierungen die Daten beschädigen und stellen sicher, dass die Datenbank nur zwischen gültigen Zuständen wechselt.
2. Parallelitätskontrolle
ACID-Eigenschaften bieten einen soliden Rahmen für die Verwaltung gleichzeitiger Transaktionen. Durch die Isolierung wird sichergestellt, dass Transaktionen sich nicht gegenseitig beeinträchtigen, wodurch Datenanomalien wie verlorene Aktualisierungen, vorübergehende Inkonsistenzen und nicht festgeschriebene Daten verhindert werden.
3. Wiederherstellung und Fehlertoleranz
Durch die Haltbarkeit wird sichergestellt, dass die Datenbank auch bei einem Systemabsturz einen konsistenten Zustand wiederherstellen kann. Dank der Atomicity- und Durability-Eigenschaften bleibt die Datenbank in einem konsistenten Zustand, wenn eine Transaktion auf halbem Weg fehlschlägt.
| Eigentum | Verantwortung für die Instandhaltung von Immobilien |
|---|---|
| Atomarität | Transaktionsmanager |
| Konsistenz | Anwendungsprogrammierer |
| Isolierung | Parallelitätskontrollmanager |
| Haltbarkeit | Erholung |
Kritische Anwendungsfälle für ACID in Datenbanken
In modernen Anwendungen ist die Sicherstellung der Zuverlässigkeit und Konsistenz der Daten von entscheidender Bedeutung. ACID-Eigenschaften sind in Branchen wie den folgenden von grundlegender Bedeutung:
- Bankwesen : Transaktionen, die Geldtransfers, Ein- oder Auszahlungen beinhalten, müssen strenge Konsistenz und Dauerhaftigkeit gewährleisten, um Fehler und Betrug zu verhindern.
- E-Commerce : Um sicherzustellen, dass Bestandszählungsaufträge und Kundendaten auch bei hohem Datenverkehr korrekt und konsistent gehandhabt werden, ist ACID-Konformität erforderlich.
- Gesundheitspflege : Patientenakten, Testergebnisse und Verschreibungen müssen strengen Konsistenz-, Integritäts- und Sicherheitsstandards entsprechen.