Добро пожаловать в сообщество AggreGate

Change compaction properties of Cassandra keyspace

вопросы, касающиеся баз данных, баз данных ключ-значение, баз данных NoSQL, кольцевых баз данных, хранения файлов

Change compaction properties of Cassandra keyspace

Сообщение moskons&gmail.com » Вс окт 31, 2021 9:01 pm

При использовании Cassandra DB в качестве nosql хранилища в Системе, Платформа AggreGate создает несколько keyspaces и таблиц в нем, в зависимости от настроек.
При этом стратегия по-умолчанию архивирования данных указывается как SizeTieredCompactionStrategy с настройками:

{ 'class' : 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold' : 32, 'min_threshold' : 4 }
Согласно документации, всего возможно 4 способа архивирования данных:

SizeTieredCompactionStrategy (STCS)
DateTieredCompactionStrategy (DTCS)
TimeWindowCompactionStrategy (TWCS)
LeveledCompactionStrategy (LCS)
Стратегия по-умолчанию не всегда оптимальна для различных применений БД.
При настройках по-умолчанию инициируется уплотнение, когда БД накопила заданное количество (по умолчанию: 4) SSTables аналогичного размера. STCS объединяет эти SSTables в одну большую SSTable. По мере накопления этих больших SSTables, STCS объединяет их в еще более крупные SSTables. В любой момент времени присутствует несколько SSTable разного размера. Этот тип рекомендован при больших нагрузках на запись. В keyspace хранения событий AggreGate (истории переменных в том числе) есть таблицы с хранением по сути time-series данных с установленным TTL.
Для подобных данных разработчики БД согласно документации рекомендуют стратению TimeWindowCompactionStrategy (TWCS). TWCS похож на DTCS с более простыми настройками. TWCS группирует SSTables, используя ряд временных окон. Во время уплотнения TWCS применяет STCS к некомпактным SSTables в самом последнем временном окне. В конце временного окна TWCS сжимает все SSTable, попадающие в это временное окно, в одну SSTable на основе максимальной временной метки SSTable. После завершения основного сжатия для временного окна никакого дальнейшего сжатия данных не произойдет. Процесс начинается с SSTables, записанного в следующем временном окне.
Применение TWCS для упаковки данных таких таблиц, как ag_change позволит, немного жертвуя местом на диске, уменьшить нагрузку на процессор и умерить потребление ОЗУ приложением.
Для переключение уже существующих таблиц на TWCS нужно подключиться клиентом в БД (cqlsh к примеру) и выполнить запрос к целевым таблицам, пример:

ALTER TABLE aggregate_events.ag_change WITH compaction = { 'class' : 'TimeWindowCompactionStrategy', 'compaction_window_unit' : 'HOURS', 'compaction_window_size' : 12};
Изменится стратегия сжатия на TWCS БД aggregate_events таблицы ag_change, которая будет сжимать данные только за указанный интервал, в результате чего размер файла не будет очень большим и не будет влиять на производительность системы. Единица измерения интервала – HOURS (ЧАСЫ), размер – 12. Интервал временного окна можно подбирать опытным путём, отслеживая размер получаемых файлов *big-Data.db, расположенных в папке data хранения файлов БД.
moskons&gmail.com
 
Сообщения: 21
Зарегистрирован: Пн сен 20, 2021 3:41 pm

Re: Change compaction properties of Cassandra keyspace

Сообщение moskons&gmail.com » Пн ноя 22, 2021 9:03 am

moskons&gmail.com
 
Сообщения: 21
Зарегистрирован: Пн сен 20, 2021 3:41 pm


Вернуться в Хранение данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1