2015-04-08 5 views
1

Lorsque je supprime une ligne de Kassandra et les données qui vit encore en memtable (pas SSTable a été créé pour l'instant), il semble que cette ligne supprimée est ne jamais se nettoyer dans memtable depuis le nettoyage de la pierre tombale est seulement fait par compactage et compactage ne s'applique qu'à SSTables. Y at-il de toute façon que je puisse nettoyer complètement cette ligne supprimée de memtable elle-même, avant de la rincer à SSTable? Les mises à jour sont en place mais ne ressemblent pas à des suppressions.nettoyage pierres tombales cassandra de memtable

Nous utilisons Cassandra 2.0.8.

Merci

Répondre

3

Si vous avez RF> 1, les pierres tombales doivent encore être persisté sur le disque pour faire en sorte que la suppression a été transmise en toute sécurité à toutes les répliques. Par exemple, considérer les points suivants:

RF = 3 N = 3

Vous avez une table d'employés à tirer à la fin du mois. Vous ajoutez John Smith à la liste des employés à terminer. Deux minutes plus tard, John Smith fait quelque chose de génial, et vous voulez le retirer de la liste. Vous supprimez son entrée, mais l'un des trois nœuds est hors ligne. John Smith figure toujours dans la liste des employés à déclencher pour ce nœud hors ligne. Lorsque la mémoire memtable flush sur l'un des nœuds «en haut», il persistera la pierre tombale indiquant que John Smith ne devrait pas être viré, parce que lorsque ce serveur hors ligne, il doit savoir que le travail de John Smith est sûr. La compression finira par supprimer la pierre tombale après gc_grace_seconds, mais le comportement sous-jacent est correct: si vous écrivez une cellule, puis la supprimez immédiatement, vous devez tout de même sauvegarder la pierre tombale sur le disque pour vous assurer que toutes les répliques suppriment correctement cette cellule.

+0

Je suis d'accord avec votre commentaire, mais Datastax Enterprise prend en charge le mode InMemory qui devrait essentiellement faire la même chose. Nous avons des données transitoires qui s'intégreraient parfaitement dans la mémoire et n'auraient jamais besoin de vider les données sur le disque. Ca aurait été bien si Cassandra supportait le compactage en mémoire. – ppeddi