ClickHouse
ClickHouse — колоночная аналитическая СУБД с открытым кодом, позволяющая выполнять аналитические запросы в режиме реального времени на структурированных больших данных. Изначально разрабатывалась компанией Яндекс[4][5][6], но впоследствии разработка полностью перешла в отдельную компанию ClickHouse Inc[7].
ClickHouse | |
---|---|
Тип | система управления базами данных, Столбцовое хранение и открытое программное обеспечение |
Разработчики | ClickHouse, Inc. |
Написана на | C++ |
Операционная система | GNU/Linux |
Первый выпуск | 15 июня 2016[1] |
Последняя версия |
|
Репозиторий | github.com/ClickHouse/Cl… |
Лицензия | лицензия Apache[3] |
Сайт | clickhouse.com |
ClickHouse использует собственный диалект SQL близкий к стандартному, но содержащий различные расширения: массивы и вложенные структуры данных, функции высшего порядка, вероятностные структуры, функции для работы с URI, возможность для работы с внешними key-value хранилищами («словарями»), специализированные агрегатные функции, функциональности для семплирования, приблизительных вычислений, возможность создания хранимых представлений с агрегацией, наполнения таблицы из потока сообщений Apache Kafka и т. д.
Однако при этом имеются и ограничения — отсутствие транзакций, отсутствие точечных UPDATE/DELETE (пакетный UPDATE/DELETE был введён в июне 2018 года), ограниченная поддержка синтаксиса JOIN, строгие типы с необходимостью явного приведения, для некоторых операций промежуточные данные должны помещаться в оперативную память, отсутствие полноценного оптимизатора запросов, точечного чтения, присутствие ограничений в реализации некоторых функций, связанных со спецификой использования ClickHouse в Яндексе, и т. д.
Система оптимизирована для хранения данных на жёстких дисках (используются преимущества линейного чтения, сжатия данных). Для обеспечения отказоустойчивости и масштабируемости ClickHouse может быть развёрнут на кластере (для координации процесса репликации используется Apache ZooKeeper)[8]. Для работы с базой данных существует консольный клиент, веб-клиент, HTTP интерфейс, ODBC и JDBC-драйверы[9], а также готовые библиотеки для интеграции со многими популярными языками программирования и библиотеками[10].
Во многих тестах ClickHouse показывает очень высокую производительность, выигрывая по этому показателю у таких конкурентов как Greenplum, Vertica[11], Amazon Redshift[12], Druid[13], InfiniDB/MariaDB ColumnStore[14], Apache Spark[15][16], Presto, Elasticsearch[17].
История
ClickHouse был разработан для решения задач веб-аналитики для Яндекс. Метрики — третьей по популярности системы веб-аналитики в мире[18].
Изначально в Яндекс. Метрике для построения отчётов использовались предварительно агрегированные данные[19].
Этот подход позволял уменьшить размер хранимых данных, однако имел ряд ограничений и недостатков:
- необходимость заранее зафиксировать список доступных для пользователя отчётов (отсутствие возможности построить произвольный отчёт);
- предагрегации по большому количеству ключей или по ключам высокой кардинальности (таким как URL) может приводить к обратному эффекту (увеличению объёма данных);
- поддержание логической целостности при хранении большого количества разных агрегаций затруднительно.
Альтернативный подход заключается в хранении «сырых» неагрегированных данных, производя все необходимые вычисления в момент запроса пользователя. Для этого была необходима СУБД, которая смогла бы обрабатывать неагрегированные данные Яндекс. Метрики (петабайты данных) с очень высокой эффективностью и в реальном времени, и при этом обладая приемлемой стоимостью. Поскольку на тот момент таких решений на рынке не было, то в Яндексе начали разрабатывать свою СУБД.
Первый прототип ClickHouse появился в 2009 году[20]. К концу 2014 года была запущена Метрика 2.0, работающая на базе ClickHouse, которая позволила пользователям строить произвольные отчёты.
В июне 2016 года исходный код системы был выложен в open-source под лицензией Apache 2.0[21].
В сентябре 2021 года Яндексом совместно с венчурными фондами был основан одноимённый стартап ClickHouse Inc. Новая компания продолжила разработку СУБД, сфокусировавшись на создании облачной инфраструктуры. Компания привлекла 250 млн долларов инвестиций и стала «единорогом», получив оценку капитализации в 2 млрд долларов[22].
В марте 2022 года ClickHouse Inc. осудили вторжение России на Украину и заявили о полном уходе из России[23][24].
Распространение
В 2016 году кроме Яндекс. Метрики, ClickHouse использовался в ряде различных проектов внутри Яндекса, например, в open-source проекте Яндекс.Танк для хранения данных о телеметрии[21], Яндекс.Маркете для мониторинга здоровья сервиса[25] , и во внешних проектах, например, для анализа метаданных о событиях в LHCb эксперименте в CERN[26] (порядка миллиарда событий и 1000 параметров для каждого события).
В настоящее время многие компании успешно используют ClickHouse, в том числе: Cloudflare, Bloomberg[27], ВКонтакте[28], Rambler[29], Тинькофф банк[30], NIC Labs Chile[31], Amadeus[32], Avito.ru[33], Criteo[англ.], ContentSquare[34], СМИ2[35], ivi.ru[36], Mail.ru, Adtelligent, Carto, Lifestreet, Infinidat[37][38], SemRush[англ.][39] и др.