2012-06-22 6 views
1

Предположим, У меня есть ColumnFamily в Кассандре, которая выглядит следующим образом:Удалить все строки с определенными ключами в Кассандре

KEY | VALUE 
_____________ 
foo_a | data 
foo_b | data 
bar_a | data 
bar_b | data 

Что бы быть лучшим способом, чтобы удалить все строки, в которых ключ начинается с «Foo»? Я могу изменить структуру данных, если это полезно.

ответ

3

Единственный способ сделать это - сканировать каждую строку в кластере и программно проверять, начинается ли она с «foo» и удалять ее, если это так.

Если вам нужна такая функциональность, вы можете сохранить индекс строк, начинающийся с «foo». Каждый раз, когда вы пишете строку, начинающуюся с «foo», вы также должны писать полный ключ этой строки в строку индекса. Затем вы можете легко выполнить поиск, чтобы найти все ключи, начинающиеся с «foo», когда вы хотите их удалить. С этой стратегией вы захотите убедиться, что ваша строка индекса не слишком велик. В кассандре есть технический предел в 2 миллиарда колонок, но вы захотите остаться чуть меньше 2 миллиардов.