Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

ClickHouse - это СУБД с открытым исходным кодом, ориентированная на столбцы (система управления базами данных по столбцам) для оперативной аналитической обработки (OLAP).

ClickHouse был разработан российской ИТ-компанией Яндекс для сервиса веб-аналитики Яндекс.Метрики . [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]
    • Используются векторные вычисления. Данные не только хранятся по столбцам, но и обрабатываются векторами (частями столбцов). Такой подход позволяет добиться высокой производительности процессора .
    • Поддерживаются выборочные и приблизительные расчеты.
    • Доступна параллельная и распределенная обработка запросов (включая JOIN ).
  • Сжатие данных.
  • Оптимизация жесткого диска (HDD). Система может обрабатывать данные, которые не помещаются в оперативную память (RAM).
  • Клиенты для подключения к базе данных (БД). Варианты подключения к базе данных включают клиент консоли, HTTP API или одну из оболочек (оболочки доступны для Python , PHP , [15] NodeJS , [16] Perl , [17] Ruby [18] и R [19] ). Для ClickHouse также доступен драйвер JDBC . [20]
  • Подробная документация.

Ограничения [ править ]

ClickHouse имеет некоторые особенности, которые можно считать недостатками:

  • Нет поддержки транзакций .
  • По умолчанию при выполнении агрегации промежуточные состояния запроса должны умещаться в ОЗУ на одном сервере, однако ClickHouse можно настроить так, чтобы в этом случае они попадали на диск.
  • Отсутствие полноценной реализации UPDATE / DELETE.

Сценарии использования [ править ]

ClickHouse был разработан для запросов OLAP . [13]

  • Он работает с небольшим количеством таблиц, содержащих большое количество столбцов.
  • Запросы могут использовать большое количество строк, извлеченных из БД , но только небольшое подмножество столбцов.
  • Запросы относительно редки (обычно около 100 запросов в секунду на сервер).
  • Для простых запросов допустимы задержки около 50 мс.
  • Значения столбцов довольно маленькие, обычно они состоят из чисел и коротких строк (например, 60 байт на URL ).
  • При обработке одного запроса требуется высокая пропускная способность (до миллиардов строк в секунду на сервер).
  • Результат запроса в основном фильтруется или агрегируется.
  • Для обновления данных используется простой сценарий (обычно только пакетный, без сложных транзакций).

Один из распространенных случаев ClickHouse - анализ журналов сервера. После настройки регулярной загрузки данных в ClickHouse (рекомендуется вставлять данные довольно большими партиями, содержащими более 1000 строк), можно анализировать инциденты с помощью мгновенных запросов или отслеживать метрики службы, такие как частота ошибок, время ответа и т. Д.

ClickHouse также можно использовать в качестве внутреннего хранилища данных для собственных аналитиков. ClickHouse может хранить данные из различных систем (таких как Hadoop или определенные журналы), а аналитики могут создавать внутренние информационные панели с данными или выполнять анализ в реальном времени для бизнес-целей.

Результаты сравнения [ править ]

Согласно тестовым тестам, проведенным разработчиками, [14] для запросов OLAP ClickHouse более чем в 100 раз быстрее, чем Hive ( СУБД на основе стека технологий Hadoop ) или MySQL (обычная СУБД ).

См. Также [ править ]

  • Список колоночных СУБД

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

  1. ^ "Github Release v20.11.3.3-стабильный" . Github . Дата обращения 17 ноября 2020 . CS1 maint: обескураженный параметр ( ссылка )
  2. ^ «Релизы» . Github . Дата обращения 2 сентября 2019 . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ «Статистика использования и рыночная доля инструментов анализа трафика для веб-сайтов, ноябрь 2016 г.» . w3techs.com . Проверено 10 ноября 2016 .
  4. ^ Datanyze. «Отчет о доле рынка аналитики | Анализ конкурентов | Google Analytics, Google Universal Analytics, Яндекс Метрика» . Датанизэ . Архивировано из оригинала на 2016-10-21 . Проверено 10 ноября 2016 .
  5. ^ Wappalyzer (30 декабря 2011 г.). «Аналитика» . wappalyzer.com . Архивировано из оригинала на 2017-05-12 . Проверено 10 ноября 2016 .
  6. ^ «Аналитика - SEOMON.com» . seomon.com . Проверено 10 ноября 2016 .
  7. ^ «ClickHouse: высокопроизводительная распределенная СУБД для аналитики | Percona Live Amsterdam - Конференция по базам данных с открытым исходным кодом 2016» . www.percona.com . Проверено 10 ноября 2016 .
  8. ^ a b «Яндекс открывает ClickHouse» . Проверено 10 ноября 2016 .
  9. ^ "Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) - События Яндекса" . events.yandex.ru . Проверено 10 ноября 2016 .
  10. ^ «Яндекс - Яндекс запускает инструмент поиска событий LHC в ЦЕРНе» . Яндекс . Проверено 10 ноября 2016 .
  11. ^ "Сравнение аналитических баз данных в памяти" . Проверено 10 ноября 2016 .
  12. ^ "Эволюция структур данных в Яндекс.Метрике" . Проверено 10 ноября 2016 .
  13. ^ a b «Руководство ClickHouse» . clickhouse.yandex . Проверено 10 ноября 2016 .
  14. ^ a b «Сравнение производительности аналитических СУБД» . clickhouse.yandex . Проверено 10 ноября 2016 .
  15. ^ "smi2 / phpClickHouse" . GitHub . Проверено 10 ноября 2016 .
  16. ^ "apla / node-clickhouse" . GitHub . Проверено 10 ноября 2016 .
  17. ^ "elcamlost / perl-DBD-ClickHouse" . GitHub . Проверено 10 ноября 2016 .
  18. ^ "archan937 / clickhouse" . GitHub . Проверено 10 ноября 2016 .
  19. ^ "hannesmuehleisen / clickhouse-r" . GitHub . Проверено 10 ноября 2016 .
  20. ^ "яндекс / clickhouse-jdbc" . GitHub . Проверено 10 ноября 2016 .

Внешние ссылки [ править ]

  • Официальный сайт ClickHouse