Перейти к основному содержанию
ClickHouse® — это высокопроизводительная столбцовая система управления базами данных SQL (СУБД) для онлайн-аналитической обработки (OLAP). Она доступна как в виде программного обеспечения с открытым исходным кодом, так и в виде облачного сервиса.

Что такое аналитика?

Под аналитикой, также известной как OLAP (онлайн-аналитическая обработка), понимаются SQL-запросы со сложными вычислениями (например, агрегациями, обработкой строк, арифметическими операциями) над огромными наборами данных. В отличие от транзакционных запросов (или OLTP, Online Transaction Processing), которые читают и записывают всего несколько строк за запрос и потому выполняются за миллисекунды, аналитические запросы обычно обрабатывают миллиарды и триллионы строк. Во многих сценариях аналитические запросы должны работать «в реальном времени», то есть возвращать результат менее чем за одну секунду.

Построчное и столбцовое хранение

Такого уровня производительности можно добиться только при правильной «ориентации» данных. Базы данных хранят данные либо построчно, либо по столбцам. В строко-ориентированной базе данных последовательные строки таблицы записываются одна за другой. Такая структура позволяет быстро извлекать строки, поскольку значения всех столбцов для каждой строки хранятся вместе. ClickHouse — это столбцовая база данных. В таких системах таблицы хранятся как набор столбцов, то есть значения каждого столбца записываются последовательно одно за другим. Такая структура затрудняет извлечение отдельных строк (поскольку значения одной строки оказываются разнесены), но операции со столбцами, такие как фильтрация или агрегация, выполняются намного быстрее, чем в строко-ориентированной базе данных. Лучше всего эту разницу показывает пример запроса, выполняемого на 100 миллионах строк анонимизированных реальных данных веб-аналитики:
SELECT MobilePhoneModel, COUNT() AS c
FROM metrica.hits
WHERE
      RegionID = 229
  AND EventDate >= '2013-07-01'
  AND EventDate <= '2013-07-31'
  AND MobilePhone != 0
  AND MobilePhoneModel not in ['', 'iPad']
GROUP BY MobilePhoneModel
ORDER BY c DESC
LIMIT 8;
Вы можете выполнить этот запрос в Песочнице ClickHouse, который выбирает и фильтрует всего несколько из более чем 100 существующих столбцов, и возвращает результат за миллисекунды: Как видно из раздела статистики на диаграмме выше, запрос обработал 100 миллионов строк за 92 миллисекунды — это чуть более 1 миллиарда строк в секунду или чуть менее 7 ГБ данных в секунду. Строко-ориентированная СУБД В строко-ориентированной базе данных, хотя приведённый выше запрос обрабатывает лишь несколько существующих столбцов, системе всё равно приходится загружать с диска в память данные из остальных столбцов. Причина в том, что данные хранятся на диске в блоках (обычно фиксированного размера, например 4 КБ или 8 КБ). Блоки — это наименьшие единицы данных, считываемые с диска в память. Когда приложение или база данных запрашивает данные, подсистема дискового ввода-вывода операционной системы считывает с диска необходимые блоки. Даже если нужна только часть блока, в память всё равно считывается весь блок (это обусловлено устройством дисков и файловых систем): Столбцово-ориентированная СУБД Поскольку значения каждого столбца хранятся на диске последовательно, одно за другим, при выполнении приведённого выше запроса не загружаются лишние данные. Поскольку блочное хранение и передача данных с диска в память соответствуют шаблону доступа к данным в аналитических запросах, с диска считываются только столбцы, необходимые для запроса, что позволяет избежать лишних операций ввода-вывода для неиспользуемых данных. Это намного быстрее по сравнению с построчным хранением, при котором считываются целые строки (включая нерелевантные столбцы):

Репликация данных и их целостность

ClickHouse использует асинхронную мультимастерную репликацию, чтобы обеспечить избыточное хранение данных на нескольких узлах. После записи на любую доступную реплику все остальные реплики в фоновом режиме получают свои копии. Система поддерживает одинаковые данные на разных репликах. После большинства сбоев восстановление выполняется автоматически, а в сложных случаях — полуавтоматически.

Ролевое управление доступом

ClickHouse поддерживает управление учетными записями пользователей с помощью SQL-запросов и позволяет настраивать ролевое управление доступом, аналогично стандарту ANSI SQL и популярным системам управления реляционными базами данных.

Поддержка SQL

ClickHouse поддерживает декларативный язык запросов на основе SQL, который во многих случаях соответствует стандарту ANSI SQL. Поддерживаются такие секции запросов, как GROUP BY, ORDER BY, подзапросы в FROM, секция JOIN, оператор IN, оконные функции и скалярные подзапросы.

Приблизительные вычисления

ClickHouse позволяет жертвовать точностью ради производительности. Например, некоторые его агрегатные функции приблизительно вычисляют количество уникальных значений, медиану и квантили. Кроме того, запросы можно выполнять на выборке данных, чтобы быстро получать приблизительный результат. Наконец, агрегации можно выполнять для ограниченного числа ключей, а не для всех. В зависимости от того, насколько неравномерно распределены ключи, это позволяет получить достаточно точный результат, затрачивая значительно меньше ресурсов, чем при точном вычислении.

Адаптивные алгоритмы JOIN

ClickHouse адаптивно выбирает алгоритм JOIN: начинает с быстрых hash JOIN, а если больших таблиц больше одной — переключается на merge JOIN.

Превосходная производительность запросов

ClickHouse хорошо известен своей исключительно высокой производительностью запросов. Чтобы узнать, почему ClickHouse работает так быстро, см. руководство Почему ClickHouse так быстр?.
Последнее изменение 10 июня 2026 г.