Je crains qu'il n'y ait pas d'alternatives. Les instructions conditionnelles dans un environnement BATCH
sont limitées à une seule table et je ne pense pas que des modifications soient possibles dans le futur.
Cela est dû à la façon dont Cassandra fonctionne en interne: un lot contenant une mise à jour conditionnelle (il est appelé transaction légère) ne peut être utilisé dans une partition, car ils sont basés sur la mise en œuvre Paxos, parce que le Paxos se travaille à niveau de partition seulement. De plus, dans un lot avec plusieurs instructions conditionnelles dans le même BATCH, toutes les conditions doivent être vérifiées pour que le lot réussisse. Même si une (et seulement) mise à jour conditionnelle échoue, le lot entier échouera.
Vous pouvez en savoir plus sur les instructions BATCH
dans le.
Vous obtiendrez essentiellement un succès de performance pour la mise à jour conditionnelle, et un coup de performance pour une opération par lots, et C * vous empêche d'aller si loin.
Il me semble que vous l'avez conçu comme un SGBDR. Une solution alternative sans SQL, je ne sais pas si elle peut être appliquée à votre cas d'utilisation, vous pourriez dénormaliser vos données dans une 4ème table qui combine les 3 autres tables, puis fournir une seule mise à jour à cette 4ème table .