Я только начинаю изучать Cassandra для (долгосрочного) сохранения временных рядов (записи только один раз) данных, которые потенциально могут стать довольно большими.
Если предположить, что, возможно, самый простой временной ряд:
CREATE TABLE raw_data (
sensor uuid,
timestamp timestamp,
value int,
primary key(sensor, timestamp)
) WITH CLUSTERING ORDER BY (timestamp DESC)
Чтобы убедиться, что разделы не растут слишком много, многие публикации в Интернете рекомендуют группирование, например, введение дня или просто повышениеподсчитывать номер ковша как
primary key((sensor, day, bucket), timestamp)
. Однако этими стратегиями нужно управлять вручную, что кажется довольно громоздким, особенно для неизвестного количества сегментов.
Но что, если я скажу добавить:
AND compaction = {
'class': 'TimeWindowCompactionStrategy',
'compaction_window_size': 1,
'compaction_window_unit': 'DAYS'
};
Как сказано, например, в https://thelastpickle.com/blog/2016/12/08/TWCS-part1.html:
TWCS направлена на упрощение DTCS путем создания временных окон SSTable, которые сжимаются друг с другом с помощью стратегии многоуровневого уплотнения.
Насколько я понимаю, это означаеттот Cassandra при использовании TWCS внутренне создает ведра только для чтения. Таким образом, мне интересно, если мне все еще нужно вручную внедрить ключ объединения day
?