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

GaussDB的数种形态

GaussDB作为一种新兴的关系型数据库产品,似乎有点让人摸不着头脑。有朋友问我GaussDB单机版怎么样,有人说GaussDB是分布式数据库,还有人说它是云数据库,还有人会把GaussDB和华为的数据仓库GaussDB DWS混为一谈。确实,公开的GaussDB的资料对这些问题没有明确的说法,并且GaussDB作为数据库独立商业销售不足一年,大家对这个产品的了解不多,众说纷纭就不足为奇了。今天我们来聊聊GaussDB的数种形态,当然这里的GaussDB和华为的GaussDB DWS不是一码事。   

从大类来看,GaussDB分为云数据库GaussDB和轻量化部署形态GaussDB两种,云数据库是华为云上的GaussDB,华为数据库产品这些年还处于发展期,前期的命名和版本号都比较乱,云数据库GaussDB是现在的叫法,以前还曾经被称为GaussDB for openGauss,因为华为云上的RDS都被统称为GaussDB,这种命名方法实际上很不利与GaussDB的品牌推广。很容易让大家把GaussDB与GaussDB for MySQL,GaussDB for Postgresql等基于开源数据库的云上RDS混淆了。       

除了云数据库和轻量化部署形态这两大类以外,每个大类里,GaussDB还分为分布式和主备版这两种类型。这两种类型在部署架构和使用、运维方面还是有很大的差别的。      

不管哪种部署架构,其RDBMS的核心是统一的,这个核心与openGauss也是有渊源的,大部分的核心代码是共有的。这种特性让使用GaussDB的多种形态以及openGauss的用户可以共享部分运维经验。不过集中式数据库与分布式数据库之间的天然鸿沟让这些形态的数据库之间的运维经验共享变得有些困难。熟悉openGauss的DBA想要去运维GaussDB分布式数据库,还是有大量的知识需要去学习。

云数据库的GaussDB版本需要依赖于DBS平台以及华为云的基础能力,其部署架构是十分复杂的。其安装部署十分复杂,其运维操作也只能依赖于DBS平台的能力。实际上上图只是包含了部署GaussDB的平台环境,并没有包含GaussDB本身。如果加上GaussDB数据库,这张图就会复杂得没法看了。所以只能用这张补充的图来进一步说明。

从轻量化部署形态的数据库架构图上,我们可以把GaussDB看得更为清晰一些。对于主备结构的GaussDB,其轻量化部署形态如下图。

DN是数据库节点,每个DN是一个独立的数据库实例。OM是GaussDB的运维管理模块,提供各种运维工具。ETCD是一个小型的分布式键值数据库,用于服务发现与共享配置信息的存储。在整个GaussDB集群运行中起到十分重要的作用。GaussDB主备版的高可用切换、消息发布、分布式锁、分布式队列、集群健康状态监控、Leader选举等方面都需要ETCD参与。CM是华为的集群管理组件,由CM AGENT、CM SERVER、CM Monitor组成。主备版是GaussDB分布式数据库的一个简化版。一般采用三节点部署模式,一主二从,通过数据库复制保持主从库的数据同步。平时只有主节点对外提供读写服务,一旦主节点故障自动选举出新的主节点,完成数据同步后接管业务。

GaussDB的分布式模式稍微复杂一些,DN作为存储节点,是分布式分区部署的。业务应用哪个不直接连接到DN上,而时连接到计算节点CN上。GTM作为全局事务管理器负责处理分布式事务。为了保证高可用,GTM采用主从结构,一主一备,主节点故障时备节点接管。因为GaussDB的GTM使用了GTM-LITE,因此主备切换的效率还是不错的,不会对生产业务产生太大的影响。

         

除此之外,GaussDB数据库要想在用户侧很好的使用,还有数个组件是必不可少的,其中一个是DRS,通过DRS可以完成从其他数据库向GaussDB数据复制的工作。

实际上哪怕是GaussDB的轻量化部署形态,所涉及的组件还是挺复杂的,安装部署、启停数据库等操作还是有些复杂。我想随着GaussDB数据库产品的升级,GaussDB的系统化工作会进一步深入,当年Oracle也走过这样一个过程,我第一次安装Oracle数据库的时候,创建一个表空间都需要先用OS命令touch一个文件,然后才能把这个文件加入到表空间里。现在国产数据库的各种复杂让刚刚用惯了Oracle的用户感受到了各种不便,也会有各种吐槽。我想国产数据库的开发者应该擅长倾听这些吐槽,并有义务让这种不便尽快变成方便。

本文作者:白鳝的洞穴    

     

相关文章:

  • 谷粒商城实战(033 业务-秒杀功能4-高并发问题解决方案sentinel 1)
  • idea如何使用git reset进行回退以及如何使用git stash将暂存区文件储藏,打包后重新恢复暂存区文件
  • 【EBS】通过SQL查找所有的定时请求
  • 【HarmonyOS】逻辑类中调用通用弹窗的处理
  • 旅游卡免费旅游的使用条件有哪些?
  • Python自动化测试框架:unittest与pytest的深度对比
  • Android ServiceManager和它的兄弟们
  • 来自中国信通院的认可!上海斯歌受邀加入“EP-Link 智能流程推进计划”
  • MongoDB UPDATE使用$setOnInsert为新插入数据设置默认值
  • 6.7.32 用于计算机辅助检测和诊断研究的精选乳房 X 线摄影数据集
  • 12. Django 第三方功能应用
  • 私有云数据库特征
  • AdroitFisherman模块测试日志(2024/6/10)
  • 动态内存管理学不懂,小代老师带你深入理解动态内存管理(下卷)
  • 堆和栈(heap and stack)
  • Akka系列(七):Actor持久化之Akka persistence
  • Android优雅地处理按钮重复点击
  • django开发-定时任务的使用
  • ES6 ...操作符
  • GraphQL学习过程应该是这样的
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java IO学习笔记一
  • java取消线程实例
  • java中的hashCode
  • PHP那些事儿
  • python_bomb----数据类型总结
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 从setTimeout-setInterval看JS线程
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 入口文件开始,分析Vue源码实现
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 智能合约Solidity教程-事件和日志(一)
  • 如何在招聘中考核.NET架构师
  • ​低代码平台的核心价值与优势
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (007)XHTML文档之标题——h1~h6
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (安卓)跳转应用市场APP详情页的方式
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十一)图像的罗伯特梯度锐化
  • (五)网络优化与超参数选择--九五小庞
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • ***详解账号泄露:全球约1亿用户已泄露
  • .htaccess配置重写url引擎
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .Net程序帮助文档制作