CN111176907B - 硬件数据库回滚方法、软件数据库回滚方法及装置 - Google Patents
硬件数据库回滚方法、软件数据库回滚方法及装置 Download PDFInfo
- Publication number
- CN111176907B CN111176907B CN202010008482.0A CN202010008482A CN111176907B CN 111176907 B CN111176907 B CN 111176907B CN 202010008482 A CN202010008482 A CN 202010008482A CN 111176907 B CN111176907 B CN 111176907B
- Authority
- CN
- China
- Prior art keywords
- transaction
- executed
- database
- table data
- executing
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明提供了一种硬件数据库回滚方法、软件数据库回滚方法及装置,其中,该硬件数据库回滚方法,包括:在事务为更新任务的情况下,当硬件数据库执行所述事务出错时,发送失败状态信息;接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据;利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据。通过上述方案能够保证硬件数据库的原子性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种硬件数据库回滚方法、软件数据库回滚方法及装置。
背景技术
随着数字社会的到来,各种应用场景对海量数据的调取愈发频繁,对数据库加速处理的需求更丰富,人们对数据的即时处理需求大大增加,因此数据库加速的需求迫在眉睫。当前阶段,采用FPGA(现场可编程门阵列)、ASIC(专用集成电路)等硬件加速数据库的处理过程成为一个趋势。
现有加速数据库性能的方法无法从根本上解决通用处理器在解决领域内特定问题时的效率低下和功耗过大的问题,因此必须转向领域专用的硬件加速器。尽管专用的硬件加速器的主要是完成某些含复杂计算的特定功能部分,但它也必须为某些原本在CPU软件上实现的功能提供硬件支持。
硬件数据库在处理查询语句时具有很高性能,但同时也要保证安全性,这就需要保证一个包含多个SQL语句的事务在硬件数据库上要么全部执行,要么全部不执行。所以,在硬件数据库处理数据过程中,必须将一个事务中的全部SQL语句看成是一个原子操作,而不仅仅是一条SQL语句。
保证CPU上的软件数据库系统的原子性的方法已相对成熟,但针对软件数据库系统的原子性机制并不能直接适用于硬件数据库系统,因此,如何保证在硬件数据库上运行的事务的原子性尚需进一步探索。
发明内容
本发明提供了一种硬件数据库回滚方法、软件数据库回滚方法及装置,以保证硬件数据库的原子性。
为了达到上述目的,本发明采用以下方案实现:
根据本发明实施例的一个方面,提供了一种硬件数据库回滚方法,包括:在事务为更新任务的情况下,当硬件数据库执行所述事务出错时,发送失败状态信息;接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据;利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据。
在一些实施例中,接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据之前,所述方法,还包括:监听根据所述失败状态信息执行基于日志的回滚操作的状态,并在回滚完成后执行接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据的步骤。
在一些实施例中,接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据的同时,所述方法,还包括:接收所述事务的指令。利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据之后,所述方法,还包括:接收重新执行所述事务的指令;根据重新执行所述事务的指令、接收的所述事务的指令、及接收的执行所述事务前的表数据重新执行所述事务。
在一些实施例中,接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据之前,还包括:清空所述硬件数据库中执行所述事务出错后的表数据和执行所述事务出错所用的所述事务的指令。
在一些实施例中,利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据,包括:利用接收的执行所述事务前的表数据替换所述硬件数据库中执行所述事务出错后的表数据。
在一些实施例中,所述的硬件数据库回滚方法,还包括:在事务为查询任务的情况下,当硬件数据库执行所述事务出错时,发送查询出错信息。
根据本发明实施例的另一个方面,提供了一种软件数据库回滚方法,包括:在事务为更新任务的情况下,接收硬件数据库执行所述事务出错时的失败状态信息;根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将执行所述事务后的表数据恢复为执行所述事务前的表数据;发送恢复得到的执行所述事务前的表数据,以使利用执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据。
在一些实施例中,所述的软件数据库回滚方法,还包括:接收重新执行所述事务的指令,根据重新执行所述事务的指令、恢复得到的执行所述事务前的表数据、及所述硬件数据库执行事务出错前接收的所述事务的指令重新执行所述事务。
在一些实施例中,所述的软件数据库回滚方法,还包括:在事务为查询任务的情况下,接收硬件数据库执行所述事务出错时的查询出错信息,并输出所述查询出错信息。
在一些实施例中,根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将执行所述事务后的表数据恢复为执行所述事务前的表数据,包括:根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将本地内存中执行所述事务后的表数据恢复为执行所述事务前的表数据。
在一些实施例中,所述的软件数据库回滚方法,还包括:在接收到所述硬件数据库执行完所述事务且本地执行完成所述事务的情况下,将执行所述事务的结果数据进行输出和/或写入本地磁盘。
根据本发明实施例的另一个方面,提供了一种软件数据库回滚方法,包括:在事务为更新任务的情况下,若本地执行所述事务出错,对本地已执行的所述事务进行基于日志的回滚操作,以将本地执行所述事务后的表数据恢复为执行所述事务前的表数据;发送恢复得到的执行所述事务前的表数据,以使利用执行所述事务前的表数据代替硬件数据库中执行所述事务后的表数据。
在一些实施例中,对本地已执行的所述事务进行基于日志的回滚操作的同时,还包括:发送本地执行所述事务出错时的失败状态信息,以使所述硬件数据库清空其上执行所述事务后的表数据和执行所述事务所用的所述事务的指令。
在一些实施例中,所述的软件数据库回滚方法,还包括:接收重新执行所述事务的指令;根据重新执行所述事务的指令、恢复得到的执行所述事务前的表数据、及本地执行事务出错前接收的所述事务的指令重新执行所述事务。
在一些实施例中,发送恢复得到的执行所述事务前的表数据的同时,还包括:
发送重新执行所述事务的指令和本地执行事务出错前接收的所述事务的指令,以使所述硬件数据库重新执行所述事务。
根据本发明实施例的另一个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述方法的步骤。
根据本发明实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述方法的步骤。
本发明实施例的硬件数据库回滚方法、软件数据库回滚方法、电子设备及计算机可读存储介质,通过利用CPU端软件数据库的回滚操作保证硬件数据库的原子性,大大增加了硬件数据库的安全性,且通过借助于软件数据库能够大大降低硬件数据库的原子性维护的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例的硬件数据库回滚方法的流程示意图;
图2是本发明一实施例的软件数据库回滚方法的流程示意图;
图3是本发明又一实施例的软件数据库回滚方法的流程示意图;
图4是本发明一具体实施例中定义的CPU端数据库的事务所处状态的关系示意图;
图5是本发明一具体实施例中定义的硬件端数据库的事务所处状态的关系示意图;
图6是本发明一具体实施例中数据库系统的结构示意图;
图7是本发明一具体实施例的数据库回滚方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在通用处理器上运行的软件数据库系统自身从SQL语言的层面可以支持begin,commit,rollback等关键字,从而可以支持执行一个事务的开始、提交和回撤。软件数据库系统可以基于日志的REDO/UNDO机制保证原子性。也就是,当事务的处理过程全部成功执行后,就可以将此事务永久的写入硬盘;如果事务在执行的过程中遇到了错误导致不能继续执行下去,那么软件数据库系统可以根据日志进行回撤和重做操作。
日志功能主要是服务于CPU上的软件数据库系统。而在硬件数据库上,为了减少与CPU端软件数据库系统的耦合,无法利用日志来进行回滚操作。因此,针对软件数据库系统的基于日志的原子性机制对于硬件数据库系统来说并不能直接适用,例如,硬件是无法做到执行UNDO的,因为很难确定到底做到了哪一步。
发明人在利用硬件对数据库加速的时候,为了节约在CPU端和硬件端来回传送数据的带宽消耗,选择了对于增删改等修改表的语句,CPU端和硬件端同时执行此类语句,而对于运算要求高的查询语句,则只在硬件端执行。因此,认为有必要针对这些方案在CPU端和硬件端同时维护原子性。对于CPU端的软件数据库系统而言,维护原子性的机制已经相对成熟,所以主要要做的工作是如何维护硬件端事务执行时的原子性。
基于此,为了解决上述问题,本发明实施例提供了一种硬件数据库回滚方法,以保证硬件数据库的原子性。
需要预先说明的是,本说明书尤其下文所述的硬件数据库位于硬件端,又可称为硬件、协处理器、硬件数据库系统、硬件端数据库等,例如,FPGA、GPU、ASIC等;软件数据库位于CPU端,又可称为数据库、传统数据库、CPU端数据库等,例如,Oracle、MySQL等,当CPU端执行操作为软件数据库所执行时,CPU端的说法可等同于软件数据库;数据库系统可包括软件数据库和硬件数据库,可以用于共同完成处理一个事务,其中,对于为更新任务的事务而言,软件数据库和硬件数据库都执行该事务的指令;对于为查询任务的事务而言,仅由硬件数据库执行该事务的指令。
图1是本发明一实施例的硬件数据库回滚方法的流程示意图。如图1所示,从硬件端来看,该硬件数据库回滚方法可包括以下步骤S110至步骤S130。
下面将对步骤S110至步骤S130的具体实施方式进行详细说明。
步骤S110:在事务为更新任务的情况下,当硬件数据库执行所述事务出错时,发送失败状态信息。
事务可以包含多条SQL语句,从而需要保证该事务的原子性。可以将事务分为更新任务和查询任务。其中,更新任务是指涉及修改的事务,例如,包含增加、删除或更新操作的事务,更具体地,例如,insert、delete或update操作;查询任务是指不涉及修改的事务,例如,查询操作,更具体地,例如,select操作。
另外,可以在CPU端(软件数据库所在端)接收来自应用程序的事务,并可以在CPU端标记事务为更新任务还是查询任务,之后,CPU端可以将事务所需表数据从磁盘缓存至内存,并可以将缓存的表数据、事务的指令、对事务标记的信息等发送至硬件数据库,从而硬件数据库可以对事务进行处理。当然,硬件数据库可以只处理事务的部分操作内容。
对于事务为更新任务的情况而言,若硬件数据库执行该事务时出错,则表明硬件数据库中该事务涉及的表脏了,此时,就需要恢复硬件数据库中的表数据。另外,对于硬件数据库处理事务而言,可将硬件数据库处理事务的状态分为:活动的、完成的、失败的及终止的。其中,若状态为“活动的”,可表明此事务正在执行SQL序列,且未发现错误;若状态为“完成的”,可表明此事务已成功地执行完;若状态为“失败的”,可表明事务执行过程中发现了错误;若状态为“终止的”,可表明事务回撤到事务执行前。所以,上述失败状态信息是指硬件数据库处理事务的状态为“失败的”,可以包含“失败的”的状态标记信息等;上述失败状态信息还可以包含需要CPU端所做动作的相关信息,例如,需要CPU端回滚、重发表数据(如后述步骤S120),当然,若失败状态信息并未包含该些需要CPU端所做动作的相关信息,可以在CPU端根据事务为更新任务的信息和上述失败状态信息中的“失败的”的状态标记信息自行判断需要进行的动作。
此外,若硬件数据库成功地执行完该事务,即,其处理事务的状态为“完成的”,此时,可以将执行结果返回至CPU端,可供CPU端进行输出显示或写回其磁盘。
在另一些实施例中,若事务为查询任务,对于查询任务而言,若硬件数据库执行该事务时出错,并没有影响硬件数据库中表,对此则可以不必执行如步骤S110等为了恢复原状的步骤。示例性地,图1所示的方法,还可包括步骤:在事务为查询任务的情况下,当硬件数据库执行所述事务出错时,发送查询出错信息。其中,该查询出错信息可以发送至CPU端,主要可以用于返回至应用程序从而告知用户本次处理任务出错了。
步骤S120:接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据。
CPU端接收到所述失败状态信息后,该端软件数据库可以基于日志进行回滚操作,例如,通过执行基于日志的UNDO操作进行回滚,从而可以将缓存在内存的表数据恢复至执行该事务以前的状态。所得到的执行所述事务前的表数据,是指执行该事务所需的表数据(原始数据表),由于软件数据库执行更新任务的事务后,可能已经修改了执行该事务所需的表数据,所以通过基于日志进行回滚,可使可能被修改的表数据恢复到执行该事务之前的状态(原始数据表)。
为了保证软件数据库执行完回滚操作,从而保证得到执行所述事务前的该事务所涉及的表数据,硬件数据库在执行上述步骤S110之后,可以不断查看CPU端软件数据库的状态,并在确认CPU端软件数据库完成回滚后才让其返回事务所涉及的表数据。
示例性地,该步骤S120之前,即,接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据之前,图1所述方法还可包括步骤:监听根据所述失败状态信息执行基于日志的回滚操作的状态,并在回滚完成后执行接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据的步骤(步骤S120)。
该示例中,可以在监听到CPU端软件数据库回滚完成后再发送要求软件数据库重传表数据的指令,以使软件数据库端重传恢复得到的该事务涉及的表数据。如此一来,可以从硬件数据库端控制何时让CPU端重传数据过来。
在其他示例中,若硬件数据库不监听软件数据库的回滚情况,则可以由CPU端软件数据库在回滚完成后,根据事务为更新事务的类型而重传该事务涉及的原始表数据等给硬件数据库。如此一来,可以在CPU端控制何时重传数据给硬件数据库。
另外,软件数据库处理事务的状态分为:活动的、完成的、失败的、终止的及提交的。其中,若状态为“活动的”,可表明此事务正在执行SQL序列,且未发现错误;若状态为“完成的”,可表明此事务已成功地执行完;若状态为“失败的”,可表明事务执行过程中发现了错误;若状态为“终止的”,可表明事务回撤到事务执行前;若状态为“提交的”,可表明事务成功执行完成后,且已经永久写入磁盘了。所以,在软件数据库回滚完成后,可以标记软件数据库执行该事务的状态为“终止的”,可以根据软件数据库的事务的状态是否为“终止的”来确定其是否完成了回滚。
步骤S130:利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据。
该硬件数据库执行为更新任务的事务出错后,其上该事务对应的表数据可能已被修改了一部分(表脏了),则硬件数据库中执行所述事务出错后的表数据是指执行了事务的至少部分指令后对应的表数据,可指脏了的表。
在一些实施例中,重传事务执行后的表数据的时候,也可以重传事务的指令。示例性地,执行该步骤S120同时,即,接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据的同时,图1所述方法还可包括步骤:接收所述事务的指令。
若该事务的指令在软件数据库端执行后未发生变化,则其可以是一开始软件数据库接收的并缓存在其内存的事务的指令,若该事务的指令在软件数据库端执行后发生了变化,则其可以是软件数据库回滚后的该事务的指令。
该实施例中,事务的指令和表数据往往是相对应的,所以将事务的指令和相应表数据一同重传给硬件数据库,一方面,可以便于知道该表数据属于哪个事务,另一方面,重传的指令便于在应用程序决定重新执行该事务时重新执行该事务的操作。
在其他实施例中,若单独重传该事务的原始的表数据,则可以对该表数据所述的事务进行标记,以便硬件数据库识别出该表并与相应的事务的指令对应起来。
进一步地,在硬件数据库接收到事务的指令的情况下,上述步骤S130之后,即,利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据之后,图1所示的方法还可包括步骤:接收重新执行所述事务的指令;根据重新执行所述事务的指令、接收的所述事务的指令、及接收的执行所述事务前的表数据重新执行所述事务。
该实施例中,当硬件数据库执行事务出错时,可以由例如应用程序决定是否重新执行该事务。若软件数据库接收到应用程序发来的重新执行所述事务的指令,可以将该重新执行所述事务的指令以及其他数据一同发给硬件数据库,以使硬件数据库重新执行该事务。当然对于软件数据库而言,可以根据缓存在CPU端的重新执行所述事务的指令、接收的所述事务的指令、及接收的执行所述事务前的表数据重新执行所述事务。
在一些实施例中,硬件数据库执行更新任务的事务出错后,可以清空硬件数据库中相应表数据和指令,以便接收软件数据库重传的表数据和指令。
示例性地,上述步骤S130之前,即,接收根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据之前,图1所示的方法还可包括步骤:清空所述硬件数据库中执行所述事务出错后的表数据和执行所述事务出错所用的所述事务的指令。
该示例中,通过清空已执行事务的部分指令后该事务对应的脏表和事务的部分/全部指令,可以便于防止重传的指令与之前的指令混淆。在此情况下,步骤S130中所谓“代替”可指将接收的重传的该事务的指令存入了硬件数据库,就可以认为是代替了所述硬件数据库中执行所述事务出错后的表数据。
在另一些实施例中,上述步骤S130,即,利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据,具体地,可包括步骤:利用接收的执行所述事务前的表数据替换所述硬件数据库中执行所述事务出错后的表数据。
该实施例中,可以利用重传到硬件数据库的表数据替换掉(例如覆盖)硬件数据库执行了该事务至少一部分指令后对应的表数据,从而使硬件数据库中的该事务涉及的表数据恢复原状。
上述各实施例的硬件数据库回滚方法,主要是从硬件数据库端的角度描述,当硬件数据库执行事务出错时,利用软件数据库的回滚操作结果对硬件数据库进行回滚的方案。
另外,基于与图1所示硬件数据库回滚方法相同的发明构思,本发明实施例还提供了一种软件数据库回滚方法,以从软件数据库端的角度描述,当硬件数据库执行事务出错时,软件数据库可执行的能够使得利用软件数据库的回滚操作结果对硬件数据库进行回滚的方案。该些实施例的软件数据库回滚方法可与上述各实施例所述硬件数据库回滚方法结合使用,从而使整个数据库系统保持原子性,所以,该些实施例的软件数据库回滚方法的具体实施方式中所涉及内容,若在介绍上述实施例的硬件数据库回滚方法的具体实施方式时已有所提及,则可用作该些实施例的软件数据库回滚方法的具体实施方式参考,并在符合逻辑的情况下,可直接用来结合实施。
图2是本发明一实施例的软件数据库回滚方法的流程示意图。如图2所示,在硬件数据库执行事务出错时,从软件数据库角度来看,软件数据库回滚方法可包括以下步骤S210~步骤S230。
步骤S210:在事务为更新任务的情况下,接收硬件数据库执行所述事务出错时的失败状态信息。
参见前述实施例的硬件数据库回滚方法,该更新任务是指涉及修改的事务。失败状态信息可以包含“失败的”的状态标记信息等。该失败状态信息还可以包含让软件数据库合适执行后续步骤S230的指令。
步骤S220:根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将执行所述事务后的表数据恢复为执行所述事务前的表数据。
失败状态信息可以用于触发软件数据库执行回滚操作。软件数据库基于日志进行回滚操作可以基于日志的UNDO操作进行。通过该步骤S220可将软件数据库中状态为“完成的”或“活动的”的该事务进行回滚操作。当然,若恰巧此时软件数据库执行事务也出错了,则此时其中事务的状态可以为“失败的”。当软件数据库回滚完成后,其上该事务的状态可以标记为“终止的”。
在一些实施例中,该步骤S220,即,根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将执行所述事务后的表数据恢复为执行所述事务前的表数据,具体地,可包括:根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将本地内存中执行所述事务后的表数据恢复为执行所述事务前的表数据。以此来具体说明恢复软件数据库端内存中的对应该事务的表数据。
步骤S230:发送恢复得到的执行所述事务前的表数据,以使利用执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据。
若是由CPU端软件数据库控制何时重发数据给硬件数据库,则软件数据库可以在执行完回滚后就重发数据给硬件数据库。若是由硬件数据库控制何时重发数据给硬件数据库,则软件数据库可以待接收到硬件数据库发来的重发该事务所需表数据的指令时再执行该步骤S230。
在一些实施例中,若CPU端接收到应用程序发来的决定重新执行事务的指令,则可重新执行该事务。示例性地,图2所示的软件数据库回滚方法,还可包括步骤:S240,接收重新执行所述事务的指令,根据重新执行所述事务的指令、恢复得到的执行所述事务前的表数据、及所述硬件数据库执行事务出错前接收的所述事务的指令重新执行所述事务。该步骤S240可以在该步骤S220之后,或者在该步骤S230之后执行,具体时机,可以由应用程序端的用户决定。
在一些实施例中,若事务为查询任务(可仅由硬件数据库端执行),不涉及表数据的修改,则图2所示的软件数据库回滚方法还可包括步骤:在事务为查询任务的情况下,接收硬件数据库执行所述事务出错时的查询出错信息,并输出所述查询出错信息。可将查询出错信息输出至应用程序,以告知用户事务执行出错。
在一些实施例中,图2所示的软件数据库回滚方法,还可包括步骤:在接收到所述硬件数据库执行完所述事务且本地执行完成所述事务的情况下,将执行所述事务的结果数据进行输出和/或写入本地磁盘。以此可以完成提交,该步骤执行完成后,可将软件数据库中该事务的状态标记为“提交的”。
上述各实施例的软件数据库回滚方法是针对当硬件数据库执行事务出错时,软件数据库回滚的方案,以便也能够使硬件数据库实现回滚。
在另一些情形中,软件数据库执行事务出错时,也需要使软件数据库和硬件数据库(即使未出错)两端实现回滚。基于此,本发明实施例另提供了一种软件数据库回滚方法,以求利用软件数据库的回滚操作结果对硬件数据库实现回滚。
图3是本发明又一实施例的软件数据库回滚方法的流程示意图。如图3所示,当软件数据库执行事务出错时,从软件数据库角度来看,软件数据库回滚方法可包括以下步骤S310和步骤S320。
步骤S310:在事务为更新任务的情况下,若本地执行所述事务出错,对本地已执行的所述事务进行基于日志的回滚操作,以将本地执行所述事务后的表数据恢复为执行所述事务前的表数据。
参见前述实施例的方法,该更新任务是指涉及修改的事务。软件数据库执行所述事务出错时,可将其中的该事务的状态标记为“失败的”。软件数据库基于日志进行回滚操作可以基于日志的UNDO操作进行。软件数据库执行完回滚操作后,可将其中的该事务的状态标记为“完成的”。可将软件数据库端内存中的所述事务后的表数据恢复为执行所述事务前的表数据。
步骤S320:发送恢复得到的执行所述事务前的表数据,以使利用执行所述事务前的表数据代替硬件数据库中执行所述事务后的表数据。
该步骤S320中可在步骤S310执行完成得到执行所述事务前的表数据后就发送恢复得到的执行所述事务前的表数据至硬件数据库,即可由CPU端控制何时发送数据给硬件数据库。
该步骤S320中“代替”可以是替换,或清空硬件数据库中相关表数据后用接收的表数据代替。
在一些实施例中,上述步骤S310中,执行对本地已执行的所述事务进行基于日志的回滚操作的同时,图3所示方法还可包括步骤:发送本地执行所述事务出错时的失败状态信息,以使所述硬件数据库清空其上执行所述事务后的表数据和执行所述事务所用的所述事务的指令。该失败状态信息包含软件数据库端的事务的状态为“失败的”标记,以此可使硬件数据库清空执行该事务后表数据和该事务的指令,从而便于实现硬件数据库的回滚。
在一些实施例中,图3所示软件数据库回滚方法,还可包括步骤:接收重新执行所述事务的指令;根据重新执行所述事务的指令、恢复得到的执行所述事务前的表数据、及本地执行事务出错前接收的所述事务的指令重新执行所述事务。该重新执行所述事务的指令可由应用程序端发来,是否重新执行该事务由该应用程序端的用户决定。
在一些实施例中,该步骤S320中,执行发送恢复得到的执行所述事务前的表数据的同时,图3所示软件数据库回滚方法,还可包括步骤:发送重新执行所述事务的指令和本地执行事务出错前接收的所述事务的指令,以使所述硬件数据库重新执行所述事务。本地执行事务出错前接收的所述事务的指令是软件数据库上执行该事务的指令。
值得说明的是,上述图1、图2或图3所示方法主要是以软件数据库和硬件数据库为例,且主要是基于对于更新任务的事务两端数据库都执行,对于查询任务仅由硬件数据库执行进行说明,但并不是将其他可能的应用情形排除在外,所以本发明的保护范围应根据权利要求所限的内容来确定。
基于与上述图1、图2或图3所示方法相同的发明构思,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的硬件数据库回滚方法或上述任一实施例所述的软件数据库回滚方法的步骤。对于软件数据库回滚方法而言,该电子设备可以是计算机、服务器等。对于硬件数据库回滚方法而言,该电子设备可以是FPGA、GPU、ASIC等。
另外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的硬件数据库回滚方法或上述任一实施例所述的软件数据库回滚方法的步骤。
为使本领域技术人员更好地了解本发明,下面将以具体实施例说明本发明的实施方式。
为了解决采用硬件数据库加速时候,在硬件加速器上处理一个事务的时候,如何从硬件层面上保证将含有多个SQL语句的一个事务作为一个原子操作来处理。即此事务中的所有SQL语句要么全部成功执行,要么全部不执行,告诉应用程序此事务无法执行。
该实施例中,在数据库加速时候,将在硬件上执行的一个事务的多个SQL语句作为一个原子操作的方法,主要方法包括下面三条:
1.首先定义事务的状态,在CPU端,定义一个事务可处于下列状态,状态之间的关系如图4所示。
活动的:表明此事务正在执行SQL序列,且未发现错误。
完成的:最后一条语句执行后。
失败的:事务执行过程中一旦发现错误后,事务就处于这个状态。
终止的:事务回撤到事务执行前。
提交的:成功完成后,且已经永久写入磁盘了。
2.硬件端事务所处的状态之前关系如图5所示,其中,没有提交状态,因为提交必须通过CPU端来完成。
活动的:表明此事务正在执行SQL序列,且未发现错误
完成的:表明此事务已成功地执行完。
失败的:事务执行过程中一旦发现次错误,事务就处于此状态。
终止的:事务回撤到事务执行前。
3.如果该事务是查询事务(即不包含增删改查的语句),那么当此硬件端事务处于失败状态,则告诉应用程序执行错误,不必重新执行整个事务,且此时CPU软件数据库无需任何操作。由应用程序自己确定是否需要重新执行此事务。因为硬件数据库内容没有破坏,只需将此事务的状态置位终止态并决定是否重新执行此事务的SQL指令即可保证原子性。
4.如果该事务是更新事务(即包含增删改中的一种),那么当此事务处于完成态时,将此事务的查询结果返回给CPU端,供其显示或写回磁盘。如果事务处于失败状态时,表明此时硬件端数据库的表脏了,需要被替换。则此时不断查看CPU端的数据库状态,由于CPU端的数据库操作较慢,此时必须等待CPU端的数据库处于终止态,然后将此事务所需要的表和事务指令重新传给硬件数据库端,由应用程序自身决定是否继续执行。由于此时硬件端关于此表的数据已经被替换为此事务执行前的表数据,这就维护了硬件数据库端的原子性了。
本实施例中,为了保证数据库的安全性,有必要从硬件层面支持数据库事务处理的原子性,即一个包含多个SQL语句的事务,要么全部执行并返回告诉程序执行成功,要么全部不执行,返回告诉程序执行失败,重新执行此事务。在硬件层面维护原子性的思路可以是,将一个事务作为原子操作,而不是一条SQL语句,所以在每条SQL语句执行完后不能立即写回去磁盘,而是需要在整个事务执行成功后再将数据写回磁盘。当一个事务执行过程中遇到错误,CPU端首先根据日志功能回滚操作,硬件端可清空事务的执行过程中的指令和数据,CPU端将数据和指令重传给硬件数据库端,然后重新执行此事务。如此一来,保证了硬件的事务处理的原子性,大大增加了硬件数据库的安全性,借助于软件数据库的成熟的保障原子性的方案,使得硬件数据库的原子性维护成本大大降低。
另一具体实施例中,以JAVA连接和利用ODBC(Open Database Connectivity,开放数据库连接)连接Oracle数据库为例,说明本实施例的具体实施方式。硬件数据库加速系统可利用C++重写JDBC(Java DataBase Connectivity,java数据库连接)接口的实现,从而使得对上层应用透明。图6示出了数据库加速系统的整体的各个模块设计,最主要的数据库加速处理部分是由硬件加速器模块来完成。本实施例的最主要目的是保证了在硬件数据库上运行的事务对SQL序列具有原子性,即,硬件返回给程序的结果的效果是这个SQL序列要么全部执行了,要么全部没执行。
图7示出了各个模块之间的交互流程。JDBC是供给Java程序使用的上层调用的接口,从而使得程序员可以在不用修改原来程序代码的情况下得到加速,通过JNI(JavaNative Interface,Java本地接口)接口模块,使得下层对数据库的操作可以用C++编写,调度器模块负责各个其他模块的配合,包括将磁盘数据库的内容读取到CPU内存中,再将CPU内存中的内容读取到硬件内存中,将JDBC接收到的SQL指令传输给硬件执行。
如图7所示,本数据库系统的工作流程包括如下步骤1~4。
1.上层JAVA应用程序中的JDBC接口根据应用程序要求接收到多个SQL语句的一个整体事务,这些事务中的SQL语句按顺序被交给下层的C++程序模块处理,这里仍然采用了JDBC的接口,不过我们是重写了部分实现。
2.调度器接收到SQL语句后,然后连接数据库,根据SQL语句从磁盘中读取相应的表数据,并将数据传送到硬件内存中以便于硬件根据指令执行。
3.调度器以事务为单位,将事务的SQL指令按顺序放到硬件的SQL指令序列中。
4.硬件执行SQL指令序列并返回结果到CPU端。
a)如果此事务不含有增删改语句,则此事务若成功执行完则向CPU端返回结果。如果执行失败,只需向应用程序返回错误即可,应用程序本身决定是否重新执行此事务。
b)如果此事务含有增删改语句,则当硬件端执行时候事务如果处于完成态时,表明事务运行成功,只需将必要的查询结果返回给CPU端即可。如果事务处于失败状态时,表明执行过程遇到错误,此时需要从CPU端重新传回数据和指令。由于CPU端操作较硬件端慢,所以此时必须不断检查CPU端事务的状态直到其处于终止的。此时将所需的表数据和指令重新传给硬件,由应用程序决定是否重新执行。
综上所述,本发明实施例的硬件数据库回滚方法、软件数据库回滚方法、电子设备及计算机可读存储介质,通过利用CPU端软件数据库的回滚操作保证硬件数据库的原子性,大大增加了硬件数据库的安全性,且通过借助于软件数据库能够大大降低硬件数据库的原子性维护的成本。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种硬件数据库回滚方法,其特征在于,包括:
在事务为更新任务的情况下,当硬件数据库执行所述事务出错时,发送失败状态信息;
接收软件数据库根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据;
利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据。
2.如权利要求1所述的硬件数据库回滚方法,其特征在于,接收软件数据库根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据之前,所述方法,还包括:
监听软件数据库根据所述失败状态信息执行基于日志的回滚操作的状态,并在回滚完成后执行接收软件数据库根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据的步骤。
3.如权利要求1所述的硬件数据库回滚方法,其特征在于,
接收软件数据库根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据的同时,所述方法,还包括:
接收所述事务的指令;
利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据之后,所述方法,还包括:
接收重新执行所述事务的指令;
根据重新执行所述事务的指令、接收的所述事务的指令、及接收的执行所述事务前的表数据重新执行所述事务。
4.如权利要求3所述的硬件数据库回滚方法,其特征在于,接收软件数据库根据所述失败状态信息执行基于日志的回滚操作得到的执行所述事务前的表数据之前,还包括:
清空所述硬件数据库中执行所述事务出错后的表数据和执行所述事务出错所用的所述事务的指令。
5.如权利要求1至3任一项所述的硬件数据库回滚方法,其特征在于,利用接收的执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据,包括:
利用接收的执行所述事务前的表数据替换所述硬件数据库中执行所述事务出错后的表数据。
6.如权利要求1所述的硬件数据库回滚方法,其特征在于,还包括:
在事务为查询任务的情况下,当硬件数据库执行所述事务出错时,发送查询出错信息。
7.一种软件数据库回滚方法,其特征在于,包括:
在事务为更新任务的情况下,接收硬件数据库执行所述事务出错时的失败状态信息;
根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将执行所述事务后的表数据恢复为执行所述事务前的表数据;
发送恢复得到的执行所述事务前的表数据,以使硬件数据库利用执行所述事务前的表数据代替所述硬件数据库中执行所述事务出错后的表数据。
8.如权利要求7所述的软件数据库回滚方法,其特征在于,还包括:
接收重新执行所述事务的指令,根据重新执行所述事务的指令、恢复得到的执行所述事务前的表数据、及所述硬件数据库执行事务出错前接收的所述事务的指令重新执行所述事务。
9.如权利要求7所述的软件数据库回滚方法,其特征在于,还包括:
在事务为查询任务的情况下,接收硬件数据库执行所述事务出错时的查询出错信息,并输出所述查询出错信息。
10.如权利要求7所述的软件数据库回滚方法,其特征在于,根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将执行所述事务后的表数据恢复为执行所述事务前的表数据,包括:
根据所述失败状态信息对本地已执行的所述事务进行基于日志的回滚操作,以将本地内存中执行所述事务后的表数据恢复为执行所述事务前的表数据。
11.如权利要求7所述的软件数据库回滚方法,其特征在于,还包括:
在接收到所述硬件数据库执行完所述事务且本地执行完成所述事务的信息的情况下,将执行所述事务的结果数据进行输出和/或写入本地磁盘。
12.一种软件数据库回滚方法,其特征在于,包括:
在事务为更新任务的情况下,若本地执行所述事务出错,对本地已执行的所述事务进行基于日志的回滚操作,以将本地执行所述事务后的表数据恢复为执行所述事务前的表数据;
发送恢复得到的执行所述事务前的表数据,以使硬件数据库利用执行所述事务前的表数据代替硬件数据库中执行所述事务后的表数据。
13.如权利要求12所述的软件数据库回滚方法,其特征在于,对本地已执行的所述事务进行基于日志的回滚操作的同时,还包括:
发送本地执行所述事务出错时的失败状态信息,以使所述硬件数据库清空其上执行所述事务后的表数据和执行所述事务所用的所述事务的指令。
14.如权利要求12所述的软件数据库回滚方法,其特征在于,还包括:
接收重新执行所述事务的指令;根据重新执行所述事务的指令、恢复得到的执行所述事务前的表数据、及本地执行事务出错前接收的所述事务的指令重新执行所述事务。
15.如权利要求14所述的软件数据库回滚方法,其特征在于,发送恢复得到的执行所述事务前的表数据的同时,还包括:
发送重新执行所述事务的指令和本地执行事务出错前接收的所述事务的指令,以使所述硬件数据库重新执行所述事务。
16.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至15任一项所述方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至15任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010008482.0A CN111176907B (zh) | 2020-01-06 | 2020-01-06 | 硬件数据库回滚方法、软件数据库回滚方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010008482.0A CN111176907B (zh) | 2020-01-06 | 2020-01-06 | 硬件数据库回滚方法、软件数据库回滚方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176907A CN111176907A (zh) | 2020-05-19 |
CN111176907B true CN111176907B (zh) | 2021-03-05 |
Family
ID=70652400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010008482.0A Active CN111176907B (zh) | 2020-01-06 | 2020-01-06 | 硬件数据库回滚方法、软件数据库回滚方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111176907B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897522B (zh) * | 2020-06-16 | 2021-09-03 | 中科驭数(北京)科技有限公司 | 面向硬件数据库的开发展示系统及方法 |
CN112256409B (zh) * | 2020-09-15 | 2022-03-04 | 中科驭数(北京)科技有限公司 | 基于多个数据库加速器的任务执行方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727475A (zh) * | 2009-10-12 | 2010-06-09 | 奇智(上海)信息科技有限公司 | 一种获取数据库访问过程的方法、装置及系统 |
US8296271B1 (en) * | 2005-03-28 | 2012-10-23 | Federal Home Loan Mortgage Corporation | System and method for optimizing data recovery in a parallel database |
CN103617131A (zh) * | 2013-11-26 | 2014-03-05 | 曙光信息产业股份有限公司 | 一种实现数据缓存的方法 |
CN104516943A (zh) * | 2013-09-27 | 2015-04-15 | 国际商业机器公司 | 数据库日志的存档管理 |
CN105556462A (zh) * | 2013-07-29 | 2016-05-04 | 惠普发展公司,有限责任合伙企业 | 写入文件和文件元数据 |
CN110019050A (zh) * | 2017-10-19 | 2019-07-16 | 中兴通讯股份有限公司 | 一种数据回滚方法、系统、设备及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7146386B2 (en) * | 2004-03-29 | 2006-12-05 | Microsoft Corporation | System and method for a snapshot query during database recovery |
US7640249B2 (en) * | 2006-03-29 | 2009-12-29 | Sap (Ag) | System and method for transactional session management |
US9165025B2 (en) * | 2009-12-11 | 2015-10-20 | International Business Machines Corporation | Transaction recovery in a transaction processing computer system employing multiple transaction managers |
CN104216955B (zh) * | 2014-08-20 | 2017-12-26 | 百度在线网络技术(北京)有限公司 | 一种操作数据及管理事务的方法、装置及分布式系统 |
CN109684292A (zh) * | 2019-01-10 | 2019-04-26 | 江苏华存电子科技有限公司 | 一种闪存数据库快速进行数据恢复的方法 |
CN110196786B (zh) * | 2019-04-30 | 2021-10-08 | 武汉达梦数据库股份有限公司 | 数据库回滚同步中内存的控制方法及设备 |
-
2020
- 2020-01-06 CN CN202010008482.0A patent/CN111176907B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296271B1 (en) * | 2005-03-28 | 2012-10-23 | Federal Home Loan Mortgage Corporation | System and method for optimizing data recovery in a parallel database |
CN101727475A (zh) * | 2009-10-12 | 2010-06-09 | 奇智(上海)信息科技有限公司 | 一种获取数据库访问过程的方法、装置及系统 |
CN105556462A (zh) * | 2013-07-29 | 2016-05-04 | 惠普发展公司,有限责任合伙企业 | 写入文件和文件元数据 |
CN104516943A (zh) * | 2013-09-27 | 2015-04-15 | 国际商业机器公司 | 数据库日志的存档管理 |
CN103617131A (zh) * | 2013-11-26 | 2014-03-05 | 曙光信息产业股份有限公司 | 一种实现数据缓存的方法 |
CN110019050A (zh) * | 2017-10-19 | 2019-07-16 | 中兴通讯股份有限公司 | 一种数据回滚方法、系统、设备及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
《嵌入式数据库恢复算法研究》;陈敬炜;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20150315;第2015年卷(第3期);第I138-126页 * |
《闪存数据库系统存储管理及可裁剪性研究》;卢科;《中国优秀博士学位论文全文数据库(电子期刊)信息科技辑》;20130115;第2013年卷(第1期);第I137-7页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111176907A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11914572B2 (en) | Adaptive query routing in a replicated database environment | |
US10261869B2 (en) | Transaction processing using torn write detection | |
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US6647510B1 (en) | Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction | |
US6708288B1 (en) | Compiler-based checkpointing for support of error recovery | |
US7996363B2 (en) | Real-time apply mechanism in standby database environments | |
CN111753013B (zh) | 分布式事务处理方法及装置 | |
CN111176907B (zh) | 硬件数据库回滚方法、软件数据库回滚方法及装置 | |
US9189502B2 (en) | Techniques for moving data files without interrupting access | |
US20140040208A1 (en) | Early release of transaction locks based on tags | |
CN112148436B (zh) | 去中心化的tcc事务管理方法、装置、设备及系统 | |
CN116610752A (zh) | 事务性分布式数据同步方法、装置、系统及存储介质 | |
CN115617908A (zh) | 一种MySQL数据同步方法、装置、数据库终端、介质及系统 | |
CN112559496B (zh) | 一种分布式数据库事务原子性实现方法及装置 | |
CN110196788B (zh) | 一种数据读取方法、装置、系统及存储介质 | |
CN111026772B (zh) | 用于保证数据库修改永久性的方法及装置 | |
KR100365891B1 (ko) | 주기억장치 상주형 데이터베이스 시스템에서 로그 처리를하지 않는 백업/회복 장치 및 그 방법 | |
Silberschatz et al. | Recovery system | |
CN116910064A (zh) | 一种分布式系统中在线创建表索引方法和系统 | |
KR20010055981A (ko) | 안전기억장치를 이용한 주기억장치 상주형 데이터베이스회복 방법 | |
Tapus | Distributed speculations: providing fault-tolerance and improving performance | |
CN116010335A (zh) | 应用于数据库的数据处理方法、装置及计算机存储介质 | |
CN113986587A (zh) | 基于值日志的检查点实现方法、系统、存储介质及设备 | |
JP3804823B2 (ja) | 障害回復機能を備えたキャッシュシステムとそのキャッシュ制御方法 | |
CN114996044A (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 |