Что такое СУБД Greenplum? Зачем она нужна в больших проектах DWH? Чем отличается от ClickHouse?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

DWH помогает собрать, структурировать и сохранить все имеющиеся в компании данные в единую версию правды, чтобы вывести бизнес-аналитику на новый уровень и получить преимущество в принятии решений.

BI-системы: рост объема генерации данных
Корпоративное хранилище данных

В случае успешного внедрения проекты DWH открывают компаниям новые возможности и приносят прибыль, однако, процент неудачных внедрений также довольно велик.

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

Порядок хранения данных выбирается в соответствии с разными сценариями работы - запросами, разным объемом данных, количеством транзакций, необходимостью обновлений данных.

Что такое СУБД Greenplum

Greenplum – массово-параллельная реляционная СУБД на основе PostgreSQL, которая подходит для хранения и обработки больших объемов данных (до сотен ТБ).

Массово-параллельные СУБД обычно используются для предиктивной аналитики, отчетности по большим объемам данных, построения озер данных и корпоративных хранилищ данных, разработки аналитических моделей по множеству разнообразных данных.

Массово-параллельная архитектура (Massive Parallel Processing, MPP) характеризуется физическим разделением памяти узлов (нод), объединенных в кластер. СУБД Greenplum — это несколько БД PostgreSQL, объединенных в кластер, где каждый узел кластера имеет собственную память, ОС и жесткие диски. Для пользователей же предоставляется унифицированный интерфейс базы данных.

Кластер Greenplum включает следующие компоненты:

  • Мастер (Master host) — узел, на котором размещен главный экземпляр PostgreSQL. Мастер содержит метаданные и не содержит пользовательских данных. В Мастер поступают SQL-запросы и, он отвечает за установление соединения с клиентом.

  • Резервный мастер (Secondary master instance) — инстанс PostgreSQL, который включается при отказе основного мастера. Некоторые кластеры Greenplum используют резервный мастер в качестве сервера ETL.

  • Сервер-сегменты (Segment host) – узлы, где хранятся пользовательские данные и выполняются операции из обработки. Каждый сервер-сегмент содержит от 1 до 8 сегментов Greenplum – независимых экземпляров PostgreSQL с частью данных.

Сегменты в СУБД объединяются по принципу «без разделения ресурсов» (Shared Nothing), то есть без использования общих устройств и памяти.

Сегменты делятся на основные и зеркала. Primary-сегмент обрабатывает данные и передает результаты мастеру. Ему соответствует зеркало (Mirror segment instance), которое хранит копию данных из основного сегмента и включается в работу при отказе Primary.

BI-системы: рост объема генерации данных
Архитектура Greenplum

Предположим, у вас есть коробка с 1200 перемешанными визитками сотрудников из разных компаний. Ваша задача - перебрать все карточки и найти имена всех, кто работает в ООО Ромашка. Если просматривать одну визитку в секунду, вам потребуется 20 минут, чтобы найти всех сотрудников Ромашки.

А теперь разложим их на 10 равных стопок по 120 визиток и пригласим 10 человек перебрать их в поисках нужных. Если бы они одновременно просматривали визитки, каждый в своей стопке, со скоростью 1 визитка в секунду, то нужные нам визитки были бы найдены примерно за 2 минуты. Скорость обработки повысилась бы в 10 раз.


По такому же принципу работает и архитектура Greenplum:

  • Пользователь подключается к БД через API-интерфейсы (JDBC и ODBC).

  • Мастер аутентифицирует соединение и обрабатывает входящий SQL-запрос. Запрос оптимизируется и разбивается на более мелкие компоненты, которые отправляются в сервер-сегменты - другие экземпляры базы данных PostgreSQL, где обрабатываются для получения окончательных результатов.

  • Сегменты выполняют вычисления и возвращают результаты обработки в Мастер, который координирует эти результаты и представляет конечный итог клиенту.

  • За взаимодействие между сегментами отвечают интерконнекты – быстрые обособленные сетевые соединения уровня Gigabit Ethernet.

Распределение данных порциями по всем нодам кластера в MPP-СУБД позволяет повысить скорость их обработки и снизить нагрузку на хранилище данных.

Кому подойдет СУБД Greenplum

Большие хранилища данных

Классические СУБД справляются с оперативными транзакциями и подходят для быстрого построения отчетов.

Но при увеличении объемов данных, DWH на стандартных СУБД исчерпывают свою мощность и не способны обеспечивать должную производительность. Загрузка данных с трудом укладывается в отведенные временные интервалы.

Массово-параллельная архитектура Greenplum и мощные алгоритмы оптимизации подходят для быстрой обработки «тяжёлых» аналитических запросов при работе с многотерабайтными массивами данных.

СУБД поддерживает реляционную модель данных и совместима с PostgreSQL, а значит, и со всеми BI-системами и ETL-инструментами.

СУБД подойдет для хранилищ больше 1ТБ, так как именно на таких объемах продемонстрирует оптимальное соотношение стоимости владения и производительности.

Имеет следующие ограничения:

  • Максимальное количество таблиц — более 4 млрд

  • Максимальный размер одной таблицы — до 128 Тб на один сегмент

  • Максимальное число строк в одной таблице — более 281 триллиона

  • Максимальный размер строки — 1 Гб

  • Максимальное количество столбцов в таблице — 1600

Масштабирование

DWH, реализованные на Greenplum, обычно используются для компаний, где присутствует большое количество источников данных, их объемы постоянно растут, и необходим увеличенный срок их хранения.

Чтобы обработать растущие объемы данных, объединить несколько хранилищ или поддерживать новые аналитические приложения, необходимо увеличивать емкость имеющейся СУБД.

Greenplum дает возможность легко добавлять новые серверы и сегменты без ограничений в количестве, так как даже при выходе из строя узла кластера, другие узлы справятся с ростом нагрузки. Чем больше новых узлов добавлено, тем быстрее работает Greenplum.

Сохранность и точность данных

Greenplum обеспечивает отказоустойчивость благодаря наличию резервного мастера и зеркал для каждого сегмента.

СУБД полностью соответствует принципам ACID - Atomicity, Consistency, Isolation, Durability - набору принципов, которые определяют, как должна работать транзакция в СУБД.

  • Атомарность (Atomicity) - транзакция должна быть неделимой, либо все операции в транзакции выполняются успешно, либо ни одна из них не выполняется.

  • Согласованность (Consistency) - после выполнения транзакции база данных должна находиться в согласованном состоянии: все правила и ограничения, установленные для базы данных, должны быть соблюдены.

  • Изолированность (Isolation) - каждая транзакция должна выполняться независимо от других транзакций.

  • Надежность (Durability) - результаты успешно выполненной транзакции должны быть сохранены и не могут быть отменены.

Одни и те же таблицы в Greenlum могут быть использованы для записи и чтения, без страха потерять данные.

СУБД подойдет для реализации операций, в которых важна точность и структурность данных, например, для финансовых операций.

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

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

Greenplum позволяет сохранить исторические данные и обрабатывать их для глубокого исторического анализа.

Проекты Big Data

Greenpum подойдет в случае возникновения новых задач в Big Data, когда пользователям необходимы все имеющиеся, структурированные и полуструктурированные данные.

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

Greenplum vs ClickHouse

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

Наравне с Greenplum активно используется при проектировании современных хранилищ данных благодаря высокой производительности, скорости обработки данных и возможностям масштабируемости. По версии DB-Engines Ranking, обе СУБД входят в ТОП-50 самых популярных в мире.

ClickHouse обладает следующими особенностями:

Самая быстрая колоночная OLAP-СУБД

Колоночное хранение данных позволяет при выполнении запроса считывать данные только тех столбцов, которые непосредственно участвуют в этом запросе. Хранение большого объема данных при этом не будет сказываться на скорости их чтения.

СУБД способна обрабатывать до 1 млрд строк в секунду на одном сервере и до 2ТБ в секунду на кластере из 400 узлов.

Оптимизирует хранение данных и запросы

СУБД позволяет сжимать одинаковые или похожие данные благодаря различным способам хранения смежных значений в столбце. Поддерживает специализированные кодеки (Delta, DoubleDelta, GCD, Gorilla, T64) - программные инструменты для кодирования и декодирования данных, которые позволяют еще больше уменьшить объемы данных.

Физическая сортировка данных по первичному ключу позволяет быстро получать конкретные значения или диапазоны, а также легко добавлять данные в таблицу.


Эффективно использует ресурсы

СУБД спроектирована для работы не только на оперативной памяти, но и на обычных жестких дисках. Это обеспечивает низкую стоимость хранения на 1ГБ данных.

К тому же данные в ClickHouse не только хранятся по столбцам, но и обрабатываются по векторам — фрагментам столбцов, что позволяет более эффективно использовать ресурсы процессора.


Масштабируется до совокупного объема данных в несколько Пбайт

Для масштабирования в СУБД достаточно просто добавить новые узлы в кластер.

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


Не поддерживает ACID-требования и точечные операции обновления и удаления данных (UPDATE и DELETE)

В ClickHouse нет транзакций, то есть возможностей провести несколько операций с БД одновременно, так как СУБД ориентирована на считывание данных. Это может ограничить функционал СУБД, например, в финансовой сфере, где необходимо отследить операции клиентов.

СУБД не предоставляет возможность точечно изменять или удалять записанные данные. Есть массовое удаление и изменение данных для очистки неактуальной информации или соответствия GDPR (Общий регламент по защите персональных данных).

Сравнение Greenplum и ClickHouse

Сравним Greenplum и ClickHouse по ключевым критериям:

Greenplum

ClickHouse

Описание

Open source реляционная СУБД на PostgreSQL, имеющая MPP- архитектуру

Open source реляционная СУБД колоночного типа

Поддержка ANSI SQL

ANSI SQL 2008 + 2012 extensions (OLAP и т.д.)

Поддерживает декларативный язык запросов на основе SQL, который во многих случаях идентичен ANSI SQL

Соответствие ACID

Обеспечивает широкую поддержку транзакций, так как полностью соответствует принципам ACID.  Уровень изоляции транзакций — Serializable

Не поддерживает ACID-требования

Объединение таблиц

Корректно обрабатывает локальные и распределенные запросы с JOIN-операторами

Нет классических JOIN-операций. Правая часть JOIN должна помещаться в память одного сервера. Невозможно объединить 2 таблицы больше памяти одного сервера

API и возможности доступа к данным

HTTP, gRPC, собственный протокол JDBC, ODBC

JDBC, ODBC

Поддерживаемые ОС

Linux

Linux, FreeBSD, Mac OS X

Скорость обработки данных

Скорость зависит от объема данных, время отклика от нескольких до пары десятков секунд

До 1 млрд строк в секунду на одной ноде и до 2ТБ в секунду на кластере из 400 нод. Время отклика менее 200 миллисекунд. При обработке коротких запросов есть задержка менее 50 миллисекунд

Управление доступом

По стандарту SQL – для разных групп пользователей с установкой определённого набора функций

По стандарту RBAC - на основе ролей пользователей

Аварийное восстановление и отказоустойчивость

Обеспечивает отказоустойчивость благодаря наличию резервного мастера и зеркал для каждого сегмента. Функций аварийного восстановления нет

За счёт управления шардами и репликами на уровне таблиц можно создавать различные нестандартные конфигурации, в которых, например, часть таблиц хранится в одном ЦОД, а часть — в другом

Безопасность данных

Есть пользователи, группы, разрешения и наследование, поддержка шифрования данных и SSL-протокола

Встроенных функций нет, кроме массового удаления и изменения данных для соответствия GDPR. В новые версии включён функционал Kerberos-авторизации для Kafka и Kerberos-авторизации доступа к HDFS, созданный Arenadata

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

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

  • Построения Data Lake и больших проектов DWH

  • Предиктивной аналитики и прогнозирования

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

  • Аналитики Big Data в реальном времени

  • Углубленного анализа специализированных запросов Ad-hoc

Высокоскоростная ClickHouse будет подходящей для:

  • Построения корпоративных хранилищ данных

  • Бизнес-аналитики данных в реальном времени

  • Обработки простых Ad-hoc запросов и работы с быстрыми витринами данных

  • Быстрых full scan операций по проверке всей БД с последующей выдачей запроса на внешний ресурс

  • Сложных агрегаций при работе с широкими денормализованными таблицами фактов

Источник: https://habr.com/ru/articles/797361/


Интересные статьи

Интересные статьи

Этот пост адресован, скорее, моим коллегам из SMB‑сегмента, потому что в больших компаниях эти вопросы худо‑бедно решены. Как вы знаете, социализм — это учёт и контроль. А&nbs...
Настал день, когда мне для работы программистом микроконтроллеров наконец пригодилась математическая статистика из ВУЗ(овского) курса по теории вероятностей.Есть очень интересная технология для автома...
Игровая индустрия стремительно развивается, аудитория игр исчисляется миллионами и ежедневно увеличивается. Вместе с развитием игрового рынка появляются и проблемы юридического плана. Плагиат, безлице...
Не всем нравится работать в поддержке. Огромное количество людей выгорает на ней. Так может не стоит вообще её иметь? Какую выгоду она несёт? Можно ли как-то не выгорать от поддержки? Попробуем найти ...
Если взять за основу работы школы Павлова, то в гипнозе как в редком, и отсюда возможно интересном феномене, мало чего удивительного. Обычная ультра парадоксальная стадия...