Что такое ClickHouse

В современном мире данные являются ключевым ресурсом для принятия стратегических решений в бизнесе и научных исследованиях. И с постоянным увеличением объемов данных возрастает необходимость в эффективных средствах и методах их обработки и анализа. Одним из таких инструментов является ClickHouse — мощная и высокопроизводительная колоночная система управления базами данных.

В данной статье мы рассмотрим особенности и возможности ClickHouse, а также области его применения, давая представление о том, как данная технология может быть полезной в различных сферах деятельности. Впереди нас ждет увлекательное погружение в мир современного анализа данных и информационных технологий.

Что такое ClickHouse

Общие сведения

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

ClickHouse использует свой собственный диалект SQL, близкий к стандартному, но с некоторыми расширениями. Он поддерживает массивы и вложенные структуры данных, функции высшего порядка, вероятностные структуры, функции для работы с URI, возможность работы с внешними key-value хранилищами (называемыми «словарями»), специализированные агрегатные функции, функции для сэмплирования, приблизительных вычислений, а также возможность создания хранимых представлений с агрегацией и заполнения таблицы данными из потока сообщений Apache Kafka, и многое другое.

Однако, у ClickHouse есть и некоторые ограничения, такие как отсутствие поддержки транзакций, ограниченная поддержка синтаксиса JOIN, необходимость явного приведения типов данных, некоторые ограничения по оперативной памяти для некоторых операций, отсутствие полноценного оптимизатора запросов и другие.

Система оптимизирована для хранения информации на жестких дисках с использованием преимуществ линейного чтения и сжатия данных. Для обеспечения отказоустойчивости и масштабируемости, ClickHouse может быть развернут на кластере с использованием Apache ZooKeeper для координации процесса репликации. Существует разнообразные клиенты и интерфейсы для работы с ClickHouse, включая консольный клиент, веб-клиент, HTTP интерфейс, а также драйверы ODBC и JDBC. Кроме того, имеются готовые библиотеки для интеграции с различными популярными языками программирования и библиотеками.

ClickHouse проявляет высокую производительность во многих тестах и конкурирует успешно с другими аналитическими БД, такими как:

  • Greenplum;
  • Vertica;
  • Amazon Redshift;
  • Druid;
  • InfiniDB/MariaDB ColumnStore;
  • Apache Spark;
  • Presto;
  • Elasticsearch и другие.

Краткая история разработки

История ClickHouse началась с потребности веб-аналитики для Яндекс.Метрики, которая является третьей по популярности системой веб-аналитики в мире. Исходно, для создания отчетов в Яндекс.Метрике использовались предварительно агрегированные данные. Этот подход сокращал объем хранимых данных, но имел свои недостатки.

Например, он требовал заранее задать список доступных отчетов для пользователей, не позволял создавать произвольные отчеты, и мог привести к увеличению объема информации при агрегации по большому количеству ключей или ключам высокой кардинальности, таким как URL. Также поддержка логической целостности становилась проблемой при хранении большого числа различных агрегаций.

Для преодоления этих ограничений появилась необходимость в СУБД, способной обрабатывать не агрегированные «сырые» данные в реальном времени и выполнять необходимые вычисления в момент запроса пользователя. Поэтому в Яндексе начали разрабатывать свою собственную СУБД.


Первый прототип ClickHouse появился в 2009 году. К концу 2014 года была запущена Метрика 2.0, которая использовала ClickHouse и позволяла пользователям создавать произвольные отчеты.

В июне 2016 года исходный код ClickHouse был выпущен в open-source под лицензией Apache 2.0.

В сентябре 2021 года был создан стартап ClickHouse Inc. Яндекс совместно с венчурными фондами инвестировали в него 250 миллионов долларов, и компания стала оцениваться в 2 миллиарда долларов. ClickHouse Inc. продолжила разрабатывать ClickHouse и сосредоточилась на создании облачной инфраструктуры.

Область применения

ClickHouse начала использоваться вне внутренних проектов Яндекса в 2013 году, когда ее начали применять для анализа метаданных о событиях эксперимента LHCb в CERN. Она была доступна только внутри компании из-за ее закрытого статуса. Однако в июне 2016 года исходный код ClickHouse был выпущен в открытом доступе под лицензией Apache 2.0, что позволило множеству отечественных и зарубежных компаний внедрить эту СУБД в своих проектах.

ClickHouse нашла применение в различных компаниях, включая:

  • Cloudflare;
  • Bloomberg;
  • ВКонтакте;
  • Тинькофф банк;
  • Avito;
  • ivi.ru;
  • Mail.ru;
  • Rambler и другие.

Например, VK использует ClickHouse для хранения и анализа отладочных логов, а другие компании загружают логи микросервисов и приложений в БД для последующего анализа.

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

Главным преимуществом ClickHouse остается его высокая производительность, что делает его отличным выбором для решения задач аналитики поведения клиентов и работы с большими объемами информации в реальном времени.

Особенности и принцип работы

ClickHouse использует SQL-подобный синтаксис, что делает его знакомым для разработчиков, работавших с реляционными БД. Его диалект SQL схож с классическим SQL, но также предоставляет дополнительные возможности, такие как работа с массивами данных и внешними базами «ключ-значение». Это означает, что разработчику, имеющему опыт работы с SQL-системами, будет несложно освоить ClickHouse.

Чтобы понять, почему ClickHouse так эффективен и производителен, давайте сравним его принцип работы с принципом работы строковых СУБД, таких как PostgreSQL. В строковых системах данные читаются всегда полностью, включая все строки. Это означает, что при обработке информации нужно пройти через все столбцы, даже если они не нужны для текущего запроса.

Что такое ClickHouse

В столбцовых СУБД необязательно читать все строки целиком: они используют только те колонки, которые участвуют в запросе. Каждая колонка хранится в отдельном файле, что позволяет ClickHouse обращаться к конкретным столбцам значительно быстрее.

Производительность ClickHouse также подтверждается сравнительными тестами. Например, для получения 100 миллионов записей ClickHouse требуется всего одна секунда, в то время как строковая СУБД MySQL занимает 823,64 секунды.

Что такое ClickHouse

Кроме того, благодаря хранению каждой колонки в отдельном файле, ClickHouse легче сжимает данные. В обычных строковых СУБД разные типы информации хранятся в одном файле, что делает сжатие менее оптимальным. Более компактное хранение информации означает более быстрый поиск и уменьшение операций ввода-вывода.

ClickHouse также предоставляет возможность семплирования информации. Например, можно запустить запрос на части данных, чтобы получить приблизительную аналитическую картину за более короткий период времени. Это ускоряет анализ данных.

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

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

Это привело к принципу «когда-нибудь»: ClickHouse не гарантирует порядок прихода данных или моментальную репликацию информации. Информация в базу поступает асинхронно, и невозможно точно предсказать, когда она будет доступна — она «когда-нибудь» придет.

Еще одной важной особенностью ClickHouse является линейное масштабирование, что означает, что производительность растет пропорционально увеличению объема информации при репликации. В отличие от некоторых других СУБД, где увеличение объема данных может не привести к улучшению производительности или даже вызвать ее ухудшение.

Техническая составляющая

ClickHouse, разработанная командой из Яндекса, обладает несколькими интерфейсами для взаимодействия с информацией. В дополнение к командной строке (CLI) и протоколу TCP, она поддерживает HTTP-протокол для отправки и получения данных. Система также имеет веб-версию, написанную на JavaScript, которая взаимодействует с БД через HTTP-протокол.

Интересно, что ClickHouse создана российскими разработчиками, поэтому она понимает команды даже при использовании неправильной раскладки клавиатуры. Например, вместо «exit» можно написать «учше» и выйти из системы.

Особенности ClickHouse включают отсутствие привычного Primary Key (основного ключа) в таблицах. Вместо этого обычно используется поле для сортировки данных, такое как дата события или User ID. Это поле определяется с помощью команды OrderBy.

Что такое ClickHouse

ClickHouse также не поддерживает команды UPDATE и DELETE, которые присутствуют в других СУБД. Однако информацию всё равно можно удалять и обновлять, используя специфические методы.

Система использует концепцию движков таблиц, которые определяют различные аспекты хранения и обработки данных, такие как место хранения, поддерживаемые запросы, способы доступа, использование индексов, многопоточность и параметры репликации данных. Один из распространенных движков — MergeTree, который позволяет объединять данные фоновым образом. Есть различные вариации этого движка, такие как:

  • ReplacingMergeTree (для удаления дубликатов);
  • SummingMergeTree (для суммирования числовых столбцов);
  • AggregatingMergeTree (для нахождения средних значений) и другие.

ClickHouse также предлагает специализированные движки для работы с данными, такие как GraphiteMergeTree для подготовки данных для системы Graphite, а также интеграционные движки, которые обеспечивают взаимодействие с различными источниками данных, такими как Kafka и другими СУБД, включая MySQL, PostgreSQL и MongoDB.

Для каких проектов подходит

ClickHouse предназначен для обработки постоянного потока данных в режиме реального времени, и его выбор стоит рассмотреть, когда в вашем проекте:

  • Есть необходимость в работе с огромными объемами данных, включая миллионы строк и петабайты информации.
  • Требуется выполнять разнообразные аналитические операции, такие как запросы, чтение, суммирование и другие манипуляции с данными.
  • Ваш проект не предполагает частого удаления данных или удаления вообще.
  • Имеется множество различных типов данных или колонок. В обычных строковых БД таблицы с большим количеством колонок могут стать громоздкими и неэффективными.
  • Вы готовы к работе в асинхронном режиме, и вам не страшны небольшие потери данных из-за принципа «когда-нибудь».

Использование ClickHouse в проекте можно привести на примере с приложением для грузовых перевозок. Это приложение получает данные от GPS-трекеров с интервалом в несколько секунд, что означает поступление огромного объема данных для обработки.

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

Что такое ClickHouse

Преимущества

ClickHouse обладает рядом преимуществ, которые влияют на его широкое применение:

  • Векторные аппаратные вычисления. Эффективное использование аппаратных ресурсов позволяет снизить нагрузку на CPU и ускорить обработку данных.
  • Оптимизация под HDD. Платформа способна работать с внешними жесткими дисками, обрабатывая данные, которые превышают объемы одного диска.
  • Интеграция. ClickHouse имеет разнообразные клиенты и интеграцию с другими системами, включая Apache Kafka, HDFS, MySQL и многие другие.
  • Линейная масштабируемость. Добавление дополнительных серверов позволяет системе масштабироваться линейно, обеспечивая более высокую производительность при увеличении нагрузки.
  • Интеграция с пользовательскими онлайн-запросами. ClickHouse обеспечивает высокую производительность и мгновенный доступ к данным, что полезно при работе с динамическими запросами.
  • Масштабируемость. Платформа позволяет работать с огромными объемами данных, что делает его подходящим для хранения и анализа сотен гигабайт и даже петабайтов информации.
  • Легкость настройки. Простая настройка системы устраняет необходимость в сложных библиотеках и файловых конфигурациях, обеспечивая удобство использования.
  • Индексация. Присутствие индексов позволяет систематизировать данные и ускоряет выполнение запросов.
  • Столбцовое хранение данных. ClickHouse читает информацию исключительно из необходимых столбцов, что позволяет сократить объем повторяющейся информации и повысить эффективность.
  • Примерные вычисления. Возможность проводить приближенные вычисления позволяет ускорить анализ данных без лишних обращений к хранилищу.
  • Классификация данных по ключевым запросам. Платформа быстро обрабатывает запросы пользователей и предоставляет результаты, соответствующие их требованиям.
  • Надежность. Система обеспечивает надежное хранение данных, включая репликацию и использование ZooKeeper для координации работающих копий.
  • Сжатие данных. Система способна эффективно сжимать обработанные данные, что улучшает производительность и экономит место на диске.
  • Одновременность операций. Платформа поддерживает одновременное выполнение операций на нескольких ядрах процессора и между упорядоченными вычислениями с помощью шардирования.

Особенно стоит отметить, что столбцовое хранение данных в ClickHouse позволяет снизить нагрузку на устройство в сравнении со строчными СУБД вплоть до 17 раз, что делает его отличным выбором для обработки больших объемов данных.

Недостатки

Использование этой платформы, как и любой другой СУБД, имеет свои плюсы и минусы, и она может быть не подходящей для всех проектов.

В этом разделе мы рассмотрим некоторые сложности, с которыми разработчик может столкнуться при использовании этой СУБД от Яндекс.

Отсутствие транзакций

ClickHouse была создана с учетом обработки статистических данных и в основном ориентирована на операции чтения данных из таблиц. В ней не предусмотрены транзакционные сценарии, что делает невозможным выполнение последовательных операций в рамках одной транзакции.

Сложности при точечной работе

ClickHouse оперирует большими объемами данных, и поиск, обновление или удаление одной конкретной строки может быть затруднительным или неэффективным.

Высокие требования к оперативной памяти сервера

Для обеспечения высокой производительности и избежания проблем, серверу необходим значительный объем оперативной памяти. Некоторые запросы также требуют полного помещения промежуточных данных в оперативной памяти.

Рекомендуется выделять не менее 4 гигабайтов оперативной памяти для ClickHouse.

Возможность атак при передаче данных по HTTP-протоколу: при использовании HTTP для обмена данными с платформой, существует риск возможных атак, таких как похищение данных, SQL-инъекции и получение несанкционированного доступа к БД. Поэтому безопасность хранения и передачи данных требует особого внимания и защиты.

Заключение

Подводя итог можно отметить, что ClickHouse представляет собой мощную и высокопроизводительную колоночную систему управления БД, которая приобрела популярность благодаря своей способности эффективно обрабатывать огромные объемы данных в режиме реального времени. Она нашла применение в различных областях, включая аналитику веб-проектов, рекламные сети, финансы, телекоммуникации и многие другие. Платформа предоставляет широкий набор возможностей, включая масштабируемость, сжатие данных, столбцовое хранение, интеграцию с другими системами и высокую производительность.

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

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
IaaS SaaS PaaS
Добавить комментарий

Больше новостей — на нашем Telegram-канале