Welche Beziehung besteht zwischen ACID und Datenbanktransaktion?
Gibt ACID Datenbanktransaktionen an oder ist es dasselbe?
Könnte jemand dieses Thema aufklären.
quelle
Welche Beziehung besteht zwischen ACID und Datenbanktransaktion?
Gibt ACID Datenbanktransaktionen an oder ist es dasselbe?
Könnte jemand dieses Thema aufklären.
ACID ist eine Reihe von Eigenschaften, die Sie beim Ändern einer Datenbank anwenden möchten.
Eine Transaktion besteht aus einer Reihe verwandter Änderungen, mit denen einige der ACID-Eigenschaften erreicht werden. Transaktionen sind Werkzeuge zum Erreichen der ACID-Eigenschaften.
Atomizität bedeutet, dass Sie garantieren können, dass die gesamte Transaktion stattfindet oder keine. Sie können komplexe Vorgänge als eine einzige Einheit ausführen, alles oder nichts, und ein Absturz, ein Stromausfall, ein Fehler oder etwas anderes ermöglicht es Ihnen nicht, sich in einem Zustand zu befinden, in dem nur einige der damit verbundenen Änderungen vorgenommen wurden.
Konsistenz bedeutet, dass Sie garantieren, dass Ihre Daten konsistent sind. Keine der Einschränkungen, die Sie für verwandte Daten haben, wird jemals verletzt.
Isolation bedeutet, dass eine Transaktion keine Daten von einer anderen Transaktion lesen kann, die noch nicht abgeschlossen ist. Wenn zwei Transaktionen gleichzeitig ausgeführt werden, sieht jede die Welt so, als würden sie nacheinander ausgeführt, und wenn eine Daten lesen muss, die von einer anderen geschrieben wurden, muss sie warten, bis die andere abgeschlossen ist.
Haltbarkeit bedeutet, dass nach Abschluss einer Transaktion garantiert wird, dass alle Änderungen auf einem dauerhaften Medium (z. B. einer Festplatte) aufgezeichnet wurden und dass die Tatsache, dass die Transaktion abgeschlossen wurde, ebenfalls aufgezeichnet wird.
Transaktionen sind also ein Mechanismus zur Gewährleistung dieser Eigenschaften. Sie sind eine Möglichkeit, verwandte Aktionen so zu gruppieren, dass eine Gruppe von Operationen insgesamt atomar sein, konsistente Ergebnisse liefern, von anderen Operationen isoliert und dauerhaft aufgezeichnet werden kann.
ACID sind wünschenswerte Eigenschaften jeder Transaktionsverarbeitungs-Engine.
Ein DBMS ist (wenn es gut ist) eine bestimmte Art von Transaktionsverarbeitungs-Engine, die diese Eigenschaften normalerweise in sehr großem Umfang, aber nicht ganz vollständig verfügbar macht.
Es gibt jedoch auch andere Engines, die diese Eigenschaften offenlegen können. Die Art von Software, die früher als "TP-Monitore" bezeichnet wurde, ist ein typisches Beispiel (heutzutage sind es hauptsächlich Webserver).
Solche TP-Monitore können auf andere Ressourcen als ein DBMS (z. B. einen Drucker) zugreifen und ihren Benutzern dennoch ACID garantieren. Als Beispiel dafür, was ACID bedeuten kann, wenn ein Drucker an einer Transaktion beteiligt ist:
quelle
Ich habe das Druckerbeispiel leicht modifiziert, um es erklärbarer zu machen
1 Dokument mit 2 Seiten Inhalt wurde an den Drucker gesendet
Transaktion - Dokument an Drucker gesendet
Ich hoffe, dies hilft jemandem, das Konzept von ACID in den Griff zu bekommen
quelle
In einer relationalen Datenbank muss jede SQL-Anweisung im Rahmen einer Transaktion ausgeführt werden.
Ohne die Transaktionsgrenzen explizit zu definieren, verwendet die Datenbank eine implizite Transaktion, die jede einzelne Anweisung umschließt.
Die implizite Transaktion beginnt vor der Ausführung der Anweisung und endet (Commit oder Rollback) nach der Ausführung der Anweisung. Der implizite Transaktionsmodus wird allgemein als Autocommit bezeichnet.
Wie in diesem Artikel erläutert , ist eine Transaktion eine Sammlung von Lese- / Schreibvorgängen, die nur dann erfolgreich sind, wenn alle enthaltenen Vorgänge erfolgreich sind.
Inhärent ist eine Transaktion durch vier Eigenschaften gekennzeichnet (üblicherweise als ACID bezeichnet):
Für ein relationales Datenbanksystem gilt dies, da der SQL-Standard angibt, dass eine Transaktion die ACID-Garantien bereitstellen soll:
Atomizität
Atomicity nimmt einzelne Operationen und verwandelt sie in eine Alles-oder-Nichts-Arbeitseinheit, die genau dann erfolgreich ist, wenn alle enthaltenen Operationen erfolgreich sind.
Eine Transaktion kann eine Statusänderung enthalten (es sei denn, es handelt sich um eine schreibgeschützte Transaktion). Eine Transaktion muss das System immer in einem konsistenten Zustand belassen, unabhängig davon, wie viele gleichzeitige Transaktionen zu einem bestimmten Zeitpunkt verschachtelt sind.
Konsistenz
Konsistenz bedeutet, dass Einschränkungen für jede festgeschriebene Transaktion erzwungen werden. Dies bedeutet, dass alle Schlüssel, Datentypen, Überprüfungen und Auslöser erfolgreich sind und keine Einschränkungsverletzung ausgelöst wird.
Isolation
Transaktionen erfordern Mechanismen zur Kontrolle der Parallelität und garantieren die Richtigkeit, auch wenn sie verschachtelt sind. Isolation bringt uns den Vorteil, nicht festgeschriebene Statusänderungen vor der Außenwelt zu verbergen, da fehlgeschlagene Transaktionen niemals den Status des Systems beschädigen sollten. Die Isolierung wird durch Parallelitätskontrolle unter Verwendung pessimistischer oder optimistischer Sperrmechanismen erreicht.
Haltbarkeit
Eine erfolgreiche Transaktion muss den Status eines Systems dauerhaft ändern. Vor dem Beenden werden die Statusänderungen in einem dauerhaften Transaktionsprotokoll aufgezeichnet. Wenn unser System plötzlich von einem Systemabsturz oder einem Stromausfall betroffen ist, werden möglicherweise alle nicht abgeschlossenen festgeschriebenen Transaktionen wiedergegeben.
Weitere Informationen zur Haltbarkeit und zum Redo-Protokoll finden Sie in diesem Artikel .
quelle
ACID-Eigenschaften sind ein sehr altes und wichtiges Konzept der Datenbanktheorie. Ich weiß, dass Sie viele Beiträge zu diesem Thema finden können, aber ich möchte trotzdem eine Antwort zu diesem Thema teilen, da dies ein sehr wichtiges Thema von RDBMS ist.
Das Datenbanksystem spielt mit vielen verschiedenen Arten von Transaktionen, bei denen alle Transaktionen bestimmte Merkmale aufweisen. Diese Eigenschaft ist als ACID-Eigenschaften bekannt. ACID-Eigenschaften erhalten einen Berechtigten für alle Datenbanktransaktionen, um alle Aufgaben auszuführen.
Atomizität: Entweder alles oder nichts begehen.
Konsistenz: Machen Sie konsistente Aufzeichnungen in Bezug auf die Validierung aller Regeln und Einschränkungen der Transaktion.
Isolation: Stellen Sie sicher, dass sich zwei Transaktionen nicht bewusst sind.
Haltbarkeit: Festgeschriebene Daten werden für immer gespeichert. Referenz aus diesem Artikel:
quelle
Um Wikipedia zu zitieren :
Ein DBMS, das Transaktionen unterstützt, bemüht sich, alle diese Eigenschaften zu unterstützen - jedes kommerzielle DBMS (sowie mehrere Open-Source-DBMS) bieten vollständige ACID-Unterstützung - obwohl dies häufig möglich ist (z. B. mit unterschiedlichen Isolationsstufen in MSSQL) Verringern Sie die SÄURE - und verlieren Sie so die Garantie für ein vollständiges Transaktionsverhalten.
quelle
[Gray] führte 1981 die ACD-Eigenschaften für eine Transaktion ein. 1983 fügte [Haerder] die Isolation-Eigenschaft hinzu. Meiner Meinung nach hätten die ACD-Eigenschaften einen nützlicheren Satz von Eigenschaften zu diskutieren. Eine Interpretation von Atomicity (dass die Transaktion jederzeit von jedem Client aus gesehen atomar sein sollte) würde tatsächlich die Isolationseigenschaft implizieren. Die Eigenschaft "Isolation" ist nützlich, wenn die Transaktion nicht isoliert ist. wenn die Isolationseigenschaft entspannt ist. In ANSI SQL sprechen: Wenn die Isolationsstufe schwächer ist, dann SERIALIZABLE. Wenn die Isolationsstufe jedoch SERIALIZABLE ist, ist die Isolationseigenschaft nicht wirklich von Interesse.
Ich habe mehr darüber in einem Blog-Beitrag geschrieben: "ACID macht keinen Sinn".
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Gray] Das Transaktionskonzept, Jim Gray, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Haerder] Prinzipien der transaktionsorientierten Datenbankwiederherstellung, Haerder und Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
quelle
Transaktion kann als Sammlung von Aufgaben definiert werden, die als minimale Verarbeitungseinheit betrachtet werden. Jede minimale Verarbeitungseinheit kann nicht weiter unterteilt werden.
Alle Transaktionen müssen vier Eigenschaften enthalten, die allgemein als ACID-Eigenschaften bezeichnet werden. dh ACID ist die Gruppe von Eigenschaften einer Transaktion.
quelle