Video: Acids + Bases Made Easy! Part 1 - What the Heck is an Acid or Base? - Organic Chemistry 2024
Ein Kennzeichen relationaler Datenbanksysteme ist die sogenannte ACID-Konformität. Wie Sie vielleicht schon erraten haben, ist ACID ein Akronym - die einzelnen Buchstaben, die ein Merkmal einzelner Datenbanktransaktionen beschreiben sollen, können wie in dieser Liste beschrieben erweitert werden:
-
Atomizität: Die Datenbanktransaktion muss vollständig sein erfolgreich oder komplett scheitern. Teilerfolg ist nicht erlaubt.
-
Konsistenz: Während der Datenbanktransaktion schreitet das RDBMS von einem gültigen Status in einen anderen fort. Der Zustand ist niemals ungültig.
-
Isolierung: Die Datenbanktransaktion des Clients muss isoliert von anderen Clients stattfinden, die versuchen, mit dem RDBMS Transaktionen durchzuführen.
-
Haltbarkeit: Die Datenoperation, die Teil der Transaktion war, muss in nichtflüchtigem Speicher (Computerspeicher, der gespeicherte Informationen abrufen kann, auch wenn er nicht mit Strom versorgt wird - wie eine Festplatte) widergespiegelt werden. Die Transaktion wird erfolgreich abgeschlossen. Bei Transaktionsfehlern können die Daten nicht teilweise übergeben werden.
Bestimmte Anwendungsfälle für RDBMS, wie die Online-Transaktionsverarbeitung, hängen von ACID-kompatiblen Transaktionen zwischen dem Client und dem RDBMS ab, damit das System ordnungsgemäß funktioniert. Ein großartiges Beispiel für eine ACID-konforme Transaktion ist die Übertragung von Geldbeträgen von einem Bankkonto auf ein anderes.
Dies unterteilt sich in zwei Datenbanktransaktionen, wobei das ursprüngliche Konto eine Auszahlung und das Zielkonto eine Einzahlung anzeigt. Offensichtlich müssen diese zwei Transaktionen miteinander verknüpft werden, um gültig zu sein, so dass, wenn einer von ihnen scheitert, der gesamte Vorgang nicht sicherstellen kann, dass beide Salden gültig bleiben.
Hadoop selbst hat keine Vorstellung von Transaktionen (oder gar Datensätzen), also ist es eindeutig kein ACID-konformes System. Spezifischer im Hinblick auf Datenspeicherungs- und -verarbeitungsprojekte im gesamten Hadoop-Ökosystem ist keiner von ihnen vollständig ACID-kompatibel. Allerdings weisen Eigenschaften auf, die häufig in NoSQL-Datenspeichern zu finden sind. Daher gibt es einige Präzedenzfälle für den Hadoop-Ansatz.
Ein Schlüsselkonzept hinter NoSQL-Datenspeichern ist, dass nicht jede Anwendung wirklich ACID-konforme Transaktionen benötigt. Die Entspannung bei bestimmten ACID-Eigenschaften (und die Abkehr vom relationalen Modell) hat eine Fülle von Möglichkeiten eröffnet, die es einigen NoSQL-Datenspeichern ermöglicht haben, eine enorme Skalierbarkeit und Leistung für ihre Nischenanwendungen zu erreichen.
Während ACID die Schlüsselmerkmale definiert, die für eine zuverlässige Transaktionsverarbeitung erforderlich sind, benötigt die NoSQL-Welt unterschiedliche Merkmale, um Flexibilität und Skalierbarkeit zu ermöglichen.Diese gegensätzlichen Eigenschaften sind geschickt im Akronym BASE erfasst:
-
B asisch A vailable: Das System ist garantiert für die Abfrage durch alle Benutzer verfügbar. (Hier keine Isolation.)
-
S oft Status: Die im System gespeicherten Werte können sich aufgrund des eventuellen Konsistenzmodells ändern, wie im nächsten Punkt beschrieben.
-
E technisch konsistent: Wenn dem System Daten hinzugefügt werden, wird der Systemstatus schrittweise über alle Knoten hinweg repliziert. Wenn beispielsweise in Hadoop eine Datei in das HDFS geschrieben wird, werden die Replikate der Datenblöcke in verschiedenen Datenknoten erstellt, nachdem die ursprünglichen Datenblöcke geschrieben wurden. Für den kurzen Zeitraum, bevor die Blöcke repliziert werden, ist der Status des Dateisystems nicht konsistent.
Das Akronym BASE ist ein bisschen künstlich, da die meisten NoSQL-Datenspeicher alle die ACID-Eigenschaften nicht vollständig aufgeben - es ist nicht wirklich das polare Gegenteil, das der Name impliziert. Auch der Soft State und die Eventually Consistent-Merkmale sind gleichbedeutend mit dem gleichen Sachverhalt, aber der Punkt ist, dass das System durch relaxierende Konsistenz das Skalieren (viele Knoten) horizontal durchführen und die Verfügbarkeit sicherstellen kann.
Keine Diskussion von NoSQL wäre vollständig, ohne das CAP-Theorem zu erwähnen, das die drei Arten von Garantien darstellt, die Architekten in ihren Systemen anbieten wollen:
-
Konsistenz: Ähnlich wie bei C in ACID sind alle Knoten in das System hätte zu jeder Zeit die gleiche Sicht auf die Daten.
-
Verfügbarkeit: Das System antwortet immer auf Anfragen.
-
Partitionstoleranz: Das System bleibt online, wenn Netzwerkprobleme zwischen den Systemknoten auftreten.
Das CAP-Theorem besagt, dass Architekten in verteilten vernetzten Systemen zwei dieser drei Garantien auswählen müssen - Sie können Ihren Benutzern nicht alle drei versprechen. Damit bleiben Ihnen drei Möglichkeiten offen:
-
Systeme, die traditionelle relationale Technologien verwenden, sind normalerweise nicht partitionstolerant, sodass sie Konsistenz und Verfügbarkeit garantieren können. Kurz gesagt, wenn ein Teil dieser traditionellen relationalen Technologiesysteme offline ist, ist das gesamte System offline.
-
Systeme, bei denen Partitionstoleranz und -verfügbarkeit von primärer Bedeutung sind , können keine Konsistenz garantieren, da Updates (der Zerstörer der Konsistenz) auf beiden Seiten der Partition vorgenommen werden können. Die Schlüsselwert-Shops Dynamo und CouchDB und der Spaltenfamilienspeicher Cassandra sind beliebte Beispiele für partitionssensitive / Verfügbarkeits- (PA) Systeme.
-
Systeme, bei denen Partitionstoleranz und -konsistenz von primärer Bedeutung sind können die Verfügbarkeit nicht garantieren, da die Systeme Fehler zurückgeben, bis der partitionierte Zustand aufgelöst ist.
Hadoop-basierte Datenspeicher gelten als CP-Systeme ( c onistent und p artitionstolerant). Bei redundant über viele Slave-Knoten gespeicherten Daten können Ausfälle zu großen Teilen (Partitionen) eines Hadoop-Clusters toleriert werden. Hadoop wird als konsistent angesehen, da es über einen zentralen Metadatenspeicher (NameNode) verfügt, der eine einzige konsistente Sicht auf die im Cluster gespeicherten Daten aufrechterhält.