摘要: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 的实践经验和技术趋势,联合企业级的实在场景落地案例,与宽广技术爱好者一起交换分享。