Что такое ClickHouse
ClickHouse – это столбцовая система управления базами данных (СУБД), предназначенная для онлайн-аналитической обработки запросов (OLAP). Разработанная в 2009 году крупнейшей российской технологической компанией "Яндекс", ClickHouse изначально предназначалась для аналитической платформы Yandex.Metrica. Вначале её разработка была экспериментальной, с целью проверки пригодности для создания аналитических отчётов.
Основные особенности работы с OLAP
- Большинство запросов направлено на чтение.
- Данные обновляются большими пакетами (более 1000 строк) или не обновляются вовсе.
- Данные добавляются в базу данных, но не изменяются.
- При чтении извлекается много строк, но лишь небольшое количество столбцов.
- Таблицы содержат много столбцов.
- Запросы выполняются сравнительно редко (обычно не более сотни в секунду на сервер).
- Для простых запросов допустимы задержки около 50 мс.
- Значения в столбцах мелкие — числа и небольшие строки (например, 60 байт на URL).
- Требуется высокая пропускная способность при обработке одного запроса (до миллиардов строк в секунду на один сервер).
- Транзакции отсутствуют.
- Низкие требования к согласованности данных.
- В запросе участвует одна большая таблица, остальные таблицы маленькие.
- Результат запроса существенно меньше исходных данных, так как данные фильтруются или агрегируются.
ClickHouse хранит данные в эффективном и сжатом формате, что позволяет обрабатывать миллиарды строк (гигабайты данных) за считанные секунды. Эта СУБД обрабатывает запросы в реальном времени с минимальной задержкой, что облегчает создание надёжных пайплайнов и хранилищ данных. Благодаря этому инженеры и аналитики могут оперативно работать с различными моделями данных и формировать отчёты для руководства. Бизнес, в свою очередь, получает конкурентное преимущество за счёт быстрого принятия решений.
Архитектура ClickHouse
Архитектура ClickHouse включает механизмы столбцовой обработки данных, репликацию на основе дерева объединения (Merge Tree) и распределённое выполнение запросов. Данные хранятся в небольших частях, называемых «чанками», каждая из которых содержит информацию о нескольких колонках. Обработка осуществляется с помощью векторных вычислений, что позволяет эффективно и параллельно работать с большими объёмами данных. Это значительно улучшает производительность и скорость выполнения запросов, снижая общие затраты на обработку данных.
Благодаря встроенным механизмам репликации, ClickHouse обеспечивает высокую отказоустойчивость, улучшает балансировку нагрузки и ускоряет обработку запросов за счёт распределённого выполнения.
Поддержка SQL
ClickHouse поддерживает SQL для загрузки и модификации данных. Это важная функция, так как большинство разработчиков уже знакомы с этим языком. Поддержка расширенного SQL делает ClickHouse доступным для новых пользователей.
Применение ClickHouse
ClickHouse подходит для обработки потоковых данных и создания дашбордов в реальном времени. Его возможности находят применение в следующих областях:
- Аналитика и бизнес-аналитика: Построение дашбордов и отчётов для корпоративных стратегий и бизнес-решений.
- Обработка журналов и событий: Обработка логов и событий для быстро меняющихся систем, таких как социальные медиа и игровая индустрия.
- Хранение и анализ данных IoT: Обработка данных от IoT-устройств в реальном времени для анализа и машинного обучения.
- Анализ данных о кликах (clickstream): Сбор и хранение данных о поведении посетителей веб-сайтов для целевого маркетинга и бизнес-анализа.
- Обработка данных временных рядов: Анализ временных данных для создания финансовых отчётов и прогнозов.
Кто использует ClickHouse?
ClickHouse широко используется ведущими ИТ-компаниями, такими как Microsoft, Bloomberg, Cisco, China Telecom, eBay и Uber. Эта СУБД специализируется на OLAP-запросах, обеспечивая высокую отказоустойчивость и линейную масштабируемость. Она способна обрабатывать миллионы строк за несколько секунд, что делает её идеальной для создания дашбордов и аналитики в реальном времени, машинного обучения и обработки логов и метрик.
Высокая скорость обработки и распределённые вычисления позволяют ClickHouse обрабатывать большие объёмы данных с использованием нескольких серверов, что обеспечивает быструю аналитику в реальном времени. Однако, ClickHouse имеет сложную кривую обучения и ряд ограничений при использовании в качестве базы данных общего назначения. Она отлично справляется с чтением больших объёмов данных, но её производительность падает при частых обновлениях и запросах, использующих целые строки.