Clickhouse

В этой теме вы узнаете о сервисе управляемых баз данных ClickHouse. Эта БД предназначена для задач, связанных с аналитической обработкой данных, и не подходит там, где нужна обработка транзакций. Чтобы разобраться в том, почему это так, давайте сначала разберемся с различными сценариями работы с данными.Базы данных помогают решать различные задачи. То, какие при этом делаются запросы, насколько их много и как соотносятся операции чтения и записи, называют сценарием работы с данными. Универсальной БД, которая подходит для любого сценария, не существует.Сценарии можно разделить на две группы:

  1. Обработка транзакций, т. е. связанных между собой операций с данными. Классический пример — банковский перевод, при котором в БД одновременно изменяются записи о количестве денег на двух счетах.
  2. Обработка аналитических запросов (online analytical processing, OLAP). В этом случае требуется быстро извлечь из БД сведения.

Например, если у вас есть мобильное приложение, то вас интересуют его продуктовые метрики: количество уникальных пользователей, среднее время нахождения на экране, среднее время, необходимое, чтобы выполнить последовательность действий… Вы отслеживаете, как меняются метрики, и решаете, как развивать приложение. Если метрики хранятся в большой БД, а запросы к ней выполняются медленно, то анализ метрик тоже станет весьма небыстрым.Как правило, при OLAP-сценариях:

  • данные в базе не изменяются или изменяются редко (нет команд модификации существующих данных типа UPDATE или REPLACE);
  • данные добавляются в базу крупными порциями (командой INSERT);
  • большинство запросов — это операции чтения;
  • данные читаются из большого количества строк и небольшого количества столбцов;
  • на выходе данные фильтруют или агрегируют, поэтому результат выполнения запроса гораздо меньше исходных данных;
  • нет транзакций;
  • нет строгих требований к консистентности данных.

Классические реляционные БД не всегда удобно использовать для задач, в которых к большому массиву данных идут частые и сложные запросы. Для решения таких задач разработаны столбцовые (колоночные) БД. О них мы кратко говорили раньше.Строковые и столбцовые БД обрабатывают аналитические запросы по-разному. Предположим, для выполнения запроса нужны данные из трёх  столбцов БД. В строковой придётся полностью прочитать несколько десятков или сотен тысяч строк со всеми столбцами, а в столбцовой — только данные из этих трёх столбцов.Посмотрите на различие в обработке запросов в строковых и столбцовых БД:

Более того, в столбцовой БД эти данные физически хранятся вместе, что ещё больше ускоряет ответ.

ClickHouse

ClickHouse — одна из популярных столбцовых БД с открытым исходным кодом. Яндекс создал ClickHouse, когда понадобилось быстро обрабатывать аналитические онлайн-запросы к Яндекс.Метрике.

Метрика — это одна из крупнейших систем веб-аналитики. Она установлена более чем на миллионе сайтов и каждый день собирает больше 20 миллиардов событий (посещений сайтов, кликов, переходов со страницы на страницу и т. д.). Объём данных превышает 3,5 петабайта (13 триллионов записей) и постоянно увеличивается, к этим данным обращаются сотни тысяч раз в день. Чтобы такая система работала стабильно, в Яндексе создали ClickHouse — распределённую столбцовую СУБД, оптимизированную для быстрого выполнения большого числа аналитических запросов к огромному объёму данных.

ClickHouse работает на любой операционной системе Linux, FreeBSD или macOS, а также доступна в виде сервиса управляемой БД в Yandex.Cloud.ClickHouse позволяет создавать БД и таблицы, загружать в них данные из разных источников и выполнять к данным запросы. Эту СУБД можно интегрировать с Apache Kafka, а также с внешними источниками данных, включая БД MySQL и PostgreSQL.Высокая скорость работы ClickHouse достигается за счёт:

  • Шардирования. Вы можете разделить данные на шарды (т. е. части) и хранить их на одном или нескольких хостах-репликах. Кроме того, шардирование повышает доступность БД.
  • Автоматического распараллеливания запросов на несколько процессорных ядер одного сервера и распределённых вычислений на шардированном кластере.
  • Возможности приближенных вычислений. Система способна выполнять запросы на основе части данных (выборки). Можно агрегировать данные не по всем ключам, а по некоторым. Иногда это помогает получить довольно точный результат, задействовав меньше ресурсов.
  • Других архитектурных особенностей: индекса (первичного ключа), физической сортировки данных по первичному ключу с помощью merge дерева, хранения данных в сжатом виде и т. д.

ClickHouse поддерживает только добавление и чтение данных, так как предназначена прежде всего для работы с аналитическими запросами. Если вам нужны транзакционная целостность и построчная выборка данных по ключу — применяйте другие БД, например MySQL или PostgreSQL.ClickHouse используют, чтобы анализировать логи (и мгновенно получать полную информацию об инцидентах в системе); чтобы отслеживать метрики поведения пользователей на сайтах (например, переходы на страницы, клики) или в онлайн-играх; как аналитический инструмент, когда данные в него копируются из основной БД (например, PostgreSQL или Oracle), которая медленно обрабатывает аналитические запросы.Если вам интересны подробности о том, как устроена ClickHouse и что у неё под капотом, посмотрите доклады разработчиков:

Previous Story

Шардирование

Next Story

Практическая работа. Создание кластера ClickHouse и подключение к нему

Latest from Blog

Zabbix – Docker – Raspberry Pi

Для начала установим Portainer – веб-интерфейс для управления docker-контейнерами. Бесплатно, удобно, подойдет новичкам в docker. Установка

Сетевая папка/диск в Linux

x.x.x.x адрес шары /mnt/shara точка монтирования user пользователь с доступом к шаре 1234 пароль пользователя Для

Памятка SSH

В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые

0 £0.00