CN107577678A - 处理数据库事务的方法、客户端和服务器 - Google Patents
处理数据库事务的方法、客户端和服务器 Download PDFInfo
- Publication number
- CN107577678A CN107577678A CN201610496073.3A CN201610496073A CN107577678A CN 107577678 A CN107577678 A CN 107577678A CN 201610496073 A CN201610496073 A CN 201610496073A CN 107577678 A CN107577678 A CN 107577678A
- Authority
- CN
- China
- Prior art keywords
- affairs
- version
- server
- data
- target data
- 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.)
- Granted
Links
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/2308—Concurrency control
-
- 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/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种处理数据库事务的方法、客户端与服务器,该方法包括:服务器接收客户端发送用于请求目标数据的数据库访问请求;向客户端发送目标数据的第一版本,第一版本为服务器当前存储的目标数据的版本,服务器中只保存目标数据的最近一次提交更新的版本;接收客户端基于第一版本执行完第一事务后发送的事务提交请求,事务提交请求中包括用于记录第一事务的数据操作的日志;根据日志,在确定第一事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,按照第一事务的数据操作修改服务器当前存储的目标数据的版本,获得目标数据的提交更新的版本。本发明实现了无锁事务机制,降低数据库的存储管理复杂度。
Description
技术领域
本发明涉及数据库技术领域,并且更具体地,涉及一种处理数据库事务的方法、客户端和服务器。
背景技术
当多个用户同时访问数据库时,会产生多个事务并发操作同一数据的情况,若对这种并发操作不加控制就可能会产生在数据库中存取不正确数据的问题,破坏事务与数据库的一致性。
封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T对某个数据操作之前,先向系统发出对其加锁的请求,加锁后事务T就对该数据有了一定的控制,在事务T释放它的锁之前,其他事务均不能对该数据进行操作。封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。上述封锁的技术也称为锁机制(Lock)。
在锁机制中,读会阻塞写,写也会阻塞读,当封锁粒度较大时,会降低数据库的访问实时性,导致修改同一数据时阻塞较大。而且同一数据的读写冲突会产生功能长时间阻塞,容易产生死锁问题,需要定期做死锁检测。
针对锁机制存在的问题,当前技术提出了多版本并发控制(MultiversionConcurrency Control,MVCC)的事务机制。一般把基于锁的并发控制机制称为悲观机制,而把MVCC机制称为乐观机制。
在MVCC中,为同一数据维护多个版本(每个版本对应一个时间戳),即这个数据被修改提交一次就生成一个新的版本,同一数据的多个版本之间的串行化使用时间戳(或版本号)或事务标识ID的方式来支持。对于要对该数据进行读操作的事务T来说,总是可以提供时间戳与事务T的开始时刻相一致的版本,不管这个事务T执行的时间有多长,该事务T始终看到的是该数据的同一个版本,即使在该事务T执行期间该数据被其他事务修改了,该事务T也不会出现“脏”读或幻读的现象。因此,MVCC通过为同一数据维护多个版本,实现了读操作与写操作并发而互不影响,也可以支持多个读操作并发而互不影响。但是,为同一数据维护多个版本的方式并不能解决并发的写操作与写操作之间的冲突。在MVCC中,还是利用加锁的方式解决来写操作的冲突问题。如果一个事务对一个数据执行写操作,该数据就被锁定,在该事务释放它的锁之前,其他事务均不能对该数据进行操作,即多个写操作会串行执行,因此不会存在冲突。
上述可知,现有的MVCC机制相对于传统的锁机制,避免了读阻塞写,写阻塞读,但是还是无法避免写阻塞写。此外,在现有的MVCC技术中,由于需要存储同一数据的多个版本,导致数据库的存储管理较为复杂,而且还需要定期清理不再需要的版本以回收空间,也增加了额外的开销。
发明内容
本发明提供了一种处理数据库事务的方法、客户端和服务器,实现了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够降低数据库的存储管理复杂度。
第一方面提供了一种处理数据库事务的方法,该方法包括:服务器接收客户端发送的数据库访问请求,所述数据库访问请求用于请求目标数据;所述服务器基于所述数据库访问请求,向所述客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器只保存所述目标数据的最近一次提交更新的版本;所述服务器接收所述客户端基于所述第一版本执行完第一事务后发送的事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志;所述服务器根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
在本发明技术方案中,所述服务器只保存所述目标数据的最近一次提交更新的版本,因此,所述服务器当前存储的所述目标数据的版本自然是所述目标数据的最近一次提交更新的版本。
本发明中描述的所述服务器当前存储的所述目标数据的版本是动态的概念,例如在时刻t1,所述服务器当前存储的所述目标数据的版本指的是t1对应的当前时刻所述服务器存储的所述目标数据的版本;在时刻t2,所述服务器当前存储的所述目标数据的版本指的是t2对应的当前时刻所述服务器存储的所述目标数据的版本。
所述目标数据的最近一次提交更新的版本指的是所述目标数据的最近一次经过要提交的事务的修改操作之后的版本,即所述目标数据的最近一次提交更新的版本满足事务与数据库的一致性。
所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突指的是,所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本的最近一次修改操作之间没有冲突,使得按照第一事务的数据操作修改所述服务器当前存储的目标数据的版本,不会破坏事务与数据库的一致性。
在本发明技术方案中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
结合第一方面,在第一方面的第一种可能的实现方式中,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字(Primary Key),所述方法还包括:在所述服务器当前存储的所述目标数据的版本中不存在所述主关键字的情况下,所述服务器确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
具体地,所述服务器当前存储的所述目标数据的版本中不存在所述插入操作对应的主关键字指的是,所述服务器当前存储的所述目标数据的版本中的所有记录的主关键字的值均与所述插入操作对应的主关键字的值不同。
应理解,主关键字(Primary Key)通常是表中的一个或多个字段,它的值用于唯一标识表中的某一条记录。主关键字是一种唯一关键字,表定义的一部分。主关键字的值不可重复,例如,关系数据库管理系统Microsoft Office Access在表中添加新记录时,会自动检查该新记录的主关键字的值,不允许该新记录的主关键字的值与表中其他记录的主关键字的值重复。主关键字也不可为空(NULL)。主关键字能够加快数据库的操作速度。
因此,在本发明技术方案中,在所述服务器当前存储的所述目标数据的版本中不存在所述插入操作对应的主关键字的情况下,说明所述服务器当前存储的所述目标数据的版本中不存在与所述第一事务的插入操作相同的记录,因此,所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
在第一方面的第一种可能的实现方式中,所述服务器在确定所述服务器当前存储的所述目标数据的版本中存在所述插入操作对应的主关键字的情况下,确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本存在数据冲突。
应理解,在所述服务器当前存储的所述目标数据的版本中存在所述插入操作的主关键字的情况下,说明所述服务器当前存储的所述目标数据的版本中已经存在与所述第一事务的插入操作相同的记录,因此,所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本存在数据冲突。
结合第一方面,在第一方面的第二种可能的实现方式中,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳,所述方法还包括:在所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳一致的情况下,所述服务器确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
每对目标数据做一次修改,生成对应的一个新版本,对应地也会设置一个对应的时间戳。如果目标数据的两个版本的时间戳相同,则说明这两个版本是所述目标数据的同一个版本。
因此,在本发明技术方案中,在所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳一致的情况下,说明所述服务器当前存储的所述目标数据的版本与所述第一版本是同一个版本,换句话说,从服务器向客户端发送所述第一版本开始到服务器接收到所述事务提交请求的期间,服务器中存储的所述目标数据并没有被其他事务修改,因此,所述第一事务的数据操作(即更新操作或删除操作)与所述服务器当前存储的所述目标数据的版本并没有数据冲突。
在第一方面的第二种可能的实现方式中,所述服务器在确定所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳不一致的情况下,确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本存在数据冲突。
所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳不一致,说明从服务器向客户端发送所述第一版本开始到服务器接收到所述事务提交请求的期间,服务器中存储的上述目标数据已经被其它事务作了修改。在这种情况下,如果按照所述第一事务的数据操作对所述服务器当前存储的所述目标数据的版本做修改,会破坏事务与数据库的一致性,因此,认为在所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳不一致的情况下,所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本之间存在数据冲突。
结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述服务器获得所述目标数据的提交更新的版本之后,所述方法还包括:所述服务器为所述目标数据的提交更新的版本设置新的时间戳。
还应理解,如果在所述服务器提交所述第一事务之后,所述服务器接收到其他客户端的用于请求所述目标数据的数据库访问请求,则所述服务器向所述其他客户端发送的所述目标数据的第二版本,所述第二版本即为经过所述第一事务的数据操作修改之后的所述目标数据的版本,应理解,所述目标数据的第二版本的时间戳与所述目标数据的第一版本的时间戳不同。
结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,所述服务器向所述客户端发送用于指示所述第一事务的提交无效的响应。
在上述各个实现方式中,所述服务器可以接收多个客户端的用于请求所述目标数据的数据库访问请求,每个客户端的数据访问请求,向所述每个客户端发送对应的所述目标数据的一个版本。当接收到所述每个客户端发送的事务提交请求时,在确定要提交的事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,完成对应事务的提交。
具体地,例如,所述服务器在第一时刻t1接收第一客户端的用于请求目标数据的数据库访问请求;所述服务器向所述第一客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本。所述服务器在第二时刻t2接收第二客户端的用于请求目标数据的数据库访问请求;所述服务器向所述第二客户端发送所述目标数据的第二版本,所述第二版本为所述服务器当前存储的所述目标数据的版本。应理解,所述第一版本与所述第二版本可能相同,也可能不同。假设所述第一时刻t1早于所述第二时刻t2,如果在所述第一时刻t1到所述第二时刻t2期间,服务器中存储的所述目标数据没有被修改,则所述第一版本与所述第二版本为同一个版本;如果在所述第一时刻t1到所述第二时刻t2期间,服务器中存储的所述目标数据被其他事务修改,则所述第一版本与所述第二版本为不同的版本,即所述第一版本的时间戳与所述第二版本的时间戳不同。当所述服务器接收到所述第一客户端或所述第二客户端的事务提交请求时,通过判断要提交的事务的数据操作与所述服务器当前存储的所述目标数据的版本是否存在数据冲突,来确定是否提交事务。
第二方面提供了一种处理数据库事务的方法,该方法包括:客户端获取用于请求执行第一事务的事务请求,所述第一事务要基于目标数据进行执行;所述客户端向服务器发送用于请求所述目标数据的数据库访问请求;所述客户端接收所述服务器发送的所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器当前存储的所述目标数据的版本为所述目标数据的最近一次提交更新的版本;所述客户端基于所述第一版本执行所述第一事务;在执行完所述第一事务后,所述客户端向所述服务器发送事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志,以使得所述客户端根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
在本发明技术方案中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字。
具体地,所述主关键字用于所述服务器判断是否所述第一事务的数据操作存在数据冲突,具体方法详见上文描述,这里不再赘述。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳。
具体地,所述事务提交请求中包括所述第一版本的时间戳,用于所述服务器判断是否所述第一事务的数据操作存在数据冲突,具体方法详见上文描述,这里不再赘述。
第三方面提供了一种服务器,所述服务器用于执行上述第一方面或第一方面的任一方面的可能实现方式中的方法。
具体地,所述服务器可以包括用于执行第一方面或第一方面的任一可能的实现方式中的方法的模块。
第四方面,提供了一种客户端,所述客户端用于执行上述第二方面或第二方面的任一方面的可能实现方式中的方法。
具体地,所述客户端可以包括用于执行第二方面或第二方面的任一可能的实现方式中的方法的模块。
第五方面提供了一种服务器,包括:收发器,用于接收客户端发送的数据库访问请求,所述数据库访问请求用于请求目标数据;所述收发器还用于,基于所述数据库访问请求,向所述客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器只保存所述目标数据的最近一次提交更新的版本;所述收发器还用于,接收所述客户端基于所述第一版本执行完第一事务后发送的事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志;无锁内存存储引擎,用于根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
在本发明技术方案中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
结合第三方面,在第三方面的第一种可能的实现方式中,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字,所述无锁内存存储引擎还用于,在所述服务器当前存储的所述目标数据的版本中不存在所述主关键字的情况下,确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
结合第三方面,在第三方面的第二种可能的实现方式中,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳,所述无锁内存存储引擎还用于,在所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳一致的情况下,确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
结合第三方面或第三方面的第一种或第二种可能的实现方式中,在第三方面的第三种可能的实现方式中,所述无锁内存存储引擎还用于,在所述服务器获得所述目标数据的提交更新的版本之后,为所述目标数据的提交更新的版本设置新的时间戳。
结合第三方面或第三方面的第一种或第二种或第三种可能的实现方式中,在第三方面的第四种可能的实现方式中,所述收发器用于,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,向所述客户端发送用于指示所述第一事务的提交无效的响应。
第四方面提供了一种客户端,所述客户端包括处理器与存储器,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,并且对所述存储器中存储的指令的执行使得所述处理器执行第二方面或第二方面的任一方面的可能实现方式中的方法。
在上述各个实现方式中,所述目标数据可以为一行数据(数据库中的一行数据也称为一个或一条记录),这种情况下,所述目标数据的版本指的是这一行数据的版本。或者,所述目标数据可以为多行数据,这种情况下,所述目标数据的版本指的是这多行数据的版本。或者,所述目标数据直接为一个数据库表,这种情况下,所述目标数据的版本指的是这个数据库表的版本。
在上述某些实现方式中,所述第一事务的数据操作为插入操作指的是,所述第一事务在数据库中插入数据(也可称为插入记录),而该插入的数据原先并不存在于数据库中。所述第一事务的数据操作为删除操作指的是,所述第一事务删除数据库中原本存在的数据(或记录)。所述第一事务的数据操作为更新操作指的是,所述第一事务要修改数据库中原本存在的数据的数值。
基于上述技术方案,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例的系统架构的示意图。
图2示出了根据本发明实施例提供的处理数据库事务的方法的示意性流程图。
图3示出了根据本发明实施例提供的服务器的示意性框图。
图4示出了根据本发明实施例提供的客户端的示意性框图。
图5示出了根据本发明实施例提供的服务器的另一示意性框图。
图6示出了根据本发明实施例提供的服务器的另一示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例的系统架构100的示意图。该系统包括客户端(Client)和服务器。服务器包括数据存储系统、无锁内存存储引擎(Lock-Free Memory StorageEngine)和远程过程调用(Remote Procedure Call,RPC)模块。数据存储系统中存储有数据库。无锁内存存储引擎用于支持客户端对数据库的实时高效访问。RPC模块用于客户端与服务端之间的通信。例如服务器通过RPC模块接收客户端发送的数据库访问请求,通过无锁内存存储引擎为客户端提供对应的数据,再通过RPC模块向客户端发送数据。客户端包括应用程序模块(如图1所示的应用程序1、2)、客户端缓存(Client Cache)和RPC模块。客户端缓存位于客户端的内存中,使用类似于数组的数据结构存储数据。客户端内的RPC模块也用于客户端与服务端之间的通信。客户端缓存用于存储服务器下发的数据。例如,客户端通过应用程序模块获取事务请求,通过RPC模块向服务器发送数据库访问请求,然后再通过RPC模块接收服务器发送的数据,将接收到的数据缓存到客户端缓存,然后在客户端缓存内执行事务,可以实现事务的隔离。应理解,客户端内还可以包括通用内存数据库核心应用程序编程接口(General Memory DataBase Core Application Programming Interface,GMDB CoreAPI),具体地,GMDB Core API包括查询应用程序编程接口(Query ApplicationProgramming Interface,Query API)和关键字值应用程序编程接口(Key ValueApplication Programming Interface,KV API),其中,Query API用于支持条件范围查询;Kv API用于主键值查询。
在本发明实施例中,在服务器中,针对一个数据仅保存该数据的最近一次提交更新的版本,对应地,也仅保存该数据最近一次提交更新的版本的时间戳。该数据的最近一次提交更新的版本指的是该数据的最近一次经过要提交的事务的修改操作之后的版本,即该数据的最近一次提交更新的版本满足事务与数据库的一致性。
本发明实施例中提及的数据的版本均指满足事务与数据库一致性的版本。
图2示出了本发明实施例提供的处理数据库事务的方法100的流程图,该方法100包括:
S110,客户端获取用于请求执行第一事务的事务请求,该第一事务要基于目标数据进行执行。
具体地,该客户端例如为图1中所示的客户端。例如,该客户端通过应用程序获取用户的事务请求。
S120,该客户端向服务器发送用于请求该目标数据的数据库访问请求。
具体地,该服务器例如为图1中所示的服务器。
应理解,数据库存储于服务器的数据存储系统中(如图1所示),客户端要访问数据库中的数据时,需要向服务器发送数据库访问请求。
还应理解,该客户端还为该第一事务分配缓存。
S130,服务器接收客户端发送的数据库访问请求,并基于该数据库访问请求,向该客户端发送该目标数据的第一版本,该第一版本为该服务器当前存储的该目标数据的版本,该服务器当前存储的该目标数据的版本为该目标数据的最近一次提交更新的版本。
在本发明实施例中,该服务器中只保存该目标数据的最近一次提交更新的版本,并不保存该目标数据的历史版本,相比于现有的MVCC技术,能够简化数据库的存储复杂性,也能减轻服务器的存储负担。
S140,该客户端接收该服务器发送的该目标数据的第一版本,并将将该第一版本存储到该客户端的缓存,并在该客户端的缓存内基于该第一版本执行该第一事务。
在本发明实施例中,是在客户端内执行事务,而非在服务器中执行,这样也使得服务器无需维护该目标数据的多个版本。
S150,在执行完该第一事务后,该客户端向该服务器发送事务提交请求,该事务提交请求用于请求提交该第一事务,该事务提交请求中包括用于记录该第一事务的数据操作的日志。
应理解,该日志用于记录该第一事务的数据操作,具体地,例如该第一事务的数据操作为插入操作、删除操作或更新操作。其中,插入操作指的是,该第一事务在该目标数据中插入一行数据(也可称为插入一条记录),而该插入的一行数据原先并不存在于该目标数据中。删除操作指的是,该第一事务删除该目标数据中的一行数据或多行数据,或可描述为删除该目标数据中的一条或多条记录。更新操作指的是,该第一事务修改该目标数据中的某些数据的数值。
本发明实施例中提到的目标数据,指的是第一事务所依赖的数据资源,即该第一事务要对该目标数据做一系列的数据操作。具体地,该目标数据可以是数据库中的一条或多条记录。应理解,在数据库中,一行数据称为一个或一条记录,它表达有一定意义的信息组合。每条记录通常都有一个主关键字(Primary Key),用于唯一指示该条记录。
S160,该服务器接收该客户端基于该第一版本执行完该第一事务后发送的事务提交请求,并根据该日志记录,判断第一事务的数据操作与该服务器当前存储的该目标数据的版本是否存在数据冲突,若是,转到S180,若否,转到S170。
具体地,如果按照第一事务对该服务器当前存储的该目标数据的版本作修改会破坏数据库的一致性,则认为该第一事务的数据操作与该服务器当前存储的该目标数据的版本之间存在数据冲突,反之不存在冲突。
S170,该服务器在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突的情况下,按照该第一事务的数据操作修改该服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成该第一事务的提交。
在该服务器获得该目标数据的提交更新的版本之后,该服务器为该目标数据的提交更新的版本设置新的时间戳。
具体地,在S170中,该服务器可以向客户端发送用于指示该第一事务提交成功的响应。对应地,客户端也可以向用户呈现用于指示第一事务成功提交的响应。
S180,该服务器在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本存在数据冲突的情况下,不对该服务器当前存储的该目标数据的版本做任何修改操作。
具体地,在S180中,该服务器向该客户端发送用于指示该第一事务的提交无效的响应。
在本发明实施例中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
在客户端缓存内执行的第一事务的数据操作可以为插入操作、删除操作或更新操作,针对第一事务的数据操作的不同,服务器判断该第一事务的数据操作与该服务器当前存储的该目标数据的版本是否存在数据冲突的方法也不同。
可选地,作为一个实施例,在S140中,该客户端将服务器下发的第一版本存储到客户端缓存,并在客户端缓存内基于该第一版本执行该第一事务的数据操作,该第一事务的数据操作为插入操作。在S150中,该客户端向该服务器发送事务提交请求中包括该第一事务的日志,该日志用于记录该第一事务的数据操作,即插入操作,并且该日志中包括该插入操作的主关键字(Primary Key)。在S160中,服务器根据该日志,判断第一事务的数据操作与该服务器当前存储的该目标数据的版本是否存在数据冲突,包括:该服务器根据日志获知该第一事务的数据操作为插入操作,并从日志中获知该插入操作的主关键字,判断该服务器当前存储的该目标数据的版本中是否存在该插入操作的主关键字,若否,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突;若是,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本存在数据冲突。
具体地,该第一事务的数据操作为插入操作是的是,该第一事务要在该目标数据中插入一条或多条记录,而插入的记录原先并不存在于该目标数据的第一版本中。
应理解,主关键字(Primary Key)通常是表中的一个或多个字段,它的值用于唯一标识表中的某一条记录。主关键字是一种唯一关键字,表定义的一部分。主关键字的值不可重复,例如,关系数据库管理系统Microsoft Office Access在表中添加新记录时,会自动检查该新记录的主关键字的值,不允许该新记录的主关键字的值与表中其他记录的主关键字的值重复。主关键字也不可为空(NULL)。主关键字能够加快数据库的操作速度。
也就是说,第一事务的日志中包括该插入操作的主关键字能够唯一指示该插入操作。
应理解,在该服务器当前存储的该目标数据的版本中不存在该插入操作的主关键字的情况下,说明该服务器当前存储的该目标数据的版本中不存在与该第一事务的插入操作相同的记录,因此,该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突。
还应理解,在该服务器当前存储的该目标数据的版本中存在该插入操作的主关键字的情况下,说明该服务器当前存储的该目标数据的版本中已经存在与该第一事务的插入操作相同的记录,因此,该第一事务的数据操作与该服务器当前存储的该目标数据的版本存在数据冲突。
可选地,作为一个实施例,在S140中,该客户端将服务器下发的第一版本存储到客户端缓存,并在客户端缓存内基于该第一版本执行该第一事务的数据操作,该第一事务的数据操作为更新操作或删除操作。在S150中,该客户端向该服务器发送事务提交请求中包括该第一事务的日志,该日志用于记录该第一事务的数据操作,即更新操作或删除操作,该事务提交请求中还包括该第一版本的时间戳。在S160中,服务器根据该日志记录,判断第一事务的数据操作与该服务器当前存储的该目标数据的版本是否存在数据冲突,包括:该服务器根据日志获知该第一事务的数据操作为更新操作或删除操作,并从事务提交请求中获知执行该第一事务所基于的第一版本的时间戳,该服务器判断该服务器当前存储的该目标数据的版本的时间戳是否与该第一版本的时间戳一致,若是,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突;若否,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本存在数据冲突。
具体地,当该第一事务的数据操作为更新操作时,即该第一事务要修改该目标数据的第一版本中原本存在的数据(或记录)的数值。当该第一事务的数据操作为删除操作时,即该第一事务要删除该目标数据的第一版本中原本存在的数据(或记录)。
应理解,版本的时间戳用于指示该版本被更新的时间。如果该目标数据的版本的时间戳相同,则说明这两个版本是该目标数据的同一个版本,否则,为两个不同的版本。
还应理解,在该服务器当前存储的该目标数据的版本的时间戳与该第一版本的时间戳一致的情况下,说明从服务器向客户端发送该第一版本开始到服务器接收到该事务提交请求的期间,服务器中存储的该目标数据并没有被其他事务所修改,因此,该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突。
还应理解,在该服务器当前存储的该目标数据的版本的时间戳与该第一版本的时间戳不一致的情况下,说明从服务器向客户端发送该第一版本开始到服务器接收到该事务提交请求的期间,服务器中存储的该目标数据被其他事务所修改,因此,该第一事务的数据操作与该服务器当前存储的该目标数据的版本存在数据冲突。
因此,在本发明实施例中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
图3示出了根据本发明实施例提供的服务器200的示意性框图,该服务器200包括:
接收模块210,用于接收客户端发送的数据库访问请求,该数据库访问请求用于请求目标数据;
发送模块220,用于基于该接收模块接收的该数据库访问请求,向该客户端发送该目标数据的第一版本,该第一版本为该服务器当前存储的该目标数据的版本,该服务器当前存储的该目标数据的版本为该目标数据的最近一次提交更新的版本;
该接收模块210还用于,接收该客户端基于该第一版本执行完第一事务后发送的事务提交请求,该事务提交请求用于请求提交该第一事务,该事务提交请求中包括用于记录该第一事务的数据操作的日志;
处理模块230,用于根据该接收模块接收的该日志,在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突的情况下,按照该第一事务的数据操作修改该服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成该第一事务的提交。
具体地,接收模块210可以由服务器200中的接收器或接收器相关组件实现。发送模块220可以由服务器200中的发送器或发送器相关组件实现。具体地,接收模块210与发送模块220可以是两个独立的器件,也可以由一个具有收发功能的器件实现,例如,接收模块210与发送模块220可以由图1中所示的服务器内的远程过程调用模块实现。处理模块230可以由服务器200中的处理器或处理器相关组件实现。
因此,在本发明实施例中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
可选地,作为一个实施例,该第一事务的数据操作包括插入操作,该日记中包括该插入操作对应的主关键字,该处理模块230还用于,在该服务器当前存储的该目标数据的版本中不存在该主关键字的情况下,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突。
可选地,作为一个实施例,该第一事务的数据操作包括更新操作或删除操作,该事务提交请求中还包括该第一版本的时间戳,该处理模块230还用于,在该服务器当前存储的该目标数据的版本的时间戳与该第一版本的时间戳一致的情况下,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突。
可选地,作为一个实施例,该处理模块230还用于,在获得该目标数据的提交更新的版本之后,为该目标数据的提交更新的版本设置新的时间戳。
可选地,作为一个实施例,该发送模块220还用于,在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突的情况下,向该客户端发送用于指示该第一事务的提交无效的响应。
应理解,根据本发明实施例的服务器200可对应于本发明实施例的处理数据库事务的方法中的服务器,并且服务器200中的各个模块的上述和其它操作和/或功能分别为了实现图2中的方法的相应流程,为了简洁,在此不再赘述。
图4示出了根据本发明实施例提供的客户端300的示意性框图,该客户端300包括:
处理模块310,用于获取用于请求执行第一事务的事务请求,该第一事务要基于目标数据进行执行;
发送模块320,用于向服务器发送用于请求该目标数据的数据库访问请求;
接收模块330,用于接收该服务器发送的该目标数据的第一版本,该第一版本为该服务器当前存储的该目标数据的版本,该服务器当前存储的该目标数据的版本为该目标数据的最近一次提交更新的版本;
该处理模块310还用于,基于该接收模块接收的该第一版本执行该第一事务;
该发送模块还用于,在该处理模块执行完该第一事务后,向该服务器发送事务提交请求,该事务提交请求用于请求提交该第一事务,该事务提交请求中包括用于记录该第一事务的数据操作的日志,以使得该客户端根据该日志,在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突的情况下,按照该第一事务的数据操作修改该服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成该第一事务的提交。
具体地,处理模块310可以由客户端300中的处理器或处理器相关组件实现。发送模块320可以由客户端300中的发送器或发送器相关组件实现。接收模块330可以由客户端300中的接收器或接收器相关组件实现。具体地,接收模块320与发送模块330可以是两个独立的器件,也可以由一个具有收发功能的器件实现,例如,接收模块320与发送模块330可以由图1中所示的客户端内的远程过程调用模块实现。
因此,在本发明实施例中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
可选地,作为一个实施例,该第一事务的数据操作包括插入操作,该日记中包括该插入操作对应的主关键字。
可选地,作为一个实施例,该第一事务的数据操作包括更新操作或删除操作,该事务提交请求中还包括该第一版本的时间戳。
应理解,根据本发明实施例的客户端300可对应于本发明实施例的处理数据库事务的方法中的客户端,并且客户端300中的各个模块的上述和其它操作和/或功能分别为了实现图2中的方法的相应流程,为了简洁,在此不再赘述。
图5示出了根据本发明实施例提供的服务器400的另一示意性框图,该服务器400包括:
收发器410,用于接收客户端发送的数据库访问请求,所述数据库访问请求用于请求目标数据;
所述收发器410还用于,基于所述数据库访问请求,向所述客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器当前存储的所述目标数据的版本为所述目标数据的最近一次提交更新的版本;
所述收发器410还用于,接收所述客户端基于所述第一版本执行完第一事务后发送的事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志;
无锁内存存储引擎420,用于根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
具体地,该收发器410例如为图1中所示的服务器内的远程过程调用模块。无锁内存存储引擎420例如为图1中所示的服务器内的无锁内存存储引擎。
在本发明实施例中,无锁内存存储引擎420是一种无锁的内存(Memory)存储引擎,能够实现事务对数据库的更新无需事务锁,从而能够支持客户端对数据的实时高效访问。
具体地,无锁内存存储引擎420例如为存储于该服务器400内的数据库管理系统(database management system,DBMS),用于科学地组织和存储数据(即数据库中的数据)。
因此,在本发明实施例中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
可选地,在本发明实施例中,该无锁内存存储引擎420存储于服务器400内的一种计算机可读存储介质中,在该计算机可读存储介质上存储有指令,该服务器400内的处理器430用于执行该计算机可读存储介质上存储的指令,并且对该计算机可读存储介质上存储的指令的执行使得该处理器430能够控制该收发器410接收信号或者发送信号,还能够处理该收发器410接收到的信号,即处理器430对该计算机可读存储介质上存储的指令的执行使得:该收发器410用于,接收客户端发送的数据库访问请求,该数据库访问请求用于请求目标数据;基于该数据库访问请求,向该客户端发送该目标数据的第一版本,该第一版本为该服务器当前存储的该目标数据的版本,该服务器当前存储的该目标数据的版本为该目标数据的最近一次提交更新的版本;接收该客户端基于该第一版本执行完第一事务后发送的事务提交请求,该事务提交请求用于请求提交该第一事务,该事务提交请求中包括用于记录该第一事务的数据操作的日志;该处理器410用于,根据该日志,在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突的情况下,按照该第一事务的数据操作修改该服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成该第一事务的提交。
可选地,作为一个实施例,该第一事务的数据操作包括插入操作,该日记中包括该插入操作对应的主关键字,该无锁内存存储引擎420还用于,在该服务器当前存储的该目标数据的版本中不存在该主关键字的情况下,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突。
可选地,作为一个实施例,该第一事务的数据操作包括更新操作或删除操作,该事务提交请求中还包括该第一版本的时间戳,该无锁内存存储引擎420还用于,在该服务器当前存储的该目标数据的版本的时间戳与该第一版本的时间戳一致的情况下,确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突。
可选地,作为一个实施例,该无锁内存存储引擎420还用于,在获得该目标数据的提交更新的版本之后,为该目标数据的提交更新的版本设置新的时间戳。
可选地,作为一个实施例,该无锁内存存储引擎420还用于,在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本存在数据冲突的情况下,控制收发器410向该客户端发送用于指示该第一事务的提交无效的响应。
应理解,在本发明实施例中,该处理器430可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器430还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在实现过程中,上述方法的各步骤可以通过处理器430中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器430读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,根据本发明实施例的服务器400可对应于本发明实施例的处理数据库事务的方法中的服务器,以及可以对应于根据本发明实施例的服务器200,并且服务器400中的各个模块的上述和其它操作和/或功能分别为了实现图2中的方法的相应流程,为了简洁,在此不再赘述。
图6示出了根据本发明实施例提供的客户端500的另一示意性框图。该客户端500包括处理器510,存储器520,系统总线530,接收器540和发送器550,其中,处理器510、存储器520、接收器540和发送器550通过总线系统530相连,该存储器520用于存储指令,该处理器510用于执行该存储器520存储的指令,以控制接收器540接收信号,并控制发送器550发送信号。其中,该处理器510用于获取用于请求执行第一事务的事务请求,该第一事务要基于目标数据进行执行;发送器550用于,向服务器发送用于请求该目标数据的数据库访问请求;接收器540用于,接收该服务器发送的该目标数据的第一版本,该第一版本为该服务器当前存储的该目标数据的版本,该服务器当前存储的该目标数据的版本为该目标数据的最近一次提交更新的版本;该处理器510还用于,将该第一版本存储客户端500的缓存,并基于该第一版本执行该第一事务;发送器550还用于,在执行完该第一事务后,向该服务器发送事务提交请求,该事务提交请求用于请求提交该第一事务,该事务提交请求中包括用于记录该第一事务的数据操作的日志,以使得该客户端根据该日志,在确定该第一事务的数据操作与该服务器当前存储的该目标数据的版本不存在数据冲突的情况下,按照该第一事务的数据操作修改该服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成该第一事务的提交。
因此,在本发明实施例中,服务器接收到客户端发送的请求目标数据的数据库访问请求后,通过向客户端发送目标数据的第一版本,该第一版本为服务器当前存储的目标数据的版本,且该版本为目标数据的最近一次提交更新的版本,使得可以在客户端本地缓存中基于该第一版本完成事务的执行;在接收到客户端发送的事务提交请求时,在确定要提交的事务的数据操作与服务器中当前存储的该目标数据的版本不存在数据冲突的情况下,按照要提交的事务的数据操作修改服务器当前存储的该目标数据的版本,获得该目标数据的提交更新的版本,以完成事务的提交。应理解,通过向客户端发送目标数据的第一版本,使得在客户端执行事务,能够保证并发事务之间的隔离性,即实现了并发的读操作之间没有影响,并发的读操作与写操作之间也没有影响,并发的写操作与写操作之间也没有影响。在服务器提交事务,并在确定待提交的事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,才执行事务的提交,能够保证事务与数据库的一致性。此外,通过在客户端基于目标数据的第一版本执行事务,使得服务器上对该目标数据无需维护多个版本,只需维护该目标数据的最近一次提交更新的版本即可,相对于现有的MVCC技术,本发明能够有效降低数据库的存储管理复杂度,从而减小服务器的存储负担。因此,本发明提供了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够有效降低数据库的存储管理复杂度。
可选地,作为一个实施例,该第一事务的数据操作包括插入操作,该日记中包括该插入操作对应的主关键字。
可选地,作为一个实施例,该第一事务的数据操作包括更新操作或删除操作,该事务提交请求中还包括该第一版本的时间戳。
应理解,在本发明实施例中,该处理器510可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器510还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器520可以包括只读存储器和随机存取存储器,并向处理器510提供指令和数据。存储器520的一部分还可以包括非易失性随机存取存储器。例如,存储器520还可以存储设备类型的信息。
该总线系统530除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统530。
在实现过程中,上述方法的各步骤可以通过处理器510中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器520,处理器510读取存储器520中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,发送器550可以是用于实现发送功能的硬件电路或器件,如天线、网卡等;同样的,接收器540也可以是用于实现发送功能的硬件电路或器件,如天线、网卡等,本发明实施例不做限定。
还应理解,接收器540与发送器550可以由一个具备收发功能的装置实现,例如收发器,具体地,如天线。
应理解,根据本发明实施例的客户端500可对应于本发明实施例的处理数据库事务的方法中的客户端,以及可以对应于根据本发明实施例的客户端300,并且客户端500中的各个模块的上述和其它操作和/或功能分别为了实现图2中的方法的相应流程,为了简洁,在此不再赘述。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种处理数据库事务的方法,其特征在于,包括:
服务器接收客户端发送的数据库访问请求,所述数据库访问请求用于请求目标数据;
所述服务器基于所述数据库访问请求,向所述客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器中只保存所述目标数据的最近一次提交更新的版本;
所述服务器接收所述客户端基于所述第一版本执行完第一事务后发送的事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志;
所述服务器根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
2.根据权利要求1所述的方法,其特征在于,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字,所述方法还包括:
在所述服务器当前存储的所述目标数据的版本中不存在所述主关键字的情况下,所述服务器确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
3.根据权利要求1所述的方法,其特征在于,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳,所述方法还包括:
在所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳一致的情况下,所述服务器确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
4.根据权利要求1至3中任一项所述的方法,其特征在于,在所述服务器获得所述目标数据的提交更新的版本之后,所述方法还包括:所述服务器为所述目标数据的提交更新的版本设置新的时间戳。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本存在数据冲突的情况下,所述服务器向所述客户端发送用于指示所述第一事务的提交无效的响应。
6.一种处理数据库事务的方法,其特征在于,包括:
客户端获取用于请求执行第一事务的事务请求,所述第一事务要基于目标数据进行执行;
所述客户端向服务器发送用于请求所述目标数据的数据库访问请求;
所述客户端接收所述服务器发送的所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器当前存储的所述目标数据的版本为所述目标数据的最近一次提交更新的版本;
所述客户端基于所述第一版本执行所述第一事务;
在执行完所述第一事务后,所述客户端向所述服务器发送事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志,以使得所述客户端根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
7.根据权利要求6所述的方法,其特征在于,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字。
8.根据权利要求6所述的方法,其特征在于,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳。
9.一种服务器,其特征在于,包括:
接收模块,用于接收客户端发送的数据库访问请求,所述数据库访问请求用于请求目标数据;
发送模块,用于基于所述接收模块接收的所述数据库访问请求,向所述客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器中只保存所述目标数据的版本为所述目标数据的最近一次提交更新的版本;
所述接收模块还用于,接收所述客户端基于所述第一版本执行完第一事务后发送的事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志;
处理模块,用于根据所述接收模块接收的所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
10.根据权利要求9所述的服务器,其特征在于,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字,所述处理模块还用于,在所述服务器当前存储的所述目标数据的版本中不存在所述主关键字的情况下,确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
11.根据权利要求9所述的服务器,其特征在于,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳,所述处理模块还用于,在所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳一致的情况下,确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。
12.根据权利要求9至11中任一项所述的服务器,其特征在于,所述处理模块还用于,在获得所述目标数据的提交更新的版本之后,为所述目标数据的提交更新的版本设置新的时间戳。
13.根据权利要求9至12中任一项所述的服务器,其特征在于,所述发送模块还用于,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本存在数据冲突的情况下,向所述客户端发送用于指示所述第一事务的提交无效的响应。
14.一种客户端,其特征在于,包括:
处理模块,用于获取用于请求执行第一事务的事务请求,所述第一事务要基于目标数据进行执行;
发送模块,用于向服务器发送用于请求所述目标数据的数据库访问请求;
接收模块,用于接收所述服务器发送的所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器当前存储的所述目标数据的版本为所述目标数据的最近一次提交更新的版本;
所述处理模块还用于,基于所述接收模块接收的所述第一版本执行所述第一事务;
所述发送模块还用于,在所述处理模块执行完所述第一事务后,向所述服务器发送事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志,以使得所述客户端根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
15.根据权利要求14所述的客户端,其特征在于,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字。
16.根据权利要求14所述的客户端,其特征在于,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610496073.3A CN107577678B (zh) | 2016-06-30 | 2016-06-30 | 处理数据库事务的方法、客户端和服务器 |
EP17819132.6A EP3467668B1 (en) | 2016-06-30 | 2017-06-19 | Method for processing database transaction, client and server |
EP20193492.4A EP3800558A1 (en) | 2016-06-30 | 2017-06-19 | Database transaction processing method, client, and server |
PCT/CN2017/089035 WO2018001135A1 (zh) | 2016-06-30 | 2017-06-19 | 处理数据库事务的方法、客户端和服务器 |
US16/234,119 US20190129894A1 (en) | 2016-06-30 | 2018-12-27 | Database Transaction Processing Method, Client, and Server |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610496073.3A CN107577678B (zh) | 2016-06-30 | 2016-06-30 | 处理数据库事务的方法、客户端和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107577678A true CN107577678A (zh) | 2018-01-12 |
CN107577678B CN107577678B (zh) | 2021-02-09 |
Family
ID=60786532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610496073.3A Active CN107577678B (zh) | 2016-06-30 | 2016-06-30 | 处理数据库事务的方法、客户端和服务器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190129894A1 (zh) |
EP (2) | EP3467668B1 (zh) |
CN (1) | CN107577678B (zh) |
WO (1) | WO2018001135A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108922229A (zh) * | 2018-07-02 | 2018-11-30 | 长安大学 | 支持线上和线下停车的共享停车系统及共享停车管理方法 |
CN109918386A (zh) * | 2019-01-31 | 2019-06-21 | 北京明略软件系统有限公司 | 一种数据恢复方法和装置、计算机可读存储介质 |
CN110765184A (zh) * | 2019-11-08 | 2020-02-07 | 深圳微品致远信息科技有限公司 | 一种停车场数据展示方法、系统、计算机设备及存储介质 |
CN110928887A (zh) * | 2018-09-19 | 2020-03-27 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
WO2020098682A1 (en) * | 2018-11-15 | 2020-05-22 | Huawei Technologies Co., Ltd. | Systems and methods for managing shared database |
CN111901420A (zh) * | 2020-07-28 | 2020-11-06 | 深圳市康冠科技股份有限公司 | 一种数据同步方法、装置及系统 |
CN112162834A (zh) * | 2020-11-09 | 2021-01-01 | 支付宝(杭州)信息技术有限公司 | 用于事务处理的方法和装置 |
CN113282602A (zh) * | 2021-06-18 | 2021-08-20 | 北京奇艺世纪科技有限公司 | 一种业务请求方法及装置 |
CN114064664A (zh) * | 2022-01-17 | 2022-02-18 | 北京奥星贝斯科技有限公司 | 在数据库中查询事务修改内容的方法及装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11086845B1 (en) * | 2018-12-29 | 2021-08-10 | Facebook, Inc. | Techniques for database versioning |
US11520747B2 (en) * | 2019-12-02 | 2022-12-06 | Huawei Technologies Co., Ltd. | Method and system for detecting and resolving a write conflict |
US11422716B2 (en) | 2020-04-08 | 2022-08-23 | Samsung Electronics Co., Ltd. | Systems and method for distributed read/write locking with network key values for storage devices |
CN113377502B (zh) * | 2021-06-10 | 2024-06-14 | 上海达梦数据库有限公司 | 事务处理方法、装置、服务器、数据库管理系统及介质 |
US11822551B2 (en) * | 2021-08-31 | 2023-11-21 | International Business Machines Corporation | Pre-optimized writes to a database based on intelligence gathered from read cache |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831156A (zh) * | 2012-06-29 | 2012-12-19 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
CN103744936A (zh) * | 2013-12-31 | 2014-04-23 | 华为技术有限公司 | 一种数据库中的多版本并发控制方法及数据库系统 |
CN104333512A (zh) * | 2014-10-30 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种分布式内存数据库访问系统及方法 |
CN104537037A (zh) * | 2014-12-23 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种处理数据库日志的方法及装置 |
US20160147906A1 (en) * | 2014-11-25 | 2016-05-26 | Ivan Schreter | Transaction Control Block for Multiversion Concurrency Commit Status |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060010130A1 (en) * | 2004-07-09 | 2006-01-12 | Avraham Leff | Method and apparatus for synchronizing client transactions executed by an autonomous client |
US8204865B2 (en) * | 2009-08-26 | 2012-06-19 | Oracle International Corporation | Logical conflict detection |
US9069788B2 (en) * | 2011-07-01 | 2015-06-30 | Salesforce.Com, Inc. | Truncating data associated with objects in a multi-tenant database |
CN105243067B (zh) * | 2014-07-07 | 2019-06-28 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
WO2016032548A1 (en) * | 2014-08-25 | 2016-03-03 | Hewlett Packard Enterprise Development Lp | Providing transactional support to a data storage system |
US10108623B2 (en) * | 2014-12-12 | 2018-10-23 | International Business Machines Corporation | Merging database operations for serializable transaction execution |
-
2016
- 2016-06-30 CN CN201610496073.3A patent/CN107577678B/zh active Active
-
2017
- 2017-06-19 WO PCT/CN2017/089035 patent/WO2018001135A1/zh unknown
- 2017-06-19 EP EP17819132.6A patent/EP3467668B1/en active Active
- 2017-06-19 EP EP20193492.4A patent/EP3800558A1/en active Pending
-
2018
- 2018-12-27 US US16/234,119 patent/US20190129894A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831156A (zh) * | 2012-06-29 | 2012-12-19 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
CN103744936A (zh) * | 2013-12-31 | 2014-04-23 | 华为技术有限公司 | 一种数据库中的多版本并发控制方法及数据库系统 |
CN104333512A (zh) * | 2014-10-30 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种分布式内存数据库访问系统及方法 |
US20160147906A1 (en) * | 2014-11-25 | 2016-05-26 | Ivan Schreter | Transaction Control Block for Multiversion Concurrency Commit Status |
CN104537037A (zh) * | 2014-12-23 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种处理数据库日志的方法及装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108922229A (zh) * | 2018-07-02 | 2018-11-30 | 长安大学 | 支持线上和线下停车的共享停车系统及共享停车管理方法 |
CN110928887A (zh) * | 2018-09-19 | 2020-03-27 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
US11640383B2 (en) | 2018-11-15 | 2023-05-02 | Huawei Technologies Co., Ltd. | Systems and methods for managing a shared database |
WO2020098682A1 (en) * | 2018-11-15 | 2020-05-22 | Huawei Technologies Co., Ltd. | Systems and methods for managing shared database |
CN109918386A (zh) * | 2019-01-31 | 2019-06-21 | 北京明略软件系统有限公司 | 一种数据恢复方法和装置、计算机可读存储介质 |
CN109918386B (zh) * | 2019-01-31 | 2021-04-30 | 北京明略软件系统有限公司 | 一种数据恢复方法和装置、计算机可读存储介质 |
CN110765184A (zh) * | 2019-11-08 | 2020-02-07 | 深圳微品致远信息科技有限公司 | 一种停车场数据展示方法、系统、计算机设备及存储介质 |
CN111901420A (zh) * | 2020-07-28 | 2020-11-06 | 深圳市康冠科技股份有限公司 | 一种数据同步方法、装置及系统 |
CN112162834A (zh) * | 2020-11-09 | 2021-01-01 | 支付宝(杭州)信息技术有限公司 | 用于事务处理的方法和装置 |
CN112162834B (zh) * | 2020-11-09 | 2023-12-01 | 支付宝(杭州)信息技术有限公司 | 用于事务处理的方法和装置 |
CN113282602A (zh) * | 2021-06-18 | 2021-08-20 | 北京奇艺世纪科技有限公司 | 一种业务请求方法及装置 |
CN113282602B (zh) * | 2021-06-18 | 2023-10-27 | 北京奇艺世纪科技有限公司 | 一种业务请求方法及装置 |
CN114064664A (zh) * | 2022-01-17 | 2022-02-18 | 北京奥星贝斯科技有限公司 | 在数据库中查询事务修改内容的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2018001135A1 (zh) | 2018-01-04 |
EP3467668A4 (en) | 2019-06-26 |
CN107577678B (zh) | 2021-02-09 |
US20190129894A1 (en) | 2019-05-02 |
EP3467668B1 (en) | 2020-12-16 |
EP3800558A1 (en) | 2021-04-07 |
EP3467668A1 (en) | 2019-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107577678A (zh) | 处理数据库事务的方法、客户端和服务器 | |
CN103678556B (zh) | 列式数据库处理的方法和处理设备 | |
CN108363806B (zh) | 数据库的多版本并发控制方法、装置、服务器及存储介质 | |
US11442961B2 (en) | Active transaction list synchronization method and apparatus | |
CN104793988B (zh) | 跨数据库分布式事务的实现方法和装置 | |
CN109923534A (zh) | 对具有未提交事务的数据库记录的多版本并发控制 | |
CN106575238B (zh) | 支持页面隐式锁的共享存储架构中的并发控制 | |
JP4340226B2 (ja) | データ項目の使用可能バージョンの提供 | |
CN107113341B (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
US8380663B2 (en) | Data integrity in a database environment through background synchronization | |
CN103294479A (zh) | 分布式事务处理方法与系统 | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
CN111475519B (zh) | 数据缓存方法及装置 | |
CN103886109A (zh) | 一种实现数据库行锁的方法及装置 | |
CN110431580B (zh) | 使用随机数表来减少并发区块链交易失败 | |
CN106777085A (zh) | 一种数据处理方法、装置及数据查询系统 | |
CN108090056A (zh) | 数据查询方法、装置及系统 | |
WO2022267676A1 (zh) | 共享内存的数据处理方法、装置、设备和介质 | |
US20080082533A1 (en) | Persistent locks/resources for concurrency control | |
US20170308562A1 (en) | System and Method for Multi-Master Synchronous Replication Optimization | |
US10303680B2 (en) | Data processing apparatus and data processing method | |
KR20200121986A (ko) | 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램 | |
CN114116732B (zh) | 处理事务的方法、装置、存储装置以及服务器 | |
CN109791541A (zh) | 日志序列号生成方法、装置及可读存储介质 | |
CN115951844B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |