Schreib-Lese-Konsistenz in Cassandra

9

Die Konsistenz des Read-Your-Own-Writes ist eine große Verbesserung gegenüber der so genannten eventuellen Konsistenz: Wenn ich mein Profilbild ändere, ist es mir egal, ob andere die Änderung eine Minute später sehen, aber es sieht komisch aus, wenn eine Seite neu geladen wird Ich sehe immer noch den alten.

Kann dies in Cassandra erreicht werden, ohne eine vollständige Überprüfung von mehr als einem Knoten durchführen zu müssen?

Die Verwendung von ConsistencyLevel.QUORUM ist in Ordnung, während unspezifizierte Daten gelesen werden und n & gt; 1 Knoten werden tatsächlich gelesen. Wenn der Client jedoch von demselben Knoten liest, in den er schreibt (und tatsächlich dieselbe Verbindung verwendet), kann es verschwenderisch sein - einige Datenbanken werden in diesem Fall immer dafür sorgen, dass die zuvor geschriebenen (meine) Daten zurückgegeben werden und nicht irgendein älteres. Die Verwendung von ConsistencyLevel.ONE stellt sicher, dass nicht dies sicherstellt und davon ausgeht, dass dies zu Rennbedingungen führt. Einige Tests zeigten dies: Ссылка

Mein hypothetisches Setup für dieses Szenario ist 2 Knoten, Replikationsfaktor 2, Lese-Level 1, Schreib-Level 1. Dies führt zu eventueller Konsistenz, aber ich möchte die Konsistenz von Read-Your-Own-Writes lesen liest.

Unter Verwendung von 3 Knoten, RF = 3, RL = Quorum und WL = Quorum führt meiner Meinung nach zu verschwenderischer Leseanfrage, wenn ich nur auf Daten konsistent bin .

// seo: auch bekannt als: Sitzungskonsistenz, Read-after-my-write Konsistenz

    
tillda 28.07.2011, 20:56
quelle

2 Antworten

4

Gute Frage.

Wir hatten Ссылка eine Weile geöffnet, um das hinzuzufügen, aber niemand hat es getan

  1. CL.ONE ist gut für eine Menge Arbeitslasten ohne zusätzliche Gymnastik
  2. Lesevorgänge sind sowieso so schnell, dass das Ausführen eines Extra keine große Sache ist (und Read Repair, das standardmäßig aktiviert ist, bedeutet, dass alle Knoten trotzdem überprüft werden, also ist der Unterschied zwischen CL.ONE und höher wirklich mehr über Verfügbarkeit als Leistung)

Das heißt, wenn Sie motiviert sind zu helfen, fragen Sie auf dem Ticket und ich werde glücklich sein, Sie in die richtige Richtung zu zeigen.

    
jbellis 29.07.2011, 05:35
quelle
0

Ich habe die Entwicklung von Cassandra eine Weile verfolgt und ich habe noch nie ein solches Feature erwähnt.

Wenn Sie nur 2 Knoten mit einem Replikationsfaktor von 2 haben, würde ich fragen, ob Cassandra die beste Lösung ist. Sie werden mit dem gesamten Datenset auf jedem Knoten enden, so dass eine herkömmlich replizierte SQL-Einrichtung einfacher und umfassender getestet werden könnte. Cassandra ist sehr vielversprechend, aber es ist immer noch nur Version 0.8.2 und Probleme werden regelmäßig auf der Mailing-Liste berichtet.

Die andere Möglichkeit, das Problem "sehe meine eigenen Updates" zu lösen, wäre, die Ergebnisse irgendwo näher am Client zwischenzuspeichern, sei es auf dem Webserver, auf der Anwendungsebene oder mit etwas wie memcached.

    
minimalis 28.07.2011 21:34
quelle