2013-11-28 4 views
3

У нас есть счетчик колонки семьи, что-то вроде этого: создать столбец семьи visits_counter_cf с key_validation_class = UTF8Type и компаратор = 'CompositeType (LongType, LongType, UTF8Type)' и default_validation_class = CounterColumnType ;Удаление всей строки из Cassandra семьи счетчик колонки

Когда мы удаляем строку из этого семейства столбцов (мы используем Hector) в CLI, он выглядит удаленным Но тогда, когда мы увеличиваем счетчики в одной строке (той же строке), он продолжает увеличивать счетчики от предыдущих значений счетчика (значения перед удалением). Пожалуйста, помогите понять это,

+2

Какая версия Кассандры? – zznate

+0

Немного устарело :-) 1.0.9 – user3021296

+0

Такое же поведение наблюдается в CLI. Когда я увеличиваю счетчик, удаляю строку и снова увеличиваю счетчик, значение счетчика равно 2, но не 1, как ожидалось. – user3021296

ответ

2

Существует ряд серьезных ограничений для текущей реализации счетчика Cassandra. Один из них заключается в том, что приращение удаленного столбца (или столбца в удаленной строке) считается неопределенным поведением. От Cassandra counters wiki page:

Удаление счетчика по существу ограничено. Например, если вы очень быстро выполняете последовательность «increment, remove, increment», возможно, что удаление будет потеряно (если по какой-то причине удаление является последним принятым сообщением). Следовательно, удаление счетчиков предоставляется только для окончательного удаления, то есть когда удаленный счетчик не увеличивается после этого. Это также относится к удалению строк: если вы удаляете строку счетчиков, приращение любого счетчика в этой строке (существовавшей до удаления) приведет к неопределенному поведению.

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

+0

спасибо большое – user3021296

+0

Что делать, если вы уже удалили строку, и вам нужно использовать тот же ключ раздела? Это кажется серьезным недостатком. Мои ключи разделов основаны на идентификаторах, которые не могут быть изменены, поэтому я не могу внезапно создать новый ключ раздела после удаления. нет ли механизма для его исправления или исправления? – KingOfHypocrites

+0

Повторное использование столбцов удаленных счетчиков, скорее всего, приведет к неправильному подсчету. – psanford

Смежные вопросы