ClickHouse: что за база данных и чем она отличается от других БД
Объемы разнородной информации в компаниях экспоненциально растут, как и потребность в аналитике. Фундаментом для нее становятся базы данных, которые обеспечивают хранение больших массивов и оперативное выполнение запросов. Одно из таких решений — аналитическая колоночная СУБД ClickHouse. Рассказываем, как она работает, где может применяться и чем отличается от других баз данных.

Что такое ClickHouse
ClickHouse — аналитическая СУБД на открытом исходном коде. Главное ее отличие от классических транзакционных систем в том, что она специализируется на OLAP-задачах (Online Analytical Processing) — анализе больших объемов данных. СУБД позволяет работать с поступающей информацией и исследовать исторические сведения.
Возможности ClickHouse:
Оперативный прием данных — работа с поступающими сведениями без потери производительности при пиковых нагрузках.
Анализ больших данных — выдача ответов на сложные аналитические запросы за доли секунды.
Аналитика — поддержка одновременных операций и анализа информации без падения производительности.
Компрессия данных — колоночная структура базы данных (БД) и применение алгоритмов сжатия позволяют хранить информацию «экономнее» в сравнении с традиционными СУБД.
Полнофункциональный SQL-диалект — понятный интерфейс, который облегчает работу с БД.
Управление историческими данными — агрегация и архивирование неактуальной информации без влияния на производительность.
Поддержка разных типов запросов — адаптация структуры хранения под часто выполняемые операции.
Обеспечение отказоустойчивости и масштабируемости — поддержка распределенных кластеров, механизмов балансировки нагрузки и репликации.
Анализ производительности — встроенные алгоритмы мониторинга для проверки состояния системы и результатов выполнения отдельных запросов.
Гибкость развертывания — работа системы на разном оборудовании, развертывание на стороне компании или в облачной среде.
ClickHouse не заменяет транзакционные базы данных. Система берет на себя аналитическую нагрузку, тем самым дополняя их. В одной инфраструктуре бизнес-приложения могут работать на традиционных СУБД, а для аналитики и создания отчетности применяется ClickHouse.

Применение ClickHouseКак работает ClickHouse
Система проектировалась для аналитических нагрузок с упором на интенсивность чтения. Она позволяет выполнять сложные запросы по массивам данных. Предусмотрены фильтрация и агрегация. Фильтрация подразумевает отбор данных, которые соответствуют определенным условиям, заданным ключам или временным интервалам. Под агрегацией понимают объединение информации из разных источников в целостный массив, используемый для анализа, построения отчетов и дашбордов.
Хранение данных организовано в колоночном формате, благодаря чему при запросах считываются только нужные столбцы. Например, если запрашиваются три из пятидесяти столбцов, система прочитает и обработает только эти три столбца. Таким образом удается снизить нагрузку на ресурсы и ускорить выполнение запросов.
Данные записываются партициями и сортируются по заданному ключу. По сути система заранее оптимизирует структуру для будущей аналитики. Можно быстро находить нужные диапазоны значений, например, по отдельным пользователям, временным рамкам и другим логическим признакам.
Если ClickHouse работает в кластере, то распределяет запросы между узлами. Система обрабатывает данные параллельно и потом объединяет результаты. Это обеспечивает аналитику даже при больших информационных массивах.
Архитектура
С точки зрения логики работы СУБД архитектуру системы можно представить как слои, которые взаимодействуют между собой. Слои такие:
Слой | Состав | Описание | Особенности |
Слой запросов (Query Processing) | Векторный движок выполнения запросов, оптимизатор, планировщик и парсер SQL | Разбор входящих запросов, затем построение планов запросов и только потом выполнение |
|
Слой хранения (Storage) | Движки таблиц | Отвечает за хранение данных индексацию, партиционирование и сжатие |
|
Интеграции (Integration) | Движки и инструменты интеграции | Обеспечивает взаимодействие с внешними источниками данных, системами резервного копирования, мониторинга и управления доступом |
|
Многослойная архитектура позволяет настраивать систему под разные типы нагрузок. Например, можно масштабировать вычислительные ресурсы, не задействуя слой интеграций. Либо оптимизировать уровень хранения под большие объемы данных, не затрагивая логику запросов.
Большинство механизмов СУБД, таких, как фоновые процессы слияния данных, распределение запросов по узлам и обмен информацией между слоями могут работать асинхронно. Это позволяет системе выдерживать пиковые нагрузки и снижать влияние одних операций на другие.
Модель хранения данных
Мы уже рассказали, что формат хранения данных в ClickHouse отличается от реляционных баз. Он имеет следующие особенности:
Движки семейства MergeTree. Движки сортируют данные по первичному ключу и упорядочивают их, за счет чего обеспечивается мгновенный поиск.
Партиционирование. Данные можно разделить на партиции — логические блоки, например, по дням или месяцам. Это позволяет системе работать только с нужными партициями и игнорировать остальные при запросах.
Разреженные индексы (sparse indexes). В отличие от традиционных B-Tree индексов, где запись создается для каждой строки, ClickHouse хранит одну запись индекса на гранулу (по умолчанию 8192 строки). Это позволяет индексу занимать мало места и полностью помещаться в оперативную память даже для таблиц с триллионами строк. При выполнении запроса ClickHouse использует двоичный поиск по индексным меткам для определения нужных гранул, после чего читает только соответствующие блоки данных.
Размер гранулы определяется двумя настройками:
index_granularity — максимальное количество строк (по умолчанию 8192)
index_granularity_bytes — максимальный размер данных в грануле (по умолчанию 10 МБ)
ClickHouse использует адаптивную гранулярность: гранула создается при достижении 8192 строк ИЛИ 10 МБ данных (в зависимости от того, что наступит раньше). Это позволяет эффективно работать как с узкими числовыми колонками, так и с широкими текстовыми полями без потери производительности.
Сжатие данных. Каждый столбец в базе сжимается с помощью специальных кодеков. Для строковых данных применяются одни алгоритмы, для числовых — другие.
Управление жизненным циклом данных. Можно настроить автоматическое перемещение или удаление устаревшей информации.
Важно правильно выбрать первичный ключ и порядок сортировки в ClickHouse. Они помогают определить, какие столбцы будут сразу отсеиваться при запросах. Если на этапе проектирования допустить ошибку, будут считываться лишние гигабайты информации.
Преимущества ClickHouse
У ClickHouse много сильных сторон, которые раскрываются в процессе эксплуатации. Некоторые плюсы лежат на поверхности и становятся решающими аргументами при выборе решения для аналитики.
Быстродействие
ClickHouse быстро выполняет запросы даже при работе с таблицами с триллионнами строк. Это возможно за счет хранения данных в колонках. Система считывает только те столбцы, которые фигурируют в запросах. Такой подход позволяет сократить объем операций ввода-вывода и упрощает агрегацию по нескольким полям из «тяжелых» таблиц.
Для прироста производительности система применяет алгоритмы компрессии, которые позволяют ускорить чтение данных с диска и уменьшить объем хранения. Также предусмотрено рациональное использование CPU благодаря тому, что операции обрабатываются не по одной строке, а пакетами.
Еще одна технология, обеспечивающая быстродействие — распараллеливание запросов по потокам внутри одного сервера и по нескольким узлам кластера в распределенных средах. ClickHouse может обрабатывать большие потоки без предварительных трансформаций.
Масштабируемость
Архитектура ClickHouse построена с учетом масштабирования. Горизонтальное масштабирование возможно за счет шардинга и репликации. Данные распределяются между шардами — узлами кластера, которые имеют одну или несколько реплик. Под репликами понимают серверы, куда дублируются данные. При увеличении объемов информации или количества пользователей можно добавлять узлы в кластер без переработки архитектуры БД и остановки системы. Шардирование позволяет выполнять единый запрос ко всему кластеру, но вычисления будут происходить параллельно на разных узлах. Таким образом при расширении инфраструктуры растет производительность системы.
Вертикальное масштабирование реализовано за счет управления потреблением ресурсов и настроек для оптимизации системы под конкретные задачи. Например, ClickHouse может использовать большое количество ядер процессора, расширенный объем оперативной памяти и SSD и NVMe-диски.
Поддержка SQL
Несмотря на сложную архитектуру, СУБД ClickHouse удобна в использовании благодаря поддержке SQL-диалекта. Это позволяет работать с данными без освоения нового языка запросов.
Поддержка SQL облегчает интеграцию с BI-инструментами, системами визуализации и ETL-платформами. Командам не нужно менять привычные подходы к аналитике и созданию отчетности, за счет чего снижается порог входа и формируется позитивный пользовательский опыт.
Также система поддерживает сложные типы данных (например, Array, Tuple, Map), оконные и агрегатные функции, подзапросы, разные типы JOIN. Эти возможности делают ClickHouse оптимальным решением для сложной аналитики на уровне базы данных.
Отличия ClickHouse от других БД
Отличие заключается в колоночном формате хранения. Реляционные системы используют построчную модель, то есть данные записываются в таблицы целыми строками, а значения всех столбцов строки хранятся вместе. От формата хранения зависит применимость БД для различных операций. Например, в традиционных OLTP-системах удобно делать выборки отдельных записей, выполнять частые вставку и обновление. Это плюс для типичных транзакционных задач, таких, как работа с пользовательскими сведениями, оформление заказов, финансовые операции.
ClickHouse не оптимизирована под трансакционные задачи. Она «заточена» под аналитические запросы, где нужно обрабатывать большие объемы данных, не задействуя все столбцы таблицы. Чтобы был понятен принцип, разберем пример. Вам нужно посчитать сумму продаж за год по регионам. В ответ на запрос система учитывает только те столбцы, где указаны даты, регионы и суммы. Остальные она не читает. В результате аналитический запрос будет выполнен за доли секунды.
Сравнение моделейСравнение с популярными СУБД
Для наглядности сравним ClickHouse с другими СУБД по архитектурным принципам и применимости в рабочих сценариях:
Параметр | ClickHouse | PostgreSQL | MySQL |
Тип нагрузки | OLAP | OLTP и частично OLAP | OLTP |
Модель хранения | Колоночная | Строковая | Строковая |
Скорость выполнения аналитических запросов | Высокая даже на больших объемах данных | Средняя при объемах до десятков миллионов строк; значительно снижается на больших объемах (сотни миллионов+), где аналитические запросы могут занимать минуты | Низкая при больших объемах |
Масштабирование | Вертикальное и горизонтальное | Вертикальное и горизонтальное | Вертикальное и горизонтальное (реже) |
Транзакции (ACID) | Полная ACID для INSERT в партицию; экспериментальные транзакции (требуют Keeper/ZooKeeper) | Полная поддержка | Полная поддержка |
Сжатие данных | Встроенные алгоритмы компрессии | Ограниченное | Ограниченное |
Сценарии применения | BI-системы, системы мониторинга и обработки логов, телеметрия и финансовая аналитика | Веб-приложения, бизнес-логика | Веб-приложения, CMS и сервисы |
Применение ClickHouse
Есть случаи, когда без этой СУБД не обойтись и ситуации, когда ее использовать нецелесообразно. Рассмотрим, где система нужна и когда ее внедрение будет избыточным.
Примеры использования
ClickHouse незаменима там, где нужна обработка больших объемов данных и высокоскоростная аналитика. Например:
Аналитика интернет-проекта и электронной коммерции. В сфере e-commerce ClickHouse применяется для хранения событий, таких, как потоки кликов, просмотры на сайте, заказы. Данные считываются через систему вроде Kafka, агрегируются и используются для анализа продаж и поведения пользователей, построения отчетов и интерактивных дашбордов. Без ClickHouse создание отчетов и аналитика занимала бы часы и даже дни.
Корпоративная бизнес-аналитика в сфере ритейла. Компании с большим количеством торговых точек и многочисленными источниками данных затруднялись анализировать динамику продаж и оценивать результаты маркетинговых стратегий. СУБД ClickHouse позволила объединить разрозненные данные в одну платформу и ускорила процессы анализа ключевых показателей.
Веб-аналитика. ClickHouse полезна в проектах по мониторингу сервисов, сбора телеметрии и анализа логов. С ее помощью можно ответить на вопросы вроде «сколько пользователей заходило на сайт за последние 10 минут», «какая производительность в разных регионах» и подобные.
Телеком и IoT. Здесь СУБД используется для сбора и аналитики событий из сетевого оборудования и датчиков. Благодаря высокой пропускной способности записи (миллионы строк в секунду на кластер), эффективной компрессии данных и поддержке партиционирования по времени ClickHouse становится незаменимым решением для построения систем предиктивного мониторинга и обработки телеметрии.
Система востребована в компаниях, которые ежедневно генерируют большие объемы событий. И там, где скорость и качество аналитики напрямую влияет на бизнес-результаты. Чтобы ClickHouse выдавала заявленную производительность с минимальными задержками, перед внедрением оцените предполагаемые нагрузки и структуру данных.
Когда НЕ использовать ClickHouse
У ClickHouse широкие возможности, но СУБД не является универсальным решением для всех задач. Когда ее нецелесообразно использовать:
Нормализованные схемы. СУБД лучше работает с денормализованными данными. В случае с нормализованными запросы выполняются медленнее, либо требуется дополнительная агрегация под ключи.
Транзакционные системы. ClickHouse не оптимизирован для OLTP-нагрузок с частыми точечными UPDATE/DELETE-операциями. Хотя система поддерживает изменение и удаление данных (через мутации ALTER TABLE ... UPDATE/DELETE и специализированные движки таблиц), эти операции не являются мгновенными и могут создавать нагрузку на систему. Для сценариев с высокочастотными обновлениями отдельных строк ClickHouse не подходит.
Малые объемы данных. ClickHouse применяется для аналитики Big Data и медленнее работает с таблицами, содержащими небольшое количество строк. В таких случаях подойдут традиционные базы данных.
JOIN с большими таблицами. В ClickHouse JOIN возможны, но для достижения высокой производительности рекомендуется денормализация данных или использование словарей (Dictionaries) для подстановок. Словари хранят данные в оперативной памяти в формате key-value и обеспечивают lookup-запросы за микросекунды.
По данным ClickHouse, замена JOIN на словари ускоряет выполнение запросов до 3.5 раз и снижает затраты до 60%.
Сложные JOIN между большими таблицами могут быть менее эффективны, чем в специализированных аналитических СУБД. Однако JOIN с малыми справочниками (до сотен тысяч строк) работают быстро, а для размеренных справочников (до миллионов строк) рекомендуется использовать словари с хеш-индексацией.
Частые вставки данных маленькими порциями. ClickHouse адаптирована под большие потоки, поэтому запись по одной-двум строкам может привести к блокировке системы.
Используя ClickHouse, учитывайте требования к ресурсам. Заявленная производительность системы достигается только при использовании значительных вычислительных ресурсов и скоростных дисков. Если ресурсов мало, преимущества могут сойти на нет.
Заключение
ClickHouse — ресурсоэффективное хранилище данных с оптимальными в своем сегменте коэффициентами сжатия. Решение подходит для аналитики, поэтому выступает технологической основой для BI-платформ и систем мониторинга. Его можно использовать как on-premise, так и в облаке.
FAQ
Кто разработал ClickHouse?
Проект создала компания «Яндекс». Развитием сейчас занимается команда ClickHouse. Проект был и остается open-source.
Есть ли облачная версия ClickHouse?
Да, есть несколько вариантов облачного развертывания:
ClickHouse Cloud — официальный managed-сервис от создателей ClickHouse. Позволяет запускать кластеры без необходимости администрирования инфраструктуры, использует архитектуру Shared Database Engine с централизованным хранением метаданных.
Evolution Managed ClickHouse от Cloud.ru — российский managed-сервис, который позволяет создавать и настраивать кластеры СУБД, управлять базами данных и пользователями.
Также систему можно развернуть самостоятельно в публичных облаках (AWS, GCP, Azure) или on-premise
Поддерживает ли ClickHouse SQL?
Да, СУБД поддерживает SQL-язык, что снижает порог входа для аналитиков и облегчает интеграцию с BI-инструментами. Доступны расширения для работы с массивами данных и агрегаций.
Можно ли использовать ClickHouse в качестве транзакционной базы?
Нет, СУБД нецелесообразно применять для OLTP-нагрузок с частыми обновлениями и удалениями строк в таблицах. Ее можно использовать совместно с другой системой, предназначенной для базовых задач.
Подходит ли ClickHouse для обработки потоковых данных?
Да, система умеет работать с большими потоками событий. Она принимает поступающие сведения и делает их доступными для аналитических запросов.
Сложно ли администрировать ClickHouse?
Установка и запуск single-node экземпляра не требует сложных настроек. Однако для продакшен-сред с кластеризацией, репликацией и шардированием требуется глубокое понимание архитектуры СУБД, включая настройку ClickHouse Keeper/ZooKeeper, управление мержами частей данных и оптимизацию первичных ключей. Для упрощения администрирования можно использовать облачные managed-сервисы.


