Итоги модуля: Паттерны загрузки данных
Модуль 11 охватил полный спектр паттернов загрузки данных в ClickHouse — от оптимизации единичных INSERT до потоковой интеграции с Kafka и S3, CDC из PostgreSQL и MySQL, работы с open table formats (Iceberg, Delta Lake, Hudi) и выбора правильного протокола подключения. Девять уроков провели нас от базовых принципов async inserts до продакшен-готовых ingestion pipeline.
Ключевые решения проектирования
-
Async inserts + дедупликация (ING-01).
async_insert=1включает серверную буферизацию — ClickHouse сам батчует мелкие INSERT без изменения клиентского кода.insert_deduplication_token+wait_for_async_insert=1обеспечивают идемпотентность для at-least-once клиентов. В 26.3 LTS async_insert включён по умолчанию. -
Kafka Engine: pull-модель + MV writer (ING-02).
ENGINE = Kafka SETTINGS kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_formatсоздаёт pull-consumer. Данные перемещаются в MergeTree через Materialized View. Семантика: at-least-once (оффсет коммитится после успешного INSERT в MV). Один consumer group = один offset cursor. -
Kafka Connect vs Kafka Engine (ING-03). Kafka Engine: проще, without external coordinator, at-least-once. Connect sink (ClickHouse Sink Connector): exactly-once, push-модель, enterprise CDC (Debezium-compatible), требует Kafka Connect кластер. Выбор зависит от требований к дублям и сложности инфраструктуры.
-
S3 table function / engine / named collections (ING-04).
s3(url, key, secret, format)— одноразовый batch-запрос.ENGINE = S3(...)— постоянная таблица над S3-объектами. Named Collections скрывают credentials из SQL-запросов — обязательны в production (защита от Information Disclosure). -
S3Queue: streaming из S3-prefix (ING-05).
ENGINE = S3Queue(url, format)+ MV pattern = автоматическая потоковая загрузка новых файлов из S3-prefix.use_persistent_processing_nodes=1обязателен в multi-replica setup (26.3 LTS) — иначе один файл обработается несколькими репликами. -
MaterializedPostgreSQL/MySQL CDC (ING-06).
CREATE DATABASE ... ENGINE = MaterializedPostgreSQL(...)создаёт репликацию через WAL (PostgreSQL) или binlog (MySQL) для self-hosted ClickHouse. Prerequisite: PostgreSQL требуетwal_level=logicalс полным перезапуском. Shadow-таблицы используют_sign(1/-1) и_versionдля CDC-семантики через ReplacingMergeTree. Для ClickHouse Cloud managed-альтернатива — ClickPipes Postgres CDC (GA с мая 2025, на базе PeerDB). -
FORMAT: multi-format I/O (ING-07). ClickHouse нативно читает и пишет десятки форматов. Parquet — стандарт S3 data lake (columnar, schema embedded, column pruning). AvroConfluent — для Kafka с Confluent Schema Registry (декодирует Magic Byte + Schema ID). Arrow — для zero-copy IPC с Python/DataFusion. JSONEachRow — стандарт HTTP API.
-
Выбор протокола (ING-08). Native TCP (9000): максимальная скорость, clickhouse-client, server-to-server. HTTP (8123): REST API, curl, JDBC/ODBC, мониторинг. MySQL wire (9004) и PostgreSQL wire (9005): совместимость с BI-инструментами без нативного ClickHouse-коннектора — включаются через config.xml.
-
Lakehouse table functions (ING-09).
icebergS3(),deltaLakeS3(),hudi()— прямое чтение open table formats из S3 без ETL. Cluster variants (icebergS3Cluster, deltaLakeCluster, hudiCluster) доступны GA 24.12+ и распределяют чтение по узлам. Все функции read-only в 26.3 LTS. -
ClickPipes: managed ingestion для CH Cloud (ING-10). Managed integration platform на базе PeerDB (приобретён ClickHouse в 2024). Postgres CDC GA с мая 2025, MySQL CDC GA, MongoDB CDC Public Beta, плюс Kafka/Kinesis/object storage. Архитектурные ключи: persistent replication connection, failover slots, параллельный snapshot до 10x, 50+ pre-flight checks. Управление через UI/OpenAPI/Terraform (
clickhouse_clickpipe). Только ClickHouse Cloud; для self-hosted остаются MaterializedPostgreSQL и Debezium.
Что дальше
Модуль 12: Performance Tuning и профилирование — оптимизация производительности запросов и системы. После изучения паттернов загрузки данных (этот модуль) следующий шаг — научиться профилировать и оптимизировать как сами INSERT pipeline, так и аналитические SELECT-запросы: query_log, flamegraph, memory management, settings tuning.
Для закрепления материала выполните обе лабораторные работы из репозитория курса: Kafka-лаб (labs/kafka/) демонстрирует Kafka Engine + MV + MergeTree pipeline на реальном apache/kafka:4.0.0; MinIO-лаб (labs/minio/) — tiered storage с S3 cold tier, S3Queue streaming и named collections. Требования: 4-6 ГБ RAM (каждый лаб), Docker 24+.