1. Почему Greenplum перестаёт справляться
Greenplum — MPP-СУБД на базе PostgreSQL, разработанная Pivotal (затем VMware). Сегодня open-source версия развивается как Greengage, а в КЗ/РФ основной дистрибутор — Arenadata ADB.
Greenplum хорошо работает для классических batch-ETL сценариев. Но когда бизнесу нужна аналитика в реальном времени, начинаются проблемы:
- Нет real-time обновлений: Greenplum спроектирован для batch-загрузок. UPSERT и partial update отсутствуют — нужен delete + insert.
- Сложное масштабирование: добавление segment-нод требует перераспределения данных (redistribution), что может занять часы.
- Тяжёлая администрация: coordinator + standby coordinator + segment mirrors + VACUUM + table bloat — требует выделенных DBA.
- Стоимость лицензий: enterprise-версия (VMware/Arenadata) платная. Open-source Greengage требует экспертизы для production.
2. Архитектура: MPP DWH vs Unified Lakehouse
Ключевое различие — в подходе к обновлению данных и интеграции с data lake.
| Greenplum | Apache Doris |
|---|---|
| PostgreSQL-based, coordinator-segment архитектура | Независимый MPP, FE + BE ноды |
| Row + column storage (append-optimized таблицы) | Columnar storage с native UPSERT и partial update |
| PostgreSQL SQL (PL/pgSQL, триггеры, stored procedures) | MySQL-протокол (JDBC/ODBC, широкая BI-совместимость) |
| Внешние таблицы для доступа к data lake (PXF) | Native lake federation (Iceberg, Hudi, Delta Lake, Paimon) |
| VACUUM и table bloat при обновлениях | Vectorized engine с SIMD, auto-compaction |
Apache Doris объединяет real-time аналитику и lakehouse federation в одной системе — без необходимости строить отдельные пайплайны для batch и streaming.
3. Производительность: цифры из публичных бенчмарков
Данные из TPC-H/TPC-DS бенчмарков и публичных кейсов:
| Метрика | Greenplum | Apache Doris | Примечание |
|---|---|---|---|
| Сложные JOIN (TPC-H) | Базовый уровень | 3–5x быстрее | Vectorized engine + CBO |
| Real-time UPSERT | Не поддерживается | Нативная поддержка | Unique Key Model |
| Сжатие данных | 1:2 – 1:4 | 1:5 – 1:10 | Columnar + Zstandard/LZ4 |
| Execution engine | Row-based (legacy) | Vectorized + SIMD | Разница на scan-heavy запросах |
| Concurrent queries | Coordinator bottleneck | FE-кластер, горизонтальное масштабирование | Doris масштабирует FE отдельно |
4. SQL совместимость
Greenplum наследует PostgreSQL SQL — один из самых богатых диалектов: PL/pgSQL, триггеры, stored procedures, оконные функции, CTE, материализованные представления.
Apache Doris работает по MySQL-протоколу. Любой BI-инструмент (Grafana, Superset, Tableau, Power BI) подключается через стандартный JDBC/ODBC без адаптеров.
// ПРИМЕР: ОДИН И ТОТ ЖЕ ЗАПРОС В ОБЕИХ СИСТЕМАХ SELECT region, risk_level,
COUNT(*) AS tx_count,
AVG(amount) AS avg_amount
FROM transactions t
JOIN merchants m ON t.merchant_id = m.id
WHERE tx_date >= CURRENT_DATE - INTERVAL 7 DAY
GROUP BY region, risk_level
ORDER BY tx_count DESC; Этот запрос работает и в Greenplum (PostgreSQL синтаксис), и в Doris (MySQL-совместимый). Основные отличия — в DDL, типах данных и механизме обновлений. X2Doris помогает адаптировать схемы при миграции.
Преимущество Doris: MySQL — самый распространённый протокол; любой клиент подключается без адаптера. Преимущество GP: богатый PL/pgSQL для процедурной логики в СУБД.
5. Стоимость владения (TCO)
Главные факторы экономии при переходе с Greenplum на Doris:
| Лицензии | |
|---|---|
| Лицензии | Greenplum enterprise (Arenadata ADB, VMware Tanzu) — коммерческая лицензия. Apache Doris — Apache License 2.0, без платежей. |
| Инфраструктура | GP требует выделенного coordinator, standby coordinator, segment mirrors. Doris: FE/BE ноды с auto-balancing, проще масштабирование. |
| Эксплуатация | GP: VACUUM, table bloat, segment management, catalog repair. Doris: auto-compaction, автоматическое управление данными. |
| Инженеры | PostgreSQL-специалисты доступны, но MySQL-специалистов ещё больше. Doris не требует глубокой DBA-экспертизы для типичных операций. |
6. Real-time: ключевой разрыв
Это главное архитектурное различие. Greenplum создан для batch-аналитики: ETL-процессы загружают данные пакетами, обновления через delete + insert.
Apache Doris поддерживает потоковые загрузки нативно:
- Kafka Connector — подписка на топики Kafka, данные в Doris за секунды.
- Flink CDC — Change Data Capture из PostgreSQL, MySQL, Oracle в реальном времени.
- Stream Load — HTTP-загрузка с субсекундной задержкой.
- Unique Key Model — UPSERT и partial update без delete + insert.
Для современной аналитики — fraud-detection, live-дашборды, операционный мониторинг — real-time не опция, а требование. Пользователи Greenplum решают это через ClickHouse/Kafka sidecar, но это создаёт «зоопарк» систем.
Apache Doris объединяет batch и real-time в одном движке — без отдельных пайплайнов.
7. Кейсы миграции с Greenplum
China Construction Bank (CCB)
Один из крупнейших банков мира мигрировал аналитическую платформу с Greenplum на Apache Doris. Драйверы: real-time аналитика для управления рисками, снижение стоимости инфраструктуры.
X2Doris — инструмент миграции
Apache Doris предоставляет X2Doris — набор утилит для переноса данных и схем из Greenplum, Oracle, MySQL. Маппинг типов данных, адаптация DDL, параллельный импорт.
Типичный путь миграции
Schema mapping (типы PostgreSQL → Doris) → Data migration (X2Doris или Flink) → SQL adaptation (минимальные изменения) → Parallel run (GP + Doris параллельно) → Cutover.
8. Когда Greenplum всё ещё лучше
Greenplum остаётся лучшим выбором в конкретных сценариях:
- Тяжёлые хранимые процедуры PL/pgSQL: если бизнес-логика живёт внутри СУБД — миграция дорогая.
- PostGIS и геоаналитика: Greenplum наследует PostGIS, один из самых мощных geo-движков.
- Глубокая PostgreSQL-экспертиза: если команда годами работала с PostgreSQL и нет потребности в real-time.
- Регуляторные требования: если нормативы прямо требуют PostgreSQL-совместимую СУБД.
Но если нужен real-time + batch в одной системе, lakehouse federation, MySQL-совместимость для BI — Apache Doris решает эти задачи быстрее и дешевле.