Wie viel Marketing kostet ACID?

Hallo alle zusammen. In Kontakt Vladislav Rodin. Ich bin derzeit Leiter des High Load Architect-Kurses bei OTUS und unterrichte auch Kurse über Softwarearchitektur.

Wie Sie vielleicht bemerkt haben, unterrichte ich neben dem Unterrichten auch urheberrechtlich geschütztes Material für den OTUS-Blog auf dem Haber und möchte mit dem heutigen Artikel zusammenfallen, um den Kurs "Datenbanken" zu starten , der jetzt für die Rekrutierung offen ist.




Vorwort


Transaktionen erschienen in den 70er Jahren und wurden als Datenbank-Tool zur Lösung der Probleme der Fehlertoleranz und des Datenzugriffs in einem Wettbewerbsumfeld vorgestellt. Dann wurde eine Reihe von Eigenschaften formuliert, die eine Transaktion besitzen muss, um die ihr zugewiesenen Aufgaben zu erfüllen, und die Großbuchstaben dieser Eigenschaften, die in der richtigen Reihenfolge festgelegt wurden, bildeten das schöne Akronym ACID.

Der Zeitraum, in dem diese Ereignisse stattfanden, war durch das Fehlen hoher Lasten, das Internet und Leistungsprobleme gekennzeichnet, die nur durch vertikale Skalierungsmethoden gelöst werden konnten. In den frühen 2000er Jahren trat in NoSQL-Datenbanken ein Trend auf, die Abkürzung BASE, die eigentlich der klassischen ACID (ACID - Säure, BASE - Alkali) entgegengesetzt war. Jetzt gibt es einen umgekehrten Trend für ACID. Sogar NoSQLs MongoDB unterstützt jetzt ACID.

Schauen wir uns an, was diese Abkürzung bedeutet und wie viel Marketing sie hat.

ACID repräsentiert 4 Eigenschaften:

A = Atomizität
C = Konsistenz
I = Isolation
D = Haltbarkeit

Lassen Sie uns nun über jede Eigenschaft einzeln sprechen.

A = Atomizität


Atomizität ist ein überladener Begriff und kann im Zusammenhang mit Transaktionen in einer Datenbank als das Prinzip "alles oder nichts" formuliert werden. Wenn Ihre Transaktion 10 Einfügevorgänge enthält, werden alle 10 ausgeführt (Festschreibungstransaktionen werden ausgeführt) oder keine davon (Rollback-Transaktionen werden ausgeführt).

Wie wird diese Eigenschaft zur Verfügung gestellt? Tatsache ist, dass sich die Daten nicht ändern, wenn eine Transaktion mit denselben 10 Einfügungen in die Datenbank eingeht. Vor einer Transaktion wird die Transaktion direkt in die Daten in einem Protokoll geschrieben, in dem die von ihr vorgenommenen Änderungen aufgezeichnet werden. Dieses Journal kann auch zum Replizieren von Daten verwendet werden, oder es kann völlig unabhängig davon sein, wie ich zum Beispiel hier beschrieben habe. Dank dieses Journals können Transaktionen direkt für die Daten festgeschrieben oder in diesem Fall zurückgesetzt werden. Die Regel, dass eine Transaktion so schnell wie möglich geschlossen werden sollte, ergibt sich direkt aus dem Verständnis der Grundsätze für die Implementierung dieser Eigenschaft: Datenbanken dürfen dieses Protokoll häufig nicht bereinigen, während eine Transaktion geöffnet ist, sodass es verstopfen kann, was wiederum zu sehr unangenehmen Konsequenzen führt.

C = Konsistenz (Konsistenz oder Integrität)


In Bezug auf ACID bedeutet Konsistenz nicht dasselbe wie im Sinne des CAP-Theorems (in der Theorie verteilter Systeme gibt es viele Grade dieser Konsistenz). Mit Konsistenz meinen wir Folgendes: Einige vordefinierte Invarianten des Systems müssen sowohl vor als auch nach der Festschreibungstransaktion ausgeführt werden. Beispiele für Systeminvarianten können dargestellt werden: Die Belastung konvergiert mit dem Darlehen, das Gesamtgehalt der Mitarbeiter überschreitet nicht das Budget, die Anzahl der Mitarbeiter im Unternehmen entspricht der Anzahl der zuvor offenen Stellen usw. In der Datenbanksprache bedeutet dies nur die Erfüllung aller Einschränkungen.

Die Frage nach der Notwendigkeit der Konsistenz auf Datenbankebene ist ziemlich kontrovers, da das Vorhandensein von Einschränkungen darauf hinweisen kann, dass ein Teil der Geschäftslogik von der Anwendung auf die Datenbankebene verschoben wurde, was nicht allgemein als bewährte Methode anerkannt ist. Am Ende kann die Anwendung selbst entscheiden, keine ungültigen Daten festzuschreiben. Es gibt eine Meinung, dass Konsistenz nur hinzugefügt wurde, um die Abkürzung schön zu machen (Marketing).

Ich = Isolation


Isolation ist eine Datenbankeigenschaft, mit der parallele Transaktionen sequentiell ausgeführt werden können. Schließlich verbietet niemand der Datenbank, mehrere Transaktionen gleichzeitig auszuführen. Es muss sichergestellt werden, dass sie sich nicht gegenseitig beeinflussen, damit keine Anomalien der Form der Rennbedingungen auftreten. Tatsächlich ist es die Isolation, die das Problem des Datenzugriffs in einem Wettbewerbsumfeld löst.

Die Offenlegung des Begriffs der Isolation aufgrund seines Umfangs verdient einen gesonderten Artikel., weil gerade die Isolation das Herz von ACID genannt werden kann. Der Preis für Transaktionsfähigkeit hängt oft vom Preis für die Gewährleistung der Isolation ab, weshalb die Isolation unterschiedliche Ebenen aufweist, von denen jede ihren eigenen Schutz gegen Rennbedingungen bietet und den einen oder anderen Aufwand mit sich bringt. Die Isolation ist nur auf der serialisierbaren Ebene vollständig gewährleistet, was sehr schwierig zu implementieren ist und selten benötigt wird.

D = Haltbarkeit


Die Haltbarkeit sagt uns, dass eine Transaktion, wenn sie angewendet wurde, auf keinen Fall verschwinden sollte. Tatsächlich bedeutet dies Folgendes: Wenn die Datenbank geantwortet hat, dass eine Transaktion festgeschrieben wurde, wurde die Transaktion in den nichtflüchtigen Speicher festgeschrieben. Dies bedeutet, dass der fsync-Systemaufruf aufgetreten ist, dh die Puffer wurden auf die Festplatte geleert und mit OK beantwortet.

Haltbarkeit ist auch ein Marketingbegriff, da er nicht vollständig bereitgestellt werden kann. Selbst wenn wir die künstlichen Szenarien des „Brennens der Erde durch Außerirdische“ verwerfen, nach denen es überhaupt keine Datenbanken oder Transaktionen mehr gibt, eher extreme Szenarien der physischen Zerstörung einer bestimmten Festplatte, auf der die Transaktion aufgezeichnet wurde, können wir uns daran erinnern, dass der Aufruf des fsync-Systems Garantien bietet Schlagen einer Festplatte in der Steuerung, die wiederum noch einen flüchtigen Puffer enthält. Die dafür aufgewendete Zeit ist kurz, aber nicht gleich 0. Wenn Sie den Strom genau zum „richtigen“ Zeitpunkt abschalten, kann die Transaktion dennoch verloren gehen!

Obwohl das Problem mit fsync in einer teuren Oracle-Datenbank gelöst wurde, kann uns nichts vor den Problemen schützen, die mit der physischen Zerstörung des Computers verbunden sind. Wir können Garantien nur durch Backups und Replikation erhöhen .

Ergebnisse


Trotz der Tatsache, dass ACID sehr interessante Eigenschaften wie Atomizität und Isolation bietet, sind einige dieser Eigenschaften nur Marketingzwecke und sogar für ihre Genauigkeit im Vergleich zu BASE bekannt. ACID stellt jedoch nicht vollständig sicher, dass keine Transaktionsverluste möglich sind und dass sich die Ergebnisse auswirken gleichzeitige Transaktionen untereinander ausführen (Isolation muss noch konfiguriert werden!).


Wir laden alle zu einer kostenlosen Lektion zum Thema ein: "Ein Modell für die Arbeit mit Daten in PostgreSQL . "



All Articles