Scylla / Cassandra: стратегия сжатия данных временных рядов без TTL

#cassandra #partitioning #scylla

#cassandra #разделение #scylla

Вопрос:

На самом деле мы используем scylla, но я все равно включил «cassandra» в заголовок, потому что вопрос должен иметь отношение и к нему.

У нас есть рабочая нагрузка для временных рядов без TTL (срок действия данных никогда не истекает). Для контекста схема таблицы выглядит примерно так:

 CREATE TABLE events (
    entity INT,
    time_partition TIMESTAMP,
    event_time TIMESTAMP,

    a TEXT,
    b TEXT,
    c TEXT,
    PRIMARY KEY((entity, time_partition), event_time)
);
  

Где time_partition точно так же, как event_time , но всегда усекается до часа, поэтому события для одного и того же entity и в течение одного и того же часа отправляются в один и тот же раздел.

Я пытаюсь понять, какую стратегию уплотнения нам следует использовать. Сначала я подумал, что нам следует использовать TimeWindowCompactionStrategy (TWCS): если временное окно составляет 1 день, это будет в основном означать, что у нас будут таблицы sstable за день, что имеет смысл для меня; но потом я узнал, что в различных документах говорится, что TWCS не подходит для никогда не истекающих данных. Например. этот документ о datastax.com говорит:

не подходит для данных без рабочей нагрузки TTL, поскольку объем хранилища будет расти без ограничений.

Хотя это хранилище действительно будет расти «без ограничений», потому что мы никогда не хотим удалять старые данные, но разве это не то же самое для любой другой стратегии? Если мы никогда не удаляем данные, это означает, что они будут продолжать расти. Это просто вопрос того, как мы организуем этот постоянно растущий набор данных, и я не уверен, почему TWCS не подходит. Является ли проблемой большое количество файлов? Например. если мы сделаем окно равным 1 дню, то для данных за 10 лет это будет примерно 3650 файлов.

Буду признателен за любые предложения.

Ответ №1:

В случае Scylla у вас будет больше файлов, поскольку каждый сегмент (ядро) обрабатывает свое собственное уплотнение. Однако даже через 10 лет у вас может быть 36 тысяч файлов, это не проблема для Scylla.