Архитектура Greenplum
БД Greenplum - это сервер баз данных с массивно-параллельной обработкой (MPP), архитектура которого разработана для управления крупными хранилищами аналитических данных.
MPP (также известное как архитектура shared nothing) относится к системам с двумя или более процессорами, взаимодействующими с целью выполнения какой-либо операции; у каждого процессора своя память, ОС и диски. Greenplum использует эту высокоэффективную архитектуру для распределения нагрузки больших хранилищ данных и может параллельно использовать все ресурсы системы для обработки запроса.
БД Greenplum основана на open-source PostgreSQL технологии. По сути, это несколько экземпляров PostgreSQL баз данных, работающих как единая система управления базами данных (СУБД). Она основана на PostgreSQL 8.3.23 и в большинстве случаев очень похожа на PostgreSQL в плане поддержке SQL, возможностей, настроек и т.д. Пользователи взаимодействуют с БД Greenplum так же, как и с обычной СУБД PostgreSQL.
Для массовой загрузки и чтения данных БД Greenplum может использовать оптимизированный формат хранения (AO), обеспечивающий значительные преимущества в производительности по сравнению с таблицами HEAP. Оптимизированное хранилище данных обеспечивает контрольные суммы для защиты данных, сжатие и ориентацию строк/столбцов. При этом таблицы, ориентированные как на строки, так и на столбцы, могут быть сжаты.
Основные различия между Greenplum и PostgreSQL заключаются в следующем:
- GPORCA используется для планирования запросов в дополнение к традиционному планировщику запросов, который основан на планировщике запросов Postgres;
- БД Greenplum может использовать оптимизированное хранилище данных;
- В Greenplum предусмотрена возможность использования колоночного хранения данных - данных, которые логически организованы в виде таблицы с использованием строк и столбцов, которые хранятся в формате, ориентированном на столбцы. Столбцовое хранение данных может быть использовано только в таблицах, оптимизированных для работы с приложениями. Оно также может обеспечить повышение производительности, поскольку возвращать нужно только те столбцы, которые представляют для Вас интерес. Все алгоритмы сжатия могут использоваться как с таблицами, ориентированными на строки, так и с таблицами, ориентированными на столбцы, но сжатие с кодировкой длины серий (RLE) может использоваться только с таблицами, ориентированными на столбцы. Greenplum обеспечивает сжатие во всех таблицах, использующих хранение данных в столбцах.
Внутренние компоненты PostgreSQL были изменены или дополнены для поддержки параллельной структуры Greenplum Databas. Например, системный каталог, оптимизатор и исполнитель запросов были изменены и дополнены таким образом, чтобы обеспечить одновременное выполнение запросов во всех параллельных экземплярах базы данных PostgreSQL. Интерконнект Greenplum (сетевой уровень) обеспечивает связь между отдельными экземплярами PostgreSQL и позволяет системе вести себя как единая логическая база данных.
Greenplum также включает в себя функции, призванные оптимизировать PostgreSQL для рабочих нагрузок бизнес-аналитики (BI). Например, в Greenplum добавлены функции параллельной загрузки данных (внешние таблицы), управления ресурсами, оптимизации запросов и хранения данных, которые отсутствуют в стандартном PostgreSQL. Многие функции и оптимизации, разработанные Greenplum, попадают в PostgreSQL. Например, разбиение таблиц на разделы - это функция, впервые разработанная Greenplum и вошедшая в стандартный PostgreSQL.
В запросах Greenplum используется модель механизма запросов типа Volcano, когда механизм выполнения принимает план выполнения и использует его для генерации дерева физических операторов, оценивает таблицы через физические операторы и выдает результаты в виде ответа на запрос.
Greenplum хранит и обрабатывает большие объемы данных, распределяя нагрузку по обработке данных между несколькими серверами. Greenplum представляет собой массив отдельных баз данных на основе PostgreSQL 8.3, работающих вместе. Мастер (master) - это точка входа в систему Greenplum. Это экземпляр базы данных, к которому подключаются клиенты и отправляют SQL-запросы. Он координирует свою работу с другими экземплярами баз данных системы, называемыми сегментами, которые хранят и обрабатывают данные.

Разделы, приведенные ниже, описывают компоненты системы Greenplum, а также то, как они между собой взаимодействуют:
Мастер Greenplum
Мастер Greenplum является входом в систему Greenplum, который принимает клиентские соединения и SQL-запросы.
Конечные пользователи Greenplum взаимодействуют с Greenplum (через мастер) так же, как и с обычной базой данных PostgreSQL. Они подключаются к базе данных с помощью клиентских программ, таких как psql, или интерфейсов прикладного программирования (API), таких как JDBC, ODBC или libpq (PostgreSQL C API).
Мастер - это место, где находится глобальный системный каталог. Глобальный системный каталог - это набор системных таблиц, содержащих метаданные о самой системе Greenplum. Мастер не содержит пользовательских данных, данные хранятся только на сегментах. Мастер аутентифицирует клиентские соединения, обрабатывает поступающие SQL-команды, распределяет рабочую нагрузку между сегментами, координирует результаты, возвращаемые каждым сегментом, и представляет окончательные результаты клиентской программе.
В Greenplum используется технология Write-Ahead Logging (WAL). При протоколировании на основе WAL все модификации записываются в журнал до их применения, что обеспечивает целостность данных при любых операциях в процессе работы.
Важно: Ведение журнала WAL пока недоступно для сегментного зеркалирования.
Сегменты Greenplum
Сегменты Greenplum представляют собой независимые базы данных PostgreSQL, каждая из которых хранит часть данных и выполняет определенную часть обработки запросов.
Когда пользователь подключается к базе данных через мастер Greenplum и вводит запрос, в каждой базе данных создаются процессы, которые выполняют работу по этому запросу.
Таблицы и их индексы распределяются по доступным сегментам системы Greenplum; каждый сегмент содержит отдельную «порцию» данных. Взаимодействие пользователей с сегментами в системе Greenplum осуществляется через мастера.
Сегменты выполняются на серверах, называемых сегментными хостами. На сегментном хосте обычно выполняется от двух до восьми сегментов Greenplum, в зависимости от количества процессорных ядер, оперативной памяти, хранилища, сетевых интерфейсов и рабочих нагрузок. Предполагается, что сегментные хосты должны быть сконфигурированы идентичным образом. Ключом к достижению максимальной производительности Greenplum является равномерное распределение данных и рабочей нагрузки по большому количеству сегментов, чтобы все они начинали и завершали работу над задачей в одно и то же время.
Интерконнет Greenplum
Интерконнект - это сетевой уровень архитектуры Greenplum.
Под интерконнектом понимается взаимодействие между сегментами и сетевой инфраструктурой. В качестве интерконнекта в Greenplum используется технология Ethernet. Рекомендуется использовать 10-гигабитную или более быструю систему.
По умолчанию для передачи сообщений по сети интерконнект использует протокол User Datagram Protocol with flow control (UDPIFC). Программное обеспечение Greenplum выполняет проверку пакетов сверх того, что обеспечивает UDP. Таким образом, надежность системы эквивалентна протоколу Transmission Control Protocol (TCP), а производительность и масштабируемость в несколько раз превосходит TCP. При замене межсетевого взаимодействия на TCP предел масштабируемости базы данных Greenplum составляет 1000 экземпляров сегментов. При использовании UDPIFC в качестве протокола по умолчанию для межсетевого взаимодействия это ограничение не действует.




