Si votre application est idempotente, vous n'aurez généralement pas besoin d'utiliser la clause IF coûteuse, car tous vos clients essaieront de définir la même valeur. Par exemple, supposons que vos clients ont agrandi certaines valeurs et écrit le résultat dans une table de déploiement. Chaque client calcule le même total et écrit la même valeur, donc peu importe si plusieurs clients lui ont écrit, ou quel ordre ils lui ont écrit, car ce serait la même valeur.
Si vous recherchez réellement une exclusion mutuelle, telle que le maintien d'un solde bancaire, la clause IF peut être utilisée. Vous pouvez lire une ligne pour obtenir le solde actuel, puis soustraire de l'argent et mettre à jour le solde uniquement si le solde n'a pas changé depuis que vous l'avez lu. Si un autre client essayait d'ajouter un dépôt en même temps, alors il échouerait et devrait essayer à nouveau. Une autre manière de le faire sans exclusion mutuelle consiste à écrire chaque retrait et dépôt comme une ligne de transaction groupée séparée, puis à calculer le solde comme résultat idempotent de l'application de toutes les lignes de transaction.
Vous pouvez utiliser la clause IF pour les écritures idempotentes, mais cela semble inutile. Le premier client à faire l'écriture réussirait et Cassandra retournerait la valeur "appliqué = Vrai". Et le prochain client à essayer la même écriture reviendrait "appliqué = Faux, version = 4", indiquant que la ligne avait déjà été mise à jour à la version 4, donc rien n'a été changé.