Я создаю модель данных для приложения временных рядов на Cassandra 2.1.3. Мы будем сохранять X объем данных для каждого пользователя системы, и мне интересно, как лучше всего подойти к проектированию для этого требования.
Опция 1:
Используйте «сегмент» в ключе раздела, чтобы данные за период X попадали в ту же строку. Что-то вроде этого:
((id, bucket), timestamp) -> data
Я могу удалить одну строку сразу за счет сохранения этой концепции ведра. Это также ограничивает диапазон, который я могу запросить на timestamp
, что, вероятно, приведет к нескольким запросам.
Вариант 2:
Храните все данные в одной строке. N удалений на столбец.
(id, timestamp) -> data
Запросы диапазона снова просты. Но как насчет производительности после удаления многих столбцов?
Учитывая, что мы планируем использовать TTL для истечения срока действия данных, какая из двух моделей обеспечит наилучшую производительность? Является ли надгробная плита накладной для Варианта 1 ‹‹ Варианта 2 или в любом случае будет надгробие на столбец в обеих моделях?
Я стараюсь не хоронить себя на могильном кладбище.