hostprofi.ru
Подобрать хостинг
Термин·буква C

ClickHouse

краткое определение

ClickHouse — столбцовая (колончатая) СУБД с открытым исходным кодом, разработанная Яндексом. Оптимизирована для аналитических запросов (OLAP) к большим объёмам данных: запросы к миллиардам строк выполняются за секунды. Используется для аналитики, логов, метрик.

ClickHouse — колончатая (columnar) СУБД с открытым исходным кодом, разработанная Яндексом. Оптимизирована для OLAP (Online Analytical Processing) — аналитических запросов к петабайтам данных в режиме реального времени. В колончатых СУБД данные хранятся по столбцам, а не по строкам: запрос к двум столбцам из таблицы в 100 столбцов читает 2% данных вместо 100%.

Как работает

Колончатое хранение: каждый столбец хранится в отдельном файле с компрессией (LZ4, ZSTD). Данные одного типа в колонке сжимаются эффективнее, чем смешанные строки. На практике ClickHouse достигает коэффициента сжатия 10:1-100:1 для аналитических данных. Запись происходит батчами (Merge Tree движок): данные записываются в «части» (parts), которые фоново сливаются.

Основной движок — MergeTree и его вариации:

  • MergeTree — базовый, сортировка по первичному ключу.
  • ReplicatedMergeTree — с репликацией через ZooKeeper/Keeper.
  • SummingMergeTree — автоматическая суммация при слиянии.
  • AggregatingMergeTree — инкрементальные агрегации.
  • CollapsingMergeTree — отмена строк через sign-колонку.

Производительность: запрос с COUNT(*) по 10 млрд строк — 1-5 секунд. SELECT с GROUP BY по 100 млрд строк — 10-60 секунд. Используется в Яндекс.Метрике (с 2012 года, 20+ трлн строк), Cloudflare, eBay.

История

ClickHouse создан Алексеем Миловидовым в Яндексе в 2009-2016 годах для нужд Яндекс.Метрики. Открытый исходный код опубликован на GitHub в июне 2016 года. Компания ClickHouse Inc. основана в 2021 году, привлекла $250 млн венчурных инвестиций. ClickHouse Cloud (управляемый сервис) запущен в 2022 году. ClickHouse 24.x (2024) — актуальная ветка с поддержкой S3-хранилища и Lightweight Deletes.

ClickHouse в хостинге

ClickHouse требует выделенных ресурсов — минимум 4 ГБ ОЗУ для базовой инсталляции, на практике 16-64 ГБ для аналитических нагрузок. Устанавливается на VPS или выделенный сервер. Managed ClickHouse предлагают: Яндекс Облако (Managed ClickHouse), Selectel, ClickHouse Cloud. Для интеграции с BI-инструментами (Grafana, Superset, Metabase) — штатные коннекторы. Развёртывание через Docker: docker run -d clickhouse/clickhouse-server.

ClickHouse: архитектура и типичные сценарии

ClickHouse использует колоночное хранение: данные каждого столбца хранятся последовательно на диске. При аналитических запросах (SELECT sum(revenue) WHERE date BETWEEN ...) читается только столбец revenue и date, а не все данные строки. Компрессия колоночных данных в 5-10 раз лучше строчного хранения — однотипные данные в столбце сжимаются эффективнее.

Материализованные представления (Materialized View) — ключевая фича: агрегированные данные обновляются при вставке в исходную таблицу. Например, кликстрим пишется в сырую таблицу, а MV автоматически обновляет почасовые агрегаты. ReplicatedMergeTree движок — основа для отказоустойчивых кластеров: репликация через ZooKeeper/ClickHouse Keeper. Distributed таблицы — прозрачный шардинг на несколько нод.

На что обращать внимание

ClickHouse — OLAP, не OLTP: нет полных ACID-транзакций. UPDATE и DELETE — медленные операции (не предназначены для транзакционной нагрузки). Для интернет-магазина с частыми UPDATE — используйте PostgreSQL или MySQL. ClickHouse — для анализа логов, метрик, аналитики поведения. Distributed table — таблица-шард, запросы к которой ClickHouse распределяет по кластеру. ZooKeeper/ClickHouse Keeper обязателен для репликации. В связке с Redis ClickHouse часто используется: Redis — для оперативного кэша, ClickHouse — для аналитических агрегаций.

Другие термины