Вопрос касается опытных разработчиков Cassandra. Мне нужно подсчитать, сколько раз и когда каждый пользователь обращался к некоторому ресурсу. У меня есть структура данных, как это (CQL):Моделирование данных с помощью счетчиков в Кассандре, заканчивающиеся колоннами
CREATE TABLE IF NOT EXISTS access_counter_table (
access_number counter,
resource_id varchar,
user_id varchar,
dateutc varchar,
PRIMARY KEY (user_id, dateutc, resource_id)
);
Мне нужно, чтобы получить информацию о том, сколько раз пользователь доступ к ресурсам за последние N дней. Таким образом, чтобы получить последние 7 дней я делать запросы, как это:
SELECT * FROM access_counter_table
WHERE
user_id = 'user_1'
AND dateutc > '2015-04-03'
AND dateutc <= '2015-04-10' ;
И я получаю что-то вроде этого:
user_1 : 2015-04-10 : [resource1:1, resource2:4]
user_1 : 2015-04-09 : [resource1:3]
user_1 : 2015-04-08 : [resource1:1, resource3:2]
...
Итак, моя проблема заключается в: старые данные должны быть удалены через некоторое время, но Cassandra не разрешает устанавливать EXPIRE TTL для столов.
У меня есть миллионы событий доступа в час (и это может миллиарды). И через 7 дней эти записи будут бесполезны.
- Как я могу их очистить? Или сделать что-то вроде сборщика мусора в Кассандре? Это хороший подход?
- Возможно, мне нужно использовать для этого другую модель данных? Что бы это могло быть?
Спасибо.