ACID-Transaktionen
Was ist eine Transaktion?
Im Kontext von Datenbanken und Datenspeichersystemen bezeichnet der Begriff Transaktion jeden Vorgang, der als separate Arbeitseinheit behandelt wird. Transaktionen werden wahlweise vollständig oder überhaupt nicht durchgeführt, d. h. nach jeder Transaktion befindet sich das Speichersystem in einem konsistenten Zustand. Das klassische Beispiel für eine Transaktion ist das Abheben von Geld von Ihrem Bankkonto. Entweder hat das Geld Ihr Konto verlassen oder eben nicht – einen Zustand dazwischen kann es nicht geben.
ACID
ACID ist ein Akronym, das sich auf die vier Schlüsseleigenschaften bezieht, die eine Transaktion definieren: Atomicity (Atomität), Consistency (Konsistenz), Isolation (Isolation) und Durability (Dauerhaftigkeit). Wenn eine Datenbankoperation über die ACID-Eigenschaften verfügt, kann sie als ACID-Transaktion bezeichnet werden. Datenspeichersysteme, die solche Operationen durchführen, werden als Transaktionssysteme bezeichnet. ACID-Transaktionen garantieren, dass jedes Lesen, Schreiben oder Ändern einer Tabelle die folgenden Eigenschaften hat:
- Atomität: Jede Anweisung in einer Transaktion (Lesen, Schreiben, Ändern oder Löschen von Daten) wird als separate Einheit behandelt: Entweder wird die gesamte Anweisung ausgeführt oder kein Teil davon. Diese Eigenschaft verhindert Datenverlust und Datenbeschädigung, falls beispielsweise Ihre Streaming-Datenquelle mitten in der Übertragung ausfällt.
- Konsistenz: Sie stellt sicher, dass Transaktionen Änderungen an Tabellen nur auf vordefiniert und vorhersehbare Weise vornehmen. Durch die Transaktionskonsistenz wird dafür gesorgt, dass Beschädigungen oder Fehler in Ihren Daten keine unbeabsichtigten Folgen für die Integrität Ihrer Tabelle haben.
- Isolation: Wenn mehrere Benutzer gleichzeitig aus derselben Tabelle lesen und darin schreiben, stellt die Isolation ihrer Transaktionen sicher, dass die gleichzeitigen Transaktionen sich nicht gegenseitig stören oder beeinflussen. Alle Anfrage werden so bearbeitet, als würden sie eine nach der anderen auftreten – und zwar auch dann, wenn verschiedene Anfragen eigentlich gleichzeitig empfangen werden.
- Dauerhaftigkeit: Hiermit wird sichergestellt, dass Änderungen an Ihren Daten, die durch erfolgreich ausgeführte Transaktionen vorgenommen wurden, auch im Falle eines Systemausfalls gespeichert bleiben.
Warum sind ACID-Transaktionen eine gute Sache?
ACID-Transaktionen gewährleisten maximale Datenzuverlässigkeit und -integrität. Sie sorgen dafür, dass Ihre Daten zu keinem Zeitpunkt in einen inkonsistenten Zustand geraten, wenn beispielsweise Operationen nicht vollständig ausgeführt werden. Angenommen, Sie schreiben ohne ACID-Transaktionen einige Daten in eine Datenbanktabelle. Wenn nun unerwartet der Strom ausfällt, wäre es theoretisch möglich, dass nur einige, aber nicht alle Ihre Daten gespeichert worden sind. Infolgedessen befände sich Ihre Datenbank in einem inkonsistenten Zustand, der nur sehr schwer und zeitaufwändig korrigiert werden könnte.
Delta Lake: Zuverlässige und konsistente Daten mit der Sicherheit von ACID-Transaktionen
ACID-Transaktionen gehörten lange Zeit zu den Alleinstellungsmerkmalen von Data Warehouses, aber dank Delta Lake gibt es sie jetzt auch in Data Lakes. Diese Transaktionen ermöglichen es Benutzern, selbst dann konsistente Ansichten ihrer Daten anzuzeigen, wenn neue Daten in Echtzeit in die Tabelle geschrieben werden, da es sich bei jedem Schreibvorgang um eine isolierte Transaktion handelt, die in einem chronologischen Transaktionsprotokoll vermerkt wird. [Delta Lake verwendet die höchstmögliche Isolationsstufe (serialisierbare Isolation), um sicherzustellen, dass Lese- und Schreibvorgänge in einer einzelnen Tabelle konsistent und zuverlässig sind.] Durch die Implementierung von ACID-Transaktionen beseitigt Delta Lake effektiv mehrere der zuvor aufgeführten Kritikpunkte an der Lambda-Architektur: ihre Komplexität, fehlerhafte Datensichten sowie Nacharbeiten und Neuverarbeitung, die nach dem zwangsläufigen Ausfall der Lambda-Pipelines erforderlich sind. Benutzer können mit ihren Daten mehrere Transaktionen gleichzeitig durchführen. Im Falle des Ausfalls einer Datenquelle oder eines Streams bricht Delta Lake die Ausführung der Transaktion ab, um sicherzustellen, dass die Daten sauber und intakt bleiben. Der größte Vorteil von ACID-Transaktionen besteht darin, dass Benutzer den in Delta Lake gespeicherten Daten vertrauen können. Ein Datenanalyst, der Delta Lake-Tabellen für ETL-Operationen an seinen Daten nutzt, um sie für die Darstellung im Dashboard vorzubereiten, kann sich darauf verlassen, dass die KPIs, die er sieht, den Istzustand der Daten widerspiegeln. Ein Machine Learning Engineer, der Delta Lake-Tabellen für die Feature-Entwicklung verwendet, kann zu 100 % sicher sein, dass alle Transformationen und Aggregationen entweder genau wie beabsichtigt oder aber überhaupt nicht ausgeführt wurden (in diesem Fall würde er benachrichtigt). Zu wissen, dass das Datenmodell, das Sie vor Ihrem geistigen Auge sehen, tatsächlich den echten zugrunde liegenden Zustand widerspiegelt, kann nicht hoch genug geschätzt werden.