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

news2024/9/20 20:02:24

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

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

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

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

替代方案

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

  1. 技术创新驱动

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

  1. 拥抱云计算和 对象存储

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

  1. 开源生态的壮大

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

从 Greenplum 到 Databend

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

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

迁移背景

万全网络在构建数据中台架构时,最初选择了 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 代理问题等。

迁移成果与指标

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

  • 查询性能: 提升显著,用户可以更快速地获取数据;
  • 数据导入/导出速度: 销等方面存在缺陷。 显著提高,支持更高效的数据更新;
  • 存 储效率: 优化后的系统在存储资源利用上更加高效;
  • 用户体验: 由于性能的提升,用户体验得到了显著改善;
  • 成本效益: 维护时间成本降低,系统资源利用率提升 。

总结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2123532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0910作业+思维导图

一、作业(实现一个闹钟) 1、代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//调整标签页大小this->resize(800,400);//lab:显示系统时间…

VS2010程序打包为可执行安装程序

说明 记录一下下次再用时省点事儿,直接进入正题吧 步骤 1. 首先把该装好的软件装好,然后创建一个 安装项目 , 如下图 2. 右键 应用程序文件夹 的 添加 , 如下图可添加要打包的文件(和文件夹,文件夹需要添加文件夹),一般是已经编…

SpringBoot 整合WebSocket 简单实战案例

先是pom.xml添加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>PS&#xff1a;application.properties不需要添加任何配置 &#xff0c…

元学习之模型诊断元学习(model-agnosticmeta-learning,MAML)

模型诊断元学习&#xff08;model-agnosticmeta-learning&#xff0c;MAML&#xff09;&#xff0c; 另一个是Reptile。这两个算法都是在 2017 年提出来的&#xff0c;而且都是基于梯度下降法进行优化 的。那我们最常用的学习算法是梯度下降&#xff0c;在梯度下降中&#xff0…

基于VUE的在线音乐播放管理系统

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于VUE的在线音乐播放管理系统3是前后端分离项目&#xff0c;拥有两种角色 管理员&#xff1a;用户管理、收藏管理、歌手管理、歌曲管理、歌单管理、评论管理等 用户&#xff1a;登录注…

解锁生活密码,AI答案之书解决复杂难题

本文由 ChatMoney团队出品 介绍说明 “答案之书智能体”是您贴心的智慧伙伴&#xff0c;随时准备为您解答生活中的种种困惑。无论您在工作中遭遇瓶颈&#xff0c;还是在情感世界里迷失方向&#xff0c;亦或是对个人成长感到迷茫&#xff0c;它都能倾听您的心声&#xff0c;并给…

Vscode python无法转到函数定义

今天上午换了电脑&#xff0c;使用Vscode发现找不到对应的函数定义了。 使用了网上的全部教程。一点用没有。重启电脑&#xff0c;重启Vscode也没有作用。最后通过重装vscode&#xff0c;解决问题。&#xff08;也不知道Vscode什么毛病&#xff09; 重点语句&#xff1a; 去官网…

四款免费视频剪辑工具使用感受与优劣势总结

在如今这个视频内容如火如荼的时代&#xff0c;如何快速高效地完成视频剪辑成为许多人关心的问题&#xff1b;今天&#xff0c;我们就来轻松愉快地聊一聊本人常用的四款免费的视频剪辑工具&#xff1b;这四款工具各有千秋&#xff0c;让我们一起来看看它们的使用感受和优劣势吧…

Java代码审计篇 | ofcms系统审计思路讲解 - 篇3 | 文件上传漏洞审计

文章目录 0. 前言1. 文件上传代码审计【有1处】1.1 可疑点1【无漏洞】1.1.1 直接搜索upload关键字1.1.2 选择第一个&#xff0c;点进去分析一下1.1.3 分析this.getFile()方法1.1.4 分析new MultipartRequest(request, uploadPath)1.1.5 分析isSafeFile()方法1.1.6 分析request.…

连锁管理系统如何兼批发和零售 连锁收银系统如何配合做好财务

在现代零售环境中&#xff0c;信息化管理系统对连锁企业的运营至关重要。连锁管理系统通过先进的信息技术解决了批发和零售中的众多挑战&#xff0c;同时为财务管理提供了有力支持。商淘云分享如何提高连锁企业的运营效率和财务管理水平&#xff0c;大家点赞收藏。 1、统筹批发…

算法知识点————背包问题

万能头文件#include<bits/stdc.h> 01 背包 定义&#xff1a; 物品只能用1次。01对应选还是不选第i个物品 .N个物品、V容量的最大价值。 思路&#xff1a; &#xff08;1&#xff09;f[ i ] [j] 表示前i个物品容量j的最大价值。 &#xff08;2&#xff09;当前背包容量…

在WPF中使用矢量图标

使用SVG/Path WPF支持绘图&#xff0c;在WPF中定义了一些基本图形&#xff0c;如Line、Rectangle、Ellipse、Path等 其中Path支持使用路径来进行绘图&#xff0c;所以大部分的图标可以通过Path来进行绘制。 因为本文主要是介绍矢量图标&#xff0c;所以不对绘图进行详细介绍…

opencv之图像梯度

图像梯度 图像梯度计算的是图像变化的速度。对于图像的边缘部分&#xff0c;其灰度值变化较大&#xff0c;梯度值也较大&#xff1b;相反&#xff0c;对于图像中比较平滑的部分&#xff0c;其灰度值变化较小&#xff0c;相应的梯度值也较小。一般情况下&#xff0c;图像梯度计…

重命名工具 | Advanced Renamer v4.03 绿色版

Advanced Renamer 是一款专为 Windows 平台设计的强大文件批量重命名工具。它提供了多种重命名方法&#xff0c;包括指定新文件名、改变大小写、移动字符、移除字符串、重编文件名序号、替换字符、添加内容、使用列表或列表文件替换文件名、交换字符位置、去除头部或尾部多余空…

百度Apollo打通与ROS的通信,扩展自动驾驶系统生态

技术文档&#xff5c;打通与ROS的通信&#xff0c;扩展自动驾驶系统生态_Apollo开发者社区 (baidu.com)

-顺序表-

一、小概述 二、代码解析 下面利用顺序表实现增删改查的功能&#xff1a; //动态顺序表 #include <iostream> using namespace std; typedef int SLDataType;//适用于多种类型 typedef struct SeqList {SLDataType* a;//数组int size;//表示数组中存储了多少个元素int …

【车载开发系列】ParaSoft单元测试环境配置(一)

【车载开发系列】ParaSoft单元测试环境配置(一) ParaSoft单元测试环境配置 【车载开发系列】ParaSoft单元测试环境配置(一)一. 什么是bdf文件二. bdf文件构成三. 新规做成bdf文件四. 导入bdf文件创建测试工程五. 获取编译器信息六. 新增自定义编译器Step1:打开向导Step2:…

Xcode 16 RC (16A242) 发布下载,正式版下周公布

Xcode 16 RC (16A242) - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接&#xff1a;https://sysin.org/blog/apple-xcode-16/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Xcode 16 的新功…

【拓扑系列】拓扑排序

【拓扑系列】拓扑排序 前言认识有向无环图认识AOV网&#xff1a;顶点活动图拓扑排序 1. 课程表1.1 题目来源1.2 题目描述1.3 题目解析 2. 课程表 II2.1 题目来源2.2 题目描述2.3 题目解析 3. LCR 114. 火星词典3.1 题目来源3.2 题目描述3.3 题目解析 前言 认识有向无环图 图中…

AI基础 L13 Constraint Satisfaction Problems I约束满足问题

Defining Constraint Satisfaction Problems A constraint satisfaction problem (CSP) consists of three components, X, D, and C: • X is a set of variables, {X1, . . . , Xn}. • D is a set of domains, {D1, . . . , Dn}, one for each variable • C is a set of co…