# 一、概况 `Greenplum Database`于2024年5月,在没有任何公告的情况下存档闭源。对于存量用户和开发者,纷纷寻找替代方案。从目前情况看主要有三大项目可担当继任者,那么谁又更胜一筹,能够脱颖而出呢? ## 1.1 Apache Cloudberry ![image](../../../../ff_internal_upload/img/2026/image-20260313142355704.png) 官网: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)的迁移。 ## 1.2 Greengage ![image](../../../../ff_internal_upload/img/2026/ggdb_100x100.png) 官网:https://greengagedb.org/en/home/ 源码:https://github.com/GreengageDB/greengage 由`Arenadata`发起,源代码托管在GitHub组织下,仓库由发起公司拥有和控制。 有意思的是,`greengage`和`green plum`都有“青梅”的意思,但是它们并非同一种水果。 ## 1.3 WarehousePG ![image](../../../../ff_internal_upload/img/2026/fulllogo_transparent_small_buffer.png) 官网:https://warehouse-pg.io 源码:https://github.com/warehouse-pg/warehouse-pg 由`EnterpriseDB`发起,源代码托管在GitHub组织下,仓库由发起公司拥有和控制。 ## 1.4 多纬度对比 数据截止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.1 版本发布 已发布多个版本: | 关键版本 | 发布时间 | 说明 | | ---------------------------------- | ---------- | ------------------------------------ | | apache-cloudberry-2.0.0-incubating | 2025.09.01 | 进入Apache孵化项目后第一个稳定版本 | | v1.6.0 | 2024.09.03 | 进入Apache孵化项目前最后一个稳定版本 | | v1.0.0 | 2024.03.11 | 第一个Release版本 | ## 2.2 内核升级 2025 年,项目启动了`Apache Cloudberry`的`PostgreSQL`内核升级工作,将`Apache Cloudberry`的`PostgreSQL`内核从 `PostgreSQL 14.x`向`PostgreSQL 16.x`迁移,原归档的 Greenplum 7 版本将与`Apache Cloudberry`产生 4 个`PostgreSQL`版本代差(`Greenplum 7`搭载`PostgreSQL 12`内核)。参考文献[3]。 ## 2.3 数据迁移 `cbcopy`是一种高效的数据库迁移工具,用于将数据和元数据从`Greenplum database (GPDB)`传输到`Apache Cloudberry(Cloudberrydb)`,同时还支持在`Greenplum`数据库之间和`Cloudberry`数据库之间进行迁移,以便进行灾难恢复和数据库版本升级。 项目地址:https://github.com/cloudberry-contrib/cbcopy ## 2.4 编译安装Demo集群 本节演示在一台服务器上从源代码快速搭建一个`Apache Cloudberry 3.0 Demo`集群。 以下过程在`CentOS 7.6`上验证通过。参考文献[4]。 ```bash # 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 ``` ## 2.5 编译安装集群 截止到目前,`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). 安装准备** 参考上一小节。 ```bash 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). 拉取代码** ```bash git clone https://github.com/apache/cloudberry.git ``` **(3). 编译** ```bash cd cloudberry # Release版本,暂时不编译ORCA,ORCA需要额外的库。 # 这一步可能会提时缺少库,缺什么安装什么即可。 ./configure --prefix=/home/fairyfar/acb_bin --disable-orca make -j$(nproc) make install ``` 如果编译Debug版本,可以使用以下configure: ```bash CFLAGS="-O0 -g3 -ggdb3" ./configure --prefix=/home/fairyfar/acb_bin --disable-orca --enable-debug --enable-debug-extensions ``` **(4). 验证安装** ```bash ~/acb_bin/bin/postgres --gp-version ~/acb_bin/bin/postgres --version ldd ~/acb_bin/bin/postgres ``` **(5). 准备初始化配置文件** ```bash # 复制初始化配置文件模板 cp cloudberry/gpMgmt/doc/gpconfigs/gpinitsystem_config ~/ ``` 修改初始化配置文件`gpinitsystem_config`,主要内容包括: ```bash # 主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) ``` 准备主机列表文件: ```bash hostname > ~/hostlist_singlenode ``` **(6). 初始化集群** ```bash source /home/fairyfar/acb_bin/cloudberry-env.sh gpinitsystem -h ~/hostlist_singlenode -c ~/gpinitsystem_config ``` `gpinitsystem`如果失败,请根据实际情况修改配置,常见错误有: - 端口冲突,例如CentOS桌面版,6000端口默认已被下X桌面程序使用。导致第1个主segment无法启动。 - 系统配置太低,无法启动全部实例。请降低实例数,或者去掉备segment。 - 初始化并行度过高,部分实例失败。可以尝试指定`-m`参数,降低初始化并行度。 **(7). 使用集群** 在使用`gpstart, gpstop, gpstate`等命令前,需要先导出`coordinator`数据目录环境变量: ```bash export COORDINATOR_DATA_DIRECTORY=/home/fairyfar/acb_db/coor/gpseg-1 ``` # 三、参考 1. [Greenplum 原班人马的“换皮”数据库加入孵化器,Apache 力挺:PG 内核升级,性能大幅提升](https://news.qq.com/rain/a/20241122A088IK00) 2. [Greenplum 的开源替代:为什么 Apache Cloudberry 是最佳选择](https://zhuanlan.zhihu.com/p/1980238664475894354) 3. [年度回顾 | Apache Cloudberry 2025:成长之年](https://www.modb.pro/db/2007638550246940672) 4. [Quick Build | Apache Cloudberry (Incubating)](https://cloudberry.apache.org/docs/deployment/quick-build/) 5. [Apache Cloudberry (Incubating) Downloads](https://cloudberry.apache.org/releases/#releases)