Открыть сервис

ClickHouse

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

История

Разработка ClickHouse началась в 2008 году в рамках внутреннего проекта Яндекса по созданию системы веб-аналитики для сервиса Яндекс.Метрика. Основной задачей было обеспечить возможность агрегации и анализа десятков миллиардов событий в день с задержкой не более нескольких секунд. Первая публичная версия (бета) была выпущена 15 июня 2016 года под лицензией Apache 2.0. В 2020 году проект перешёл в управление некоммерческой организации ClickHouse, Inc., созданной при участии инвесторов. К 2024 году ClickHouse является одной из самых популярных OLAP-систем в мире, используемой в сотнях компаний для задач бизнес-аналитики, мониторинга, логирования и машинного обучения.

Архитектура и принципы работы

Ключевое отличие ClickHouse от традиционных строковых СУБД (например, PostgreSQL или MySQL) — колоночное хранение данных. Данные хранятся не по строкам таблицы, а по колонкам (столбцам). Это позволяет:

Движки таблиц (Table Engines)

ClickHouse поддерживает несколько типов движков для хранения и обработки данных. Основные:

Индексы

Основной индекс в MergeTree — первичный ключ, который задаётся при создании таблицы. Он строится как разрежённый индекс (sparse index): для каждой группы строк (по умолчанию 8192) хранится минимальное значение ключа. При запросах ClickHouse отбрасывает партиции и части таблицы, у которых ключ не попадает в условие фильтра.

Дополнительные индексы:

Партиционирование

Таблицы по MergeTree могут быть партиционированы по любому столбцу (обычно по дате или месяцу). Партиции хранятся физически отдельно, что позволяет:

Репликация и шардирование

ClickHouse поддерживает распределённую архитектуру:

Функциональные возможности

Типы данных

Поддерживаются стандартные типы (UInt8..UInt64, Int8..Int64, Float32/64, String, FixedString, Date, DateTime) и специальные (Decimal, Array, Tuple, Nested, Enum, UUID, IPv4/IPv6, LowCardinality, Nullable).

SQL-синтаксис

ClickHouse поддерживает подмножество SQL-92 с расширениями для аналитики. Отличия:

Оптимизация запросов

Операция вставки

Вставка данных производится пачками (batch). ClickHouse оптимизирован для массовых вставок (тысячи строк за раз). Одиночные вставки (INSERT ... VALUES) возможны, но неэффективны. Для реального времени используется механизм async‑insert или буферные таблицы.

Применение

Ограничения

Критика и недостатки

Лицензия и сообщество

ClickHouse распространяется под лицензией Apache 2.0. Существует активное сообщество, коммерческая поддержка предоставляется компанией ClickHouse, Inc. (Сан-Франциско). Яндек остаётся основным контрибьютором кода, но проект развивается сообществом.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →