一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据存储方法及装置、数据查询方法及装置与流程

2022-06-08 09:30:57 来源:中国专利 TAG:
1.本说明书实施例涉及数据库
技术领域
:,特别涉及一种数据存储方法及装置、数据查询方法及装置。
背景技术
::2.随着计算机技术和互联网技术的快速发展,线上任务越来越普遍,随之而来的是暴增的数据存储需求,相应诞生了各种数据库。数据库拥有大量的用户群体以及完善的社区生态,许多用户在线上运维数据库的过程中,可能会出现一些误操作,常见的比如更新操作或删除语句没有带限定条件或指定了错误的限定条件等,导致数据因为人工误操作而被破坏或丢弃,这个时候往往需要快速查询到操作前的历史版本数据以进行恢复,因而需要提供更快速或者更可靠的数据查询方案。技术实现要素:3.有鉴于此,本说明书施例提供了一种数据存储方法。本说明书一个或者多个实施例同时涉及一种数据查询方法,一种数据存储装置,一种数据查询装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。4.根据本说明书实施例的第一方面,提供了一种数据存储方法,包括:5.接收目标事务的启动请求,其中,所述目标事务为针对目标数据进行数据操作的操作集;6.响应于所述启动请求,在事务描述信息表中为所述目标事务分配对应的事务信息行,并将所述事务信息行的地址记录在事务操作记录中,其中,所述事务操作记录为针对所述目标事务包括的各个数据操作生成的记录;7.响应于所述目标事务的提交操作,将所述目标事务的事务描述信息回填至所述事务信息行。8.根据本说明书实施例的第二方面,提供了一种数据查询方法,包括:9.接收数据查询请求,其中,所述数据查询请求携带查询用户标识和待查询版本标记;10.获取所述查询用户标识对应的事务操作记录中包括的目标事务信息行地址;11.根据所述目标事务信息行地址,在事务描述信息表中查询对应的参考事务信息,其中,所述参考事务信息包括版本标记;12.在所述参考事务信息中的版本标记与所述待查询版本标记不一致的情况下,在历史数据记录中查找所述待查询版本标记对应的目标事务信息。13.根据本说明书实施例的第三方面,提供了一种数据存储装置,包括:14.第一接收模块,被配置为接收目标事务的启动请求,其中,所述目标事务为针对目标数据进行数据操作的操作集;15.记录模块,被配置为响应于所述启动请求,在事务描述信息表中为所述目标事务分配对应的事务信息行,并将所述事务信息行的地址记录在事务操作记录中,其中,所述事务操作记录为针对所述目标事务包括的各个数据操作生成的记录;16.回填模块,被配置为响应于所述目标事务的提交操作,将所述目标事务的事务描述信息回填至所述事务信息行。17.根据本说明书实施例的第四方面,提供了一种数据查询装置,包括:18.第二接收模块,被配置为接收数据查询请求,其中,所述数据查询请求携带查询用户标识和待查询版本标记;19.获取模块,被配置为获取所述查询用户标识对应的事务操作记录中包括的目标事务信息行地址;20.查询模块,被配置为根据所述目标事务信息行地址,在事务描述信息表中查询对应的参考事务信息,其中,所述参考事务信息包括版本标记;21.查找模块,被配置为在所述参考事务信息中的版本标记与所述待查询版本标记不一致的情况下,在历史数据记录中查找所述待查询版本标记对应的目标事务信息。22.根据本说明书实施例的第五方面,提供了一种计算设备,包括:23.存储器和处理器;24.所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法或者数据查询方法的步骤。25.根据本说明书实施例的第六方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述数据存储方法或者数据查询方法的步骤。26.根据本说明书实施例的第七方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据存储方法或者数据查询方法的步骤。27.本说明书一个实施例提供了一种数据存储方法,可以接收目标事务的启动请求,其中,目标事务为针对目标数据进行数据操作的操作集;响应于启动请求,在事务描述信息表中为目标事务分配对应的事务信息行,并将事务信息行的地址记录在事务操作记录中,其中,事务操作记录为针对目标事务包括的各个数据操作生成的记录;响应于目标事务的提交操作,将目标事务的事务描述信息回填至事务信息行。这种情况下,在目标事务启动时,可以在事务描述信息表中为目标事务分配一个对应的事务信息行,并将该事务信息行的地址记录在事务操作记录中,在目标事务提交时,可以将目标事务相关的事务描述信息回填至为其分配的事务信息行中,便于后续可以基于事务操作记录中的地址在事务描述信息表中找到需要查询的事务信息。如此,可以将目标事务的事务描述信息持久化保存至事务描述信息表中,后续可以直接基于该事务描述信息表,查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。28.本说明书一个实施例提供了一种数据查询方法,可以接收数据查询请求,其中,数据查询请求携带查询用户标识和待查询版本标记;然后可以获取查询用户标识对应的事务操作记录中包括的目标事务信息行地址;根据所述目标事务信息行地址,在事务描述信息表中查询对应的参考事务信息,其中,参考事务信息包括版本标记;之后,在参考事务信息中的版本标记与待查询版本标记不一致的情况下,还可以在历史数据记录中查找待查询版本标记对应的目标事务信息。这种情况下,可以接收用户发起数据查询请求,然后获取该用户对应的事务操作记录中包括的目标事务信息行地址,基于该目标事务信息行地址可以在事务描述信息表中找到对应的事务信息,通过简单的比较,确定该事务信息是否是该用户查询所需的事务信息,若不是,则可以进一步回溯历史数据记录,在历史数据记录中查找该用户所需的历史版本数据的相关事务信息。如此,可以将目标事务的事务描述信息持久化保存至事务描述信息表中,后续可以借助持久化存储的事务描述信息,以及历史数据记录中保留的历史版本信息,直接基于简单的查询语句,在该事务描述信息表和历史数据记录中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,无需依赖、解析日志,节省了构造反向操作的开销,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。附图说明29.图1是本说明书一个实施例提供的一种数据存储方法的流程图;30.图2是本说明书一个实施例提供的一种数据查询方法的流程图;31.图3是本说明书一个实施例提供的一种数据查询链路的示意图;32.图4是本说明书一个实施例提供的一种数据存储装置的结构示意图;33.图5是本说明书一个实施例提供的一种数据查询装置的结构示意图;34.图6是本说明书一个实施例提供的一种计算设备的结构框图。具体实施方式35.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。36.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。37.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。38.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。39.mysql:一种广泛使用的开源的数据库管理系统,是一个关系型数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性,mysql所使用的语言是用于访问数据库的最常用标准化语言,采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择mysql作为网站数据库,能够帮助用户管理关系型数据库。40.事务(trx):一般是指要做的或所做的事情,在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如sql,c 或java)书写的用户程序的执行所引起,并用形如begintransaction和endtransaction语句(或函数调用)来界定。事务由事务开始和事务结束之间执行的全体操作组成,即事务是数据库系统中一系列严密的操作的集合,从用户使用角度看,一般来说begin语句标识事务的启动,commit语句会将事务提交掉,并完结该事务。41.一般来说,事务需要满足4个特性:原子性(atomicity):操作事务中的指令时,要么全部执行成功,要么全部不执行,只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态;一致性(consistency):事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定;隔离性(isolation):如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;持久性(durability):事务完成后,对数据库数据的修改被持久化存储。42.活跃事务(activetrx):正在进行的还未提交的事务。43.innodb:mysql的一个事务引擎系统,广泛被使用。44.undo:数据库数据的历史版本保存在undo当中,通过undo,用户可以查询到数据过往的版本,也可以让数据回滚到某个历史版本。45.trxid:事务的唯一标识号,在事务启动的时候分配的全局唯一递增号。46.readview:视图,用来决定事务可见性关键性内存结构。通过它,数据库可以知道用户想要查询的历史版本数据。47.mvcc(multiversionconcurrencycontrol):多版本并发控制,是数据库管理系统常用的一种并发控制。mvcc意图解决读写锁造成的多个、长时间的读操作饿死写操作问题。在mvcc机制下,读操作读取历史版本,可以并发执行,并且还不会阻塞写操作。48.pk(primarykey):pk是mysqlinnodb数据表的主键字段,表上的每一个数据行都有唯一的pk。49.rollptr:回滚段指针。存在于每一个innodb数据行上,通过回滚段指针,能够回溯该数据行的最近的一个历史版本(即该数据行的前映像)。50.purgesys:purge系统,不会再有查询需要看的历史版本没有存在的必要,purge系统会定期按需清理掉这些历史版本数据。51.binlog:一种mysql的操作日志。binlog最大的特点是它是一种逻辑日志,通过工具可以很容易解析binlog,来获知用户的更新操作语句。52.dba(databaseadministrator):从事管理和维护数据库管理系统(dbms)的相关工作人员的统称,属于运维工程师的一个分支。53.flashbackquery:闪回查询,数据库领域中一种特殊的查询,它可以指定过往的某个时间点,查找该时间点时的数据库数据。54.lizard:一种事务系统,相比于mysqlinnodb的事务系统机制,lizard会持久化事务状态信息,并且采用了更高效的多版本读写并发机制。55.vision:视图,为了与mysql原生的readview区分开来,在lizard事务系统下的视图改名为vision。相比于readview及其背后所代表的运行机制,vision更精简,也更高效。56.transactiontable:事务描述信息表,持久化的事务描述信息会保存在事务描述信息表上。57.tsa(transactionstatusaddress):事务状态地址。存在于事务操作生成的每一行记录行上,通过它,可以找到修改该行的事务的状态信息。58.tcn:事务提交号,在事务提交的时候分配的全局唯一递增号。59.undoreservation:mysql的purge机制是尽力且及时地推进。而undoreservation是一种根据某种策略尽量阻挡purge推进,以达到保留更多历史版本数据的机制。60.需要说明的是,mysql是目前流行的数据库管理系统之一,拥有大量的用户群体以及完善的社区生态。然而,许多用户在线上运维mysql数据库的过程中,可能会出现一些误操作,常见的比如更新操作或删除语句没有带限定条件或指定了错误的限定条件,导致数据因为人工误操作而被破坏或丢弃,特别是如果操作的是重要的配置信息,则会严重影响数据库运行,这个时候往往需要dba快速对数据进行回滚操作以进行恢复。61.然而,mysql对于不再需要查询的数据,是尽力且及时地清理,所以mysql事实上没有保存和查找过往历史版本数据(ps:此处特指不被当前读事务查询的历史版本数据,如果历史版本仍然被当前查询所需要,则mysql能够保证这些数据不会被清理)的能力,也即mysql的purge系统负责清理undo中不再需要的历史版本数据,目前mysql的purge系统的推进策略是尽力且及时,导致历史版本数据一旦不被需要,则马上有被清理的可能性。所以这种情况下dba能够采取的手段十分有限,最差情况下甚至要重搭整个数据库,从而导致数据库长时间不可用。62.当用户因为误操作导致数据丢失或损坏时,如果能回查到误操作前的数据版本,则可以将数据迅速恢复。虽然mysql的undo保存了数据的所有历史版本,但用户很难通过undo找回这些历史版本,主要原因有:这些历史版本数据会被purge系统及时清理掉,导致用户永久丢失掉了误操作前的历史版本;数据的历史版本没有时间戳信息,即如果用户需要查找10:00时的数据,仅仅从undo本身是无法知道哪些历史版本在10:00之前生成,以及那些历史版本是在10:00之后生成的。63.目前,mysql具备的闪回(flashback)功能需要借助binlog的能力。binlog是mysql产生的一种逻辑日志,它记录了数据库上发生的所有操作,被广泛用于搭建一主一备的容灾集群。通过mysql配套的工具,如mysqlbinlog等,可以很容易解析出mysql在过往进行过的操作。具体的,可以通过解析binlog日志,感知到过往进行过的操作,然后生成相反的操作语句,再次在mysql数据库上执行,以达到闪回或回档的目的。64.然而,上述方案最大的缺点是强依赖binlog日志,严重限制了它的使用范围。事实上,有一些mysql实例没有打开生成binlog的功能。其次,binlogflashback方法操作步骤比较复杂,容易出错并且耗时。另外,利用备份集恢复需要额外资源,如果数据库较大则时间非常不可控。基于上述原因,mysql的闪回功能没有被广泛使用。65.针对上述情况,目前mysql生态内没有很好地解决方案,最严重的情况下,甚至需要重搭整个数据库来恢复数据,导致数据库长时间不可用。因而本说明书一个实施例提出了一种基于lizard事务系统tcn的闪回查询方案,借助了mysqlundo以及lizard事务系统的能力,引入undoreservation机制,向用户提供了闪回查询的能力,并持久化了事务的提交时间等信息,让用户能够及时回查到过往某个时间点的数据,从而能够迅速将数据库按照表维度回档到过去的某个版本,对数据进行回档,以挽救数据库。66.在本说明书中,提供了一种数据存储方法,本说明书同时涉及一种数据查询方法,一种数据存储装置,一种数据查询装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。67.参见图1,图1示出了根据本说明书一个实施例提供的一种数据存储方法的流程图,该数据存储方法可以应用于数据库中,具体包括以下步骤。68.步骤102:接收目标事务的启动请求,其中,目标事务为针对目标数据进行数据操作的操作集。69.其中,目标数据是数据库中用户想要进行数据操作的数据,该数据操作可以为修改、删除、增加等操作。目标事务是指针对目标数据进行一系列数据操作的集合。70.实际应用中,事务一般是指要做的或所做的事情,在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如sql,c 或java)书写的用户程序的执行所引起,并用形如begintransaction和endtransaction语句(或函数调用)来界定。事务由事务开始和事务结束之间执行的全体操作组成,即事务是数据库系统中一系列严密的操作的集合,从用户使用角度看,一般来说begin语句标识事务的启动,commit语句会将事务提交掉,并完结该事务。71.需要说明的,在用户要对数据库中的数据进行数据操作时,可以启动一个对应的目标事务,此时可以接收到目标事务的启动请求,该启动请求用于指示目标事务包括的各个数据操作开始执行。72.步骤104:响应于启动请求,在事务描述信息表中为目标事务分配对应的事务信息行,并将事务信息行的地址记录在事务操作记录中,其中,事务操作记录为针对目标事务包括的各个数据操作生成的记录。73.需要说明的是,事务描述信息表可以包括各个事务的事务描述信息,该事务描述信息可以为与事务相关的各种信息,如事务描述信息可以包括事务的活跃状态、各个数据操作的操作信息、事务的唯一标识号、版本标记等与事务相关的信息。其中,事务的活跃状态可以为活跃事务(activetrx)或者提交事务;各个数据操作的操作信息可以包括针对目标数据执行的各个数据操作的信息;事务的唯一标识号可以是指trxid,在事务启动的时候分配的全局唯一递增号;版本标记可以为事务提交号(tcn),在事务提交的时候分配的全局唯一递增号,来表示事务的提交顺序,或者还可以为事务提交时间等。74.实际应用中,lizard可以持久化事务状态信息,因而借助lizard事务系统的能力,引入事务描述信息表(transactiontable),持久化与目标事务相关的事务描述信息。本说明书一个实施例中,在目标事务启动的时候,会在transactiontable上给目标事务分配一个事务信息行(transactionslot),且还可以将事务信息行的地址记录在事务操作记录中,从而便于后续可以将目标事务的事务描述信息持久化保存至事务描述信息表中为其分配的事务信息行中,并且基于事务操作记录中记录的地址可以在事务描述信息表中查找到相应的事务信息。75.本实施例一个可选的实施方式中,可以通过增加地址字段的方式,在事务操作记录中记录相应的地址,也即将事务信息行的地址记录在事务操作记录中,具体实现过程可以如下:76.针对目标事务包括的各个数据操作,生成对应的事务操作记录;77.在事务操作记录中增加地址字段,其中,地址字段用于记录目标事务在事务描述信息表中对应的事务信息行的地址。78.其中,目标事务在事务描述信息表中对应的事务信息行的地址可以为tsa(transactionstatusaddress,事务状态地址),可以用于指示目标事务的事务描述信息存储在事务描述表中的哪一行。79.需要说明的是,目标事务可以为针对目标数据进行数据操作的操作集,即目标事务包括针对目标数据的多个数据操作,在每个数据操作执行时,均可以生成对应的事务操作记录,因而可以将目标事务在事务描述信息表中对应的事务信息行的地址,记录在目标事务包括的各个数据操作生成的事务操作记录中,便于后续查询。也就是说,目标事务包括的各个数据操作对应的事务操作记录中记录有相同的地址,均指向事务描述信息表中目标事务对应的事务信息行。80.实际应用中,事务操作记录除了trxid字段以及rollptr字段两个系统字段外,还可以额外引入两个系统字段版本标记字段以及tsa字段。其中,版本标记字段可以为tcn,表示事务的提交顺序,还可以为事务提交的时间戳。另外,tsa字段上记录了该事务操作记录对应的目标事务所对应的transactionslot的地址,便于后续查询过程中基于该地址在事务描述信息表中对应的transactionslot找到所需的事务信息。81.本说明书一个实施例中,可以将事务描述信息表中为目标事务分配的事务信息行的地址记录在事务操作记录中,从而便于后续可以基于事务操作记录中记录的地址在事务描述信息表中查找到相应的事务信息,进而便于后续可以直接基于简单的查询语句,在该事务描述信息表和历史数据记录中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。82.步骤106:响应于目标事务的提交操作,将目标事务的事务描述信息回填至事务信息行。83.需要说明的是,目标事务包括的各个数据操作均执行完毕后,可以通过提交操作提交目标事务,目标事务提交后表示目标事务完成。因而,接收到目标事务的提交操作的情况下,说明目标事务包括的各个数据操作均执行完毕,即目标事务完成,此时可以将目标事务的事务描述信心回填至事务描述信息表中为目标事务分配的事务信息行中,从而可以将目标事务的事务描述信息持久化地存储至事务描述信息表中,便于后续查询。84.本说明书一个实施例中,借助了lizard事务系统的能力,持久化了目标事务的事务描述信息,如事务提交号或者事务提交时间,并提供了从事务操作记录本身回查到记录产生时的相关事务信息的能力,为后续闪回查询打下基础。85.本实施例一个可选的实施方式中,还可以预先针对历史数据记录设置对应的清理规则,也即该数据存储方法还可以包括:86.获取针对历史数据记录预先设置的预设清理规则;87.基于所述预设清理规则,确定并清理所述历史数据记录中的待清理数据。88.具体的,历史数据记录可以为存储数据库数据的历史版本的记录,如undo,数据库数据的历史版本保存在undo当中,通过undo,用户可以查询到数据过往的版本,也可以让数据回滚到某个历史版本。89.需要说明的是,可以引入undoreservation机制,根据某种策略尽量阻挡purge推进,以达到保留更多历史版本数据的机制。也即,可以预先针对undo(历史数据记录)预先自定义预设清理规则,使得undo中历史版本数据的清理可以不与数据查询绑定,即当前不被查询的数据也可以存储在undo中,从而保留更多历史版本数据,以供后续的数据查询,使得数据库中的数据可以回滚到某一历史版本。90.实际应用中,引入了undoreservation机制,该机制可以阻挡mysql中的purge系统的推进,让历史版本数据能够在undo中保留一段足够长的时间,让用户在出现误操作的时候,能够找回误操作之前的数据版本。然而,如果将所有的历史版本数据都保留下来,undo空间会膨胀地非常快。因而,用户可以根据实际需求,调整undoreservation阻挡purge系统的程度,即可以预先设置清理规则,按期定时对undo中的数据进行清理,预设清理规则的设置可以综合考虑两个维度:时间与空间。91.本说明书一个实施例中,引入了undoreservation机制,考量了时间和空间的纬度,预先设置清理规则,阻挡了purge系统的推进,让历史版本数据能够按需保留在undo当中,从而使得用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。92.本实施例一个可选的实施方式中,可以基于空间对历史数据记录中的数据进行清理,也即基于预设清理规则,确定并清理历史数据记录中的待清理数据,具体实现过程可以如下:93.确定所述历史数据记录中的已占用空间;94.确定所述已占用空间是否超过空间阈值;95.若超过空间阈值,则清理所述历史数据记录中版本标记靠前的预设数值个历史版本信息。96.其中,已占用空间为历史数据记录中已经存储的历史版本信息所占用的空间;空间阈值可以是指预先设置的阈值,用于确定历史数据记录中存储的历史版本信息是否过多,如空间阈值可以10g、15g、20g等;预设数值可以是指预先设置的、需要清理的历史版本信息的个数,如预设数值可以为100、500、1000等。97.需要说明的是,预设清理规则可以为基于已占用空间对历史数据记录中的待清理数据进行清理,此时可以先确定历史数据记录中的已占用空间,即历史数据记录中已经记录的历史版本信息所占用的空间,若已占用空间大于空间阈值,说明历史数据记录中存储了过多的历史版本信息,可以清理历史数据记录中版本标记靠前的预设数值个历史版本信息,即优先清理历史数据记录中较旧的历史版本信息。如,用户可以要求只要undo的空间不超过10g,就可以一直保留历史版本信息,那么如果一个数据库在一年内的更新量非常少,则后续通过闪回查询功能,甚至可以找回一年前的历史数据。98.另外,除了上述清理历史数据记录中版本标记靠前的预设数值个历史版本信息外,还可以预先设置标记阈值,清理历史数据记录中版本标记小于标记阈值的历史版本信息,如清理历史数据记录中tcn小于80的历史版本信息。99.另一种可能的实现方式中,还可以基于时间对历史数据记录中的数据进行清理,也即基于预设清理规则,确定并清理历史数据记录中的待清理数据,具体实现过程还可以如下:100.根据所述历史数据记录中各个历史版本信息的时间戳,确定最早历史版本信息;101.确定所述最早历史版本信息的时间戳与当前时间之间的时间差值;102.在所述时间差值超过差值阈值的情况下,清理所述历史数据记录中早于时间阈值的历史版本信息。103.其中,差值阈值可以是指预先设置的阈值,用于确定历史数据记录中最早的历史版本信息是否过时间过长,如差值阈值可以1天、1个月、1年等;时间阈值可以是指预先设置的、用于确定历史数据记录中哪些历史版本信息较旧需要清理,如时间阈值可以为xx月xx日、xx年等。当然,实际应用中,也可以清理历史数据记录中版本标记靠前的预设数值个历史版本信息,本说明实施例对清理过程不进行具体限定。104.本说明书一个实施例提供了一种数据存储方法,可以将目标事务的事务描述信息持久化保存至事务描述信息表中,后续可以借助持久化存储的事务描述信息,以及历史数据记录中保留的历史版本信息,直接基于简单的查询语句,在该事务描述信息表和历史数据记录中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,无需依赖、解析日志,节省了构造反向操作的开销,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。105.参见图2,图2示出了根据本说明书一个实施例提供的一种数据查询方法的流程图,该数据查询方法可以应用于数据库中,具体包括以下步骤。106.步骤202:接收数据查询请求,其中,数据查询请求携带查询用户标识和待查询版本标记。107.需要说明的是,该数据查询请求可以是指用户发起的、用于查询所需历史版本信息的请求,如闪回查询(flashbackquery)请求。具体的,在该数据查询请求中可以携带查询用户标识和待查询版本标记,其中,查询用户标识可以是指能够获取发起查询请求的用户相关的事务信息的标识,可以为用户名称,也可以为存储该用户对应的事务操作记录的表格的表名,基于该查询用户标识后续可以获取到该用户执行过的事务对应的各个事务操作记录;待查询版本标记可以是指用户想要查询的历史版本信息的标记,如待查询版本标记可以为事务提交号(tcn),也可以为事务提交时间。108.实际应用中,若待查询标记为事务提交号,那么用户在发起数据查询请求之前,还可以基于操作信息与事务提交号之间的映射关系表,确定出自己想要获取的历史版本信息的事务提交号,然后用户可以基于确定出的事务提交号,输入闪回查询语句,发起该数据查询请求。其中,操作信息与事务提交号之间的映射关系表可以向用户展示各个数据操作执行后或者各个事务提交后对应的事务提交号,以便用户可以基于该映射关系表确定自己想要获取的历史版本信息的事务提交号。109.示例的,用户输入的闪回查询语句可以为select*fromt1asoftcn150,其中,t1可以表示存储该用户对应的事务操作记录的表格的表名,select*fromt1表示返回t1表中的各个事务操作记录,即返回该用户执行的各个事务的事务操作记录。asoftcn150表示该用户想要查询的版本(即待查询版本标记)为tcn等于150。110.另外,数据库可以提供多版本并发控制(mvcc),在mvcc机制下,读操作读取历史版本和写操作可以并发执行,即发起数据查询请求与写操作可以并发执行,并且还不会阻塞写操作。111.本说明书一实施例中,可以接收用户发起的数据查询请求,该数据查询请求携带查询用户标识和待查询版本标记,后续基于查询用户标识可以获取到该用户相关的事务信息,如此,提供了闪回查询的功能,用户可以通过简单数据库操作语句,回查到想要的历史版本数据。用户无需改变使用习惯,体验丝滑。112.本实施例一个可选的实施方式中,接收数据查询请求之前,还可以包括:113.接收目标事务的启动请求,其中,所述目标事务为针对目标数据进行数据操作的操作集;114.响应于所述启动请求,在事务描述信息表中为所述目标事务分配对应的事务信息行,并将所述事务信息行的地址记录在事务操作记录中,其中,所述事务操作记录为针对所述目标事务包括的各个数据操作生成的记录;115.响应于所述目标事务的提交操作,将所述目标事务的事务描述信息回填至所述事务信息行。116.需要说明的是,上述将事务描述信息进行持久化存储的过程与上述图1所示的数据存储过程相同,可参见上述图1所示的详细内容,本说明书实施例在此不再赘述。117.本实施例一个可选的实施方式中,可以通过增加地址字段的方式,在事务操作记录中记录相应的地址,也即将事务信息行的地址记录在事务操作记录中,具体实现过程可以如下:118.针对所述目标事务包括的各个数据操作,生成对应的事务操作记录;119.在所述事务操作记录中增加地址字段,其中,所述地址字段用于记录所述目标事务在所述事务描述信息表中对应的事务信息行的地址。120.需要说明的是,目标事务可以为针对目标数据进行数据操作的操作集,即目标事务包括针对目标数据的多个数据操作,在每个数据操作执行时,均可以生成对应的事务操作记录,因而可以将目标事务在事务描述信息表中对应的事务信息行的地址,记录在目标事务包括的各个数据操作生成的事务操作记录中,便于后续查询。也就是说,目标事务包括的各个数据操作对应的事务操作记录中记录有相同的地址,均指向事务描述信息表中目标事务对应的事务信息行。121.本说明书一个实施例中,可以将事务描述信息表中为目标事务分配的事务信息行的地址记录在事务操作记录中,从而便于后续可以基于事务操作记录中记录的地址在事务描述信息表中查找到相应的事务信息,进而便于后续可以直接基于简单的查询语句,在该事务描述信息表和历史数据记录中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。122.本实施例一个可选的实施方式中,还可以预先针对历史数据记录设置对应的清理规则,也即该接收数据查询请求之前,还可以包括:123.获取针对历史数据记录预先设置的预设清理规则;124.基于所述预设清理规则,确定并清理所述历史数据记录中的待清理数据。125.本说明书一个实施例中,引入了undoreservation机制,考量了时间和空间的纬度,预先设置清理规则,阻挡了purge系统的推进,让历史版本数据能够按需保留在undo当中,从而使得用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。126.本实施例一个可选的实施方式中,可以基于空间对历史数据记录中的数据进行清理,也即基于所述预设清理规则,确定并清理所述历史数据记录中的待清理数据,具体实现过程可以如下:127.确定所述历史数据记录中的已占用空间;128.确定所述已占用空间是否超过空间阈值;129.若超过空间阈值,则清理所述历史数据记录中版本标记靠前的预设数值个历史版本信息。130.需要说明的是,预设清理规则可以为基于已占用空间对历史数据记录中的待清理数据进行清理,此时可以先确定历史数据记录中的已占用空间,即历史数据记录中已经记录的历史版本信息所占用的空间,若已占用空间大于空间阈值,说明历史数据记录中存储了过多的历史版本信息,可以清理历史数据记录中版本标记靠前的预设数值个历史版本信息,即优先清理历史数据记录中较旧的历史版本信息。如,用户可以要求只要undo的空间不超过10g,就可以一直保留历史版本信息,那么如果一个数据库在一年内的更新量非常少,则后续通过闪回查询功能,甚至可以找回一年前的历史数据。131.步骤204:获取查询用户标识对应的事务操作记录中包括的目标事务信息行地址。132.需要说明的是,基于查询用户标识可以获取到发起查询请求的用户对应的事务操作记录,然后从事务操作记录中获取目标事务信息行地址,后续基于该目标事务信息行地址可以在事务描述信息表中查找到对应的事务信息。133.本实施例一个可选的实施方式中,用户在发起数据查询请求时,还可以指定要查询的事务操作记录的范围,也即数据查询请求还可以携带查询参数,此时在所述查询用户标识对应的事务操作记录中获取目标事务信息行地址,具体实现过程可以如下:134.获取所述查询用户标识对应的事务操作记录;135.扫描所述事务操作记录,确定所述查询参数对应的目标事务记录;136.比较所述目标事务记录中的版本标记与所述待查询版本标记;137.在所述目标事务记录中的版本标记与所述待查询版本标记不一致的情况下,从所述目标事务记录中获取所述目标事务信息行地址。138.实际应用中,查询参数可以是指用户在发起数据查询请求时指定的、要查询的事务操作记录的范围,如查询参数可以为事务操作记录对应的trxid(事务的唯一标识号)范围,如指定查询参数为trxid为50-100;或者,查询参数还可以为事务操作记录的pk(主键字段)范围,每一个事务操作记录均有唯一的pk,如指定查询参数为pk为x1-x5;又或者,查询参数还可以为事务操作记录的编号范围,如执行查询参数为事务操作记录编号为1-10。139.需要说明的是,数据查询请求中携带有查询参数时,可以先获取查询用户标识对应的所有事务操作记录,然后扫描获取到的各个事务操作记录,确定查询参数对应的目标事务记录,然后可以先比较目标事务记录中的版本标记与待查询版本标记,在目标事务记录中的版本标记与待查询版本标记不一致的情况下,说明确定出的目标事务记录并不是用户想要查询的历史版本信息,因而此时可以从目标事务记录中获取目标事务信息行地址,即目标事务的事务描述信息在事务描述信息表中的存储地址,便于后续继续在事务描述信息表中进行查找,从而借助持久化存储的事务描述信息,查询所需的历史版本信息。140.步骤206:根据目标事务信息行地址,在事务描述信息表中查询对应的参考事务信息,其中,参考事务信息包括版本标记。141.需要说明的是,目标事务信息行地址可以指示目标事务的事务描述信息在事务描述信息表中的存储地址,因而获取到目标事务信息行地址之后,可以根据目标事务信息行地址,在事务描述信息表中查询对应的参考事务信息,该参考事务信息即为目标事务信息行地址在事务描述信息中指示的事务信息行中所记录的事务描述信息,该参考事务信息可以包括版本标记。142.本实施例一个可选的实施方式中,从事务描述信息表中获取到参考事务信息后,还可以判断获取到的参考事务信息是否为用户想要查询的历史版本信息,也即根据所述目标事务信息行地址,在事务描述信息表中查询对应的参考事务信息之后,还可以包括:143.比较所述参考事务信息中的版本标记与所述待查询版本标记;144.在所述参考事务信息中的版本标记与所述待查询版本标记一致的情况下,返回所述参考事务信息。145.需要说明的是,从事务描述信息表中获取到参考事务信息后,可以比较参考事务信息中的版本标记与待查询版本标记,在参考事务信息中的版本标记与待查询版本标记一致的情况下,说明从事务描述信息表中获取到参考事务信息就是用户想要查询的历史版本信息,此时可以直接向用户返回该参考事务信息。146.实际应用中,可以将mysql的视图机制readview升级为vision,丢弃掉readview上用trxid来做可见性判断的机制,而采用事务的版本标记(tcn或事务的提交时间戳)做可见性判断的机制。如此,通过lizard事务系统,可以将事务描述信息(如事务的版本标记,tcn或者事务的提交时间戳等)持久化到transactiontable上,当用户指定了过去的某个版本标记时,可以请求查询数据库中该版本标记的历史版本信息。当该查询请求下发到存储引擎时,可以通过事务操作记录上的tsa字段,找到transactiontable中目标事务的transactionslot,并最终找到该事务操作记录产生时的参考事务信息,通过将参考事务信息中的版本标记与用户提供的待查询版本标记进行简单朴素的比较,即能够判断出该参考考事务信息是否是本次闪回查询所需要的历史版本信息。147.本说明书实施例中,可以接收用户发起的数据查询请求,然后获取该用户对应的事务操作记录中包括的目标事务信息行地址,基于该目标事务信息行地址可以在事务描述信息表中找到对应的参考事务信息,通过简单的比较,确定该参考事务信息是否是该用户查询所需的事务信息,若是,则直接返回该参考事务信息,从而借助持久化存储的事务描述信息,直接基于简单的查询语句,在该事务描述信息表中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,无需依赖、解析日志,节省了构造反向操作的开销,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。148.步骤208:在参考事务信息中的版本标记与待查询版本标记不一致的情况下,在历史数据记录中查找待查询版本标记对应的目标事务信息。149.需要说明的是,在参考事务信息中的版本标记与待查询版本标记不一致的情况下,说明从事务描述信息表中获取到参考事务信息不是用户想要查询的历史版本信息,由于历史数据记录中存储了尽可能多的历史版本信息,因而在参考事务信息中的版本标记与待查询版本标记不一致的情况下,可以继续在历史数据记录中查找待查询版本标记对应的目标事务信息。150.本实施例一个可选的实施方式中,可以沿着历史数据记录的历史链路,向前查找上一个历史版本信息,并确定该历史版本信息是否为用户所需查询的历史版本信息,也即在历史数据记录中查找所述待查询版本标记对应的目标事务信息,具体实现过程可以如下:151.在所述历史数据记录中查找所述参考事务信息的上一个历史版本信息;152.比较所述历史版本信息中的版本标记与所述待查询版本标记是否一致;153.在所述历史版本信息中的版本标记与所述待查询版本标记一致的情况下,将所述历史版本信息作为所述待查询版本标记对应的目标事务信息。154.实际应用中,参考事务信息中可以包括trxid字段,基于trxid字段中记录的事务的唯一标识号,可以通过编程语言中的指针在历史数据记录中查找参考事务信息中trxid的上一个历史版本信息,如基于回滚段指针(rollptr)在历史数据记录中查找参考事务信息的上一个历史版本信息,获取到上一个历史版本信息后,可以继续比较该历史版本信息中的版本标记与待查询版本标记是否一致,在该历史版本信息中的版本标记与待查询版本标记一致的情况下,说明从历史数据记录中获取到的该历史版本信息就是用户想要查询的历史版本信息,此时将该历史版本信息作为待查询版本标记对应的目标事务信息,返回给用户。155.示例的,图3是本说明书一个实施例提供的一种数据查询链路的示意图,如图3所示,用户输入查询语句:select*fromt1asoftcn150,发起闪回查询请求。基于该闪回查询请求中携带的查询参数t1对应的各个事务操作记录(recordformat)中扫描到一行目标事务记录,该目标事务记录中包括“pk,tcn:null,tsa,trx_id:101,rollptr,usercols”,其中,pk表示主键字段,tcn表示事务提交号,null表示无效值,tsa表示事务信息行地址,trx_id表示事务的唯一标识号为101,rollptr表示回滚段指针,usercols表示用户标识。156.由于扫描出的目标事务记录中tcn是无效值,因而通过目标事务记录中的tsa回查事务信息描述表(transactiontable),获取对应的参考事务信息,如图3所示,参考事务信息中tcn=200,并非本次闪回查询所需要的版本tcn=150,因而通过rollptr找到历史数据记录(undopreviousversion)中的上一个历史版本,该历史版本包括“pk,tcn:150,tsa,trx_id:100,rollptr,usercols”,发现查找到的历史版本信息中tcn=150,显然该历史版本信息是本次闪回查询所需要的,返回该历史版本信息给用户。157.本实施例一个可选的实施方式中,在历史版本信息中的版本标记与待查询版本标记不一致的情况下,可以继续沿着历史数据记录的历史链路,依次向前查找上一历史版本信息,并确定是否为用户所需查询的历史版本信息,直至查询到历史数据记录中的最后一个历史版本信息,也即比较所述历史版本信息中的版本标记与所述待查询版本标记是否一致之后,还可以包括:158.在所述历史版本信息中的版本标记与所述待查询版本标记不一致的情况下,将所述历史版本信息作为所述参考事务信息,返回执行所述在所述历史数据记录中查找所述参考事务信息的上一个历史版本信息的操作步骤;159.在所述历史数据记录中最后一个历史版本信息的版本标记与所述待查询版本标记不一致的情况下,返回查询失败提醒。160.实际应用中,在上一个历史版本信息中的版本标记与待查询版本标记不一致的情况下,说明在历史数据记录中查询到的上一个历史版本信息也不是用户所需查询的历史版本信息,因而可以将该上一个历史版本信息作为参考事务信息,返回执行在历史数据记录中查找参考事务信息的上一个历史版本信息的操作步骤,并比较查找到的历史版本信息中的版本标记与待查询版本标记是否一致,直至历史数据记录中最后一个历史版本信息的版本标记与待查询版本标记不一致的情况下,返回查询失败提醒。161.需要说明的是,闪回查询不总是能够从历史数据记录中查找到用户所需的历史版本信息,如果闪回查询想要查询的历史版本信息已经被purge系统清理掉,则无法查询到用户所需的历史版本信息,此时可以向用户返回查询失败提醒,如“snapshottooold”错误提醒。162.沿用上例,如图3所示,假设用户输入查询语句:select*fromt1asoftcn60,发起闪回查询请求。沿着历史数据记录(undopreviousversion)中的历史版本链路也没有查找到该查询请求想要查询的历史版本信息,则说明该历史版本信息已经被purge系统清理掉,此时返回“error:snapshottooold”错误。163.本说明书一个实施例提供了一种数据查询方法,可以接收用户发起数据查询请求,然后获取该用户对应的事务操作记录中包括的目标事务信息行地址,基于该目标事务信息行地址可以在事务描述信息表中找到对应的事务信息,通过简单的比较,确定该事务信息是否是该用户查询所需的事务信息,若不是,则可以进一步回溯历史数据记录,在历史数据记录中查找该用户所需的历史版本数据的相关事务信息。如此,可以将目标事务的事务描述信息持久化保存至事务描述信息表中,后续可以借助持久化存储的事务描述信息,以及历史数据记录中保留的历史版本信息,直接基于简单的查询语句,在该事务描述信息表和历史数据记录中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,无需依赖、解析日志,节省了构造反向操作的开销,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。164.与上述方法实施例相对应,本说明书还提供了数据存储装置实施例,图4示出了本说明书一个实施例提供的一种数据存储装置的结构示意图。如图4所示,该装置包括:165.第一接收模块402,被配置为接收目标事务的启动请求,其中,所述目标事务为针对目标数据进行数据操作的操作集;166.记录模块404,被配置为响应于所述启动请求,在事务描述信息表中为所述目标事务分配对应的事务信息行,并将所述事务信息行的地址记录在事务操作记录中,其中,所述事务操作记录为针对所述目标事务包括的各个数据操作生成的记录;167.回填模块406,被配置为响应于所述目标事务的提交操作,将所述目标事务的事务描述信息回填至所述事务信息行。168.可选的,记录模块404进一步被配置为:169.针对所述目标事务包括的各个数据操作,生成对应的事务操作记录;170.在所述事务操作记录中增加地址字段,其中,所述地址字段用于记录所述目标事务在所述事务描述信息表中对应的事务信息行的地址。171.可选的,该数据存储装置还包括清理模块,被配置为:172.获取针对历史数据记录预先设置的预设清理规则;173.基于所述预设清理规则,确定并清理所述历史数据记录中的待清理数据。174.可选的,清理模块进一步被配置为:175.确定所述历史数据记录中的已占用空间;176.确定所述已占用空间是否超过空间阈值;177.若超过空间阈值,则清理所述历史数据记录中版本标记靠前的预设数值个历史版本信息。178.本说明书一个实施例提供了一种数据存储装置,可以将目标事务的事务描述信息持久化保存至事务描述信息表中,后续可以借助持久化存储的事务描述信息,以及历史数据记录中保留的历史版本信息,直接基于简单的查询语句,在该事务描述信息表和历史数据记录中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,无需依赖、解析日志,节省了构造反向操作的开销,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。179.上述为本实施例的一种数据存储装置的示意性方案。需要说明的是,该数据存储装置的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储装置的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。180.与上述方法实施例相对应,本说明书还提供了数据查询装置实施例,图5示出了本说明书一个实施例提供的一种数据查询装置的结构示意图。如图5所示,该装置包括:181.第二接收模块502,被配置为接收数据查询请求,其中,所述数据查询请求携带查询用户标识和待查询版本标记;182.获取模块504,被配置为获取所述查询用户标识对应的事务操作记录中包括的目标事务信息行地址;183.查询模块506,被配置为根据所述目标事务信息行地址,在事务描述信息表中查询对应的参考事务信息,其中,所述参考事务信息包括版本标记;184.查找模块508,被配置为在所述参考事务信息中的版本标记与所述待查询版本标记不一致的情况下,在历史数据记录中查找所述待查询版本标记对应的目标事务信息。185.可选的,所述数据查询请求还携带查询参数;获取模块504进一步被配置为:186.获取所述查询用户标识对应的事务操作记录;187.扫描所述事务操作记录,确定所述查询参数对应的目标事务记录;188.比较所述目标事务记录中的版本标记与所述待查询版本标记;189.在所述目标事务记录中的版本标记与所述待查询版本标记不一致的情况下,从所述目标事务记录中获取所述目标事务信息行地址。190.可选的,查找模块508进一步被配置为:191.在所述历史数据记录中查找所述参考事务信息的上一个历史版本信息;192.比较所述历史版本信息中的版本标记与所述待查询版本标记是否一致;193.在所述历史版本信息中的版本标记与所述待查询版本标记一致的情况下,将所述历史版本信息作为所述待查询版本标记对应的目标事务信息。194.可选的,查找模块508进一步被配置为:195.在所述历史版本信息中的版本标记与所述待查询版本标记不一致的情况下,将所述历史版本信息作为所述参考事务信息,返回执行所述在所述历史数据记录中查找所述参考事务信息的上一个历史版本信息的操作步骤;196.在所述历史数据记录中最后一个历史版本信息的版本标记与所述待查询版本标记不一致的情况下,返回查询失败提醒。197.可选的,该数据查询装置还包括返回模块,被配置为:198.比较所述参考事务信息中的版本标记与所述待查询版本标记;199.在所述参考事务信息中的版本标记与所述待查询版本标记一致的情况下,返回所述参考事务信息。200.可选的,该数据查询装置还包括响应模块,被配置为:201.接收目标事务的启动请求,其中,所述目标事务为针对目标数据进行数据操作的操作集;202.响应于所述启动请求,在事务描述信息表中为所述目标事务分配对应的事务信息行,并将所述事务信息行的地址记录在事务操作记录中,其中,所述事务操作记录为针对所述目标事务包括的各个数据操作生成的记录;203.响应于所述目标事务的提交操作,将所述目标事务的事务描述信息回填至所述事务信息行。204.可选的,响应模块进一步被配置为:205.针对所述目标事务包括的各个数据操作,生成对应的事务操作记录;206.在所述事务操作记录中增加地址字段,其中,所述地址字段用于记录所述目标事务在所述事务描述信息表中对应的事务信息行的地址。207.可选的,该数据查询装置还包括清理模块,被配置为:208.获取针对历史数据记录预先设置的预设清理规则;209.基于所述预设清理规则,确定并清理所述历史数据记录中的待清理数据。210.可选的,清理模块进一步被配置为:211.确定所述历史数据记录中的已占用空间;212.确定所述已占用空间是否超过空间阈值;213.若超过空间阈值,则清理所述历史数据记录中版本标记靠前的预设数值个历史版本信息。214.本说明书一个实施例提供了一种数据查询装置,可以接收用户发起数据查询请求,然后获取该用户对应的事务操作记录中包括的目标事务信息行地址,基于该目标事务信息行地址可以在事务描述信息表中找到对应的事务信息,通过简单的比较,确定该事务信息是否是该用户查询所需的事务信息,若不是,则可以进一步回溯历史数据记录,在历史数据记录中查找该用户所需的历史版本数据的相关事务信息。如此,可以将目标事务的事务描述信息持久化保存至事务描述信息表中,后续可以借助持久化存储的事务描述信息,以及历史数据记录中保留的历史版本信息,直接基于简单的查询语句,在该事务描述信息表和历史数据记录中查询所需的历史版本数据的相关事务信息,在用户进行了误操作的情况下,可以快速查询到准确的历史版本信息以进行恢复,无需依赖、解析日志,节省了构造反向操作的开销,大大降低了使用的复杂度,让用户更好地使用和管理数据库,不用担心因为误操作而带来的数据损坏,提升了数据库的产品力。215.上述为本实施例的一种数据查询装置的示意性方案。需要说明的是,该数据查询装置的技术方案与上述的数据查询方法的技术方案属于同一构思,数据查询装置的技术方案未详细描述的细节内容,均可以参见上述数据查询方法的技术方案的描述。216.图6示出了根据本说明书一个实施例提供的一种计算设备的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。217.计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。218.在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。219.计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备600还可以是移动式或静止式的服务器。220.其中,处理器620用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法或者数据查询方法的步骤。221.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据存储方法或者数据查询方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据存储方法或者数据查询方法的技术方案的描述。222.本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法或者数据查询方法的步骤。223.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据存储方法或者数据查询方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据存储方法或者数据查询方法的技术方案的描述。224.本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据存储方法或者数据查询方法的步骤。225.上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的数据存储方法或者数据查询方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述数据存储方法或者数据查询方法的技术方案的描述。226.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。227.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。228.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。229.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。230.以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属
技术领域
:技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献