10
votes

Quand je supprimai les lignes dans Cassandra, je supprimez uniquement des colonnes non des clés en ligne

Si je supprime toutes les clés d'une famille de colonnes dans un DB Cassandra à l'aide de Supprimer (Clé) , puis si j'utilise get_range_slices , les lignes sont toujours là mais sans colonnes. Comment puis-je supprimer des lignes entières?


0 commentaires

4 Réponses :


6
votes

Pourquoi les touches supprimées apparaissent-elles lors des analyses de gamme?

Parce que get_range_slice dit: "Appliquez ce prédicat à la gamme de lignes données", ce qui signifie que le résultat du prédicat est vide, nous devons inclure un résultat vide pour cette clé de ligne. Il est parfaitement valide pour effectuer une telle requête renvoyant des listes de colonne vides pour certaines ou toutes les touches, même si aucune suppression n'a été effectuée.


2 commentaires

Merci et il n'y a pas de solution pour éviter cela?


Selon wiki.apache.org/cassandra/distributedDelettes , les pierres tombales sont nettoyées toutes les GCGRESCondes, qui est 10 jours par défaut. Les GCGRESSECONDS doivent être le maximum de temps qu'il vous mènera jamais pour obtenir un nœud défaillant. Pour une instance distinguée, vous pouvez définir des GCGRaReconds sur 0, puis les pierres tombales seront supprimées automatiquement.



-3
votes

2 commentaires

-1 Cela n'a pas été "corrigé", le billet vient d'être "résolu" et la résolution est "[peut-être le faire] plus tard". Selon la réponse de @ Schildmeijer, cela est attendu comportement, par opposition à un bogue.


D'accord! Voir les réponses ci-dessous.



1
votes

J'ai testé avec Cassandra 0.63 et le problème est toujours le même. Je ne pense pas que la correction de bugs est de se débarrasser des ID de la rangée supprimée. Voir

http://wiki.apache.org/cassandra/faq#range_ghosts

Pour plus d'informations.


0 commentaires

4
votes

Cassandra utilise des suppressions distribuées comme prévu.

Ainsi, une opération de suppression ne peut pas simplement essuyer toutes les traces des données être enlevé immédiatement: si nous le faisions, et une réplique n'a pas reçu l'opération de suppression, quand elle devient disponible à nouveau, elle traitera les répliques qui ont reçu le Supprimer comme ayant manqué une écriture Mettre à jour et les réparer! Ainsi, au lieu d'effacer les données sur Supprimer, Cassandra le remplace avec une valeur spéciale appelée pierre tombale. Les la pierre tombale peut ensuite être propagée à des répliques qui ont manqué la première Supprimer la demande.

http://wiki.apache.org/cassandra/distributédelettes


0 commentaires