Материал из РУВИКИ — свободной энциклопедии

ClickHouse

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

ClickHouse — это колоночная аналитическая СУБД с открытым кодом, позволяющая выполнять аналитические запросы в режиме реального времени на структурированных больших данных, разрабатываемая компанией Яндекс[5][6][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 года Яндексом совместно с венчурными фондами был основан одноименный стартап, занимающийся системой управления базами данных. Компания привлекла 250 млн долларов инвестиций и стала "единорогом", получив оценку капитализации в 2 млрд долларов[22].

Распространение[править | править код]

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

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

Примечания[править | править код]

  1. https://habr.com/ru/company/yandex/blog/303282/ — 2016.
  2. https://github.com/ClickHouse/ClickHouse/releases/tag/v22.3.2.2-lts — 2022.
  3. Release 23.2.6.34 — 2023.
  4. https://github.com/ClickHouse/ClickHouse/blob/master/LICENSE
  5. Яндекс ClickHouse. Быстрее некуда. / Филиппов Олег // Системный администратор. — 2017. — № 1—2. — С. 56—58.
  6. ClickHouse в системах сбора статистики / Календарев Александр // Системный администратор. — 2017. — № 3. — С. 56—59.
  7. ClickHouse — Национальная библиотека им. Н. Э. Баумана. ru.bmstu.wiki. Дата обращения: 20 августа 2018. Архивировано 20 августа 2018 года.
  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 (17 декабря 2015). Архивировано 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 стал «единорогом»
  23. Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса. events.yandex.ru. Дата обращения: 20 октября 2016. Архивировано 30 августа 2017 года.
  24. Yandex — Yandex Launches Search Tool for LHC Events at CERN, Yandex. Архивировано 20 октября 2016 года. Дата обращения: 20 октября 2016.
  25. Alex Bocharov. HTTP Analytics for 6M requests per second using ClickHouse, The Cloudflare Blog (6 марта 2018). Архивировано 17 августа 2018 года. Дата обращения: 17 августа 2018.
  26. Немного закулисья VK (рус.), habr.com (22 июня 2018). Архивировано 20 августа 2018 года. Дата обращения: 20 августа 2018.
  27. Демьян Кудрявцев. Разработка API ClickHouse для Рамблер/топ-100 (рус.), Блог компании Rambler Group, habr.com (17 мая 2018). Архивировано 19 августа 2018 года. Дата обращения: 19 августа 2018.
  28. М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов. Сравнение аналитических in-memory баз данных (рус.), Блог IT’s Tinkoff.ru, Habr (11 ноября 2016). Архивировано 17 августа 2018 года. Дата обращения: 17 августа 2018.
  29. Felipe Espinoza and Javier Bustos. Monitoring DNS with Open-Source Solutions | USENIX (англ.). SREcon18 Americas. www.usenix.org (29 марта 2018). Дата обращения: 17 августа 2018. Архивировано 17 августа 2018 года.
  30. Amadeus Technologies Launches Investment and Insights Tool Based on Machine Learning and Strategy Algorithms, Kodiak Data (27 марта 2018). Архивировано 21 августа 2018 года. Дата обращения: 21 августа 2018.
  31. Владимир Колобаев. Хранение метрик: как мы перешли с Graphite+Whisper на Graphite+ClickHouse (рус.), Блог компании Avito, habr.com. Архивировано 19 августа 2018 года. Дата обращения: 19 августа 2018.
  32. ClickHouse Meetup in Paris (англ.). Altinity. Дата обращения: 8 октября 2018. Архивировано 8 октября 2018 года.
  33. Игорь Стрыхарь. Как запустить ClickHouse своими силами и выиграть джекпот (рус.), Блог компании СМИ2, habr.com (7 ноября 2016). Архивировано 18 августа 2018 года. Дата обращения: 18 августа 2018.
  34. Коняев Андрей. Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse (рус.), Блог компании Онлайн-кинотеатр ivi, habr.com (24 января 2018). Архивировано 19 августа 2018 года. Дата обращения: 19 августа 2018.
  35. Alexander Zaytsev. Who and Why is Using ClickHouse (англ.), Altinity (10 August 2017). Архивировано 17 августа 2018 года. Дата обращения: 17 августа 2018.
  36. ClickHouse Meetup in Berlin (англ.). yandex.github.io. Дата обращения: 17 августа 2018. Архивировано из оригинала 17 августа 2018 года.
  37. «Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse (рус.), Блог компании JUG.ru Group, habr.ru (30 октября 2017). Архивировано 19 августа 2018 года. Дата обращения: 19 августа 2018.

Ссылки[править | править код]