GaussDB(for MySQL)云原生数据库技术演进和挑战

news2024/11/28 2:54:53

摘要:GaussDB(for MySQL)是华为自研云原生数据库,具有高性能,高扩展,高可靠的特点,完全兼容MySQL协议,自研架构和友好的生态兼容性,可以同时满足数据库管理员、应用开发者、CTO的运维、使用和业务发展需求,本次主要介绍GaussDB(for MySQL)在云原生技术方向上遇到的挑战和未来的发展演进路径。

在2023云数据库技术沙龙 “MySQL x ClickHouse”  专场上,华为云数据库高级产品经理周家恩,为大家分享一下《GaussDB(for MySQL)云原生数据库技术演进和挑战》的一些技术内容。

周家恩,华为云数据库高级产品经理,10年以上数据库技术运维,产品管理经验,先后在多家TOP云厂商任职产品经理,熟悉MySQL,SQL Server等多款数据库管理,维护以及商业运营工作,现任华为云数据库高级产品经理,负责原生数据库GaussDB(for MySQL)产品管理和设计,运营工作。 

 本文内容根据演讲录音以及PPT整理而成。

大家好,先让我自我介绍一下。目前我在华云数据库团队担任数据库产品经理,主要负责MySQL领域的产品规划。今天我带来的主题是《GaussDB(for MySQL)云原生技术的演进和挑战》。

让我们先来看一下华为数据库的发展历程。可能在许多人的眼中,华为是以硬件起家的公司。但实际上,华为数据库的发展已经开始了十几年,起步非常早。在云这块的话有几个阶段,我们主要分成两条线:开源和云原生数据库。

开源方面,我们涉及到的是RDS和MySQL。而对于云托管,我们早在2014年15年左右就开始了内部业务的使用。此外,我们还推出了云原生数据库,其中包括云原生MySQL。亚马逊在2014年推出后,很多云厂商都不断地在借鉴和学习。在2018年和2019年,我们发布了第一个商用版本。

在我们看来,云原生数据库与存储的可用性、可靠性和性能密切相关。华为的企业级存储在中国市场拥有非常不错的市场占有率,因此我们将云原生数据库与华为的企业级存储紧密融合。随着架构和技术的不断演进,我们在2019年推出的商用版本,这就是我们华为数据库发展的历程。

让我们来了解一下GaussDB(for MySQL)的系统架构。GaussDB(for MySQL)是一款基于存算分离架构的云原生数据库,完全兼容MySQL协议,并由华为自主研发的分布式存储系统作为底层支撑。它采用active架构,相比传统开源架构,不需要备库进行数据同步,从而节省了用户的成本。最关键的一点是,GaussDB(for MySQL)采用日志即数据架构,这一架构最早由亚马逊的Aurora推出。该架构的优势在于优化了MySQL事务提交路径,从而显著提升了整个事务提交的性能。

让我们先来了解一下我们在性能方面做了哪些工作。通常来说,云原生数据库在性能方面领先于传统架构。我们经过实测发现,在写入性能方面,我们的性能是开源架构的七倍。这主要归功于我们的架构设计。

我们采用了存算分离架构,不同厂商的设计会有所不同,但我们的设计与亚马逊的Aurora比较相似,可以说华为的架构与亚马逊最接近。我们采用了日志即数据架构,即在整个事务写入时,我们会直接进行REDO落盘即事务提交,不需要再从计算节点刷脏页到磁盘,从而大幅减少了整个事务提交的网络负载和开销。因此,我们的写入性能比开源架构和没有采用这种架构的厂商都要高。

本次活动中我们主要讨论MySQL x ClickHouse,在TPCH领域,我们也做了很多优化工作,并开发了并行查询技术,从而在性能方面取得了很大的提升。

下面看一下我们在性能这块做了一些优化。

就并行查询而言,目前我们在TPCH的22个SQL中的整体性能提升可以达到26倍。华为在并行查询方面所做的一些工作与其他厂商也稍有不同。

就目前在云原生数据库领域比较大的几家友商来说,例如Aurora,在并行查询这个方面,它是通过将算子下推到存储引擎上来实现的。而亚马逊并不是在SQL引擎这一层面进行并行操作,它主要是充分利用了其分布式存储来提升性能。而像国内其他友商,则主要是在SQL引擎层面进行并行操作。

其实我们做了两个方面的工作。一方面,在SQL引擎层面,我们实现了并行操作,就像上一页所讲的那样。另一方面,我们还实现了NDP算子下推,充分利用了分布式存储的性能,将底层存储资源充分利用起来。我们对复杂的算子、Filter、Projection、谓词包括比较运算等进行了下推优化,同时也对快速列和虚拟列进行了下推。因此,在复杂查询方面,我们称之为“双轮驱动”,这也是我们与其他厂商不同的地方。接下来,看下实际的性能表现。

这个就是开启NDP在TPCH场景下的一个性能表现。开启以后,最高场景是可以就是计算到网络之间的开销。开源的MySQL在进行大的复杂查询时,我们需要将数据从磁盘传输到计算层进行计算,会有大量网络开销,而通过算子下推技术,TPCH处理多个SQL时,我们看到网络开销的最高节省率超过90倍。在性能方面,我们测试了NDP+PQ场景,该技术品牌被称为NDPQ。性能表现最高提升高达30倍以上。

在可用性方面,我们的DFV支持跨AZ能力。目前,华为云国内的主力region包括上海、北京、广州、贵阳、乌兰察布等都支持3AZ部署。未来,3AZ部署也将成为华为云GaussDB(for MySQL)的默认架构。今年我们正在开通的节点中,包括香港、曼谷以及拉美、中东等地区。在欧洲,我们与德国电信和法国电信合作,推动GaussDB(for MySQL)全球化进程。我们的跨AZ能力可以实现RPO=0,保证数据的高可靠性。

关于扩展性,我们知道在云上使用MySQL数据库,它更适合互联网业务,尤其是互联网、游戏和电商等用户。当然,现在政企客户也越来越多地上云,我们也为此做了节点的自动扩展,以满足更多不同类型客户的需求。目前,我个人觉得现在云有一个非常重要的的趋势发展,其中一个关键的趋势是HTAP。另外,Serverless也是一个重要的趋势。我们可以看到,像亚马逊去年的invent大会上最核心的发布之一,就是所有数据库开始向是Serverless化发展。

在云上除非技术实力特别强之外,用户最关注的问题就是成本。因此,我们提供了一种类似于Serverless的服务,支持按需自动弹性扩展。这是我们早期推出的一个雏形,其中包括自动弹性扩展周期和按需模式。由于采用了存算分离架构,加节点的弹性过程非常快速,一般只需要五到十分钟即可完成。因此,它的速度比传统的MySQL快得多。传统的MySQL在数据量不断增加时,进行规格变更和加节点所需的时间非常长。

在备份方面,我们的存储采用基于AppendOnly模式的DFV存储。我们实现了秒级快照,这是我们自己开发的快照系统。我们进行了测算,发现大约1TB的数据备份恢复只需要三四十分钟即可完成。

我们还将在今年年底推出backtrack功能,该功能基于存储的多版本特性,用户可以在选择的时间点范围内进行回溯操作,往前或往后。我们可以将1TB数据这个级别的回溯时间控制在五分钟以内。

再看数据库代理服务,我们目前支持用户按需购买服务。默认情况下,我们不提供代理服务。如果用户有需求,可以按需购买读写分离服务,无需对其业务进行任何改动即可自动实现读写分离。

我们今年对读写分离进行了大量的优化,其中包括基于负载均衡模式的支持,我们还根据业务特征,支持用户选择最终一致性、会话一致性和全局一致性三种一致性级别。

我们的代理服务支持只读模式和读写模式。如果用户需要在分析型业务和交易型业务之间进行物理隔离,可以选择只读模式。在只读模式下,代理服务会为用户创建不同的只读节点,从而实现对分析业务和交易业务的物理隔离。

接下来介绍我们的HTAP只读分析节点。这是我们在HTAP领域中不断推进的一步。正如我之前所述,我们在复杂查询方面采用了并行查询和算子下推等技术。然而这些还不足以满足所有用户的需求,因为这2个技术本质上仍在同一份数据上进行操作,也就是说还是在整个一套系统里面。

因为大家都知道,在做TPCH这样的场景时,对整个资源的消耗是不可控的。一个分析业务可能会影响到交易型业务。为了解决这个问题,我们开发了只读分析节点,它基于ClickHouse实现。通过CDC模式,我们可以将用户交易数据从GaussDB(for MySQL)同步到ClickHouse。正如之前的嘉宾所介绍的,我们也是采用了基于binlog的方案。

我们目前还处于公测阶段,主要服务于华为内部的终端消费者,例如华为手机、手环和运动健康等业务。这些业务的一部分分析业务已经迁移至我们的只读分析节点上。

关于并行创建索引,我们都知道社区版的MySQL在创建索引时是单线程操作,无法实现多线程。因此,如果要创建一个较大的索引,耗时会非常高。为了解决这个问题,我们开发了多线程的索引创建功能,多线程被设计用于从存储读取数据、排序以及创建索引等操作。经过测试,该功能相比于开源版本的MySQL,可以提升性能六到七倍。

在我们后续产品的演进中,Serverless将是一个非常关键的方向。我们计划在今年上半年(五六月份)进行Serverless的公测,下半年则会正式商用。在Serverless领域,我们已经做了很多探索。目前业内最为出色的Serverless产品是亚马逊的Serverless V2。虽然亚马逊在最初推出的Serverless V1已经引起了不少关注,但它仍存在某些局限性,例如扩缩的粒度和速度可能不够理想。但是随着Serverless V2的推出,它的扩缩粒度可以达到0.5 ACU,而且端到端的感知速度只需十秒钟。因此,当时的亚马逊Serverless V2可以说是引领了整个云原生数据库Serverless的发展趋势。

我们还在技术方面进行了很多创新。其中,我们实现了快速弹性的缓冲池(buffer pool),并在内核层面对其进行了加速。通过这一技术,我们可以实现毫秒级的扩展,从而在端到端的运行过程中,经过内部环境测试后,可在大约十秒钟内(甚至可能更快,大约八秒左右)完成。

我们还探索了一些技术,例如ALT应用透明迁移。在Serverless领域,跨机操作是一个关键点。在单机内,我们可以相对简单地实现弹性伸缩,但是在云上,我们需要考虑如何跨多台物理机运营,如何扩大资源池规模。这带来的问题是资源池水位可能会比较高,在扩展过程中可能会出现资源不足的情况,这时我们需要跨机操作,因此保证迁移的平稳性和不中断就显得尤为重要。我们实现了ALT应用透明迁移技术,通过事务状态保持等方式,实现了平稳迁移。

在Serverless领域,我们已经实现了按需付费的存储,计算层计划在今年五六月份推出,而Serverless代理层预计会在今年年底推出。

最后再看一下我们的几个案例,其中第一个种子用户是国内比较大的保险公司。他之前使用的是Oracle,但由于国产化的需求和去O的需求,他们选择了我们的服务。由于我们的服务可以部署在公有云上,我们通过一些专家服务和相关工具对该公司业务进行评估,并将其迁移到GaussDB(for MySQL)。迁移完成后,该公司的TCO降低了50%。

我们的另一个案例是华为终端。整个业务规模非常大,涵盖了华为整个手机业务、汽车业务以及应用商店等实例,实例数量可以达到非常大的规模。以前,由于线下的自建数据库存在许多痛点,他们有一个庞大的DBA团队来维护。经常面临可用性和运维相关的问题,以及如果发生切换,可能会面临数据丢失的情况。

迁移到GaussDB(for MySQL)后,他们面临的问题像数据丢失就已经不存在了。此外,我们不断演进,扩展了自动弹性伸缩等特性。让用户的成本降低了40%左右。同时,他们以前使用了商业的分析型数据库软件,也开始逐步使用我们的HTAP分析只读节点,这进一步降低了整体的成本。

好,那我今天分享就到这里,谢谢大家。

本次大会围绕“技术进化,让数据更智能”为主题,汇聚字节跳动、阿里云、玖章算术、华为云、腾讯云、百度的6位数据库领域专家,深入 MySQL x ClickHouse 的实践经验和技术趋势,结合企业级的真实场景落地案例,与广大技术爱好者一起交流分享。

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

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

相关文章

QT5.14.2下载安装与环境配置

1.QT5.14.2的下载 QT5.14.2的官方下载地址为 https://download.qt.io/archive/qt/5.14/5.14.2/ ![在这里插入图片描述](https://img-blog.csdnimg.cn/9ef2a92414cb48a482d3cde4dd19a9ac.png 由于exe文件名称只有x86,只能选择这个下载,但是在安装时可以选…

ChatGPT也能助力建筑设计,这么智能?

ChatGPT也称为 Generative Pre-trained Transformer,是一种强大的语言生成工具,具有生成类人文本的能力。这项技术有可能通过为建筑师提供与客户、承包商和其他利益相关者沟通和协作的新方式来彻底改变建筑行业。在这篇文章中,我们将探讨架构…

css学习-内容加载占位动画(渐变动画)

文章目录 学习链接纯CSS渐变动画结合vue指令简单使用 学习链接 Git Hub前端50天50个项目 | 第24 内容文本 纯CSS渐变动画 <style lang"scss" scoped> .card-wrapper {width: 100%;height: 100%;display: flex;align-items: center;justify-content: center; …

tinymce富文本编辑器使用到二开

tinymce tinymce 一款现代化的富文本编辑器&#xff0c;有专门团队维护&#xff0c;是目前主流的富文本编辑器选择。 安装注意事项&#xff1a; 有两种方案分别是安装对应的vue/react组件&#xff0c;然后直接用组件&#xff0c;或者直接使用tinymce去按原生操作会报找不到文…

HTML- 标签学习之- 列表、表格

无序列表/有序列表&#xff1a; 标签组成( 无序ul 有序 ol ) -> li 父子级标签&#xff0c; ul只能包含li标签&#xff0c; li标签可以包含任意内容。 自定义列表 dl :自定义列表的整体&#xff0c;用于包裹dt/dd 标签dt:自定义列表主题dd:自定义列表的针对主题的…

【VMware】VM安装虚拟机

文章目录 VMware教程创建新的虚拟机自定义安装选择稍后安装操作系统这里选择Linux操作系统&#xff0c;版本为Centos7 64位选择名称和安装位置选择处理器、内核数量&#xff08;可根据电脑硬件以及需求进行调整&#xff09;选择2G内存&#xff08;可根据电脑硬件以及需求进行调…

计算机视觉 day94 DDH - YOLOv5:基于双IoU感知解耦头改进的YOLOv5,用于对象检测

DDH - YOLOv5:基于双IoU感知解耦头改进的YOLOv5&#xff0c;用于对象检测 I. IntroductionII. Related workPrediction head 预测头 III. Methodology3.1 Decoupled Head3.2 Double IoU‑aware3.3 Training3.4 Inference IV. Experiments4.1 与YOLOv5等检测头对PASCAL VOC2007测…

Netty实战(五)

ByteBuf—Netty的数据容器 一、什么是ByteBuf二、 ByteBuf 的 API三、ByteBuf 类——Netty 的数据容器3.1 ByteBuf如何工作&#xff1f;3.2 ByteBuf 的使用模式3.2.1 堆缓冲区3.2.2 直接缓冲区3.2.3 复合缓冲区 四、字节级操作4.1 随机访问索引4.2 顺序访问索引4.3 可丢弃字节4…

使用Docker部署Jenkins

Jenkins是一款开源的持续集成&#xff08;DI&#xff09;工具&#xff0c;广泛用于项目开发&#xff0c;能提供自动构建&#xff0c;测试&#xff0c;部署等功能。 文章目录 1、安装2、配置镜像加速3、登录初始化Jenkins4、配置Jenkins 1、安装 接下来使用Docker部署Jenkins&a…

【腾讯云 Finops Crane集训营】关于Crane的认识和体验总结

一、Crane 是什么 Crane 是一个基于 FinOps 的云资源分析与成本优化平台。它的愿景是在保证客户应用运行质量的前提下实现极致的降本。Crane 是 FinOps 基金会认证的云优化方案。 Crane基于Docker和Kubernetes技术&#xff0c;支持常见的容器化应用场景&#xff0c;如部署多个…

分布式项目 09.服务器之间的通信和三个工具类

项目的结构&#xff1a;1.通过Nginx首先把访问首页的请求发送到前端web服务器&#xff0c;2.web服务器会根据请求的url中的一些细节&#xff0c;来把相关的请求发送到相关的服务器中&#xff0c;3.相关的服务器会处理业务&#xff0c;并且返回结果到web服务器中&#xff0c;最后…

Godot引擎 4.0 文档 - 循序渐进教程 - 节点和场景

本文为Google Translate英译中结果&#xff0c;DrGraph在此基础上加了一些校正。英文原版页面&#xff1a; Nodes and Scenes — Godot Engine (stable) documentation in English 节点和场景 在Godot 关键概念概述中&#xff0c;我们看到 Godot 游戏是一棵场景树&#xff0…

算法训练-二分查找

这里写目录标题 34. 在排序数组中查找元素的第一个和最后一个位置162. 寻找峰值153. 寻找旋转排序数组中的最小值33. 搜索旋转排序数组 34. 在排序数组中查找元素的第一个和最后一个位置 题目链接 vector<int> searchRange(vector<int>& nums, int target) {i…

集合 集合

目录 ArraryList 引用基本类型 案例1&#xff1a;定义一个集合添加学生姓名年龄 案例2&#xff1a;查看是否存在这个id 案例3&#xff1a;手机 案例4&#xff1a;学生管理系统&#xff08;不完整&#xff09; Collection collection遍历方式 迭代遍历&#xff08;不依赖…

深度学习用于医学预后-第二课第四周13-15节-使用生存数的非线性风险评估模型

使用生存数的非线性风险评估模型 在这堂课中&#xff0c;你将学习关于生存树的知识。你将学习如何将患者的变量纳入考虑&#xff0c;比较不同患者的风险。 你将看到生存树与二叉决策树相似&#xff0c;可以让你构建模型来捕捉患者数据中的非线性关系。 在这堂课中&#xff0…

分布式运用之rsync远程同步

1.rsync的相关知识 1.1 rsync简介 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09;是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录树&#xff0c;支持增量备份&#xff0c;并保持链接和权限&#xff0c;且采用优化的同步算法&#…

怎么使用树莓派总要了解一点它的软硬件吧。什么模块有什么用,需要什么准备才能安全的看到树莓派的开机界面

Raspberry Pi(中文名为“树莓派”,简写为 RPi&#xff0c;(或者 RasPi / RPI)只有信用卡大小的微型电脑&#xff0c;其系统基于 Linux。随着 Windows 10 IoT 的发布&#xff0c;我们也将可以用上运行 Windows IoT 的树莓派。别看其外表“娇小”&#xff0c;内“心”却很强大&am…

Doxygen 源码分析: SymbolMap类

2023-05-21 10:59:35 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. Doxygen 版本2. SymbolMap 类概要3. 添加符号: SymbolMap<T>::add()4. 删除符号: SymbolMap<T>::remove()5. 符号查找: SymbolMap<T>::find()6. 哪里用了…

1.golang的介绍、环境安装和编译器安装

一、Go的介绍 Go语言其实是Golanguage的简称&#xff0c;Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译并发型语言。Go 语言语法与 C 相近&#xff0c;但功能上有&#xff1a;内存安全…

Doxygen 源码分析: Definition类

2023-05-21 13:05:28 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz Blog https://blog.csdn.net/baiyu33 文章目录 1. Doxygen 版本2. Definition 类和它的8个子类3. Definition 类的 Private 成员4. Definition 类的 Public 成员4.1 特殊成员函数4.2 获…