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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Добавил ссылку на Amadeus.
м автоматическая отмена правки участника 2A02:6B8:0:845:0:0:1:3B, вредной с вероятностью 0.944
Метка: откат
Строка 27: Строка 27:
| номер = 3
| номер = 3
| страницы = 56—59
| страницы = 56—59
}}</ref><ref>{{Cite web|url=https://ru.bmstu.wiki/ClickHouse|title=ClickHouse — Национальная библиотека им. Н. Э. Баумана|publisher=ru.bmstu.wiki|lang=ru|accessdate=2018-08-20}}</ref>.
}}</ref>.


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


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


Система оптимизирована для хранения данных на жестких дисках (используются преимущества линейного чтения, сжатия данных). Для обеспечения отказоустойчивости и масштабируемости Clickhouse может быть развернут на кластере (для координации процесса репликации используется [[Распределённый менеджер блокировок#ZooKeeper|Apache ZooKeeper]]). Для работы с базой данных существует консольный клиент, веб-клиент, [[HTTP]] интерфейс, [[ODBC]] и [[JDBC]]-драйверы, а также готовые библиотеки для интеграции со многими популярными языками программирования и библиотеками<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 Database, 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>, 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>, Druid<ref>{{YouTube|XVNF3m_lmJE|SREcon18 Americas - Monitoring DNS with Open-Source Solutions|start=8m50s}}</ref>, 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>, 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>, 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>.


== История ==
== История ==
ClickHouse был разработан для решения задач веб-аналитики для [[Яндекс.Метрика|Яндекс.Метрики]] — второй по величине системы в мире<ref>{{Cite web|url=https://w3techs.com/technologies/overview/traffic_analysis/all|title=Usage Statistics and Market Share of Traffic Analysis Tools for Websites, October 2016|publisher=w3techs.com|accessdate=2016-10-20}}</ref><ref>{{Cite web|url=https://www.datanyze.com/market-share/web-analytics/google-analytics-vs-yandex-metrica|title=Google Analytics vs Yandex Metrica Competitor Report {{!}} Web Analytics|author=Datanyze|publisher=Datanyze|lang=en-US|accessdate=2018-08-17}}</ref><ref>{{Cite web|url=http://wappalyzer.com/categories/analytics|title=Analytics|author=Wappalyzer|website=|date=2011-12-30|publisher=wappalyzer.com|accessdate=2016-10-20}}</ref><ref>{{Cite web|url=https://seomon.com/technologies/analytics/|title=Analytics - SEOMON.com|publisher=seomon.com|accessdate=2016-10-20}}</ref>.
ClickHouse был разработан для решения задач веб-аналитики для [[Яндекс.Метрика|Яндекс.Метрики]] — второй по величине системы в мире<ref>{{Cite web|url=https://w3techs.com/technologies/overview/traffic_analysis/all|title=Usage Statistics and Market Share of Traffic Analysis Tools for Websites, October 2016|publisher=w3techs.com|accessdate=2016-10-20}}</ref><ref>{{Cite web|url=https://www.datanyze.com/market-share/web-analytics/google-analytics-vs-yandex-metrica|title=Google Analytics vs Yandex Metrica Competitor Report {{!}} Web Analytics|author=Datanyze|publisher=Datanyze|lang=en-US|accessdate=2018-08-17}}</ref><ref>{{Cite web|url=http://wappalyzer.com/categories/analytics|title=Analytics|author=Wappalyzer|website=|date=2011-12-30|publisher=wappalyzer.com|accessdate=2016-10-20}}</ref><ref>{{Cite web|url=https://seomon.com/technologies/analytics/|title=Analytics - SEOMON.com|publisher=seomon.com|accessdate=2016-10-20}}</ref>.


Изначально в [[Яндекс.Метрика|Яндекс.Метрике]] для построения отчетов использовались предварительно агрегированные данные<ref>{{Cite news|title=Эволюция структур данных в Яндекс.Метрике|author=|url=https://habr.com/company/yandex/blog/273305/|work=Блог Yandex|publisher=habr.com|date=2015-12-17|accessdate=2018-08-17|language=ru-RU}}</ref>. Это позволяло уменьшить размер хранимых данных, однако такой подход имел ряд ограничений и недостатков:
Изначально в [[Яндекс.Метрика|Яндекс.Метрике]] для построения отчетов использовались предварительно агрегированные данные<ref>{{Cite news|title=Эволюция структур данных в Яндекс.Метрике|author=|url=https://habr.com/company/yandex/blog/273305/|work=Блог Yandex|publisher=habr.com|date=2015-12-17|accessdate=2018-08-17|language=ru-RU}}</ref>.
* нужно заранее зафиксировать список доступных для пользователя отчетов и нет возможности построить произвольный отчет;
* в результате агрегации объём данных может не уменьшиться, а вырасти: это происходит при группировке по большому количеству ключей или по ключам высокой [[Мощность множества|кардинальности]] (таким как [[URL]]);
* сложно поддерживать логическую целостность при хранении большого количества разных агрегаций.


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

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

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


Первый прототип ClickHouse появился в 2009 году<ref name=":2">{{Cite web|url=https://www.percona.com/live/plam16/sessions/clickhouse-high-performance-distributed-dbms-analytics|title=ClickHouse: High-Performance Distributed DBMS for Analytics {{!}} Percona Live Amsterdam - Open Source Database Conference 2016|publisher=www.percona.com|accessdate=2016-10-20}}</ref>. К концу 2014 года была запущена Метрика 2.0, работающая на базе ClickHouse, которая позволила пользователям строить произвольные отчеты.
Первый прототип ClickHouse появился в 2009 году<ref name=":2">{{Cite web|url=https://www.percona.com/live/plam16/sessions/clickhouse-high-performance-distributed-dbms-analytics|title=ClickHouse: High-Performance Distributed DBMS for Analytics {{!}} Percona Live Amsterdam - Open Source Database Conference 2016|publisher=www.percona.com|accessdate=2016-10-20}}</ref>. К концу 2014 года была запущена Метрика 2.0, работающая на базе ClickHouse, которая позволила пользователям строить произвольные отчеты.
Строка 54: Строка 57:
В 2016 году кроме [[Яндекс.Метрика|Яндекс.Метрики]], ClickHouse использовался в ряде различных проектов внутри [[Яндекс]]а, например, в [[Открытое программное обеспечение|open-source]] проекте [[Яндекс.Танк]] для хранения данных о телеметрии<ref name=":0" />, [[Яндекс.Маркет]]е для мониторинга здоровья сервиса<ref>{{Cite web|url=https://events.yandex.ru/lib/talks/3715/|title=Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса|author=|work=|date=|publisher=events.yandex.ru|accessdate=2016-10-20}}</ref> , и во внешних проектах, например, для анализа метаданных о событиях в [[LHCb]] эксперименте в [[ЦЕРН|CERN]]<ref>{{Cite news|title=Yandex — Yandex Launches Search Tool for LHC Events at CERN|url=https://www.yandex.com/company/press_center/press_releases/2012/2012-04-10/|work=Yandex|accessdate=2016-10-20}}</ref> (порядка миллиарда событий и 1000 параметров для каждого события).
В 2016 году кроме [[Яндекс.Метрика|Яндекс.Метрики]], ClickHouse использовался в ряде различных проектов внутри [[Яндекс]]а, например, в [[Открытое программное обеспечение|open-source]] проекте [[Яндекс.Танк]] для хранения данных о телеметрии<ref name=":0" />, [[Яндекс.Маркет]]е для мониторинга здоровья сервиса<ref>{{Cite web|url=https://events.yandex.ru/lib/talks/3715/|title=Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса|author=|work=|date=|publisher=events.yandex.ru|accessdate=2016-10-20}}</ref> , и во внешних проектах, например, для анализа метаданных о событиях в [[LHCb]] эксперименте в [[ЦЕРН|CERN]]<ref>{{Cite news|title=Yandex — Yandex Launches Search Tool for LHC Events at CERN|url=https://www.yandex.com/company/press_center/press_releases/2012/2012-04-10/|work=Yandex|accessdate=2016-10-20}}</ref> (порядка миллиарда событий и 1000 параметров для каждого события).


В настоящее время многие компании успешно используют ClickHouse, в том числе: CloudFlare<ref>{{Cite news|title=HTTP Analytics for 6M requests per second using ClickHouse|author=Alex Bocharov|url=https://blog.cloudflare.com/http-analytics-for-6m-requests-per-second-using-clickhouse/|work=The Cloudflare Blog|date=2018-03-06|accessdate=2018-08-17}}</ref>, [[Amadeus]]<ref>{{Cite news|title=Amadeus Technologies Launches Investment and Insights Tool Based on Machine Learning and Strategy Algorithms|url=https://www.prnewswire.com/news-releases/amadeus-technologies-launches-investment-and-insights-tool-based-on-machine-learning-and-strategy-algorithms-300619982.html|work=Kodiak Data|date=2018-03-27}}</ref>, [[Тинькофф банк]]<ref>{{Cite news|title=Сравнение аналитических in-memory баз данных|author=М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов|url=https://habr.com/company/tinkoff/blog/310620/|work=Блог IT’s Tinkoff.ru|publisher=Habr|date=2016-11-11|accessdate=2018-08-17|language=ru-RU}}</ref>, NIC Labs Chile<ref>{{Cite web|url=https://www.usenix.org/conference/srecon18americas/presentation/bustos|title=Monitoring DNS with Open-Source Solutions {{!}} USENIX|author=Felipe Espinoza and Javier Bustos|website=SREcon18 Americas|date=2018-03-29|publisher=www.usenix.org|lang=en|accessdate=2018-08-17}}</ref>, Adtelligent, Carto, Lifestreet, СМИ2<ref>{{Cite news|title=Как запустить ClickHouse своими силами и выиграть джекпот|author=Игорь Стрыхарь|url=https://habr.com/company/smi2/blog/314558/|work=Блог компании СМИ2|publisher=habr.com|date=2016-11-07|accessdate=2018-08-18|language=ru-RU}}</ref>, Mail.ru, Infinidat<ref>{{Cite news|title=Who and Why is Using ClickHouse|author=Alexander Zaytsev|url=https://www.altinity.com/blog/2017/8/10/who-and-why-is-using-clickhouse|work=Altinity|date=2017-08-10|accessdate=2018-08-17|language=en-US}}</ref><ref>{{Cite web|url=https://yandex.github.io/clickhouse-presentations/meetup9/|title=ClickHouse Meetup in Berlin|publisher=yandex.github.io|lang=en|accessdate=2018-08-17}}</ref> и др.
В настоящее время многие компании успешно используют ClickHouse, в том числе: [[Cloudflare]]<ref>{{Cite news|title=HTTP Analytics for 6M requests per second using ClickHouse|author=Alex Bocharov|url=https://blog.cloudflare.com/http-analytics-for-6m-requests-per-second-using-clickhouse/|work=The Cloudflare Blog|date=2018-03-06|accessdate=2018-08-17}}</ref>, [[Spotify]]<ref>{{Cite web|url=https://clickhouse.yandex/blog/en/clickhouse-community-meetup-in-berlin-on-july-3-2018|title=ClickHouse for Experimentation|author=Gleb Kanterov|website=ClickHouse Blog|subtitle=ClickHouse Community Meetup in Berlin|date=2018-07-03|publisher=clickhouse.yandex|accessdate=2018-08-20}}</ref>, [[ВКонтакте]]<ref>{{Cite news|title=Немного закулисья VK|author=|url=https://habr.com/company/oleg-bunin/blog/414881/|work=|publisher=habr.com|date=2018-06-22|accessdate=2018-08-20|language=ru-RU}}</ref>, [[Rambler]]<ref>{{Cite news|title=Разработка API Clickhouse для Рамблер/топ-100|author=Демьян Кудрявцев|url=https://habr.com/company/rambler-co/blog/358762/|work=Блог компании Rambler Group|publisher=habr.com|date=2018-05-17|accessdate=2018-08-19|language=ru-RU}}</ref>, [[Тинькофф банк]]<ref>{{Cite news|title=Сравнение аналитических in-memory баз данных|author=М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов|url=https://habr.com/company/tinkoff/blog/310620/|work=Блог IT’s Tinkoff.ru|publisher=Habr|date=2016-11-11|accessdate=2018-08-17|language=ru-RU}}</ref>, [[.cl|NIC Labs Chile]]<ref>{{Cite web|url=https://www.usenix.org/conference/srecon18americas/presentation/bustos|title=Monitoring DNS with Open-Source Solutions {{!}} USENIX|author=Felipe Espinoza and Javier Bustos|website=SREcon18 Americas|date=2018-03-29|publisher=www.usenix.org|lang=en|accessdate=2018-08-17}}</ref>, [[Avito.ru]]<ref>{{Cite news|title=Хранение метрик: как мы перешли с Graphite+Whisper на Graphite+ClickHouse|author=Владимир Колобаев|url=https://habr.com/company/avito/blog/343928/|work=Блог компании Avito|publisher=habr.com|date=|accessdate=2018-08-19|language=ru-RU}}</ref>, [[СМИ2]]<ref>{{Cite news|title=Как запустить ClickHouse своими силами и выиграть джекпот|author=Игорь Стрыхарь|url=https://habr.com/company/smi2/blog/314558/|work=Блог компании СМИ2|publisher=habr.com|date=2016-11-07|accessdate=2018-08-18|language=ru-RU}}</ref>, [[ivi.ru]]<ref>{{Cite news|title=Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse|author=Коняев Андрей|url=https://habr.com/company/ivi/blog/347408/|work=Блог компании Онлайн-кинотеатр ivi|publisher=habr.com|date=2018-01-24|accessdate=2018-08-19|language=ru-RU}}</ref>, [[Mail.ru]], {{comment|Adtelligent|ex. VertaMedia}}, Carto, Lifestreet, [[:en:Infinidat|Infinidat]]<ref>{{Cite news|title=Who and Why is Using ClickHouse|author=Alexander Zaytsev|url=https://www.altinity.com/blog/2017/8/10/who-and-why-is-using-clickhouse|work=Altinity|date=2017-08-10|accessdate=2018-08-17|language=en-US}}</ref><ref>{{Cite web|url=https://yandex.github.io/clickhouse-presentations/meetup9/|title=ClickHouse Meetup in Berlin|publisher=yandex.github.io|lang=en|accessdate=2018-08-17}}</ref>, [[:en:SemRush|SemRush]]<ref>{{Cite news|title=«Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse|author=|url=https://habr.com/company/jugru/blog/341288/|work=Блог компании JUG.ru Group|publisher=habr.ru|date=2017-10-30|accessdate=2018-08-19|language=ru-RU}}</ref> и др.


== Примечания ==
== Примечания ==

Версия от 05:27, 21 августа 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], Spotify[26], ВКонтакте[27], Rambler[28], Тинькофф банк[29], NIC Labs Chile[30], Avito.ru[31], СМИ2[32], ivi.ru[33], Mail.ru, Adtelligent, Carto, Lifestreet, Infinidat[34][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. Gleb Kanterov. ClickHouse for Experimentation. ClickHouse Community Meetup in Berlin. ClickHouse Blog. clickhouse.yandex (3 июля 2018). Дата обращения: 20 августа 2018.
  27. "Немного закулисья VK". habr.com. 2018-06-22. Дата обращения: 20 августа 2018.
  28. Демьян Кудрявцев (2018-05-17). "Разработка API Clickhouse для Рамблер/топ-100". Блог компании Rambler Group. habr.com. Дата обращения: 19 августа 2018.
  29. М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов (2016-11-11). "Сравнение аналитических in-memory баз данных". Блог IT’s Tinkoff.ru. Habr. Дата обращения: 17 августа 2018.{{cite news}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  30. Felipe Espinoza and Javier Bustos. Monitoring DNS with Open-Source Solutions | USENIX (англ.). SREcon18 Americas. www.usenix.org (29 марта 2018). Дата обращения: 17 августа 2018.
  31. Владимир Колобаев. "Хранение метрик: как мы перешли с Graphite+Whisper на Graphite+ClickHouse". Блог компании Avito. habr.com. Дата обращения: 19 августа 2018.
  32. Игорь Стрыхарь (2016-11-07). "Как запустить ClickHouse своими силами и выиграть джекпот". Блог компании СМИ2. habr.com. Дата обращения: 18 августа 2018.
  33. Коняев Андрей (2018-01-24). "Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse". Блог компании Онлайн-кинотеатр ivi. habr.com. Дата обращения: 19 августа 2018.
  34. Alexander Zaytsev (2017-08-10). "Who and Why is Using ClickHouse". Altinity (англ.). Дата обращения: 17 августа 2018.
  35. ClickHouse Meetup in Berlin (англ.). yandex.github.io. Дата обращения: 17 августа 2018.
  36. "«Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse". Блог компании JUG.ru Group. habr.ru. 2017-10-30. Дата обращения: 19 августа 2018.

Ссылки