Итоги модуля: TTL и Tiered Storage
Модуль 10 охватил полный стек управления жизненным циклом данных в ClickHouse — от автоматического TTL-удаления до политик многоуровневого хранения и точечного изменения строк. Семь уроков провели нас от фундаментального merge-цикла до сравнительной матрицы операций изменения данных и практики GDPR-compliance.
Ключевые решения проектирования
-
TTL и merge-цикл (TTL-01).
TTL event_time + INTERVAL 90 DAY— атрибут таблицы, не отдельный процесс. Удаление и перемещение данных происходят только во время merge.MATERIALIZE TTLиOPTIMIZE TABLE t FINAL— инструменты для принудительного применения. Column-level TTL заменяет значение на type-default (не NULL) после истечения срока. -
MOVE TTL + storage policy (TTL-02). Storage policy в XML определяет volumes (hot/warm/cold), диски (local SSD, S3, cache).
TTL event_time + INTERVAL 30 DAY TO VOLUME 'cold'автоматически перемещает части при merge.use_path_style_url=1обязателен для MinIO в S3-compatible режиме. -
Zero-copy replication (TTL-03).
allow_remote_fs_zero_copy_replication— экспериментальная функция, официально не рекомендуется для production. В кластерах с S3-хранилищем должна быть явно отключена (=false). Вместо zero-copy — стандартная репликация частей между узлами. -
Partition operations (TTL-04).
ATTACH/DETACH/MOVE/REPLACE/FETCH PARTITION— атомарные операции над целыми партициями.DETACHделает данные недоступными без удаления с диска.MOVE PARTITION TO TABLE archive_t— эффективная архивация без копирования данных.REPLACE PARTITION FROM source_t— атомарный swap партиции для ETL-паттернов. -
Lightweight DELETE (TTL-05).
DELETE FROM t WHERE expr(25.3+) создаёт bitmap-маску: O(parts) сложность, немедленная фильтрация в SELECT, физическая очистка при merge.ALTER TABLE t APPLY DELETED MASKдля принудительного освобождения диска. Несовместим с projections — для таких таблиц используйтеALTER TABLE DELETE. -
Lightweight UPDATE — Patch Parts (TTL-06).
UPDATE t SET col = val WHERE expr(25.7+/26.3 LTS) создаёт delta-части: до 1000-1600x быстрееALTER TABLE UPDATE. Видимость немедленная. Эффективен до ~10% строк таблицы. Для > 10% строк или при наличии projections —ALTER TABLE UPDATE. -
Mutations vs lightweight ops (TTL-07). Иерархия скорости:
DROP PARTITION(O(1)) >>DELETE FROM(O(parts)) >>UPDATEpatch parts >>ALTER TABLE UPDATE/DELETE(O(rows × cols)).system.mutationsотслеживает только тяжёлые мутации.KILL MUTATION+mutations_syncдля управления асинхронными операциями.
Что дальше
Модуль 11: Паттерны загрузки данных — ingestion patterns для production-сред: async inserts с адаптивными таймаутами, Kafka table engine + Materialized View, S3Queue для потокового чтения из бакетов, MaterializedPostgreSQL/MySQL для CDC, форматы данных и протоколы подключения. Понимание data lifecycle (этот модуль) помогает проектировать ingestion pipelines с учётом TTL и partitioning стратегий.
Для практики выполните лабораторную работу по MinIO из репозитория курса (labs/minio/). Лаб поднимает ClickHouse 26.3 LTS + MinIO в Docker Compose, включает упражнения по настройке storage policy hot/cold, TTL MOVE к S3 и работе с s3() table function. Минимальные требования: 4-6 ГБ RAM.