Je sais que dans Cassandra, il n'y a pas de cohérence forte sauf si vous le demandez explicitement (et même alors, il n'y a pas de transactions).Cassandra - ordre de cohérence
Cependant, je m'intéresse à l '"ordre" de la cohérence. Prenez l'exemple suivant:
Dans un noeud de base de données, il existe 3 noeuds (A, B et C). Deux requêtes d'insertion sont envoyées via la même connexion CQL (ou d'ailleurs, je ne pense pas que cela soit pertinent pour cette question). Les deux fonctionnent sur différents tableaux (cela pourrait être pertinent).
INSERT INTO table_a (id) VALUES (0)
INSERT INTO table_b (id) VALUES (1)
Directement après que les questions ont été exécutées avec succès sur le nœud auquel elles sont envoyées, elles tombent en panne. Le nœud peut ou non avoir réussi à propager ces deux requêtes à B et C.
Maintenant, je pense qu'il y a un ordre de cohérence. Les deux sont propogués et exécutés avec succès sur B et C, ou seulement la première requête est, ou les deux sont. Je pense que, en aucun cas seulement la requête deuxième est propogated et exécuté, et pas le premier (en raison de l'ordre des paquets tcp, et le fait que évidemment, tous les nœuds partagent la même stratégie de cohérence).
Ai-je raison?
Totalement oublié le fait qu'il est multithread. Est-ce que les lots sont propogés aux répliques en lots ou est-il seulement garanti d'être atomique sur le premier nœud (celui auquel je me connecte)? – elslooo
Un lot contiendra des lignes pour des noeuds arbitraires. Cassandra garantira que le lot est atomique en le pré-répliquant essentiellement (http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2) mais dans l'ordre dans lequel il écrit dans le le lot est appliqué est indéfini. – jbellis