Архитектура 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
в неё.