Архитектура Greenplum

Кластер Greenplum должен состоять из нескольких хостов.

  • Мастер-хост - через него подключаются клиенты к кластеру.
  • Резервный мастер-хост - standbay для мастера.
  • Сегмент хосты. Подключение к ним напрямую не возможно, они хранят и обрабатывают сами данные.

Все хосты объединены одной сетью интерконнект отличающейся от той по которой подключаются пользователи.

На каждом хосте Greenplum запущены один или несколько экземпляров PostgreSQL. У каждого экземпляра свои процессы, директория с данными, логами и конфигурационными файлами. Эти экземпляры называются сегментами Greenplum.

Типы сегментов Greenplum:

Мастер (Master)

Мастер присутствует в кластере в единственном экземпляре, резервируется standby мастером и располагается на мастер-хосте. Он принимает подключения клиентов, выдаёт результаты запросов, обеспечивает координацию работы всего кластера. Так же может называться coordinator

Резервный мастер (Standby)

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

Первичные сегменты (Primary segments).

Этих сегментов в кластере несколько. Они располагаются на сегмент-хостах. В своих директориях первичные сегменты хранят пользовательские данные и реплику каталога БД. На первичных сегментах обрабатываются SQL- и DML-операции, они несут основную пользовательскую нагрузку.

Сегменты-зеркала (Mirror segments)

Этих сегментов в кластере столько же, сколько и первичных. Зеркала располагаются на сегмент-хостах и хранят реплики данных с первичных сегментов. Они не обрабатывают запросы, а только принимают поток репликации данных, поэтому почти не создают нагрузку на процессор и память. Репликация на зеркалах синхронная: при записи данных на первичный сегмент транзакция не закончится, пока данные не реплицируются на зеркало.

NOTE

Количество сегментов на сегмент-хостах всегда одинаково для обеспечения равномерности нагрузки по хостам.

NOTE

У одного первичного сегмента одно и только одно зеркало, которое располагается на другом сегмент-хосте. Количество зеркал совпадает с количеством первичных сегментов.

Можно посмотреть список всех сегментов вместе с мастером и резервным мастером в системной таблице gp_segment_configuration.

select * from gp_segment_configuration;

Transclude of Принципы-параллельной-обработки-в-Greenplum

Загрузка-выгрузка данных из внешних источников

Несмотря на то, что управление GP и запросы к кластеру идут через мастер ноду загрузка и выгрузка внешних данных может осуществляться через сегменты, что увеличивает производительность.

Со стороны клиента параллельная загрузка данных в Greenplum выглядит как SELECT из таблицы, которая ссылается на внешний источник, а выгрузка данных из Greenplum — как INSERT в неё.