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
// seo: auch bekannt als: Sitzungskonsistenz, Read-after-my-write Konsistenz
Gute Frage.
Wir hatten Ссылка eine Weile geöffnet, um das hinzuzufügen, aber niemand hat es getan
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.
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.
Tags und Links cassandra consistency eventual-consistency