写点什么

分布式数据库技术的演进和发展方向

  • 2024-03-26
    广东
  • 本文字数:5590 字

    阅读完需:约 18 分钟

分布式数据库技术的演进和发展方向


这些年大家都在谈分布式数据库,各大企业也纷纷开始做数据库的分布式改造。那么,所谓的分布式数据库到底是什么?采用什么架构?优势在哪?为什么越来越多企业选择它?分布式数据库技术会向什么方向发展?带着这些疑问,一探究竟吧!参与文末的话题互动,更有机会赢取精美奖品~

分布式数据库的架构演进


随着数据量的爆发增长,传统集中式数据库面临极大的挑战:


  • 性能瓶颈:数据规模爆发增长,传统集中式数据库难以维持数据量大时的性能,而分布式数据库的性能可以水平扩展;

  • 缺失混合负载能力:数据量爆发增长带来对数据分析(OLAP)需求的增长。企业需要使用两套系统分别支撑事务交易(OLTP)和数据分析(OLAP),不仅造成了大量的数据冗余,同时增加了系统的复杂度和运维难度。而分布式数据库的混合负载能力可大幅度提升分析的时效性,减少数据冗余,并大大提高灵活性;

  • 高昂成本:集中式数据库水平扩展难,可靠性需要付出高昂的成本。而分布式数据库的架构支持灵活扩展,实现高可用方案的成本较低。


分布式数据库与单机数据库的不同在于其可以将核心功能扩展到多台节点,甚至多个地域,包括事务管理、数据存储和数据查询等。从实现方式上看,分布式数据库主要有 3 种不同的技术路线:


1. 分布式中间件 + 单机数据库


这条路线本质上是分布式系统由两部分组成:


a) 上层是分布式中间件:维护一套统一的分片规则,提供 SQL 解析,请求转发和结果合并的能力。


b) 底层单机数据库:开源 MySQL 或 PG 单机数据库,提供数据存储和执行能力。


这种方式主要使用比较成熟的内核来解决扩展性的问题,所以生态友好、成本较低,也比较容易实现。


不过,缺点也显而易见。比如功能降级、在全局事务能力和高可用等方面存在短板,需要有针对性增强,导致整个方案的复杂度高、机器冗余多。最重要的是,因为使用的是开源产品的内核,数据库会始终受制于开源代码修改、专利、发行方式等很多方面的风险,这种形式显然无法满足当前国内金融、政企客户的需求。



2. 基于分布式存储的分布式数据库。


这种形态基于分布式存储,再叠加数据库能力。大部分公有云数据库采用这条技术路线。华为云 GaussDB(for MySQL)就是这种形态的典型代表。



这条路线有限地解决了扩展性问题,数据一致性主要依赖分布式存储引擎。上层的计算节点无状态,共享存储提供跨节点读写。这种架构充分利用分布式存储提供的高级特性,更容易形成技术竞争力。但是这种架构的扩展性有限,尤其是写节点。


另外,这种架构对底座(分布式存储)有比较重的依赖,线下实现的成本高。


3. 原生分布式数据库。


这种形态是基于分布式数据库理论实现的分布式数据库。这条路线是根据分布式一致性协议做底层设计。原生分布式数据库将分布式存储、事务和计算结合在一起,数据由系统自动打散并存储多个副本,通过一致性协议保证多个副本和事务的一致性。



这种形态更容易在数据库本身所擅长的领域发挥优势,比如说性能、复杂 SQL 处理能力、企业级能力。集群的扩展和收缩对应用透明,按需扩展,支持大规模部署限制;数据一致性由事务层一致性协议保护,安全性更高;灵活部署,多活架构,对硬件的依赖低,可以通过普通服务器实现集群和高可用。


因为金融政企客户在使用分布式技术之前,往往已经有分库分表、使用分布式中间件产品的经验,所以对原生分布式架构的认可度更高,学习成本也相对较低,因此,这种形态也是国内当前被采用较多的一种。


华为云 GaussDB 分布式数据库就是这种形态的典型代表。GaussDB 基于华为在数据库领域 20 多年的战略投入,已经在金融行业积累了非常丰富的实践经验,是企业数字化转型、核心数据上云、分布式改造的信赖之选。

原生分布式数据库的挑战和关键技术


原生分布式数据库基于分布式数据库理论,是一款对于用户应用透明的分布式数据库。不过,实现分布式关系数据库有几个关键挑战:


第一,安全可信。


分布式、云化环境的复杂性增加了安全风险,比如数据泄露和丢失的风险增加,身份认证和访问控制以及数据传输、存储安全的控制难度提升。


第二,事务系统的正确性及性能。


分布式数据库中经常有一次操作涉及多台数据库的场景,需要一种方案来维护整个数据库集群事务的 ACID 特性,避免出现部分成功部分失败等无法接受的情况。


另外,在大并发场景下事务管理器容易成为性能的单点瓶颈,比如获取事务唯一标识、全局快照、频繁交互导致大量的网络通信和锁等待等。


第三,分布式查询能力。


在分布式系统中,需要在最短时间内获取准确的查询结果,提升查询性能。


第四,高可用能力。


分布式数据库需要确保异常场景下(如:节点硬件故障或者 Bug 宕机等)数据库系统的连续可用。


分布式数据库的挑战和关键技术


GaussDB 分布式数据库研发了一系列高性能、高可用、安全特性迎接上述四大挑战,下面挑选几个有代表性的特性加以说明。

全密态


传统的加密方式在服务端加密,密钥管理员是可以获取的。而全密态数据库的密钥掌握在用户自己手上,数据库管理员无法获取,加解密过程仅在客户侧完成,数据在存储、传输、查询整个生命周期过程中均以密文形态存在,避免管理员恶意获取密钥解密数据。


全密态数据库

分布式事务 GTM-Lite


如下图所示,GaussDB 没有采用传统的事务列表的管理方式,而是提供了一个 CSN(提交系列号),通过对比 CSN 的大小来实现事务可见性判断。


GTM-Lite 技术示意


当事务开始时,根据事务隔离级别的不同,从 GTM-Lite 获取一个 CSN 值,作为这个事务的查询快照点(如果是可重复读,只需要在事务开始时获取一次 CSN 值,如果是读已提交,每次 SELECT 时都需要重新取一次 CSN 值)。


当事务提交时,向 GTM-Lite 申请一个新的 CSN 值,作为这个事务提交 CSN 值,并记录到事务提交记录中。


GTM-Lite 技术通过 CSN 提交序列号进行可见性判断,无需耗费大量计算资源来遍历列表;无锁化原子操作提供 CSN 序列号,无需锁等待;节点间事务交互仅需要一个 CSN,网络开销跟事务规模无关。在保证事务全局强一致的同时,提供高性能的事务处理能力,避免了单 GTM 的性能瓶颈。

分布式查询优化


1. 分布式执行


GaussDB 是如何处理分布式数据库集群中的业务应用 SQL 的呢?


1)业务应用的 SQL 会下发给 CN 节点;


2)CN 利用数据库的优化器生成分布式的执行计划,每个 DN 会按照执行计划的要求处理数据;


3)数据基于一致性 Hash 算法分布在每个 DN,因此 DN 在处理数据的过程中,可能需要从其他 DN 获取数据,GaussDB 提供三种 stream 流(广播流 broadcast、聚合流 gather 和重分布流 redistribute)实现数据在 DN 间的流动;


4)DN 将结果集返回给 CN 进行汇总;


5)CN 将汇总的结果返回给业务应用。


分布式查询示意


让我们展开看一下节点间的数据交换。比如某条 SQL 的执行逻辑如下图所示:


SQL 执行逻辑


以两个 DN 为例, 在执行过程中,DN 会按照 redistribute 键将数据发送到对应的节点。


Redistribute 算子接收到 C/D 两表 join 的数据之后,根据重分布键计算将数据发给 DN1 还是 DN2,Redistribute Collector 收集到重分布之后的数据之后发给上层的 Join 算子再做 Join 计算。


CN、DN 间的数据流动


另外,GaussDB 的优化器会根据统计信息选取针对当前 SQL 性能最优的 Stream 流算子完成 CN、DN 间的数据流动。


2. 全并行架构


GaussDB 采用全并行架构,从 MPP 节点并行、SMP 线程并行、到 SIMD 指令并行,到 LLVM CodeGen 技术,全面挖掘系统计算资源的潜力,提升查询性能。


高可用


1. GaussDB 重做日志


重做日志在如下场景可以发挥作用,提升系统的可用性


1)当数据库发生故障,如宕机,可以通过重做日志文件恢复数据。


2)HA 架构下,主备通过重做日志文件进行数据同步。


3)备份恢复时,通过归档重做日志文件实现 PITR。


GaussDB 使用 WAL (Write Ahead Log) 机制实现重做日志,在提升可用性的同时兼顾性能,即在数据修改时遵循 no-force-at-commit 策略,在提交时并不强制写。为了保证数据在数据库发生故障时可以恢复,通过 Redo 机制,用连续的、顺序的日志条目的写出将随机的、分散的数据块的写出推延,这个推延使得数据的写出可以获得批量效应的性能提升。


2. 分布式部署


GaussDB 支持多种高可用部署形态,保证系统的稳定性和可靠性。下面我们看两个典型案例。


1)两地三中心。


同城有两个双活数据中心,两个数据中心同时承载业务,异地一个容灾数据中心;同城可实现节点级、AZ 级、数据中心级等故障高可用,同时提供跨城的异地容灾能力。


GaussDB 两地三中心高可用部署


2)同城 3AZ 高可用+异地容灾。


同城采用逻辑 3AZ、3 副本部署,异地采用单 AZ、3 副本部署,提供了同城抵御节点级故障和 AZ 级故障的能力,跨城的 Region 级容灾的能力。


GaussDB 同城 3AZ 高可用+异地容灾

分布式数据库技术的发展方向


基于新需求、新场景、以及全池化架构、新网络和大模型等新技术的出现,我们认为分布式数据库技术主要向以下六个方向发展。


分布式数据库技术的发展方向

高可用能力的持续提升


高可用是目前大多数金融政企客户首要关注的问题,特别是对于多地、多中心容灾有要求的客户。针对这样的客户,华为云 GaussDB 已经提供了多种解决方案,如支持同城双活、异地容灾、两地三中心的解决方案,支持同城双活强同步的解决方案,支持异步数据复制、多地多活的高可用解决方案。


面向未来,分布式数据库将具备真正全球部署能力的多活架构。

软硬件深度协同


硬件和软件两者之间相辅相成,互相促进。利用新型硬件(GPU、FPGA、高速网络)和华为在芯片、服务器、存储、网络、操作系统、数据库的全栈软硬件能力,提升性能和高可用能力。


首先,数据库的持久化逻辑,深度整合到了计算与存储分离的技术底座中,分布式数据库可以获得在容量、弹性、扩展性方面的巨大提升,同时能提供给客户一致的体验。


其次,从计算节点卸载下推到存储中,特别是对一些复杂的查询处理,同时叠加并行处理能力,使得这些计算逻辑能充分利用下面整个存储池的能力,同时最关键的是能做到对业务透明。


最后,就是高性能。高性能的实现除了 I/O 聚合之外,单条交易的本质就是网络的时延和处理的时延。所以,网络对于分布式数据库的时延(性能)影响是巨大的。


总而言之,软硬协同带给我们的不仅仅是性能扩展方面的优势,更是可以通过软硬协同打造真正企业级的可靠性。

企业级混合负载 (HTAP)


近年来企业级混合负载(HTAP)的兴起,旨在打破事务处理(TP)和分析(AP)之间的壁垒。分布式数据库都应具备混合负载能力,即在支持高并发、事务性请求的同时,对分析型的复杂查询提供了良好的支持,从而大幅度降低成本,同时提高企业决策的效率。


HTAP 架构的核心技术:


第一,透明路由。通过自动选择行存引擎、列存引擎以及行列组合,提供查询的准确性和实时性,增加客户的易用性,提升 HTAP 产品的商用价值。


第二,性能提升。TP 要求的是低时延、高吞吐,而 AP 要求的是复杂查询的能力。常规执行优化技术包括并行执行、编译执行、向量化执行等,在这些技术的基础上进一步加速复杂查询,支撑企业级混合负载。


第三,数据新鲜度。保证数据高新鲜度、高性能,保证 HTAP 架构能够具备更多应对用户的能力。


第四,资源隔离。用户对 TP 性能要求比较高,在引入实时 AP 的同时,不能影响 TP 的能力和性能,需要在资源隔离、数据新鲜度以及性能的提升方面做好权衡。

云原生多主


单一架构其实并不能解决今天行业碰到的所有问题,但云原生多主架构可以帮助解决两类问题:


第一个,是高可用的问题,希望能基于多主架构,解决切换时业务中断的问题。


第二个,是扩展性的问题,基于多主架构,融合软硬协同的进展,真正能在计算节点以下,持续提升产品的性能和弹性。

数据安全可信


当今世界,每个国家、组织和个人都在关注安全、合规和隐私的问题,几年前数据无保护随意获取并使用的便利不再,这也促进了技术的进步和落地。未来,全行业都会面临越来越严格的对于可信安全方面的要求。


全密态是华为云数据库为了提升隐私保护能力研制的一项关键技术,全密态支持数据在整个计算过程中同样是以密文形式存在,实现了让整个敏感数据在全生命周期当中都得到保护。因此,无论数据处于何种状态,攻击者都无法获取到有效信息,从而保障了企业数据全生命周期的隐私安全。

AI-Native


机器学习已被广泛用于优化数据管理问题,如数据清理、数据分析、查询重写、数据库诊断等。然而,传统的机器学习算法无法解决泛化和推理问题。幸运的是,大模型(LLM)可以帮助解决这些限制,为智能化数据管理提供了很好的机会。


借助 AI/LLM,未来分布式数据库将朝着全流程、全链路、高效易用的智能化数据库的方向发展,在数据库咨询、开发、运维等关键阶段,构建相应的自动化能力:


第一,咨询阶段,提供专家式辅助,制定精细化方案。


  • HLD 助手,结合专家经验,自动生成数据库 HLD;

  • DB 知识库,通过积累运维工单、答疑、文档手册等,形成数据库行业知识库;

  • 问答助手,通过提供 ChatBot,实现交互式运维。


第二,开发阶段,提供开发辅助,提升 SQL 开发效率。


  • 通过构建 NL2SQL 转换能力,让自然语言转换为 SQL 语句;

  • 同时,增强的 SQL 转换能力提升异构数据库间的 SQL 语句转换自动化率。


第三,运维阶段,实现预测性维护,提升系统可靠性。


  • 智能巡检,可以构筑 Schema/SQL、中间件/告警等全链路可观测可跟踪能力;

  • 智能故障处理,通过全链路感知编排,提供精准分析,快速定位故障并给出建议;

  • SQL 质量提升能力,可以快速找出问题 SQL,诊断根因,提供全局分析。


综上,分布式数据库性能卓越,凭借高可用、高可扩展性、高性价比等优势,已经被对数据库要求最严苛的金融行业所认可,并逐渐被应用在更广阔的领域。不过,从总体发展状态来看,目前还处于早期,但发展方向明朗,上升空间很大。

参与有奖


GaussTech 技术专栏第一期话题讨论:


对于分布式数据库的未来发展,你怎么看?


1.你认为分布式是数据库未来的发展趋势吗?


2.哪种架构会得到更多企业的青睐?


3.分布式数据库技术又会向什么方向发展?


点击链接,即可参与“GaussTech 技术专栏第一期”话题讨论,就有机会获得 HUAWEI mini 蓝牙音箱 _绮境森林、《华为数据之道》书籍、新贵族系列中性笔、平装套芯笔记本、GaussDB 字母笔、炫彩马卡龙指甲刀等好礼,快来参与吧!


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
分布式数据库技术的演进和发展方向_数据库_华为云开发者联盟_InfoQ写作社区