查看原文
其他

【金猿技术展】一种实现跨不同数据库引擎事务强一致性的系统及方法——提供同一份数据的跨引擎事务一致性能力

数据猿 2022-12-30





巨杉数据库技术

本项目由巨杉数据库投递并参与“数据猿年度金猿策划活动——2022大数据产业创新技术突破榜单及奖项”评选

‍数据智能产业创新服务媒体

——聚焦数智 · 改变商业






传统的数据库引擎为了支持事务的ACID特性,结合自身的技术特点和设计理念,建立起了自己一套独立的系统架构。这也造成了不同数据库引擎之间,从系统架构,到内部实现,以及存储结构上都存在着巨大的差异。不同的数据库引擎之间无法共享事务,事务的ACID特性只能在自己的引擎内部才能得到实现和保证,无法在引擎内部实现跨数据库的事务。

本方法通过共享分布式事务的方式实现了跨不同数据库引擎的事务一致性。当业务系统通过某一种数据库引擎执行事务操作时,其它数据引擎均能感知其事务状态,并且确保多个不同数据库引擎之间的事务与在单个数据库引擎的行为一致,完全满足事务ACID特性。

技术说明


为了实现跨数据库的事务能力,目前的解决方案是依赖
XA分布式事务协议。由数据库引擎上层作为协调者,负责协调各个不同的数据库引擎,当某个数据库引擎执行事务失败时,同时需要回滚其它数据库引擎上的事务。但是XA分布式事务协议还存在以下问题:

  • 性能问题:所有数据库引擎在事务提交阶段处于同步阻塞状态,占用系统资源,容易导致性能瓶颈。

  • 可靠性问题:协调者存在单点故障问题,如果协调者出现故障,数据库引擎将一直处于锁定状态。

  • 数据一致性问题:在事务提交阶段,如果发生局部网络问题,一部分数据库引擎收到了提交消息,另一部分数据库引擎没收到提交消息,那么就会导致数据库引擎之间数据的不一致。

  • 由X/Open组织提出的分布式事务的规范。由全局事务管理器负责管理和协调事务,一般使用二阶段提交协议与数据库引擎进行交互。

  • 术语:XA分布式事务协议

由X/Open组织提出的分布式事务的规范。由全局事务管理器负责管理和协调事务,一般使用二阶段提交协议与数据库引擎进行交互。

本方法通过共享分布式事务的方式,解决了跨不同数据库引擎事务一致性和可靠性的问题。其主要原理是将不同数据库引擎的事务请求和数据均接入到同一个分布式系统中进行统一管理和执行,从而实现跨不同数据库引擎的事务强一致性。系统主要分为三大模块:

  • SQL协议转换模块

负责将不同数据库引擎的请求进行 SQL 协议的标准化,将其解析成统一的标准协议,供后续模块使用。支持的数据库引擎包括但不限于MySQL,PostgreSQL,MariaDB等,例如有如下SQL语句(通过学生id查询学生姓名和年龄的信息): select name, age from student where id= "01"。

通过解析SQL引擎内部的数据结构,获取SQL的关键信息,其中包括:表名Name;查询条件字段id,选取的结果字段name, age。并转换为标准协议为:Name: “student”, Query: { id: “01”}, Selector: { name:1, age:1 }。

  • 事务处理模块(TransactionProcessor)

主要负责事务的解析和执行。对不同数据库引擎过来的请求进行处理,并保证不同数据库引擎之间事务的一致性:

存储模块(Storage)

负责事务执行过程中的undo/redo日志进行保存,用于后续执行事务回滚操作,或事务提交操作。

对事务执行后的数据进行持久化。该模块是一个分布式存储模块,可以保证数据强一致性,避免单点故障。

相较与XA分布式事务协议有如下优势:

① 性能:在XA协议中,SQL语句是在数据库引擎层面执行,并且上层应用需要进行协商,并等待两个数据库引擎执行完毕才能确保事务执行成功。而本方法中不同引擎的SQL都是统一下放到事务处理模块去执行,中间不需要协商和等待,性能有很大提升。

② 可靠性:在XA协议中,需要一个协调者去负责协商和等待多个数据库引擎之间的事务提交关系,一旦协调者出现故障。而本方法不需要协调者,且在事务处理模块和存储模块均采用了分布式设计,避免了单点故障。

③ 数据一致性:在XA协议中,事务提交阶段如果发生局部网络问题,一部分数据库引擎收到了提交消息,另一部分数据库引擎没收到提交消息,由于数据库引擎之间的数据和事务是相互独立的,且无法直接通信和协商,会导致数据不一致。而在本方法中,当事务出现不一致时,事务处理模块中的多个节点会进行自主裁决,可以自动将事务恢复到一致状态。

本方法突破了传统数据库引擎无法相互访问数据的限制,使得多种不同数据引擎之间可以共享数据和事务,并且实现了不同数据引擎之间的事务一致性。其优势如下:

1、突破数据库引擎相互访问的壁垒,是实现跨数据库引擎事务的一种可行的解决方法。

2、避免业务系统跨数据库访问数据,减少系统复杂度,提高系统稳定性。业务系统是需要支持任何一种数据库引擎,便可以和其它数据库引擎共享事务,并实现事务的一致性。

3、大大减化业务逻辑,业务系统不需要关心数据在多个不同数据库引擎之间的事务一致性问题。可以更加聚焦于业务逻辑的设计实现。可被使用于各类分布式系统,平台和应用,包括且不限于分布式操作系统,分布式数据库,区块链,分布式通讯平台,分布式交易平台,分布式存储平台,分布式计算系统。

★专利申请号/公开号CN112182082A

开发团队



·带队负责人姓名:许建辉

许建辉,SequoiaDB巨杉数据库技术合伙人。拥有超过15年数据库及分布式架构内核研发经验。2012年加入SequoiaDB,作为总架构师,负责数据库的架构设计、技术创新和研发管理工作。为巨杉数据库完成超过100家金融银行客户生产落地,共计服务超过1000家企业用户,为客户实现单集群高达1万2000亿行数据量规模下,高并发的实时查询能力,成为众多客户的数据基础设施。拥有多项授权发明专利,打造多模数据的存储计算分离基础架构,奠定横跨结构化、半结构化、非结构化数据的湖仓一体融合基础。出版著作:《SequoiaDB分布式数据库权威指南》。

团队其他重要成员姓名:林友滨。

相关评价


金融科技,业务为主,数据为先。银行业数字化转型过程中,产生大量结构化及非结构化数据,巨杉数据库的多模技术,能够将两类数据统一存储、处理,充分挖掘数据价值,有效提升金融行业全新业态下的综合数据处理能力。

——上海银行

巨杉提供的“存算分离”能力,相比Hadoop的“存算一体”架构,对计算及存储资源提供更有效的独立弹性扩展,实现更灵活的资源分配,合理解决不同系统间的业务压力及处理要求。其“湖仓一体”架构将湖和仓有效结合,可以更好地适应各类场景间的数据拉通及交换需求。

——长沙银行

提示:了解更多相关内容,点击文末左下角阅读原文”链接可直达该机构官网。 


《2022中国企业数智化转型升级服务全景图/产业图谱3.0版》

《2022中国数据智能产业图谱3.0版》

 创新服务企业榜

 创新服务产品榜

 最具投资价值榜

 创新技术突破榜

条漫:《看过大佬们发的朋友圈之后,我相信:明天会更好!》

联系数据猿

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存