Wenn wir über das verteilte Datenbanksystem nosql sprechen, wissen wir, dass alle unter die zwei von drei CAP-Theoramen fallen. Für einen verteilten Cluster, bei dem ein Netzwerkausfall und ein Knotenausfall unvermeidbar sind, ist eine Partitionstoleranz notwendig, so dass wir uns für eine Verfügbarkeit und Konsistenz entscheiden müssen. Also ist es im Grunde CP oder AP.
Meine Fragen sind
Unter welcher Kategorie fällt hadoop ein?
Nehmen wir an, ich habe einen Cluster mit 6 Knoten ABC und DEF. Bei einem Netzwerkausfall werden Knoten A, B, C und Knoten D, E, F in zwei unabhängige Cluster unterteilt.
Nun wird in einem konsistenten und partitionstoleranten Systemmodell (CP), da eine Aktualisierung in Knoten A nicht auf Knoten D repliziert wird, die Konsistenz des Systems dem Benutzer nicht erlauben, Daten zu aktualisieren oder zu lesen, bis das Netzwerk wieder läuft Datenbank down.
Während ein verfügbares und partitionstolerantes System es dem Benutzer von Knoten D erlauben würde, die alten Daten zu sehen, wenn eine Aktualisierung an Knoten A vorgenommen wird, garantiert er dem Benutzer von Knoten D jedoch nicht die neuesten Daten. Aber nach einer gewissen Zeit, wenn das Netzwerk wieder läuft, repliziert es die neuesten Daten von Knoten A in Knoten D und ermöglicht somit dem Benutzer von Knoten D, die neuesten Daten zu sehen.
Aus den obigen zwei Szenarien können wir schließen, dass es in einem AP-Modell keinen Spielraum für die Datenbank gibt, so dass der Benutzer auch während eines Fehlers schreiben und lesen kann und dem Benutzer die neuesten Daten verspricht, wenn das Netzwerk wieder läuft für konsistente und partitionstolerante Modelle (CP). Aus meiner Sicht während eines Netzwerkausfalls (AP) hat einen Vorteil gegenüber (CP), so dass der Benutzer Daten lesen und schreiben kann, während die Datenbank unter (CP) inaktiv ist.
Gibt es ein System, das CAP zusammen bereitstellen kann, ohne das Konzept der Konsistenz von Cassandra zu berücksichtigen?
Wann wählt ein Benutzer Verfügbarkeit statt Konsistenz? Gibt es irgendeine Datenbank, die es dem Benutzer ermöglicht, seine Wahl entsprechend zwischen CP und AP umzuschalten?
Vielen Dank im Voraus:)
HDFS hat einen eindeutigen zentralen Entscheidungspunkt, den namenode
. Als solches kann es nur in die CP-Seite fallen, da das Herunterfahren des Namenkodes das gesamte HDFS-System herunterlädt (keine Verfügbarkeit). Hadoop versucht nicht, dies zu verbergen:
Der NameNode ist ein Single Point of Failure für den HDFS-Cluster. HDFS ist derzeit kein Hochverfügbarkeitssystem. Wenn der NameNode ausfällt, wird das Dateisystem offline geschaltet. Es gibt einen optionalen SecondaryNameNode, der auf einem separaten Computer gehostet werden kann. Es erstellt nur Checkpoints des Namespace, indem die Editierdatei in die fsimage-Datei zusammengeführt wird und keine echte Redundanz bietet .
Da die Entscheidung, wo Daten platziert werden sollen und wo sie gelesen werden kann, immer durch den Namenknoten erfolgt, der eine konsistente Ansicht im Speicher beibehält, ist HDFS immer konsistent (C). Es ist auch partitionstolerant, da es Datenverlustknoten bewältigen kann, abhängig von Replikationsfaktor und Datentopologiestrategien.
Gibt es ein System, das CAP zusammen bereitstellen kann?
Ja, solche Systeme werden oft in Marketing- und anderen nichttechnischen Veröffentlichungen erwähnt.
Wann wählt ein Benutzer Verfügbarkeit statt Konsistenz?
Dies ist eine geschäftliche Anwendungsfallentscheidung. Wenn Verfügbarkeit wichtiger ist, wählen sie AP. Wenn Konsistenz wichtiger ist, wählen sie CP. Im Allgemeinen, wenn Geld den Besitzer wechselt, hat die Konsistenz Vorrang. Fast jeder andere Fall favorisiert die Verfügbarkeit.
Gibt es eine Datenbank, die es dem Benutzer ermöglicht, seine Wahl entsprechend zwischen CP und AP zu wechseln?
Systeme, mit denen Sie sowohl die Schreib- als auch die Lesequorum ändern können, können je nach Bedarf entweder als CP oder AP eingestellt werden.