Was ist ACID?
Swipe um das Menü anzuzeigen
Wir beginnen unsere Erkundung fortgeschrittener SQL-Themen mit dem Konzept der ACID-Prinzipien.
ACID ist ein Akronym für Atomicity (Atomarität), Consistency (Konsistenz), Isolation (Isolation) und Durability (Dauerhaftigkeit). Diese vier Eigenschaften sind grundlegende Prinzipien im Datenbankmanagement und dienen dazu, die Zuverlässigkeit von Datenbanktransaktionen sicherzustellen.
Vielleicht ist Ihnen aufgefallen, dass wir im Zusammenhang mit ACID von Transaktion sprechen. Möglicherweise denken Sie bei diesem Begriff an eine Banktransaktion, aber im Kontext von Datenbanken ist eine Transaktion etwas anders definiert.
Eine Transaktion bezeichnet eine Abfolge von einer oder mehreren Datenbankoperationen, die als eine einzige logische Arbeitseinheit behandelt werden.
Stellen Sie sich vor, Sie nutzen eine Online-Shopping-Website.
Sie legen Artikel in den Warenkorb, gehen zur Kasse und führen eine Zahlung durch. Dieser gesamte Vorgang kann als Datenbanktransaktion betrachtet werden. So funktioniert es:
- Transaktion starten: Sie beginnen mit dem Bezahlvorgang;
- Operationen:
- Das System prüft, ob die Artikel im Warenkorb noch vorrätig sind;
- Ihre Zahlungsinformationen werden verarbeitet;
- Der Lagerbestand wird aktualisiert, um die gekauften Artikel widerzuspiegeln;
- Ein Bestell-Datensatz wird in der Datenbank erstellt.
- Transaktion bestätigen: Sobald alle diese Schritte erfolgreich abgeschlossen sind, wird die Transaktion bestätigt, das heißt, alle Änderungen werden in der Datenbank gespeichert;
- Rollback (falls erforderlich): Falls ein Schritt fehlschlägt (z. B. die Zahlung nicht durchgeführt werden kann), wird die Transaktion zurückgesetzt, sodass keine der Änderungen gespeichert wird. Dies stellt sicher, dass die Datenbank in einem konsistenten Zustand bleibt, als ob die Transaktion nie stattgefunden hätte.
Dieses Beispiel zeigt, wie eine Transaktion mehrere Operationen zu einem einzigen, zuverlässigen Prozess zusammenfasst.
Warum benötigen wir ACID?
ACID-Eigenschaften sind in Datenbanken aus drei Hauptgründen wichtig:
- Erstens gewährleisten sie die Zuverlässigkeit von Transaktionen, indem sie Transaktionen als einzelne, unteilbare Einheiten behandeln, verhindern partielle Aktualisierungen und erhalten die Konsistenz;
- Zweitens ermöglichen sie die Steuerung der Parallelität, indem sie sicherstellen, dass Transaktionen unabhängig voneinander ausgeführt werden, Störungen verhindern und die Datenkonsistenz in Mehrbenutzerumgebungen bewahren;
- Schließlich gewährleisten sie die Dauerhaftigkeit der Daten, indem verbindlich abgeschlossene Transaktionen dauerhaft gespeichert werden, Systemausfälle überstehen und die Wiederherstellbarkeit der Daten sicherstellen.
Betrachten wir eine Situation mit einem Bankkonto:
- Transaktion 1 (T1): Sie überweisen 100 $ von Ihrem Sparkonto auf Ihr Girokonto.
- Zur gleichen Zeit, Transaktion 2 (T2): Sie prüfen online den Kontostand Ihres Sparkontos.
- Doch dann tritt bei T1 ein Fehler auf – möglicherweise aufgrund eines Netzwerkproblems – und die Überweisung wird nicht abgeschlossen.
- Inzwischen wird T2 abgeschlossen und zeigt Ihren Sparkontostand an, einschließlich der 100 $ Überweisung, die tatsächlich noch nicht stattgefunden hat.
Dies verletzt die Isolations-Eigenschaft von ACID. Obwohl die Überweisung nicht abgeschlossen wurde (aufgrund des Fehlers bei T1), haben Sie die Auswirkung bereits in Ihrem Kontostand gesehen. Diese Inkonsistenz kann Benutzer verwirren und zu falschen finanziellen Entscheidungen führen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen