Обзор ClickHouse — СУБД для онлайн-аналитики
Многие крупные компании содержат у себя в штабе аналитический отдел, специалисты которого следят за динамикой рынка, анализируют деятельность конкурентов или анализируют поведение своих клиентов на онлайн-площадках. Так или иначе, специалисты сталкиваются с огромными объемами информации, аналитика которых требует не только классификации работника, но и специальных инструментов. ClickHouse — один из таких инструментов, особенности и принципы работы которого рассмотрены в данном материале.
Знакомство с ClickHouse
ClickHouse — СУБД доступным для пользователя исходным кодом системы для обработки и анализа онлайн запросов, а также сохранения данных в виде колоночной системы. Иными словами, ClickHouse — инструмент для структурирования в виде колонок аналитических данных, с использованием SQL-запросов в реальном времени.
Особенности системы и принцип функционирования
Данные в столбовых СУБД представлены по колонкам, но с точки зрения SQL, данные все также представлены в виде привычных традиционных таблиц, однако на жестких дисках или других носителях информации они являются совокупностью полей (столбцов), каждая из которых является отдельным файлом, а значит таблицей из одного поля. Данные при таком подходе хранятся физически рядом, друг за другом.
Как упоминалось ранее, ClickHouse поддерживает язык SQL и соответствует PostgreSQL с точки зрения выразительности и простоты. Система также отлично работает c различными расширениями по типу: массивы и заложенные компоненты данных, вероятностные структуры, имеется опция установки внешнего key-value хранилища, а также включает в себя функции взаимодействия с вложенными объектами: arrayMap и arrayFilter.
Помимо этого, СУБД имеет довольно гибкие настройки соединения с иными системами типа Big Data, например: Арасhе Каfkа и HDFS, а также с МуSQL через ODВС или JDВС.
Основные преимущества и минусы ClickHouse
ClickHouse, как и любая другая СУБД, имеет ряд преимуществ, которые напрямую влияют на ее применение:
- масштабируемость — позволяет изменять и хранить сотни гигабайтов данных;
- сжатие обработанных данных — процесс сокращения размеров файлов информации позволяет улучшить быстродействие и
- эффективность системы;
- столбовое хранение данных — процесс чтения необходимой информации происходит исключительно из подходящего для запроса столбца, что дает возможность сокращать повторяющуюся информацию. В СlickHоusе поддерживаются значения постоянной длины, чтобы не хранить рядом размер типа;
- линейная масштабируемость — при помощи возможности добавления дополнительных серверов система значительно расширяет функционал в работе с SQL;
- классификация данных по ключевым запросам – система оперативно реагирует на запросы пользователя и выдает результат;
- векторные аппаратные вычисления — сокращают затраты на контролирование процессов работы, тем самым уменьшая нагрузку на СРU;
- одновременность операций в рамках одиночного сервера на несколько ядер процессора и между упорядоченных вычислений при помощи механизма шардирования;
- возможность примерных вычислений — увеличивает скорость анализа данных без увеличения количества обращений к хранилищу;
- наличие сервисов и клиентов для интеграции с БД. Активно применяются клиенты НТТР АРI, wrарреr’ы на Руthоn, РНР, NоdеJS, Реrl, Rubу. Также для ClickHouse есть JDВС и Gоlаng драйверы;
- надежность системы — записи данных на любой носитель, автоматически создает копию на других, а для организации эффективной работы всех имеющихся копий используется ZооKеереr;
- оптимизация под HDD-носители — дает возможность работать с внешними жесткими дисками и обрабатывать данные, которые выходят за рамки объемов одного носителя персонального компьютера пользователя;
Также выделяют:
- легкость настройки — избавляет от необходимости в подключении неизвестных библиотек, файлов конфигурации, проблем с разрешениями пользователей и с репликацией данных;
- имеется индекс — систематизация данных по единственному потенциальному ключу, дает возможность обработки данных для конкретных запросов или их диапазонов с минимальным временем отклика (около 10 миллисекунд);
- интеграция под пользовательские онлайн-запросы — высокая работоспособность позволяет снизить промежутки между ожиданиями и не использовать ранее заготовленные ответы, а загружать их напрямую со страницы администратора интерфейса.
Здесь стоит отметить, что ClickHouse имеет табличную структуру, что дает преимущество перед строчными СУБД и позволяет снизить нагрузку на устройство в 17 раз, чем при выполнении данного запроса в строчных СУБД.
ClickHouse также имеет ряд недостатков по сравнению с аналогичными системами:
- отсутствие полноценных транзакций — в отличие от MySQL, ClickHouse не имеет возможности осуществлять транзакций, а значит ее спектр возможностей в работе с трансакциями ограничен;
- сложности в работе с одиночными запросами — чтение и обработка одиночных строк отступает аналогичным СУБД. Несмотря на преимущество табличной структуры перед строчной, алгоритм чтения пользовательских запросов не способен выполнять одиночные запросы по поиску конкретных данных, что усложняет процесс работы;
- удаление и изменения ранее записанных данных при большом количестве запросов происходят медленнее конкурентов. При работе с аналитикой не исключена вероятность ошибок, связанных с теми или иными факторами (невнимательность оператора, сбои), в этой связи ключевой опцией является редактирование уже внесенной в базу данных информации.
- несовершенство функции одиночного чтения и изменения данных, что увеличивает риск ошибок при вводе.
Где применяется ClickHouse
Система создана прежде всего для выполнения аналитических функций, а значит отлично подходит для следующих типов задач:
- аналитика веб-приложений — позволяет следить и анализировать особенности работы сетевых программ;
- аналитика метрик в режиме реального времени — для любого владельца сайта важно иметь как можно более глубокую статистику по посещаемости и взаимодействию со страницами ресурса.
ClickHouse позволяет отслеживать пользовательскую активность в режиме реального времени, что дает возможность составить портрет своей ЦА;
Еще одной областью применения является мониторинг и анализ логов. После настройки регулярной поставки серверных access или других логов с помощью SQL запросов можно анализировать инциденты, осуществлять мониторинг метрики сервиса и контролировать соблюдение установленных процедур стандартов безопасности; мониторинг и анализ данных в режиме реального времени — дает возможность отслеживать изменения по ключевым показателям (клики, время, проведенное на странице ресурса и т. д.).
Благодаря возможности обработки файлов больших размеров, а также умению работать со сложными вычислительными запросами система отлично подойдет для анализа БД в бизнес-сегменте.
Помимо положительных способов использования ClickHouse, необходимо выделить ряд операций, для которых СУБД не подойдет:
- для хранения неструктурированных данных, например, видео, картинок, музыки, фильмов, роликов;
- для обновляемых данных. ClickHouse не поддерживает транзакции — последовательность операций, которые должны выполниться все вместе или среди которых не должна выполниться ни одна. Это ограничивает функционал системы в банковской сфере, где необходимо отследить операции клиентов.
Выводы
ClickHouse менее универсальна чем аналогичные СУБД, однако она отлично подходит для аналитических задач в сфере бизнес и веб-аналитики. Благодаря табличной структуре, система способно выполнять сразу несколько запросов и при этом не нагружать память устройства.
Система работает с отечественными технологиями и активно применяется в Яндекс-метрики. Если говорить о недостатках ClickHouse, то необходимо выделить отсутствие трансакций, что делает невозможным применения системы в банковском секторе.
Таким образом, СУБД ClickHouse используется чаще всего для анализа онлайн-запросов, а также мониторинга активности пользователей на веб-сайтах и в приложениях.