ClickHouse

Перейти к навигацииПерейти к поиску
ClickHouse
Логотип программы ClickHouse
Типсистема управления базами данных, Столбцовое хранение и открытое программное обеспечение
РазработчикиClickHouse, Inc.
Написана наC++
Операционная система GNU/Linux
Первый выпуск15 июня 2016[1]
Последняя версия
Репозиторийgithub.com/ClickHouse/Cl…
Лицензиялицензия Apache[3]
Сайтclickhouse.com

ClickHouse — колоночная аналитическая СУБД с открытым кодом, позволяющая выполнять аналитические запросы в режиме реального времени на структурированных больших данных. Изначально разрабатывалась компанией Яндекс[4][5][6], но впоследствии разработка полностью перешла в отдельную компанию ClickHouse Inc[7].

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] и др.

Примечания

  1. https://habr.com/ru/company/yandex/blog/303282/ — 2016.
  2. Release 24.1.5.6 — 2024.
  3. https://github.com/ClickHouse/ClickHouse/blob/master/LICENSE
  4. Яндекс ClickHouse. Быстрее некуда. / Филиппов Олег // Системный администратор. — 2017. — № 1—2. — С. 56—58.
  5. ClickHouse в системах сбора статистики / Календарев Александр // Системный администратор. — 2017. — № 3. — С. 56—59.
  6. ClickHouse — Национальная библиотека им. Н. Э. Баумана. ru.bmstu.wiki. Дата обращения: 20 августа 2018. Архивировано 20 августа 2018 года.
  7. Lardinois, Frederic ClickHouse launches ClickHouse Cloud, extends its Series B (амер. англ.). TechCrunch (6 декабря 2022). Дата обращения: 4 августа 2023.
  8. Афанасьев Г.И., Белоногов И.Б., Булатова И.Г., Тоноян С.А. Организация кластеров для обработки данных на основе СУБД YANDEX CLICKHOUSE и распределенной координационной службы для распределенных приложений APACHE ZOOKEEPER // Аллея науки. — 2018. — Т. 3, № 1. — С. 850—860. — ISSN 2587-6244. Архивировано 20 августа 2018 года.
  9. "Доступ к ClickHouse с помощью JDBC". Архивировано 19 августа 2018. Дата обращения: 19 августа 2018.
  10. Interfaces (англ.). ClickHouse Documentation. clickhouse.yandex. Дата обращения: 17 августа 2018. Архивировано 8 августа 2018 года.
  11. Performance comparison of analytical DBMS (англ.). clickhouse.yandex. Дата обращения: 17 августа 2018. Архивировано 20 октября 2016 года.
  12. ClickHouse vs Amazon RedShift Benchmark (англ.). www.altinity.com. Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
  13. SREcon18 Americas - Monitoring DNS with Open-Source Solutions на YouTube, начиная с 8:50
  14. InfiniDB vs ClickHouse (кит.). www.verynull.com (22 августа 2016). Дата обращения: 17 августа 2018. (недоступная ссылка)
  15. Column Store Database Benchmarks: MariaDB ColumnStore vs. ClickHouse vs. Apache Spark (англ.). www.percona.com (15 марта 2017). Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
  16. "A Look at ClickHouse: A New Open Source Columnar Database - DZone Database". dzone.com (англ.). Архивировано 20 августа 2018. Дата обращения: 20 августа 2018.
  17. Mark Litwintschik. Summary of the 1.1 Billion Taxi Rides Benchmarks (англ.). tech.marksblogg.com. Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
  18. Usage Statistics and Market Share of Traffic Analysis Tools for Websites, April 2019. w3techs.com. Дата обращения: 18 апреля 2019. Архивировано 21 января 2014 года.
  19. "Эволюция структур данных в Яндекс.Метрике". Блог Yandex. habr.com. 2015-12-17. Архивировано 17 августа 2018. Дата обращения: 17 августа 2018.
  20. ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016. www.percona.com. Дата обращения: 20 октября 2016. Архивировано 21 октября 2016 года.
  21. 1 2 "Яндекс открывает ClickHouse". Архивировано 21 октября 2016. Дата обращения: 20 октября 2016.
  22. Основанный «Яндексом» стартап ClickHouse стал «единорогом». Дата обращения: 27 декабря 2022. Архивировано 27 декабря 2022 года.
  23. Aaron Katz, Yury Izrailevsky and Alexey Milovidov. We Stand With Ukraine (англ.). clickhouse.com (31 марта 2023). Дата обращения: 4 августа 2023. Архивировано 4 августа 2023 года.
  24. Цепелева, Маша ClickHouse выступила против «операции» на Украине и заявила, что не связана с Россией, хотя её инвестор — Yandex NV — Сервисы на vc.ru. vc.ru (1 апреля 2022). Дата обращения: 9 сентября 2023. Архивировано 6 сентября 2022 года.
  25. Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса. events.yandex.ru. Дата обращения: 20 октября 2016. Архивировано 30 августа 2017 года.
  26. "Yandex — Yandex Launches Search Tool for LHC Events at CERN". Yandex. Архивировано 20 октября 2016. Дата обращения: 20 октября 2016.
  27. Alex Bocharov (2018-03-06). "HTTP Analytics for 6M requests per second using ClickHouse". The Cloudflare Blog. Архивировано 17 августа 2018. Дата обращения: 17 августа 2018.
  28. "Немного закулисья VK". habr.com. 2018-06-22. Архивировано 20 августа 2018. Дата обращения: 20 августа 2018.
  29. Демьян Кудрявцев (2018-05-17). "Разработка API ClickHouse для Рамблер/топ-100". Блог компании Rambler Group. habr.com. Архивировано 19 августа 2018. Дата обращения: 19 августа 2018.
  30. М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов (2016-11-11). "Сравнение аналитических in-memory баз данных". Блог IT’s Tinkoff.ru. Habr. Архивировано 17 августа 2018. Дата обращения: 17 августа 2018.{{cite news}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  31. Felipe Espinoza and Javier Bustos. Monitoring DNS with Open-Source Solutions | USENIX (англ.). SREcon18 Americas. www.usenix.org (29 марта 2018). Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
  32. "Amadeus Technologies Launches Investment and Insights Tool Based on Machine Learning and Strategy Algorithms". Kodiak Data. 2018-03-27. Архивировано 21 августа 2018. Дата обращения: 21 августа 2018.
  33. Владимир Колобаев. "Хранение метрик: как мы перешли с Graphite+Whisper на Graphite+ClickHouse". Блог компании Avito. habr.com. Архивировано 19 августа 2018. Дата обращения: 19 августа 2018.
  34. ClickHouse Meetup in Paris (англ.). Altinity. Дата обращения: 8 октября 2018. Архивировано 8 октября 2018 года.
  35. Игорь Стрыхарь (2016-11-07). "Как запустить ClickHouse своими силами и выиграть джекпот". Блог компании СМИ2. habr.com. Архивировано 18 августа 2018. Дата обращения: 18 августа 2018.
  36. Коняев Андрей (2018-01-24). "Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse". Блог компании Онлайн-кинотеатр ivi. habr.com. Архивировано 19 августа 2018. Дата обращения: 19 августа 2018.
  37. Alexander Zaytsev (2017-08-10). "Who and Why is Using ClickHouse". Altinity (англ.). Архивировано 17 августа 2018. Дата обращения: 17 августа 2018.
  38. ClickHouse Meetup in Berlin (англ.). yandex.github.io. Дата обращения: 17 августа 2018. Архивировано из оригинала 17 августа 2018 года.
  39. "«Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse". Блог компании JUG.ru Group. habr.ru. 2017-10-30. Архивировано 19 августа 2018. Дата обращения: 19 августа 2018.

Ссылки