ClickHouse

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

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

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

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

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

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

История

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

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

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

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

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

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

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

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

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

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

Примечания

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

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.