数据读取方法、装置、电子设备以及存储介质制造方法及图纸

技术编号:21184604 阅读:22 留言:0更新日期:2019-05-22 15:12
本发明专利技术公开了一种数据读取方法、装置、电子设备以及存储介质,属于数据库技术领域。本发明专利技术实施例提供的方法,通过找到当前全局读事务发生时处于活跃状态的全局写事务,来确定可能影响事务一致性的全局写事务,也即是找到了多个节点设备之间的、基于MVCC的、共同的具有事务一致性的点,基于这样的全局写事务的读取,相当于将所读取的时刻推后到了一个相对于当前时刻更延迟的时刻上,可以看作是一种延迟读的过程,而在数据读取过程中,由于排除了可能导致事务不一致的全局写事务,使得所读取的数据具有事务一致性,实现了数据库系统对外的数据一致性。

Data reading methods, devices, electronic devices and storage media

The invention discloses a data reading method, a device, an electronic device and a storage medium, belonging to the technical field of database. The method provided by the embodiment of the present invention determines the global write transaction that may affect transaction consistency by finding the global write transaction that is active when the current global read transaction occurs. That is to say, it finds the common point of transaction consistency among multiple node devices based on MVCC, and the reading of such global write transaction is equivalent to the reading time. Pushing back to a time that is more delayed than the current time can be regarded as a process of delayed reading. In the process of data reading, because the global write transactions which may lead to inconsistencies in transactions are excluded, the read data have transaction consistency, and the external data consistency of the database system is realized.

【技术实现步骤摘要】
数据读取方法、装置、电子设备以及存储介质
本专利技术涉及数据库
,特别涉及一种数据读取方法、装置、电子设备以及存储介质。
技术介绍
目前的分布式数据库系统很多可以支持跨节点的写操作,也即是,对于某一个写操作来说,可能涉及到对分布式数据库系统中多个节点设备的写入过程,由此,可能会产生读取数据的一致性问题,例如:当实现跨节点的写操作时,假设有两个节点设备,已经过了准备提交阶段,事务可以提交,第一个节点设备提交完成,第二个节点设备却尚未提交,此时,分布式数据库系统新来一个全局读操作,第一个节点设备提交的数据被读取,但是第二个节点设备因尚未完成数据提交,而导致其数据没有被读取,这种不一致现象,称为分布式读半已提交异常(DistributedReadCommitted-Committinganomaly,简称DRCC),因此,目前的数据读取不能保证读取的数据处于一致性状态。
技术实现思路
本专利技术提供了一种数据读取方法、装置、电子设备以及存储介质,可以解决数据读取的一致性的问题。技术方案如下:一方面,提供了一种数据读取方法,所述方法包括:向全局读事务对应的多个节点设备发送第一指示消息,所述第一指示消息用于指示所述多个节点设备停止进行全局写事务的提交操作;接收所述多个节点设备的相关事务列表,每个节点设备的相关事务列表包含节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;根据所述多个节点设备的相关事务列表,确定第一全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态;向所述多个节点设备发送所述第一全局写事务组;接收所述多个节点设备返回的第一目标数据,所述第一目标数据包括基于所述全局读事务和所述第一全局写事务组获取的数据。一方面,提供了一种数据读取方法,应用于节点设备,所述方法包括:根据接收到的第一指示消息,停止进行全局写事务的提交操作,所述第一指示消息用于指示全局读事务对应的多个节点设备停止进行全局写事务的提交操作;获取相关事务列表,所述相关事务列表包含所述节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;发送所述相关事务列表;接收第一全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态;根据所述第一全局写事务组和所述全局读事务,输出第一目标数据,所述第一目标数据包括基于所述全局读事务和所述第一全局写事务组所获取的数据。一方面,提供了一种数据读取方法,所述方法包括:向全局读事务对应的多个节点设备发送第二指示消息,所述第二指示消息用于指示所述多个节点设备返回所述全局读事务的相关事务列表;接收所述多个节点设备的相关事务列表,每个节点设备的相关事务列表包含节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;根据所述多个节点设备的相关事务列表,确定第一全局写事务组和第二全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态,所述第二全局写事务组所包括的第二全局写事务在对应节点设备上的事务状态均为正在执行状态;当所述第一全局写事务组中的第一全局写事务在对应节点设备上均处于已提交状态,向所述多个节点设备发送所述第一全局写事务组和所述第二全局写事务组;接收所述多个节点设备返回的第二目标数据,所述第二目标数据包括基于所述全局读事务、所述第一全局写事务组以及所述第二全局写事务组获取的数据。一方面,提供了一种数据读取方法,应用于节点设备,所述方法包括:接收第二指示消息,所述第二指示消息用于指示全局读事务的多个节点设备返回相关事务列表;获取相关事务列表,每个节点设备的相关事务列表包含所述节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;发送所述相关事务列表;接收第一全局写事务组和第二全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态,所述第二全局写事务组所包括的第二全局写事务在对应节点设备上的事务状态均为正在执行状态;根据所述第一全局写事务组、所述第二全局写事务组以及所述全局读事务,输出第二目标数据,所述第二目标数据包括基于所述全局读事务、所述第一全局写事务组以及所述第二全局写事务组获取的数据。一方面,提供了一种数据读取装置,所述装置包括:发送模块,用于向全局读事务对应的多个节点设备发送第一指示消息,所述第一指示消息用于指示所述多个节点设备停止进行全局写事务的提交操作;接收模块,用于接收所述多个节点设备的相关事务列表,每个节点设备的相关事务列表包含节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;确定模块,用于根据所述多个节点设备的相关事务列表,确定第一全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态;所述发送模块,还用于向所述多个节点设备发送所述第一全局写事务组;所述接收模块,还用于接收所述多个节点设备返回的第一目标数据,所述第一目标数据包括基于所述全局读事务和所述第一全局写事务组获取的数据。一方面,提供了一种数据读取装置,该装置包括:停止模块,用于根据接收到的第一指示消息,停止进行全局写事务的提交操作,所述第一指示消息用于指示全局读事务对应的多个节点设备停止进行全局写事务的提交操作;获取模块,用于获取相关事务列表,所述相关事务列表包含所述节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;发送模块,用于发送所述相关事务列表;接收模块,用于接收第一全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态;输出模块,用于当所述第一全局写事务组中的第一全局写事务处于已提交状态,根据所述第一全局写事务组和所述全局读事务,输出第一目标数据,所述第一目标数据包括基于所述全局读事务和所述第一全局写事务组所获取的数据。一方面,提供了一种数据读取装置,该装置包括:发送模块,用于向全局读事务对应的多个节点设备发送第二指示消息,所述第二指示消息用于指示所述多个节点设备返回所述全局读事务的相关事务列表;接收模块,用于接收所述多个节点设备的相关事务列表,每个节点设备的相关事务列表包含节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;确定模块,用于根据所述多个节点设备的相关事务列表,确定第一全局写事务组和第二全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态,所述第二全局写事务组所包括的第二全局写事务在对本文档来自技高网...

【技术保护点】
1.一种数据读取方法,其特征在于,所述方法包括:向全局读事务对应的多个节点设备发送第一指示消息,所述第一指示消息用于指示所述多个节点设备停止进行全局写事务的提交操作;接收所述多个节点设备的相关事务列表,每个节点设备的相关事务列表包含节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;根据所述多个节点设备的相关事务列表,确定第一全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态;向所述多个节点设备发送所述第一全局写事务组;接收所述多个节点设备返回的第一目标数据,所述第一目标数据包括基于所述全局读事务和所述第一全局写事务组获取的数据。

【技术特征摘要】
1.一种数据读取方法,其特征在于,所述方法包括:向全局读事务对应的多个节点设备发送第一指示消息,所述第一指示消息用于指示所述多个节点设备停止进行全局写事务的提交操作;接收所述多个节点设备的相关事务列表,每个节点设备的相关事务列表包含节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;根据所述多个节点设备的相关事务列表,确定第一全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态;向所述多个节点设备发送所述第一全局写事务组;接收所述多个节点设备返回的第一目标数据,所述第一目标数据包括基于所述全局读事务和所述第一全局写事务组获取的数据。2.根据权利要求1所述的方法,其特征在于,所述根据所述多个节点设备的相关事务列表,确定第一全局写事务组包括:从所述多个节点设备的相关事务列表中,当任一事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态时,将所述事务作为第一全局写事务添加至所述第一全局写事务组。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:当任一读事务涉及到跨节点操作时,将所述读事务确定为全局读事务,向全局事务标识生成集群发送生成请求;接收所述全局事务标识生成集群所返回的全局事务标识,将该全局事务标识作为该全局读事务的事务标识。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当主备结构的数据库中采用主从逻辑复制技术时,在备机接收到主机传递的全局事务的操作指令时,根据所述全局事务的全局事务标识对所述备机上执行事务的事务标识进行赋值;当主备结构的数据库中采用主从物理复制技术时,在基于所述全局读事务进行读取的过程中,读取所述备机中存储的当前态数据和所述备机的回滚段信息中的过渡态数据。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当在目标时长内未接收到所述多个节点设备的至少一个节点设备的应答时,回滚所述全局读事务。6.一种数据读取方法,其特征在于,应用于节点设备,所述方法包括:根据接收到的第一指示消息,停止进行全局写事务的提交操作,所述第一指示消息用于指示全局读事务对应的多个节点设备停止进行全局写事务的提交操作;获取相关事务列表,所述相关事务列表包含所述节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;发送所述相关事务列表;接收第一全局写事务组,所述第一全局写事务组所包括的第一全局写事务在对应节点设备上的事务状态包括正在执行状态和准备提交状态;当所述第一全局写事务组中的第一全局写事务处于已提交状态,根据所述第一全局写事务组和所述全局读事务,输出第一目标数据,所述第一目标数据包括基于所述全局读事务和所述第一全局写事务组所获取的数据。7.根据权利要求6所述的方法,其特征在于,所述获取相关事务列表包括:遍历所述节点设备上正在进行的全局写事务;当任一个全局写事务所对应的节点设备包括所述多个节点设备中的至少两个节点设备,将所述写事务添加至所述相关事务列表。8.根据权利要求6所述的方法,其特征在于,所述根据所述第一全局写事务组和所述全局读事务,输出所述第一目标数据,所述目标数据包括基于所述全局读事务和所述第一全局写事务组所获取的数据包括:根据所述全局读事务的事务快照,输出所述全局读事务的目标元组中的第一元组,所述第一元组为对于所述全局读事务可见的元组;如果所述全局读事务的目标元组中包括第二元组,且提交所述第二元组的事务为任一个第一全局写事务,输出所述第二元组,所述第二元组为对于所述全局读事务不可见的元组。9.一种数据读取方法,其特征在于,所述方法包括:向全局读事务对应的多个节点设备发送第二指示消息,所述第二指示消息用于指示所述多个节点设备返回所述全局读事务的相关事务列表;接收所述多个节点设备的相关事务列表,每个节点设备的相关事务列表包含节点设备上正在进行的相关全局写事务以及每个相关全局写事务的事务状态,每个相关全局写事务对应于所述多个节点设备中至少两个节点设备;根据所述多个节点设备的相关事务列表,确定第一全局写事务...

【专利技术属性】
技术研发人员:李海翔卢卫杜小勇潘安群
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1