Si je supprime toutes les clés d'une ColumnFamily dans une base de données Cassandra en utilisant remove(key)
, alors si j'utilise get_range_slices
, les lignes sont toujours là mais sans colonnes. Comment pourrais-je supprimer des lignes entières?Lorsque je supprime des lignes dans Cassandra je supprime uniquement les colonnes non les clés de ligne
Répondre
Juste été d'avoir la même question et je trouve que:
Cela a été fixé à 0,7 (https://issues.apache.org/jira/browse/CASSANDRA-1027). Et rétroportés à 0.6.3
Ceci est également important: https://issues.apache.org/jira/browse/CASSANDRA-494
Why do deleted keys show up during range scans?
Comme dit get_range_slice, « appliquer ce prédicat à la gamme de lignes donné, » ce qui signifie, si le résultat prédicat est vide, nous devons inclure un résultat vide pour cette touche de ligne. Il est parfaitement possible d'exécuter une telle requête en renvoyant des listes de colonnes vides pour certaines ou toutes les clés, même si aucune suppression n'a été effectuée.
Merci et il n'y a pas de solution pour éviter cela? – Matroska
Selon http://wiki.apache.org/cassandra/DistributedDeletes, les pierres tombales sont nettoyées tous les GCGraceSeconds, soit 10 jours par défaut. GCGraceSeconds devrait être le temps maximum qu'il vous faudra pour récupérer un nœud défectueux. Pour une instance unique, vous pouvez définir GCGraceSeconds sur 0, puis les pierres tombales seront automatiquement supprimées. –
J'ai testé avec cassandra 0,63 et le problème est toujours le même. Je ne pense pas que ce correctif est pour se débarrasser des identifiants de lignes supprimées. Voir
http://wiki.apache.org/cassandra/FAQ#range_ghosts
pour plus d'informations.
Cassandra utilise des suppressions réparties comme prévu.
Ainsi, une opération de suppression ne peut pas simplement effacer toute trace des données enlevée immédiatement: si nous avons fait, et une réplique n'a pas reçu l'opération de suppression, quand il est à nouveau disponible, il traitera les répliques qui ont reçu la suppression comme ayant raté une mise à jour en écriture , et réparez-les! Ainsi, au lieu d'effacer les données lors de la suppression, Cassandra le remplace par une valeur spéciale appelée une pierre tombale. La pierre tombale peut ensuite être propagée à des répliques qui ont raté la demande de suppression initiale .
-1 Cela n'a pas été "corrigé", le ticket vient d'être "résolu" et la résolution est "[peut-être le faire] plus tard". Selon la réponse de @ Schildmeijer, c'est un comportement attendu, par opposition à un bug. – user359996
D'accord! Voir les réponses ci-dessous. –