数据库系列之简要对比下GaussDB和OpenGauss数据库
GaussDB作为一款企业级的数据库产品,和开源数据库OpenGauss之间又是什么样的关系,刚开始接触的时候是一头雾水,因此本文简要对比下二者的区别,以加深了解。
1、GaussDB和OpenGauss数据库简要对比
GaussDB是华为基于PostgreSQL数据库内核创新研发的企业级分布式关系型数据库,支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。最早GaussDB的定位是云数据库产品集合,包括关系型和非关系型数据库,产品矩阵如下:

可以看到GaussDB数据库包括:关系型的GaussDB(for openGauss)、GaussDB(for MySQL)和GaussDB(for PostgreSQL);非关系型的GaussDB(for Cassandra)、GaussDB(for Mongo)、GaussDB(for Redis)和GaussDB(for Influx)。不过从最新官网看到GaussDB数据库的划分,又聚焦于关系型数据库,从中可以看出从内部对GaussDB的产品定位上也有不同的理解。现在是定位更加清晰,云数据库GaussDB是应用于金融、电信和政企等关键核心系统的分布式数据库,尤其特指关系型的GaussDB(for openGauss)。

1.1 OpenGauss和PostgreSQL关系
GaussDB的内核引擎最早是基于PostgreSQL 9.2版本不断演进,根据PG-XC架构衍生了多CN架构,并开发了分布式执行框架和向量化引擎等重要特性。

OpenGauss作为GaussDB数据库的开源主备版本,和PostgreSQL相比,在底层架构和数据存储方面类似,但OpenGauss在性能和扩展性方面进行了优化。主要在以下方面:
- 执行模型:OpenGauss优化了线程池模型,满足高并发的访问需求
- NUMA改造:OpenGauss支持信创服务器的Numa适配,提升服务器的性能
- 存储引擎优化:OpenGauss支持列存和内存引擎,满足HTAP类业务场景需求
- 优化器优化:结合实际的应用场景支持CBO对复杂查询场景的优化能力

对比PostgreSQL可以看到,OpenGauss对数据库引擎的性能和架构做了适配性改造,更符合国产化的需求,以满足信创环境下大规模和复杂的数据处理请求。
1.2 GaussDB和OpenGauss不同之处
GaussDB数据库作为企业级的分布式数据库,支持分布式和主备的部署场景,其中分布式版本包含CN(计算节点)、DN(数据存储节点)和GTM(分布式事务管理器)等节点类型。GaussDB数据库的分布式版本是基于share-nothing架构实现的,通过GTM-Lite技术实现事务强一致,消除了无中心节点性能的瓶颈。而OpenGauss简单来说就是GaussDB(for OpenGauss)的一个开源版本,支持主备部署形态。
1.2.1 组件类型
GaussDB数据库作为分布式架构数据库,在数据库组件上相比OpenGauss数据库多了协调节点(Coordinator Node)和全局事务管理器(Global Transaction Manager),如下图所示。

- OM(Operation Manager):运维管理模块提供数据库日常运维、配置管理的管理接口、工具等
- CM(Cluster Manager):数据库管理模块管理和监控数据库系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。CM提供数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。
- GTM(Global Transaction Manager):全局事务管理器负责生成和维护全局事务ID、事务快照、时间戳和sequence等全局唯一的信息。
- CN(Coordinator Node):协调节点负责接收来自应用的访问请求,并向客户端返回执行结果;负责对SQL请求解析,并将请求路由到不同的DN分片上执行。
- DN(Data Node):数据节点负责存储业务数据、执行数据查询任务以及向CN或客户端返回执行结果
- ETCD:分布式键值存储系统,用于共享配置和服务发现
- CMS(cm_server):进行数据库实例管理和实例仲裁的组件。主要功能包括:1)接收各个节点上cm_agent发送的数据库各实例状态;2)提供数据库实例整体状态的查询功能;3)监控实例的状态变化并进行仲裁命令的下发
- Storage:服务器的本地存储,用于数据持久化,支持集中式存储
对比GaussDB和OpenGauss,OpenGauss由于是主备部署形态,不需要分布式架构下的CN和GTM节点,因此在数据库组件上有以下不同:

1.2.2 部署架构

GaussDB和OpenGauss数据库部署架构如图所示,GaussDB在数据库部署组件中多了CN协调节点和GTM全局事务节点。另外,GaussDB数据库在分布式SQL执行的时候,通过CN节点将SQL请求下发到不同的DN节点执行,然后汇总结果到CN节点再返回给客户端,而在OpenGauss中客户端直接从DN层获取数据并返回。

1.2.3 GaussDB和OpenGauss差异对比
前文对比了GaussDB和OpenGauss数据库在组件和架构上的不同,下面总结下二者之间的差异:
- 开发背景和社区支持:OpenGauss是由华为公司发起的一个开源项目,具有活跃的社区支持和贡献者。GaussDB则是华为公司在OpenGauss的基础上进行商业化扩展和增强后的产品,提供企业级的支持和服务。
- 功能特性:OpenGauss作为开源产品,其功能相对基础,适合大多数通用场景,并且可以根据需求进行定制和扩展。GaussDB在OpenGauss的基础上增加了更多的高级特性和优化,包括但不限于性能优化、安全性增强、可靠性提升等,以满足企业级应用的更高要求。
- 技术支持和维护:OpenGauss作为一个开源项目,通常依赖于社区的支持和贡献来解决技术问题和提供更新。GaussDB作为商业产品,由华为公司提供专业的技术支持和维护服务,包括技术支持热线、定期更新和补丁等。
- 适用场景:OpenGauss适用于对成本敏感、需要灵活性和可控性的场景,如中小型企业、教育机构或个人开发者。GaussDB更适合对数据安全、性能稳定性和服务质量有较高要求的企业级应用场景,特别是大型企业和关键业务系统。
- 部署架构:OpenGauss支持主备部署架构,满足高可用要求;GaussDB支持主备和分布式部署形态,高可用架构上支持多中心部署,满足金融级别的高可用要求。
- 扩展能力:OpenGauss集中式部署受限于单台服务器的处理能力,无法横向扩容;GaussDB支持分布式部署架构,具备横向扩展能力,满足高并发高性能的场景。
- 信创生态支持:OpenGauss和GaussDB支持全栈信创能力,和国产CPU、国产操作系统和中间件有很好的生态兼容。

1.3 总结
本文简要对比了GaussDB和OpenGauss数据库,二者作为优秀的国产数据库虽然在发展路线和应用场景上会有所不同,但在国产化基础软件信创改造的过程中都发挥了重要的作用。GaussDB作为企业级的分布式数据库,在金融、电信等关键行业应用广泛,而OpenGauss作为开源版本,更像MySQL或PostgreSQL数据库一样的开源生态,吸引更多的国产数据库爱好者参与共建、开发和优化。
参考资料:
- https://support.huaweicloud.com/gaussdb/index.html
- https://docs.opengauss.org/zh/docs/latest/docs
- https://blog.csdn.net/HCIS_HENGCHI/article/details/133774888
相关文章:
数据库系列之简要对比下GaussDB和OpenGauss数据库
GaussDB作为一款企业级的数据库产品,和开源数据库OpenGauss之间又是什么样的关系,刚开始接触的时候是一头雾水,因此本文简要对比下二者的区别,以加深了解。 1、GaussDB和OpenGauss数据库简要对比 GaussDB是华为基于PostgreSQL数据…...
FFmpeg的AVInputFormat
文章目录 结构体定义操作函数支持的AVOutputFormat 通过上面的分析,基本可以看到ffmpeg的套路了,首先一个context上下文,上下文里面一个priv_data 指针,然后再插件结构体中有一个priv_data_size,然后回调函数。 结构体…...
SQL命令---删除字段
介绍 使用sql语句删除表字段。 命令 alter table 表名 drop 字段名;例子 删除a表中的name字段。 alter table a drop name;下面是执行删除后的表结构:...
深入探讨 Python 中的装饰器和上下文管理器
Python 作为一门灵活而强大的语言,提供了许多高级特性,其中装饰器(Decorators)和上下文管理器(Context Managers)是其中两个非常有用的概念。这两个功能性特性提供了对代码结构和行为进行修改和控制的强大工…...
比whatsapp效果好---Google Messages RCS协议消息推送
这段时间由于使用谷歌手机Pixel 7 ( Android13)研究改机room,看了很多相关的资料,测试研究了谷歌生态很多软件功能。结果就是改机Room还没编译成功,反而是测试出Google Messages群发功能的bug,算是一个惊喜…...
HBuilder X
选择一款编程软件有以下几个好处: (1)提高效率:编程软件通常强调代码编辑和自动完成,可以帮助程序员更快速、更准确地输入代码。 (2)降低错误率:编程软件还可以检测代码中的错误&a…...
异地现场工控设备,如何实现远程配置、调试?
南京某企业专注于工业物联领域,在相关项目中往往会在各个点位部署基于Linux系统的中控主机,实现各类物联设备信息的采集、汇总。但是,由于各点位分散多地,且数量达到了上百个,虽然中控主机具备4G物联网接入能力&#x…...
C++报错:error C2238: 意外的标记位于“;”之前
报错信息如下: 编译遇见这样的错误信息主要有一下几种: 情况一: 多数情况下出现这种问题的原因是因为头文件重复包含:即头文件A包含了B,头文件B又包含了A,导致编译器在加载头文件时陷入死循环。 解决办法…...
五、Microsoft群集服务(MSCS)环境的搭建
一、【目的】 学会利用Windows Server布置群集环境。 二、【设备】 FreeNAS11.2,Windows Server 2019 三、【要求】 学会利用Windows Server布置群集环境,掌握处理问题的能力。 配置表: 节点公网IP(public)内网IP(private)群集IP(clust…...
通义千问 Qwen-72B-Chat在PAI-DSW的微调推理实践
01 引言 通义千问-72B(Qwen-72B)是阿里云研发的通义千问大模型系列的720亿参数规模模型。Qwen-72B的预训练数据类型多样、覆盖广泛,包括大量网络文本、专业书籍、代码等。Qwen-72B-Chat是在Qwen-72B的基础上,使用对齐机制打造的…...
web应用体系以及windows网络常见操作应用
本课程目标 1.Dos命令(必须掌握) 2.网络体系(笔试选择填空题) 3.搭建windows测试环境 一、Dos命令 1.DOS窗口启动 启动方式1.进入DOS页面:win+R,键入cmd 启动方式2.开始-运行--输入cmd-回车,此时将出现一个显示命令提示符的窗口,如下图 2、常见的Dos命令: 1、cd…...
FFmpeg 安装配置
FFmpeg 安装配置 依赖包 sudo apt-get install -y autoconf automake bzip2 cmake freetype-devel gcc gcc-c git libtool make mercurial pkgconfig zlib-devel x264-develsudo apt-get install yasm -y安装 wget https://ffmpeg.org/releases/ffmpeg-4.2.3.tar.bz2tar -…...
14:00面试,14:08就出来了,问的问题有点变态。。。。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
vue3 添加编辑页使用 cron 表达式生成
示例效果图 1、添加组件 <template><div class"v3c"><ul class"v3c-tab"><li class"v3c-tab-item" :class"{ v3c-active: tabActive 1 }" click"onHandleTab(1)">秒</li><li class&qu…...
洛谷P1722 矩阵Ⅱ——卡特兰数
传送门: P1722 矩阵 II - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1722 用不需要除任何数的公式来求。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<cmath> #includ…...
Unity | Shader基础知识(第六集:语法<如何加入外部颜色资源>)
目录 一、本节介绍 1 上集回顾 2 本节介绍 二、语法结构 1 复习 2 理论知识 3 Shader里声明的写法 4 Properties和SubShader毕竟不是一家人 三、 片元着色器中使用资源 四、代码实现 五、全部代码 六、下集介绍 相关阅读 Unity - Manual: Writing Surface Shaders…...
使用opencv的Laplacian算子实现图像边缘检测
1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题,也是经典的技术难题之一。如何快速、精确地提取图像边缘信息,一直是国内外的研究热点,同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…...
5. PyTorch——数据处理模块
1.数据加载 在PyTorch中,数据加载可通过自定义的数据集对象。数据集对象被抽象为Dataset类,实现自定义的数据集需要继承Dataset,并实现两个Python魔法方法: __getitem__:返回一条数据,或一个样本。obj[in…...
Android 移动端编译 cityhash动态库
最近做项目, 硬件端 需要 用 cityhash 编译一个 动态库 提供给移动端使用,l 记录一下 编译过程 city .cpp // // Created by Administrator on 2023/12/12. // // Copyright (c) 2011 Google, Inc. // // Permission is hereby granted, free of charg…...
IO流学习
IO流:存储和读取数据的解决方案 import java.io.FileOutputStream; import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//1.创建对象//写出 输入流 OutputStream//本地文件fileFileOutputStream fos new FileOutputS…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
