数据读取方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:24251483 阅读:69 留言:0更新日期:2020-05-22 23:32
本发明专利技术公开了一种数据读取方法、装置、计算机设备及存储介质,属于数据库技术领域。本发明专利技术通过数据读取请求携带的读取条件,确定符合该读取条件的多个元组,由于数据库系统中维护了各个全局事务的全局事务状态,从而获取到符合一致性条件的全局事务状态,从而根据全局事务状态,获取全局提交时刻,基于该多个全局事务的全局提交时刻,从该多个元组中确定目标元组。正是由于对不同的全局事务状态赋予不同的全局提交时刻,直接基于全局提交来判断元组的可见性,也就避免了发生DRCC异常,保证了数据库系统中全局读操作的事务一致性。

Data reading method, device, computer equipment and storage medium

【技术实现步骤摘要】
数据读取方法、装置、计算机设备及存储介质
本专利技术涉及数据库
,特别涉及一种数据读取方法、装置、计算机设备及存储介质。
技术介绍
目前的分布式数据库系统中,有很多可以支持跨节点的写操作,也即是,对于某一个写操作来说,可能涉及到对分布式数据库系统中多个节点设备的写入过程,由此,可能会产生读取数据的事务一致性问题。例如:当实现跨节点的写操作时,假设有两个节点设备,已经完成了事务提交的准备阶段,本事务可以提交,第一个节点设备提交完成,第二个节点设备正在提交过程中却尚未提交,此时,分布式数据库系统新来了一个全局读操作,第一个节点设备已提交的数据被读取,但是第二个节点设备因尚未完成数据提交,而导致其正在提交的数据无法被读取,这种不一致现象,称为分布式读半已提交异常(DistributedReadCommitted-Committinganomaly,简称DRCC异常),因此,目前的数据读取过程中,不能保证读取的数据处于事务一致的状态。
技术实现思路
本专利技术实施例提供了一种数据读取方法、装置、计算机设备及存储介质,能够解决目前的数据读取过程中,不能保证读取的数据处于事务一致的状态的问题。该技术方案如下:一方面,提供了一种数据读取方法,该方法包括:当接收到数据读取请求时,根据所述数据读取请求携带的读取条件,确定符合所述读取条件的多个元组;获取所述多个元组所对应的多个全局事务的全局事务状态;根据所述多个全局事务的全局事务状态,获取所述多个全局事务的全局提交时刻;基于所述多个全局事务的全局提交时刻,从所述多个元组中确定目标元组,所述目标元组相对于所述数据读取请求可见。一方面,提供了一种数据读取方法,该方法包括:当获取到全局读事务时,向所述全局读事务涉及的多个节点设备发送数据读取请求;当接收到所述多个节点设备中每个节点设备所返回的目标元组时,提交所述全局读事务,所述目标元组相对于所述数据读取请求可见,所述目标元组由每个节点设备基于多个全局事务的全局提交时刻,从多个元组中确定所得;当所述全局读事务提交完成时,发送所述每个节点设备所返回的目标元组。一方面,提供了一种数据读取装置,该装置包括:第一确定模块,用于当接收到数据读取请求时,根据所述数据读取请求携带的读取条件,确定符合所述读取条件的多个元组;第一获取模块,用于获取所述多个元组所对应的多个全局事务的全局事务状态;第二获取模块,用于根据所述多个全局事务的全局事务状态,获取所述多个全局事务的全局提交时刻;第二确定模块,用于基于所述多个全局事务的全局提交时刻,从所述多个元组中确定目标元组,所述目标元组相对于所述数据读取请求可见。在一种可能实施方式中,当所述数据读取请求中携带指定时刻时,所述第二获取模块用于:对所述多个元组中任一元组所对应的任一全局事务,如果所述全局事务在所述指定时刻的全局事务状态为已提交状态或正在提交状态,当所述全局事务的事务完成时刻大于所述指定时刻时,将所述全局事务的全局提交时刻置为所述指定时刻与任一正数相加所得到的数值;当所述全局事务的事务完成时刻不大于所述指定时刻时,将所述全局事务的全局提交时刻置为所述事务完成时刻。在一种可能实施方式中,当所述数据读取请求中携带指定时刻时,所述第二获取模块用于:对所述多个元组中任一元组所对应的任一全局事务,如果所述全局事务在所述指定时刻的全局事务状态为正在执行状态、正在准备状态、已回滚状态或者正在回滚状态中任一状态,将所述全局事务的全局提交时刻置为所述指定时刻与任一正数相加所得到的数值。在一种可能实施方式中,当所述数据读取请求中携带指定时间段时,所述第二获取模块用于:基于所述指定时间段的起始时刻,执行获取所述多个全局事务在所述起始时刻下的全局提交时刻的操作;基于所述指定时间段的终止时刻,执行获取所述多个全局事务在所述终止时刻下的全局提交时刻的操作。在一种可能实施方式中,所述第二确定模块用于:当所述数据读取请求中携带指定时刻时,对所述多个元组中任一元组,如果产生所述元组的全局事务的全局提交时刻小于所述指定时刻,且修改所述元组的全局事务的全局提交时刻大于所述指定时刻,将所述元组确定为一个目标元组。在一种可能实施方式中,所述第二确定模块用于:当所述数据读取请求中携带指定时间段时,对所述多个元组中任一元组,如果产生所述元组的全局事务的全局提交时刻小于所述指定时间段的终止时刻,且修改所述元组的全局事务的全局提交时刻大于所述指定时间段的起始时刻,将所述元组确定为一个目标元组。在一种可能实施方式中,所述第一获取模块用于:对所述多个元组中的任一元组上记录的全局事务标识,从本地的事务状态列表中,查询是否存在与所述全局事务标识所对应的全局事务状态;当存在时,获取与所述全局事务标识所对应的全局事务状态;当不存在时,向所述全局事务标识对应的多个节点设备发送查询请求,接收所述多个节点设备中任一节点设备返回的全局事务状态。在一种可能实施方式中,每个全局事务对应于一个事务状态元组,所述事务状态元组包括所述全局事务的全局事务标识、事务开始时刻、事务完成时刻、全局事务状态或者节点设备标识中的至少一项。在一种可能实施方式中,所述装置还包括:当对任一个全局写事务提交完成时,向所述全局写事务对应的目标节点设备发送数据同步请求,接收所述目标节点设备返回的全局事务状态,所述目标节点设备用于存储所述全局写事务的全局事务状态;或,如果当前执行的事务涉及到所述全局写事务对应的所述目标节点设备时,与所述目标节点设备之间进行增量同步;或,每间隔目标时长,与所述目标节点设备之间进行增量同步。一方面,提供了一种数据读取装置,该装置包括:发送模块,用于当获取到全局读事务时,向所述全局读事务涉及的多个节点设备发送数据读取请求;提交模块,用于当接收到所述多个节点设备中每个节点设备所返回的目标元组时,提交所述全局读事务,所述目标元组相对于所述数据读取请求可见,所述目标元组由每个节点设备基于多个全局事务的全局提交时刻,从多个元组中确定所得;所述发送模块,还用于当所述全局读事务提交完成时,发送所述每个节点设备所返回的目标元组。在一种可能实施方式中,所述装置还包括:对任一全局写事务,向所述全局写事务涉及的多个节点设备发送数据准备请求;当接收到所述多个节点设备中每个节点设备所返回的准备成功响应时,向所述多个节点设备发送提交指令,通知目标节点设备记录所述全局写事务的事务完成时刻,并通知所述目标节点设备将所述全局写事务的全局事务状态置为已提交状态;当接收到所述多个节点设备中任一节点设备所返回的准备失败响应时,向所述多个节点设备发送回滚指令,通知所述目标节点设备将所述全局写事务的全局事务状态置为正在回滚状态,当接收到所述多个节点设备中每个节点设备所返回的回滚完成响应时,通知所述目标节点本文档来自技高网...

【技术保护点】
1.一种数据读取方法,其特征在于,所述方法包括:/n当接收到数据读取请求时,根据所述数据读取请求携带的读取条件,确定符合所述读取条件的多个元组;/n获取所述多个元组所对应的多个全局事务的全局事务状态;/n根据所述多个全局事务的全局事务状态,获取所述多个全局事务的全局提交时刻;/n基于所述多个全局事务的全局提交时刻,从所述多个元组中确定目标元组,所述目标元组相对于所述数据读取请求可见。/n

【技术特征摘要】
1.一种数据读取方法,其特征在于,所述方法包括:
当接收到数据读取请求时,根据所述数据读取请求携带的读取条件,确定符合所述读取条件的多个元组;
获取所述多个元组所对应的多个全局事务的全局事务状态;
根据所述多个全局事务的全局事务状态,获取所述多个全局事务的全局提交时刻;
基于所述多个全局事务的全局提交时刻,从所述多个元组中确定目标元组,所述目标元组相对于所述数据读取请求可见。


2.根据权利要求1所述的方法,其特征在于,当所述数据读取请求中携带指定时刻时,所述根据所述多个全局事务的全局事务状态,获取所述多个全局事务的全局提交时刻包括:
对所述多个元组中任一元组所对应的任一全局事务,如果所述全局事务在所述指定时刻的全局事务状态为已提交状态或正在提交状态,当所述全局事务的事务完成时刻大于所述指定时刻时,将所述全局事务的全局提交时刻置为所述指定时刻与任一正数相加所得到的数值;当所述全局事务的事务完成时刻不大于所述指定时刻时,将所述全局事务的全局提交时刻置为所述事务完成时刻。


3.根据权利要求1所述的方法,其特征在于,当所述数据读取请求中携带指定时刻时,所述根据所述多个全局事务的全局事务状态,获取所述多个全局事务的全局提交时刻包括:
对所述多个元组中任一元组所对应的任一全局事务,如果所述全局事务在所述指定时刻的全局事务状态为正在执行状态、正在准备状态、已回滚状态或者正在回滚状态中任一状态,将所述全局事务的全局提交时刻置为所述指定时刻与任一正数相加所得到的数值。


4.根据权利要求1所述的方法,其特征在于,当所述数据读取请求中携带指定时间段时,所述根据所述多个全局事务的全局事务状态,获取所述多个全局事务的全局提交时刻包括:
基于所述指定时间段的起始时刻,执行获取所述多个全局事务在所述起始时刻下的全局提交时刻的操作;
基于所述指定时间段的终止时刻,执行获取所述多个全局事务在所述终止时刻下的全局提交时刻的操作。


5.根据权利要求1所述的方法,其特征在于,所述基于所述多个全局事务的全局提交时刻,从所述多个元组中确定目标元组包括:
当所述数据读取请求中携带指定时刻时,对所述多个元组中任一元组,如果产生所述元组的全局事务的全局提交时刻小于所述指定时刻,且修改所述元组的全局事务的全局提交时刻大于所述指定时刻,将所述元组确定为一个目标元组。


6.根据权利要求1所述的方法,其特征在于,所述基于所述多个全局事务的全局提交时刻,从所述多个元组中确定目标元组包括:
当所述数据读取请求中携带指定时间段时,对所述多个元组中任一元组,如果产生所述元组的全局事务的全局提交时刻小于所述指定时间段的终止时刻,且修改所述元组的全局事务的全局提交时刻大于所述指定时间段的起始时刻,将所述元组确定为一个目标元组。


7.根据权利要求1所述的方法,其特征在于,所述获取所述多个元组所对应的多个全局事务的全局事务状态包括:
对所述多个元组中的任一元组上记录的全局事务标识,从本地的事务状态列表中,查询是否存在与所述全局事务标识所对应的全局事务状态;
当存在时,获取与所述全局事务标识所对应的全局事务状态;
当不存在时,向所述全局事务标识对应的多个节点设备发送查询请求,接收所述多个节点设备中任一节点设备返回的全局事务状态。


8.根据权利要求1所述的方法,其特征在于,每个全局事务对应于一个事务状态元组,所...

【专利技术属性】
技术研发人员:李海翔卢卫杜小勇赵展浩潘安群
申请(专利权)人:中国人民大学腾讯科技深圳有限公司
类型:发明
国别省市:北京;11

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

1