Как настроить Cassandra TimeWindowCompactionStrategy - PullRequest
0 голосов
/ 09 октября 2018

Мои данные временных рядов TTLs через 1-7 дней (зависит от варианта использования).Данные являются неизменяемыми и упорядочены по метке времени (cluster by timestamp) - данные помечаются меткой времени «при записи» (поэтому новые метки времени данных всегда должны быть прогрессивными)

Размер раздела не должен превышать 10 КБ, как правило, намного меньше(и не более ~ 10MB для целых 10 тыс. элементов).

Я не нашел хорошей документации о том, как следует настраивать стратегию сжатия (какие параметры следует учитывать), поэтому я просто решил:сделайте это так:

compaction = {'class': 'TimeWindowCompactionStrategy', 'compaction_window_size': '7', 'compaction_window_unit': 'DAYS'}

Определенно не уверен, что это правильно

Какие KPI Я должен принимать во внимание?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Не существует единственного правильного ответа:

В результате вашей конфигурации данные будут сжаты вместе, если они были вставлены за последние 7 дней.Самым большим преимуществом TWCS является то, что он может истечь целыми SSTable, даже не читая их, потому что он знает, что все данные в SSTable уже устарели.

В этом случае данные, которые вы TTLd за 1 день, не могут бытьеще не истек, потому что это будет объединено в 7-дневном окне.В худшем случае ваш SSTable будет иметь мутацию, которая была только что вставлена ​​в конец 7-дневного окна, поэтому весь SSTable будет храниться еще 7 дней, пока не истечет эта одна мутация.

ЭтоЗвучит неоптимально, но, по крайней мере, вы сможете обслуживать все ваши чтения для данных в этом окне из одного SSTable.И наоборот, вы бы установили, например, окно на один день.Это заставит ваши данные истекать намного быстрее, но для данных, которые являются живыми в течение 7 дней, вы бы теперь касались 7 SSTables вместо одного.

Сводка:

Большие временные окна: медленный срок действияБолее быстрое чтение для оперативных данных. Меньшие временные окна: более быстрое истечение, более медленное чтение для оперативных данных.

Как и в большинстве вещей в жизни, истина в середине!Хотя оба варианта будут работать - и вы теперь понимаете компромиссы, лучшее окно, вероятно, находится где-то посередине 1 и 7.

0 голосов
/ 09 октября 2018

TTL создает надгробия в sstables, которые удаляются при сжатии.Слишком большое количество надгробий вряд ли повлияет на ваши показатели чтения.

Так что в вашем случае стоит отслеживать количество надгробий на одно чтение с помощью nodetool tablestats или JMX.

См. Эту замечательную статью об удалении надгробий в Кассандре.

...