Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (15)

Лучшие ответы пользователя

Все ответы (2)
  • Как освободить место от удалённых данных Cassandra?

    @jonasas Автор вопроса
    Сам разобрался в вопросе.
    Cassandra пишет поступившие данные в CommitLog (ПЗУ) и MemTable (ОЗУ).
    Периодически данные из memTable сбрасываются в SSTable'ы (ПЗУ).

    Очищать удалённые данные нужно в двух местах: в SSTable и CommitLog.

    Для CommitLog есть настройка commitlog_total_space_in_mb. Cassandra сама будет чистить. Чем меньше мы держим CommitLog, тем больше вероятность потерять данные при падении ноды.

    Для SSTable. Cassandra периодически проводит ревизию, объединяя SSTable'ы в одну. Процесс называется compaction (упаковка). Настроить его можно тремя стратегиями: SizeTieredCompactionStrategy, LeveledCompactionStrategy и DateTieredCompactionStrategy.

    • SizeTieredCompactionStrategy -- таблицы будут объединяться, когда достигнут значения min_threshold (настройка Column Family)
    • DateTieredCompactionStrategy -- понятно из названия, по TTL.
    • LeveledCompactionStrategy -- стратегия создаёт SSTable'ы фиксированного, относительно небольшого размера (160Мб по умолчанию), которые группируются на уровни. Каждый уровень (L0, L1, L2 итд) в 10 раз больше предыдущего. Когда SSTables уровня полностью заполняются, они мержутся в более старший уровень (тут и происходит очистка устаревших данных). Этот уровень обеспечивает наибольшую скорость чтения. На скорость записи уровни не влияют.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (12)