© 13_Phunkod/Shutterstock.com
Bei der Verwendung von Datenbankmanagementsystemen (DBMS) werden regelmäßig Transaktionen durchgeführt. Diese werden oft als ACID-Transaktionen ausgeführt, die viele Vorteile haben, um eine Datenbank gesund zu halten und ordnungsgemäß zu funktionieren. Wenn Sie versuchen, ACID-Eigenschaften in DBMS in den Griff zu bekommen, haben wir alles behandelt, was Sie wissen müssen.
Was ist eine ACID-Transaktion?
In Bezug auf Datenbanken eine Transaktion ist eine Operation, die eine einzelne Aufgabe ausführt und den Inhalt der Datenbank ändern kann. Transaktionen verwenden Lese-und Schreibvorgänge, um mit Daten zu arbeiten. Das heißt, sie lesen vorhandene Daten und geben neue Datenwerte ein oder „schreiben“. Ein klassisches Beispiel hierfür ist die Überweisung von Ihrem Bankkonto. Als solche befinden sich ACID-Transaktionen entweder in einem abgeschlossenen oder unvollständigen Zustand. In diesem Beispiel kann nicht gleichzeitig Geld von Ihrem Konto abgehoben und nicht abgehoben werden – entweder ist es passiert oder nicht.
Das Ziel einer ACID-Transaktion besteht darin, die Konsistenz und Korrektheit der Datenbank aufrechtzuerhalten, nachdem die Transaktionen ausgeführt wurden. ACID-Eigenschaften in DBMS ermöglichen es Entwicklern, aufwändige Operationen durchzuführen und gleichzeitig sicherzustellen, dass ihre Daten sicher und korrekt sind. Dies wird durch die diktierten Eigenschaften der Transaktion erreicht, die als ACID-Eigenschaften bekannt sind. ACID steht für Atomicity, Consistency, Isolation und Durability. Als Nächstes werden wir uns mit der Bedeutung dieser Begriffe befassen.
ACID-Transaktionen stellen die Genauigkeit und Konsistenz der Datenbank sicher, nachdem die Transaktionen ausgeführt wurden.
©dizain/Shutterstock.com
Atomizität
Dies bezieht sich auf die Art und Weise, wie Anweisungen innerhalb einer Transaktion behandelt werden. Eine Anweisung ist eine einzelne Aufgabe, wie z. B. das Lesen, Schreiben, Aktualisieren oder Löschen von Daten. Atomarität bedeutet, dass jede Anweisung als einzelne Einheit behandelt wird und dass die gesamte Aufgabe ausgeführt wird oder nichts davon. Dadurch wird auch verhindert, dass Teiltransaktionen stattfinden.
Mit anderen Worten, die Atomarität hilft, Beschädigungen und Datenverluste zu verhindern, wenn Ihre Vorgänge unterwegs fehlschlagen. Die Datenbank protokolliert jede vorgenommene Änderung, und wenn die Verbindung unterbrochen wird, werden diese Änderungen rückgängig gemacht. Dies beruht auf zwei Operationen, die als „Abort“ und „Commit“ bekannt sind. Ersteres macht Änderungen rückgängig, wenn die Transaktion abgebrochen wird, und letzteres macht die Änderungen sichtbar, wenn die Transaktion abgeschlossen ist.
Konsistenz
Konsistenz bedeutet etwas Ähnliches wie in den meisten praktischen Situationen. In Bezug auf Datenbanken bedeutet dies, dass Transaktionen die Daten nur auf vorhersehbare und vordefinierte Weise ändern und die Datenwerte erhalten bleiben. Wenn die Transaktion gegen die Datenbankregeln verstößt, wird sie abgebrochen. Dies verhindert auch Datenkorruption oder Fehler, wie dies bei Atomizität der Fall ist, und bewahrt die Integrität der Datenbank, indem unbeabsichtigte Folgen vermieden werden.
Isolation
Es ist wichtig, wenn Sie mit Datenbanken arbeiten, dass die Transaktionen der Benutzer dies nicht tun stören sich gegenseitig. Um dies zu erreichen, wird Isolation als Eigenschaft verwendet. Das heißt, wenn Benutzer gleichzeitig auf derselben Datenbank arbeiten, wird jede Transaktionsanfrage so ausgeführt, als wäre es eine einzelne Anfrage. Diese Transaktionen wirken sich nicht gegenseitig aus und werden behandelt, als wären sie serialisiert, obwohl sie gleichzeitig stattfinden. Da sie sequentiell sind, wird verhindert, dass sie sich gegenseitig beeinflussen und die Datenintegrität beschädigen.
Haltbarkeit
Die letzte ACID-Eigenschaft ist die Haltbarkeit. Dies trägt dazu bei, Daten im Falle eines Systemausfalls zu erhalten, indem inkrementelle Änderungen gespeichert werden, die unterwegs vorgenommen wurden. Wenn die Transaktion erfolgreich ist, werden die Änderungen nicht rückgängig gemacht. Haltbarkeit ermöglicht es der Datenbank auch, ihre Änderungen im Falle einer unterbrochenen Transaktion rückgängig zu machen.
ACID-Eigenschaften in DBMS: Beispieltransaktionen
Nun haben wir die Grundlagen der ACID behandelt Eigenschaften sind, ist es an der Zeit, diese Eigenschaften mit einer einfachen Beispieltransaktion zu veranschaulichen.
Atomizität
Der einfachste Weg, die Atomizität zu erklären, besteht darin, die Situation zu betrachten, in der Sie Geld von einem Bankkonto auf ein anderes überweisen möchten.
Die Transaktionen müssen atomar sein, da Sie nicht in eine Situation geraten möchten, in der eine unvollständige Operation durchgeführt wird. In diesem Fall könnte das Geld abgehoben, aber nicht eingezahlt werden, oder das zweite Konto gutgeschrieben werden, ohne dass Geld vom Quellkonto abgehoben wird. Daher müssen diese Transaktionen rückgängig gemacht werden, wenn sie nicht erfolgreich abgeschlossen werden, daher ist Atomarität von größter Bedeutung. Die Daten und Transaktionen für dieses Beispiel sind unten dargestellt.
Wenn wir $50 von Konto X auf Konto Y überweisen wollen, müssen wir eine Transaktion T mit zwei Schritten verwenden – T1 und T2. Das heißt, das Geld von Konto X abheben und das Geld auf Konto Y einzahlen. Wenn die Transaktion unterbrochen wird, nachdem Write(X) ausgeführt wurde, aber bevor Write(Y) ausgeführt wird, ist die Operation inkonsistent und die Datenbank kompromittiert. Daher muss die Transaktion vollständig durchgeführt werden. Ist dies nicht der Fall, schlägt die Transaktion fehl und die Vorgänge werden rückgängig gemacht.
Konsistenz
Im gleichen Beispiel stellt die Konsistenz sicher, dass der Wert für den Geldbetrag auf beiden Konten konsistent ist. Das heißt, der Wert ist zu Beginn und am Ende jeder Transaktion gleich. Dies erhält die Integrität der Datenbank und auch die Vorhersagbarkeit der darin enthaltenen Werte. In dieser Situation ist es wichtig, dass die Einschränkung, dass der Kontostand eine positive ganze Zahl sein sollte, eingehalten wird. Andernfalls schlägt die Transaktion fehl.
Zur Veranschaulichung: Wenn das Gesamtguthaben auf Konto X 500 $ beträgt und wir 50 $ auf Konto Y überweisen möchten, muss das Gesamtguthaben auf beiden Konten immer 500 $ betragen, unter der Annahme, dass auf Konto Y kein Anfangskapital vorhanden ist. Konsistenz mag wie eine der einfachsten ACID-Eigenschaften in DBMS erscheinen, aber sie ist nichtsdestotrotz sehr wichtig.
Isolation
Um ein Beispiel zu zeigen, wo Isolation nicht ist nicht richtig verwendet wird, betrachten Sie zwei Transaktionen, T und T“. Während T Daten aus einer Zeile abruft und aktualisiert, berechnet T diese Daten. Wenn T” Daten abruft, bevor T die Aktualisierung abgeschlossen hat, zeigt die abgeschlossene Transaktion Daten an, die falsch sind. Die Daten und Transaktionen für dieses Beispiel sind unten dargestellt, wobei „Weight“=X und „Height“=Y.
In diesem Fall konvertiert T die Gewichts-und Höhenwerte in Kilogramm bzw. Meter, und T versucht, die zu berechnen BMI einer Person gemäß der Gleichung BMI=kg/m2. Zur Veranschaulichung betrachten wir das Szenario, in dem T bis zum Read(Y)-Schritt ausgeführt wird und T” beginnt. Der korrekte Wert für X wird von T abgerufen, da X bereits berechnet wurde, aber der falsche Wert für Y wird abgerufen, da der aktualisierte Wert noch nicht von T geschrieben wurde. Dies kann wie folgt dargestellt werden:
T”: (X/Y2=81,36/722=0,016)
In Wirklichkeit sollte die Berechnung lauten:
(X/Y2=81,36/1,832=24,3)
Da T”den Anfangswert für Y angenommen hat, ist die Datenbank jetzt inkonsistent und der ausgegebene Wert ist ungenau und im Wesentlichen bedeutungslos. Diese Situation, in der falsche Daten abgerufen werden, wird als „Dirty Read”bezeichnet. Die Diskrepanz im Fall einer Geldüberweisung könnte heimtückischer und schwerer zu erkennen sein, da es sich möglicherweise um einen relativ geringen Unterschied zwischen den berechneten und den erwarteten Mitteln handeln würde.In jedem Fall müssen Transaktionen isoliert werden, wobei inkrementelle Änderungen für beide Transaktionen unsichtbar sind, bis sie es getan haben gespeichert wurden.
Haltbarkeit
Da sich die Haltbarkeit auf die Erhaltung von Daten konzentriert, kann man sich dies im Zusammenhang mit einem Stromausfall vorstellen Geld überwiesen wurde, sollte diese Informationsänderung von der Datenbank in Non-Vola gespeichert werden Kachel Speicher. Wenn der Ausfall jedoch während der Transaktion auftritt, werden die Änderungen rückgängig gemacht und gemäß der Atomarität rückgängig gemacht.
Haltbarkeit konzentriert sich auf den Erhalt von Daten im Falle unerwarteter Ausfälle.
©thinkhubstudio/Shutterstock.com
Abschluss
Abschließend können wir sehen, wie wichtig alle vier ACID-Eigenschaften in DBMS sind. Zusammen stellen sie sicher, dass nur korrekte Transaktionen abgeschlossen werden und aktualisierte Informationen im nichtflüchtigen Speicher gespeichert werden, um vor unerwarteten Ausfällen zu schützen. Sie bewahren auch die Vorhersagbarkeit von Datenänderungen und stellen sicher, dass sich Transaktionen nicht gegenseitig stören.
Als Nächstes …
ACID-Eigenschaften in DBMS erklärt, mit Beispielen FAQs (Häufig gestellt Fragen)
Was ist eine Transaktion in DBMS?
Eine Transaktion bezieht sich auf eine Reihe von Vorgängen, die einen einzelnen Satz logischer Arbeit ausführen. In diesem Sinne bedeutet logisches Arbeiten eine sinnvolle Änderung der Daten, wie z. B. das Überweisen von Geld von einem Konto auf ein anderes. Transaktionen können entweder gerade ausgeführt werden, nicht abgeschlossen werden oder aus verschiedenen Gründen abgebrochen werden.
Was sind ACID-Eigenschaften in DBMS?
ACID-Eigenschaften beziehen sich darauf, wie Datenbanken die Transaktionen steuern, die mit ihren Daten ausgeführt werden. ACID steht für Atomicity, Consistency, Isolation und Durability.
Warum sind ACID-Eigenschaften wichtig?
ACID-Eigenschaften helfen, die Daten in Datenbanken korrekt und konsistent zu halten und sie im Falle unerwarteter Ereignisse wie Strom zu bewahren Fehler. Darüber hinaus stellen die Eigenschaften sicher, dass sich Transaktionen nicht gegenseitig stören.
Wann sollte ich eine ACID-Transaktion mit mehreren Dokumenten verwenden?
Manchmal werden verwandte Daten auf mehrere Datensätze aufgeteilt, sodass die Datenmanipulation für den Transaktionserfolg in der Lage sein muss, damit zu arbeiten. Die meisten Anwendungen erfordern keine Transaktionen mit mehreren Dokumenten, aber für einige sind sie von entscheidender Bedeutung. Viele Datenmodelle sind flexibel, was bedeutet, dass sie es ermöglichen, zusammengehörige Daten in einem einzigen Dokument zu speichern, aber auch mit Daten aus mehreren Dokumenten arbeiten können. Ein Beispiel ist MongoDB.
Welche Nachteile hat die Verwendung von ACID-Transaktionen?
Der Nachteil der Verwendung von ACID-Transaktionen besteht darin, dass die Datenbank gleichzeitige Operationen verhindert, wie z B. beim Schreiben von Daten, vor Störungen. Obwohl dies größtenteils ein Vorteil ist, hindert es Benutzer oder Kunden daran, Transaktionen auszuführen, wenn sie auf den Abschluss einer anderen warten. Dies kann sich negativ auf die Benutzererfahrung auswirken und zu einer höheren Anwendungslatenz führen.
Wie schneidet das ACID-Modell im Vergleich zum BASE-Modell ab?
Das ACID-Modell zielt darauf ab Konsistenz liefern, während das BASE-Modell darauf abzielt, Hochverfügbarkeit zu liefern. BASE tut dies durch Verteilen und Replizieren von Daten über die Knoten der Datenbank, sodass sich Daten im Laufe der Zeit ändern und Daten nach Bedarf gelesen werden können. Konsistenz kann schließlich durch das BASE-Modell erreicht werden, ist aber keine unmittelbare Voraussetzung.
Was ist eine relationale Datenbank?
Eine relationale Datenbank ist eine Datenbank Daten werden in einer oder mehreren Tabellen gespeichert und stehen über einen gemeinsamen Schlüssel in Beziehung zueinander. Daher können Datentypen durch Eins-zu-eins-, Eins-zu-viele-oder Viele-zu-viele-Beziehungen miteinander in Beziehung gesetzt werden.
Welche Datenbanken unterstützen ACID-Eigenschaften?
DBMS, die ACID-konform sind, umfassen MySQL, PostgreSQL, SQLite, Oracle und Microsoft SQL Server.
Welche Branche verwendet hauptsächlich ACID-Eigenschaften?
Die Finanzbranche verwendet fast vollständig ACID-konforme DBMS.
Welche Datenbanken unterstützen keine ACID-Eigenschaften?
NoSQL oder „Nicht-SQL“-Datenbanken unterstützen ACID-Eigenschaften nicht vollständig, da sie keine feste Tabellenstruktur haben. Sie bieten schließlich Konsistenz gemäß dem BASE-Modell.