Cassandra wechselseitige Ausschlusssperre (Synchronisation)

8

Gibt es überhaupt einen Client, der Cassandra-Funktionen nutzt?

Ich muss einige Operationen ausführen und diese Operationen müssen mit allen anderen Clients synchronisiert werden (gegenseitiger Ausschluss).

In RDBMS kann ich die gesamte Tabelle sperren oder spezielle Tabellen für Synchronisationszwecke vorbereiten und SELECT ... FOR UPDATE dafür verwenden.

Kann ich dies mit Cassandra ohne Drittanbieter-Apps erreichen? Wenn nicht, was ist der beste Weg das zu tun? Bevorzugte Sprachen sind Java und Python.

    
Daimon 17.01.2011, 21:12
quelle

4 Antworten

8

Es ist nicht möglich, eine ganze (oder eine Teilmenge einer) Spaltenfamilie ohne Bibliotheken von Drittanbietern wie Apache ZooKeeper zu sperren.

Ich würde wahrscheinlich anfangen, Domic Williams Käfige zu betrachten, bevor ich meinen eigenen verteilten Sperrmechanismus rolle

    
Schildmeijer 17.01.2011, 21:17
quelle
2

Wenn Sie eine Zeile in einer Spaltenfamilie aktualisieren, ist sie atomar. Aber es funktioniert nicht wie Auswahl für Update. Sie sollten Ihr Datenmodell wahrscheinlich mit mehr Denormalisierung im Auge behalten, damit Sie sich keine Gedanken über die Synchronisierung machen müssen.

    
Pranab 25.01.2011 21:34
quelle
2

Weil C * eine atomare Anordnung auf Zeilenebene bietet, sollten Sie Lamports Bäckeralgorithmus verwenden. Ich habe auch eine unvollständige Seite auf C * wiki gefunden.

Ссылка

    
Praveen 19.05.2012 13:53
quelle
0

Ich habe auch nach Möglichkeiten gesucht, um mit Cassandra zu synchronisieren, aber soweit ich weiß, bietet es keine Mechanismen zur Implementierung von Mutexen.

memcached hat jedoch eine atomare cas-Operation (check and set), mit der Mutex implementiert werden kann. Es hat auch Python- und Java-Clients.

Sie könnten also memcached verwenden, um Mutexe für die Synchronisation zu implementieren, und lesen / schreiben Daten mit der Konsistenz des Quorums in Cassandra, um sicherzustellen, dass der letzte Schreibvorgang immer beim Lesen zurückgegeben wird.

Hat jemand Erfahrung mit der Implementierung von Mutex mit memcached?

    
Mikael Lepistö 19.03.2011 21:01
quelle