CN112069196B - 基于数据库的数据处理方法、装置、设备及可读存储介质 - Google Patents
基于数据库的数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112069196B CN112069196B CN202011264239.1A CN202011264239A CN112069196B CN 112069196 B CN112069196 B CN 112069196B CN 202011264239 A CN202011264239 A CN 202011264239A CN 112069196 B CN112069196 B CN 112069196B
- Authority
- CN
- China
- Prior art keywords
- transaction
- relationship
- partial order
- order relationship
- data item
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本申请实施例公开了一种基于数据库的数据处理方法、装置、设备及可读存储介质,该方法包括:获取针对数据库的第一事务与第二事务;在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系;第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,第二配置偏序关系是指基于事务所定义的偏序关系;基于目标偏序关系,构建包含第一事务与第二事务的事务有向图;根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测。采用本申请,从而可以提高对事务系统进行异常检测的准确率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于数据库的数据处理方法、装置、设备以及可读存储介质。
背景技术
数据处理技术需要事务的语义并借用关系数据库的ACID四个特性,来保证系统的事务特性,以满足电子交易的需求。其中,A是原子性,C是一致性,I是隔离性,D是持久性。电子交易类操作,需要由这四个特性来保证交易的安全与可靠。分布式事务处理技术同样需要满足事务的ACID四个特性,为满足ACID四个特性,数据处理技术需要多种技术做保障,其中最重要的就是数据的一致性和隔离性,其中,数据的一致性决定了数据的正确性问题,而隔离性决定了并发系统的性能问题。
实现事务一致性,也就是发现、解决事务并发操作在数据项上是否造成数据异常且如何消除数据异常的问题,主要依赖的相关技术包括四种数据异常与隔离级别、数据库的事务处理技术中的并发访问控制技术,例如,基于封锁的并发访问控制技术、基于时间戳排序的并发访问控制技术、基于多版本并发控制(Multi-Version Concurrency Control,MVCC)并发访问控制技术和基于运行控制中心(operation control center,OCC)并发访问控制技术等。这些技术需要保证数据不出现异常,即满足事务的可串行化调度,从而来保证数据的正确性。
以上所述的事务一致性是数据库范畴内定义的和事务相关的如何避免数据异常的一致性。数据库领域范围内的可串行化技术、多种并发访问控制技术仅是解决事务一致性相关问题,无法解决其他一致性问题(例如,共享数据对象一致性问题),由此通过可串行化技术,无法检测到部分异常问题。也就是说,存在部分满足可串行化要求,但仍具备异常的事务,可串行化调度技术无法检测,也就是说,在事务一致性下与其他一致性(例如,共享数据对象一致性)下的数据异常问题,无法进行识别,对系统的状态检测准确率低。
发明内容
本申请实施例提供一种基于数据库的数据处理方法、装置、设备以及可读存储介质,可以提高对事务系统进行异常检测的准确率。
本申请实施例一方面提供了一种基于数据库的数据处理方法,包括:
获取针对数据库的第一事务与第二事务;
在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系;第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,第二配置偏序关系是指基于事务所定义的偏序关系;
基于目标偏序关系,构建包含第一事务与第二事务的事务有向图;
根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测。
本申请实施例一方面提供了一种基于数据库的数据处理装置,包括:
事务获取模块,用于获取针对数据库的第一事务与第二事务;
关系确定模块,用于在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系;第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,第二配置偏序关系是指基于事务所定义的偏序关系;
图构建模块,用于基于目标偏序关系,构建包含第一事务与第二事务的事务有向图;
状态检测模块,用于根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测。
其中,关系确定模块包括:
事务时间获取单元,用于获取第一事务的第一事务起始时间与第一事务结束时间,以及第二事务的第二事务起始时间与第二事务结束时间;
执行时间确定单元,用于确定第一事务起始时间与第一事务结束时间组成的第一执行时间段,以及第二事务起始时间与第二事务结束时间组成的第二执行时间段;
操作项获取单元,用于获取第一事务与第二事务分别操作的操作数据项;
事务关系确定单元,用于根据第一执行时间段、第二执行时间段以及第一事务与第二事务分别操作的操作数据项,确定第一事务与第二事务之间的事务关联关系;
偏序关系确定单元,用于根据第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系。
其中,第一事务与第二事务之间的事务关联关系为并发关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
偏序关系确定单元包括:
第一关系确定子单元,用于若第一事务为对目标操作数据项的第一版本进行读操作,且第二事务为对目标操作数据项的第二版本进行写操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系以及第二配置偏序关系中的读写偏序关系相匹配,将读写偏序关系确定为目标偏序关系;第一版本的生成时间早于第二版本的生成时间;
第一关系确定子单元,还用于若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第一版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系以及第二配置偏序关系中的写读偏序关系相匹配,将写读偏序关系确定为目标偏序关系;
第一关系确定子单元,还用于若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第二版本进行写操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的并发写偏序关系相匹配,将并发写偏序关系确定为目标偏序关系;读写偏序关系、写读偏序关系以及并发写偏序关系是基于事务对目标操作数据项的操作所定义的偏序关系。
其中,第一事务与第二事务之间的事务关联关系为并发关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
偏序关系确定单元包括:
第二关系确定子单元,用于若第一事务为在第一执行时间段内对目标操作数据项的第一版本进行写操作,且第二事务为在第二执行时间段内对目标操作数据项的第一版本进行读操作,且第一事务在第三执行时间段内进行回滚操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的反向偏序关系相匹配,将反向偏序关系确定为目标偏序关系;第三执行时间段为回滚操作的事务执行时间段,第二事务起始时间早于回滚操作对应的操作起始时间。
其中,第一事务与第二事务之间的事务关联关系为因果关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
偏序关系确定单元包括:
第一提交时间获取子单元,用于获取第一事务的事务提交时间;
第三关系确定子单元,用于若第一事务为对目标操作数据项的第一版本进行写操作得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的因果写读偏序关系相匹配,将因果写读偏序关系确定为目标偏序关系;
第三关系确定子单元,还用于若第一事务为对操作数据项的第一版本进行写操作,且第二事务为对操作数据项的第二版本进行写操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的因果写偏序关系相匹配,将因果写偏序关系确定为目标偏序关系;第一版本的生成时间早于第二版本的生成时间。
其中,第一事务与第二事务之间的事务关联关系为相似因果关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
偏序关系确定单元包括:
第二提交时间获取子单元,用于获取第一事务的事务提交时间;
第四关系确定子单元,用于若第一事务为对目标操作数据项的第一版本进行写操作,得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的相似因果写读偏序关系相匹配,将相似因果写读偏序关系确定为目标偏序关系;
第四关系确定子单元,还用于若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第二版本进行写操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的相似因果写偏序关系相匹配,将相似因果写偏序关系确定为目标偏序关系。
其中,相似因果关联关系还包括隐藏逻辑因果关系;
偏序关系确定单元还包括:
第五关系确定子单元,用于若第一事务与第二事务存在隐藏逻辑因果关系,且第一事务为对目标操作数据项的第一版本进行写操作,得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的隐藏逻辑偏序关系相匹配,将隐藏逻辑偏序关系确定为目标偏序关系。
其中,事务关系确定单元包括:
并发关系确定子单元,用于若第一事务的操作数据项与第二事务的操作数据项相同,则将第一执行时间段与第二执行时间段进行匹配,当第一执行时间段与第二执行时间段之间存在重复时间段时,确定第一事务与第二事务之间的事务关联关系为并发关联关系;
因果关系确定子单元,用于若第一执行时间段与第二执行时间段之间不存在重复时间段,则获取第一事务与第二事务分别所属的进程,当第一事务与第二事务分别所属的进程相同时,确定第一事务与第二事务之间的事务关联关系为因果关联关系;
相似因果关系确定子单元,用于若第一执行时间段与第二执行时间段之间不存在重复时间段,且第一事务与第二事务分别所属的进程不同,则确定第一事务与第二事务之间的事务关联关系为相似因果关联关系。
其中,图构建模块包括:
边构建单元,用于获取目标偏序关系所指示的第一事务与第二事务之间的指向方向,根据指向方向构建第一事务和第二事务之间的有向边;
图生成单元,用于根据有向边,生成包含第一事务与第二事务的事务有向图。
其中,状态检测模块包括:
关联偏序关系获取单元,用于在事务有向图中,获取与第一事务相关联的偏序关系,以及与第二事务相关联的偏序关系;与第一事务相关联的偏序关系以及与第二事务相关联的偏序关系包括目标偏序关系;
路径生成单元,用于根据与第一事务相关联的偏序关系,以及与第二事务相关联的偏序关系,生成第一事务与第二事务之间的事务有向路径;
状态检测单元,用于根据事务有向路径,对第一事务与第二事务之间的一致性状态进行检测。
其中,状态检测单元包括:
异常状态确定子单元,用于若事务有向路径为闭环路径,则确定第一事务与第二事务之间的一致性状态为异常状态;
正常状态确定子单元,用于若事务有向路径不为闭环路径,则确定第一事务与第二事务之间的一致性状态为正常状态。
其中,该装置还包括:
待提交事务获取模块,用于若第一事务与第二事务之间的一致性状态为异常状态,则在第一事务与第二事务之间获取待提交事务;
回滚模块,用于在待提交事务中,确定待回滚事务,将待回滚事务进行回滚操作。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本申请实施例中的方法。
本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中一方面提供的方法。
在本申请实施例中,在事务上,通过构建有向图来对事务之间的一致性状态进行检测。而对于有向图的构建,又是通过事务之间的偏序关系来进行构建,其中,事务之间的偏序关系包括基于共享的操作数据项所定义的偏序关系以及基于事务所定义的偏序关系。其中,基于共享的操作数据项所定义的偏序关系即为共享数据对象操作一致性,也就是说,本文所构建的有向图中,包含有与事务相关的偏序关系,同时也包含有与共享数据对象操作一致性相关的偏序关系,从而将共享数据对象操作一致性与事务一致性做到了有效融合,由此根据有向图对事务之间的一致性进行检测时,是基于两个一致性体系融合后的统一体系所进行的检测,可以有效发现数据不一致的问题,从而可以提高进行异常检测的准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2是本申请实施例提供的一种场景示意图;
图3是本申请实施例提供的一种基于数据库的数据处理方法的流程示意图;
图4是本申请实施例提供的一种确定事务之间的目标偏序关系的示意图;
图5是本申请实施例提供的一种事务有向图的示意图;
图6是本申请实施例提供的一种并发一致性模型的示意图;
图7是本申请实施例提供的一种分布式数据库系统的架构示意图;
图8是本申请实施例提供的一种基于数据库的数据处理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,如图1所示,该网络架构可以包括业务服务器1000和用户终端集群,用户终端集群可以包括一个或者多个用户终端,这里将不对用户终端的数量进行限制。如图1所示,多个用户终端可以包括用户终端100a、用户终端100b、用户终端100c、…、用户终端100n;如图1所示,用户终端100a、用户终端100b、用户终端100c、…、用户终端100n可以分别与业务服务器1000进行网络连接,以便于每个用户终端可以通过该网络连接与业务服务器1000之间进行数据交互。
可以理解的是,如图1所示的每个用户终端均可以安装有目标应用,当该目标应用运行于各用户终端中时,可以分别与图1所示的业务服务器1000之间进行数据交互,使得业务服务器1000可以接收来自于每个用户终端的业务数据。其中,该目标应用可以包括具有显示文字、图像、音频以及视频等数据信息功能的应用。如,应用可以为系统检测应用,该异常检测应用可以用于用户输入命令指令。例如,对于分布式数据库系统的检测应用,业务服务器在检测到系统出现异常时,可以向用户终端发送该异常情况,用户可以通过该用户终端的显示界面查看到系统出现异常,随后用户可以通过用户终端输入异常解决指令,业务服务器在接收到该用户输入的异常解决指令后,可以对异常进行解决,并将异常解决后系统的状态返回至用户终端。
本申请实施例可以在多个用户终端中选择一个用户终端作为目标用户终端,该用户终端可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、智能音箱、台式计算机、智能手表、车载设备等携带数据处理功能(例如,文本数据显示功能、视频数据播放功能、音乐数据播放功能)的智能终端,但并不局限于此。例如,本申请实施例可以将图1所示的用户终端100a作为该目标用户终端,该目标用户终端中可以集成有上述目标应用,此时,该目标用户终端可以通过该目标应用与业务服务器1000之间进行数据交互。
如,用户在使用用户终端中的目标应用(如分布式数据库系统检测应用)时,业务服务器检测到分布式数据库系统的一致性状态为异常状态,业务服务器可以将该检测结果发送至用户终端,用户可以通过该目标应用查看到该检测结果(系统为异常的检测结果),随后,用户可以点击解决控件,用户终端可以响应用户对该解决控件的触发操作,生成异常解决请求并将该异常解决请求发送至业务服务器,业务服务器在接收到该异常解决请求后,可以对该系统的异常进行解决。随后,业务服务器可以将系统的状态返回至用户终端。也就是说,通过该分布式数据库系统检测应用,用户可以对该分布式数据库系统的状态进行实时监测。
可选的,可以理解的是,网络架构中可以包括多个业务服务器,一个用户终端可以与一个业务服务器相连接,每个业务服务器可以获取到与之相连接的用户终端中的业务数据(如,用户输入的操作指令),并根据业务数据进行具体操作(例如,对系统进行异常检测或对系统的异常进行解决)。其中,业务服务器对系统进行异常检测以及对系统的异常进行解决的具体方式,可以参见后续图3所对应实施例中的描述。
可以理解的是,本申请实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于用户终端或业务服务器。其中,业务服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,用户终端以及业务服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
为便于理解,请参见图2,图2是本申请实施例提供的一种场景示意图。其中,如图2所示的用户终端A可以为在上述图1所对应实施例的用户终端集群中所选取的任意一个用户终端,比如,该用户终端可以为上述用户终端100b;如图2所示的业务服务器可以为在上述图1所对应实施例中的业务服务器1000。
如图2所示,业务服务器可以对系统进行异常检测,在检测到异常时,可以将系统为异常的检测结果发送至用户终端A,用户终端A在接收到业务服务器发送的检测结果后,可以将该检测结果输出于显示界面,用户A可以在用户终端A的显示界面中查看到该检测结果。随后,用户A可以点击该显示界面中的确定控件,用户终端A可以响应该用户A的这一触发操作,生成异常解决请求,并将该异常解决请求发送至业务服务器,业务服务器在接收到该异常解决请求后,可以对该系统的异常进行排查解决。其中,业务服务器对系统进行异常检测的具体实现方式,可以参见后续图3所对应实施例中的描述。
为便于理解,请参见图3,图3是本申请实施例提供的一种基于数据库的数据处理方法的流程示意图。其中,该方法可以由用户终端(例如,上述图1、图2所示的用户终端)执行,也可以由业务服务器(如上述图1所对应实施例中的业务服务器1000)执行,还可以由用户终端和业务服务器(如上述图1所对应实施例中的业务服务器1000)共同执行。为便于理解,本实施例以该方法由上述业务服务器执行为例进行说明。其中,该方法至少可以包括以下步骤S101-步骤S105:
步骤S101,获取针对数据库的第一事务与第二事务。
本申请中,事务可以是指一个系统内部,每个操作系列的单位。单个操作也可以构成一个事务。例如,在系统内部,用户A1通过银行给用户A2转账,这个过程可以是一个事务。一个数据库系统中,可以包含有一个或多个事务。
步骤S102,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系;第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,第二配置偏序关系是指基于事务所定义的偏序关系。
本申请中,每个事务都包含有事务起始时间与事务结束时间,对于确定两个事务(例如,第一事务与第二事务)之间的偏序关系的具体方法可以为,先获取第一事务的第一事务起始时间与第一事务结束时间,以及第二事务的第二事务起始时间与第二事务结束时间;随后,可以确定第一事务起始时间与第一事务结束时间组成的第一执行时间段,以及第二事务起始时间与第二事务结束时间组成的第二执行时间段;随后,可以获取该第一事务与第二事务分别操作的数据项,根据该第一执行时间段、该第二执行时间段以及第一事务与第二事务分别操作的操作数据项,可以确定该第一事务与第二事务之间的事务关联关系;随后,可以根据该第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系。
其中,对于第一事务与第二事务之间的关联关系的具体确定方法可以为,若第一事务的操作数据项与第二事务的操作数据项相同(也就是两个事务操作的为共享数据项),则可以将该第一执行时间段与第二执行时间段进行匹配,当第一执行时间段与第二执行时间段之间存在重复时间段时,可以确定该第一事务与第二事务之间的事务关联关系为并发关联关系;应当理解,若第一事务与第二事务的事务执行时间有重叠,且两个事务操作了共同的操作数据项,则可以将两个事务确定为是直接并发事务(也就是并发事务)。
而若第一执行时间段与第二执行时间段之间不存在重复时间段,则可以获取该第一事务与第二事务分别所属的进程,当第一事务与该第二事务分别所属的进程相同时,可以确定该第一事务与第二事务之间的事务关联关系为因果关联关系;应当理解,若第一事务与第二事务的事务执行时间不重叠,但两个事务在同一个进程发生,则可以确定第一事务与第二事务为因果相关事务,也就是具有因果关联关系。
而若第一执行时间段与第二执行时间段之间不存在重复时间段,则可以获取该第一事务与第二事务分别所属的进程,当第一事务与第二事务分别所属的进程不同时,可以确定该第一事务与第二事务之间的事务关联关系为相似因果关联关系;应当理解,若第一事务与第二事务的事务执行时间不重叠,且两个事务在不同进程发生,则可以确定第一事务与第二事务为相似因果相关事务,也就是具有相似因果关联关系。
应当理解,本申请对于事务之间的关联关系进行了定义(例如,定义有并发关联关系、因果关联关系以及相似因果关联关系等),此外,对事务之间的偏序关系也进行了定义(也就是第一配置偏序关系与第二配置偏序关系),两个事务的目标偏序关系可以基于本申请所定义的第一配置偏序关系与第二配置偏序关系进行确定。为便于理解,以下将对第一配置偏序关系与第二配置偏序关系进行说明。
第一配置偏序关系(基于共享的操作数据项所定义的偏序关系)
1、在共享的操作数据项上,对于并发事务范围内的偏序关系定义,包含以下4种并发偏序关系(Concurrent Partial Order,CPO):
(1)RW偏序(读写偏序关系):事务T1读了数据项X的版本x0,事务T2写了数据项X的版本x1,则事务T1与事务T2构成偏序关系,并表示为(T1—>T2|X)。
(2)WR偏序(写读偏序关系):事务T1写了数据项X的版本x0,事务T2读了数据项X的版本x0,则事务T1与事务T2构成偏序关系,并表示为(T1—>T2|X)。
(3)WW偏序(并发写偏序关系):事务T1写了数据项X的版本x0,事务T2写了数据项X的版本x1,则事务T1与事务T2构成偏序关系,并表示为(T1—>T2|X)。
(4)WRA偏序(反向偏序关系):事务T1写了数据项X的版本x0,事务T2读了数据项X的版本x0;随后,事务T1发生回滚操作,由此该回滚操作对事务T2的读操作产生了一个撤销的偏序关系,该偏序关系是由事务T2所发出并指向事务T1的,故在事务T1与事务T2之间,构成一个反向的偏序关系,并表示为(T2—>T1|X)。
以上是对第一配置偏序关系中,在并发事务范围内所定义的偏序关系;在第一配置偏序关系中,还包括在因果相关事务(具有因果关联关系)范围内,以及相似因果相关事务(具有相似因果关联关系)范围内所定义的偏序关系,以下将对因果相关事务范围内所定义的偏序关系进行说明。
2、在共享的操作数据项上,对于因果相关事务范围内的偏序关系定义,包含以下的因果偏序关系(Program Order,PO):
(1)RCW偏序(无偏序关系):事务T1读了数据项X,并提交在前,随后事务T2写了数据项X,因为前者对后者并不构成影响,所以事务T1与事务T2之间不具备偏序关系。
(2)WCR偏序(因果写读偏序关系):事务T1写了数据项X,并提交在前,随后,读数据项X的事务T2发生。因为事务T2读到的肯定是先提交的事务T1所写的值,则事务T1与事务T2之间是具有因果关系的,且事务T1是因,事务T2是果。若当事务T1与事务T2是同一个进程中,则可以确定事务T1与事务T2之间构成在一个进程中的因果偏序关系,并表示为(T1—>T2|X)。
(3)WCW偏序(因果写偏序关系):事务T1写了数据项X的版本x0,并进行提交,随后,事务T2写了数据项X的版本x1,版本发生了变化。若事务T1与事务T2是同一个进程中,则可以确定事务T1与事务T2之间构成在一个进程中的因果偏序关系,并表示为(T1—>T2|X)。
3、在共享的操作数据项上,对于相似因果相关事务范围内的偏序关系定义,包含以下的相似因果偏序关系(Similar Program Order,SPO):
(1)相似因果写读偏序关系:事务T1写了数据项X,并提交在前,随后,读数据项X的事务T2发生。因为事务T2读到的是先提交的事务T1所写的值,则事务T1与事务T2之间是具有因果关系的,且事务T1是因,事务T2是果。若当事务T1与事务T2是在不同的进程中,则可以确定事务T1与事务T2之间构成在不同进程中的因果偏序关系,并表示为(T1—>T2|X)。
(2)相似因果写偏序关系:事务T1写了数据项X的版本x0,并进行提交,随后,事务T2写了数据项X的版本x1,版本发生了变化。若事务T1与事务T2是同一个进程中,则可以确定事务T1与事务T2之间构成在一个进程中的因果偏序关系,并表示为(T1—>T2|X)。
第二配置偏序关系(基于事务所定义的偏序关系)
1、事务之间,对于前述的在因果相关事务范围内的偏序关系,在并发操作的情况下,可能会发生以下2种异常情况:
(1)旧读(Stale Read,SR)偏序关系:共享的操作数据项的最新版本X-vi是T1事务造成的,而后发生的读操作(事务T2对该共享的操作数据项进行读操作)不是读取了该版本X-vi,而是读取了发生时间早于该版本的任一版本(也就是读取了该版本X-vi之前的某个版本),此种情况称为旧读。该情况发生时,事务T1与事务T2之间构成偏序关系,并表示为(T2—>T1|X)。
(2)未来读(Future Read,FR)偏序关系:读操作(事务T1)发生时,共享的操作数据项最新版本为X-vi,而后发生的写操作(事务T2)生成了更新的版本X-vj(j大于i),可以看出,事务T1的读操作不是读取了已有的版本X-vi,而是之后的版本X-vj,此种情况称为未来读。该情况发生时,事务T1与事务T2之间构成偏序关系,并表示为(T2—>T1|X)。
应当理解,在事务T1与事务T2之间为因果关联关系(执行时间不重叠,且在同一进程中)时,若事务T1对共享的操作数据项进行了写操作,则后发生的事务T2进行读操作时,读到的须为事务T1所写的值,若事务T2读到的并非为事务T1所写的值,则为异常。也就是说,在同一个进程中,不应该发生旧读的情况,而本申请在同一进程中,通过在事务T2读到的不是事务T1所写的值的情况下,构建偏序关系,由此可以通过该偏序关系识别出该事务T1与事务T2之间存在读取异常的情况。
同理,应当理解,在事务T1与事务T2之间为因果关联关系时,事务T1先对共享的操作数据项进行了读操作,后发生的事务T2对共享的操作数据项进行了写操作,事务T1是先发生的,但读取到的却为后发生的事务T2所写的值,发生了未来读的情况,则为异常。也就是说,在同一个进程中,不应该发生未来读的情况,而本申请在同一进程中,通过在事务T1读到的是后发生的事务T2所写的值的情况下,构建偏序关系,由此可以通过该偏序关系识别出该事务T1与事务T2之间存在读取异常的情况。
2、事务之间,存在逻辑偏序关系(Logical Partical Order,LPO)
逻辑偏序关系:逻辑关系时用户的隐含逻辑,无法在操作上体现其语义。以下将对逻辑偏序关系进行举例说明,以表达其语义。
例如,在一个分布式系统中,存在一个绑匪问题,其中,绑匪U2绑架了富商U1的家属,绑匪U2向富商U1索要一定金额。富商U1通过银行给绑匪U2转账,该过程是事务T1。即事务T1为“富商U1给绑匪U2转账”。随后,在转账成功后,富商U1电话告知绑匪U2转账已经完成,可以看出,“富商U1电话告知绑匪U2转账已经完成”这个事件是一个无法被银行的转账系统是无法感知的事件,在富商U1电话告知绑匪U2转账已经完成后,绑匪U2才会去查询自己的银行账户,以查看转账金额是否已经到账,绑匪U2查询账户的这个过程即为事务T2。也就是说,在事务T1与事务T2之间,存在一个隐含的基于时间发生的先后关系所构建的偏序关系,并表示为(T1—>T2|X),该偏序关系是无法被银行的转账系统所感知到的。
应当理解,在绑匪U2查询账户确认金额是否到账时,会存在2种可能的情况:一种是查询到了到账的金额;一种是未查询到金额。而在未查询到的情况下,表明该银行的转账系统存在共享的操作数据项上操作不一致的异常问题。若发生该不一致现象,则成为因果丢失(Cause Lost,CL)异常。也就是说,富商U1已通过银行转账,并已电话通知绑匪U2已转账成功,但绑匪U2却并未查询到该富商U1所转账的金额,所以存在因果丢失的异常。
对于这种隐含的逻辑偏序关系,在不同的事务之间,可以表示为(T1—>T2|X),也可以表示为(T1—>T2|obj),其中,obj表示空集的含义,也就是说,事务T1与事务T2之间可以不存在共享的操作数据项。应当理解,隐含的逻辑偏序关系可以由用户指定,当事务T1与事务T2具有该逻辑偏序关系时,但事务T2并未读到事务T1所写的值时,即存在因果丢失的异常,本申请通过构建事务T1与事务T2之间的逻辑偏序关系,由此可以通过该偏序关系识别出该事务T1与事务T2之间是否存在因果丢失的情况。
应当理解,本申请通过对事务之间的多种偏序关系进行定义得到第一配置偏序关系与第二配置偏序关系后,可以在该第一配置偏序关系与该第二配置偏序关系中,确定出两个事务之间的目标偏序关系,以下将以两个事务为第一事务与第二事务为例,对确定两个事务之间的目标偏序关系的具体方式进行说明。
对于确定第一事务与第二事务之间的目标偏序关系,具体方法可以为,若第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项(即目标操作数据项为共享的操作数据项);在第一事务与第二事务之间的事务关联关系为并发并联关系时,若该第一事务为对目标操作数据项的第一版本进行读操作,且该第二事务为对该目标操作数据项的第二版本进行写操作,其中,该第一版本的生成时间早于该第二版本的生成时间。可以看出,此种情况下该第一事务与第二事务之间的偏序关系是符合上述第一配置偏序关系中的RW偏序关系(读写偏序关系)的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系以及该第二配置偏序关系中的读写偏序关系相匹配,并将该读写偏序关系确定为该目标偏序关系。
而若该第一事务为对该目标操作数据项的该第一版本进行写操作,且该第二事务为对该目标操作数据项的该第一版本进行读操作。可以看出,此种情况下该第一事务与该第二事务之间的偏序关系时符合上述第一配置偏序关系中的WR偏序关系(写读偏序关系)的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系以及该第二配置偏序关系中的写读偏序关系相匹配,并将该写读偏序关系确定为该目标偏序关系。
而若该第一事务为对该目标操作数据项的该第一版本进行写操作,且该第二事务为对该目标操作数据项的该第二版本进行写操作。可以看出,此种情况下第一事务与该第二事务之间的偏序关系是符合上述第一配置偏序关系中的WW偏序关系(并发写偏序关系)的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系和第二配置偏序关系中的并发写偏序关系相匹配,并将该并发写偏序关系确定为该目标偏序关系。
而若该第一事务为在该第一执行时间段内对该目标操作数据项的第一版本进行写操作,且该第二事务为在该第二执行时间段内对该目标操作数据项的该第一版本进行读操作,且该第一事务在第三执行时间段内进行回滚操作,其中,该第三执行时间段为该回滚操作的事务执行时间段,该第二事务起始时间早于该回滚操作对应的操作起始时间。可以看出,此种情况下第一事务与该第二事务之间的偏序关系是符合上述第一配置偏序关系中的WRA偏序关系(反向偏序关系)的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系和该第二配置偏序关系中的反向偏序关系相匹配,并将该反向偏序关系确定为该目标偏序关系。
在第一事务与第二事务之间的事务关联关系为因果并联关系时,可以获取该第一事务的事务提交时间;若该第一事务为对目标操作数据项的第一版本进行写操作得到更新版本,且该第二事务为对该目标操作数据项的该更新版本进行读操作。可以看出,此种情况下,第一事务与该第二事务之间的偏序关系是符合上述第一配置偏序关系中的因果写读偏序关系的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系和第二配置偏序关系中的因果写读偏序关系相匹配,并将该因果写读偏序关系确定为该目标偏序关系。
而若该第一事务为对该目标操作数据项的该第一版本进行写操作,且该第二事务为对该目标操作数据项的第二版本进行写操作,且该第一事务的事务提交时间早于该第二事务的事务起始时间,其中,该第一版本的生成时间早于该第二版本的生成时间。可以看出,此种情况下,第一事务与该第二事务之间的偏序关系是符合上述第一配置偏序关系中的因果写偏序关系(也就是事务T1写了数据项X的版本x0并提交,随后事务T2写了数据项X的版本x1)的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系和第二配置偏序关系中的因果写偏序关系相匹配,并将该因果写偏序关系确定为该目标偏序关系。
在第一事务与第二事务之间的事务关联关系为相似因果并联关系时,可以获取该第一事务的事务提交时间;若该第一事务为对目标操作数据项的第一版本进行写操作得到更新版本,且该第二事务为对该目标操作数据项的该更新版本进行读操作。可以看出,此种情况下,第一事务与该第二事务之间的偏序关系是符合上述第一配置偏序关系中的相似因果写读偏序关系的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系和第二配置偏序关系中的相似因果写读偏序关系相匹配,并将该相似因果写读偏序关系确定为该目标偏序关系。
而若该第一事务为对该目标操作数据项的该第一版本进行写操作,且该第二事务为对该目标操作数据项的第二版本进行写操作,且该第一事务的事务提交时间早于该第二事务的事务起始时间,其中,该第一版本的生成时间早于该第二版本的生成时间。可以看出,此种情况下,第一事务与该第二事务之间的偏序关系是符合上述第一配置偏序关系中的相似因果写偏序关系(也就是事务T1写了数据项X的版本x0并提交,随后事务T2写了数据项X的版本x1)的,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系和第二配置偏序关系中的相似因果写偏序关系相匹配,并将该因果写偏序关系确定为该目标偏序关系。
其中,相似因果关联关系中还包括隐藏逻辑因果关系(也就是说,第一事务与第二事务之间存在用户指定的逻辑关系),而若该第一事务与该第二事务之间存在该隐藏逻辑因果关系时,若该第一事务为对目标操作数据项的第一版本进行写操作,得到更新版本,且该第二事务为对该目标操作数据项的该更新版本进行读操作,且该第一事务的事务提交时间早于该第二事务的事务起始时间。可以看出,该第一事务与第二事务之间的偏序关系符合上述第二配置偏序关系中的隐藏逻辑偏序关系,则可以确定该第一事务与该第二事务的偏序关系与该第一配置偏序关系和该第二配置偏序关系中的隐藏逻辑偏序关系相匹配,并将该隐藏逻辑偏序关系确定为该目标偏序关系。
为便于理解,请一并参见图4,图4是本申请实施例提供的一种确定事务之间的目标偏序关系的示意图。其中,图4所示的两个事务是以事务T1的事务起始时间早于事务T2的事务起始时间为例进行说明。
如图4所示,若事务T1与事务T2满足并发关联关系(CPO关系),则可以在并发关联关系下所定义的偏序关系中,确定事务T1与事务T2之间的偏序关系,若事务T1与事务T2之间满足RW偏序关系或WR偏序关系或WW偏序关系,则可以确定事务T1与事务T2之间的指向为事务T1指向事务T2;而若事务T1与事务T2之间满足WRA偏序关系,并可以确定事务T1与事务T2之间的指向为事务T2指向事务T1。
如图4所示,若事务T1与事务T2满足因果关联关系(PO关系),则可以在因果关联关系下所定义的偏序关系中,确定事务T1与事务T2之间的偏序关系,若事务T1与事务T2之间满足WCR偏序关系或WCW偏序关系,并可以确定事务T1与事务T2之间的指向为事务T1指向事务T2。
如图4所示,若事务T1与事务T2满足相似因果关联关系(SPO关系),则可以在相似因果关联关系下所定义的偏序关系中,确定事务T1与事务T2之间的偏序关系,若事务T1与事务T2之间满足WCR偏序关系或WCW偏序关系,并可以确定事务T1与事务T2之间的指向为事务T1指向事务T2。
如图4所示,若事务T1与事务T2满足逻辑关联关系(LPO关系),则可以在逻辑关联关系下所定义的偏序关系中,确定事务T1与事务T2之间的偏序关系,若事务T1与事务T2之间存在共享数据项,并可以确定事务T1与事务T2之间的指向为事务T1指向事务T2;若事务T1与事务T2之间不存在共享数据项,并可以确定事务T1与事务T2之间的指向为事务T2指向事务T1。
步骤S103,基于目标偏序关系,构建包含第一事务与第二事务的事务有向图。
本申请中,每种定义的偏序关系均含有两个事务之间的指向方向,例如,如上述图4中所示的RW偏序关系所示,RW偏序关系的指向方向为事务T1指向事务T2(事务T1的事务起始时间早于事务T2的事务起始时间),则对于构建事务有向图,可以先获取该目标偏序关系所指示的该第一事务与该第二事务之间的指向方向,根据该指向方向构建该第一事务和该第二事务之间的有向边;随后,根据该有向边,生成该包含该第一事务与该第二事务的事务有向图。
应当理解,若该目标偏序关系为写读偏序关系、读写偏序关系、并发写偏序关系、因果写读偏序关系、因果写偏序关系、相似因果写读偏序关系以及相似因果写偏序关系,这些偏序关系表示为(T1—>T2|X),也就是说,第一事务与第二事务之间的指向方向为第一事务指向第二事务;若该目标偏序关系为反向偏序关系,偏序关系表示为(T2—>T1|X),也就是说,第一事务与第二事务之间的指向方向为第二事务指向第一事务|;若该目标偏序关系为隐藏逻辑偏序关系、旧读偏序关系以及未来读偏序关系,其表示为(T2—>T1|X),也就是说,第一事务与第二事务之间的指向方向为第二事务指向第一事务。则根据这些指向方向,可以将事务作为节点,并在这些节点中构建有向边,由此可以构建得到包含多个节点以及节点之间的有向边的事务有向图。
为便于理解,请一并参见图5,图5是本申请实施例提供的一种事务有向图的示意图。如图5所示,该事务有向图中包含有事务T1、事务T2、…事务T6分别对应的节点,以及各个事务之间的偏序关系。
例如,事务T1与事务T2之间属于不同进程,两个事务之间存在并发关联关系,是并发事务。其中,针对数据项X,事务T1对数据项X的版本x0进行读操作,事务T2对数据项X的版本x1进行写操作,两个事务之间存在RW偏序关系,其表示为(T1—>T2|X),则在事务T1与事务T2分别对应的节点之间,存在节点T1指向节点T2的有向边;事务T3与事务T1属于不同进程,两个事务之间存在并发关联关系,是并发事务,其中,针对数据项Y,事务T1是对数据项Y的版本y1进行写操作,事务T3是对数据项Y的版本y0进行了读操作,两个事务之间存在旧读偏序关系,其表示为(T3—>T1|Y),则在事务T1与事务T3分别对应的节点之间,存在节点T3指向节点T1的有向边;事务T2与事务T3之间存在因果关联关系(执行时间不重叠且所属进程相同),其中,在该进程中,事务T2先发生的写操作并提交,事务T3的读操作后发生,则两个事务之间存在因果写读偏序关系,其表示为(T2—>T3)。同理,其他事务之间也可以按照偏序关系,构建出节点之间的有向边(若无偏序关系则不构建有向边),从而可以构建得到事务有向图。
步骤S104,根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测。
本申请中,可以根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测。具体方法可以为,在该事务有向图中,获取与该第一事务相关联的偏序关系,以及与该第二事务相关联的偏序关系;其中,该与第一事务相关联的偏序关系以及与该第二事务相关联的偏序关系包括该目标偏序关系;随后,可以根据该与该第一事务相关联的偏序关系,以及与该第二事务相关联的偏序关系,生成该第一事务与该第二事务之间的事务有向路径;根据该事务有向路径,对该第一事务与该第二事务之间的一致性状态进行检测。
应当理解,若该事务有向路径为闭环路径,则可以确定该第一事务与第二事务之间的一致性状态为异常状态;若该事务有向路径不为闭环路径,则可以确定该第一事务与该第二事务之间的一致性状态为正常状态。
例如,如上述图4所示,若第一事务为T1、第二事务为T3。在该事务有向图中,与该事务T1相关联的偏序关系包括有(T1—>T2)以及(T3—>T1);而与事务T3相关联的偏序关系包括有(T2—>T3)以及(T3—>T1)。则根据这些偏序关系,可以生成事务有向路径为:T3—>T1—>T2—>T3。可以看出,该事务有向路径T3—>T1—>T2—>T3从节点T3出发最后又回到节点T3,是一个闭环路径,事务T1、事务T2与事务T3之间互相依赖,因此存在“数据与操作异常”的问题,也就是说,事务T1与事务T3之间的一致性状态为异常状态,即事务T1与事务T3所在的系统存在系统不一致异常。
可选的,可以理解的是,本申请在识别到事务有向图中存在闭环路径时,可以对闭环路径进行解决,具体方法可以为对该闭环路径中尚未提交的事务执行回滚操作。也就是说,若该第一事务与该第二事务之间的一致性状态为异常状态,则可以在该第一事务与该第二事务之间获取待提交事务;随后,可以在该待提交事务中,确定待回滚事务,并将该待回滚事务进行回滚操作,由此可以解决系统不一致异常的问题。应当理解,本申请通过对事务之间的关联关系进行刻画,并基于关联关系,从共享数据项与事务两个粒度定义了多种事务之间的偏序关系,使得系统中,事务之间的偏序关系更为丰富。而通过该这些更为丰富的偏序关系,统一了系统中的异常问题(例如,进程中的旧读问题、未来读问题,还有因果丢失异常问题,数据库领域范围内的例如脏读、脏写、读偏序、写偏序等异常问题),这些异常问题被统一定义为数据与操作异常,也就是系统不一致异常(Systemnon-Consistency,SNC)。而本申请针对这些问题提出针对事务一致性与共享数据项操作一致性的并发一致性模型,并定义了统一的算法识别出所提出的各种类型的异常,并对这些异常进行解决。
为便于理解,以下将对并发一致性模型进行说明,本申请中的操作数据项、操作数据项的状态、事务、事务之间的偏序关系均可以通过并发一致性模型的示意图所体现。为便于理解,请一并参见图6,图6是本申请实施例提供的一种并发一致性模型的示意图。
如图6所示,并发一致性模型示意图中包含的元素包括有:
1、变量,即共享数据项,是事务读写操作的对象,包括共享数据项a、共享数据项b、共享数据项c、…、共享数据项z。
2、版本,即某个共享数据项的历史变更值。版本如图6所示用纵轴标识,纵轴同时兼有时间属性,从上至下表示时间发生逐步递增(例如,从时间t0逐步递增至时间tm-1)。每个时间点,都可能对应一个变量的一个版本,但不是一定对应每个变量的每个版本。版本的生成是提交事务中的写操作执行的结果,但一个时间点上,一个事务可能只生成部分版本,其他数据项此刻并没有新版本生成。其中,一个时间点上,若一个事务生成了一个版本,则在图6中表现为实边圆圈,若一个事务未生成一个新版本,则在图6中表现为虚边圆圈。也就是说,版本是在一个事务的写操作的作用下所生成的,并由一个版本变迁为下一个版本,对同一个数据项,一个成功提交的事务只能生成一个新版本。
3、边,事务操作共享数据项对,在其所操作的不同的数据项之间连线,则构成一条边,例如,事务T1操作了数据项a、数据项b以及数据项c,则在数据项a、数据项b以及数据项c之间,构成一条边。本质上,这条边为事务的读写操作集合。
其中,边中包括有动边与静边。
(1)静边,所有已经成功提交的事务对数据项造成的一致性状态构成边,称为静边,用实线表示。静边是符合某个时间点的数据项的一致性状态边,一条静边可以包括多个事务读写过的数据项。
(2)动边,尚没有提交的事务构成的边,称为动边,如图6中的虚线边(例如,事务T5对应的边,事务T8对应的边)。
4、时态,指定任意一个时间点,读取该时间点对应的数据,存在2种情况:
(1)最新时间:读取的数据项应该是最新版本,而不是历史版本;用静边表示时,指定时间点tm-1则读取共享数据项的最新版本Vm。
(2)历史时间:指定一个时间点tk(k<m),则读取的版本是从最新的版本Vm开始向历史版本遍历,找到第一个满足指定时间点的静边,并获取数据项。也就是说,符合一个历史时间点的静边,可能有一个或多个,本申请所选取的为第一个符合指定时间点的静边。
5、关联关系
(1)逻辑关联关系:不可被系统感知,除非人工指定(例如,通过结构化查询语言(Structured Query Language,SQL)语句或命令指定特定的事务之间存在逻辑关联关系)。
(2)并发关联关系:根据上述对于并发关联关系的定义,可以从图4所示的模型示意图中确定事务之间是否存在并发关联关系。例如,{T5,T6},{T7,T8},{T9,T10}都是并发事务,存在并发关联关系。
(3)因果关联关系:根据上述对于因果关联关系的定义,可以从图4所示的模型示意图中确定事务之间是否存在因果关联关系。例如,如图4中的三角形标识和T10、T11两个事务之间的关系。
(4)相似因果关联关系:根据上述对于相似因果关联关系的定义,可以从图4所示的模型示意图中确定事务之间是否存在相似因果关联关系。
应当理解,如图6所示的并发一致性模型中包括有上述元素(例如,数据项、版本、边、时态、关联关系),可以清晰地表达描述出事务之间的关联关系,以及偏序关系,从而可以描述出系统的SNC问题(事务有向图中存在闭环),在确定出SNC问题后,可以对SNC问题进行解决(例如,对闭环中的事务进行回滚操作)。
应当理解,本申请所提出的并发一致性模型,有效融合了事务一致性与共享数据对象操作一致性的问题,可以精准识别出数据与操作异常问题。
为便于理解,以下将以事务T1、事务T2以及事务T3为例,对识别事务T1、事务T2以及事务T3之间的数据与操作异常问题进行说明。请参见表1,如表1所示,表1中包括了事务T1、事务T2以及事务T3所属的进程以及事务T1、事务T2以及事务T3之间的并发关系。
表1
事务T1 | 事务T2/事务T3 |
R1-x0 | |
W1-y1 | |
R2-x0 | |
W2-x1 | |
C2 | |
R3-y0 | |
C1//事务T1执行提交,需要验证是否可以提交 |
其中,如表1所示的事务T1的事务起始时间早于事务T2的事务起始时间,且事务T2的事务起始时间早于事务T3的事务起始时间,其中,事务T1与事务T2所属进程不同(事务T1属于进程1,事务T2属于进程2),为并发关联关系;事务T1与事务T3所属进程不同(事务T1属于进程1,事务T3属于进程2),为并发关联关系;事务T2与事务T3所属进程相同(事务T2属于进程1,事务T3属于进程2),为因果关联关系。其中,针对数据项X,事务T1对数据项X的版本x0进行读操作,事务T2对数据项X的版本x1进行写操作,两个事务之间存在RW偏序关系,其表示为(T1—>T2|X),则在事务T1与事务T2分别对应的节点之间,存在节点T1指向节点T2的有向边;针对数据项Y,事务T1是对数据项Y的版本y1进行写操作,事务T3是对数据项Y的版本y0进行了读操作,两个事务之间存在旧读偏序关系,其表示为(T3—>T1|Y),则在事务T1与事务T3分别对应的节点之间,存在节点T3指向节点T1的有向边;在事务T2与事务T3的进程中,事务T2先发生的写操作并提交,事务T3的读操作后发生,则两个事务之间存在因果写读偏序关系,其表示为(T2—>T3)。则基于偏序关系,可以生成闭环路径T3—>T1—>T2—>T3,由于是闭环路径,所以本申请可以识别出该数据与操作异常。若仅从可串行调度技术来看,是可以找到“T3—>T1—>T2”一个串行调度的,在理论上,是满足可串行化的要求的,但实际中,事务T3是发生于事务T2之后的,因为事务T2是先提交的,所以该可串行调度是不成立的,即可串行化调度无法识别出异常。而本申请因为考虑到了因果关联关系的事务(例如,事务T2与事务T3),并定义了因果关联关系的事务之间的偏序关系,从而可以在事务T2与事务T3之间建立偏序关系,使得事务T3在事务T2之后发生这个逻辑展现在事务有向图中,由此可以生成闭环,从而可以准确识别这个异常,也就是说,本申请可以提高对系统进行异常检测的准确率。
在本申请实施例中,通过对事务之间的关联关系进行明确定义,进而基于关联关系从共享数据项与事务两个粒度上定义了多种偏序关系,使得事务之间的关联关系更为完善。在事务上,通过构建有向图来对事务之间的一致性状态进行检测。而对于有向图的构建,又是通过事务之间更完善的偏序关系来进行构建,其中,事务之间的偏序关系包括基于共享的操作数据项所定义的偏序关系以及基于事务所定义的偏序关系。其中,基于共享的操作数据项所定义的偏序关系即为共享数据对象操作一致性,也就是说,本文所构建的有向图中,包含有与事务相关的偏序关系,同时也包含有与共享数据对象操作一致性相关的偏序关系,从而将共享数据对象操作一致性与事务一致性做到了有效融合,由此根据有向图对事务之间的一致性进行检测时,是基于两个一致性体系融合后的统一体系所进行的检测,可以有效发现数据不一致的问题(本文基于偏序关系而统一定义的异常问题),从而可以提高进行异常检测的准确率。
进一步地,请参见图7,图7是本申请实施例提供的一种分布式数据库系统的架构示意图。
如图7所示,该分布式数据库系统中可以包括有多个模块,例如,SQL引擎(SQLEngine),事务处理集合(Transaction Processing Cluster For Current Data),分析处理集合(Analytical Processing Cluster For Historical Data),存储接口(StorageInterface,SI),本地存储(Storage Cluster),逻辑存储(Logical Storage,LoS),以及网络存储(Net Storage,NS),等等。分布式数据库系统中的各个模块可以分别执行对应的功能。
其中,SQL引擎中可以包括调度器(Scheduler,Sch)、程序协调服务(ZooKeeper,ZK)、分布式分析器(Distributed Analyzer,DA)、分布式优化器(Distributed Optimizer,DO)以及SQL路由器(SQL Router,SR),其中,ZK可以用于为分布式系统提供一致性服务;Sch可以用于进行调度操作;DA可以用于进行分布式分析处理;DO为优化程序,可以用于进行分布式优化处理。事务处理集合中可以包括多个服务器,每个服务器可以用于对当前数据进行事务处理。分析处理集合中可以包括多个本地执行器(Local Executor),每个本地执行器可以用于对历史数据进行分析处理。存储接口可以用于将存储设备与处理设备进行连接(例如,可以将事务处理集合或分析处理集合与本地存储设备或逻辑存储设备或网络存储设备进行连接)。本地存储、逻辑存储以及网络存储均可以用于存储数据。
如图7所示,该分布式数据库系统是一个分布式事务型数据库系统,需要分布式事务处理的能力,需要共享数据上的一致性模型,以统一解决各种异常问题。应当理解,上述图6所提出的并发一致性模型可以部署于该分布式数据库系统中,通过该并发一致性模型,可以对该分布式数据库系统中进行的事务进行异常检测,并在识别出存在数据与操作异常时,对异常进行解决。从而保证该分布式数据库系统的一致性、正确性得以维持。
应当理解,应用该部署有并发一致性模型的分布式数据库系统,可以更为高效的、且更为精准的进行数据异常识别,从而保证数据的可靠性。
应当理解,如图7所示的分布式数据库系统的架构仅是本申请为便于理解所作出的一种举例说明,对于本申请的适用范围,当然不局限于此,对于其他采用分布式架构(例如,数据库的分库分表的分布式架构)、单机系统的架构、分布式存储系统、共享内存对象的读写系统,等等,本申请也同样适用,在此不再进行一一举例。
进一步地,请参见图8,图8是本申请实施例提供的一种基于数据库的数据处理装置的结构示意图。该数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该数据处理装置可以用于执行图3所示的方法。如图8所示,该数据处理装置1可以包括:事务获取模块11、关系确定模块12、图构建模块13以及状态检测模块14。
事务获取模块11,用于获取针对数据库的第一事务与第二事务;
关系确定模块12,用于在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系;第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,第二配置偏序关系是指基于事务所定义的偏序关系;
图构建模块13,用于基于目标偏序关系,构建包含第一事务与第二事务的事务有向图;
状态检测模块14,用于根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测。
其中,事务获取模块11、关系确定模块12、图构建模块13以及状态检测模块14的具体实现方式,可以参见上述图3所对应实施例中步骤S101-步骤S104的描述,这里将不再进行赘述。
请参见图8,关系确定模块12可以包括:事务时间获取单元121、执行时间确定单元122、操作项获取单元123、事务关系确定单元124以及偏序关系确定单元125。
事务时间获取单元121,用于获取第一事务的第一事务起始时间与第一事务结束时间,以及第二事务的第二事务起始时间与第二事务结束时间;
执行时间确定单元122,用于确定第一事务起始时间与第一事务结束时间组成的第一执行时间段,以及第二事务起始时间与第二事务结束时间组成的第二执行时间段;
操作项获取单元123,用于获取第一事务与第二事务分别操作的操作数据项;
事务关系确定单元124,用于根据第一执行时间段、第二执行时间段以及第一事务与第二事务分别操作的操作数据项,确定第一事务与第二事务之间的事务关联关系;
偏序关系确定单元125,用于根据第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系。
其中,事务时间获取单元121、执行时间确定单元122、操作项获取单元123、事务关系确定单元124以及偏序关系确定单元125的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
其中,第一事务与第二事务之间的事务关联关系为并发关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
请参见图8,偏序关系确定单元125可以包括:第一关系确定子单元1251。
第一关系确定子单元1251,用于若第一事务为对目标操作数据项的第一版本进行读操作,且第二事务为对目标操作数据项的第二版本进行写操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系以及第二配置偏序关系中的读写偏序关系相匹配,将读写偏序关系确定为目标偏序关系;第一版本的生成时间早于第二版本的生成时间;
第一关系确定子单元1251,还用于若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第一版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系以及第二配置偏序关系中的写读偏序关系相匹配,将写读偏序关系确定为目标偏序关系;
第一关系确定子单元1251,还用于若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第二版本进行写操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的并发写偏序关系相匹配,将并发写偏序关系确定为目标偏序关系;读写偏序关系、写读偏序关系以及并发写偏序关系是基于事务对目标操作数据项的操作所定义的偏序关系。
其中,第一关系确定子单元1251的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
其中,第一事务与第二事务之间的事务关联关系为并发关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
请参见图8,偏序关系确定单元125可以包括:第二关系确定子单元1252。
第二关系确定子单元1252,用于若第一事务为在第一执行时间段内对目标操作数据项的第一版本进行写操作,且第二事务为在第二执行时间段内对目标操作数据项的第一版本进行读操作,且第一事务在第三执行时间段内进行回滚操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的反向偏序关系相匹配,将反向偏序关系确定为目标偏序关系;第三执行时间段为回滚操作的事务执行时间段,第二事务起始时间早于回滚操作对应的操作起始时间。
其中,第二关系确定子单元1252的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
其中,第一事务与第二事务之间的事务关联关系为因果关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
请参见图8,偏序关系确定单元125可以包括:第一提交时间获取子单元1253以及第三关系确定子单元1254。
第一提交时间获取子单元1253,用于获取第一事务的事务提交时间;
第三关系确定子单元1254,用于若第一事务为对目标操作数据项的第一版本进行写操作得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的因果写读偏序关系相匹配,将因果写读偏序关系确定为目标偏序关系;
第三关系确定子单元1254,还用于若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第二版本进行写操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系与第一配置偏序关系,和第二配置偏序关系中的因果写偏序关系相匹配,将因果写偏序关系确定为目标偏序关系;第一版本的生成时间早于第二版本的生成时间。
其中,第一提交时间获取子单元1253以及第三关系确定子单元1254的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
其中,第一事务与第二事务之间的事务关联关系为相似因果关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
请参见图8,偏序关系确定单元125可以包括:第二提交时间获取子单元1255以及第四关系确定子单元1256。
第二提交时间获取子单元1255,用于获取第一事务的事务提交时间;
第四关系确定子单元1256,用于若第一事务为对目标操作数据项的第一版本进行写操作,得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的相似因果写读偏序关系相匹配,将相似因果写读偏序关系确定为目标偏序关系;
第四关系确定子单元1256,还用于若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第二版本进行写操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的相似因果写偏序关系相匹配,将相似因果写偏序关系确定为目标偏序关系。
其中,第二提交时间获取子单元1255以及第四关系确定子单元1256的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
其中,相似因果关联关系还包括隐藏逻辑因果关系;
请参见图8,偏序关系确定单元125还可以包括:第五关系确定子单元1257。
第五关系确定子单元1257,用于若第一事务与第二事务存在隐藏逻辑因果关系,且第一事务为对目标操作数据项的第一版本进行写操作,得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的隐藏逻辑偏序关系相匹配,将隐藏逻辑偏序关系确定为目标偏序关系。
其中,第五关系确定子单元1257的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
请参见图8,事务关系确定单元124可以包括:并发关系确定子单元1241、因果关系确定子单元1242以及相似因果关系确定子单元1243。
并发关系确定子单元1241,用于若第一事务的操作数据项与第二事务的操作数据项相同,则将第一执行时间段与第二执行时间段进行匹配,当第一执行时间段与第二执行时间段之间存在重复时间段时,确定第一事务与第二事务之间的事务关联关系为并发关联关系;
因果关系确定子单元1242,用于若第一执行时间段与第二执行时间段之间不存在重复时间段,则获取第一事务与第二事务分别所属的进程,当第一事务与第二事务分别所属的进程相同时,确定第一事务与第二事务之间的事务关联关系为因果关联关系;
相似因果关系确定子单元1243,用于若第一执行时间段与第二执行时间段之间不存在重复时间段,且第一事务与第二事务分别所属的进程不同,则确定第一事务与第二事务之间的事务关联关系为相似因果关联关系。
其中,并发关系确定子单元1241、因果关系确定子单元1242以及相似因果关系确定子单元1243的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
请参见图8,图构建模块13可以包括:边构建单元131以及图生成单元132。
边构建单元131,用于获取目标偏序关系所指示的第一事务与第二事务之间的指向方向,根据指向方向构建第一事务和第二事务之间的有向边;
图生成单元132,用于根据有向边,生成包含第一事务与第二事务的事务有向图。
其中,边构建单元131以及图生成单元132的具体实现方式,可以参见上述图3所对应实施例中步骤S103中的描述,这里将不再进行赘述。
请参见图8,状态检测模块14可以包括:关联偏序关系获取单元141、路径生成单元142以及状态检测单元143。
关联偏序关系获取单元141,用于在事务有向图中,获取与第一事务相关联的偏序关系,以及与第二事务相关联的偏序关系;与第一事务相关联的偏序关系以及与第二事务相关联的偏序关系包括目标偏序关系;
路径生成单元142,用于根据与第一事务相关联的偏序关系,以及与第二事务相关联的偏序关系,生成第一事务与第二事务之间的事务有向路径;
状态检测单元143,用于根据事务有向路径,对第一事务与第二事务之间的一致性状态进行检测。
其中,关联偏序关系获取单元141、路径生成单元142以及状态检测单元143的具体实现方式,可以参见上述图3所对应实施例中步骤S104中的描述,这里将不再进行赘述。
请参见图8,状态检测单元143可以包括:异常状态确定子单元1431以及正常状态确定子单元1432。
异常状态确定子单元1431,用于若事务有向路径为闭环路径,则确定第一事务与第二事务之间的一致性状态为异常状态;
正常状态确定子单元1432,用于若事务有向路径不为闭环路径,则确定第一事务与第二事务之间的一致性状态为正常状态。
其中,异常状态确定子单元1431以及正常状态确定子单元1432的具体实现方式,可以参见上述图3所对应实施例中步骤S104中的描述,这里将不再进行赘述。
请参见图8,该装置1可以包括该数据处理装置1可以包括事务获取模块11、关系确定模块12、图构建模块13以及状态检测模块14,还可以包括:待提交事务获取模块15以及回滚模块16。
待提交事务获取模块15,用于若第一事务与第二事务之间的一致性状态为异常状态,则在第一事务与第二事务之间获取待提交事务;
回滚模块16,用于在待提交事务中,确定待回滚事务,将待回滚事务进行回滚操作。
其中,待提交事务获取模块15以及回滚模块16的具体实现方式,可以参见上述图3所对应实施例中步骤S104中的描述,这里将不再进行赘述。
在本申请实施例中,通过对事务之间的关联关系进行明确定义,进而基于关联关系从共享数据项与事务两个粒度上定义了多种偏序关系,使得事务之间的关联关系更为完善。在事务上,通过构建有向图来对事务之间的一致性状态进行检测。而对于有向图的构建,又是通过事务之间更完善的偏序关系来进行构建,其中,事务之间的偏序关系包括基于共享的操作数据项所定义的偏序关系以及基于事务所定义的偏序关系。其中,基于共享的操作数据项所定义的偏序关系即为共享数据对象操作一致性,也就是说,本文所构建的有向图中,包含有与事务相关的偏序关系,同时也包含有与共享数据对象操作一致性相关的偏序关系,从而将共享数据对象操作一致性与事务一致性做到了有效融合,由此根据有向图对事务之间的一致性进行检测时,是基于两个一致性体系融合后的统一体系所进行的检测,可以有效发现数据不一致的问题(本文基于偏序关系而统一定义的异常问题),从而可以提高进行异常检测的准确率。
进一步地,请参见图9,图9是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,上述图8所对应实施例中的装置1可以应用于上述计算机设备1000,上述计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取针对数据库的第一事务与第二事务;
在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系;第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,第二配置偏序关系是指基于事务所定义的偏序关系;
基于目标偏序关系,构建包含第一事务与第二事务的事务有向图;
根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测。
在一个实施例中,处理器1001在执行在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系时,具体执行以下步骤:
获取第一事务的第一事务起始时间与第一事务结束时间,以及第二事务的第二事务起始时间与第二事务结束时间;
确定第一事务起始时间与第一事务结束时间组成的第一执行时间段,以及第二事务起始时间与第二事务结束时间组成的第二执行时间段;
获取第一事务与第二事务分别操作的操作数据项,根据第一执行时间段、第二执行时间段以及第一事务与第二事务分别操作的操作数据项,确定第一事务与第二事务之间的事务关联关系;
根据第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系。
在一个实施例中,第一事务与第二事务之间的事务关联关系为并发关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
处理器1001在执行根据第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系时,具体执行以下步骤:
若第一事务为对目标操作数据项的第一版本进行读操作,且第二事务为对目标操作数据项的第二版本进行写操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系以及第二配置偏序关系中的读写偏序关系相匹配,将读写偏序关系确定为目标偏序关系;第一版本的生成时间早于第二版本的生成时间;
若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第一版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系以及第二配置偏序关系中的写读偏序关系相匹配,将写读偏序关系确定为目标偏序关系;
若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第二版本进行写操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的并发写偏序关系相匹配,将并发写偏序关系确定为目标偏序关系;读写偏序关系、写读偏序关系以及并发写偏序关系是基于事务对目标操作数据项的操作所定义的偏序关系。
在一个实施例中,第一事务与第二事务之间的事务关联关系为并发关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
处理器1001在执行根据第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系时,具体执行以下步骤:
若第一事务为在第一执行时间段内对目标操作数据项的第一版本进行写操作,且第二事务为在第二执行时间段内对目标操作数据项的第一版本进行读操作,且第一事务在第三执行时间段内进行回滚操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的反向偏序关系相匹配,将反向偏序关系确定为目标偏序关系;第三执行时间段为回滚操作的事务执行时间段,第二事务起始时间早于回滚操作对应的操作起始时间。
在一个实施例中,第一事务与第二事务之间的事务关联关系为因果关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
处理器1001在执行根据第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系时,具体执行以下步骤:
获取第一事务的事务提交时间;
若第一事务为对目标操作数据项的第一版本进行写操作得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,则确定第一事务与第二事务的偏序关系与第一配置偏序关系和第二配置偏序关系中的因果写读偏序关系相匹配,将因果写读偏序关系确定为目标偏序关系;
若第一事务为对操作数据项的第一版本进行写操作,且第二事务为对操作数据项的第二版本进行写操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的因果写偏序关系相匹配,将因果写偏序关系确定为目标偏序关系;第一版本的生成时间早于第二版本的生成时间。
在一个实施例中,第一事务与第二事务之间的事务关联关系为相似因果关联关系;第一事务操作的操作数据项与第二事务操作的操作数据项均为目标操作数据项;
处理器1001在执行根据第一事务与第二事务之间的事务关联关系,在第一配置偏序关系以及第二配置偏序关系中,确定第一事务与第二事务之间的目标偏序关系时,具体执行以下步骤:
获取第一事务的事务提交时间;
若第一事务为对目标操作数据项的第一版本进行写操作,得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的相似因果写读偏序关系相匹配,将相似因果写读偏序关系确定为目标偏序关系;
若第一事务为对目标操作数据项的第一版本进行写操作,且第二事务为对目标操作数据项的第二版本进行写操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的相似因果写偏序关系相匹配,将相似因果写偏序关系确定为目标偏序关系;第一版本的生成时间早于第二版本的生成时间。
在一个实施例中,相似因果关联关系还包括隐藏逻辑因果关系;
处理器1001还具体以下步骤:
若第一事务与第二事务存在隐藏逻辑因果关系,且第一事务为对目标操作数据项的第一版本进行写操作,得到更新版本,且第二事务为对目标操作数据项的更新版本进行读操作,且第一事务的事务提交时间早于第二事务的事务起始时间,则确定第一事务与第二事务的偏序关系,与第一配置偏序关系和第二配置偏序关系中的隐藏逻辑偏序关系相匹配,将隐藏逻辑偏序关系确定为目标偏序关系。
在一个实施例中,处理器1001在执行根据第一执行时间段、第二执行时间段以及操作数据项,确定第一事务与第二事务之间的事务关联关系时,具体执行以下步骤:
若第一事务的操作数据项与第二事务的操作数据项相同,则将第一执行时间段与第二执行时间段进行匹配,当第一执行时间段与第二执行时间段之间存在重复时间段时,确定第一事务与第二事务之间的事务关联关系为并发关联关系;
若第一执行时间段与第二执行时间段之间不存在重复时间段,则获取第一事务与第二事务分别所属的进程,当第一事务与第二事务分别所属的进程相同时,确定第一事务与第二事务之间的事务关联关系为因果关联关系;
若第一执行时间段与第二执行时间段之间不存在重复时间段,且第一事务与第二事务分别所属的进程不同,则确定第一事务与第二事务之间的事务关联关系为相似因果关联关系。
在一个实施例中,处理器1001在执行基于目标偏序关系,构建包含第一事务与第二事务的事务有向图时,具体执行以下步骤:
获取目标偏序关系所指示的第一事务与第二事务之间的指向方向,根据指向方向构建第一事务和第二事务之间的有向边;
根据有向边,生成包含第一事务与第二事务的事务有向图。
在一个实施例中,处理器1001在执行根据事务有向图,对第一事务与第二事务之间的一致性状态进行检测时,具体执行以下步骤:
在事务有向图中,获取与第一事务相关联的偏序关系,以及与第二事务相关联的偏序关系;与第一事务相关联的偏序关系以及与第二事务相关联的偏序关系包括目标偏序关系;
根据与第一事务相关联的偏序关系,以及与第二事务相关联的偏序关系,生成第一事务与第二事务之间的事务有向路径;
根据事务有向路径,对第一事务与第二事务之间的一致性状态进行检测。
在一个实施例中,处理器1001在执行根据事务有向路径,对第一事务与第二事务之间的一致性状态进行检测时,具体执行以下步骤:
若事务有向路径为闭环路径,则确定第一事务与第二事务之间的一致性状态为异常状态;
若事务有向路径不为闭环路径,则确定第一事务与第二事务之间的一致性状态为正常状态。
在一个实施例中,处理器1001还具体以下步骤:
若第一事务与第二事务之间的一致性状态为异常状态,则在第一事务与第二事务之间获取待提交事务;
在待提交事务中,确定待回滚事务,将待回滚事务进行回滚操作。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3所对应实施例中对该基于数据库的数据处理方法的描述,也可执行前文图8所对应实施例中对该基于数据库的数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的数据处理的计算机设备1000所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图3所对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital, SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中一方面提供的方法。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种基于数据库的数据处理方法,其特征在于,包括:
获取针对数据库的第一事务与第二事务;
当所述第一事务与所述第二事务之间的事务关联关系为因果关联关系,且所述第一事务操作的操作数据项与所述第二事务操作的操作数据项均为目标操作数据项时,获取所述第一事务的事务提交时间;
若所述第一事务为对所述目标操作数据项的第一版本进行写操作得到更新版本,且所述第二事务为对所述目标操作数据项的所述更新版本进行读操作,则确定所述第一事务与所述第二事务的偏序关系与第一配置偏序关系和第二配置偏序关系中的因果写读偏序关系相匹配,将所述因果写读偏序关系确定为所述第一事务与所述第二事务之间的目标偏序关系;所述第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,所述第二配置偏序关系是指基于事务所定义的偏序关系;
若所述第一事务为对所述操作数据项的所述第一版本进行写操作,且所述第二事务为对所述操作数据项的第二版本进行写操作,且所述第一事务的事务提交时间早于所述第二事务的事务起始时间,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系和所述第二配置偏序关系中的因果写偏序关系相匹配,将所述因果写偏序关系确定为所述第一事务与所述第二事务之间的目标偏序关系;所述第一版本的生成时间早于所述第二版本的生成时间;
基于所述目标偏序关系,构建包含所述第一事务与所述第二事务的事务有向图;
根据所述事务有向图,对所述第一事务与所述第二事务之间的一致性状态进行检测。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述第一事务的第一事务起始时间与第一事务结束时间,以及所述第二事务的第二事务起始时间与第二事务结束时间;
确定所述第一事务起始时间与所述第一事务结束时间组成的第一执行时间段,以及所述第二事务起始时间与所述第二事务结束时间组成的第二执行时间段;
获取所述第一事务与所述第二事务分别操作的操作数据项,根据所述第一执行时间段、所述第二执行时间段以及所述第一事务与所述第二事务分别操作的操作数据项,确定所述第一事务与所述第二事务之间的事务关联关系。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一事务与所述第二事务之间的事务关联关系为并发关联关系,且所述第一事务操作的操作数据项与所述第二事务操作的操作数据项均为目标操作数据项时,若所述第一事务为对所述目标操作数据项的第一版本进行读操作,且所述第二事务为对所述目标操作数据项的第二版本进行写操作,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系以及所述第二配置偏序关系中的读写偏序关系相匹配,将所述读写偏序关系确定为所述目标偏序关系;所述第一版本的生成时间早于所述第二版本的生成时间;
若所述第一事务为对所述目标操作数据项的所述第一版本进行写操作,且所述第二事务为对所述目标操作数据项的所述第一版本进行读操作,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系以及所述第二配置偏序关系中的写读偏序关系相匹配,将所述写读偏序关系确定为所述目标偏序关系;
若所述第一事务为对所述目标操作数据项的所述第一版本进行写操作,且所述第二事务为对所述目标操作数据项的所述第二版本进行写操作,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系和所述第二配置偏序关系中的并发写偏序关系相匹配,将所述并发写偏序关系确定为所述目标偏序关系;所述读写偏序关系、所述写读偏序关系以及所述并发写偏序关系是基于事务对所述目标操作数据项的操作所定义的偏序关系。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述第一事务与所述第二事务之间的事务关联关系为并发关联关系,且所述第一事务操作的操作数据项与所述第二事务操作的操作数据项均为目标操作数据项时,若所述第一事务为在所述第一执行时间段内对所述目标操作数据项的第一版本进行写操作,且所述第二事务为在所述第二执行时间段内对所述目标操作数据项的所述第一版本进行读操作,且所述第一事务在第三执行时间段内进行回滚操作,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系和所述第二配置偏序关系中的反向偏序关系相匹配,将所述反向偏序关系确定为所述目标偏序关系;所述第三执行时间段为所述回滚操作的事务执行时间段,所述第二事务起始时间早于所述回滚操作对应的操作起始时间。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一事务与所述第二事务之间的事务关联关系为相似因果关联关系,且所述第一事务操作的操作数据项与所述第二事务操作的操作数据项均为目标操作数据项时,获取所述第一事务的事务提交时间;
若所述第一事务为对所述目标操作数据项的第一版本进行写操作,得到更新版本,且所述第二事务为对所述目标操作数据项的所述更新版本进行读操作,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系和所述第二配置偏序关系中的相似因果写读偏序关系相匹配,将所述相似因果写读偏序关系确定为所述目标偏序关系;
若所述第一事务为对所述目标操作数据项的所述第一版本进行写操作,且所述第二事务为对所述目标操作数据项的第二版本进行写操作,且所述第一事务的事务提交时间早于所述第二事务的事务起始时间,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系和所述第二配置偏序关系中的相似因果写偏序关系相匹配,将所述相似因果写偏序关系确定为所述目标偏序关系;所述第一版本的生成时间早于所述第二版本的生成时间。
6.根据权利要求5所述的方法,其特征在于,所述相似因果关联关系还包括隐藏逻辑因果关系;
所述方法还包括:
若所述第一事务与所述第二事务存在所述隐藏逻辑因果关系,且所述第一事务为对所述目标操作数据项的所述第一版本进行写操作,得到更新版本,且所述第二事务为对所述目标操作数据项的所述更新版本进行读操作,且所述第一事务的事务提交时间早于所述第二事务的事务起始时间,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系和所述第二配置偏序关系中的隐藏逻辑偏序关系相匹配,将所述隐藏逻辑偏序关系确定为所述目标偏序关系。
7.根据权利要求2所述的方法,其特征在于,所述根据所述第一执行时间段、所述第二执行时间段以及所述第一事务与所述第二事务分别操作的操作数据项,确定所述第一事务与所述第二事务之间的事务关联关系,包括:
若所述第一事务的操作数据项与所述第二事务的操作数据项相同,则将所述第一执行时间段与所述第二执行时间段进行匹配,当所述第一执行时间段与所述第二执行时间段之间存在重复时间段时,确定所述第一事务与所述第二事务之间的所述事务关联关系为并发关联关系;
若所述第一执行时间段与所述第二执行时间段之间不存在重复时间段,则获取所述第一事务与所述第二事务分别所属的进程,当所述第一事务与所述第二事务分别所属的进程相同时,确定所述第一事务与所述第二事务之间的所述事务关联关系为因果关联关系;
若所述第一执行时间段与所述第二执行时间段之间不存在重复时间段,且所述第一事务与所述第二事务分别所属的进程不同,则确定所述第一事务与所述第二事务之间的所述事务关联关系为相似因果关联关系。
8.根据权利要求1所述的方法,其特征在于,所述基于所述目标偏序关系,构建包含所述第一事务与所述第二事务的事务有向图,包括:
获取所述目标偏序关系所指示的所述第一事务与所述第二事务之间的指向方向,根据所述指向方向构建所述第一事务和所述第二事务之间的有向边;
根据所述有向边,生成所述包含所述第一事务与所述第二事务的事务有向图。
9.根据权利要求1所述的方法,其特征在于,所述根据所述事务有向图,对所述第一事务与所述第二事务之间的一致性状态进行检测,包括:
在所述事务有向图中,获取与所述第一事务相关联的偏序关系,以及与所述第二事务相关联的偏序关系;所述与第一事务相关联的偏序关系以及与所述第二事务相关联的偏序关系包括所述目标偏序关系;
根据所述与所述第一事务相关联的偏序关系,以及与所述第二事务相关联的偏序关系,生成所述第一事务与所述第二事务之间的事务有向路径;
根据所述事务有向路径,对所述第一事务与所述第二事务之间的一致性状态进行检测。
10.根据权利要求9所述的方法,其特征在于,所述根据所述事务有向路径,对所述第一事务与所述第二事务之间的一致性状态进行检测,包括:
若所述事务有向路径为闭环路径,则确定所述第一事务与所述第二事务之间的一致性状态为异常状态;
若所述事务有向路径不为所述闭环路径,则确定所述第一事务与所述第二事务之间的一致性状态为正常状态。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若所述第一事务与所述第二事务之间的一致性状态为异常状态,则在所述第一事务与所述第二事务之间获取待提交事务;
在所述待提交事务中,确定待回滚事务,将所述待回滚事务进行回滚操作。
12.一种基于数据库的数据处理装置,其特征在于,包括:
事务获取模块,用于获取针对数据库的第一事务与第二事务;
关系确定模块,用于当所述第一事务与所述第二事务之间的事务关联关系为因果关联关系,且所述第一事务操作的操作数据项与所述第二事务操作的操作数据项均为目标操作数据项时,获取所述第一事务的事务提交时间;
所述关系确定模块,还用于若所述第一事务为对所述目标操作数据项的第一版本进行写操作得到更新版本,且所述第二事务为对所述目标操作数据项的所述更新版本进行读操作,则确定所述第一事务与所述第二事务的偏序关系与第一配置偏序关系和第二配置偏序关系中的因果写读偏序关系相匹配,将所述因果写读偏序关系确定为所述第一事务与所述第二事务之间的目标偏序关系;所述第一配置偏序关系是指基于共享的操作数据项所定义的偏序关系,所述第二配置偏序关系是指基于事务所定义的偏序关系;
所述关系确定模块,还用于若所述第一事务为对所述操作数据项的所述第一版本进行写操作,且所述第二事务为对所述操作数据项的第二版本进行写操作,且所述第一事务的事务提交时间早于所述第二事务的事务起始时间,则确定所述第一事务与所述第二事务的偏序关系,与所述第一配置偏序关系和所述第二配置偏序关系中的因果写偏序关系相匹配,将所述因果写偏序关系确定为所述第一事务与所述第二事务之间的目标偏序关系;所述第一版本的生成时间早于所述第二版本的生成时间;
图构建模块,用于基于所述目标偏序关系,构建包含所述第一事务与所述第二事务的事务有向图;
状态检测模块,用于根据所述事务有向图,对所述第一事务与所述第二事务之间的一致性状态进行检测。
13.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011264239.1A CN112069196B (zh) | 2020-11-12 | 2020-11-12 | 基于数据库的数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011264239.1A CN112069196B (zh) | 2020-11-12 | 2020-11-12 | 基于数据库的数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112069196A CN112069196A (zh) | 2020-12-11 |
CN112069196B true CN112069196B (zh) | 2021-03-23 |
Family
ID=73655428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011264239.1A Active CN112069196B (zh) | 2020-11-12 | 2020-11-12 | 基于数据库的数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112069196B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098228B (zh) * | 2021-05-19 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN113569083B (zh) * | 2021-06-17 | 2023-11-03 | 南京大学 | 基于数据溯源模型的智能音箱本地端数字取证系统及方法 |
CN115391032A (zh) * | 2022-08-15 | 2022-11-25 | 上海慧程工程技术服务有限公司 | 一种用于工业物联网边缘设备的内存优化方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016039552A1 (ko) * | 2014-09-10 | 2016-03-17 | (주)지디아이코리아 | 육성 시뮬레이션을 통한 교육 관리 시스템 및 방법 |
CN110147268A (zh) * | 2019-04-16 | 2019-08-20 | 清华大学无锡应用技术研究院 | 处理并发事务的方法、装置、并发控制系统及存储介质 |
CN111338766A (zh) * | 2020-03-12 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111444027A (zh) * | 2020-03-24 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111708615A (zh) * | 2020-05-20 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111736964A (zh) * | 2020-07-02 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306197B (zh) * | 2011-09-22 | 2013-07-03 | 用友软件股份有限公司 | 保证跨数据源操作结果一致性的装置和方法 |
CN107436799B (zh) * | 2016-05-26 | 2020-11-03 | 创新先进技术有限公司 | 分布式事务一致性实现方法及装置 |
CN108090056B (zh) * | 2016-11-21 | 2021-06-15 | 中兴通讯股份有限公司 | 数据查询方法、装置及系统 |
-
2020
- 2020-11-12 CN CN202011264239.1A patent/CN112069196B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016039552A1 (ko) * | 2014-09-10 | 2016-03-17 | (주)지디아이코리아 | 육성 시뮬레이션을 통한 교육 관리 시스템 및 방법 |
CN110147268A (zh) * | 2019-04-16 | 2019-08-20 | 清华大学无锡应用技术研究院 | 处理并发事务的方法、装置、并发控制系统及存储介质 |
CN111338766A (zh) * | 2020-03-12 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111444027A (zh) * | 2020-03-24 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111708615A (zh) * | 2020-05-20 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111736964A (zh) * | 2020-07-02 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112069196A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112069196B (zh) | 基于数据库的数据处理方法、装置、设备及可读存储介质 | |
US10678808B2 (en) | Eager replication of uncommitted transactions | |
Sivaramakrishnan et al. | Declarative programming over eventually consistent data stores | |
JP2023546249A (ja) | トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
US11947524B2 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
González-Aparicio et al. | Testing of transactional services in NoSQL key-value databases | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
US20180300147A1 (en) | Database Operating Method and Apparatus | |
CN111367989A (zh) | 一种实时数据指标计算系统和方法 | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems | |
Dey et al. | Scalable distributed transactions across heterogeneous stores | |
Meir et al. | Lockless transaction isolation in hyperledger fabric | |
US20230015950A1 (en) | Method and system for converting database applications into blockchain applications | |
CN109597706B (zh) | 一种核对差异数据的检测方法、装置及系统 | |
Popovic et al. | Formal verification of distributed transaction management in a SOA based control system | |
Padhye | Transaction and data consistency models for cloud applications | |
Soethout et al. | Path-Sensitive Atomic Commit: Local Coordination Avoidance for Distributed Transactions | |
CN115098228B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US11416720B2 (en) | Model-based data transformation | |
Decker et al. | Data consistency: Toward a terminological clarification | |
Liu et al. | The Complexity of Weak Consistency | |
Dragoni | A model-based methodology to define data-intensive architecture | |
Ibrahim et al. | Mathematical Model and Algorithms for some Type of Concurrency Control Problems in Database Applications | |
Pandey | Optimizing Distributed Transactions: Speculative Client Execution, Certified Serializability, and High Performance Run-Time | |
Faria | High Performance Data Processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40035792 Country of ref document: HK |
|
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Pan Anqun Inventor after: Li Haixiang Inventor before: Li Haixiang |