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协议,并由华为自主研发的分布式存储系统作为底层支撑。它采用主动架构。与传统开源架构相比,不需要备份数据库进行数据同步,节省了用户成本。最关键的一点是,GaussDB(for MySQL)采用了亚马逊Aurora首先推出的日志即数据架构。这种架构的优点是优化了MySQL事务提交路径,从而显着提升了整个事务提交的性能。
首先我们来看看我们在性能方面做了哪些工作。总体而言,云原生数据库在性能方面领先于传统架构。我们通过实际测试发现,在写入性能方面,我们的性能比开源架构高出七倍。这主要归功于我们的架构设计。
我们采用存储计算分离架构。不同厂家的设计会有所不同,但我们的设计与亚马逊的Aurora比较相似。可以说华为的架构最接近亚马逊。我们采用log-as-data架构,即当整个事务写入时,我们会直接进行REDO磁盘放置,即事务提交,不需要从计算节点将脏页刷新到磁盘,这大大降低了网络负载和整个交易提交成本。因此,我们的写入性能比开源架构和不使用该架构的厂商都更高。
本次活动我们主要讨论MySQL x ClickHouse。在TPCH方面,我们也做了很多优化工作,开发了并行查询技术,从而实现了性能上的较大提升。
让我们看一下我们所做的一些性能优化。
就并行查询而言,我们TPCH的22条SQL的总性能提升目前可以达到26倍。华为在并行查询方面所做的一些工作与其他供应商略有不同。
对于云原生数据库的几个主要竞争对手,比如Aurora,在并行查询方面,是通过将算子下推到存储引擎来实现的。 Amazon 不在 SQL 引擎级别执行并行操作。主要是充分利用其分布式存储来提高性能。与国内其他竞争对手一样,他们主要在SQL引擎层面进行并行操作。
其实我们做了两方面的工作。一方面,我们在 SQL 引擎级别实现并行操作,如上一页所述。另一方面,我们还实现了NDP算子下推,充分发挥分布式存储的性能,充分利用底层存储资源。我们对复杂的运算符、过滤器、投影、谓词(包括比较操作)等进行了下推优化。我们还下推了快速列和虚拟列。因此,在复杂的询价方面,我们称之为“两轮驱动”,这也是我们与其他供应商不同的地方。接下来我们看看实际表现。
这是在TPCH场景下启用NDP的性能。开启后,最高的场景就是计算网络的开销。当开源MySQL执行大型复杂查询时,我们需要将数据从磁盘传输到计算层进行计算,这会造成大量的网络开销。然而,通过算子下推技术,当TPCH处理多个SQL时,我们看到网络开销。最高储蓄率超过90倍。性能方面,我们测试了NDP+PQ场景,技术标签为NDPQ。性能最高可提升30倍以上。
关于可访问性,我们的 DFV 支持跨可用区的功能。目前,华为云上海、北京、广州、贵阳、乌兰察布等国内重点区域均支持3AZ部署。未来,3AZ部署也将成为华为云GaussDB(for MySQL)的默认架构。今年我们开通的节点包括香港、曼谷、拉美、中东等地区。在欧洲,我们与德国电信、法国电信合作,推动GaussDB(for MySQL)的全球化。我们的跨AZ能力可以实现RPO=0,保证数据的高可靠性。
在可扩展性方面,我们知道在云端使用MySQL数据库更适合互联网业务,尤其是互联网、游戏和电商的用户。当然,现在越来越多的政企客户开始上云,我们也自动扩展了节点,以满足不同类型客户的需求。目前我个人觉得云的发展有一个非常重要的趋势,其中最重要的趋势之一就是HTAP。此外,Serverless也是一个重要趋势。我们可以看到,去年亚马逊 Invent 大会上的一项重要公告是所有数据库都开始实现无服务器化。
在云上,除非技术实力特别强,否则用户最担心的问题就是成本。因此,我们提供了类似Serverless的服务,支持按需自动弹性扩展。这是我们推出的早期原型,包括自动弹性扩展周期和按需模型。由于采用存储计算分离架构,灵活添加节点的过程非常快,一般只需五到十分钟即可完成。因此,它比传统的MySQL要快得多。随着传统MySQL数据量的不断增加,变更规格、添加节点需要非常长的时间。
关于备份,我们的存储采用基于AppendOnly模式的DFV存储。我们实现了二级快照,这是我们自己开发的快照系统。我们计算了一下,只需要三十、四十分钟就可以完成大约1TB数据的备份和恢复。
我们还将在今年年底推出回溯功能。该功能是基于多个版本中的保存功能。用户可以在选定的时间范围内向前或向后执行回溯操作。我们可以在5分钟内查看1TB数据级别的回溯时间。
看数据库代理服务,目前我们支持用户按需购买服务。默认情况下,我们不提供代理服务。如果用户有需求,可以按需购买读写分离服务,无需改变业务即可自动实现读写分离。
今年我们对读写分离做了很多优化,包括基于负载均衡模式的支持。我们还支持用户根据业务特点选择最终一致性、会话一致性、全局一致性三种一致性级别。
我们的代理服务支持只读模式和读写模式。如果用户需要分析业务和事务业务之间物理隔离,可以选择只读模式。只读模式下,代理服务会为用户创建不同的只读节点,实现分析业务和交易业务的物理隔离。
接下来我们介绍一下我们的HTAP只读分析节点。这是我们在 HTAP 领域向前迈出的一步。正如我之前提到的,我们使用并行查询和运算符下推等技术来进行复杂查询。然而,这些还不足以满足所有用户的需求,因为这两种技术本质上仍然对相同的数据进行操作,即它们仍然在整个系统内部。
因为大家都知道,当你制作TPCH这样的场景时,整个资源的消耗是不可控的。分析型业务可以影响交易型业务。为了解决这个问题,我们开发了一个只读分析节点,它是基于ClickHouse实现的。通过CDC模式,我们可以将用户交易数据从GaussDB(for MySQL)同步到ClickHouse。正如之前嘉宾介绍的,我们也采用了基于binlog的解决方案。
我们目前还处于公测阶段,主要服务华为内部终端用户,比如华为手机、腕带、运动健康业务。其中一些业务分析操作已迁移到我们的只读分析节点。
关于索引的并行创建,我们都知道MySQL社区版在创建索引时是单线程操作,无法实现多线程。如果你想创建一个大的索引,那么将会非常耗时。为了解决这个问题,我们开发了多线程索引创建功能。多线程专为从存储读取数据、排序和创建索引等操作而设计。经测试,该功能相比开源版MySQL,性能可提升六到七倍。
在我们后续产品的开发中,Serverless将会是一个非常关键的方向。我们计划今年上半年(5、6月)对Serverless进行公测,下半年正式商用。在Serverless领域,我们已经探索了很多。目前业界最优秀的Serverless产品是亚马逊的Serverless V2。尽管亚马逊最初推出的Serverless V1吸引了很多关注,但它仍然存在一定的局限性,比如扩展的粒度和速度可能并不理想。但随着Serverless V2的推出,其伸缩粒度可以达到0.5 ACU,端到端传感器速度仅需十秒。因此,当时Amazon Serverless V2可以说引领了整个云原生数据库Serverless的发展趋势。
我们在技术上也做了很多创新。其中,我们实现了一个快速且弹性的缓冲池,并在内核级别对其进行了加速。通过这项技术,我们可以做到毫秒级,这样在内部环境测试时,端到端的操作可以在十秒左右(也许更快,大约八秒左右)完成。
我们还探索了一些技术,例如ALT应用程序透明迁移。在Serverless领域,跨机器操作是一个关键点。在单机上我们可以比较容易的实现弹性伸缩,但是在云端我们需要考虑如何跨多台物理机进行操作,如何扩展资源池的规模。问题是资源池水位可能比较高,在扩张过程中可能会出现资源不足的情况。目前我们要跨机器操作,所以保证稳定性和不间断迁移就显得尤为重要。我们实现了ALT应用透明迁移技术,通过事务状态维护等方式实现无缝迁移。
在Serverless领域,我们实现了按需付费的存储。计算层计划于今年5月或6月推出,无服务器代理层预计于今年年底推出。
最后让我们来看看我们的一些案例。其中,第一种子用户是国内一家规模较大的保险公司。他之前用的是Oracle,但是因为本地化的需要,需要去O,所以他们选择了我们的服务。由于我们的服务可以部署在公有云上,所以我们通过一些专家服务和相关工具对公司的业务进行了评估,并将其迁移到GaussDB(for MySQL)上。迁移完成后,公司TCO降低了50%。
我们还有一个案例是华为终端。整个业务范围非常大,涵盖了华为所有的手机业务、汽车业务和应用商店。案件数量可以达到非常大的规模。此前,由于线下自建数据库存在诸多痛点,他们需要庞大的DBA团队来维护。通常面临可用性和操作问题,以及发生转换时潜在的数据丢失。
迁移到GaussDB(for MySQL)后,他们面临的数据丢失等问题不再存在。此外,我们还在继续开发和扩展自动弹性伸缩等功能。这可降低用户成本约 40%。同时,他们之前使用商业分析数据库软件,逐渐开始使用我们的HTAP分析只读节点,进一步降低了总体成本。
好了,今天就分享这么多,谢谢大家。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。