分布式数据库系统的事务处理方法及装置制造方法及图纸

技术编号:15119518 阅读:124 留言:0更新日期:2017-04-09 18:04
本发明专利技术公开了一种分布式数据库系统的事务处理方法及装置。该方法包括:全局事务处理中心服务器接收用户提交的事务结构化查询语言SQL语句,并根据SQL语句生成SQL语法树;遍历SQL语法树,根据分布式数据库系统的分布情况,生成能够在分布式数据库系统各个数据库节点执行的SQL执行树;申请与SQL执行树对应的全局事务标识GTID,并遍历SQL执行树,将SQL执行树的执行节点上的SQL语句下发到相应的数据库节点上执行,其中,GTID携带在SQL语句中;接收执行结果,根据执行结果遍历SQL执行树,在确定SQL执行树上的SQL语句都执行成功且完毕后,将执行结果返回给用户,并释放GTID。

【技术实现步骤摘要】

本专利技术涉及计算机
,特别是涉及一种分布式数据库系统的事务处理方法及装置
技术介绍
联机事务处理系统(OnlineTransactionProcessing,简称为OLTP),是一种事务性非常高的系统,一般都是高可用的在线系统。这样的系统每秒处理的交互(Transaction)往往都超过几百个或者是几千个,而查询语句(select)的执行量每秒几千甚至几万。典型的OLTP系统有电子商务系统、银行系统、证券系统,例如,国内银行使用的DB2业务数据数据库,就是很典型的OLTP数据库。随着业务越做越大,数据量也会越来越大,同时计算也会越来越复杂,性能、可靠性、可扩展性的需求就会越来越强烈,这个时候一个集中式的关系型数据库很显然已经满足不了需求。为了解决这种数据量、事务量大带来的中央处理器(CentralProcessingUnit,简称为CPU)和磁盘的压力,分布式数据库系统应运而生,成为信息处理的重要技术。分布式数据库是由若干个单节点数据库集合而成,他们通过网络连接一起,每个节点都是独立的数据库系统,他们拥有各自的数据库、CPU、数据管理系统,因此分布式数据库系统可以看做是一系列集中式数据库系统的联合。他们在逻辑上属于同一系统数据库,但在物理结构上是分布式的。性能和数据的可扩展性是构建分布式数据库的业务驱动,通过分布式数据库可以为业务提供数据和性能的扩展,但随之也带来一系列问题,例如分布式存储过程的支持、数据一致性、分布式事务的支持与处理、数据重分布等问题。其中分布式事务又是分布式数据库需要解决的重点问题。<br>
技术实现思路
鉴于现有技术中分布式数据库系统的事务处理所存在的上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的分布式数据库系统的事务处理方法及装置。本专利技术提供一种分布式数据库系统的事务处理方法,包括:全局事务处理中心服务器接收用户提交的事务结构化查询语言SQL语句,并根据SQL语句生成SQL语法树;全局事务处理中心服务器遍历SQL语法树,根据分布式数据库系统的分布情况,生成能够在分布式数据库系统各个数据库节点执行的SQL执行树;全局事务处理中心服务器申请与SQL执行树对应的全局事务标识GTID,并遍历SQL执行树,将SQL执行树的执行节点上的SQL语句下发到相应的数据库节点上执行,其中,GTID携带在SQL语句中;全局事务处理中心服务器接收执行结果,根据执行结果遍历SQL执行树,在确定SQL执行树上的SQL语句都执行成功且完毕后,将执行结果返回给用户,并释放GTID。优选地,在各个数据库节点执行SQL语句时,在数据库节点存储的SQL语句的操作数据的隐含列中存储相应的GTID,并将SQL语句的操作数据的前后值写入到各个数据库节点的数据库日志;上述方法进一步包括分布式回滚操作:全局事务处理中心服务器在部分数据库节点提交的执行结果为执行SQL语句成功,部分数据库节点提交的执行结果为执行SQL语句失败的情况下,获取执行SQL语句成功的数据库节点的数据库日志,通过GTID从数据库日志中获取已执行成功的SQL语句以及操作数据的前后值,根据已执行成功的SQL语句以及操作数据的前后值构造反向SQL语句,对已执行成功的SQL语句进行回滚操作,将已执行成功的SQL语句回滚到与执行失败的SQL语句一致的状态。优选地,全局事务处理中心服务器接收用户提交的事务结构化查询语言SQL语句,并根据SQL语句生成SQL语法树具体包括:全局事务处理中心服务器接收用户提交的事务SQL语句;全局事务处理中心服务器根据SQL语法规则、以及面向分布式的应用规则制定SQL语法分析器,通过SQL语法分析器分析事务SQL语句,生成SQL语法树,并根据SQL语法树重构所需要的SQL语句,其中,SQL语法树包括SQL语句节点和SQL语句操作节点,如果两个SQL语句节点之间是主从关系,则通SQL语句操作节点对两个SQL语句节点进行连接。优选地,全局事务处理中心服务器遍历SQL语法树,根据分布式数据库系统的分布情况,生成能够在分布式数据库系统各个数据库节点执行的SQL执行树具体包括:全局事务处理中心服务器从根节点深度遍历SQL语法树,在遍历到叶子节点后,开始进行归并操作,将能放在一个SQL语句中下发到数据库节点执行的父子关系的节点和兄弟关系的节点合并成一个执行节点,在当前节点无法合并时,将当前节点分布下发到SQL执行树的执行节点上,最后进行汇总操作,生成能够在分布式数据库系统各个数据库节点执行的SQL执行树。优选地,在生成能够在分布式数据库系统各个数据库节点执行的SQL执行树时,上述方法进一步包括:在SQL执行树上的SQL语句所涉及到的数据均分布在同一数据库节点时,将该SQL语句标识为直接下发到对应数据库节点执行;在SQL执行树上的SQL语句涉及到的数据分布在不同数据库节点时,将该SQL语句标识为需要进行汇总操作,并将SQL语句分解成的子SQL语句标识为直接下发到相应数据库节点执行;将SQL执行树上的SQL语句下发到相应的数据库节点上执行具体包括:在SQL语句标识为直接下发的对应数据库节点执行时,全局事务处理中心服务器直接将该SQL语句下发到相应数据库节点执行;在SQL语句分解成的子SQL语句标识为直接下发到相应数据库节点执行,该SQL语句标识为需要进行汇总操作时,全局事务处理中心服务器将该SQL语句的子SQL语句下发到各数据库节点执行后,接收各数据库节点反馈的执行结果并对执行结果进行数据汇总操作。优选地,全局事务处理中心服务器申请与SQL执行树对应的全局事务标识GTID具体包括:步骤1,全局事务处理中心服务器查询SQL执行树各执行节点上SQL语句的操作数据中的GTID;步骤2,全局事务处理中心服务器读取查询到的GTID,将该GTID和全局事务处理中心服务器中保存的当前系统活跃的GTID列表进行对比,判断与读取到的GTID相应的操作数据是否活跃;步骤3,全局事务处理中心服务器在确定操作数据活跃的情况下,判断此次事务操作是否超时,或者此次事务操作的重试次数是否超出预先设置的重试次数阈值,如果超时或者超出重试次数阈值,则执行分布式回滚操作,如果未超时或者未超出重试次数阈值,则返回执行步骤1;步骤4,全局事务处理中心服务器在判断操作数据不活跃的情况下,申请一个新的GTID;步骤5,全局事务处理中心服务器将当前活跃的操作数据所对应的GTID存储到当前系统活跃的GTID列表中;步骤6,在有其它事务申请对当前系统的活跃GTID列表中的GTID进行相关数据操作时,禁止其他事务进行操作。本专利技术还提供了一种分布式数据库系统的事务处理装置,包括:客户端模块,用于接收用户提交的事务结构化查询语言SQL语句语法解析模块,用于根据SQL语句生成SQL语法树;SQL处理模块,用于遍历SQL语法树,根据分布式数据库系统的分布情况,生成能够在分布式数据库系统各个数据库节点本文档来自技高网
...

【技术保护点】
一种分布式数据库系统的事务处理方法,其特征在于,包括: 全局事务处理中心服务器接收用户提交的事务结构化查询语言SQL语句,并根据所述SQL语句生成SQL语法树; 所述全局事务处理中心服务器遍历所述SQL语法树,根据分布式数据库系统的分布情况,生成能够在所述分布式数据库系统各个数据库节点执行的SQL执行树; 所述全局事务处理中心服务器申请与所述SQL执行树对应的全局事务标识GTID,并遍历所述SQL执行树,将所述SQL执行树的执行节点上的SQL语句下发到相应的数据库节点上执行,其中,所述GTID携带在所述SQL语句中; 所述全局事务处理中心服务器接收执行结果,根据所述执行结果遍历所述SQL执行树,在确定SQL执行树上的SQL语句都执行成功且完毕后,将所述执行结果返回给用户,并释放所述GTID。

【技术特征摘要】
1.一种分布式数据库系统的事务处理方法,其特征在于,包括:
全局事务处理中心服务器接收用户提交的事务结构化查询语言SQL语句,并根据所述SQL语句生成SQL语法树;
所述全局事务处理中心服务器遍历所述SQL语法树,根据分布式数据库系统的分布情况,生成能够在所述分布式数据库系统各个数据库节点执行的SQL执行树;
所述全局事务处理中心服务器申请与所述SQL执行树对应的全局事务标识GTID,并遍历所述SQL执行树,将所述SQL执行树的执行节点上的SQL语句下发到相应的数据库节点上执行,其中,所述GTID携带在所述SQL语句中;
所述全局事务处理中心服务器接收执行结果,根据所述执行结果遍历所述SQL执行树,在确定SQL执行树上的SQL语句都执行成功且完毕后,将所述执行结果返回给用户,并释放所述GTID。
2.如权利要求1所述的方法,其特征在于,在各个数据库节点执行所述SQL语句时,在所述数据库节点存储的SQL语句的操作数据的隐含列中存储相应的GTID,并将SQL语句的操作数据的前后值写入到各个数据库节点的数据库日志;
所述方法进一步包括分布式回滚操作:所述全局事务处理中心服务器在部分数据库节点提交的执行结果为执行SQL语句成功,部分数据库节点提交的执行结果为执行SQL语句失败的情况下,获取执行SQL语句成功的数据库节点的数据库日志,通过所述GTID从所述数据库日志中获取已执行成功的SQL语句以及操作数据的前后值,根据已执行成功的SQL语句以及操作数据的前后值构造反向SQL语句,对已执行成功的SQL语句进行回滚操作,将已执行成功的SQL语句回滚到与执行失败的SQL语句一致的状态。
3.如权利要求1所述的方法,其特征在于,全局事务处理中心服务器接收用户提交的事务结构化查询语言SQL语句,并根据所述SQL语句生成SQL语法树具体包括:
所述全局事务处理中心服务器接收用户提交的事务SQL语句;
所述全局事务处理中心服务器根据SQL语法规则、以及面向分布式的应用规则制定SQL语法分析器,通过所述SQL语法分析器分析所述事务SQL语句,生成SQL语法树,并根据所述SQL语法树重构所需要的SQL语句,其中,所述SQL语法树包括SQL语句节点和SQL语句操作节点,如果两个SQL语句节点之间是主从关系,则通SQL语句操作节点对两个SQL语句节点进行连接。
4.如权利要求1所述的方法,其特征在于,所述全局事务处理中心服务器遍历所述SQL语法树,根据分布式数据库系统的分布情况,生成能够在所述分布式数据库系统各个数据库节点执行的SQL执行树具体包括:
所述全局事务处理中心服务器从根节点深度遍历所述SQL语法树,在遍历到叶子节点后,开始进行归并操作,将能放在一个SQL语句中下发到数据库节点执行的父子关系的节点和兄弟关系的节点合并成一个执行节点,在当前节点无法合并时,将当前节点分布下发到SQL执行树的执行节点上,最后进行汇总操作,生成能够在所述分布式数据库系统各个数据库节点执行的SQL执行树。
5.如权利要求1所述的方法,其特征在于,
在生成能够在所述分布式数据库系统各个数据库节点执行的SQL执行树时,所述方法进一步包括:
在所述SQL执行树上的SQL语句所涉及到的数据均分布在同一数据库节点时,将该SQL语句标识为直接下发到对应数据库节点执行;在所述SQL执行树上的SQL语句涉及到的数据分布在不同数据库节点时,将该SQL语句标识为需要进行汇总操作,并将所述SQL语句分解成的子SQL语句标识为直接下发到相应数据库节点执行;
将所述SQL执行树上的SQL语句下发到相应的数据库节点上执行具体包括:
在SQL语句标识为直接下发的对应数据库节点执行时,所述全局事务处理中心服务器直接将该SQL语句下发到相应数据库节点执行;
在SQL语句分解成的子SQL语句标识为直接下发到相应数据库节点执行,该SQL语句标识为需要进行汇总操作时,所述全局事务处理中心服务器将该SQL语句的子SQL语句下发到各数据库节点执行后,接收各数据库节点反馈的执行结果并对所述执行结果进行数据汇总操作。
6.如权利要求1所述的方法,其特征在于,所述全局事务处理中心服务器申请与所述SQL执行树对应的全局事务标识GTID具体包括:
步骤1,所述全局事务处理中心服务器查询所述SQL执行树各执行节点上SQL语句的操作数据中的GTID;
步骤2,所述全局事务处理中心服务器读取查询到的所述GTID,将该GTID和所述全局事务处理中心服务器中保存的当前系统活跃的GTID列表进行对比,判断与读取到的GTID相应的操作数据是否活跃;
步骤3,所述全局事务处理中心服务器在确定操作数据活跃的情况下,判断此次事务操作是否超时,或者此次事务操作的重试次数是否超出预先设置的重试次数阈值,如果超时或者超出重试次数阈值,则执行分布式回滚操作,如果未超时或者未超出重试次数阈值,则返回执行步骤1;
步骤4,所述全局事务处理中心服务...

【专利技术属性】
技术研发人员:代利坚贾新华左庄太白涛陈河堆邹海丽陈小强彭继平
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1