Что такое ClickHouse?
ClickHouse® — это столбцовая система управления базами данных (СУБД) с поддержкой SQL для онлайн-аналитической обработки (OLAP). Доступна как в виде ПО с открытым исходным кодом, так и в виде облачного сервиса.
ClickHouse® — это высокопроизводительная столбцовая система управления базами данных SQL (СУБД) для онлайн-аналитической обработки (OLAP). Она доступна как в виде ПО с открытым исходным кодом, так и в виде облачного сервиса.
Вы можете выполнить этот запрос в Песочнице ClickHouse SQL: он выбирает и фильтрует всего несколько из более чем 100 существующих столбцов и возвращает результат за миллисекунды:
Как видно из раздела статистики на диаграмме выше, запрос обработал 100 миллионов строк за 92 миллисекунды — это пропускная способность чуть более 1 миллиарда строк в секунду, или чуть менее 7 ГБ данных в секунду.
Строчно-ориентированная СУБД
В строчно-ориентированной базе данных, хотя приведённый выше запрос обрабатывает лишь несколько существующих столбцов, системе всё равно нужно загрузить с диска в память данные из других столбцов. Причина в том, что данные хранятся на диске блоками (обычно фиксированного размера, например 4 КБ или 8 КБ). Блоки — это наименьшие единицы данных, считываемые с диска в память. Когда приложение или база данных запрашивает данные, подсистема дискового ввода-вывода операционной системы считывает нужные блоки с диска. Даже если требуется только часть блока, в память всё равно считывается весь блок (это обусловлено устройством дисков и файловых систем):
Столбцовая СУБД
Поскольку значения каждого столбца хранятся на диске последовательно, одно за другим, при выполнении приведённого выше запроса не загружаются лишние данные.
Поскольку поблочное хранение и передача данных с диска в память соответствуют характеру доступа к данным в аналитических запросах, с диска считываются только столбцы, необходимые для запроса, что позволяет избежать лишних операций ввода-вывода для неиспользуемых данных. Это намного быстрее по сравнению с построчным хранением, где считываются целые строки (включая нерелевантные столбцы):
Под аналитикой, также известной как OLAP (онлайн-аналитическая обработка), понимаются SQL-запросы со сложными вычислениями (например, агрегациями, обработкой строк и арифметическими операциями) над огромными наборами данных.
В отличие от транзакционных запросов (или OLTP, Online Transaction Processing), которые читают и записывают всего несколько строк за запрос и потому выполняются за миллисекунды, аналитические запросы обычно обрабатывают миллиарды и триллионы строк.
Во многих сценариях аналитические запросы должны быть “в реальном времени”, то есть возвращать результат менее чем за одну секунду.
Такого уровня производительности можно добиться только при правильной «ориентации» данных.
Базы данных хранят данные либо построчно, либо по столбцам.
В базе данных с построчным хранением последовательные строки таблицы записываются одна за другой. Такая структура позволяет быстро извлекать строки, поскольку значения столбцов каждой строки хранятся вместе.
ClickHouse — это столбцовая база данных. В таких системах таблицы хранятся как набор столбцов, то есть значения каждого столбца записываются последовательно одно за другим. Такая структура усложняет восстановление отдельных строк (поскольку между значениями одной строки появляются разрывы), но операции со столбцами, такие как фильтрация или агрегация, выполняются значительно быстрее, чем в базе данных с построчным хранением.
Разницу проще всего показать на примере запроса, выполняемого на 100 миллионах строк реальных анонимизированных данных веб-аналитики:
ClickHouse использует асинхронную мультимастерную схему репликации, чтобы обеспечить избыточное хранение данных на нескольких узлах. После записи данных в любую доступную реплику все остальные реплики получают свои копии в фоновом режиме. Система поддерживает идентичность данных на разных репликах. Восстановление после большинства сбоев выполняется автоматически, а в сложных случаях — полуавтоматически.
ClickHouse поддерживает управление учетными записями пользователей с помощью SQL-запросов и позволяет настраивать ролевое управление доступом, аналогичное тому, которое используется в стандарте ANSI SQL и популярных системах управления реляционными базами данных.
ClickHouse поддерживает декларативный язык запросов на основе SQL, который во многих случаях соответствует стандарту ANSI SQL. Среди поддерживаемых секций запроса — GROUP BY, ORDER BY, подзапросы в FROM, секция JOIN, оператор IN, оконные функции и скалярные подзапросы.
ClickHouse позволяет жертвовать точностью ради производительности. Например, некоторые его агрегатные функции приблизительно вычисляют число различных значений, медиану и квантили. Кроме того, запросы можно выполнять на выборке данных, чтобы быстро получить приблизительный результат. Наконец, агрегации можно выполнять для ограниченного числа ключей, а не для всех сразу. В зависимости от того, насколько неравномерно распределены ключи, это может дать достаточно точный результат при значительно меньших затратах ресурсов, чем точное вычисление.
ClickHouse адаптивно выбирает алгоритм JOIN: начинает с быстрых hash JOIN, а если больших таблиц больше одной, переключается на merge JOIN.
ClickHouse широко известен исключительно высокой производительностью запросов.
Чтобы узнать, почему ClickHouse так быстр, см. руководство Почему ClickHouse такой быстрый?.
Последнее изменение 12 июня 2026 г.