Оптимальная схема Кассандры для временных рядов - PullRequest
0 голосов
/ 11 июня 2018

Поэтому я храню пользовательские события в Кассандре и ищу правильный ключ для таблицы.

CREATE TABLE user_events ( user text, timestamp timestamp, ip text, event text, content text, service text, PRIMARY KEY (user, timestamp) ) WITH CLUSTERING ORDER BY (timestamp DESC) AND compaction = { 'class' : 'DateTieredCompactionStrategy' };

Я знаю, что существует ограничение на один раздел (Я думаю ~ 1B).Я не планирую удалять данные по мере их старения.Должен ли я также ввести это по месяцу или что-то?Например:

PRIMARY KEY((user, month) timestamp)

Или, если есть более оптимальный способ или сохранение событий для данных временных рядов.

1 Ответ

0 голосов
/ 11 июня 2018

Не используйте DateTiered, используйте TimeWindow.Во-вторых, вы должны написать так, как вы ожидаете прочитать (например: перечислите все запросы SELECT, которые вы хотите, а затем смоделируйте).Но избегайте больших разделов.

Существует несколько способов избежать больших разделов, если вы хотите искать пользовательские события, основанные на времени.

  1. Введите ключ по дате, как вы сказали.
  2. Отдельные события разного времени в разных таблицах (например, одна таблица в месяц)

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

...