Когда я удаляю строки в Cassandra, я удаляю только столбцы, а не ключи строк - PullRequest
10 голосов
/ 05 июня 2010

Если я удаляю все ключи в ColumnFamily в базе данных Cassandra, используя remove(key), то, если я использую get_range_slices, строки все еще есть, но без столбцов. Как я могу удалить целые строки?

Ответы [ 4 ]

6 голосов
/ 06 июня 2010

Почему удаленные ключи отображаются во время сканирования диапазона?

Поскольку get_range_slice говорит: «применить этот предикат к диапазону заданных строк», то есть, если результат предиката пуст, мы должны включить пустой ключ для этого ключа строки. Совершенно верно выполнить такой запрос, возвращая пустые списки столбцов для некоторых или всех ключей, даже если не было выполнено ни одного удаления.

4 голосов
/ 20 апреля 2012

Кассандра использует распределенные удаления, как и ожидалось.

Таким образом, операция удаления не может просто стереть все следы данных удаляется сразу: если мы сделали, и реплика не получила операция удаления, когда она снова становится доступной, она будет обрабатывать реплики, которые получили удаление как пропущенные записи обновить и восстановить их! Таким образом, вместо удаления данных об удалении, Кассандра заменяет его особым значением, которое называется надгробие. Могильный камень затем может быть распространен на реплики, которые пропустили начальный удалить запрос.

http://wiki.apache.org/cassandra/DistributedDeletes

1 голос
/ 24 июля 2010

Я тестировал cassandra 0.63, и проблема все та же. Я не думаю, что это исправление ошибок для избавления от идентификаторов удаленных строк. Смотри

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

для получения дополнительной информации.

0 голосов
/ 16 июля 2010

Просто возникла та же проблема, и я обнаружил, что:

Это было исправлено в 0.7 (https://issues.apache.org/jira/browse/CASSANDRA-1027). И backported до 0.6.3

Это также актуально: https://issues.apache.org/jira/browse/CASSANDRA-494

...