Перейти к основному содержанию

Настоящая столбцовая система управления базами данных

В настоящей столбцовой СУБД вместе со значениями не хранятся никакие дополнительные данные. Это означает, что должны поддерживаться значения фиксированной длины, чтобы не хранить рядом со значениями число, указывающее их длину. Например, миллиард значений типа UInt8 должен занимать около 1 ГБ без сжатия, иначе это сильно влияет на загрузку CPU. Крайне важно хранить данные компактно (без какого-либо «мусора») даже в несжатом виде, поскольку скорость декомпрессии (и загрузка CPU) в основном зависит от объема несжатых данных. Это отличает ClickHouse от систем, которые могут хранить значения разных столбцов по отдельности, но не способны эффективно обрабатывать аналитические запросы, поскольку оптимизированы для других сценариев, таких как HBase, Bigtable, Cassandra и Hypertable. В таких системах можно получить пропускную способность порядка ста тысяч строк в секунду, но не сотен миллионов строк в секунду. Наконец, ClickHouse — это система управления базами данных, а не отдельная база данных. Она позволяет создавать таблицы и базы данных во время работы, загружать данные и выполнять запросы без перенастройки и перезапуска сервера.

Сжатие данных

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

Дисковое хранение данных

Физическая сортировка данных по первичному ключу позволяет извлекать данные по конкретным значениям или диапазонам значений с низкой задержкой — менее чем за несколько десятков миллисекунд. Некоторые столбцовые СУБД, такие как SAP HANA и Google PowerDrill, могут работать только в оперативной памяти. Такой подход требует бо́льших затрат на оборудование, чем необходимо для анализа в реальном времени. ClickHouse разработан для работы на обычных жестких дисках, а это значит, что стоимость хранения данных на ГБ остается низкой, при этом SSD и дополнительная оперативная память при их наличии тоже используются в полной мере.

Параллельная обработка на нескольких ядрах

Крупные запросы распараллеливаются сами, задействуя все необходимые ресурсы текущего сервера.

Распределённая обработка на нескольких серверах

Почти ни одна из упомянутых выше столбцовых СУБД не поддерживает распределённую обработку запросов. В ClickHouse данные могут размещаться на разных сегментах. Каждый сегмент может представлять собой группу реплик, используемых для отказоустойчивости. При выполнении запроса задействуются все сегменты, причём для пользователя это происходит прозрачно.

Поддержка SQL

ClickHouse поддерживает декларативный язык запросов на основе SQL, в основном совместимый со стандартом ANSI SQL. Среди поддерживаемых запросов — GROUP BY, ORDER BY, подзапросы в FROM, предложение JOIN, оператор IN, оконные функции и скалярные подзапросы. Коррелированные (зависимые) подзапросы на момент написания не поддерживаются, но могут появиться в будущем.

Векторный движок вычислений

Данные не только хранятся по столбцам, но и обрабатываются векторами (частями столбцов), что обеспечивает высокую эффективность использования CPU.

Вставка данных в реальном времени

ClickHouse поддерживает таблицы с первичным ключом. Чтобы быстро выполнять запросы по диапазону первичного ключа, данные постепенно сортируются в MergeTree. Благодаря этому данные можно непрерывно добавлять в таблицу. При приёме новых данных блокировки не применяются.

Первичные индексы

Физическая сортировка данных по первичному ключу позволяет извлекать данные по конкретным значениям или диапазонам значений с малой задержкой — менее чем за несколько десятков миллисекунд.

Вторичные индексы

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

Подходит для онлайн-запросов

Большинство OLAP-систем управления базами данных не ориентированы на онлайн-запросы с задержкой менее секунды. В других системах время построения отчётов в десятки секунд или даже минут часто считается приемлемым. Иногда на это уходит ещё больше времени, из-за чего отчёты приходится готовить офлайн (заранее или с ответом «зайдите позже»). В ClickHouse «низкая задержка» означает, что запросы могут обрабатываться без промедления и без предварительной подготовки ответа — прямо в тот момент, когда загружается страница интерфейса, то есть онлайн.

Поддержка приближённых вычислений

ClickHouse предоставляет различные способы пожертвовать точностью ради производительности:
  1. Агрегатные функции для приближённого вычисления числа различных значений, медиан и квантилей.
  2. Выполнение запроса по части (SAMPLE) данных с получением приближённого результата. В этом случае с диска считывается пропорционально меньше данных.
  3. Выполнение агрегации для ограниченного числа случайных ключей вместо всех ключей. При определённых условиях распределения ключей в данных это даёт достаточно точный результат при меньших затратах ресурсов.

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

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

Поддержка репликации данных и целостности данных

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

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

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

Особенности, которые можно считать недостатками

  1. Нет полноценных транзакций.
  2. Нет возможности с высокой скоростью и малой задержкой изменять или удалять уже вставленные данные. Для очистки или изменения данных доступны пакетные удаления и обновления, например, для соблюдения требований GDPR.
  3. Разреженный индекс делает ClickHouse не слишком эффективным для точечных запросов, возвращающих отдельные строки по ключу.
Последнее изменение 10 июня 2026 г.