Если я удаляю все ключи в ColumnFamily в базе данных Cassandra, используя remove(key), то, если я использую get_range_slices, строки все еще есть, но без столбцов. Как я могу удалить целые строки?
remove(key)
get_range_slices
Почему удаленные ключи отображаются во время сканирования диапазона?
Поскольку get_range_slice говорит: «применить этот предикат к диапазону заданных строк», то есть, если результат предиката пуст, мы должны включить пустой ключ для этого ключа строки. Совершенно верно выполнить такой запрос, возвращая пустые списки столбцов для некоторых или всех ключей, даже если не было выполнено ни одного удаления.
Кассандра использует распределенные удаления, как и ожидалось.
Таким образом, операция удаления не может просто стереть все следы данных удаляется сразу: если мы сделали, и реплика не получила операция удаления, когда она снова становится доступной, она будет обрабатывать реплики, которые получили удаление как пропущенные записи обновить и восстановить их! Таким образом, вместо удаления данных об удалении, Кассандра заменяет его особым значением, которое называется надгробие. Могильный камень затем может быть распространен на реплики, которые пропустили начальный удалить запрос.
http://wiki.apache.org/cassandra/DistributedDeletes
Я тестировал cassandra 0.63, и проблема все та же. Я не думаю, что это исправление ошибок для избавления от идентификаторов удаленных строк. Смотри
http://wiki.apache.org/cassandra/FAQ#range_ghosts
для получения дополнительной информации.
Просто возникла та же проблема, и я обнаружил, что:
Это было исправлено в 0.7 (https://issues.apache.org/jira/browse/CASSANDRA-1027). И backported до 0.6.3
Это также актуально: https://issues.apache.org/jira/browse/CASSANDRA-494