【云驻共创】GaussDB(for MySQL) 关键特性发布和技术解读
1. 前言
2022年3月22日,华为云数据库高级产品经理佳恩老师以视频的方式介绍了GaussDB(for MySQL)关键特性以及解读了其技术特性。GaussDB(for MySQL)是华为自研的最新一代高性能企业级分布式关系型数据库,完全兼容MySQL。基于华为最新一代DFV分布式存储,采用计算存储分离架构,最高支持128TB的海量存储,可实现超百万级QPS吞吐,支持跨AZ部署,既拥有商业数据库的性能和可靠性,又具备开源数据库的灵活性。佳恩老师分别从如下方面介绍分享主题:
● GaussDB(for MySQL)架构和关键技术
● GaussDB(for MySQL)HTAP功能发布解读
● 答疑&QA
2. GaussDB(for MySQL)架构和关键技术
GaussDB是一个存储与计算分离架构,其底层采用DFV分布式存储,最高支持单并发写入和15个并发读取。在产品相关特性方面,主要有以下几个内容。
首先是集中可视化管理,GaussDB(for MySQL)可直接通过可视化界面创建、删除、扩容数据库以及进行多租户权限控制;其提供的迁移、备份、高可用、监控和告警能力更是给数据库管理员提供了便捷的运维能力;当然,界面化的日志能力也是必不可少的,其同时提供了慢日志、错误日志以及相关的优化建议。
其次是100%兼容开源MySQL生态。如果用户原来是使用MySQL的话,是可以无缝迁移到GaussDB上的。所有MySQL生态相关的IDE、工具以及BI都是完全可用的,而且由于其语法的兼容性,所以对于企业来说,是不需要额外培养相关人才的,不需要额外的人才投入。
最后是其强大的性能。GaussDB(for MySQL)的性能是开源MySQL的7倍,支持150W纯读QPS以及40W纯写QPS;在扩展性方面,其支持15只读副本、128TB存储,分别是开源版本的5倍和64倍;在高可靠性方面,其支持跨AZ存储,做到数据0丢失;在高可用方面,其RTO小于10秒,可实现单点存储故障不中断业务,故障对用户无感知;除此之外,GaussDB(for MySQL)支持华为统一存储底座DFV在鲲鹏架构、自研内核以及华为网络的加持下,可实现全栈优化。
2.1. 支持并行查询以大幅提升负载查询效率,TPCH模型最高提升26倍
GaussDB(for MySQL)对于数据查询能力,其首先将表数据切分为多个数据块,然后启动多个worker线程,每个worker线程负责一部分数据处理,最后再由leader线程协调worker的工作过程,收集worker的查询结果以及做进一步的操作。由下图可见,针对TPCH模型,GaussDB(for MySQL)最高可以达到26倍的性能提升。
2.2. NDP计算下推架构和支持场景
在一般的计算与存储分离架构中,存储数据首先需要加载到计算节点进行计算,很明显该过程会耗费大量的带宽资源。而GaussDB(for MySQL)针对上述问题,实现了计算下推的能力,可将算子下推到存储节点,从而减少带宽流量以及加速计算处理。目前,支持如下图所示场景的NDP算子下推。
上述内容讲述了GaussDB(for MySQL)并行查询和算子下推各自的功能特性,而在将二者结合的情况下实现了1+1大于2,在TPCH场景中最高可减少90倍网络流量和提升30倍的性能。
3. GaussDB(for MySQL)HTAP功能发布解读
HTAP为Hybrid transaction/analytical processing的简称,最早由Gartner在2014年提出。根据Gartner的说法,混合事务/分析处理 (HTAP) 是一种新兴的应用程序架构,它“打破”事务处理和分析之间的壁垒。 它可以实现更智能和“业务实时”的决策。
3.1. 我们为什么要HTAP数据库
随着各个行业数字化转型节奏加快,实时准确的商业和行政决策对市场竞争和政府执行效率的提示越来越重要。下述列出了针对物流、金融、公共交通以及大企业的场景案例。
以公共交通为例,公交公司可针对乘客的刷卡信息实时分析客流的拥挤情况,进而对公交调度提供智能化解决方案,从而提高乘客的出行效率。而在供应链场景中,传统的供应链各环节存在脱节的情况,使得数据无法进行实时流转,进而影响公司的运营分析。针对传统供应链提出的实时供应链解决方案则可以将各环节进行串联,实时分析数据流转情况,进而提高公司运营水平。
3.2. 传统TP&AP模型存在实时性不够的问题
在传统的ETL流程中,首先会将数据写入OLAP数据库或者Kafka等消息队列中,然后再写到数据仓库中,此过程往往是一个周期性的操作,无法保证其实时性。除此之外,传统的ETL过程也是较为繁琐的,由于设计较多技术栈,其学习成本、维护成本以及整合成本都较高。
而HTAP数据库由于其天然的低延迟特性,在大量并发更新的情况下可保证数据的快速流转。而且由于可将不同种类的数据都存于HTAP数据库,也可以避免传统解决方案中数据抽取、转换、装在等繁琐步骤带来的额外开销。
3.3. HTAP只读分析节点基于ClickHouse提供混合负载能力
针对GaussDB(for MySQL)还推出了基于ClickHouse二次开发的只读分析节点,用户在创建只读节点之后,即可通过binlog的方式将数据同步到只读节点。GaussDB(for MySQL)只读分析节点具有如下特点:
● HTAP制度分析节点当前支持单节点的列存储能力
● 提供单独的链接地址
● 提供事务一致性读和MVCC
● 支持实时大量的insert、delete和update
● 最大性能是MySQL的800倍
● 支持数据压缩能力
● 支持HDFS引擎
● 支持机器学习
● 复杂查询性能百倍优化
下文详细描述了GaussDB(for MySQL)HTAP针对ClickHouse的升级改造。
3.4. GaussDB(for MySQL)HTAP支持全量并行复制
由于ClickHouse本身的局限,其数据同步的全量复制过程是单线程的,在大数据量场景下存在较高延迟的情况。那么针对上述问题,GaussDB(for MySQL)HTAP只读分析能力使用并行化处理的方式优化全量复制,由下图可知优化后的复制性能平均提高了8-10倍。
3.5. GaussDB(for MySQL)HTAP只读分析兼容性和稳定性
相比于原生MySQL,ClickHouse仍未支持部分实际应用场景中有可能出现的数据类型,例如BIT、TIME和YEAR等。因此,GaussDB(for MySQL)HTAP只读分析引擎针对上述问题进行了适配,解决部分用户的刚要需求。
由于MaterializeMySQL引擎当前只支持含有Primary Key的表同步,而在现实生产环境中,可能存在没有Priamry Key,有Unique Key的情况。因此,GaussDB(for MySQL)HTAP只读分析引擎对仅含有Unique Key(NOT NULL)的表进行单独处理,使用Unique Key进行分区。
在全量复制和增量复制方面,GaussDB(for MySQL)HTAP只读分析引擎也做了重复中断重连优化。在全量复制中,针对MaterializeMySQL引擎设计了重连,当中断发生时清理现场并在一定时间间隔内重连。在增量复制中,重新建立连接后会根据全局GTID找到最新的同步点开始同步。
GaussDB(for MySQL)HTAP只读分析引擎同时还具有完美的异常处理机制,为所有并行线程维护独立的异常处理信息和堆栈,让用户更容易发现潜在问题的根源。
3.6. GaussDB(for MySQL)HTAP只读分析个性化定制
提供Show Slave Status支持,通过该指令只管获取MaterializeMySQL引擎同步的数据库状态
ClickHouse的分区策略是优先考虑日期,否则会选择类型长度较小的字段做哈希处理进行分区。而为了尽可能支持MySQL的分区策略,GaussDB(for MySQL)HTAP只读分析引擎还支持了Range分区策略。
除此之外,GaussDB(for MySQL)HTAP只读分析引擎还为MaterializeMySQL引擎增加了Override功能,用户可以覆盖指定表的列并添加新列,具体如下图所示。
在某些实际应用场景中,可能不需要复制所有的表,或者说某些表并不支持复制操作,那么为了避免由于上述原因造成的问题,可通过配置黑/白名单的方式有选择地复制,具体如下图所示:
3.7. 为什么选择GaussDB(for MySQL)HTAP只读分析引擎
1. 其具备与传统ETL(T+1)方案不同的高时效性,提供秒级数据同步方案。
2. 支持列式存储形式,该存储形式天然支持数据压缩。在同等条件下其极致的压缩比能够为用户节约大量存储成本。
3. 在某些场景下更适合于历史数据存储,具有比MySQL中存档历史数据更低的成本。
4. 支持存储分层,提供ESSD+EVS+OBS分层存储方案,用户可根据数据的热、温、冷特性分别存储在不同介质中,进一步降低成本。
4. 答疑&QA
1. 冷热数据分离什么时候提供功能?预计年中提供。
2. HTAP的库最大支持多少数据量?128TB
3. 将多个GaussDB实例同步到一个HTAP数据?支持,有命令行,服务化可在年中支持。
4. GaussDB实例同步到HTAP数据库延迟多大?毫秒级,和业务场景还有一些关系。
5. 总结
在本次演讲中,佳恩老师从GaussDB(for MySQL)的技术架构和关键特性入手,分析了其并行查询和算子下推带来的极致性能优化,二者结合的情况下实现了1+1大于2,在TPCH场景中最高可减少90倍网络流量和提升30倍的性能。进而介绍了GaussDB(for MySQL)HTAP只读分析引擎,分析了为什么我们需要HTAP数据库以及GaussDB(for MySQL)HTAP只读分析引擎所具备的能力,其构建与ClickHouse之上,并在查询性能、功能特性进行了大量优化已解决用户场景下的刚性需求。
6. 参考资料
本文整理自华为云社区【内容共创】活动第15期。
- 点赞
- 收藏
- 关注作者
评论(0)