CN112231070A - 数据写入、读取方法、装置及服务器 - Google Patents
数据写入、读取方法、装置及服务器 Download PDFInfo
- Publication number
- CN112231070A CN112231070A CN202011105602.5A CN202011105602A CN112231070A CN 112231070 A CN112231070 A CN 112231070A CN 202011105602 A CN202011105602 A CN 202011105602A CN 112231070 A CN112231070 A CN 112231070A
- Authority
- CN
- China
- Prior art keywords
- target
- transaction
- data
- block
- write transaction
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了数据写入、读取方法、装置及服务器。该数据写入方法包括:当接收到目标写事务的处理请求时,执行目标写事务,并在目标写事务的执行过程中,将目标写事务的事务ID写入目标版本数据中,目标版本数据是目标写事务所针对行记录的新的版本数据;在目标写事务执行完毕时,获取目标写事务的提交时间戳;将目标版本数据进行提交处理,并利用目标写事务的提交时间戳和事务ID,生成目标写事务对应的数据映射关系。因此,通过本方案可以解决相关技术中在实现外部读一致性时,IO开销和锁开销较大的问题。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及数据写入、读取方法、装置及服务器。
背景技术
外部读一致性是分布式事务的核心的话题,其是指事务的可见顺序遵守外部可见的提交顺序。为了实现外部读一致性,中心授时应用而生,即,TM(Transaction Manager,事务管理器)在事务开启时到TSO(Time Stamp Oracle时钟服务)节点,即中心授时节点,获取事务的开启时间戳,在事务提交阶段从TSO节点中获取事务的提交时间戳。
相关技术中,适用于MVCC(Multi-Version Concurrency Control,多版本并发控制)机制下的数据处理流程为:分布式***中的资源服务器在接收到写事务的处理请求时,执行写事务,即为该写事务所针对的行记录生成新的版本数据,在写事务执行完毕时,进入事务提交阶段;在事务递交阶段中,将写事务的提交时间戳写入所生成的版本数据中,并提交该版本数据;而在接收到读事务的处理请求时,若该读事务的开启时间戳大于所针对行记录的至少一个版本数据中的递交时间戳,表明该读事务对该至少一个版本数据可见,则基于该至少一个版本数据,确定该读事务的响应结果。
但是,写事务执行过程中,由于对行记录的版本数据的变更,因此,会涉及到申请和释放页面锁和行锁。而写事务的提交时间戳只有在事务提交阶段才生成,那么,在将写事务的提交时间戳写入到对应的版本数据时,需要再次涉及到版本数据的变更。可见,相关技术中,在实现外部读一致性时,存在IO开销和锁开销较大的问题。
发明内容
本发明实施例的目的在于提供一种数据写入、读取方法、装置及服务器,以解决相关技术在实现外部读一致性时,IO开销和锁开销较大的问题。具体技术方案如下:
第一方面,本发明实施例提供了一种数据写入方法,应用于资源服务器;所述方法包括:
当接收到目标写事务的处理请求时,执行所述目标写事务,并在所述目标写事务的执行过程中,将所述目标写事务的事务ID写入目标版本数据中,所述目标版本数据是所述目标写事务所针对行记录的新的版本数据;
在所述目标写事务执行完毕时,获取所述目标写事务的提交时间戳;
将所述目标版本数据进行提交处理,并利用所述目标写事务的提交时间戳和事务ID,生成所述目标写事务对应的数据映射关系。
可选地,所述方法还包括:
保存所述目标写事务对应的数据映射关系。可选地,所述资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;
所述保存所述目标写事务对应的数据映射关系,包括:
基于所述目标事务的事务ID和所述第一数量,计算所述目标写事务对应的数据映射关系待写入的第一类数据块的第一块号,以及在写入第一类数据块内时的第一偏移地址;
在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系。
可选地,所述内存中还包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
所述在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系,包括:
基于所述第一块号和所述第二数量,计算目标内存地址所位于的第二类数据块的第二块号,以及所述目标内存地址在第二类数据块中的第二偏移地址;其中,所述目标内存地址为具有所述第一块号的第一类数据块的内存地址;
读取具有所述第二块号的第二类存储块中、所述第二偏移地址处的内存地址,得到目标内存地址;
在所述目标内存地址指示的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系。
可选地,所述方法还包括:
针对每一第一类数据块,若检测到该第一类数据块中的已记录的数据映射关系的个数等于所述第一数量,且已记录的数据映射关系中最大的提交时间戳小于一待执行或已执行读事务的开启时间戳,在存储该第一类数据块的内存地址的存储空间中,写入用于表征回收状态的标识内容。
第二方面,本发明实施例提供了一种数据读取方法,应用于资源服务器;所述方法包括:
当接收到目标读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述目标读事务所针对的行记录;
针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系;
针对每一目标事务ID,若查找到的数据映射关系中,提交时间戳小于所述目标读事务的开启时间戳,确定记录有该目标事务ID的版本数据,作为待利用版本数据;
基于所述待利用版本数据,确定所述目标读事务的响应结果。
可选地,所述资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;
所述针对每一目标事务ID,从预先保存的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系,包括:
针对每一目标事务ID,基于该目标事务ID和所述第一数量,计算用于保存目标写事务对应的数据映射关系的第一类数据块的第三块号,以及所述目标写事务对应的数据映射关系在写入时的第三偏移地址;其中,所述目标写事务为具有该目标事务ID的写事务;
在具有所述第三块号的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
可选地,所述内存中还包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
在具有所述第三块号的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系,包括:
基于所述第三块号和所述第二数量,计算目标内存地址所位于的第二类数据块的第四块号,以及所述目标内存地址在第二类数据块中的第四偏移地址;其中,所述目标内存地址为具有所述第三块号的第一类数据块的内存地址;
读取具有所述第四块号的第二类存储块中、所述第四偏移地址处的内存地址,得到目标内存地址;
在所述目标内存地址指示的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
可选地,所述方法还包括:
若具有所述第四块号的第二类存储块中、所述第四偏移地址处标记有用于表征回收状态的标识内容,确定记录有该目标事务ID的版本数据,作为待利用版本数据。
第三方面,本发明实施例提供了一种数据写入装置,应用于资源服务器;所述装置包括:
第一处理模块,用于当接收到目标写事务的处理请求时,执行所述目标写事务,并在所述目标写事务的执行过程中,将所述目标写事务的事务ID写入目标版本数据中,所述目标版本数据是为所述目标写事务所针对的行记录生成的新的版本数据;
第二处理模块,用于在所述目标写事务执行完毕时,获取所述目标写事务的提交时间戳;
第三处理模块,用于将执行完毕的所述目标写事务进行提交处理,并利用所述目标写事务的提交时间戳和事务ID,生成所述目标写事务对应的数据映射关系。
第四方面,本发明实施例提供了一种数据读取装置,应用于资源服务器;所述装置包括:
获取模块,用于当接收到目标读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述目标读事务所针对的行记录;
查找模块,用于针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系;
分析模块,用于针对每一目标事务ID,若查找到的数据映射关系中,提交时间戳小于所述目标读事务的开启时间戳的数据映射关系中,获取记录有该目标事务ID的版本数据,作为待利用版本数据;
响应模块,用于基于所述待利用版本数据,确定所述目标读事务的响应结果。
第五方面,本发明实施例提供了一种资源服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面和/或第二方面所提供的方法步骤。
第六方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时第一方面所述的方法,和/或,第二方法所述的方法步骤。
本发明实施例有益效果:
本发明实施例所提供的数据写入方案中,在目标写事务的执行过程中,将目标写事务的事务ID,写入到目标写事务所针对的行记录的新的版本数据,即目标版本数据;在目标写事务执行完毕时,将目标版本数据进行提交处理,并利用目标写事务的提交时间戳和事务ID,生成目标写事务对应的数据映射关系。本方案中,在写事务所针对行记录的新的版本数据中,记录事务ID,并生成写事务的提交时间戳与写事务的事务ID的数据映射关系,以用于数据读取过程,这样,可以避免在行记录的版本数据中写入提交时间戳时,所产生的IO开销和锁开销。因此,通过本方案可以解决相关技术中在实现外部读一致性时,IO开销和锁开销较大的问题。
另外,基于上述的数据写入方法所提供的数据读取方法中,通过事务ID能够确定出写事务的提交时间戳,进而能够依赖读事务的开启时间戳和写事务的提交时间戳的关系,确定出各个版本数据是否对读事务可见,从而确定读事务的响应结果。因此,通过本方案,可以保证外部读一致性。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明实施例所提供的数据写入方法的流程图;
图2(a)为资源管理器、事务管理器和中心授时节点的交互过程的示意图;
图2(b)为本发明实施例中第一类存储块的存储示意图;
图2(c)为本发明实施例中第一类存储块和第二类存储块的存储结构示意图;
图2(d)为本发明实施例所提供的第一类存储块的存储结构示意图;
图2(e)为本发明实施例所给出的设置有回收标识的存储示意图;
图3为本发明实施例所提供的数据读取方法的流程图;
图4为本发明实施例所提供的数据写入装置的结构示意图;
图5为本发明实施例所提供的数据读取装置的结构示意图;
图6为本发明实施例所提供的资源服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术问题,本发明实施例提供了数据写入、读取方法、装置及服务器。
下面首先对本发明实施例所提供的数据写入方法进行介绍。
本发明实施例所提供的数据写入方法应用于资源服务器,具体的,该数据写入方法的执行主体可以为资源服务器中的RM(Resource Manager,资源管理器)。该资源服务器为数据存储***中用于资源管理的服务器,并且,该数据存储***还可以包括:事务管理服务器和中心授时节点,其中,事务管理服务器中设置有事务管理器。在采用中心授时时,资源管理器、事务管理器和TSO节点的交互过程可以如图2(a)所示,其中,事务管理器TM在生成写事务时,向TSO节点请求该写事务的开启时间戳,即Get start_ts;通过SQL1和SQL2等SQL语句向RM下发写事务,SQL语句中携带有开启时间戳start_ts;写事务在完成执行阶段后,可以进入提交阶段,而在该写事务的提交阶段之前,TM可以先向TSO节点请求该写事务的提交时间戳,即Get commit_ts,然后基于提交时间戳commit_ts来进行写事务的提交其中,图2(a)中的Xa_perpare用于表征写事务进入执行阶段,而Xa_Commit用于表征写事务进入执行阶段。而事务管理器在生成读事务时,向中心授时节点请求该读事务的开启时间戳。可以理解的是,开启时间戳和提交时间戳均属于逻辑时间戳,中心授时节点生成开启时间戳和提交时间戳的具体方式,本发明实施例不做限定。
另外,本发明实施例中所涉及的事务可以为悲观事务,所谓悲观事务具体指在事务处理过程中采用加锁方式以及数据写入公共数据库的方式的事务;与悲观事务相对应的乐观事务是指未采用加锁方式以及数据写入缓存的方式的事务。并且,写事务的处理过程分为两个阶段:执行阶段和提交阶段。其中,执行阶段为写事务的执行过程,用于对写事务所针对行记录的版本数据进行变更,从而形成新的版本数据;而写事务的提交阶段为将写事务所针对行记录的新的版本数据提交到数据库,从而持久化处理。
并且,本发明实施例所提供的方案为适用于MVCC(Multi-Version ConcurrencyControl,多版本并发控制)机制下数据处理流程。在该种机制下,数据库中的每条行记录均存在至少一个版本数据,每一版本数据是通过执行写事务所形成的数据。
如图1所示,本发明实施例所提供的一种数据写入方法,可以包括如下步骤:
S101,当接收到目标写事务的处理请求时,执行该目标写事务,并在该目标写事务的执行过程中,将该目标写事务的事务ID写入目标版本数据中;
其中,该目标版本数据是该目标写事务所针对行记录的新的版本数据,具体而言,该目标版本数据是在执行该目标写事务时所生成的、该目标写事务所针对行记录的新的版本数据。
由于事务ID属于事务的身份信息,因此,从事务产生,事务ID便存在;并且,事务ID能够唯一标识事务,即与事务的提交时间戳具有唯一的对应性。那么,在该目标写事务的执行过程中,可以将该目标写事务的事务ID写入目标版本数据中,后续在获得提交时间戳后,保存目标写事务的事务ID与提交时间戳的映射关系。这样,通过空间换时间的策略,可以解决现有技术所存在的技术问题,即IO冗余和锁冗余的问题。
S102,在该目标写事务执行完毕时,获取该目标写事务的提交时间戳;
其中,目标写事务的提交时间戳为在目标写事务的提交阶段所生成的时间戳。其中,在该目标写事务执行完毕时,可以进入目标写事务的提交阶段,从而事务管理器可以向中心授时节点请求提交时间戳,从而将目标写事务的提交时间戳发送给该资源服务器中的资源管理器,从而得到该目标写事务的提交时间戳。
S103,将目标版本数据进行提交处理,并利用目标写事务的提交时间戳和事务ID,生成目标写事务对应的数据映射关系;
其中,任一写事务对应的数据映射关系为关于该写事务的提交时间戳和事务ID的映射关系。
由于写事务的提交时间戳和读事务的开启时间戳是保证外部读一致性的关键,因此,在将目标写事务的事务ID写入到行记录的目标版本数据中后,可以生成该目标写事务对应的数据映射关系,从而建立目标写事务的提交时间戳与目标版本数据的关联关系。这样使得,后续在数据读取时,可以基于版本数据中的记录的事务ID查找到相应的提交时间戳,从而基于写事务的提交时间戳和读事务的开启时间戳的关系,判定出读事务所针对行记录的各版本数据是否对读事务可见,从而保证外部读一致性。可以理解的是,将目标版本数据进行提交处理,即进入目标写事务的提交阶段。
需要说明的是,在利用该目标写事务的提交时间戳和事务ID,生成该目标写事务对应的数据映射关系之后,可以保存该目标写事务对应的数据映射关系。示例性的,可以在该资源服务器的内存中保存该目标写事务对应的数据映射关系。其中,在资源管理服务器的内存中保存目标写事务对应的数据映射关系的具体实现方式存在多种,后续结合具体示例进行说明。
本发明实施例所提供的数据写入方案中,在目标写事务的执行过程中,将目标写事务的事务ID,写入到目标写事务所针对的行记录的新的版本数据,即目标版本数据;在目标写事务执行完毕时,将目标版本数据进行提交处理,并利用目标写事务的提交时间戳和事务ID,生成目标写事务对应的数据映射关系。本方案中,在写事务所针对行记录的新的版本数据中,记录事务ID,并生成写事务的提交时间戳与写事务的事务ID的数据映射关系,以用于数据读取过程,这样,可以避免在行记录的版本数据中写入提交时间戳时,所产生的IO开销和锁开销。因此,通过本方案可以解决相关技术中在实现外部读一致性时,IO开销和锁开销较大的问题。
下面举例介绍保存目标写事务对应的数据映射关系的具体实现方式。
资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;该第一类数据块也可以称为block;
保存该目标写事务对应的数据映射关系,可以包括步骤A1和步骤A2:
步骤A1,基于该目标事务的事务ID和该第一数量,计算该目标写事务对应的数据映射关系待写入的第一类数据块的第一块号,以及在写入第一类数据块内时的第一偏移地址;
步骤A2,在具有该第一块号的第一类数据块中,该第一偏移地址所指示的存储空间内,存储该目标写事务对应的数据映射关系。
其中,多个第一类数据块的块号为连续块号,且每一第一类数据块中存储事务ID连续的第一数量个写事务对应的数据映射关系,因此,在获得任一目标写事务的事务ID后,可以通过对该目标写事务的事务ID和第一数量进行数学运算,得到该目标写事务对应的映射关系待存储至的第一类存储块和第一偏移地址。在确定出第一块号和第一偏移地址后,可以在具有该第一块号的第一类数据块中,该第一偏移地址所指示的存储空间内,存储该目标写事务对应的数据映射关系。
示例性的,通过对该目标写事务的事务ID和第一数量进行取整运算的方式,得到第一块号;并且,通过对目标写事务的事务ID和第一数量进行取余运算的方式,得到第一偏移地址。
为了方便理解步骤A1的具体实现过程,下面进行举例说明:
例如:如图2(b)所示,假设多个第一类数据块的块号为从1~3,而事务ID的编号为从1~3072,每个第一类数据块存储1024个写事务对应的KV键值对,其中,该KV键值对为关于事务ID和提交时间戳的数据映射关系;
基于上述说明,假设一目标写事务的事务ID为5,那么,该目标写事务对应的数据映射关系待写入的第一类数据块的第一块号的计算方式为:在写入第一类数据块内时的第一偏移地址的计算方式为:5%1024=5。通过计算可知,该目标写事务对应的数据映射关系待写入的第一类数据块的第一块号为1,以及在写入第一类数据块内时的第一偏移地址为5。
又如:假设多个第一类数据块的块号为从0~2,而事务ID的编号为从1~3072,每个第一类数据块存储1024个写事务对应的KV键值对,其中,该KV键值对为关于事务ID和提交时间戳的数据映射关系;
基于上述说明,假设一目标写事务的事务ID为5,那么,该目标写事务对应的数据映射关系待写入的第一类数据块的第一块号的计算方式为:在写入第一类数据块内时的第一偏移地址的计算方式为:5%1024=5。通过计算可知,该目标写事务对应的数据映射关系待写入的第一类数据块的第一块号为0,以及在写入第一类数据块内时的第一偏移地址为5。
可以理解的是,如果每个第一类数据块的大小为16KB,可以存储1000个KV,按照每1秒有5万个写事务而言,则在没有回收的情况下,能够允许写事务并行的时间和数据块的数量关系如下:
1s时长内的写事务并行,需要50个第一类数据块,即800KB的内存空间;
10s时长内的写事务并行,需要500个第一类数据块,即8M的内存空间;
60s时长内的写事务并行,需要3000个第一类数据块,即50MB的内存空间;
600s时长内的写事务并行,需要30000个第一类数据块,即500MB的内存空间。
也就是说,通过本发明实施例所提供的存储方式,在没有回收的情况下,500MB的内存空间能够容纳600s的写事务并行处理。
可以理解的是,不同的应用场景下,事务持续时间的级别不同,可以根据事务持续时间来选取相应内存空间作为KV的存储空间,从而应对大量的并行事务。例如:在oltp场景下,事务持续时间在秒级,一般在10s左右,那么,选取500MB的内存空间便可以很好的应对大量的并行事务。其中,oltp(On-Line Transaction Processing,联机事务处理过程)场景,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。
可见,通过该种存储方式,使得查询KV时,无需加锁便可以实现加锁访问的效果。
另外,为了实现对各个第一类数据块的快速访问,内存中包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
在具有第一块号的第一类数据块中,第一偏移地址所指示的存储空间内,存储目标写事务对应的数据映射关系,可以包括步骤B1-B3:
步骤B1,基于该第一块号和第二数量,计算目标内存地址所位于的第二类数据块的第二块号,以及该目标内存地址在第二类数据块中的第二偏移地址;其中,该目标内存地址为具有该第一块号的第一类数据块的内存地址;
步骤B2,读取具有该第二块号的第二类存储块中、该第二偏移地址处的内存地址,得到目标内存地址;
步骤B3,在该目标内存地址指示的第一类数据块中,第一偏移地址所指示的存储空间内,存储该目标写事务对应的数据映射关系。
其中,多个第二类数据块的块号为连续块号,且每一第二类数据块中存储块号连续的第二数量个第一类数据块的内存地址,因此,在获得第一类数据块的第一块号后,可以通过对第一类数据块的第一块号和第二数量进行数学运算,得到该第一类数据块的内存地址所位于的第二类数据块的第二块号,以及在第二类数据块中的第二偏移地址。
示例性的,通过对第一块号和第二数量进行取整运算的方式,得到第二块号;并且,通过第一块号和第二数量进行取余运算的方式,得到第二偏移地址。
为了方便理解步骤A1的具体实现过程,下面进行举例说明:
例如:假设多个第二类数据块的块号为从1~1024,而多个第一类数据块的块号为从1~6000,每个第二类数据块存储2000个第一类数据块的内存地址;
基于上述说明,假设第一类数据块的第一块号为3,那么,该第一类数据块的目标内存地址所位于的第二类数据块的块号为:在内存地址写入第二类数据块内时的第二偏移地址的计算方式为:3%2000=3。通过计算可知,目标内存地址所位于的第二类数据块的第二块号为1,以及该目标内存地址在第二类数据块中的第二偏移地址为5。
可以理解的是,如果每个第一类数据块的内存地址用8字节存储,16KB的内存空间可以存储2000个第一类数据块,而如果每1秒有5万个写事务而每个第一类数据块可以存储1000个KV而言,可以满足40s的并行事务。而16MB的内存空间可以满足40000S的并行业务。
图2(c)给出了第一类数据和第二类数据块的关系,其中,Block_index_block为第二类数据块,每一第二类数据中记录有多个第一类数据块的内存地址Mem-addr,每一内存地址Mem-addr用于指示16KB的BLOCK_MEM,即第一类数据块,每一类数据块中记录有1024个KV,其中,max_continu_wm为下文中所述的第一类数据块中记录的最大的提交时间戳。
可见,通过较小的内存空间便可以满足大量的并行业务,并且可以通过无锁的方式先加锁访问的效果。
另外,由于当某个时刻,活跃的读事务中最小的开启时间戳均大于提交时间戳时,提交时间戳对应的写事务所形成的版本数据对所有读事务均可见,这样,该提交时间戳没有存在意义。基于该种考虑,本发明实施例还提供了对于存储空间的回收机制。具体而言,所述方法还包括:
针对每一第一类数据块,若检测到该第一类数据块中的已记录的数据映射关系的个数等于该第一数量,且已记录的数据映射关系中最大的提交时间戳小于一待执行或已执行读事务的开启时间戳,在存储该第一类数据块的内存地址的存储空间中,写入用于表征回收状态的标识内容。
可以理解的是,在存储该第一类数据块的内存地址的存储空间中,写入用于表征回收状态的标识内容后,该第一类数据块中各个数据映射关系所对应写事务所生成的版本数据,对任一读事务均可见。并且,在存储该第一类数据块的内存地址的存储空间中,写入用于表征回收状态的标识内容后,该第一类数据块为已回收的数据块。
其中,针对内存空间的回收可以采用定时回收的方式,当然并不局限于此。示例性的,定时回收的时间间隔可以为30s、50s、60s等等。图2(d)示例性地示出了两个第一类数据块的存储内存,第一个第一类数据块的存储有事务ID为1-1000的事务的数据映射关系,该第一个第一类数据下方的内容为存储的内容,处第一行以外左侧为事务ID,右侧为提交时间戳,在第一行中,左侧记录有该第一类存储块中的最大的提交时间戳,而右侧记录有已经写入该第一类数据块的数据映射关系的个数。类似的,存储有事务ID为1001-2000的第二个第一类数据块下方的内容与第一个第一类数据块的存储结构类似。
通过上述的回收机制,可以解决相关技术中在实现外部读一致性时,IO开销和锁开销较大的问题;同时,保证内存的合理利用,避免空间浪费。
基于上述的数据写入方法,本发明实施例还提供了数据读取方法。下面对本发明实施例所提供的数据读取方法进行介绍。
本发明实施例所提供的数据读取方法应用于资源服务器,具体的,该数据读取方法的执行主体可以为资源服务器中的资源管理器。该资源服务器为数据存储***中用于资源管理的服务器,并且,该数据存储***还可以包括:事务管理服务器和中心授时节点,其中,事务管理服务器中设置有事务管理器。
如图3所示,本发明实施例所提供的数据读取方法可以包括如下步骤:
S301,当接收到目标读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,该目标行记录为该目标读事务所针对的行记录;
其中,在接收到目标读事务的处理请求时,为了判定该目标读事务对于该目标行记录的哪些版本数据可见,因此,可以获取目标行记录的各版本数据中的目标事务ID。每一版本数据中的目标事务ID为生成该版本数据时所写入的关于写事务的事务ID。
S302,针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系;
由于目标读事务是否对版本数据可见,依赖的是目标读事务的开启时间戳和生成版本数据的写事务的提交时间戳,因此,在获得各个事务ID后,可以从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系,从而获得版本数据对应写事务的提交时间戳。
其中,预先生成的各个写事务对应的数据映射关系可以保存在资源服务器的内存中,此时,从该内存中所保存的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系。可以理解的是,数据映射关系在内存中的存储方式可以存在多种,查找具有该目标事务ID的写事务对应的数据映射关系的方式与数据映射关系的存储方式相对应。为了方案清楚和布局清晰,下文介绍从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系的具体实现方式。
S303,针对每一目标事务ID,若查找到的数据映射关系中,提交时间戳小于目标读事务的开启时间戳,获取记录有该目标事务ID的版本数据,作为待利用版本数据;
若查找到的包含某一目标事务ID的数据映射关系中,提交时间戳小于目标读事务的开启时间戳,则表明数据映射关系对应写事务所生成的版本数据对该目标读事务可见,因此,可以获取记录有该目标事务ID的版本数据,作为待利用版本数据。
S304,基于待利用版本数据,确定该目标读事务的响应结果。
可以理解的是,待利用版本数据可以存在至少一个。由于目标读事务通常是读取最新的数据,因此,可以从待利用版本数据中选取最新的版本数据,作为该目标读事务的响应结果。
为了方便理解方案,图2(e)示出了一条行记录的四个版本数据,其中,每个版本数据中的rowdata为具体数据内容,Trx_id为写入到版本数据中的事务ID,rollptr为用于串联起各个版本数据的指针,也就是,通过这些指针可以识别到一条行记录的各个版本数据;从上到下,各个版本数据中的事务ID对应写事务的提交时间戳依次为:300、350、400、500,假设一读事务的开启时间戳是500,那么,前三个版本数据对于该读事务可见,图2(e)中NUlL代表版本数据对于该条读事务可见,第四个版本数据中的500代表事务ID对应写事务的提交时间戳。
基于上述的数据写入方法所提供的数据读取方法中,通过事务ID能够确定出写事务的提交时间戳,进而能够依赖读事务的开启时间戳和写事务的提交时间戳的关系,确定出各个版本数据是否对读事务可见,从而确定读事务的响应结果。因此,通过本方案,可以保证外部读一致性。
可选地,所述资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;
基于上述数据写入方法的实施例中所给出的数据映射关系的存储方式,所述针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系,可以包括步骤C1-C2:
步骤C1,针对每一目标事务ID,基于该目标事务ID和所述第一数量,计算用于保存目标写事务对应的数据映射关系的第一类数据块的第三块号,以及所述目标写事务对应的数据映射关系在写入时的第三偏移地址;其中,所述目标写事务为具有该目标事务ID的写事务;
步骤C2,在具有所述第三块号的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
其中,多个第一类数据块的块号为连续块号,且每一第一类数据块中存储事务ID连续的第一数量个写事务对应的数据映射关系,因此,在获得任一目标事务ID后,可以通过对该目标事务ID和第一数量进行数学运算,用于保存目标写事务对应的数据映射关系的第一类数据块的第三块号,以及所述目标写事务对应的数据映射关系在写入时的第三偏移地址。在确定出第三块号和三偏移地址后,可以在具有第三块号的第一类数据块中,第三偏移地址所指示的存储空间内,读取目标写事务对应的数据映射关系。
示例性的,通过对该目标事务ID和第一数量进行取整运算的方式,得到第三块号;并且,通过对目标事务ID和第一数量进行取余运算的方式,得到第三偏移地址。关于通过目标事务ID确定第一类数据块的块号和偏移地址的方式可以参见上述的数据写入方法中的相应确定过程,在此不做赘述。
另外,为了实现对各个第一类数据块的快速访问,内存中包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
基于上述的存储结果,在具有第三块号的第一类数据块中,第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系,可以包括步骤D1-D3:
步骤D1,基于所述第三块号和所述第二数量,计算目标内存地址所位于的第二类数据块的第四块号,以及所述目标内存地址在第二类数据块中的第四偏移地址;其中,所述目标内存地址为具有所述第三块号的第一类数据块的内存地址;
步骤D2,读取具有所述第四块号的第二类存储块中、所述第四偏移地址处的内存地址,得到目标内存地址;
步骤D3,在所述目标内存地址指示的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
其中,多个第二类数据块的块号为连续块号,且每一第二类数据块中存储块号连续的第二数量个第一类数据块的内存地址,因此,在获得第一类数据块的第三块号后,可以通过对第一类数据块的第三块号和第二数量进行数学运算,得到该第一类数据块的内存地址所位于的第二类数据块的第四块号,以及在第二类数据块中的第二偏移地址。
示例性的,通过对第三块号和第二数量进行取整运算的方式,得到第四块号;并且,通过第三块号和第二数量进行取余运算的方式,得到第四偏移地址。关于通过第一类数据块的块号和第二数量的数学运算得到第二类数据块的块号和偏移地址的具体实现,可以参见上述数据写入方法的实施例中的相应内容。
可选地,基于上述的数据写入方法中的回收机制,本发明实施例还提供的方法还可以包括如下步骤:
若具有所述第四块号的第二类存储块中、所述第四偏移地址处标记有用于表征回收状态的标识内容,确定记录有该目标事务ID的版本数据,作为待利用版本数据。
通过上述的回收机制,可以解决相关技术中在实现外部读一致性时,IO开销和锁开销较大的问题;同时,保证内存的合理利用,避免空间浪费。
基于上述的方法实施例,本发明实施例还提供了一种数据写入装置。如图4所示,该数据写入装置可以包括:
第一处理模块410,用于当接收到目标写事务的处理请求时,执行所述目标写事务,并在所述目标写事务的执行过程中,将所述目标写事务的事务ID写入目标版本数据中,所述目标版本数据是为所述目标写事务所针对的行记录生成的新的版本数据;
第二处理模块420,用于在所述目标写事务执行完毕时,获取所述目标写事务的提交时间戳;
第三处理模块430,用于将执行完毕的所述目标写事务进行提交处理,并利用所述目标写事务的提交时间戳和事务ID,生成所述目标写事务对应的数据映射关系。
可选地,所述第三处理模块430还用于保存所述目标写事务对应的数据映射关系。
可选地,所述资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;
所述第三处理模块430保存所述目标写事务对应的数据映射关系,包括:
基于所述目标事务的事务ID和所述第一数量,计算所述目标写事务对应的数据映射关系待写入的第一类数据块的第一块号,以及在写入第一类数据块内时的第一偏移地址;
在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系。
可选地,所述内存中还包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
所述第三处理模块430在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系,包括:
基于所述第一块号和所述第二数量,计算目标内存地址所位于的第二类数据块的第二块号,以及所述目标内存地址在第二类数据块中的第二偏移地址;其中,所述目标内存地址为具有所述第一块号的第一类数据块的内存地址;
读取具有所述第二块号的第二类存储块中、所述第二偏移地址处的内存地址,得到目标内存地址;
在所述目标内存地址指示的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系。
可选地,所述装置还包括:
回收模块,用于针对每一第一类数据块,若检测到该第一类数据块中的已记录的数据映射关系的个数等于所述第一数量,且已记录的数据映射关系中最大的提交时间戳小于一待执行或已执行读事务的开启时间戳,在存储该第一类数据块的内存地址的存储空间中,写入用于表征回收状态的标识内容。
基于上述的方法实施例,本发明实施例还提供了一种数据读取装置。如图5所示,该数据读取装置可以包括:
获取模块510,用于当接收到目标读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述目标读事务所针对的行记录;
查找模块520,用于针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系;
分析模块530,用于针对每一目标事务ID,若查找到的数据映射关系中,提交时间戳小于所述目标读事务的开启时间戳的数据映射关系中,获取记录有该目标事务ID的版本数据,作为待利用版本数据;
响应模块540,用于基于所述待利用版本数据,确定所述目标读事务的响应结果。
可选地,所述资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;
所述查找模块520针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系,包括:
针对每一目标事务ID,基于该目标事务ID和所述第一数量,计算用于保存目标写事务对应的数据映射关系的第一类数据块的第三块号,以及所述目标写事务对应的数据映射关系在写入时的第三偏移地址;其中,所述目标写事务为具有该目标事务ID的写事务;
在具有所述第三块号的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
可选地,所述内存中还包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
在查找模块520具有所述第三块号的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系,包括:
基于所述第三块号和所述第二数量,计算目标内存地址所位于的第二类数据块的第四块号,以及所述目标内存地址在第二类数据块中的第四偏移地址;其中,所述目标内存地址为具有所述第三块号的第一类数据块的内存地址;
读取具有所述第四块号的第二类存储块中、所述第四偏移地址处的内存地址,得到目标内存地址;
在所述目标内存地址指示的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
可选地,所述分析模块530还用于:
若具有所述第四块号的第二类存储块中、所述第四偏移地址处标记有用于表征回收状态的标识内容,确定记录有该目标事务ID的版本数据,作为待利用版本数据。
本发明实施例还提供了一种资源服务器,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现本发明实施例所提供的数据写入方法的步骤,和/或,数据读取方法的步骤。
上述资源服务器提到的通信总线可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述资源服务器与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的数据写入方法的步骤和/或数据读取方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行实现本发明实施例所提供的数据写入方法的步骤和/或数据读取方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (13)
1.一种数据写入方法,其特征在于,应用于资源服务器;所述方法包括:
当接收到目标写事务的处理请求时,执行所述目标写事务,并在所述目标写事务的执行过程中,将所述目标写事务的事务ID写入目标版本数据中,所述目标版本数据是所述目标写事务所针对行记录的新的版本数据;
在所述目标写事务执行完毕时,获取所述目标写事务的提交时间戳;
将所述目标版本数据进行提交处理,并利用所述目标写事务的提交时间戳和事务ID,生成所述目标写事务对应的数据映射关系。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
保存所述目标写事务对应的数据映射关系。
3.根据权利要求2所述的方法,其特征在于,所述资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;所述保存所述目标写事务对应的数据映射关系,包括:
基于所述目标事务的事务ID和所述第一数量,计算所述目标写事务对应的数据映射关系待写入的第一类数据块的第一块号,以及在写入第一类数据块内时的第一偏移地址;
在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系。
4.根据权利要求3所述的方法,其特征在于,所述内存中还包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
所述在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系,包括:
基于所述第一块号和所述第二数量,计算目标内存地址所位于的第二类数据块的第二块号,以及所述目标内存地址在第二类数据块中的第二偏移地址;其中,所述目标内存地址为具有所述第一块号的第一类数据块的内存地址;
读取具有所述第二块号的第二类存储块中、所述第二偏移地址处的内存地址,得到目标内存地址;
在所述目标内存地址指示的第一类数据块中,所述第一偏移地址所指示的存储空间内,存储所述目标写事务对应的数据映射关系。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
针对每一第一类数据块,若检测到该第一类数据块中的已记录的数据映射关系的个数等于所述第一数量,且已记录的数据映射关系中最大的提交时间戳小于一待执行或已执行读事务的开启时间戳,在存储该第一类数据块的内存地址的存储空间中,写入用于表征回收状态的标识内容。
6.一种数据读取方法,其特征在于,应用于资源服务器;所述方法包括:
当接收到目标读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述目标读事务所针对的行记录;
针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系;
针对每一目标事务ID,若查找到的数据映射关系中,提交时间戳小于所述目标读事务的开启时间戳,确定记录有该目标事务ID的版本数据,作为待利用版本数据;
基于所述待利用版本数据,确定所述目标读事务的响应结果。
7.根据权利要求6所述的方法,其特征在于,所述资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的数据映射关系;
所述针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系,包括:
针对每一目标事务ID,基于该目标事务ID和所述第一数量,计算用于保存目标写事务对应的数据映射关系的第一类数据块的第三块号,以及所述目标写事务对应的数据映射关系在写入时的第三偏移地址;其中,所述目标写事务为具有该目标事务ID的写事务;
在具有所述第三块号的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
8.根据权利要求7所述的方法,其特征在于,所述内存中还包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
在具有所述第三块号的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系,包括:
基于所述第三块号和所述第二数量,计算目标内存地址所位于的第二类数据块的第四块号,以及所述目标内存地址在第二类数据块中的第四偏移地址;其中,所述目标内存地址为具有所述第三块号的第一类数据块的内存地址;
读取具有所述第四块号的第二类存储块中、所述第四偏移地址处的内存地址,得到目标内存地址;
在所述目标内存地址指示的第一类数据块中,所述第三偏移地址所指示的存储空间内,读取所述目标写事务对应的数据映射关系。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若具有所述第四块号的第二类存储块中、所述第四偏移地址处标记有用于表征回收状态的标识内容,确定记录有该目标事务ID的版本数据,作为待利用版本数据。
10.一种数据写入装置,其特征在于,应用于资源服务器;所述装置包括:
第一处理模块,用于当接收到目标写事务的处理请求时,执行所述目标写事务,并在所述目标写事务的执行过程中,将所述目标写事务的事务ID写入目标版本数据中,所述目标版本数据是为所述目标写事务所针对的行记录生成的新的版本数据;
第二处理模块,用于在所述目标写事务执行完毕时,获取所述目标写事务的提交时间戳;
第三处理模块,用于将执行完毕的所述目标写事务进行提交处理,并利用所述目标写事务的提交时间戳和事务ID,生成所述目标写事务对应的数据映射关系。
11.一种数据读取装置,其特征在于,应用于资源服务器;所述装置包括:
获取模块,用于当接收到目标读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述目标读事务所针对的行记录;
查找模块,用于针对每一目标事务ID,从预先生成的各个写事务对应的数据映射关系中,查找具有该目标事务ID的写事务对应的数据映射关系;
分析模块,用于针对每一目标事务ID,若查找到的数据映射关系中,提交时间戳小于所述目标读事务的开启时间戳的数据映射关系中,获取记录有该目标事务ID的版本数据,作为待利用版本数据;
响应模块,用于基于所述待利用版本数据,确定所述目标读事务的响应结果。
12.一种资源服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤,和/或,实现权利要求6-9任一项所述的方法步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的方法步骤,和/或,实现权利要求6-9任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011105602.5A CN112231070A (zh) | 2020-10-15 | 2020-10-15 | 数据写入、读取方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011105602.5A CN112231070A (zh) | 2020-10-15 | 2020-10-15 | 数据写入、读取方法、装置及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231070A true CN112231070A (zh) | 2021-01-15 |
Family
ID=74117991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011105602.5A Pending CN112231070A (zh) | 2020-10-15 | 2020-10-15 | 数据写入、读取方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231070A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948064A (zh) * | 2021-02-23 | 2021-06-11 | 北京金山云网络技术有限公司 | 一种数据读取方法、装置及数据读取*** |
CN113032292A (zh) * | 2021-05-19 | 2021-06-25 | 北京金山云网络技术有限公司 | 存储空间回收方法、数据读取方法及装置 |
CN113254483A (zh) * | 2021-06-03 | 2021-08-13 | 北京金山云网络技术有限公司 | 请求的处理方法和装置、电子设备和存储介质 |
CN113312370A (zh) * | 2021-07-30 | 2021-08-27 | 北京金山云网络技术有限公司 | 信息获取方法、装置、电子设备及存储介质 |
CN113391885A (zh) * | 2021-06-18 | 2021-09-14 | 电子科技大学 | 一种分布式事务处理*** |
-
2020
- 2020-10-15 CN CN202011105602.5A patent/CN112231070A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948064A (zh) * | 2021-02-23 | 2021-06-11 | 北京金山云网络技术有限公司 | 一种数据读取方法、装置及数据读取*** |
CN112948064B (zh) * | 2021-02-23 | 2023-11-03 | 北京金山云网络技术有限公司 | 一种数据读取方法、装置及数据读取*** |
CN113032292A (zh) * | 2021-05-19 | 2021-06-25 | 北京金山云网络技术有限公司 | 存储空间回收方法、数据读取方法及装置 |
CN113032292B (zh) * | 2021-05-19 | 2021-09-03 | 北京金山云网络技术有限公司 | 存储空间回收方法、数据读取方法及装置 |
CN113254483A (zh) * | 2021-06-03 | 2021-08-13 | 北京金山云网络技术有限公司 | 请求的处理方法和装置、电子设备和存储介质 |
CN113391885A (zh) * | 2021-06-18 | 2021-09-14 | 电子科技大学 | 一种分布式事务处理*** |
CN113312370A (zh) * | 2021-07-30 | 2021-08-27 | 北京金山云网络技术有限公司 | 信息获取方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112231070A (zh) | 数据写入、读取方法、装置及服务器 | |
US11321299B2 (en) | Scalable conflict detection in transaction management | |
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
US8484438B2 (en) | Hierarchical bloom filters for facilitating concurrency control | |
US9679003B2 (en) | Rendezvous-based optimistic concurrency control | |
US10621156B1 (en) | Application schemas for journal-based databases | |
CN111459920B (zh) | 基于虚拟全局时钟同步的多版本并发控制方法及*** | |
US20180260411A1 (en) | Replicated state management using journal-based registers | |
US20230099664A1 (en) | Transaction processing method, system, apparatus, device, storage medium, and program product | |
CN109690522B (zh) | 一种基于b+树索引的数据更新方法、装置及存储装置 | |
US11080261B2 (en) | Hybrid concurrency control | |
JP2781092B2 (ja) | システム間排他制御方式 | |
CN110520845B (zh) | 更新硬件事务内存(htm)用户异常中止元数据的方法及*** | |
CN115408411A (zh) | 数据写入方法、装置、电子设备及存储介质 | |
CN110546609B (zh) | 硬件事务内存(htm)辅助数据库事务的方法及*** | |
US20230394027A1 (en) | Transaction execution method, computing device, and storage medium | |
CN115629822B (zh) | 一种基于多核处理器的并发事务处理方法及其*** | |
CN113032292B (zh) | 存储空间回收方法、数据读取方法及装置 | |
WO2023124242A1 (zh) | 事务执行方法、装置、设备和存储介质 | |
US10776344B2 (en) | Index management in a multi-process environment | |
WO2014064914A1 (ja) | データ格納装置、データ格納方法およびプログラム | |
Shacham et al. | Taking omid to the clouds: Fast, scalable transactions for real-time cloud analytics | |
Deng et al. | Accelerating Merkle Patricia Trie with GPU | |
US11748329B2 (en) | Updating a multi-tenant database concurrent with tenant cloning | |
CN116069797A (zh) | 多版本数据库的时间戳生成方法、装置、设备及存储介质 |
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 |