Greenplum от A до Я — начнем с архитектуры
Greenplum - MPP база данных с открытым исходным кодом. Возможно, Вы не знаете, что такое MPP. Если это так, то обязательно погуглите. В любом случае, с первого раза этого не понять. Это достаточно сложное понятие, отражающее архитектуру, разработанную таким образом, что запросы и загрузка данных выполняются параллельно сразу на нескольких серверах, что ускоряет вычисления. Greenplum использует postgresql в качестве базы данных. Короче говоря, мощность postgresql, умноженная на n раз = Greenplum.
Почему Greenplum
Мы с моими коллегами долгое время искали реляционную базу данных, которая могла бы хранить тысячи гигабайт данных, быстро выполнять запросы, и при этом не требовать никаких затрат на лицензирование, хранение и т.д. Также нам была нужна БД, которая могла бы выступать в качестве хранилища данных для выполнения аналитических операций.
Да, существует достаточно много вариантов, таких как MySQL, MariaDB, Oracle, SQLite и т. д., но все они платные. Вот тут-то мы и вспомнили о Greenplum.
Потому что это open-source решение, совершенно бесплатное, а это значит, что Вам не придется платить ни копейки даже за данные. Данная БД может работать с петабайтами данных. Петабайт - это примерно 1 000 терабайт или один миллион гигабайт. Это просто фантастически огромный объем данных!
В чем же тогда загвоздка?
Если она настолько эффективна, то почему же далеко не все работают с ней и экономят свои драгоценные деньги?! Дело в ограниченной поддержке при решении возникающих проблем. Да, у Greenplum есть официальная документация, но новичкам разобраться в ней совсем непросто.
Именно поэтому я задумал серию статей о базе данных GreenPlum, над которой работаю уже достаточно давно. В каждой статье я буду рассказывать о практическом использовании, применении, запросах, DMV и многом-многом другом.
Архитектура GreenPlum
Знаете ли Вы самую серьезную проблему любой базы данных? Как ни странно, но это данные. Когда размер данных начинает расти и достигает гигабайтов, многие реляционные базы данных замедляют выполнение запросов. Почему так происходит? Давайте разбираться.

Greenplum также известна как архитектура «shared nothing». Почему? Потому что она задействует сразу несколько машин с собственным набором памяти, операционной системы и дисков. Greenplum распределяет нагрузку на хранилища данных объемом в тысячи гигабайт и использует ресурсы нескольких систем для параллельного выполнения запросов.
Компоненты архитектуры Greenplum:
1. Мастер
Мастер - это главные ворота в систему баз данных Greenplum. Он принимает клиентские соединения и SQL-запросы, а затем распределяет их по узлам своего сегмента. Конечные пользователи взаимодействуют с мастером с помощью клиентских программ, таких как psql, или интерфейсов прикладного программирования (API), таких как JDBC, ODBC или libpq.
2. Запасной мастер
Если по каким-то причинам мастер Greenplum выходит из строя, мы можем воспользоваться его копией, которая является его эквивалентной заменой. Если с мастером что-то не так, обработкой запросов займется запасной мастер.
3. Сегмент
Экземпляры сегментов баз данных Greenplum - это автономные базы данных PostgreSQL, каждая из которых хранит определенную часть данных и выполняет большую часть обработки запросов. Когда пользователь подключается к базе данных через мастера, каждый сегмент базы данных создает процессы для обработки этого самого запроса.
Определяемые пользователем таблицы и их индексы распределяются по доступным сегментам в системе Greenplum \; каждый сегмент содержит определенную порцию данных. Пользователи не могут напрямую взаимодействовать с сегментом, они делают это через мастера.
Хосты сегмента - машины/серверы, на которых выполняется запрос.
На одном узле может работать -> от двух до восьми сегментов Greenplum -> известных как сегментные узлы, в зависимости от количества процессорных ядер, оперативной памяти, хранилища, сетевых интерфейсов и рабочей нагрузки. Сегментные узлы должны быть одинаково настроены. Рекомендуется распределять нагрузку по сегментам с равными возможностями, так, чтобы все сегменты начинали работу над задачей и завершали ее одновременно.
4. Интерконнекты
Интерконнект - это сетевой уровень между сегментами и сетевой инфраструктурой, от которого зависит связь между ними.
Интерконнект Greenplum использует стандартный коммутационный модуль Ethernet. По соображениям производительности рекомендуется использовать 10-гигабитную или более быструю систему.




