Greenplum Database于2024年5月,在没有任何公告的情况下存档闭源。对于存量用户和开发者,纷纷寻找替代方案。从目前情况看主要有三大项目可担当继任者,那么谁又更胜一筹,能够脱颖而出呢?
官网:https://cloudberry.apache.org
源码:https://github.com/apache/cloudberry
由Greenplum数据库初始开发团队打造的一套开源MPP数据库。它源自Pivotal Greenplum数据库的开源版本,但采用了更新的PostgreSQL内核(基于PG 14.4,正在向16.x升级),并提供更多高级企业功能。
2024年10月在成功通过投票后正式进入Apache孵化器,并于2024年11月完成了源代码仓库及基础设施向Apache软件基金会(ASF)的迁移。
官网:https://greengagedb.org/en/home/
源码:https://github.com/GreengageDB/greengage
由Arenadata发起,源代码托管在GitHub组织下,仓库由发起公司拥有和控制。
有意思的是,greengage和green plum都有“青梅”的意思,但是它们并非同一种水果。
源码:https://github.com/warehouse-pg/warehouse-pg
由EnterpriseDB发起,源代码托管在GitHub组织下,仓库由发起公司拥有和控制。
数据截止2026年3月15日。
| 产品 | Star | Pull Request | Issue | 主分支提交次数(*) |
| ———– | —- | ———— | —– | —————– |
| Cloudberry | 1191 | 1107 | 360 | 1588 |
| Greengage | 74 | 310 | 5 | 442 |
| WarehousePG | 96 | 108 | 19 | 129 |
*注:仅统计2024年04月01日之后的main分支提交。
总体上来看,各项指标Cloudberry均领先。
已发布多个版本:
| 关键版本 | 发布时间 | 说明 |
| ———————————- | ———- | ———————————— |
| apache-cloudberry-2.0.0-incubating | 2025.09.01 | 进入Apache孵化项目后第一个稳定版本 |
| v1.6.0 | 2024.09.03 | 进入Apache孵化项目前最后一个稳定版本 |
| v1.0.0 | 2024.03.11 | 第一个Release版本 |
2025 年,项目启动了Apache Cloudberry的PostgreSQL内核升级工作,将Apache Cloudberry的PostgreSQL内核从 PostgreSQL 14.x向PostgreSQL 16.x迁移,原归档的 Greenplum 7 版本将与Apache Cloudberry产生 4 个PostgreSQL版本代差(Greenplum 7搭载PostgreSQL 12内核)。参考文献[3]。
cbcopy是一种高效的数据库迁移工具,用于将数据和元数据从Greenplum database (GPDB)传输到Apache Cloudberry(Cloudberrydb),同时还支持在Greenplum数据库之间和Cloudberry数据库之间进行迁移,以便进行灾难恢复和数据库版本升级。
本节演示在一台服务器上从源代码快速搭建一个Apache Cloudberry 3.0 Demo集群。
以下过程在CentOS 7.6上验证通过。参考文献[4]。
# 1. 安装准备 # 请确保环境已准备好,例如已建立当前用户到自己的SSH互信。 # 不要安装python pg和pgdb包 sudo pip3 install pygresql # 可能还需要其它包,根据后续提时按需安装。 cd ~ mkdir cb_bin # 2. 拉取代码 git clone https://github.com/apache/cloudberry.git # 3. 编译配置 cd cloudberry # Debug版本,暂时不编译ORCA,ORCA需要额外的库。 # 这一步可能会提时缺少库,缺什么安装什么即可。 CFLAGS="-O0 -g3 -ggdb3" ./configure --prefix=/home/fairyfar/cb_bin --disable-orca --enable-debug --enable-debug-extensions # 4. 编译 make -j$(nproc) -C ./ make -j$(nproc) -C ./contrib make install -C ./ make install -C ./contrib # 5. 验证安装 ~/cb_bin/bin/postgres --gp-version ~/cb_bin/bin/postgres --version ldd ~/cb_bin/bin/postgres # 6. 初始化Cloudberry demo集群 source ~/cb_bin/cloudberry-env.sh make create-demo-cluster -C ./ source ./gpAux/gpdemo/gpdemo-env.sh # 7. 可以正常使用集群了 gpstate -a psql postgres
截止到目前,Apache Cloudberry尚未提供除源码安装方式之外的任何二进制安装方式(.deb,.rpm等)。参阅文献[5]。
The Apache Cloudberry (Incubating) project is released in source form (`.tar.gz`) as its official releases. All the official releases are signed by the release manager for the release. PGP signatures and SHA512 checksums are available along with the distribution.
Convenience binaries (eg, `.deb`, `.rpm`) will be made in the future.
本节演示如何从源代码编译、安装和初始化Apache Cloudberry集群。
集群拓扑:1台主机,1个coordinator实例,2个主segment实例,2个备segment实例。
(1). 安装准备
参考上一小节。
cd /home/fairyfar/ # 创建程序目录 mkdir acb_bin # 创建数据目录(包括:coordinator、主segment和备segment的数据目录) mkdir -p acb_db/coor mkdir -p acb_db/primary mkdir -p acb_db/mirror
(2). 拉取代码
git clone https://github.com/apache/cloudberry.git
(3). 编译
cd cloudberry # Release版本,暂时不编译ORCA,ORCA需要额外的库。 # 这一步可能会提时缺少库,缺什么安装什么即可。 ./configure --prefix=/home/fairyfar/acb_bin --disable-orca make -j$(nproc) make install
如果编译Debug版本,可以使用以下configure:
CFLAGS="-O0 -g3 -ggdb3" ./configure --prefix=/home/fairyfar/acb_bin --disable-orca --enable-debug --enable-debug-extensions
(4). 验证安装
~/acb_bin/bin/postgres --gp-version ~/acb_bin/bin/postgres --version ldd ~/acb_bin/bin/postgres
(5). 准备初始化配置文件
# 复制初始化配置文件模板 cp cloudberry/gpMgmt/doc/gpconfigs/gpinitsystem_config ~/
修改初始化配置文件gpinitsystem_config,主要内容包括:
# 主segment起始端口号 PORT_BASE=7000 # 主segment数据目录 declare -a DATA_DIRECTORY=(/home/fairyfar/acb_db/primary /home/fairyfar/acb_db/primary) # 主机名称 COORDINATOR_HOSTNAME=bogon # coordinator数据目录 COORDINATOR_DIRECTORY=/home/fairyfar/acb_db/coor # 备segment起始端口号 MIRROR_PORT_BASE=8000 # 备segment数据目录 declare -a MIRROR_DATA_DIRECTORY=(/home/fairyfar/acb_db/mirror /home/fairyfar/acb_db/mirror)
准备主机列表文件:
hostname > ~/hostlist_singlenode
(6). 初始化集群
source /home/fairyfar/acb_bin/cloudberry-env.sh gpinitsystem -h ~/hostlist_singlenode -c ~/gpinitsystem_config
gpinitsystem如果失败,请根据实际情况修改配置,常见错误有:
-m参数,降低初始化并行度。(7). 使用集群
在使用gpstart, gpstop, gpstate等命令前,需要先导出coordinator数据目录环境变量:
export COORDINATOR_DATA_DIRECTORY=/home/fairyfar/acb_db/coor/gpseg-1