ClickHouse – колоночная реляционная СУБД с открытым исходным кодом от компании Яндекс для быстрой обработки аналитических SQL-запросов на структурированных больших данных (Big Data) в режиме реального времени.
История разработки и развития ClickHouse
Основными ключевыми вехами в истории ClickHouse считаются следующие:
- 2009 год – компания Яндекс разработала первый прототип своей аналитической СУБД для собственных нужд, в рамках проекта веб-аналитики «Яндекс.Метрика» с целью построения отчетов в режиме реального времени по неагрегированным логам пользовательских действий [1];
- 2013 год – использование СУБД для анализа метаданных о событиях эксперимента на одном из детектеров Большого андронного коллайдера в CERN [1];
- 2014 год – Яндекс полностью перезапустил свой сервис веб-аналитики Метрика 2.0 на базе ClickHouse, благодаря чему пользователи могут строить произвольные отчеты [2];
- 2016 год – переход ClickHouse из проприетарного решения в open source – Яндекс опубликовал исходный код СУБД под лицензией Apache 2.0 [2];
- 2019 год – ClickHouse включен в состав реестра отечественного программного обеспечения, что позволяет использовать эту СУБД в проектах цифровизации государственных и частных компаний РФ с учетом требований к импортозамещению [3];
- 2019 год – компания «Аренадата Софтвер», разработчик первого отечественного дистрибутива Apache Hadoop и других корпоративных решений для хранения и обработки Big Data, выпустил на базе ClickHouse собственную аналитическую СУБД Arenadata QuickMarts. Продукт адаптирован для нужд сектора enterprise и включает возможности гибкой авторизации пользователей с разграничением доступа, поддержку формата ORC и интеграцию с безопасным протоколом Kerberos для экосистемы Hadoop [4]. Подробнее о том, чем Arenadata QuickMarts отличается от ClickHouse, мы рассказываем здесь.
Архитектура и принципы работы ClickHouse
Ключевым преимуществом Кликхаус считается высокая скорость выполнения SQL-запросов на чтение (OLAP-сценарий), которая обеспечивается благодаря следующим архитектурным особенностям [1]:
- столбцовое хранение данных, что позволяет считывать данные только из нужных колонок и эффективно сжимать однотипную информацию;
- физическая сортировка данных по первичному ключу позволяет быстро получать конкретные значения или диапазонов;
- векторные вычисления по кусочкам столбцов снижают издержки на диспетчеризацию и позволяют более эффективно использовать CPU;
- распараллеливание операций как в пределах одного сервера на несколько процессорных ядер, так и в рамках распределенных вычислений на кластере за счет механизма шардирования;
- поддержка приближенных вычислений на части выборки, что снижает число обращений к жесткому диску и еще больше повышает скорость обработки данных.
Стоит отметить, что в отличие от других популярных столбцовых СУБД для Big Data, например, SAP HANA и Google PowerDrill, которые работают только в оперативной памяти, ClickHouse работает с жесткими дисками. Это снижает стоимость эксплуатации системы, поскольку жесткие диски дешевле RAM.
При работе в кластере данные реплицируются асинхронно в фоновом режиме с поддержкой полной идентичности на разных репликах. Apache ZooKeeper используется для координации процесса репликации, но не участвует в обработке данных и выполнения запросов. При сбое в большинстве случаев восстановление данных происходит автоматически. По желанию можно включить кворумную запись данных. Кластер Кликхаус масштабируется линейно путем добавления новых узлов. ClickHouse поддерживает диалект SQL c расширениями, такими как массивы и вложенные структуры данных, вероятностные структуры, возможность подключить внешнее key-value хранилище. Еще СУБД содержит множество возможностей интеграции с другими Big Data системами, такими как Apache Kafka и HDFS, а также MySQL и прочие внешние источники данных через ODBC или JDBC [1].
При том, что Кликхаус является реляционной СУБД, он не поддерживает транзакции, а также точечные операции UPDATE и DELETE. Кроме того, в данной системе отсутствуют оконные функции и полноценный оптимизатор запросов [2]. Подробнее о достоинствах и недостатках ClickHouse мы рассказываем в отдельных статьях.
Где используется Кликхаус: компании и Big Data проекты
Благодаря высокой скорости генерации аналитических отчетов по большим данным в режиме реального времени, ClickHouse наиболее востребован в следующих областях:
- веб-аналитика и контекстная реклама;
- real time мониторинг бизнес-метрик, например, анализ потребительского поведения на сайте;
- интерактивное взаимодействие с пользователями, к примеру, онлайн-игры;
- контроль технических показателей, в т.ч. интернет вещей (Internet of Things);
- реализация корпоративных хранилищ данных, например, как это сделано в Ситимобил.
При том, что ClickHouse изначально был разработан в Яндексе, он применяется не только в сервисах этого ИТ-гиганта. Сегодня множество отечественных и зарубежных компаний используют эту Big Data СУБД для быстрой аналитики больших данных. Из наиболее известных внедрений стоит упомянуть иностранные Cloudflare и Bloomberg, отечественную соцсеть ВКонтакте, Тинькофф банк, сервис онлайн-объявлений Avito, новостную сеть СМИ2, онлайн-кинотеатр ivi.ru, интернет-порталы Mail.ru и Rambler [1].
ClickHouse Keeper
ClickHouse Keeper – это мощное средство для обслуживания и управления базами данных ClickHouse. Он предоставляет набор инструментов для автоматизации задач администрирования, оптимизации производительности и обеспечения стабильной работы системы. В этой статье мы рассмотрим основные функциональности ClickHouse Keeper и предоставим примеры кода для лучшего понимания его возможностей.
Основные Функциональности ClickHouse Keeper:
- Мониторинг и Управление Ресурсами: ClickHouse Keeper обеспечивает подробный мониторинг ресурсов, таких как использование CPU, памяти, дискового пространства и других системных параметров. С использованием API Keeper’a можно легко настраивать ограничения и управлять ресурсами для оптимизации производительности.
- Работа с Запросами: Инструменты ClickHouse Keeper позволяют анализировать и оптимизировать SQL-запросы. Можно получить статистику выполнения запросов, определить узкие места и внести изменения для улучшения их производительности.
- Резервное Копирование и Восстановление: Keeper предоставляет средства для создания резервных копий данных и их последующего восстановления. Это важный элемент обеспечения безопасности данных.
- Управление Репликацией: С ClickHouse Keeper можно легко управлять процессами репликации данных для обеспечения отказоустойчивости и распределения нагрузки.
- Интеграция с Метриками и Логами: Keeper интегрируется с различными системами мониторинга, такими как Grafana и Prometheus, что облегчает отслеживание состояния базы данных.
Пример 1: Получение Статистики Использования Ресурсов:
SELECT * FROM system.metrics WHERE metric_name LIKE 'system.%'
В этом запросе мы используем системную таблицу system.metrics, чтобы получить статистику использования ресурсов. Мы выбираем все метрики, связанные с системными ресурсами.
Пример 2: Оптимизация Запроса
OPTIMIZE TABLE example_table FINAL
Этот запрос оптимизирует таблицу example_table. Используя команду OPTIMIZE, мы уменьшаем фрагментацию данных и улучшаем производительность запросов.
Пример 3: Создание Резервной Копии и Восстановление
-- Создание резервной копии BACKUP TABLE example_table TO '/path/to/backup'; -- Восстановление из резервной копии RESTORE TABLE example_table FROM '/path/to/backup';
Таким образом, ClickHouse Keeper предоставляет широкий набор инструментов для эффективного управления и оптимизации баз данных ClickHouse.
Источники
- https://ru.bmstu.wiki/ClickHouse
- https://ru.wikipedia.org/wiki/ClickHouse
- http://www.tadviser.ru/index.php/Продукт:ClickHouse
- https://arenadata.tech/products/adqm/