ClickHouse
ClickHouse | |
---|---|
![]() | |
Тип |
аналитическая СУБД столбцового хранения |
Страна |
|
Автор | Яндекс |
Разработчик | ClickHouse, Inc. |
Написана на | C++ |
Операционная система | GNU/Linux, FreeBSD, macOS |
Первый выпуск | 15 июня 2016 |
Последняя версия | 23.12.2.59 (5 января 2024) |
Состояние | активное |
Лицензия | Apache License 2.0 |
Ссылки | |
Сайт | clickhouse.com |
github.com/ClickHouse |
ClickHouse — это колоночная аналитическая СУБД с открытым кодом, позволяющая выполнять аналитические запросы в режиме реального времени на структурированных больших данных. Изначально разрабатывалась российской компанией Яндекс в рамках стартапа, но в последствии была передана в американскую компанию ClickHouse, Inc.[1][2][3][4].
ClickHouse использует собственный диалект SQL близкий к стандартному, но содержащий различные расширения: массивы и вложенные структуры данных, функции высшего порядка, вероятностные структуры, функции для работы с URI, возможность для работы с внешними key-value хранилищами («словарями»), специализированные агрегатные функции, функциональности для семплирования, приблизительных вычислений, возможность создания хранимых представлений с агрегацией, наполнения таблицы из потока сообщений Apache Kafka и т. д.
Однако при этом имеются и ограничения — отсутствие транзакций, отсутствие точечных UPDATE/DELETE (пакетный UPDATE/DELETE был введен в июне 2018 года), ограниченная поддержка синтаксиса JOIN, строгие типы с необходимостью явного приведения, для некоторых операций промежуточные данные должны помещаться в оперативную память, отсутствие оконных функций, отсутствие полноценного оптимизатора запросов, точечного чтения, присутствие ограничений в реализации некоторых функций, связанных со спецификой использования ClickHouse в Яндексе, и т. д.
Система оптимизирована для хранения данных на жестких дисках (используются преимущества линейного чтения, сжатия данных). Для обеспечения отказоустойчивости и масштабируемости ClickHouse может быть развернут на кластере (для координации процесса репликации используется Apache ZooKeeper)[5]. Для работы с базой данных существует консольный клиент, веб-клиент, HTTP интерфейс, ODBC и JDBC-драйверы[6], а также готовые библиотеки для интеграции со многими популярными языками программирования и библиотеками[7].
Во многих тестах ClickHouse показывает очень высокую производительность, выигрывая по этому показателю у таких конкурентов как Greenplum, Vertica[8], Amazon Redshift[9], Druid[10], InfiniDB/MariaDB ColumnStore[11], Apache Spark[12][13], Presto, Elasticsearch[14].
История
ClickHouse был разработан для решения задач веб-аналитики для Яндекс.Метрики — третьей по популярности системы веб-аналитики в мире[15].
Изначально в Яндекс.Метрике для построения отчетов использовались предварительно агрегированные данные[16].
Этот подход позволял уменьшить размер хранимых данных, однако имел ряд ограничений и недостатков:
- необходимость заранее зафиксировать список доступных для пользователя отчетов (отсутствие возможности построить произвольный отчет);
- предагрегации по большому количеству ключей или по ключам высокой кардинальности (таким как URL) может приводить к обратному эффекту (увеличению объёма данных);
- поддержание логической целостности при хранении большого количества разных агрегаций затруднительно.
Альтернативный подход заключается в хранении «сырых» неагрегированных данных, производя все необходимые вычисления в момент запроса пользователя. Для этого была необходима СУБД, которая смогла бы обрабатывать неагрегированные данные Яндекс.Метрики (петабайты данных) с очень высокой эффективностью и в реальном времени, и при этом обладая приемлемой стоимостью. Поскольку на тот момент таких решений на рынке не было, то в Яндексе начали разрабатывать свою СУБД.
Первый прототип ClickHouse появился в 2009 году[17]. К концу 2014 года была запущена Метрика 2.0, работающая на базе ClickHouse, которая позволила пользователям строить произвольные отчеты.
В июне 2016-го года исходный код системы был выложен в open-source под лицензией Apache 2.0[18].
Распространение
В 2016 году кроме Яндекс.Метрики, ClickHouse использовался в ряде различных проектов внутри Яндекса, например, в open-source проекте Яндекс.Танк для хранения данных о телеметрии[18], Яндекс.Маркете для мониторинга здоровья сервиса[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, Adtelligent, Carto, Lifestreet, Infinidat[31][32], SemRush[33] и др.
Примечания
- ↑ «Яндекс» с партнерами создал компанию ClickHouse, Inc. Она будет выпускать коммерческое ПО на основе СУБД ClickHouse . Хабр (20 сентября 2021).
- ↑ Яндекс ClickHouse. Быстрее некуда. / Филиппов Олег // Системный администратор. — 2017. — № 1—2. — С. 56—58.
- ↑ ClickHouse в системах сбора статистики / Календарев Александр // Системный администратор. — 2017. — № 3. — С. 56—59.
- ↑ ClickHouse — Национальная библиотека им. Н. Э. Баумана . ru.bmstu.wiki. Дата обращения: 20 августа 2018. Архивировано 20 августа 2018 года.
- ↑ Афанасьев Г.И., Белоногов И.Б., Булатова И.Г., Тоноян С.А. Организация кластеров для обработки данных на основе СУБД YANDEX CLICKHOUSE и распределенной координационной службы для распределенных приложений APACHE ZOOKEEPER // Аллея науки. — 2018. — Т. 3, № 1. — С. 850—860. — ISSN 2587-6244. Архивировано 20 августа 2018 года.
- ↑ Доступ к ClickHouse с помощью JDBC (рус.). Архивировано 19 августа 2018 года. Дата обращения 19 августа 2018.
- ↑ Interfaces (англ.). ClickHouse Documentation. clickhouse.yandex. Дата обращения: 17 августа 2018. Архивировано 8 августа 2018 года.
- ↑ Performance comparison of analytical DBMS (англ.). clickhouse.yandex. Дата обращения: 17 августа 2018. Архивировано 20 октября 2016 года.
- ↑ ClickHouse vs Amazon RedShift Benchmark (англ.). www.altinity.com. Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
- ↑ SREcon18 Americas - Monitoring DNS with Open-Source Solutions на YouTube, начиная с 8:50
- ↑ InfiniDB vs ClickHouse (кит.). www.verynull.com (22 августа 2016). Дата обращения: 17 августа 2018. (недоступная ссылка)
- ↑ Column Store Database Benchmarks: MariaDB ColumnStore vs. ClickHouse vs. Apache Spark (англ.). www.percona.com (15 марта 2017). Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
- ↑ A Look at ClickHouse: A New Open Source Columnar Database - DZone Database (англ.), dzone.com. Архивировано 20 августа 2018 года. Дата обращения 20 августа 2018.
- ↑ Mark Litwintschik. Summary of the 1.1 Billion Taxi Rides Benchmarks (англ.). tech.marksblogg.com. Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
- ↑ Usage Statistics and Market Share of Traffic Analysis Tools for Websites, April 2019 . w3techs.com. Дата обращения: 18 апреля 2019. Архивировано 21 января 2014 года.
- ↑ Эволюция структур данных в Яндекс.Метрике (рус.), Блог Yandex, habr.com (17 декабря 2015). Архивировано 17 августа 2018 года. Дата обращения 17 августа 2018.
- ↑ ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016 . www.percona.com. Дата обращения: 20 октября 2016. Архивировано 21 октября 2016 года.
- ↑ Перейти обратно: 18,0 18,1 Яндекс открывает ClickHouse. Архивировано 21 октября 2016 года. Дата обращения 20 октября 2016.
- ↑ Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса . events.yandex.ru. Дата обращения: 20 октября 2016. Архивировано 30 августа 2017 года.
- ↑ Yandex — Yandex Launches Search Tool for LHC Events at CERN, Yandex. Архивировано 20 октября 2016 года. Дата обращения 20 октября 2016.
- ↑ Alex Bocharov. HTTP Analytics for 6M requests per second using ClickHouse, The Cloudflare Blog (6 марта 2018). Архивировано 17 августа 2018 года. Дата обращения 17 августа 2018.
- ↑ Немного закулисья VK (рус.), habr.com (22 июня 2018). Архивировано 20 августа 2018 года. Дата обращения 20 августа 2018.
- ↑ Демьян Кудрявцев. Разработка API ClickHouse для Рамблер/топ-100 (рус.), Блог компании Rambler Group, habr.com (17 мая 2018). Архивировано 19 августа 2018 года. Дата обращения 19 августа 2018.
- ↑ М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов. Сравнение аналитических in-memory баз данных (рус.), Блог IT’s Tinkoff.ru, Habr (11 ноября 2016). Архивировано 17 августа 2018 года. Дата обращения 17 августа 2018.
- ↑ Felipe Espinoza and Javier Bustos. Monitoring DNS with Open-Source Solutions | USENIX (англ.). SREcon18 Americas. www.usenix.org (29 марта 2018). Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
- ↑ Amadeus Technologies Launches Investment and Insights Tool Based on Machine Learning and Strategy Algorithms, Kodiak Data (27 марта 2018). Архивировано 21 августа 2018 года. Дата обращения 21 августа 2018.
- ↑ Владимир Колобаев. Хранение метрик: как мы перешли с Graphite+Whisper на Graphite+ClickHouse (рус.), Блог компании Avito, habr.com. Архивировано 19 августа 2018 года. Дата обращения 19 августа 2018.
- ↑ ClickHouse Meetup in Paris (англ.). Altinity. Дата обращения: 8 октября 2018. Архивировано 8 октября 2018 года.
- ↑ Игорь Стрыхарь. Как запустить ClickHouse своими силами и выиграть джекпот (рус.), Блог компании СМИ2, habr.com (7 ноября 2016). Архивировано 18 августа 2018 года. Дата обращения 18 августа 2018.
- ↑ Коняев Андрей. Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse (рус.), Блог компании Онлайн-кинотеатр ivi, habr.com (24 января 2018). Архивировано 19 августа 2018 года. Дата обращения 19 августа 2018.
- ↑ Alexander Zaytsev. Who and Why is Using ClickHouse (англ.), Altinity (10 August 2017). Архивировано 17 августа 2018 года. Дата обращения 17 августа 2018.
- ↑ ClickHouse Meetup in Berlin (англ.) (недоступная ссылка). yandex.github.io. Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
- ↑ «Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse (рус.), Блог компании JUG.ru Group, habr.ru (30 октября 2017). Архивировано 19 августа 2018 года. Дата обращения 19 августа 2018.
См. также
Ссылки
- clickhouse.com — официальный сайт ClickHouse
- Репозиторий ClickHouse, Inc.
- Архив канала clickhouse (рус.)