Как устроена Greenplum?
Greenplum — это массивно-параллельная аналитическая база данных с открытым исходным кодом, основанная на PostgreSQL. Это распределённая Big Data система для enterprise-задач. Обработка больших объемов данных возможна благодаря архитектуре MPP и довольно мощным алгоритмам оптимизации. Особенность массово-параллельной архитектуры в том, что память физически разделена для ускорения процесса обработки.
MPP-архитектура позволяет Greenplum реализовать концепцию без разделения ресурсов, разделяя только сетевую инфраструктуру. У сервиса есть:
- мастер-хост — отдельный хост, к которому обращаются пользователи. Он содержит все метаданные и дублируется резервным мастер-хостом;
- интерконнект – сетевой слой. Интерконнект Greenplum использует стандартную коммутационную структуру Ethernet.
- сегментные хосты — хосты для хранения и обработки данных, к которым может обращаться только мастер.
Внутри сегмент-хостов располагаются:
Первичные сегменты (primary segments) - хранят данные, с которыми взаимодействуют пользователи, и реплику каталога БД. На этих сегментах обрабатываются DML-операции.
Сегменты-зеркала (mirror segments) – принимают поток репликации данных с первичных сегментов. Сегменты-зеркала не обрабатывают запросы и не создают нагрузку на процессор. Репликация на зеркалах синхронная. Этих сегментов в кластере столько же, сколько и первичных. Они используются в случае, если основной сегмент перестал работать.
Запросы
Узнать количество сегмент-хостов в кластере можно с помощью запроса:
SELECT COUNT(DISTINCT hostname)FROM gp_segment_configuration;
Запрос для поиска активных первичных сегментов:
SELECT COUNT(DISTINCT dbid)FROM gp_segment_configurationWHERE 1=1AND role = 'p'AND status = 'u'AND content >= 0;
Сходства и различия Greenplum и PostgreSQL
Сходства:
- синтаксис SQL, объекты базы данных и встроенные функции;
- структура системного каталога;
- механизм реализации транзакций;
- ролевая модель;
- работа драйвера для PostgreSQL
Отличия Greenplum от PostgreSQL:
- специфичные изменения в системном каталоге (специфичные технические таблицы);
- функциональность;
- MPP-архитектура Greenplum;
- PostgreSQL чаще используется для OLTP нагрузок, а Greenplum – для OLAP.




