1

Ich bin verwirrt mit cassandra schließlich Konstanz vs Abfrage-Sequenzierung, ich habe folgende FragenCassandra Abfrageausführungs Sequenzierung vs Eventual Consistency Problem

  1. Wenn ich 2 Abfragen nacheinander senden (ohne auf isIdempotent Eigenschaft zu Drehen). Die erste Abfrage besteht darin, Datensatz zu löschen, und die zweite Abfrage erstellt Datensätze. Ist es möglich, dass die Abfrage 2 vor Abfrage 1 ausgeführt wird?

mein Java-Code wird wie folgt aussehen

public void foo(){ 
    delete(entity);//First delete a record 
    create(entity); //Second create a record 
} 

eine andere Sache, die ich nicht Zeitstempel in meiner Anfrage am angeben.

2) Meine zweite Frage ist, Cassandra ist schließlich konsistent. Und wenn ich beide obigen Abfragen in sequentieller Reihenfolge sende und es nicht auf alle Knoten repliziert wird, behalten diese Abfragen die Reihenfolge, wenn sie tatsächlich auf alle Knoten repliziert werden?

Ich habe versucht, Cassandra Dokumentation zu sehen, obwohl es über die Abfolge der Abfrage in Batch-Operationen, aber es spricht nicht über die Abfolge der Abfrage in nicht-Batch-Betrieb.

Ich bin mit Cassandra 2.1

+0

Blick auf LWT. Beachten Sie, dass Sie dies für die meisten Anwendungsfälle wahrscheinlich nicht benötigen. – phact

+0

Eigentlich möchte ich wissen, wie die Sequenzierung in Cassandra ohne lwt funktioniert –

+0

Letztes Schreiben gewinnt nach Timestamp – phact

Antwort

0

standardmäßig in modernen Versionen verwenden wir Client-Seite Zeitstempel. Überprüfen Sie die Treiber-Dokumentation hier:

https://datastax.github.io/java-driver/manual/query_timestamps/

auf dem Zeitstempel Basierend, C * unter Verwendung betreibt LWW Heuristiken (letzte Schreib gewinnt), wenn das erstellen hat einen früheren Zeitstempel als die Lösch-, eine Abfrage keine Daten zurückgegeben. Wenn das Erstellen einen neueren Zeitstempel hat, wird es.

Wenn Sie Linearisierungs benötigen, das heißt die Garantie, dass bestimmte Operationen nacheinander ausgeführt werden, können Sie leichte Transaktionen basierend auf paxos verwenden:

http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0