Сходства и различия популярных реляционных аналитических СУБД с открытым исходным кодом: что общего у 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 в Москве:
- Построение хранилища данных на базе Clickhouse
- Greenplum для инженеров данных
- Администрирование Greenplum / Arenadata DB
Источники