В блог
Clickhouse – что это за СУБД и для кого нужна - IT Resume

Clickhouse – что это за СУБД и для кого нужна

Дата последнего обновления: 06.06.2025
Дата размещения: 06.06.2025
Антон Шишков
Software Engineer

Введение

Наряду с традиционными SQL СУБД вроде Postgres, MariaDB, MS SQL Server, существуют также NoSQL СУБД, отличающиеся заточенностью и высокой производительностью для определенного типа задач. NoSQL СУБД в свою очередь подразделяются на различные типы: key-value (например, Redis), документоориентированные (MongoDB), графовые (Neo4J), а также колоночные (Cassandra).

Среди колочных NoSQL СУБД особую популярность приобрела Clickhouse. Это колоночная система управления базами данных, отличающаяся высокой производительностью в области OLAP и предоставляемая как в формате open-source решения, так и в формате облачного решения.

Когда и кто разработал

Clickhouse была создана в 2009 году российской компанией Яндекс для обеспечения работы собственной аналитической платформы Яндекс Метрика. Тем не менее с ростом ее популярности в 2016 она была переведена в open-source под лицензией Apache 2. В настоящий момент Clickhouse - это отдельная компания ClickHouse Inc., не аффилированная с Яндекс и оперирующая в юрисдикции США (Сан-Франциско).

Для кого нужна эта СУБД

Clickhouse нужна прежде всего для решения OLAP задач. Задачи, решаемые СУБД, можно поделить на два типа: транзакционные (OnLine Transaction Processing - OLTP) и аналитические (OnLine Analytical Processing - OLAP). OLTP задачи отличает фокус на большом количестве индивидуальных транзакций, тогда как для OLAP задач характерна работа с большим объемом исходных данных. Примером OLTP задачи может являться запись в БД информации о действиях пользователя в приложении, в то время как примером OLAP задачи будет являться расчет какой-либо метрики поверх всех действий всех пользователей в приложении (например, расчет clickthrough rate или CTR нажатия на определенную кнопку в интерфейсе).

Собственно Clickhouse проявляет свои лучшие свойства именно при выполнении OLAP задач, в рамках которых надо работать с очень большим объемом данных, приводить их к определенной структуре и формату представления, удобному для принятия решения: подготовка прогноза продаж, определение эффективности веб-кампании, медицинский анализ результатов использования пациентами лекарств и многое другие задачи.

Особенности и преимущества

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

Хоть Clickhouse относится к NoSQL СУБД, она поддерживает как SQL-подобный язык запросов, так и настройку доступа по ролям. Высокая производительность Clickhouse обеспечивается не только за счет хранения данных по колонкам, но и использованию приблизительных вычислений, когда позволяется приносить в жертву точность в пользу прироста эффективности.

Последней по списку, но не по важности особенностью Clickhouse является наличие алгоритмов соединений, начиная с относительно быстрых хэш-соединений и заканчивая медленными слияниями соединений.

Отличие Clickhouse и Postgres

В то время как Postgres является OLTP SQL реляционной СУБД с построчным хранением данных, где важны частые изменения и точечные выборки по строкам, Clickhouse представляет собой OLAP NoSQL нереляционную СУБД с поколоночным хранением, позволяющую эффективно выполнять операции агрегации и анализа больших массивов данных с менее быстродействующей реализацией операций модификации отдельных записей.

Postgres может быть использована для быстрой модификации отдельных записей, например, в приложениях CRM, ERP, интернет-магазинах и других. Clickhouse заточен для работы в рамках задач, где нужно оперативно и эффективно агрегировать и анализировать огромные объемы данных, например, аналитические платформы, финансовые или операционные расчеты, сбор логов и так далее.

Но это не единственное отличие данных СУБД. В части масштабируемости про Postgres обычно считается, что эта СУБД лучше всего подходит для вертикального масштабирования посредством увеличения мощности одного сервера, тогда как относительно Clickhouse можно сказать, что она спроектирована под горизонтальное масштабирование и функционирование в рамках распределенных кластеров. В части транзакционности на фоне того, что Postgres полностью поддерживает ACID транзакции, Clickhouse жертвует транзакционностью в пользу производительности.

В части репликации, Postgres привержен потоковой репликации по модели “Основной - Реплика”, обеспечивающей консистентность, Clickhouse же применяет собственные механизмы репликации, отшлифованные для распределенных сред, с фокусом на высокую доступность и масштабируемость.

Резюмируя, можно заключить, что Postgres подходит для оперативного хранения данных, тогда как Clickhouse - для построения аналитики и отчетности.

Архитектура

Архитектурные особенности Clickhouse обеспечивают ее скорость, масштабируемость и эффективность при работе с очень большими объемами данных (триллионы строки и сотни колонок).

Выделяются следующие ключевые компоненты архитектуры:

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

Говоря об архитектуре Clickhouse, также выделяют следующие слои: слой хранения, отвечающий за физическое хранение данных по колонкам, индексацию, партционирование и сжатие; слой обработки запросов, включающий парсер SQL, оптимизатор, планировщик и векторный движок выполнения запросов; интеграционный слой, обеспечивающий взаимодействие с внешними источниками данных, системами резервного копирования, мониторинга и управления доступом. В конечном счете особенности архитектуры Clickhouse обеспечивают ее высокую производительность при аналитических запросах, эффективное сжатие данных, горизонтальную масштабируемость и гибкую возможность взаимодействия с другими ПО.

Типы данных

Clickhouse поддерживает широкий набор типов данных, основные категории которых: числовые, строковые, временные, составные и специальные. Числовые типы включают в себя целые числа (например, Int64), числа с плавающей запятой (Float64), десятичные числа (Decimal64). Строковые типы представлены строкой произвольной длины (String) и строкой фиксированной длины (FixedString). Дата и время приведены в форматах Date, Datetime, Time. Выделяют также логический true или false. Имеются структуры, состоящие из нескольких элементов вроде Array, Tuple, Nullable, LowCardinality и других. Встречаются и особые структуры наподобие JSON, UUID, IPv4, Variant. При этом важно помнить, что все типы данных Clickhouse чувствительны к регистру в названиях.

Примеры использования

Clickhouse применяется в самых разных направления, где востребован быстрый анализ большого объема данных.

  1. Веб аналитика или событийная аналитика. Собственно изначально Clickhouse создавался для сервиса Яндекс Метрика для анализа посещаемости сайтов.
  2. Анализ больших открытых наборов данных вроде поездок такси в Нью-Йорке, логи кликов, данные различных репозиториев (Kaggle, GitHub).
  3. Рекламные технологии и маркетинг: построение сложных маркетинговых воронок, расчет конверсий, отрисовка карты действий пользователя.
  4. Мониторинг посредством обработки операционных логов для поиска аномалий и построения отчетов или выявления подозрительных с точки зрения безопасности активностей.
  5. Финансовая аналитика благодаря обработке многомерных OLAP кубов (построение финансовых отчетов) или процессингу огромных исторических выборок (анализ котировок акций).
  6. Телеком или IoT - обработка логов для оптимизации работы сетей и устройств.
  7. E-commerce: отслеживание эффективности акций, персонализация предложений, генерация отчетов по ключевым бизнес метрикам вроде выручки, прибыли и других.
  8. Прочие нетипичные задачи, например, анализ генетических данных в биоинформатике.

Как начать работать

Существует несколько способов начать работу с Clickhouse:

  1. Локальная установка, для чего потребуется скачать и запустить бинарный файл для вашей операционной системы.
  2. Локальная разработка с помощью Docker, когда нужный образ будет скачан Docker Hub и развернут внутри linux контейнера.
  3. Воспользоваться услугами облачных платформ вроде Yandex Cloud или VK Cloud.

Установка и подключение

Если вы выбрали опцию локальной установки, то это можно сделать следующим образом. Если вы пользователь Mac/Linux, то алгоритм следующий:

  • Во-первых, запустить из терминала следующую команду, которая автоматически определит вашу операционную систему и скачает нужный файл: curl https://clickhouse.com/ | sh.
  • Во-вторых, следует запустить сервер с помощью следующей команды, которая создаст необходимые каталоги и файлы: ./clickhouse server.
  • В-третьих, стоит запустить клиент, открыв новый терминал и выполнив следующую команду: ./clickhouse client. Вы увидите приглашение к вводу SQL запросов. Если вы пользователь Windows, то необходимо предварительно установить WSL и далее войти в терминал Ubuntu, где выполнить приведенные выше команды.

Заключение

Clickhouse - это мощный аналитический инструмент (колоночная NoSQL СУБД), позволяющий производить агрегацию и анализ огромного объема данных и отличающийся хранением данных по колонкам, работой в распределенном кластере, высокой отказоуйсточивостью. возможностями горизонтального масштабирования, приближенными вычислениями, выдающейся производительностью при обработке аналитических запросов.

Подпишитесь на нашу рассылку
Имя*
Email*
Номер телефона*
Заполняя данную форму, Вы соглашаетесь с политикой конфиденциальности
Никакого спама. Только точечные рассылки с лучшими материалами.