Greenplum vs Clickhouse: сравнение аналитических СУБД для Big Data

Big Data, Большие данные, Greenplum, SQL, обработка данных, PostgreSQL, ClickHouse, архитектура и аналитика больших данных, аналитические СУБД, , Школа Больших Данных Учебный Центр Коммерсант

Сходства и различия популярных реляционных аналитических СУБД с открытым исходным кодом: что общего у Greenplum с ClickHouse, чем они отличаются, что и когда выбирать.

Greenplum и Clickhouse: обзор возможностей для аналитики больших данных

Обе СУБД являются реляционными и относятся к классу OLAP-систем, т.е. ориентированы на аналитические варианты использования, т.е. чтение превалирует над записью. В OLAP-СУБД можно быстро записывать огромные объемы данных и считывать их. Однако, точечные изменения отдельных записей выполняются медленнее, чем в OLTP-системах. Поскольку OLAP-сценарии предусматривают соединения данных по очень большому количеству записей, колоночный способ хранения данных на диске предпочтителен для этих вариантов использования. Напомним, в СУБД, ориентированных на столбцы, данные хранятся на диске так, что каждый фрагмент данных представляет собой целый столбец. Поэтому все значения одного атрибута сущности будут сгруппированы вместе.

Таким образом, Greenplum и ClickHouse имеют следующие сходства:

  • являются реляционными СУБД с открытым исходным кодом;
  • ориентированы на аналитику больших данных, т.е. аналитические сценарии (OLAP) чтения больших массивов информации;
  • поддерживают колоночный способ хранения данных;
  • имеют массивно-параллельную архитектуру (MPP, Massively Parallel Processing) без разделения ресурсов. Эта архитектура отлично подходит для OLAP-сценариев, поскольку аналитические СУБД работают с огромными объёмами данных, которые постоянно растут. Чтобы быстро и экономично горизонтально масштабировать такую систему, ее лучше проектировать как сеть независимых серверов. Скорость вычислений в MPP-системе прямо пропорциональна числу узлов в кластере. Также MPP-архитектура обеспечивает высокую отказоустойчивость: кластер БД отвечает на запросы даже при отказе некоторых узлов.

Однако, при том, что Greenplum и ClickHouse обе являются реляционными MPP-СУБД, они существенно отличаются друг от друга. Например, в отличие от Greenplum, ClickHouse не поддерживает ACID-требования к транзакциям. Кроме того, ClickHouse не поддерживает ANSI SQL, который допускает произвольное неявное приведение между числовыми типами. А ClickHouse полагается на функции, имеющие несколько перегрузок вместо неявного приведения. Тем не менее, в официальной документации отмечено, что ClickHouse поддерживает декларативный SQL-подобный язык запросов, включая такие операторы, как GROUP BY, ORDER BY, подзапросы в разделах FROM, IN, JOIN, оконные функции и скалярные подзапросы. Зависимые подзапросы пока не поддерживаются. Greenplum же, буду основанной на PostgreSQL, полностью соответствует ACID-требованиям к транзакциям и поддерживает ANSI SQL.

С архитектурной точки зрения один экземпляр ClickHouse на несколько серверов, к которым напрямую приходят запросы пользователей. Для репликации данных и выполнения распределённых SQL-запросов в ClickHouse используется сервис синхронизации метаданных ClickHouse Keeper, аналогичный по функция Apache Zookeeper, но написанный на C++.

Greenplum представляет собой несколько экземпляров PostgreSQL, работающих как единая СУБД благодаря мастер-хосту, на котором развёрнут главный экземпляр PostgreSQL, называемый мастер-сегмент. Именно к мастер-сегменту подключаются пользователи и отправляют на него все SQL-запросы. Мастер-сегмент не содержит данных, а только принимает входящие подключения, собирает и систематизирует запросы, чтобы маршрутизировать их по сегментам, которые содержат фактические данные и выполняют запросы.

Таким образом, централизованная архитектура Greenplum работает медленнее, чем ClickHouse, из-за промежуточной маршрутизации запросов с мастер-сегмента на сегменты с данными. Впрочем, это не единственная причина очень быстрой работы ClickHouse. Дополнительное ускорение получается за счет физической сортировки данных по первичному ключу и векторному движку обработки запросов, оптимизированному для современных ЦП, а также распределенной и параллельной обработки запросов.

Данные в ClickHouse располагаются на разных сегментах, называемых шардами (shard). Шард – это группа копий данных (реплик) для обеспечения отказоустойчивости СУБД. SQL-запрос выполняется параллельно, т.е. одновременно на всех сегментах. Скорость работы ClickHouse на порядок выше, чем у Greenplum. Например, ClickHouse может обрабатывать до 1 миллиарда строк в секунду на одном сервере и до двух ТБ в секунду на кластере из 400 узлов. Примеры подобного тестирования производительности смотрите в нашей новой статье.

Сходства и отличия аналитических СУБД

Вспомнив ключевые характеристики и принципы работы Greenplum и ClickHouse, сравним их по ключевым критериям:

Критерий ClickHouse Greenplum
Описание Колоночная реляционная СУБД от Яндекса Платформа аналитической реляционной базы данных на основе PostgreSQL от компании VMWare Tanzu (ранее Pivotal)
Первый выпуск 2016 год 2005 год
Первичная модель управления данными Реляционная Реляционная
Вторичные поддерживаемые модели управления данными СУБД временных рядов, о чем мы подробнее рассказываем здесь Документо-ориентированная СУБД

Пространственная СУБД

Лицензия Открытый исходный код Открытый исходный код
Поддерживаемые ОС на сервере FreeBSD, Linux, MacOS Linux
Поддерживаемые языки программирования C#, C++, Elixir, Go, Java, JavaScript (Node.js), Kotlin, Nim, Perl, PHP, Python, R, Ruby, Scala C, Java, Perl, Python, R
Поддержка хранимых процедур и триггеров нет да
Поддержка MapReduce нет да
Обеспечение согласованности Мгновенная согласованность Мгновенная согласованность
Внешние ключи нет да
Соответствие ACID нет да
Параллелизм да да
Хранение данных в памяти да нет
Управление доступом права доступа для пользователей и ролей детальные права доступа в соответствии со стандартом SQL
Поддержка схемы данных да да
Предопределенные типы данных да да
Поддержка XML нет да
Первичные индексы да да
Вторичные индексы да, при использовании движка MergeTree да
Поддержка ANSI SQL нет да
API и другие методы доступа HTTP, gRPC, собственный протокол JDBC, ODBC JDBC, ODBC
Соединения таблиц Оператор JOIN поддерживается, но не очень хорошо: правая таблица должна помещаться в память одного сервера. Невозможно соединить 2 таблицы, если они больше памяти одного сервера Отлично обрабатывает локальные и распределенные запросы с JOIN-операторами
Скорость обработки Работает очень быстро, время отклика менее 200 миллисекунд Скорость зависит от объема данных, время отклика до пары десятков секунд
Типовые сценарии использования Аналитика данных в реальном времени

Мониторинг технических метрик

Обработка данных с IoT-устройств и промышленных датчиков

Предиктивная аналитика

Прогнозирование событий

Скоринг событий

Предоставление данных для BI-дэшбордов

Таким образом, архитектурные отличия рассмотренных СУБД обусловливают разные сценарии применения. Greenplum отлично работает в качестве корпоративного хранилища данных, позволяя оперативно загружать в него огромные объемы информации и анализировать их. Однако, эти SQL-запросы выполняются не настолько быстро, как в колоночной СУБД от Яндекса – ClickHouse, которая может обрабатывать несколько десятков ГБ в секунду. Поэтому эта СУБД отлично подходит для построения DWH, критичного к малейшим задержкам, обеспечивая аналитику больших данных в реальном времени.

Освойте администрирование и эксплуатацию ClickHouse и Greenplum с Arenadata DB для аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://arenadata.tech/about/blog/subd-dlya-analitiki-greenplum-ili-clickhouse/
  2. https://db-engines.com/en/system/ClickHouse%3BGreenplum
  3. https://clickhouse.com/docs/ru/development/architecture
Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.
Поиск по сайту