2011-01-03 9 views
9

Was bedeutet Konsistenz in Cassandra, wenn Knoten in einem einzelnen Cluster nicht die Kopien der gleichen Daten enthalten, sondern die Daten unter den Knoten verteilt sind. Jetzt wird ein einzelnes Datenelement an einem einzigen Ort (Knoten) aufgezeichnet. Warum sollte Cassandra nicht den letzten Wert von diesem einzigen Ort der Aufzeichnung zurückgeben? Wie entstehen in dieser Situation mehrere Kopien?Bedeutung der eventuellen Konsistenz in Cassandra?

Antwort

1

Es ist Sache des Kunden, die geeignete Konsistenzstufe zu bestimmen (null, beliebig, eins, quoram oder alle). (Die Konsistenzstufe steuert das Lese- und Schreibverhalten basierend auf Ihrem Replikationsfaktor.) In einem Cluster mit einem Knoten sind die Konsistenzstufen "any", "one", "quorom" und "all" gleichwertig.

+0

aber Konsistenz zwischen welchen Daten?, Da eine einzelne Daten an einem einzigen Ort in einem Cluster befindet .. dort mehrere sind keine Kopien von Daten .. welche Konsistenz? –

+0

In einem Cluster mit einem einzigen Knoten müssen Sie sich keine Gedanken um die Konsistenz machen (solange Sie keine asynchronen Schreibvorgänge ausführen (CL.ZERO, verwenden Sie diesen nicht)). – Schildmeijer

+0

Tut mir leid, ich glaube, Sie haben mich falsch verstanden. Ich meine, in einem Cluster mit mehreren Knoten werden die Daten verteilt/sharded (und ** nicht repliziert **), so dass es keine Mehrfachkopien eines einzelnen Stücks Daten zwischen verschiedenen Knoten gibt in N-Knoten Cassandra-Cluster, wie ist die Konsistenz in diesem Fall definiert, wo es tatsächlich keine Mehrfachkopien gibt? ... ich hoffe, Sie haben meinen Punkt .. –

2

Auch bei Replikationsfaktor = 1 ist die Konsistenz nicht unbedingt unmittelbar, da Schreibvorgänge auf dem Knoten gepuffert werden, an den Sie sie senden, und daher nicht unbedingt sofort an den für diesen Schlüssel zuständigen Knoten gesendet werden.

Aber es hängt davon ab, welche Konsistenzstufe Sie wählen.

Meistens ist der Anwendungsfall für Cassandra mit einem Replikationsfaktor> 1, bei dem Konsistenz eher ein Problem darstellt. RF = 3 scheint eine gemeinsame Einstellung zu sein (wie es erlaubt Quorum liest/mit einem Knoten nicht verfügbar schreibt)

+1

Wie lange kann es dauern, bevor der Schreibvorgang von memtable (Speicherpuffer) auf die Festplatte (= zu verantwortlichen Knoten) gelöscht wird? – Kozuch

0

Cassandra neigt zu Kompromissen Latenz und Konsistenz für die Verfügbarkeit . Es ist "schließlich konsistent", ein Modell für die NoSQL-Datenbankkonsistenz, das bei verteilten Setups verwendet wird. Anstatt eine strikte Konsistenz zu gewährleisten, die die Skalierung wirklich verlangsamen kann, ermöglicht eine mögliche Konsistenz eine hohe Verfügbarkeit - und zwar auf Kosten der einzelnen Daten, die nicht sofort auf allen Servern synchronisiert werden.

2

Die Konsistenz von Cassandra ist einstellbar. Was kann gestimmt werden?
* Anzahl der Knoten, die benötigt werden, um die Daten für Lesevorgänge zu vereinbaren .. R * Anzahl der Knoten, die benötigt werden, um die Daten für Schreibvorgänge zu vereinbaren .. W
Bei 3 Knoten wählen wir 2R und 2W .. dann während eines Lesens, wenn 2 Knoten einen Wert vereinbaren, das ist der wahre Wert. Der 3. kann oder darf nicht den gleichen Wert haben.
Im Fall des Schreibens, wenn 2W gewählt wird, dann wenn Daten auf 2 Knoten geschrieben werden, wird dies als ausreichend angesehen. Dieses Modell ist konsistent.
Wenn R + w < = N wo N ist die Anzahl der Knoten, wird es schließlich konsistent sein.
Cassandra verwaltet einen Zeitstempel mit jeder Spalte und jedem Feld der Spalte, um schließlich konsistent zu werden. Es gibt einen Mechanismus im Hintergrund, um einen konsistenten Zustand zu erreichen.
Aber wie gesagt, wenn R + W> N, dann ist es konsistent solide. Deshalb wird Konsistenz in Cassandra als abstimmbar angesehen.

Verwandte Themen