ClickHouse - ClickHouse
Разработчики) | Яндекс |
---|---|
изначальный выпуск | 15 июня 2016 г. |
Стабильный выпуск | v20.11.3.3-stable / 13 ноября 2020 г.[1] |
Предварительный выпуск | Версия 20.7.1.4310 / 8 августа 2020 г.[2] |
Репозиторий | github |
Написано в | C ++ |
Операционная система | Linux, FreeBSD, macOS |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | Clickhouse |
ClickHouse это открытый исходный код колоночная СУБД (колоночная система управления базами данных) для онлайн-аналитическая обработка (OLAP).
ClickHouse разработан российской IT-компанией. Яндекс для Яндекс.Метрика сервис веб-аналитики.[3][4][5][6] ClickHouse позволяет анализировать данные, которые обновляются в режиме реального времени. Система позиционируется как высокая производительность.[7]
Проект был выпущен как программное обеспечение с открытым исходным кодом под Лицензия Apache 2 в июне 2016 г.[8]
ClickHouse используется инструментом нагрузочного тестирования Яндекс.Танк.[8] Яндекс.Маркет использует ClickHouse для отслеживания доступности сайта и ключевых показателей эффективности.[9] ClickHouse также был реализован на ЦЕРН LHCb эксперимент[10] хранить и обрабатывать метаданные на 10 млрд событий с более чем 1000 атрибутами на событие, а Тинькофф Банк использует ClickHouse в качестве хранилища данных для проекта.[11]
История
Яндекс.Метрика раньше использовала классический подход, когда сырые данные хранились в агрегированном виде.[12] Такой подход может помочь уменьшить объем хранимых данных. Однако у него есть несколько ограничений и недостатков:
- Список доступных отчетов должен быть заранее определен, и нет возможности создать собственный отчет.
- Объем данных может увеличиваться после агрегирования. Это происходит, когда данные агрегированы по большому количеству ключей или с использованием ключей с высоким мощность (такие как URL-адреса ).
- Сложно поддерживать логическую последовательность отчетов с различными агрегатами.
Другой подход - хранить неагрегированные данные. Обработка необработанных данных требует высокопроизводительной системы, поскольку все расчеты производятся в режиме реального времени. Чтобы решить эту проблему, столбец-ориентированный СУБД необходим, способный обрабатывать аналитические данные в масштабе всей Интернет. Яндекс начал разрабатывать собственную. Первый прототип ClickHouse появился в 2009 году. К концу 2014 года была выпущена Яндекс.Метрика версии 2.0. Новая версия имеет интерфейс для создания пользовательских отчетов и использует ClickHouse для хранения и обработки данных.
особенности
Основными особенностями СУБД ClickHouse являются:[13]
- Истинно ориентированный на столбец СУБД. Со значениями ничего не сохраняется. Например, поддерживаются значения постоянной длины, чтобы не хранить «число» их длины рядом со значениями.
- Линейная масштабируемость. Кластер можно расширить, добавив серверы.
- Отказоустойчивость. Система представляет собой кластер осколков, где каждый осколок представляет собой группу реплик. ClickHouse использует асинхронную репликацию с несколькими мастерами. Данные записываются в любую доступную реплику, а затем распределяются по всем оставшимся репликам. ZooKeeper используется для координации процессов, но не участвует в обработке и выполнении запросов.
- Возможность хранить и обрабатывать петабайты данных.
- SQL поддержка. ClickHouse поддерживает расширенный SQL -подобный язык, включающий массивы и вложенные структуры данных, приблизительные и URI функции и возможность подключения внешнего хранилища ключей и значений.
- Высокая производительность.[14]
- Используются векторные вычисления. Данные не только хранятся по столбцам, но и обрабатываются векторами (частями столбцов). Такой подход позволяет добиться высоких ЦПУ спектакль.
- Поддерживаются выборочные и приблизительные расчеты.
- Доступна параллельная и распределенная обработка запросов (в том числе Присоединяется ).
- Сжатие данных.
- Накопитель на жестком диске (HDD) оптимизация. Система может обрабатывать данные, которые не подходят оперативная память (ОЗУ).
- Клиенты для база данных (БД) возможность подключения. Параметры подключения к базе данных включают в себя консольный клиент, HTTP API, или один из обертки (обертки доступны для Python, PHP,[15] NodeJS,[16] Perl,[17] Рубин[18] и р[19]). А Драйвер JDBC также доступен для ClickHouse.[20]
- Подробная документация.
Ограничения
ClickHouse имеет некоторые особенности, которые можно считать недостатками:
- Нет поддержки сделки.
- По умолчанию при выполнении агрегирования промежуточные состояния запроса должны соответствовать ОЗУ на одном сервере. Однако в этом случае ClickHouse можно настроить так, чтобы он пролился на диск.
- Отсутствие полноценной реализации UPDATE / DELETE.
Сценарии использования
ClickHouse был разработан для OLAP запросы.[13]
- Он работает с небольшим количеством таблиц, содержащих большое количество столбцов.
- Запросы могут использовать большое количество строк, извлеченных из БД, но только небольшую часть столбцов.
- Запросы относительно редки (обычно около 100 запросов в секунду на сервер).
- Для простых запросов допускаются задержки около 50 мс.
- Значения столбцов довольно маленькие, обычно они состоят из чисел и коротких строк (например, 60 байты на URL ).
- При обработке одного запроса требуется высокая пропускная способность (до миллиардов строк в секунду на сервер).
- Результат запроса в основном фильтруется или агрегируется.
- Для обновления данных используется простой сценарий (обычно только пакетный, без сложных транзакций).
Один из распространенных случаев ClickHouse - анализ журналов сервера. После настройки регулярной загрузки данных в ClickHouse (рекомендуется вставлять данные довольно большими партиями, содержащими более 1000 строк), можно анализировать инциденты с помощью мгновенных запросов или отслеживать метрики службы, такие как частота ошибок, время ответа и т. Д.
ClickHouse также можно использовать в качестве внутреннего хранилища данных для собственных аналитиков. ClickHouse может хранить данные из разных систем (например, Hadoop или определенные журналы), а аналитики могут создавать внутренние информационные панели с данными или выполнять анализ в реальном времени для бизнес-целей.
Результаты тестов
Согласно с ориентир тесты, проведенные разработчиками,[14] для OLAP запросов ClickHouse более чем в 100 раз быстрее, чем Улей (а СУБД на основе Hadoop стек технологий) или MySQL (обычный СУБД ).
Смотрите также
использованная литература
- ^ "Github Release v20.11.3.3-стабильный". Github. Получено 17 ноября 2020.
- ^ «Релизы». Github. Получено 2 сентября 2019.
- ^ «Статистика использования и рыночная доля инструментов анализа трафика для веб-сайтов, ноябрь 2016 г.». w3techs.com. Получено 2016-11-10.
- ^ Датанизэ. «Отчет о доле рынка аналитики | Анализ конкурентов | Google Analytics, Google Universal Analytics, Яндекс Метрика». Датанизэ. Архивировано из оригинал на 2016-10-21. Получено 2016-11-10.
- ^ Wappalyzer (30 декабря 2011 г.). «Аналитика». wappalyzer.com. Архивировано из оригинал на 2017-05-12. Получено 2016-11-10.
- ^ «Аналитика - SEOMON.com». seomon.com. Получено 2016-11-10.
- ^ «ClickHouse: высокопроизводительная распределенная СУБД для аналитики | Percona Live Amsterdam - Конференция по базам данных с открытым исходным кодом, 2016». www.percona.com. Получено 2016-11-10.
- ^ а б «Яндекс открывает ClickHouse». Получено 2016-11-10.
- ^ "Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) - События Яндекса". events.yandex.ru. Получено 2016-11-10.
- ^ «Яндекс - Яндекс запускает поисковую систему для событий LHC в ЦЕРНе». Яндекс. Получено 2016-11-10.
- ^ "Сравнение аналитических баз данных в памяти". Получено 2016-11-10.
- ^ "Эволюция структур данных в Яндекс.Метрике". Получено 2016-11-10.
- ^ а б «Руководство ClickHouse». clickhouse.yandex. Получено 2016-11-10.
- ^ а б «Сравнение производительности аналитических СУБД». clickhouse.yandex. Получено 2016-11-10.
- ^ "smi2 / phpClickHouse". GitHub. Получено 2016-11-10.
- ^ "апла / узел-кликхаус". GitHub. Получено 2016-11-10.
- ^ "elcamlost / perl-DBD-ClickHouse". GitHub. Получено 2016-11-10.
- ^ "archan937 / clickhouse". GitHub. Получено 2016-11-10.
- ^ "hannesmuehleisen / clickhouse-r". GitHub. Получено 2016-11-10.
- ^ "яндекс / clickhouse-jdbc". GitHub. Получено 2016-11-10.