当前位置: 首页 > news >正文

数据库系列之简要对比下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数据库在组件和架构上的不同,下面总结下二者之间的差异:

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

在这里插入图片描述

1.3 总结

本文简要对比了GaussDB和OpenGauss数据库,二者作为优秀的国产数据库虽然在发展路线和应用场景上会有所不同,但在国产化基础软件信创改造的过程中都发挥了重要的作用。GaussDB作为企业级的分布式数据库,在金融、电信等关键行业应用广泛,而OpenGauss作为开源版本,更像MySQL或PostgreSQL数据库一样的开源生态,吸引更多的国产数据库爱好者参与共建、开发和优化。


参考资料:

  1. https://support.huaweicloud.com/gaussdb/index.html
  2. https://docs.opengauss.org/zh/docs/latest/docs
  3. 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 矩阵Ⅱ——卡特兰数

传送门&#xff1a; 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 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题&#xff0c;也是经典的技术难题之一。如何快速、精确地提取图像边缘信息&#xff0c;一直是国内外的研究热点&#xff0c;同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…...

5. PyTorch——数据处理模块

1.数据加载 在PyTorch中&#xff0c;数据加载可通过自定义的数据集对象。数据集对象被抽象为Dataset类&#xff0c;实现自定义的数据集需要继承Dataset&#xff0c;并实现两个Python魔法方法&#xff1a; __getitem__&#xff1a;返回一条数据&#xff0c;或一个样本。obj[in…...

Android 移动端编译 cityhash动态库

最近做项目&#xff0c; 硬件端 需要 用 cityhash 编译一个 动态库 提供给移动端使用&#xff0c;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…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点

中科院1区顶刊|IF14&#xff1a;多组学MR联合单细胞时空分析&#xff0c;锁定心血管代谢疾病的免疫治疗新靶点 当下&#xff0c;免疫与代谢性疾病的关联研究已成为生命科学领域的前沿热点。随着研究的深入&#xff0c;我们愈发清晰地认识到免疫系统与代谢系统之间存在着极为复…...

今日行情明日机会——20250609

上证指数放量上涨&#xff0c;接近3400点&#xff0c;个股涨多跌少。 深证放量上涨&#xff0c;但有个小上影线&#xff0c;相对上证走势更弱。 2025年6月9日涨停股主要行业方向分析&#xff08;基于最新图片数据&#xff09; 1. 医药&#xff08;11家涨停&#xff09; 代表标…...

spring中的@KafkaListener 注解详解

KafkaListener 是 Spring Kafka 提供的一个核心注解&#xff0c;用于标记一个方法作为 Kafka 消息的消费者。下面是对该注解的详细解析&#xff1a; 基本用法 KafkaListener(topics "myTopic", groupId "myGroup") public void listen(String message)…...