Короткий ответ — «да». В ClickHouse есть несколько механизмов, которые позволяют освобождать место на диске за счёт удаления старых данных. Каждый из них предназначен для разных сценариев.
TTL
ClickHouse позволяет автоматически удалять значения при выполнении некоторого условия. Это условие задаётся как выражение на основе любых столбцов, обычно это просто фиксированное смещение для столбца с временной меткой.
Ключевое преимущество этого подхода в том, что он не требует никакой внешней системы для запуска: после настройки TTL удаление данных автоматически выполняется в фоновом режиме.
Подробнее см. в разделе настройка TTL.
DELETE FROM
DELETE FROM позволяет выполнять в ClickHouse стандартные запросы DELETE. Строки, подпадающие под условие фильтра, помечаются как удаленные и исключаются из последующих результирующих наборов. Очистка этих строк происходит асинхронно.
ALTER DELETE
ALTER DELETE удаляет строки с помощью асинхронных батч-операций. В отличие от DELETE FROM, запросы, выполняемые после ALTER DELETE, но до завершения батч-операций, будут включать строки, предназначенные для удаления. Подробнее см. в документации ALTER DELETE.
ALTER DELETE можно использовать для гибкого удаления старых данных. Если вам нужно делать это регулярно, основным недостатком будет необходимость в наличии внешней системы, отправляющей запрос. Также следует учитывать влияние на производительность, поскольку мутации переписывают части целиком, даже если требуется удалить всего одну строку.
Это наиболее распространённый способ привести систему на базе ClickHouse в соответствие с GDPR.
Подробнее о мутациях.
DROP PARTITION
ALTER TABLE ... DROP PARTITION — это экономичный способ удалить целую партицию. Этот оператор не слишком гибок и требует, чтобы схема партиционирования была правильно настроена при создании таблицы, но всё же покрывает большинство типичных сценариев. Как и мутации, для регулярного использования его нужно запускать из внешней системы.
Подробнее см. в разделе управление партициями.
TRUNCATE
Удаление всех данных из таблицы — довольно радикальный шаг, но в некоторых случаях это может быть именно то, что вам нужно.
Подробнее см. в разделе TRUNCATE table.