数据库的控制系统、方法、计算机设备及存储介质与流程

未命名 09-17 阅读:95 评论:0


1.本发明实施例涉及数据库技术领域,尤其涉及一种数据库的控制系统、方法、计算机设备及存储介质。


背景技术:

2.数据多版本并发控制技术在数据库领域是用来解决隔离级别及读写阻塞问题的关键技术。在集中式数据库中采用事务可见视图,事务列表以及回滚日志等方式实现数据的多版本控制及隔离级别控制。在分布式数据库中,由于每个数据节点只承载着一部分数据,事务控制,隔离级别控制涉及到跨多个数据节点。分布式数据库的数据节点只有局部的事务列表,并且回滚日志只对该节点历史数据有效,对于全局分布式事务能做到历史版本数据的控制。在分布式数据库实现多版本控制中需要考虑到多个数据节点内部的多版本数据存储与清理,并根据隔离级别的不同在多个数据节点上的多个版本的数据筛选返回。因此,如何减少分布式事务中的读写冲突引起的阻塞成为现在亟待解决的问题。


技术实现要素:

鉴于此,为解决上述技术问题或部分技术问题,本发明实施例提供一种数据库的控制系统、方法、计算机设备及存储介质。
3.第一方面,本发明实施例提供一种数据库的控制系统,包括:计算节点、数据节点和事务管理节点;所述计算节点,用于接收分布式事务,从所述事务管理节点获取所述分布式事务的事务号;对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至所述数据节点;接收所述数据节点返回的执行结果,并将执行结果返回至客户端;所述数据节点,用于执行所述改写后的目标语句,将执行结果返回至所述计算节点;所述事务管理节点,用于当接收到所述计算节点针对分布式事务生成的请求消息或注销消息时,基于所述请求消息生成所述分布式事务对应的事务号,或,基于所述注销消息删除所述分布式事务对应的事务号。
4.在一个可能的实施方式中,所述事务管理节点,还用于根据生成的所述事务号对当前活跃的分布式事务的事务列表进行更新,将更新后的所述事务列表广播至所述数据节点和所述计算节点;接收所述计算节点在完成对分布式事务的目标操作后发送的注销消息,根据所述注销消息对所述事务列表中的所述事务号进行删除,将删除后的所述事务列表广播至所述数据节点和所述计算节点。
5.在一个可能的实施方式中,所述对所述分布式事务中的目标语句进行改写,包括:在insert语句中添加所述事务号;将update语句则改写成select...for update语句,以通过select...for update语句查询需要修改行的记录;将所述记录中的历史事务号更新为所述分布式事务的事务号,得到新的记录;通过insert语句执行所述新的记录;将delete语句改写成select...for update语句,以通过select...for update语句查询所述目标语句对应的全部记录;将所述全部记录中每个所述记录的历史事务号更新为所述分布式事务的事务号,并将删除标志位更新为true。
6.在一个可能的实施方式中,所述执行所述改写后的目标语句,将执行结果返回至所述计算节点,包括:执行所述改写后的目标语句后,得到多个版本的数据,每个版本的数据中包含所述数据对应的事务号;将所述多个版本的数据作为执行结果返回至所述计算节点。
7.在一个可能的实施方式中,所述计算节点还用于从所述多个版本的数据中获取最大事务号;当所述事务号不在所述事务列表中时,将所述最大事务号对应的数据返回至客户端。
8.在一个可能的实施方式中,所述计算节点,还用于当所述分布式事务发生回滚或被提交至客户端时,生成注销消息;将所述注销消息发送至所述事务管理节点。
9.第二方面,本发明实施例提供一种数据库的控制方法,包括:接收客户端发送的分布式事务;从事务管理节点获取所述分布式事务的事务号;根据所述事务号对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至数据节点;接收所述数据节点返回的执行结果,并将执行结果返回至客户端。
10.在一个可能的实施方式中,所述根据所述事务号对所述分布式事务中的目标语句进行改写,包括:在insert语句中添加所述事务号;将update语句则改写成select...for update语句,以通过select...for update语句查询需要修改行的记录;将所述记录中的历史事务号更新为所述分布式事务的事务号,得到新的记录;通过insert语句执行所述新的记录;将delete语句改写成select...for update语句,以通过select...for update语句查询所述目标语句对应的全部记录;将所述全部记录中每个所述记录的历史事务号更新为所述分布式事务的事务号,并将删除标志位更新为true。
11.第三方面,本发明实施例提供一种计算机设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据库的控制程序,以实现上述第一方面中任一项所述的数据库的控制方法。
12.第四方面,本发明实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面中任一项所述的数据库的控制方法。
13.本发明实施例提供的数据库的控制系统,包括:计算节点、数据节点和事务管理节点;所述计算节点,用于接收分布式事务,从所述事务管理节点获取所述分布式事务的事务号;对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至所述数据节点;接收所述数据节点返回的执行结果,并将执行结果返回至客户端;所述数据节点,用于执行所述改写后的目标语句,将执行结果返回至所述计算节点;所述事务管理节点,用于当接收到所述计算节点针对分布式事务生成的请求消息或注销消息时,基于所述请求消息生成所述分布式事务对应的事务号,或,基于所述注销消息删除所述分布式事务对应的事务号。由此可以实现分布式数据库中将多个数据节点中的分布式事务数据进行多个版本统一有效管理,并通过计算节点返回最终结果,提高数据库的数据处理效率,减少分布式事务中的读写冲突引起的阻塞。
附图说明
14.图1为本发明实施例提供的一种数据库的控制系统的结构示意图;图2为本发明实施例提供的一种数据库的控制系统的原理示意图;图3为本发明实施例提供的一种数据库的控制方法的流程示意图;图4为本发明实施例提供的一种数据库的控制装置的结构示意图;图5为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
15.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
16.为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
17.图1为本发明实施例提供的一种数据库的控制系统的结构示意图,如图1所示,该系统具体包括:本发明实施例提供的数据库的控制系统应用于分布式数据库,涉及分布式数据库中数据多版本数据的存储控制,分布式数据库多种隔离级别实现及读写冲突控制等方面的技术实现、该系统包括:事务管理节点tm、计算节点cn和数据节点dn,具体通过计算节点接收应用发送过来的分布式事务,并进行处理。在处理分布式事务时候与事务管理节点进行交互申请全局事务号,并与数据节点交互进行数据的读写操作。在进行数据更新时,将当前的事务号更新到数据节点相关的记录中;进行数据查询时根据各个数据节点返回的数据及
事务号进行判断,结合事务的隔离级别返回适当的数据版本。
18.1、计算节点,用于接收分布式事务,从事务管理节点获取分布式事务的事务号;对分布式事务中的目标语句进行改写,将改写后的目标语句发送至数据节点;接收数据节点返回的执行结果,并将执行结果返回至客户端。
19.在本实施例中,计算节点是所有组件消息转发的关键节点。 主要实现对客户端下传的分布式事务中的目标语句(例如,sql语句)进行解析、优化改写,生成分布式执行计划。计算节点将生成的分布式执行计划下发至数据节点上进行处理,得到数据节点的返回的结果进行二次处理,最终将二次处理结果返回给客户端。
20.客户端下发的sql语句在计算节点会进行一定的改写。在insert语句中添加所述事务号;将update语句改写成select...for update语句,以通过select...for update语句查询需要修改行的记录;将所述记录中的历史事务号更新为所述分布式事务的事务号,得到新的记录;通过insert语句执行所述新的记录;将delete语句改写成select...for update语句,以通过select...for update语句查询所述目标语句对应的全部记录;将所述全部记录中每个所述记录的历史事务号更新为所述分布式事务的事务号,并将删除标志位更新为true。
21.具体的,如果是insert语句则在该insert记录中加上该事务的事务号txid,如果是update则改成select...for update,获取需要修改行的记录,将需要修改的列进行替换,并将txid替换成该分布式事务的txid,组成一个新的记录使用insert进行执行;如果是delete语句则修改成select...for update, 获取该语句的所有记录,使用update将原来所有的txid替换成该事务的txid,并将该行的删除标志位更新为true下发至数据节点执行。实际执行的结果是需要被删除或者被更新的记录并没有在数据节点中真正被删除或更新,只是将原有的数据的txid号进行了更改或者新插入了一个带有当前txid的数据,并将一些额外的控制位进行了更新。
22.当客户端下发select语句进行数据查询时,由于delete,update的时候并没有将原有的记录进行更新和删除,所以相同的条件会查出多个历史版本。计算节点在处理这些不同版本的数据时会根据隔离级别结合事务列表,可见视图,事务号来综合判断返回哪个版本的数据给客户端,从而实现不同的隔离级别所见的数据版本不相同。2、事务管理节点,用于当接收到计算节点针对分布式事务生成的请求消息或注销消息时,基于请求消息生成分布式事务对应的事务号,或,基于注销消息删除分布式事务对应的事务号。
23.在本实施例中,事务管理节点(tm)是一个集中式节点。负责对所有计算节点和数据节点提供统一的分布式事务号管理。事务管理节点的事务管理器生成的事务号是递增序列,每个事务号对应一个分布式事务。事务的先后顺序可以通过判断事务号的大小来实现。事务管理节点主要用于:事务号申请、事务号注销和事务列表查询。
24.事务号申请:新的分布式事务发送到计算节点时,在进行后续事务处理前计算节点需要先与事务管理节点进行交互,向事务管理节点发送请求消息,申请一个唯一属于该事务的事务号txid。txid是由集中式事务管理器生成的,因此可以保证唯一性以及单序性。 一旦事务号请求成功,事务管理器在将该事务号返回给计算节点之前会将该事务号添加进活跃事务列表中。并将更新过的事务列表广播给所有计算节点和数据节点。
25.事务号注销:当所分布式事务发生回滚或被提交至客户端时,生成注销消息;将注销消息发送至事务管理节点。
26.具体的,当计算节点完成一个分布式事务的commit操作或者rollback之后,在返回给应用结果之前需要与事务管理节点进行注销操作。计算节点生成注销消息发送至事务管理节点,事务管理节点在收到注销消息之后会将该事务的txid从事务列表中删除后对活跃事务列表进行更新。 并将更新过的活跃事务列表广播给所有计算节点和数据节点。事务列表查询:当计算节点执行查询语句时,需要与事务管理节点进行交互。从事务管理器中查询当前的事务列表txlist,根据事务列表生成可见视图view_list。事务管理器还可以同时反馈当前列表中最大序号max_id和最小序号min_id给计算节点,协助其进行可见度控制。
27.3、数据节点,用于执行改写后的目标语句,将执行结果返回至计算节点。
28.在本实施例中,数据节点执行改写后的目标语句后,得到多个版本的数据,每个版本的数据中包含数据对应的事务号;将多个版本的数据作为执行结果返回至所述计算节点。
29.具体的,数据节点是单独的数据库系统,可实现独立的数据增加、删除、改写、查找等功能,并可以保持acid的特性。数据节点中会对分布式事务中下发到该节点的子事务进行处理实现数据的持久化。在分布式数据库系统中会对数据的表结构进行一定的改写。 在计算节点上创建表结构时会根据分布策略的不同在每个计算节点上生成相同的表结构。 但是与业务表结构相比会多一些隐藏字段比如事务号txid,删除标志位等。该字段在数据节点中存在,但从计算节点查询的时候会把该字段进行隐藏。 该字段主要是用来进行分布式事务控制、多版本控制、隔离级别判断。数据节点中还有一个异步清理进程dbclear,该进程根据事务列表以及当前事务状态判断是否需要将表中的历史版本数据进行清理。
30.本发明实施例提供的数据库的控制系统,通过计算节点接收应用发送过来的分布式事务,并进行处理。在处理分布式事务时候与事务管理节点进行交互申请全局事务号,并与交互进行数据的读写操作。在进行数据跟更新时,将当前的事务号更新到数据节点相关的记录中;进行数据查询时根据各个数据节点返回的数据及事务号进行判断,结合事务的隔离级别返回适当的数据版本。与现有技术相比有效的解决了分布式数据库中将多个数据节点中的数据进行多个版本有效管理,并在计算节点中根据隔离级别进行筛选返回最终结果。
31.图2为本发明实施例提供的一种数据库的控制系统的原理示意图,如图2所示,该系统具体包括:1、应用程序app向分布式数据库的多个计算节点(cn1-cnn)发送分布式事务,每个计算节点中设置有cn服务器cnserver;2、计算节点在收到分布式事务创建语句时向事务管理节点(tm)申请分布式事务号txid,并向事务管理节点申请最新的活跃事务列表。
32.3、计算节点申请成功txid及活跃事务列表后对事务中的sql语句进行分析和改写,如果是查询语句则直接下发并转入步骤6;如果是insert语句在原记录后面增加一列txid,并下发;如果是update与delete语句则先执行select...for update语句将该记录语句查询上来,获取txid最大的那个记录,update语句改成insert语句下发,修改的字段包
括:需要更新的字段、事务字段改成最新申请的txid; delete语句只更新事务字段为最新事务号txid,并更新删除标志置位为true。
33.4、数据节点(dn1-dnn)收到计算节点发送的sql,数据节点中包括db服务器dbserver,执行sql在该步骤中主要有几个特点包括实际写入或者更新的列比应用建立的列要多包括txid列和删除标志列,这两列为隐藏列用于计算节点的判断,最终返回给应用的数据中这两列的数据会被隐藏。5、当执行select查询语句时,数据节点向计算节点返回结果,返回的结果集中会包含多个版本的数据,多个版本的数据中会包含各自的txid。
34.6、计算节点收到数据节点返回的多版本数据按照设置的隔离级别进行结果返回。计算节点判断原理是通过事务自身的txid,事务列表txlist,列表中的最大值和最小值max_id、min_id等综合因素来判断的。判断算法如下:从读取的多版本数据中取出最大的txid值进行判断。如果该值不在活跃事务列表中,则表示该数据数据为非活跃事务或是已经提交的事务,则该值可见则返回该值、如果获取的一些列版本数据中最大的那个值的事务号大于事务列表中的最大值则表示该值还未提交该值不可见。再取次新版本数据中的事务号,重新进行事务号判断、如果该值的事务号在活跃事务列表中,并且该值等于当前的事务的txid则该值可见,否则不可见。
35.7、如果该事务被提交或者回滚则有计算节点向事务管理器进行注销操作。8、将筛选出来的版本数据进行二次加工,比如汇聚,排序等,返回给应用。
36.9、数据节点异步清理进程dbclear对txlist进行实时监控。扫描出所有表中的事务号比最活跃事务还小的记录,并且如果删除标志位为true的记录即可删除清理。
37.图3为本发明实施例提供的一种数据库的控制方法的流程示意图,如图3所示,该方法具体包括:s11、接收客户端发送的分布式事务。
38.本发明实施例提供的数据库的控制方法,应用于分布式数据库中的计算节点,具体通过计算节点接收客户端应用发送过来的分布式事务,并进行处理。在处理分布式事务时候与事务管理节点进行交互申请全局事务号,并与数据节点交互进行数据的读写操作。在进行数据跟更新时,将当前的事务号更新到数据节点相关的记录中;进行数据查询时根据各个数据节点返回的数据及事务号进行判断,结合事务的隔离级别返回适当的数据版本。
39.在本实施例中,计算节点是所有组件消息转发的关键节点。 主要实现对客户端下传的sql进行解析、优化,生成分布式执行计划。计算节点将生成的分布式执行计划下发至数据节点上进行处理,得到数据节点的返回的结果进行二次处理,最终将二次处理结果返回给客户端。计算节点接收客户端发送的分布式事务。
40.s12、从事务管理节点获取所述分布式事务的事务号。
41.在本实施例中,计算节点收到分布式事务后,在进行后续事务处理前计算节点需要先与事务管理节点进行交互,申请一个唯一属于该分布式事务的事务号txid。txid是由集中式事务管理器生成的,因此可以保证唯一性以及单序性。 一旦事务号请求成功,事务管理器在将该号返回给计算节点之前会将该事务号添加进活跃事务列表中。并将更新过的事务列表广播给所有计算节点和数据节点。
42.s13、根据所述事务号对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至数据节点。
43.在本实施例中,计算节点会对客户端下发的sql语句进行一定的改写。在insert语句中添加所述事务号;将update语句则改写成select...for update语句,以通过select...for update语句查询需要修改行的记录;将所述记录中的历史事务号更新为所述分布式事务的事务号,得到新的记录;通过insert语句执行所述新的记录;将delete语句改写成select...for update语句,以通过select...for update语句查询所述目标语句对应的全部记录;将所述全部记录中每个所述记录的历史事务号更新为所述分布式事务的事务号,并将删除标志位更新为true。
44.具体的,如果是insert语句则在该insert记录中加上该事务的txid,如果是update则改成select...for update,获取需要修改行的记录,将需要修改的列进行替换,并将txid替换成该分布式事务的txid,组成一个新的记录使用insert进行执行;如果是delete语句则修改成select...for update, 获取该语句的所有记录,使用update将原来所有的txid替换成该事务的txid,并将该行的删除标志位更新为true下发至数据节点执行。实际执行的结果是需要被删除或者被更新的记录并没有在数据节点中真正被删除或更新,只是将原有的数据的txid号进行了更改或者新插入了一个带有当前发txid的数据,并将一些额外的控制为进行了更新。
45.客户端下发select语句进行数据查询时,由于delete,update的时候并没有将原有的记录进行更新和删除,所以相同的条件会查出多个历史版本。计算节点在处理这些不同版本的数据时会根据隔离级别结合事务列表,可见视图,事务号来综合判断返回哪个版本的数据给客户端,从而实现不同的隔离级别所见的数据版本不相同。s14、接收所述数据节点返回的执行结果,并将执行结果返回至客户端。
46.在本实施例中,数据节点是单独的数据库系统,可实现独立的数据增删改查功能并可以保持acid的特性。数据节点中会对分布式事务中下发到该节点的子事务进行处理实现数据的持久化。在分布式数据库系统中会对数据的表结构进行一定的改写。 在计算节点上创建表结构时会根据分布策略的不同在每个计算节点上生成相同的表结构。 但是与业务表结构相比会多一些隐藏字段比如事务号txid, 删除标志位等。该字段在数据节点中存在,但从计算节点查询的时候会把该字段进行隐藏。 该字段主要是用来进行分布式事务控制、多版本控制、隔离级别判断。数据节点中还有一个异步清理进程dbclear,该进程根据事务列表以及当前事务状态判断是否需要将表中的历史版本数据进行清理。数据节点收到计算节点发送的sql,执行sql在该步骤中主要有几个特点包括实际写入或者更新的列比应用建立的列要多包括txid列和删除标志列,这两列为隐藏列用于计算节点的判断,最终返回给应用的数据中这两列的数据会被隐藏。当执行select查询语句时,数据节点向计算节点返回结果,返回的结果集中会包含多个版本的数据,多个版本的数据中会包含各自的txid。
47.进一步的,计算节点收到数据节点返回的多版本数据按照设置的隔离级别进行结果返回至客户端。 计算节点判断原理是通过事务自身的txid,事务列表txlist,列表中的最大值和最小值max_id、min_id等综合因素来判断的。 判断算法如下:从读取的多版本数据中取出最大的txid值进行判断。如果该值不在活跃事务列表中,则表示该数据数据为非
only memory,rom)、可编程只读存储器 (programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器 (dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。 本文描述的存储器502旨在包括但不限于这些和任意其它适合类型的存储器。
55.在一些实施方式中,存储器502存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统5021和应用程序 5022。
56.其中,操作系统5021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序5022,包含各种应用程序,例如媒体播放器(media player)、浏览器(browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序5022中。
57.在本发明实施例中,通过调用存储器502存储的程序或指令,具体的,可以是应用程序5022中存储的程序或指令,处理器501用于执行各方法实施例所提供的方法步骤,例如包括:接收客户端发送的分布式事务;从事务管理节点获取所述分布式事务的事务号;根据所述事务号对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至数据节点;接收所述数据节点返回的执行结果,并将执行结果返回至客户端。
58.上述本发明实施例揭示的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array, fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程 存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成上述方法的步骤。
59.可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,
dsp)、数字信号处理设备(dspdevice,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
60.对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
61.本实施例提供的计算机设备可以是如图5中所示的计算机设备,可执行如图3中数据库的控制方法的所有步骤,进而实现图3所示数据库的控制方法的技术效果,具体请参照图3相关描述,为简洁描述,在此不作赘述。
62.本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
63.当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在设备侧执行的数据库的控制方法。
64.所述处理器用于执行存储器中存储的数据库的控制程序,以实现以下在设备侧执行的数据库的控制方法的步骤:接收客户端发送的分布式事务;从事务管理节点获取所述分布式事务的事务号;根据所述事务号对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至数据节点;接收所述数据节点返回的执行结果,并将执行结果返回至客户端。
65.专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
66.结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
67.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种数据库的控制系统,其特征在于,包括:计算节点、数据节点和事务管理节点;所述计算节点,用于接收分布式事务,从所述事务管理节点获取所述分布式事务的事务号;对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至所述数据节点;接收所述数据节点返回的执行结果,并将执行结果返回至客户端;所述数据节点,用于执行所述改写后的目标语句,将执行结果返回至所述计算节点;所述事务管理节点,用于当接收到所述计算节点针对分布式事务生成的请求消息或注销消息时,基于所述请求消息生成所述分布式事务对应的事务号,或,基于所述注销消息删除所述分布式事务对应的事务号。2.根据权利要求1所述的系统,其特征在于,所述事务管理节点,还用于根据生成的所述事务号对当前活跃的分布式事务的事务列表进行更新,将更新后的所述事务列表广播至所述数据节点和所述计算节点;接收所述计算节点在完成对分布式事务的目标操作后发送的注销消息,根据所述注销消息对所述事务列表中的所述事务号进行删除,将删除后的所述事务列表广播至所述数据节点和所述计算节点。3.根据权利要求1所述的系统,其特征在于,所述对所述分布式事务中的目标语句进行改写,包括:在insert语句中添加所述事务号;将update语句则改写成select...for update语句,以通过select...for update语句查询需要修改行的记录;将所述记录中的历史事务号更新为所述分布式事务的事务号,得到新的记录;通过insert语句执行所述新的记录;将delete语句改写成select...for update语句,以通过select...for update语句查询所述目标语句对应的全部记录;将所述全部记录中每个所述记录的历史事务号更新为所述分布式事务的事务号,并将删除标志位更新为true。4.根据权利要求2所述的系统,其特征在于,所述执行所述改写后的目标语句,将执行结果返回至所述计算节点,包括:执行所述改写后的目标语句后,得到多个版本的数据,每个版本的数据中包含所述数据对应的事务号;将所述多个版本的数据作为执行结果返回至所述计算节点。5.根据权利要求4所述的系统,其特征在于,所述计算节点还用于从所述多个版本的数据中获取最大事务号;当所述事务号不在所述事务列表中时,将所述最大事务号对应的数据返回至客户端。6.根据权利要求1所述的系统,其特征在于,所述计算节点,还用于当所述分布式事务发生回滚或被提交至客户端时,生成注销消息;将所述注销消息发送至所述事务管理节点。7.一种数据库的控制方法,应用于权利要求1所述的数据库的控制系统,其特征在于,
包括:接收客户端发送的分布式事务;从事务管理节点获取所述分布式事务的事务号;根据所述事务号对所述分布式事务中的目标语句进行改写,将改写后的目标语句发送至数据节点;接收所述数据节点返回的执行结果,并将执行结果返回至客户端。8.根据权利要求7所述的方法,其特征在于,所述根据所述事务号对所述分布式事务中的目标语句进行改写,包括:在insert语句中添加所述事务号;将update语句则改写成select...for update语句,以通过select...for update语句查询需要修改行的记录;将所述记录中的历史事务号更新为所述分布式事务的事务号,得到新的记录;通过insert语句执行所述新的记录;将delete语句改写成select...for update语句,以通过select...for update语句查询所述目标语句对应的全部记录;将所述全部记录中每个所述记录的历史事务号更新为所述分布式事务的事务号,并将删除标志位更新为true。9.一种计算机设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据库的控制程序,以实现权利要求7~8中任一项所述的数据库的控制方法。10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求7~8中任一项所述的数据库的控制方法。

技术总结
本发明实施例涉及一种数据库的控制系统、方法、计算机设备及存储介质,所述系统包括:计算节点,用于接收分布式事务,从事务管理节点获取事务号;对分布式事务中的目标语句进行改写,将改写后的目标语句发送至数据节点;接收数据节点返回的执行结果,并返回至客户端;数据节点,用于执行改写后的目标语句,将执行结果返回至计算节点;事务管理节点,用于当接收到计算节点针对分布式事务生成的请求消息或注销消息时,基于请求消息生成分布式事务对应的事务号,或,基于注销消息删除分布式事务对应的事务号。由此可以实现分布式数据库中将多个数据节点中的事务数据进行统一有效的管理,提高数据库的数据处理效率。提高数据库的数据处理效率。提高数据库的数据处理效率。


技术研发人员:李磊
受保护的技术使用者:金篆信科有限责任公司
技术研发日:2023.08.14
技术公布日:2023/9/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐