Русская Википедия:ClickHouse

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Карточка программы

ClickHouse — это колоночная аналитическая СУБД с открытым кодом, позволяющая выполнять аналитические запросы в режиме реального времени на структурированных больших данных, разрабатываемая компанией Яндекс[1][2][3].

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

Однако при этом имеются и ограничения — отсутствие транзакций, отсутствие точечных UPDATE/DELETE (пакетный UPDATE/DELETE был введен в июне 2018 года), ограниченная поддержка синтаксиса JOIN, строгие типы с необходимостью явного приведения, для некоторых операций промежуточные данные должны помещаться в оперативную память, отсутствие полноценного оптимизатора запросов, точечного чтения, присутствие ограничений в реализации некоторых функций, связанных со спецификой использования ClickHouse в Яндексе, и т. д.

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

Во многих тестах ClickHouse показывает очень высокую производительность, выигрывая по этому показателю у таких конкурентов как Greenplum, Vertica[7], Amazon Redshift[8], Druid[9], InfiniDB/MariaDB ColumnStore[10], Apache Spark[11][12], Presto, Elasticsearch[13].

История

ClickHouse был разработан для решения задач веб-аналитики для Яндекс.Метрики — третьей по популярности системы веб-аналитики в мире[14].

Изначально в Яндекс.Метрике для построения отчетов использовались предварительно агрегированные данные[15].

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

  • необходимость заранее зафиксировать список доступных для пользователя отчетов (отсутствие возможности построить произвольный отчет);
  • предагрегации по большому количеству ключей или по ключам высокой кардинальности (таким как URL) может приводить к обратному эффекту (увеличению объёма данных);
  • поддержание логической целостности при хранении большого количества разных агрегаций затруднительно.

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

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

В июне 2016-го года исходный код системы был выложен в open-source под лицензией Apache 2.0[17].

В сентябре 2021 года Яндексом совместно с венчурными фондами был основан одноименный стартап, занимающийся системой управления базами данных. Компания привлекла 250 млн долларов инвестиций и стала "единорогом", получив оценку капитализации в 2 млрд долларов[18].

Распространение

В 2016 году кроме Яндекс.Метрики, ClickHouse использовался в ряде различных проектов внутри Яндекса, например, в open-source проекте Яндекс.Танк для хранения данных о телеметрии[17], Яндекс.Маркете для мониторинга здоровья сервиса[19] , и во внешних проектах, например, для анализа метаданных о событиях в LHCb эксперименте в CERN[20] (порядка миллиарда событий и 1000 параметров для каждого события).

В настоящее время многие компании успешно используют ClickHouse, в том числе: Cloudflare, Bloomberg[21], ВКонтакте[22], Rambler[23], Тинькофф банк[24], NIC Labs Chile[25], Amadeus[26], Avito.ru[27], Criteo, ContentSquare[28], СМИ2[29], ivi.ru[30], Mail.ru, Шаблон:Comment, Carto, Lifestreet, Infinidat[31][32], SemRush[33] и др.

Примечания

Шаблон:Примечания

Ссылки

Шаблон:СУБД Шаблон:Databases