ClickHouse

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
ClickHouse
Clickhouse.png
Тип реляционная СУБД
Разработчик Яндекс
Написана на C++
Операционная система Linux
Первый выпуск 15 июня 2016; 3 года назад (2016-06-15)
Последняя версия v19.3.3-stable[1] (13 февраля 2019; 9 месяцев назад (2019-02-13))
Лицензия Apache (2.0)[2]
Сайт clickhouse.yandex

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

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

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

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

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

История[править | править код]

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

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

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

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

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

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

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

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

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

В настоящее время многие компании успешно используют ClickHouse, в том числе: Cloudflare, Bloomberg[22], Spotify[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. ClickHouse releases (англ.). yandex/ClickHouse. GitHub. Дата обращения 14 февраля 2019.
  2. Лицензия ClickHouse (англ.). yandex/ClickHouse. GitHub. Дата обращения 17 августа 2018.
  3. Яндекс ClickHouse. Быстрее некуда. / Филиппов Олег // Системный администратор. — 2017. — № 1—2. — С. 56—58.
  4. ClickHouse в системах сбора статистики / Календарев Александр // Системный администратор. — 2017. — № 3. — С. 56—59.
  5. ClickHouse — Национальная библиотека им. Н. Э. Баумана. ru.bmstu.wiki. Дата обращения 20 августа 2018.
  6. Афанасьев Г.И., Белоногов И.Б., Булатова И.Г., Тоноян С.А. Организация кластеров для обработки данных на основе СУБД YANDEX CLICKHOUSE и распределенной координационной службы для распределенных приложений APACHE ZOOKEEPER // Аллея науки. — 2018. — Т. 3, № 1. — С. 850-860. — ISSN 2587-6244.
  7. Доступ к ClickHouse с помощью JDBC (рус.). Дата обращения 19 августа 2018.
  8. Interfaces (англ.). ClickHouse Documentation. clickhouse.yandex. Дата обращения 17 августа 2018.
  9. Performance comparison of analytical DBMS (англ.). clickhouse.yandex. Дата обращения 17 августа 2018.
  10. ClickHouse vs Amazon RedShift Benchmark (англ.). www.altinity.com. Дата обращения 17 августа 2018.
  11. SREcon18 Americas - Monitoring DNS with Open-Source Solutions на YouTube, начиная с 8:50
  12. InfiniDB vs ClickHouse (кит.). www.verynull.com (22 августа 2016). Дата обращения 17 августа 2018. (недоступная ссылка)
  13. Column Store Database Benchmarks: MariaDB ColumnStore vs. ClickHouse vs. Apache Spark (англ.). www.percona.com (15 March 2017). Дата обращения 17 августа 2018.
  14. A Look at ClickHouse: A New Open Source Columnar Database - DZone Database (англ.), dzone.com. Дата обращения 20 августа 2018.
  15. Mark Litwintschik. Summary of the 1.1 Billion Taxi Rides Benchmarks (англ.). tech.marksblogg.com. Дата обращения 17 августа 2018.
  16. Usage Statistics and Market Share of Traffic Analysis Tools for Websites, April 2019. w3techs.com. Дата обращения 18 апреля 2019.
  17. Эволюция структур данных в Яндекс.Метрике (рус.), Блог Yandex, habr.com (17 декабря 2015). Дата обращения 17 августа 2018.
  18. ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016. www.percona.com. Дата обращения 20 октября 2016.
  19. 1 2 Яндекс открывает ClickHouse. Дата обращения 20 октября 2016.
  20. Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса. events.yandex.ru. Дата обращения 20 октября 2016.
  21. Yandex — Yandex Launches Search Tool for LHC Events at CERN, Yandex. Дата обращения 20 октября 2016.
  22. Alex Bocharov. HTTP Analytics for 6M requests per second using ClickHouse, The Cloudflare Blog (6 марта 2018). Дата обращения 17 августа 2018.
  23. Gleb Kanterov. ClickHouse for Experimentation. ClickHouse Community Meetup in Berlin. ClickHouse Blog. clickhouse.yandex (3 июля 2018). Дата обращения 20 августа 2018.
  24. Немного закулисья VK (рус.), habr.com (22 июня 2018). Дата обращения 20 августа 2018.
  25. Демьян Кудрявцев. Разработка API ClickHouse для Рамблер/топ-100 (рус.), Блог компании Rambler Group, habr.com (17 мая 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 March 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.
  35. «Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse (рус.), Блог компании JUG.ru Group, habr.ru (30 октября 2017). Дата обращения 19 августа 2018.

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