ClickHouse: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Mvf (обсуждение | вклад) |
Mvf (обсуждение | вклад) Нет описания правки |
||
Строка 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 | |
---|---|
Тип | реляционная СУБД |
Разработчик | Яндекс |
Написана на | C++ |
Операционная система | Linux |
Первый выпуск | 15 июня 2016 |
Последняя версия | 18.10.3-stable[1] (13 августа 2018 ) |
Репозиторий | 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] и др.
Примечания
- ↑ ClickHouse releases (англ.). yandex/ClickHouse. GitHub. Дата обращения: 17 августа 2018.
- ↑ Лицензия ClickHouse (англ.). yandex/ClickHouse. GitHub. Дата обращения: 17 августа 2018.
- ↑ Яндекс ClickHouse. Быстрее некуда. / Филиппов Олег // Системный администратор. — 2017. — № 1—2. — С. 56—58.
- ↑ ClickHouse в системах сбора статистики / Календарев Александр // Системный администратор. — 2017. — № 3. — С. 56—59.
- ↑ ClickHouse — Национальная библиотека им. Н. Э. Баумана . ru.bmstu.wiki. Дата обращения: 20 августа 2018.
- ↑ Афанасьев Г.И., Белоногов И.Б., Булатова И.Г., Тоноян С.А. Организация кластеров для обработки данных на основе СУБД YANDEX CLICKHOUSE и распределенной координационной службы для распределенных приложений APACHE ZOOKEEPER // Аллея науки. — 2018. — Т. 3, № 1. — С. 850-860. — ISSN 2587-6244.
- ↑ "Доступ к ClickHouse с помощью JDBC". Дата обращения: 19 августа 2018.
- ↑ Interfaces (англ.). ClickHouse Documentation. clickhouse.yandex. Дата обращения: 17 августа 2018.
- ↑ Performance comparison of analytical DBMS (англ.). clickhouse.yandex. Дата обращения: 17 августа 2018.
- ↑ ClickHouse vs Amazon RedShift Benchmark (англ.). www.altinity.com. Дата обращения: 17 августа 2018.
- ↑ SREcon18 Americas - Monitoring DNS with Open-Source Solutions на YouTube, начиная с 8:50
- ↑ InfiniDB vs ClickHouse (неопр.). www.verynull.com (22 августа 2016). Дата обращения: 17 августа 2018.
- ↑ Column Store Database Benchmarks: MariaDB ColumnStore vs. Clickhouse vs. Apache Spark (англ.). www.percona.com (15 марта 2017). Дата обращения: 17 августа 2018.
- ↑ "A Look at ClickHouse: A New Open Source Columnar Database - DZone Database". dzone.com (англ.). Дата обращения: 20 августа 2018.
- ↑ Mark Litwintschik. Summary of the 1.1 Billion Taxi Rides Benchmarks (англ.). tech.marksblogg.com. Дата обращения: 17 августа 2018.
- ↑ Usage Statistics and Market Share of Traffic Analysis Tools for Websites, October 2016 . w3techs.com. Дата обращения: 20 октября 2016.
- ↑ Datanyze. Google Analytics vs Yandex Metrica Competitor Report | Web Analytics (амер. англ.). Datanyze. Дата обращения: 17 августа 2018.
- ↑ Wappalyzer. Analytics . wappalyzer.com (30 декабря 2011). Дата обращения: 20 октября 2016.
- ↑ Analytics - SEOMON.com . seomon.com. Дата обращения: 20 октября 2016.
- ↑ "Эволюция структур данных в Яндекс.Метрике". Блог Yandex. habr.com. 2015-12-17. Дата обращения: 17 августа 2018.
- ↑ ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016 . www.percona.com. Дата обращения: 20 октября 2016.
- ↑ 1 2 "Яндекс открывает ClickHouse". Дата обращения: 20 октября 2016.
- ↑ Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса . events.yandex.ru. Дата обращения: 20 октября 2016.
- ↑ "Yandex — Yandex Launches Search Tool for LHC Events at CERN". Yandex. Дата обращения: 20 октября 2016.
- ↑ Alex Bocharov (2018-03-06). "HTTP Analytics for 6M requests per second using ClickHouse". The Cloudflare Blog. Дата обращения: 17 августа 2018.
- ↑ М. Белоусов, Д. Немчин, Г. Безруких, Д. Павлов (2016-11-11). "Сравнение аналитических in-memory баз данных". Блог IT’s Tinkoff.ru. Habr. Дата обращения: 17 августа 2018.
{{cite news}}
: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка) - ↑ Felipe Espinoza and Javier Bustos. Monitoring DNS with Open-Source Solutions | USENIX (англ.). SREcon18 Americas. www.usenix.org (29 марта 2018). Дата обращения: 17 августа 2018.
- ↑ Владимир Колобаев. "Хранение метрик: как мы перешли с Graphite+Whisper на Graphite+ClickHouse". Блог компании Avito. habr.com. Дата обращения: 19 августа 2018.
- ↑ Gleb Kanterov. ClickHouse for Experimentation. ClickHouse Community Meetup in Berlin . ClickHouse Blog. clickhouse.yandex (3 июля 2018). Дата обращения: 20 августа 2018.
- ↑ "Немного закулисья VK". habr.com. 2018-06-22. Дата обращения: 20 августа 2018.
- ↑ Демьян Кудрявцев (2018-05-17). "Разработка API Clickhouse для Рамблер/топ-100". Блог компании Rambler Group. habr.com. Дата обращения: 19 августа 2018.
- ↑ Игорь Стрыхарь (2016-11-07). "Как запустить ClickHouse своими силами и выиграть джекпот". Блог компании СМИ2. habr.com. Дата обращения: 18 августа 2018.
- ↑ Alexander Zaytsev (2017-08-10). "Who and Why is Using ClickHouse". Altinity (англ.). Дата обращения: 17 августа 2018.
- ↑ ClickHouse Meetup in Berlin (англ.). yandex.github.io. Дата обращения: 17 августа 2018.
- ↑ Коняев Андрей (2018-01-24). "Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse". Блог компании Онлайн-кинотеатр ivi. habr.com. Дата обращения: 19 августа 2018.
- ↑ "«Иногда приходится заглядывать в код Spark»: Александр Морозов (SEMrush) об использовании Scala, Spark и ClickHouse". Блог компании JUG.ru Group. habr.ru. 2017-10-30. Дата обращения: 19 августа 2018.
Ссылки