ClickHouse: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 35: Строка 35:
Система оптимизирована для хранения данных на жестких дисках (используются преимущества линейного чтения, сжатия данных). Для обеспечения отказоустойчивости и масштабируемости Clickhouse может быть развернут на кластере (для координации процесса репликации используется [[Распределённый менеджер блокировок#ZooKeeper|Apache ZooKeeper]])<ref>{{Статья|автор=Афанасьев Г.И., Белоногов И.Б., Булатова И.Г., Тоноян С.А.|заглавие=Организация кластеров для обработки данных на основе СУБД YANDEX CLICKHOUSE и распределенной координационной службы для распределенных приложений APACHE ZOOKEEPER|ссылка=http://alley-science.ru/domains_data/files/january-2018/ORGANIZACIYa%20KLASTEROV%20DLYa%20OBRABOTKI%20DANNYH%20NA%20OSNOVE%20SUBD%20YANDEXCLICKHOUSE%20I%20%20RASPREDELENNOY%20KOORDINACIONNOY%20SLUZhBY%20DLYa%20RASPREDELENNYH%20PRILOZhENIY%20APACHEZOOKEEPER.pdf|язык=|издание=Аллея науки|тип=|год=2018|месяц=|число=|том=3|номер=1|страницы=850-860|issn=2587-6244}}</ref>. Для работы с базой данных существует консольный клиент, веб-клиент, [[HTTP]] интерфейс, [[ODBC]] и [[JDBC]]-драйверы<ref>{{Cite news|title=Доступ к ClickHouse с помощью JDBC|url=https://habr.com/post/332112/|accessdate=2018-08-19|language=ru-RU}}</ref>, а также готовые библиотеки для интеграции со многими популярными языками программирования и библиотеками<ref>{{Cite web|url=https://clickhouse.yandex/docs/en/single/#interfaces|title=Interfaces|author=|website=ClickHouse Documentation|date=|publisher=clickhouse.yandex|lang=en|accessdate=2018-08-17}}</ref>.
Система оптимизирована для хранения данных на жестких дисках (используются преимущества линейного чтения, сжатия данных). Для обеспечения отказоустойчивости и масштабируемости Clickhouse может быть развернут на кластере (для координации процесса репликации используется [[Распределённый менеджер блокировок#ZooKeeper|Apache ZooKeeper]])<ref>{{Статья|автор=Афанасьев Г.И., Белоногов И.Б., Булатова И.Г., Тоноян С.А.|заглавие=Организация кластеров для обработки данных на основе СУБД YANDEX CLICKHOUSE и распределенной координационной службы для распределенных приложений APACHE ZOOKEEPER|ссылка=http://alley-science.ru/domains_data/files/january-2018/ORGANIZACIYa%20KLASTEROV%20DLYa%20OBRABOTKI%20DANNYH%20NA%20OSNOVE%20SUBD%20YANDEXCLICKHOUSE%20I%20%20RASPREDELENNOY%20KOORDINACIONNOY%20SLUZhBY%20DLYa%20RASPREDELENNYH%20PRILOZhENIY%20APACHEZOOKEEPER.pdf|язык=|издание=Аллея науки|тип=|год=2018|месяц=|число=|том=3|номер=1|страницы=850-860|issn=2587-6244}}</ref>. Для работы с базой данных существует консольный клиент, веб-клиент, [[HTTP]] интерфейс, [[ODBC]] и [[JDBC]]-драйверы<ref>{{Cite news|title=Доступ к ClickHouse с помощью JDBC|url=https://habr.com/post/332112/|accessdate=2018-08-19|language=ru-RU}}</ref>, а также готовые библиотеки для интеграции со многими популярными языками программирования и библиотеками<ref>{{Cite web|url=https://clickhouse.yandex/docs/en/single/#interfaces|title=Interfaces|author=|website=ClickHouse Documentation|date=|publisher=clickhouse.yandex|lang=en|accessdate=2018-08-17}}</ref>.


Во многих тестах ClickHouse показывает очень высокую производительность, выигрывая по этому показателю у таких конкурентов как [[Greenplum]], [[:en:Vertica|Vertica]]<ref>{{Cite web|url=https://clickhouse.yandex/benchmark.html#%5B1000000000%2C%5B%22ClickHouse%22%2C%22Vertica%22%2C%22Greenplum%22%5D%2C%5B%220%22%2C%221%22%5D%5D|title=Performance comparison of analytical DBMS|publisher=clickhouse.yandex|accessdate=2018-08-17|language=en}}</ref>, [[:en:Amazon Redshift|Amazon Redshift]]<ref>{{Cite web|url=https://www.altinity.com/blog/2017/6/20/clickhouse-vs-redshift|title=ClickHouse vs Amazon RedShift Benchmark|publisher=www.altinity.com|accessdate=2018-08-17|language=en}}</ref>, [[:en:Druid (open-source data store)|Druid]]<ref>{{YouTube|XVNF3m_lmJE|SREcon18 Americas - Monitoring DNS with Open-Source Solutions|start=8m50s}}</ref>, [[:en:InfiniDB|InfiniDB]]/MariaDB ColumnStore<ref>{{Cite web|url=https://www.verynull.com/2016/08/22/infinidb与clickhouse对比/|title=InfiniDB vs ClickHouse|author=|website=|date=2016-08-22|publisher=www.verynull.com|language=cn|accessdate=2018-08-17}}</ref>, [[Apache Spark]]<ref>{{Cite web|url=https://www.percona.com/blog/2017/03/17/column-store-database-benchmarks-mariadb-columnstore-vs-clickhouse-vs-apache-spark/|title=Column Store Database Benchmarks: MariaDB ColumnStore vs. Clickhouse vs. Apache Spark|language=en|date=2017-03-15|publisher=www.percona.com|accessdate=2018-08-17}}</ref>, [[:en:Presto (SQL query engine)|Presto]], [[Elasticsearch]]<ref>{{Cite web|url=http://tech.marksblogg.com/benchmarks.html|title=Summary of the 1.1 Billion Taxi Rides Benchmarks|author=Mark Litwintschik|publisher=tech.marksblogg.com|lang=en|accessdate=2018-08-17}}</ref>.
Во многих тестах ClickHouse показывает очень высокую производительность, выигрывая по этому показателю у таких конкурентов как [[Greenplum]], [[:en:Vertica|Vertica]]<ref>{{Cite web|url=https://clickhouse.yandex/benchmark.html#%5B1000000000%2C%5B%22ClickHouse%22%2C%22Vertica%22%2C%22Greenplum%22%5D%2C%5B%220%22%2C%221%22%5D%5D|title=Performance comparison of analytical DBMS|publisher=clickhouse.yandex|accessdate=2018-08-17|language=en}}</ref>, [[:en:Amazon Redshift|Amazon Redshift]]<ref>{{Cite web|url=https://www.altinity.com/blog/2017/6/20/clickhouse-vs-redshift|title=ClickHouse vs Amazon RedShift Benchmark|publisher=www.altinity.com|accessdate=2018-08-17|language=en}}</ref>, [[:en:Druid (open-source data store)|Druid]]<ref>{{YouTube|XVNF3m_lmJE|SREcon18 Americas - Monitoring DNS with Open-Source Solutions|start=8m50s}}</ref>, [[:en:InfiniDB|InfiniDB]]/MariaDB ColumnStore<ref>{{Cite web|url=https://www.verynull.com/2016/08/22/infinidb与clickhouse对比/|title=InfiniDB vs ClickHouse|author=|website=|date=2016-08-22|publisher=www.verynull.com|language=cn|accessdate=2018-08-17}}</ref>, [[Apache Spark]]<ref>{{Cite web|url=https://www.percona.com/blog/2017/03/17/column-store-database-benchmarks-mariadb-columnstore-vs-clickhouse-vs-apache-spark/|title=Column Store Database Benchmarks: MariaDB ColumnStore vs. Clickhouse vs. Apache Spark|language=en|date=2017-03-15|publisher=www.percona.com|accessdate=2018-08-17}}</ref><ref>{{Cite news|title=A Look at ClickHouse: A New Open Source Columnar Database - DZone Database|url=https://dzone.com/articles/a-look-at-clickhouse-a-new-open-source-columnar-database|work=dzone.com|accessdate=2018-08-20|language=en}}</ref>, [[:en:Presto (SQL query engine)|Presto]], [[Elasticsearch]]<ref>{{Cite web|url=http://tech.marksblogg.com/benchmarks.html|title=Summary of the 1.1 Billion Taxi Rides Benchmarks|author=Mark Litwintschik|publisher=tech.marksblogg.com|lang=en|accessdate=2018-08-17}}</ref>.


== История ==
== История ==

Версия от 08:07, 20 августа 2018

ClickHouse
Логотип программы ClickHouse
Тип реляционная СУБД
Разработчик Яндекс
Написана на C++
Операционная система Linux
Первый выпуск 15 июня 2016; 8 лет назад (2016-06-15)
Последняя версия 18.10.3-stable[1] (13 августа 2018; 6 лет назад (2018-08-13))
Репозиторий github.com/ClickHouse/Cl…
Лицензия 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][18][19].

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

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

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

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

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

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

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

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

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

Примечания

  1. ClickHouse releases (англ.). yandex/ClickHouse. GitHub. Дата обращения: 17 августа 2018.
  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 марта 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, October 2016. w3techs.com. Дата обращения: 20 октября 2016.
  17. Datanyze. Google Analytics vs Yandex Metrica Competitor Report | Web Analytics (амер. англ.). Datanyze. Дата обращения: 17 августа 2018.
  18. Wappalyzer. Analytics. wappalyzer.com (30 декабря 2011). Дата обращения: 20 октября 2016.
  19. Analytics - SEOMON.com. seomon.com. Дата обращения: 20 октября 2016.
  20. "Эволюция структур данных в Яндекс.Метрике". Блог Yandex. habr.com. 2015-12-17. Дата обращения: 17 августа 2018.
  21. ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016. www.percona.com. Дата обращения: 20 октября 2016.
  22. 1 2 "Яндекс открывает ClickHouse". Дата обращения: 20 октября 2016.
  23. Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса. events.yandex.ru. Дата обращения: 20 октября 2016.
  24. "Yandex — Yandex Launches Search Tool for LHC Events at CERN". Yandex. Дата обращения: 20 октября 2016.
  25. Alex Bocharov (2018-03-06). "HTTP Analytics for 6M requests per second using ClickHouse". The Cloudflare Blog. Дата обращения: 17 августа 2018.
  26. М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов (2016-11-11). "Сравнение аналитических in-memory баз данных". Блог IT’s Tinkoff.ru. Habr. Дата обращения: 17 августа 2018.{{cite news}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  27. Felipe Espinoza and Javier Bustos. Monitoring DNS with Open-Source Solutions | USENIX (англ.). SREcon18 Americas. www.usenix.org (29 марта 2018). Дата обращения: 17 августа 2018.
  28. Владимир Колобаев. "Хранение метрик: как мы перешли с Graphite+Whisper на Graphite+ClickHouse". Блог компании Avito. habr.com. Дата обращения: 19 августа 2018.
  29. Gleb Kanterov. ClickHouse for Experimentation. ClickHouse Community Meetup in Berlin. ClickHouse Blog. clickhouse.yandex (3 июля 2018). Дата обращения: 20 августа 2018.
  30. "Немного закулисья VK". habr.com. 2018-06-22. Дата обращения: 20 августа 2018.
  31. Демьян Кудрявцев (2018-05-17). "Разработка API Clickhouse для Рамблер/топ-100". Блог компании Rambler Group. habr.com. Дата обращения: 19 августа 2018.
  32. Игорь Стрыхарь (2016-11-07). "Как запустить ClickHouse своими силами и выиграть джекпот". Блог компании СМИ2. habr.com. Дата обращения: 18 августа 2018.
  33. Alexander Zaytsev (2017-08-10). "Who and Why is Using ClickHouse". Altinity (англ.). Дата обращения: 17 августа 2018.
  34. ClickHouse Meetup in Berlin (англ.). yandex.github.io. Дата обращения: 17 августа 2018.
  35. Коняев Андрей (2018-01-24). "Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse". Блог компании Онлайн-кинотеатр ivi. habr.com. Дата обращения: 19 августа 2018.
  36. "«Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse". Блог компании JUG.ru Group. habr.ru. 2017-10-30. Дата обращения: 19 августа 2018.

Ссылки