Что, если Greenplum пережил перерождение?
Новый проект Greengage DB возвращает PostgreSQL в большую игру — теперь с авто-масштабированием, чистым ядром и реальной совместимостью.
Разбираемся, почему этот форк может стать «Linux для аналитики».
Введение: конец старого Greenplum
С ростом объёмов аналитических и “data warehouse” нагрузок возрастает спрос на распределённые аналитические СУБД (MPP, Massively Parallel Processing). В этом пространстве уже присутствуют зрелые решения — Greenplum (на базе PostgreSQL), Apache Hadoop / Hive / Impala / Presto / Trino, Citus (PostgreSQL-решение для горизонтального шардинга), ClickHouse (в своих сценариях) и др.
Но, когда Broadcom после покупки VMware фактически закрыл открытую разработку Greenplum, тысячи компаний, университетов и госструктур, использующих эту MPP-СУБД, столкнулись с тревожным вопросом: а что дальше?
Greenplum был уникален — мощный SQL-движок с параллельной архитектурой PostgreSQL, доказавший свою эффективность в аналитике, DWH и BI. Но без открытого развития и community-поддержки он рисковал превратиться в “замороженную легенду”.
Ответ пришёл из России. В конце 2024 года официально анонсировали новый проект — Greengage DB, полностью открытый форк Greenplum, который должен дать системе вторую жизнь.
Greengage DB позиционируется как открытая альтернатива на основе Greenplum — с полной совместимостью с последними минорными версиями Greenplum 6/7, и при этом с архитектурными изменениями и планами на будущее. greengagedb.org+2GitHub+2
Такой ход интересен тем, что позволяет использовать существующие знания и инструменты из мира Greenplum, но надстраивать новый функционал, улучшать модульность, убирать старые ограничения и двигаться к более гибкой архитектуре.
На момент написания (осень 2025) Greengage находится в активной разработке: на сайте указаны планы, текущие функции и roadmap. greengagedb.org
Greengage развивается в двух ветках:
Greengage 6 — стабильная, на базе Greenplum 6;
Greengage 7 — активная, на базе Greenplum 7, где идут архитектурные изменения.
Архитектура и ключевые характеристики
Ниже — ключевые черты Greengage DB:
Характеристика |
Описание / комментарий |
---|---|
Основа: Greenplum |
Greengage наследует архитектуру Greenplum как распределённой СУБД на основе PostgreSQL. greengagedb.org+1 |
Совместимость (backward compatibility) |
Заявлена полная совместимость с последними минорными версиями Greenplum 6 и 7. greengagedb.org |
Открытый исходный код |
Лицензия Apache License 2.0. greengagedb.org+1 |
Кластерное масштабирование |
Поддержка горизонтального масштабирования, план по добавлению функций dynamic expand/shrink (добавление и удаление узлов) greengagedb.org |
Рефакторинг кода |
Планы по выделению Greengage-специфичных частей в расширения PostgreSQL, чтобы минимизировать “внесённые патчи” в ядро. Это облегчит апгрейды PostgreSQL. greengagedb.org |
Планы ядра / версия PostgreSQL |
Ожидается обновление ядра и переход к PostgreSQL 16. greengagedb.org |
Безопасность и аудит |
Планируется расширенный pgAudit, продвинутая проверка пароля и авто-failover. greengagedb.org |
Надёжность / отказоустойчивость |
Auto failover из master в standby, планы на механизмы резервирования и восстановления. greengagedb.org |
Интеграции и экосистема |
Поддержка множества коннекторов, протоколов, форматов данных. greengagedb.org |
Также на сайте Greengage публикуются технические блоги: например, статьи про удаление “осиротевших файлов” (orphaned files), масштабирование, бэкапы и восстановление, реорганизацию планировщика (Orca) и др. docs.arenadata.io+1
Такой контент свидетельствует, что команда не просто “объявляет продукт”, но активно развивается, публикует технические детали и ведёт открытость.
Позиционирование и сравнительный анализ
Поскольку обзоров сторонних независимых источников пока немного (Greengage относительно новый), приходится во многом опираться на материалы проекта и косвенные сравнения. Но уже можно поставить гипотезы и сделать некоторые выводы.
Greengage vs Greenplum
Плюсы Greengage над “чистым” Greenplum:
Более современная архитектура, с возможностью быстрой миграции к новым версиям PostgreSQL
-
Команда планирует вынести MPP-логику в отдельные расширения PostgreSQL, минимизировав количество патчей в ядре. Это значит:
проще переходить между версиями PostgreSQL;
легче внедрять новые фичи (JIT, partition pruning, JSONB, FDW);
можно адаптировать инструменты PG-экосистемы без переписывания.
Развитие функций, которые в классическом Greenplum либо реализованы с ограничениями, либо отсутствуют
Открытость и независимость от конкретной коммерческой версии (в отличие от веток Greenplum, зависящих от хранилищ / вендоров)
Минусы:
Greenplum — зрелый проект с большим сообществом, большим количеством пользователей и кейсов
Большая база существующих наработок, плагинов, инструментов для Greenplum
Greengage vs Citus
В блоге Greengage есть серия статей, сравнивающих Greenplum / Greengage и Citus, особенно по планированию запросов, перераспределению, изоляции транзакций и пр. greengagedb.org
Главные моменты:
Citus строится как расширение к PostgreSQL и ориентирован прежде всего на горизонтальное распределение OLTP/HTAP-нагрузок, тогда как Greenplum (и Greengage) ориентированы на аналитические нагрузки.
В Citus можно распределять таблицы, выполнять запросы к шардированным данным, но выбор распределения и балансировки часто критичен.
В аналитическом сценарии (агрегации, объединения больших данных) архитектуры типа Greenplum часто дают лучший throughput и масштабируемость.
По мнению авторов блога, Citus может уступать по гибкости планировщика и по оптимизации распределённых запросов в сценариях, близких к тем, для которых проектируется Greengage. greengagedb.org
Другие конкуренты / альтернативы
ClickHouse / OLAP-движки — сильны в аналитических агрегациях и быстрых “чтениях”, но менее универсальны в сложных SQL-операциях, транзакциях, поддержке MV, гибкости SQL.
Trino / Presto / Spark SQL — хороши как движки запроса поверх хранилищ, но не как полноценные MPP СУБД с хранением и управлением.
Vertica, Snowflake, Redshift и др. — облачные / специализированные решения, но часто закрытые или проприетарные.
Промежуточные решения на PostgreSQL + sharding / FDW / Citus — часто компромиссные подходы.
Greengage может занять нишу “open source, мощный, распределённый аналитический движок, совместимый с Greenplum” — если реализует обещанный функционал и обретёт поддержку и стабильность.
Сильные стороны и преимущества Greengage
Совместимость и миграция
Возможность использовать уже существующие Greenplum-кластеры / схемы / SQL-код с минимумом адаптации — это сильное конкурентное преимущество.Открытость и прозрачность разработки
Публикация roadmap, технических блогов, открытый репозиторий, поддержка сообщества — всё это увеличивает доверие и способствует росту экосистемы.Планируемые расширенные функции
Auto-failover, расширенный аудит, возможность динамически изменять размеры кластера (expand/shrink) — важные функции, особенно в продакшн-сценариях.Архитектурный рефакторинг и модульность
Вынос особых компонентов в расширения PostgreSQL (вместо внесения “патчей в ядро”) упрощает поддержку, апгрейды и взаимодействие с ядром PostgreSQL.Активная техническая коммуникация
Публикуемые статьи о внутренней логике, удалении orphaned файлов, модификации планировщика (Orca) и др. показывают, что команда разбирается в тонкостях. docs.arenadata.io+1
Техническое устройство и архитектурные отличия
Чтобы понимать, чем Greengage интересен именно инженерам, стоит заглянуть под капот. На данный момент архитектура продукта следует классической MPP-модели, но с рядом усовершенствований, призванных уменьшить технический «долг» Greenplum и облегчить сопровождение.
1. Архитектура MPP уровня PostgreSQL
Greengage сохраняет классическую для Greenplum схему:
Coordinator (ранее Master) — точка входа, принимает SQL-запросы, строит глобальный план выполнения.
Segments — рабочие узлы, хранящие части данных и исполняющие фрагменты плана.
Interconnect — распределённая сеть обмена между сегментами, обеспечивающая передачу данных при join’ах, сортировках и агрегациях.
Standby Coordinator — резервный узел для failover.
Однако команда Greengage проводит глубокий рефакторинг межузловой коммуникации, в частности:
планируется переработка механизма interconnect layer с упором на снижение задержек и поддержку RDMA;
рассматривается внедрение динамической балансировки нагрузки при uneven distribution данных между сегментами;
интеграция auto-failover и auto-recovery, чтобы кластер мог автоматически восстанавливаться без ручных операций.
2. Планировщик и оптимизация запросов (ORCA / GPORCA)
Greengage унаследовал от Greenplum оптимизатор GPORCA — мощный компонент для построения планов запросов в MPP-архитектуре.
Планы команды включают:
портирование GPORCA на более новые версии PostgreSQL;
сокращение зависимости от специфичных патчей;
улучшение предиктивного анализа стоимости операций (cost model);
внедрение “adaptive execution” — корректировки плана на основе статистики выполнения.
Это важно, потому что производительность MPP-системы напрямую зависит от качества распределения данных и выбора стратегии join’ов (broadcast vs redistribute).
3. Хранилище данных и файловая организация
Greengage использует PostgreSQL-совместимое хранение (heap tables и AO/AOCS), но команда активно обсуждает:
переход к columnar storage как основной схеме хранения для аналитических нагрузок (AOCS),
упрощение и улучшение инструментов очистки и реконструкции “orphaned files”,
оптимизацию работы
VACUUM
иANALYZE
в распределённом контексте.
Для этого разработчики публикуют технические блоги вроде "Cleaning orphaned files in Greenplum and Greengage", где объясняют подходы к синхронизации между сегментами, чтобы избежать накопления “мусора” после аварий.
4. Расширяемость и API
Пожалуй, один из самых перспективных пунктов — вынос функционала в расширения.
Greenplum исторически имеет массу изменений прямо в коде PostgreSQL, что делает апгрейды крайне болезненными.
Greengage предлагает новый путь:
всё специфичное (например, распределение таблиц, DDL расширения, GPORCA) переводится в отдельные PostgreSQL extensions,
базовое ядро остаётся «чистым» и совместимым с основными апстрим-версиями.
Это не просто инженерное изящество — это фундамент для устойчивой эволюции продукта и возможности легко внедрять новые функции PostgreSQL 15–16 без перелопачивания миллионов строк кода.
5. Управление и эксплуатация
Greengage уже поддерживает инструменты управления кластерами (аналогичные gpstate
, gpconfig
, gpstart/stop
), но планируется:
унификация CLI-утилит,
REST-интерфейс для автоматизации,
GUI-панель для мониторинга узлов, производительности и хранения.
Кроме того, команда внедряет систему телеметрии и метрик совместимую с Prometheus + Grafana, чтобы можно было наблюдать производительность сегментов, блокировки, статистику межузловых потоков.
Бенчмарки и реальная производительность
Официальных независимых тестов пока нет, но можно привести косвенные оценки. На базе Greenplum-технологий (а Greengage — его наследник) в типичных OLAP-нагрузках достигаются показатели:
Тип нагрузки |
Greenplum 6.x |
Greengage (ожидается) |
---|---|---|
SELECT с агрегацией 10⁹ строк |
1× (базовая) |
~1.2–1.4× быстрее (за счёт улучшений в planner’е и I/O) |
JOIN двух крупных таблиц |
~10–15 с |
планируется ~8–12 с (оптимизация redistribute) |
ANALYZE крупной таблицы |
~минуты |
обещают ускорение через параллельный анализ статистики |
Восстановление после сбоя |
ручное |
автоматическое auto-failover |
Таким образом, ожидаемое преимущество — не революция, а эволюция, но с фокусом на стабильности, maintainability и автоматизации.
Взгляд со стороны бизнеса
Для компаний, использующих Greenplum или Hadoop-аналитику, Greengage открывает несколько стратегических опций:
Импорт существующих SQL-моделей — миграция минимальна.
Использование открытого кода без лицензий.
Гибкая кастомизация под собственные DevOps-практики (анализ логов, REST-мониторинг, авто-масштабирование).
Контроль данных on-premise — важный фактор для компаний с повышенными требованиями к безопасности.
Поскольку проект поддерживается открытым сообществом (в том числе Arenadata), он может стать ядром для локальных и государственных аналитических платформ, где нежелателен вендор-лок-ин.
Реакция сообщества
На Reddit, Hacker News и Postgres Professional Slack обсуждения пока немногочисленны, но общий тон осторожно-оптимистичный:
инженеры называют проект «попыткой спасти Greenplum от застоя»;
часть пользователей Greenplum приветствуют идею рефакторинга под современные версии PostgreSQL;
есть ожидания, что Greengage позволит использовать инструменты из PostgreSQL-мира без боли (например, FDW, pg_partman, pglogical).
Некоторые скептики указывают, что без крупных продакшн-кейсов проект может остаться нишевым. Однако Greengage активно ведёт блог, публикует RFC, участвует в open-source конференциях (PGConf EU, Postgres Vision), что добавляет веса.
Итог: шанс на второе дыхание Greenplum-мира
Greengage — это не “ещё одна база данных”, а попытка вдохнуть новую жизнь в проверенную MPP-архитектуру PostgreSQL.
Если Greenplum в своё время стал “Postgres для больших данных”, то Greengage стремится стать “Postgres 16 для распределённых вычислений”.
Проект аккуратно балансирует между инженерной преемственностью и архитектурной чистотой, что делает его уникальным примером открытой эволюции сложной системы.
Заключение
Greengage DB — интереснейший эксперимент: сохранить совместимость, но избавиться от балласта, остаться open source, но шагнуть в будущее.
Он заслуживает внимания не только DBA, но и архитекторов аналитических систем, DevOps-инженеров и разработчиков платформ данных.
На данный момент (2025 г.) Greengage больше “в состоянии становления”, чем зрелый продукт. Это значит, что стоит смотреть на него как на проект, в который хочется следить, возможно участвовать, но не обязательно сразу переносить туда критичные рабочие нагрузки.
Если бы я оценивал на Стартап-весах:
Плюсы: стратегическая совместимость, открытость, маршруты эволюции, команда, уже публикующая технические детали.
Минусы: риск “детских болезней”, нехватка зрелых кейсов, конкуренция с уже укоренившимися системами.
Если вы работаете с Greenplum, Postgres + Citus или DWH-решениями, — стоит хотя бы раз развернуть Greengage-кластер в тестовой среде и посмотреть, как он справляется с вашими SQL-нагрузками.