Learning Platform
Глоссарий Troubleshooting
Урок 12.10 · 15 мин
Продвинутый
summaryingestionKafkaS3CDC

Итоги модуля: Паттерны загрузки данных

Модуль 11 охватил полный спектр паттернов загрузки данных в ClickHouse — от оптимизации единичных INSERT до потоковой интеграции с Kafka и S3, CDC из PostgreSQL и MySQL, работы с open table formats (Iceberg, Delta Lake, Hudi) и выбора правильного протокола подключения. Девять уроков провели нас от базовых принципов async inserts до продакшен-готовых ingestion pipeline.


Ключевые решения проектирования

  1. 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 включён по умолчанию.

  2. 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.

  3. 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 кластер. Выбор зависит от требований к дублям и сложности инфраструктуры.

  4. S3 table function / engine / named collections (ING-04). s3(url, key, secret, format) — одноразовый batch-запрос. ENGINE = S3(...) — постоянная таблица над S3-объектами. Named Collections скрывают credentials из SQL-запросов — обязательны в production (защита от Information Disclosure).

  5. 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) — иначе один файл обработается несколькими репликами.

  6. 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).

  7. 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.

  8. Выбор протокола (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.

  9. 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.

  10. 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.

TIP

Для закрепления материала выполните обе лабораторные работы из репозитория курса: 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+.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 11