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

Отличительные особенности ClickHouse

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

В настоящей столбцовой СУБД никакие дополнительные данные не хранятся вместе со значениями. Это означает, что значения фиксированной длины должны поддерживаться для того, чтобы избежать хранения их длины "числом" рядом со значениями. Например, миллиард значений типа UInt8 должен занимать около 1 ГБ в несжатом виде, иначе это сильно повлияет на использование CPU. Важно компактно хранить данные (без какого-либо "мусора"), даже когда они несжаты, так как скорость декомпрессии (использование CPU) зависит в основном от объема несжатых данных.

Это в контексте систем, которые могут хранить значения разных колонок отдельно, но не могут эффективно обрабатывать аналитические запросы из-за их оптимизации для других сценариев, таких как 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 поддерживает таблицы с первичным ключом. Чтобы быстро выполнять запросы по диапазону первичного ключа, данные сортируются инкрементально с использованием дерева слияния. Благодаря этому данные могут постоянно добавляться в таблицу. При приеме новых данных блокировки не устанавливаются.

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

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

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

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

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

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

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

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

ClickHouse предоставляет различные способы изменить точность ради производительности:

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

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

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

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

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

Для получения дополнительной информации смотрите раздел Репликация данных.

Контроль доступа на основе ролей

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

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

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