- Особенности колоночных СУБД
- Общая характеристика ClickHouse
- Главные преимущества ClickHouse
- Некоторые недостатки работы с ClickHouse
- Сферы применения ClickHouse
- Часто задаваемые вопросы о ClickHouse
- Что означает название ClickHouse?
- Что такое OLAP?
- Применима ли ClickHouse в качестве БД временных рядов?
- Можно ли применять ClickHouse для хранения данных типа «ключ-значение»?
- Для каких бизнес-процессов может применяться инструмент?
25 рабочих гипотез для увеличения конверсии на 40%
Скачать материалы
О чем речь? ClickHouse от компании Яндекс – один из популярных видов баз данных с открытым исходным кодом. Ее задача – быстрая обработка аналитических данных в режиме реального времени.
На что обратить внимание? У ClickHouse есть множество преимуществ вроде высокой скорости, масштабируемости и легкости настройки. Но имеются и некоторые недостатки, такие как отсутствие транзакций, сложность точечной работы и высокие требования к оперативной памяти сервера.
Особенности колоночных СУБД
Скорость работы традиционных систем управления базами данных при обработке больших объемов информации значительно падает, а потребление ресурсов компьютера возрастает. Любая классическая реляционная база данных, хранящая данные в строках, имеет известный недостаток – достаточно продолжительное время чтения при сложных аналитических запросах, особенно если количество записей достигает нескольких миллиардов.
Для работы с большими по объему базами данных были разработаны колоночные СУБД, в которых был изменен способ хранения информации. Если набор значений содержится в одном столбце, то отчет по запросу строить гораздо легче и быстрее.
Колоночные системы управления базами данных предпочтительнее применять при реализации OLAP сценариев, то есть обработке аналитических запросов в онлайн-режиме. Перечислим основные особенности:
- фактически все запросы производятся на чтение;
- пакетное добавление и обновление данных (свыше 1000 строк одновременно);
- добавленная информация не изменяет свои атрибуты;
- таблицы содержат большое число столбцов;
- отсутствие транзакций;
- при обработке простых запросов допустимы задержки, не превышающие 50 мс;
- невысокие требования к согласованности данных.
OLAP-СУБД обладает повышенной производительностью по сравнению с классическими системами. ClickHouse является одной из них.
Общая характеристика ClickHouse
Система управления базами данных использует подвид (диалект) синтаксиса SQL, отличающегося от классического варианта наличием дополнительных возможностей. Например, для работы с массивами данных или внешними базами «ключ-значение». Впрочем, любой проектировщик, знающий SQL-системы, без особого труда освоит и ClickHouse. Обучение не займет много времени.
Для выяснения причин большей производительности ClickHouse по сравнению с классическими строковыми СУБД следует проанализировать принципы их функционирования. Традиционные системы управления базами данных (к примеру, PostgreSQL) при чтении по big data должны обрабатывать линии полностью. Только при проходе через столбец происходит определение имени и актуальность строки для текущей задачи. Пропуск колонок, содержащих ненужную информацию, невозможен.
В колоночной СУБД проход по всем строкам необязателен. Выборка происходит только по тем столбцам, которые фигурируют в запросе. Отличие заключается еще и в том, что каждая колонка хранится в индивидуальном файле, в то время, как у строковой системы управления базами данных вся таблица распределена по двум-трем. За счет такой организации скорость обращения к конкретному столбцу у ClickHouse намного выше.
На сайте производителя СУБД можно сравнить быстродействие систем. Обработка миллиона записей занимает у ClickHouse всего одну секунду. По сравнению, строковой MySQL на эту же операцию требуется 823,64 с.
Хранение информации в столбцах дает преимущество при сжатии файла базы. Из-за разных типов данных подобная оптимизация в строковых СУБД гораздо менее эффективна. При колоночном способе записи поиск по сопоставимым по размеру БД происходит быстрее, а запрос требует меньшего числа операций ввода-вывода.
В ClickHouse доступен метод сэмплирования, то есть способа формирования репрезентативной выборки. Например, при необходимости проверки запроса можно запустить его на части данных, не задавая обработку всего массива. Это позволяет сделать вывод о генеральной совокупности за более короткий промежуток времени.
Масштабирование в ClickHouse происходит линейно. Иными словами, наблюдается постоянный рост производительности при репликации данных. В некоторых СУБД скорость работы постоянна или может даже снижаться.
Разработанная Яндексом система управления в дополнение к интерфейсам CLI и TCP может работать по HTTP-протоколу для экспорта и импорта данных. По нему же обращается к БД и веб-версия, написанная на JavaScript.
Особенностью ClickHouse является отсутствие привычного Primary Key. Его функции выполняет обычный параметр, по которому происходит сортировка. Например, этим показателем могут выступать: дата события или Client ID. Для этого применяется команда OrderBy. Кроме того, нет привычных по другим СУБД команд UPDATE и DELETE. Однако это не означает, что обновлять и удалять в ClickHouse нельзя.
В системе от Яндекса присутствуют движки таблиц, которые определяют:
- табличное пространство, их запись и чтение;
- поддерживаемые запросы;
- методы доступа к информации;
- применение индексов;
- многопоточное выведение запроса;
- параметры репликации данных.
Самый распространенный – MergeTree, позволяющий производить объединение в фоновом режиме. Существуют вариации:
- ReplacingMergeTree – удаление дубликатов.
- SummingMergeTree – суммирование всех числовых колонок по ключу.
- AggregatingMergeTree – определение среднего значения.
- CollapsingMergeTree – удаление.
- GraphiteMergeTree – подготовка данных для Graphite.
Перечень движков для ClickHouse этим не ограничивается. Есть разновидности для работы с логами, интеграциями (Kafka) и другими СУБД – MySQL, DB2, MongoDB.
Интересное наблюдение: система управления базами данных от Яндекса, разработанная российскими программистами, работает с командами даже в русской раскладке. Например, для нее одинаково понятны «input» и «штзге».
Главные преимущества ClickHouse
Кроме достаточно высокой скорости работы ClickHouse, пользователи выбирают эту СУБД из-за ряда других достоинств:
- Масштабируемость. Возможность хранения и изменения больших объемов информации.
- Векторные аппаратные вычисления. Происходит снижение затрат ресурсов (мощности ЦПУ) на контроль за процессами.
- Возможность примерных вычислений. Скорость анализа данных возрастает без увеличения числа обращений.
- Интеграция и совместимость с БД. Возможность работы по различным протоколам: НТТР АРI, wrарреr’s на Руthоn, РНР, NоdеJS, Реrl, Rubу.
- Оптимизация под HDD-носители. Возможна работа с внешними хранилищами.
- Простая настройка опций. Пользователю СlickНouse нет необходимости скачивать и подключать сторонние библиотеки.
- Интеграция под пользовательские онлайн-запросы. Высокая производительность снижает периоды ожидания и избавляет от применения заготовок ответов с возможностью их загрузки прямо из интерфейса администратора.
Некоторые недостатки работы с ClickHouse
Наряду с неоспоримыми преимуществами эта СУБД имеет и недостатки:
- Отсутствие транзакций. ClickHouse предназначался для обработки статистических данных. Реализовать транзакционный сценарий в системе не получится.
- Сложность «точечной» работы. Система управления базами данных работает с крупными массивами. В ней отсутствуют удобные инструменты для поиска, обновления или удаления конкретной строки.
- Высокие требования к ОЗУ сервера. Для комфортной скорости работы с большими БД необходима емкая и быстрая оперативная память. По некоторым типам запросов массив промежуточных данных полностью подгружается в RAM, объем которой по рекомендациям разработчиков ClickHouse не должен быть ниже 4 Gb.
- Возможность возникновения багов. Существует вероятность возникновения ошибок при реализации тех или иных сценариев. Относительной защитой служит функция редактирования внесенной в БД информации.
- Уязвимость HTTP-протокола. Взломщики могут провести, например, HTTP request smuggling (атаку некорректной передачи запросов) и получить права на управление базой данных.
При использовании ClickHouse нужно принимать к сведению возникающие угрозы и реализовывать действенные меры по повышению безопасности передачи и хранения информации.
Сферы применения ClickHouse
По причине высокой скорости создания аналитических отчетов по достаточно объемным БД в режиме real time эта СУБД находит применение во многих сферах. Перечислим некоторые из них:
- веб-аналитика и таргетинг;
- мониторинг бизнес-метрик в режиме реального времени;
- интерактивная коммуникация с пользователями;
- контроль технических параметров, в том числе и в концепции передачи данных между физическими объектами (internet of things, IoT);
- реализация корпоративных хранилищ данных.
Большое количество фирм по всему миру оценили достоинства этой СУБД, позволяющей делать быструю аналитику. Наиболее известные компании, выбравшие продукт: американские компании Bloomberg и Cloudflare, онлайн-кинотеатр ivi.ru, Тинькофф Банк, Mail.ru и Rambler, интернет-сервис Avito, популярная социальная сеть ВКонтакте. Маркетинговое агентство Adventum также использует ClockHouse для решения задач клиентов.
Ознакомится в с возможностями сервиса и посмотреть кейсы можно здесь: analytics.adventum.ru
Какие типы задач можно решать при помощи системы? ClickHouse является оптимальным инструментом, но все же имеет свою специализацию. Не рекомендуется использование для БД с динамически обновляемыми данными, так как в СУБД отсутствует поддержка транзакций. Это накладывает ограничение на применение в сфере интернет-банкинга, где существует необходимость отслеживания всех клиентских операций.
ClickHouse также малоэффективен для организации хранения неструктурированных объектов (например, изображений, видео- и аудиофайлов).
Часто задаваемые вопросы о ClickHouse
Что означает название ClickHouse?
Это компиляция английских выражений Click stream и Data ware House. Что в переводе обозначает: «Нажмите поток» и «Хранилище данных». Это название унаследовано из сервиса «Яндекс.Метрика», в котором ClickHouse применялся для хранения истории визитов пользователей на сайты и всех их поисковых действий.
Что такое OLAP?
OLAP – это аббревиатура OnLine Analytical Processing. В переводе с английского — интерактивная аналитическая обработка. Представляет собой технологию манипуляции с данными, заключающуюся в подготовке агрегированной информации на основе больших массивов. Если проще, то принцип действия такой: происходит обработка неких данных для получения осмысленного отчета в режиме реального времени.
Применима ли ClickHouse в качестве БД временных рядов?
Несмотря на то, что ClickHouse является инструментом для операций OLAP, ее высокая производительность позволяет применять и в этой области, причем она достаточно конкурентоспособна по сравнению со специализированными СУБД.
Можно ли применять ClickHouse для хранения данных типа «ключ-значение»?
К сожалению, ClickHouse не рассматривалась разработчиками для этих целей, о чем есть прямое упоминание в спецификации, опубликованной на сайте продукта. Тем не менее, при низком QPS возможно получение неплохих показателей задержки для точечных запросов. Кроме того, ClickHouse также предоставляет несколько видов словарей, при определенных обстоятельствах, могущих служить внешним хранилищем значения ключа.
Для каких бизнес-процессов может применяться инструмент?
ClickHouse является универсальной СУБД, подходящей для работы с большими базами данных практически в любой сфере. Инструмент успешно применяют и небольшие онлайн-сервисы, и крупные корпорации. Наилучшей областью для использования считается проектирование, требующее частой обработки элементов и многочисленных однотипных расчетов.
Скорость реакции на запросы по обновляемым в режиме реального времени данным у ClickHouse достаточно высока для использования в интерактивных приложениях. СУБД в состоянии масштабироваться до десятков триллионов записей и петабайтов данных. Применение ClickHouse позволяет сохранять практически весь поток данных без объединения всех элементов в одну систему и получать отчеты с высокой скоростью, о чем еще совсем недавно можно было только мечтать.