Сам разобрался в вопросе.
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 уровня полностью заполняются, они мержутся в более старший уровень (тут и происходит очистка устаревших данных). Этот уровень обеспечивает наибольшую скорость чтения. На скорость записи уровни не влияют.