18.10.2020 21:35 Базы данных

ClickHouse - что это такое?

ClickHouse — это распределенная аналитическая столбцовая (column-oriented) СУБД созданная внутри компании Яндекс в 2012 году. Основная задача ClickHouse это выполнять аналитические запросы в режиме реального времени на структурированных больших данных.

Благодаря развитой функциональности и наличию детальной документации привели к тому, что ClickHouse постепенно распространился по многим отделам Яндекса и ClickHouse стал использоваться в Директе, Маркете, Почте, AdFox, Вебмастере, в мониторингах и в бизнес-аналитике. ClickHouse позволял либо решать задачи, для которых раньше не было подходящих инструментов, либо решать задачи на порядки эффективнее, чем другие системы. В 2016 году Яндекс принимает решение сделать СУБД ClickHouse open-source проектом, т.е. доступным всем желающим по лицензии Apache 2.0.

Область применения:

  • аналитика веб-приложений;
  • аналитика метрик в режиме реального времени;
  • мониторинг и анализ логов;
  • мониторинг и анализ данных в режиме реального времени;

Особенности ClickHouse

  • ClickHouse позволяет выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени.
  • Система способна масштабироваться до десятков триллионов записей и петабайтов данных.
  • Линейная масштабируемость. Система позволяет увеличивать кластер добавлением серверов.
  • Отказоустойчивость. Система представляет собой кластер шардов, где каждый шард — это группа реплик. Используется асинхронная multimaster репликация: после записи на любую доступную реплику, данные распространяются на все остальные реплики. Для координации работы реплик используется ZooKeeper (ZooKeeper не участвует в процессе обработки и выполнения запроса).
  • Поддержка SQL. ClickHouse поддерживает диалект SQL c расширениями: массивы и вложенные структуры данных, вероятностные структуры, функция по работе с URI, возможность подключить внешнее key-value хранилище и т. д.
  • Сжатие данных.

Принципы работы

Ключевым преимуществом ClickHouse считается высокая скорость выполнения SQL-запросов на чтение (OLAP-сценарий), которая обеспечивается благодаря следующим архитектурным решениям:

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

Стоит отметить, что в отличие от других популярных столбцовых СУБД для Big Data, которые работают только в оперативной памяти, ClickHouse работает с жесткими дисками (HDD, SSD). Это снижает стоимость эксплуатации системы, поскольку жесткие диски дешевле RAM. При работе в кластере данные реплицируются асинхронно в фоновом режиме с поддержкой полной идентичности на разных репликах. Apache ZooKeeper используется для координации процесса репликации, но не участвует в обработке данных и выполнения запросов. При сбое в большинстве случаев восстановление данных происходит автоматически. По желанию можно включить кворумную запись данных. Кластер ClickHouse масштабируется линейно путем добавления новых узлов. Так же ClickHouse поддерживает диалект SQL c расширениями, такими как массивы и вложенные структуры данных, вероятностные структуры, возможность подключить внешнее key-value хранилище.

Недостатки

  • Отсутствие полноценных транзакций.
  • Возможность изменять или удалять ранее записанные данные с низкими задержками и высокой частотой запросов не предоставляется. Есть массовое удаление и изменение данных для очистки более не нужного или соответствия GDPR.
  • Разреженный индекс делает ClickHouse плохо пригодным для точечных чтений одиночных строк по своим ключам.

Вывод

ClickHouse — сверхскоростная СУБД. Она отлично подходит для исследовательских работ и запросов, где нужна линейная масштабируемость.

Читать еще по теме