Greenplum 是一款基于 PostgreSQL 的开源 MPP(Massively Parallel Processing)分布式数据库,适合海量数据的并行分析和数据仓库场景。
1. 架构概览
Greenplum 采用 共享无架构(Shared-Nothing)MPP 架构,即:
-
每个节点有自己独立的 CPU、内存、磁盘,不共享资源
-
SQL 查询会被拆分并下发到各节点 并行执行
架构图:
+----------------------+
| Master 节点 | ← 接收 SQL 查询,解析计划,协调执行
+----------------------+
| |
+------------+ +-------------+
| |
+-------------------+ +-------------------+
| Segment 节点 1 | | Segment 节点 2 |
| PostgreSQL 实例 A | | PostgreSQL 实例 B |
+-------------------+ +-------------------+
↑ ↑ ↑ ↑
Primary Mirror Primary Mirror(可选)
2. 核心特性
| 特性 | 说明 |
|---|---|
| ✅ MPP 分布式架构 | 支持上百节点并行执行查询,处理 TB/PB 级数据 |
| ✅ 基于 PostgreSQL | 支持标准 SQL、继承 PG 的生态 |
| ✅ 分布式数据存储 | 数据按“分布键”存储在各个 Segment 节点 |
| ✅ 并行查询引擎 | 查询自动拆解成多个子任务并行执行 |
| ✅ GPORCA 优化器 | 面向大规模查询的深度优化器,提升性能 |
| ✅ 外部表支持 | 可快速对接 HDFS、S3、CSV、Kafka 等数据源 |
| ✅ 分区表支持 | 时间、范围、列表等分区策略提升查询性能 |
| ✅ 资源队列 Resource Queue | 控制不同用户/组的 CPU/内存配额,防止资源争抢 |
| ✅ UDF 自定义函数 | 支持 C、Python、SQL 写扩展逻辑 |
3. 表结构类型
| 表类型 | 描述 |
|---|---|
| 分布式表(Distributed Table) | 将数据根据某字段(分布键)散列分布到各个 Segment 节点上 |
| 分区表(Partitioned Table) | 在每个 Segment 上再细分为多个分区,提高查询效率 |
| 外部表(External Table) | 不导入数据,可直接从 HDFS/CSV 文件查询(适合离线分析) |
示例:
CREATE TABLE users (
id INT,
name TEXT,
age INT
) DISTRIBUTED BY (id);
4. 与 PostgreSQL 的主要区别
| 特性 | PostgreSQL | Greenplum |
|---|---|---|
| 架构类型 | 单机或主备复制 | MPP 分布式架构 |
| 数据分布 | 不支持 | 分布键 HASH 分布 |
| 查询优化器 | 基于成本的传统优化器 | GPORCA(面向大数据) |
| 执行方式 | 单节点执行计划 | 多节点并行执行 |
| OLTP 支持 | 强 | 一般,偏向 OLAP |
| 外部数据源支持 | 需扩展 | 原生外部表 |
| 插件兼容性 | 高(官方支持) | 限制较多(部分 PG 插件不可用) |
5. 典型使用场景
| 场景类型 | 是否推荐 | 说明 |
|---|---|---|
| ✅ 大数据仓库 | ✅ | 如 PB 级数据分析系统 |
| ✅ BI 报表系统 | ✅ | 配合 Superset、Tableau、PowerBI |
| ✅ 营销数据分析 | ✅ | 多维度汇总、聚合统计 |
| ✅ 行政政务大数据平台 | ✅ | 统一数据模型、数据服务支撑 |
| ❌ 高频交易系统 | ❌ | 不适合 OLTP 写入、更新频繁系统 |
| ❌ 实时系统 | ⚠️ | 不适合毫秒级响应系统,适合分钟级批处理 |
6. 管理工具
| 工具 | 说明 |
|---|---|
gpstart/gpstop | 启动/关闭集群 |
gpexpand | 动态添加节点扩容 |
gpfdist | 快速导入导出数据 |
gp_toolkit | 监控和管理 SQL 视图集合 |
gpadmin 用户 | 默认超级管理员用户 |
7. 示例语法
创建表并指定分布键:
CREATE TABLE sales (
sale_id int,
product_id int,
amount numeric
) DISTRIBUTED BY (sale_id);
外部表读取 CSV 文件:
CREATE EXTERNAL TABLE ext_sales (
sale_id int,
product_id int,
amount numeric
)
LOCATION ('gpfdist://master_host:8081/sales.csv')
FORMAT 'CSV' (DELIMITER ',');
8. 优缺点总结
优点
-
超强并行计算能力(支持百节点规模)
-
标准 SQL 支持
-
成熟稳定,政府/运营商/银行广泛使用
-
支持大规模批量导入导出
-
免费开源(Apache 2.0)
缺点
-
写入性能不如 OLTP 数据库
-
更新/删除开销大(不推荐频繁变更)
-
实时性差,不适合流式处理
-
管理复杂度高(需熟悉节点、分布、资源管理)
9. 企业级功能(含付费版)
| 功能 | Greenplum 开源版 | 企业版(Pivotal) |
|---|---|---|
| 查询优化器 | ✅ GPORCA | ✅ |
| 外部表 | ✅ | ✅ |
| 多租户资源控制 | ✅ | ✅ |
| 自动容灾 | ❌(手动配置) | ✅ |
| 数据压缩 | ✅(基础) | ✅(更强) |
| 可视化管理界面 | ❌(需第三方) | ✅ |
10. 对比 Hive、ClickHouse、TiDB
| 特性 | Greenplum | Hive | ClickHouse | TiDB |
|---|---|---|---|---|
| 查询响应 | 快 | 慢 | 快 | 快 |
| 数据更新 | 一般 | 不支持 | 差 | 好 |
| SQL 支持 | 标准 SQL | HiveQL | 类 SQL | 完整 SQL |
| 并发能力 | 一般 | 差 | 一般 | 强(OLTP) |
| 最佳用途 | 离线分析 | 批量分析 | 实时报表 | 混合负载 |
11. 版本与开源地址
-
最新版本(2024年):Greenplum 7.x
-
GitHub 开源地址:
🔗 https://github.com/greenplum-db/gpdb
总结
| 你需要 | 推荐 |
|---|---|
| 分布式大数据分析平台 | ✅ Greenplum 是开源 MPP 的优选 |
| 替代商业数据仓库(如 Teradata、Oracle Exadata) | ✅ Greenplum 免费、兼容 SQL |
| 实时事务处理系统 | ❌ 不建议使用 Greenplum,用 PostgreSQL 或 TiDB 更合适 |
如果你想部署一个 Greenplum 集群、设计分布策略、接入 BI 工具、或者将 MySQL/PG 数据同步到 Greenplum,我可以继续提供具体部署方案和 ETL 脚本。是否需要?
1834

被折叠的 条评论
为什么被折叠?



