2015-04-05 1 views
4

J'ai lu que les transactions légères prennent uniquement en charge les instructions update et insert avec une clause "if" et "if exists". Est-ce qu'ils supportent aussi l'instruction delete avec la clause "if exists".Est-ce que les transactions légères supportent l'instruction delete avec if exists?

Par exemple: créer utilisateur de table (texte userid, texte e-mail, clé primaire (email))

supprimer de l'utilisateur où userid = 'kris' si existe

Est-ce que les opérations légères soutiennent la déclaration suppression ci-dessus? La vraie question est: pourquoi en avez-vous besoin?

Répondre

1

Le compare and set est utile pour gérer les conditions de course - par exemple: je ne veux pas que deux utilisateurs enregistrent avec le même nom d'utilisateur. De cette façon, une deuxième tentative d'enregistrement avec le même nom d'utilisateur échouera. Mais pourquoi supprimer une donnée si elle existe quand deux opérations de suppression sont idempotentes sur vos données? une suppression a implicite IF IT EXISTS condition

+3

salut Carlo, merci pour la réponse. J'ai un coupon qui doit être alloué à un utilisateur. Le premier utilisateur qui accède au coupon et supprime le coupon pourra le racheter. Il pourrait donc y avoir 2 demandes simultanées pour lire et supprimer le coupon, ce qui signifie que j'ai attribué le même coupon à 2 utilisateurs. Si une demande trouve le coupon supprimé, il doit demander un autre coupon valide. – kris433

4

Oui, l'instruction CQL DELETE prend en charge la clause IF EXISTS. Depuis le DELETE documentation:

Dans Cassandra 2.0.7 et versions ultérieures, vous pouvez supprimer des colonnes conditionnellement à l'aide de IF ou IF EXISTS. La suppression d'une colonne est similaire à la création d'une insertion ou d'une mise à jour conditionnelle. Les suppressions conditionnelles entraînent un coût de performance non négligeable et doivent être utilisées avec parcimonie.

Cependant, pour le point de Carlo, prenez note de cette dernière phrase. Du point de vue des performances, la suppression conditionnelle n'est pas gratuite.