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

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

1. CH открытый и бесплатный, в отличие от коммерческих систем СУБД (типа HP Vertica, Actiam Matrix и другие), которые используются в собственных инфраструктурах;

2. Если использовать СH в собственных инфраструктурах, можно не платить за облачное хранение;

3. ClickHouse поддерживает диалект языка SQL и не требует предагрегации данных;

4. ClickHouse работает в географически распределенных датацентах, загружает данные в режиме real-time и сам хранит их и загружает, чем отличается от Hadoop.
Как и когда использовать ClickHouse?
С основами разобрались, теперь предлагаем поговорить о реальных примерах, как использовать систему в работе
Real-time мониторинг и скорость

Такие мониторинги — первое, что делают аналитики Яндекса в начале рабочего дня ( по словам сотрудников компании). Здесь плюс ClickHouse в том, что но может быстро выгрузить данные по большому количеству срезов различных сервисов. То есть не нужно делать запрос и уходить на полчаса выпить кофе с коллегами. Очень многие отмечают, что скорость выдачи просто фантастическая. За время обработки запроса не всегда успеваешь даже сходить помыть чашку, не то что с кем-то поболтать. И это меняет подход во всей работе аналитиков. За то же время можно проверить огромное количество гипотез.

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

Поэтому такое решение отлично подойдёт для задач по типу:

— аналитика веб-приложений
— аналитика рекламных кампаний
— анализа операционных логов
— мониторинга логов безопасности
— финансового анализа
— мониторинга производственных процессов
Сжатие данных и широкие таблицы

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

Плюс факт, что ClickHouse — это поколоночная система, говорит о возможности быстрого и эффективного сжатия данных. Так как когда в одной колонке хранятся похожие данные, сжать их проще. Это в противовес системам хранения по строчкам, потому что тогда в строке идёт «все подряд» и сжимается хуже.
Компромиссы между скоростью и точностью

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

Для работы с реально большими данными есть функция семплирования (SAMPLE); Она позволяет разбивать запрос и считать сразу не по всем данным, а по выборкам, чтобы обработка шла быстрее. Но если все же нельзя пожертвовать точностью, функция OFFSET позволит посчитать по всем данным за несколько раз.
Еще несколько полезных функций

1. Удобно, что к базе можно подключить внешние словари из любого источника. Так, к примеру, Яндекс делит общую поисковую систему на подсистемы — Яндекс.Картинки, мобильная/десктопная версии и другие — и каждая поисковая система имеет свою цифру. Поэтому, чтобы на выходе получить ответ с названием поисковой системы, а не цифрой, и нужен словарь.

2. Используйте функцию «Array Join», когда у вас несколько элементов в массиве. Она позволяет «размножать» одну строку в несколько как раз по количеству элементов.

3. В ClickHouse используется асинхронная система репликации данных. Поэтому после того, как произошла запись на любую реплику, на фоне данные обновятся и на всех остальных репликах. И это прекрасно, так как восстановление данных в большинстве сбоев происходить автоматически.
Когда ClickHouse не подойдёт?

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

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

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

«Поколоночность» системы позволяет отлично сжимать данные. Также не будет проблем с очень длинными таблицами. И большой плюс ко всему — система отказоустойчива даже при сбое в датацентарх. Данные выживут даже если кто-нибудь решить выкопать один из кабелей датацентра.

По словам сотрудников Яндекса, освоить минимальный набор функций можно за пару дней, даже если до этого вы не были знакомы с SQL-системами. Дерзайте!
Ещё больше о ClickHouse можно узнать на нашем годовом курсе «Профессия: Аналитик». Присоединяйтесь!
Получить консультацию по курсу Аналитики
Мы расскажем детали курса, а также забронируем для вас текущую цену курса