ClickHouse: обзор и сравнение с традиционными базами данных

Зачем бизнесу могут понадобиться колоночные СУБД? Почему они быстрее традиционных систем? Какие задачи можно решать с помощью ClickHouse?

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

Зачем понадобились колоночные (столбцовые) системы управления базами данных

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

Чтобы ускорить построение отчётов, были придуманы колоночные СУБД, которые, как можно догадаться, изначально хранят данные в колонках. Если один столбец содержит единственный набор значений, то становится гораздо проще строить отчёты по каким-либо показателям. Колоночные СУБД лучше всего подходят для OLAP сценариев работы — обработки аналитических запросов в режиме онлайн. Для таких задач характерны следующие факторы:

  • подавляющее большинство запросов идёт на чтение;

  • данные добавляются и обновляются достаточно большими пачками (> 1000 строк), а не по одной строке, или не добавляются и не обновляются вообще;

  • данные добавляются в базу данных, но не изменяются;

  • при чтении используется достаточно большое количество строк из базы данных, но только небольшое подмножество столбцов.

Если вы попытаетесь использовать для аналитики классические СУБД, то получите очень низкую производительность по сравнению с OLAP-СУБД. Это проще продемонстрировать визуально:

Анимация СУБД

Анимация колоночные СУБД

ClickHouse

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

Вот лишь некоторые архитектурные особенности ClickHouse:

  • столбцовое хранение данных — данные считываются только из нужных колонок, и однотипная информация эффективно сжимается;

  • поддержка приближённых вычислений на части выборки — снижается число обращений к жёсткому диску, что ещё больше повышает скорость обработки данных;

  • физическая сортировка данных по первичному ключу — можно быстро получить конкретные значения или диапазоны;

  • векторные вычисления по кусочкам столбцов — снижаются издержки на диспетчеризацию, эффективно используется CPU;

  • распараллеливание операций как в пределах одного сервера на несколько процессорных ядер, так и в рамках распределённых вычислений на кластере за счёт механизма шардирования;

  • линейная масштабируемость — есть возможность построить кластер очень большого размера;

  • работа с жёсткими дисками — ClickHouse достаточно эффективно работает, когда данные не попадают в кеш памяти целиком. Дополнительно это снижает стоимость эксплуатации системы, так как жёсткие диски дешевле RAM;

  • отказоустойчивость — система представляет собой кластер шардов, где каждый шард — это группа реплик.

ClickHouse поддерживает клиенты для подключения к базе данных: консольный клиент, HTTP API, ряд wrapper’ов на Python, PHP, Node.js, Perl, Ruby, R и многие другие. Также для ClickHouse есть JDBC- и Golang-драйверы.

Колоночная СУБД

Где можно применять ClickHouse

За рамки внутренних проектов ClickHouse вышла в 2013 году, когда её начали применять для анализа метаданных о событиях эксперимента LHCb в CERN. Базу данных могли бы использовать более широко, но в то время мешал закрытый статус. Однако уже в июне 2016 года исходный код ClickHouse был выложен в open source под лицензией Apache 2.0. Это позволило взять её на вооружение IT-департаментам множества отечественных и зарубежных компаний. В их числе Cloudflare, Bloomberg, ВКонтакте, «Тинькофф банк», Avito, онлайн-кинотеатр ivi.ru, интернет-порталы Mail.ru и Rambler. Например, социальная сеть VK использует нашу СУБД для хранения и чтения отладочных логов. Аналогично делают и другие компании, сгружая в базы данных логи микросервисов и приложений за большой период, а затем быстро возвращаясь к ним для анализа.

ClickHouse в 2020 году — это полноценная СУБД, которая обладает очень широкими возможностями. Создавайте таблицы и базы данных в runtime, загружайте из разных источников данные, анализируйте их и выполняйте запросы без переконфигурирования и перезапуска сервера. ClickHouse позволяет реализовать быстрый доступ к корпоративным хранилищам данных, поддерживает декларативный язык запросов на основе SQL, во многих случаях совпадающий с SQL стандартом. СУБД можно интегрировать с такими Big Data системами, как Apache Kafka® и HDFS, а также с MySQL® и прочими внешними источниками данных через ODBC или JDBC.

Возможности колоночных СУБД и преимущества конкретно ClickHouse позволяют очень эффективно использовать нашу разработку в самых разных сферах. Это могут быть:

  • аналитика веб-проектов и мобильных приложений;

  • рекламные сети и real-time bidding (торги в реальном времени);

  • телекоммуникации;

  • электронная коммерция и финансы;

  • информационная безопасность;

  • бизнес-аналитика;

  • онлайн-игры;

  • интернет вещей.

Но по-прежнему главное преимущество ClickHouse — невероятная скорость. Она позволяет решать очень важную общую задачу бизнеса в области аналитики поведения клиентов — очень быстро и легко генерировать аналитические отчёты по большим данным в режиме реального времени. Это актуально для ритейла, телекома, любой интернет-инфраструктуры, хранения данных и быстрого к ним доступа с устройств интернета вещей и т. д.

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

Что дальше?

Мир накапливает очень много больших неструктурированных данных, к которым нужно иметь доступ в режиме реального времени. И для этого необходимо развивать и совершенствовать такие системы управления базами данных, как ClickHouse.

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

Как использовать ClickHouse в Облаке

Для этого уже есть сервис управляемых баз данных ClickHouse, который помогает разворачивать и поддерживать в инфраструктуре Yandex Cloud кластеры баз данных на основе ClickHouse. Вы получаете все описанные преимущества колоночных СУБД, и при этом вам не нужно покупать и настраивать железо, разбираться со сложностями в обслуживании баз данных и решать проблемы с обновлением. Кроме того, Yandex Managed Service for ClickHouse значительно повышает безопасность работы и позволяет создавать хосты кластера в разных зонах доступности.

Создайте свой первый кластер ClickHouse →

Документация →

Если у вас возникли вопросы, напишите нам, и мы оперативно расскажем о возможностях сервиса Managed Service for ClickHouse, поможем с реализацией вашего решения в облаке или подберём партнёра, который полностью реализует ваш ИТ-проект.

Безопасность Yandex Cloud

Узнать больше про безопасность платформы

Тарифы

Узнать цены и рассчитать стоимость

Мероприятия

Календарь событий Yandex Cloud
ClickHouse: обзор и сравнение с традиционными базами данных

SevenTech: переход на Managed Service for ClickHouse

Войдите, чтобы сохранить пост