---
title: '从 Greenplum 到 Databend，数据仓库的开源新选择'
date: 2024-09-09
slug: category-product/greenplum-databend
cover_url: 'greenplum-databend.png'
description: '**长期以来，许多企业和开发者依赖于 Greenplum 的开源特性。闭源后，这些用户需要寻找替代方案，这不仅增加了迁移成本'
tags: [databend, greenplum]
category: Product
authors:
  - DatabendLabs
---

# 从 Greenplum 到 Databend，数据仓库的开源新选择

Greenplum 是知名开源数据仓库项目，曾是大数据分析领域的明星产品，在全球市场上有着重要的地位。今年 6 月，Greenplum 的 GitHub 仓库突然被改为归档模式，访问权限也修改为只读，用户将失去对源代码的访问权，意味着项目重回闭源，这对于依赖开源代码进行定制和优化的企业来说，是一个沉重的打击。此外，闭源还可能导致技术支持和社区活跃度下降，这对于需要持续迭代和优化的数据库产品来说，是一个不小的挑战。

{/* truncate */}

**技术依赖与迁移成本：**长期以来，许多企业和开发者依赖于 Greenplum 的开源特性。闭源后，这些用户需要寻找替代方案，这不仅增加了迁移成本，也带来了技术适配的挑战。

**市场竞争格局变化：**Greenplum 的闭源可能会改变数据仓库市场的竞争格局。一些依赖 Greenplum 的供应商可能会受到冲击，而那些拥有自主技术栈的供应商则有机会获得更多的市场份额。

**生态系统影响：**Greenplum 的闭源可能会影响其生态系统的稳定性。开发者和合作伙伴可能会寻找新的平台，这可能会导致生态系统的碎片化。

## 替代方案

在 Greenplum 闭源背景下，其他数据仓库供应商迎来了重要机遇，特别是以 Databend 为代表的新一代云原生数据仓库方案，拥有高性能、弹性扩缩容和存算分离等特性。对于考虑替代 Greenplum 的用户来说，Databend 是一个值得探索的替代方案。通过利用其开源和云原生等特点，用户可以在更优的成本下获得高效的数据分析和处理能力。

1.  **技术创新驱动**

随着 Greenplum 的闭源，数据仓库市场对于开源替代方案的需求将进一步加大。Databend 作为云原生、基于 Rust 开发的数据仓库，提供了面向未来的数据存储和分析模式，具备高弹性、高并发、实时分析等优势，能够更好地满足企业对现代化数仓架构的需求。通过加强技术创新，Databend 可以为曾经依赖 Greenplum 的用户，提供更符合新兴技术趋势的数仓产品。

2. **拥抱云计算和对象存储**

Greenplum 在传统的数据仓库市场有其积累，但其在云原生方面并不占据优势。Databend 在设计时便充分考虑了云计算和对象存储的应用场景，具备云原生的弹性扩展、按需付费和自动化运维等特性，能够更好地与云计算基础设施集成，适应现代企业对大规模、实时数据分析的需求。

3. **开源生态的壮大**

在 Greenplum 关闭开源社区的同时，Databend 通过进一步扩大开源社区，吸引更多开发者、合作伙伴和用户参与进来，构建开放的生态体系。开源生态不仅是产品推广的重要渠道，也是推动技术快速迭代、满足多样化市场需求的有效途径。通过持续在开源社区中的投入，Databend 可以加速技术创新，吸引原本依赖 Greenplum 的用户群体。

## 从 Greenplum 到 Databend

万全网络科技有限公司是一家专注于 B 端电商物流供应链的公司，曾从 Greenplum 迁移到 Databend，我们可以从万全身上来观察从 Greenplum 到 Databend 的迁移流程以及对企业的具体影响。

万全网络致力于为客户提供全面的供应链解决方案，涵盖从产品采购到最终配送的全程服务。公司的服务包括但不限于：供应链管理，仓储与配送，信息技术支持。

### 迁移背景

![](/img/blog/sync/169ca50bafa90e3bdb63eeb8eebab6ea.jpeg)

万全网络在构建数据中台架构时，最初选择了 Greenplum 作为大数据应用层数据库，此平台不仅支持数据的采集、清洗、加工，还涵盖了数据对外提供服务的完整链路。数据计算同步和计算引擎都是基于 Spark 构建的，确保了平台的稳定性和高效性。在过去的几年中，它主要使用 Greenplum 作为大数据应用层数据库，该数据库主要用于支撑万全的业务线报表、大屏展示、帆软报表、SFA 运营报表等应用。然而，随着业务的发展，Greenplum 在响应时间、存储效率、物化视图导致的 IO 压力等方面逐渐暴露出局限性。

### Greenplum 使用中的挑战

**响应时间延长：**用户反馈高峰时期报表响应时间过长。

**存储与性能局限：**CRUD 操作限制选择行存储堆表，尽管其事务吞吐能力可与 MySQL 媲美，但在存储效率低、不适合 OLAP 场景、高 IO 开销等方面存在缺陷。

**物化视图 导致的 IO 压力：**物化视图 1-5 分钟一次的高频刷新导致大量磁盘 IO 操作，使得服务器的 iowait 指标常年高达 60%，导致查询延迟。

**资源分配挑战：**尽管通过资源队列减少了用户间资源竞争，但存算混部的特性限制了对磁盘资源的精确控制，导致整体性能提升有限。

**MVCC 机制的存储成本：**频繁更新的行由于 MVCC 机制而存储多个副本，增加存储空间需求，提高存储成本，影响查询性能。为了保持数据库的查询性能稳定，需要定期运行维护任务，通常是根据更新频率间隔几个小时执行一次 VACUUM 操作，但是通常 VACUUM 只会对增量部分数据进行快照合并，无法完全释放表空间膨胀，还需要在每个月选择一天进行分批对表执行 full VACUUM 操作，以维持表查询性能稳定。在当前硬件资源有限的条件下，即便是进行节点扩容，也并不会带来更多的收益，而且还需要对数据进行重新分布，从收益和成本上都不是最佳选择。

万全网络期望一个既有数据湖特性、又能够高效查询的数据库，而 Databend 刚好契合需求。 **在迁移中，万全网络选择了 Databend，经过一系列的规划、准备、兼容性评估等工作，成功将业务从 Greenplum 迁移到 Databend。** 这次迁移不仅减少了资源占用，提升了性能，也为未来的业务发展提供了更强大的支持。

### 规划和准备

万全网络在迁移过程中坚持了复用现有资源、优化现有数据架构、降低维护成本和提升架构伸缩性等原则。通过这些原则，万全网络成功将业务从 Greenplum 迁移到 Databend，不仅减少了资源占用，提升了性能，也为其未来的业务发展提供了更强大的支持。

### 准备工作

一开始，万全网络也是抱着“试一试”的态度试用 Databend。但在经过实际测试和应用后，Databend 的表现远超预期，其性能并不逊色于传统的存算混合架构。这不仅证实了万全网络选择的正确性，而且凸显了 Databend 在大数据存储领域的出色性能。

特别值得一提的是，Databend 的读写分离机制。这一机制与云原生概念紧密相连，同时符合当前数据湖发展的趋势。通过实现读写分离，万全网络成功提高了读取性能的同时降低了写入的压力。

在使用 Greenplum 时，尽管万全网络实施了资源分组和队列限制策略，但这些措施并未能有效解决资源争抢问题。为了更有效地应对此挑战，万全网络决定充分发挥 Databend 的多租户特性，将不同业务线的流量进行分割，确保每个业务线都能享有更优越的性能体验。此外，多租户机制还提供了更为灵活的权限管理方式。

**增效**

将 Databend 数据库部署在 Kubernetes（k8s）上，采用云原生的部署方式。这一战略选择为万全网络的系统带来了显著优势，特别是在动态扩缩容方面。利用 Kubernetes 的高级特性，有效缓解了流量高峰期的压力，同时降低了系统维护成本。

在数据仓库开发方面，万全网络通过降低表间依赖，显著提高了数据维护的效率。此外还实现了数据载入层的平滑迁移，优化了离线 T+1 数据的导入流程。值得注意的是，在实时数据处理上，万全网络从实时数据导入切换为微批次导入，虽然牺牲了部分时效性，但导入性能却得到了数倍的提升，极大地增强了开发团队的工作效率。

**优化**

在数据库迁移过程中，万全网络不仅迁移了数据库，还对原有数据架构进行了深入优化。一个关键的优化是解决了之前在 Greenplum 中使用大量视图和物化视图构建准实时报表所带来的问题。

在 Greenplum 系统中，万全网络依赖视图和物化视图来构建准实时报表，这在表结构变化时导致了维护的复杂性和服务中断。 **而在 Databend 迁移后，利用其作为数据湖的能力，保存多个数据版本，采用 insert overwrite 方法配合调度平台，实现了数据的高可用性和稳定访问。** 这一策略不仅打破了物化视图间的依赖关系，还使万全网络能够灵活应对表结构变更，最小化对用户的影响。

这种优化策略极大提高了万全网络对外服务的稳定性和连续性，同时降低了维护的复杂性。新架构的灵活性能够更有效地应对数据变更，进一步增强了系统的可维护性和可扩展性。

### 迁移过程

在当前快速发展的数据管理领域，有效的数据库迁移策略对保持技术先进性和业务竞争力至关重要。

在迁移的初期，万全网络明确了四项核心原则：复用现有资源、优化现有数据架构、降低维护成本，以及提升架构伸缩性。这些原则确保迁移策略既高效又可控。

经过详细的需求分析和目标设定，万全网络对 Databend 进行了深入评估，包括性能测试和压力测试，以确保其适应性和稳定性。这一阶段的成功为后续的迁移提供了坚实的基础。

**数据库架构优化**

新一代云原生数仓 Databend 采用了存算分离的设计理念，提高了系统的灵活性、扩展性，并优化了多租户环境下的读写分离策略，大大提升了性能、安全性和稳定性。

**迁移过程的集成与优化**

在数据同步方面，万全网络采用了 Flink 和 Spark 处理引擎，以应对实时与离线数据同步的需求。万全网络优化了数据同步的流程和稳定性，并调整了任务调度策略，提高了数据同步的效率和稳定性。

**查询优化和性能提升**

万全网络重点优化了查询条件，采用了计算落地策略和 query cache 功能，以应对大量数据查询和数据倾斜问题。这些措施显著提升了查询性能和响应时间。

**测试与回退策略**

在测试阶段，万全网络采用了分流策略，重点关注性能回归排查和优化，确保系统的稳定性和可靠性。万全网络还制定了灵活的回退策略，以应对可能出现的系统性能问题。

**迁移中的挑战与解决方案**

在迁移过程中，万全网络面临并克服了多个技术挑战，包括系统表查询优化、查询节点内存问题、存储错误和 nginx 代理问题等。

**迁移成果与指标**

迁移完成后，万全网络在多个方面取得了显著成果：

- **查询性能**：提升显著，用户可以更快速地获取数据；

- **数据导入/导出速度**：销等方面存在缺陷。显著提高，支持更高效的数据更新；

- **存 储效率**：优化后的系统在存储资源利用上更加高效；

- **用户体验**：由于性能的提升，用户体验得到了显著改善；

- **成本效益**：维护时间成本降低，系统资源利用率提升。

![](/img/blog/sync/e63e932a950c654e6a516f7e5c78364c.jpeg)

## 总结

万全网络的迁移过程包括了数据库架构优化、迁移过程的集成与优化、查询优化和性能提升、测试与回退策略以及迁移中的挑战与解决方案。迁移完成后，万全网络在查询性能、数据导入/导出速度、存储效率、用户体验和成本效益等方面取得了显著成果。

万全网络团队在 4 个月中，成功完成了整个业务系统的迁移工作，涵盖了 4 个业务线，共计近 500 张表和 600 个任务的迁移任务。万全网络的案例表明，Greenplum 的闭源虽然带来了挑战，但也为 Databend 等新兴数仓供应商提供了机遇。通过成功的迁移，万全网络不仅提升了技术，也加强了团队协作，为未来的业务发展奠定了坚实的基础。

Greenplum 的闭源为数据仓库领域带来了变革契机。尽管其历史积淀和技术成熟度为行业树立了标杆，但在云计算和大数据时代，开源、云原生和实时分析的需求日益强烈。数据仓库供应商，如 Databend，能够凭借其灵活的架构和技术优势，帮助用户完成架构演进。
