一种数据处理方法、装置及设备与流程

文档序号:28264955发布日期:2021-12-31 18:05阅读:51来源:国知局
1.本技术涉及计算机处理技术,具体涉及一种数据处理方法、装置及设备。
背景技术
::2.在数据库使用中,数据库事务(简称为事务)是访问并可能操作各种数据项的操作序列,该事务所包括的操作要么全部执行,要么全部不执行。通常情况下,一个事务针对同一条数据进行多次操作,或者,一个事务中多次操作数据库中不同的数据。而针对数据的多次操作,将使得系统与数据库进行多次交互,不仅增加数据库交互压力,还增加了事务处理时长。技术实现要素:3.有鉴于此,本技术实施例提供一种数据处理方法、装置及设备,以降低与数据库的交互次数,降低数据库的处理压力。4.为解决上述问题,本技术实施例提供的技术方案如下:5.在本技术实施例第一方面,提供了一种数据处理方法,所述方法包括:6.响应于第一事务的开始,建立所述第一事务对应的第一事务缓存;7.响应于所述第一事务中的首次查询操作,获取数据库的版本号以及第一数据,所述数据库的版本号用于指示所述第一事务开始的时刻所述数据库中各数据的状态;8.将所述第一数据缓存至所述第一事务缓存中;9.根据所述第一事务中针对所述第一数据的操作请求,对所述第一事务缓存中的所述第一数据进行操作,获得操作结果,所述操作请求包括插入、修改、删除和查询;10.响应于所述第一事务的结束,根据所述第一事务缓存中的操作结果以及所述数据库的版本号,向所述数据库进行事务提交。11.在本技术实施例第二方面,提供了一种数据处理装置,所述装置包括:12.建立单元,用于响应于第一事务的开始,建立所述第一事务对应的第一事务缓存;13.第一获取单元,用于响应于所述第一事务中的首次查询操作,获取数据库的版本号以及第一数据,所述数据库的版本号用于指示所述第一事务开始的时刻所述数据库中各数据的状态;14.缓存单元,用于将所述第一数据缓存至所述第一事务缓存中;15.第二获取单元,用于根据所述第一事务中针对所述第一数据的操作请求,对所述第一事务缓存中的所述第一数据进行操作,获得操作结果,所述操作请求包括插入、修改、删除和查询;16.提交单元,用于响应于所述第一事务的结束,根据所述第一事务缓存中的操作结果以及所述数据库的版本号,向所述数据库进行事务提交。17.在本技术实施例第三方面,提供了一种电子设备,所述设备包括:处理器和存储器;18.所述存储器,用于存储指令或计算机程序;19.所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行第一方面所述的数据处理方法。20.在本技术实施例第四方面,提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上第一方面所述的数据处理方法。21.由此可见,本技术实施例具有如下有益效果:22.本技术实施例提供的技术方案,在针对数据库进行操作时,针对数据库的事务,即第一事务,建立该第一事务所对应的第一事务缓存。在从数据库中获取操作的第一数据时,获取该数据库的版本号,同时将获取的第一数据缓存至第一事务缓存中。当需要针对第一数据进行操作时,将根据第一事务所指示的操作对第一事务缓存中的第一数据进行相应的操作,例如进行修改、删除等操作。再执行完第一事务所指示的所有操作后,根据第一事务缓存中的操作结果以及数据库的版本号,向数据库进行事务提交。其中,数据库的版本号用于指示第一事务开始的时刻数据库中各数据的状态。即,针对第一事务中的所有操作,均在系统侧的第一事务缓存中进行,在第一事务结束时,一次性向数据库完成事务的提交,减少系统与数据库的交互,从而降低数据库的处理压力。附图说明23.图1为本技术实施例提供的一种数据处理方法流程图;24.图2a为本技术实施例提供的一种数据处理场景示意图;25.图2b为本技术实施例提供的另一种数据处理场景示意图;26.图2c为本技术实施例提供的又一种数据处理场景示意图;27.图2d为本技术实施例提供的又一种数据处理场景示意图;28.图3为本技术实施例提供的一种事务提交示意图;29.图4为本技术实施例提供的一种数据处理示意图;30.图5为本技术实施例提供的一种数据处理装置结构图;31.图6为本技术实施例提供的一种电子设备结构示意图。具体实施方式32.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术实施例作进一步详细的说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,并非对本技术的限定。另外,还需要说明的是,为便于描述,附图中仅示出了与本技术相关的部分,并非全部结构。33.在对传统的数据库处理方案研究中发现,系统在对数据库的数据进行操作时,需要与数据库进行多次交互。例如,一个事务中针对同一条数据进行增加、删除、修改等操作时,每次操作均需要与数据库进行通信。该种处理方式将增加数据库处理压力,同时导致处理延时较大。34.基于此,本技术实施例提供了一种数据处理方法,通过增加事务缓存的方式,减少系统与数据库之间的交互。具体为,在事务开始时,可以从数据库获取数据,并将该数据存储到事务缓存中。对于事务所指示的更新操作,例如插入、修改和删除,均在事务缓存中进行,不再与数据库进行交互。当事务结束后,将针对该数据的所有更新操作合并成一次修改,向数据库进行提交。即,针对事务中的多项操作只进行一次提交操作,降低与数据库交互所带来的耗时,同时降低数据库的处理压力。35.为便于理解本技术实施例所提出的技术方案,下面将先对本技术所涉及的技术术语进行说明。36.数据库事务是构成单一逻辑工作单元的操作集合,事务使系统能够更方便的进行故障恢复以及并发控制,从而保证数据库状态的一致性。数据库事务拥有以下4个特性,简称为acid特性:37.原子性(atomicity):事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败。38.一致性(consistency):事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态。一致性状态是指:系统的状态满足数据的完整性约束;系统的状态反应数据库本应描述的现实世界的真实状态,例如转账前后两个账户的金额总和应该保持不变。39.隔离性(isolation):并发执行的事务不会相互影响,其对数据库的影响和它们串行执行时一样。比如多个用户同时往一个账户转账,最后账户的结果应该和他们按先后次序转账的结果一样。40.持久性(durability):事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。41.在事务的acid特性中,一致性是事务的根本追求,而对数据一致性的破坏主要来自两个方面,一方面是,事务的并发执行;另一方面是,事务故障或系统故障。数据库系统是通过并发控制技术和日志恢复技术来避免这种情况发生的。并发控制技术保证了事务的隔离性,使数据库的一致性状态不会因为并发执行的操作被破坏。日志恢复技术保证了事务的原子性,使一致性状态不会因事务或系统故障被破坏。同时使已提交的对数据库的修改不会因系统崩溃而丢失,保证了事务的持久性。42.为便于理解数据库事务的特点,以转账为例进行说明。比如从a账户转账100元到b账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:1.将a账户的金额减少100元;2.将b账户的金额增加100元。在这个过程中可能会出现以下问题:转账操作的第一步执行成功,a账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致b账户并没有相应增加100元。为解决上述问题,可以将转账相关的所有操作包含在一个事务中。当数据库操作失败或者系统出现崩溃,系统能够以事务为边界进行恢复,不会出现a账户金额减少而b账户未增加的情况。当有多个用户同时操作数据库时,数据库能够以事务为单位进行并发控制,使多个用户对b账户的转账操作相互隔离。43.数据库的事务隔离级别一共有四个,分别是读未提交、读已提交、可重复读以及可串行化,隔离级别依次增加。隔离级别的作用就是让事务之间互相隔离,互不影响,这样可以保证事务的一致性。而且隔离级别越高,所需要消耗的数据库性能越大(如事务并发严重性),为了平衡二者,一般建议设置的隔离级别为可重复读,数据库默认的隔离级别也是可重复读。44.其中,快照隔离(snapshotisolation,si)是数据库事务处理中的一个隔离级别,保证事务的读操作将看到一个一致的数据库的版本快照(实际上读取比该事务早的最后一次提交值)。快照隔离是一个用于多版本并发的控制算法,它提供了隔离级别,从而避免了在并发时经常出现的问题。45.快照隔离解决了不可重复读(unrepeatableread)和写丢失(lostupdate)的问题。它的思路是在一个事务执行过程中,数据库为该事务展示一个数据库在某个时间点的快照,这个快照包含了这个时间点之前所有提交的事务的执行结果。这样事务读取到的数据一定是一致的,解决不可重复读的问题。除此之外,为了解决写丢失的问题,每一个事务在提交之前,会检查自己修改的数据是否在提交之前被其他已经提交的事务修改了。如果已经被修改了,当前事务就必须被丢弃。46.快照隔离为同一份数据维护多个版本。当一个事务开始时为它分配一个时间戳tstart*,这个事务的所有读取操作只会读这个时间戳之前的版本的数据,以此来达到快照的效果。同时,每一个事务会维护它修改的数据集合。在提交之前会分配一个时间戳*tcommit*,然后判断所有修改集合中的数据是否被提交时间在*(tstart,tcommit)区间内的事务修改,如果没有才可以提交。需要说明的是,上述的时间戳是单调递增的逻辑时间戳。47.基于上述描述,下面将集合附图对本技术实施例提供的数据处理方法进行说明。48.参见图1,该图为本技术实施例提供的一种数据处理方法流程图,如图1所示,该方法可以包括:49.s101:响应于第一事务的开始,建立第一事务对应的第一事务缓存。50.在针对数据库操作的第一事务开始时,为该第一事务创建其对应的事务缓存,即第一事务缓存。其中,第一事务缓存用于存储第一事务所指示的各种操作所对应的对象,即从数据库中读取的数据,或者新插入的数据等。其中,第一事务缓存是指在业务系统侧的缓存。51.在一种具体的实现方式中,当存在针对同一数据库的第二事务时,建立该第二事务所对应的第二事务缓存,该第二事务缓存与第一事务缓存完全隔离。其中,第二事务缓存用于存储第二事务所指示的各项操作所对应的操作对象,该操作对象可以为从数据库读取的数据,或者新插入的数据。52.需要说明的是,本实施例中,当业务系统需要对数据库中的数据进行一系列操作时,针对该系列操作所对应的事务,在业务系统侧创建该事务所对应的事务缓存,以便利用该事务缓存存储该事务所对应的操作对象。53.s102:响应于第一事务中的首次查询操作,获取数据库的版本号以及第一数据。54.本实施例中,在执行第一事务所指示的各种操作请求之前,将根据第一事务所操作数据(第一数据)的标识在第一事务缓存中进行查询,由于第一事务缓存刚建立完成,其并未缓存任何数据,因此,业务系统需要根据第一数据的数据标识去数据库中查询,在数据库中存在第一数据时,则从数据库中获取所需的第一数据。同时,在业务系统针对第一事务对数据库进行首次查询时,还可以获取数据库的版本号,即快照序号。该数据库的版本号用于指示第一事务开始的时刻数据库中各数据的状态。其中,数据库的版本号可以为时间戳,即第一事务开始时,数据库的时间戳,通过该时间戳可以获知在第一事务开始时,数据库中各个数据的状态。55.需要说明的是,第一事务可以是业务系统针对数据库中的一条数据进行多次操作,例如第一事务为针对第一条数据进行修改、删除、查询等操作,也可以是业务系统针对数据库中的多条数据进行多次操作,例如第一事务为针对第一条数据和第二条数据分别进行修改、删除等操作。56.在一种具体的实现方式中,响应于第一事务还需要对第二数据进行操作,则根据首次查询所获取的数据库的版本号以及第二数据标识,从数据库中获取第二数据;将第二数据缓存至第一事务缓存中。本实施例中,在从数据库中获取第二数据时将利用数据库的版本号,目的是为了保证整个第一事务的所有操作都是基于同一时刻的数据库。例如,第一事务首次查询所获取的数据库的版本号为20210915‑10:38,并获取该版本号下的第一数据,当业务系统在11:10时刻再次获取第一事务所操作的第二数据时,将根据上述版本号获取数据库在20210915‑10:38时刻的第二数据。57.s103:将第一数据缓存至第一事务缓存中。58.将从数据库获取到的第一数据缓存至第一事务缓存中,以便在针对第一数据的各项操作时,均在第一事务缓存中进行。59.s104:根据第一事务中针对第一数据的操作请求,对第一事务缓存中的第一数据进行操作,获得操作结果。60.由于第一事务可以包括一系列操作请求,在将第一数据缓存至第一事务缓存中,可以根据第一事务所指示的针对第一数据的操作请求,对第一事务缓存中的第一数据进行操作,获得操作结果。其中,操作请求可以包括插入、修改、删除和查询等操作,将插入、修改和删除所对应的操作统称为更新操作。61.需要说明的是,在执行第一事务所指示的任何操作请求时,均先执行查询操作,以便在第一事务缓存中未有操作对象时,从数据库中读取并缓存至第一事务缓存。如果第一事务缓存中存在该操作对象,则对该操作对象执行相应的操作。62.其中,针对于同一条数据,第一事务所指示的各项操作和执行顺序均可以记录在第一事务缓存中,业务系统可以根据操作顺序对第一数据进行处理。具体地,可以分为以下情况:63.一种情况是,与当前操作请求相邻的上一次操作请求为查询操作时,在当前操作请求为查询操作、修改操作、删除操作以及插入操作时,业务系统的处理情况如下。需要说明的是,上一次操作请求为查询操作时,其可以为查询数据库或查询第一事务缓存,而且,查询结果可以为存在第一数据,或不存在第一数据。当上一次查询操作为从数据库查询时,将从数据库中获取该第一数据,并将该第一数据缓存在第一事务缓存中。为便于理解,下述描述将以第一事务缓存中存在第一数据进行说明。64.参见图2a所示的处理框架图,响应于当前操作请求为查询操作,从第一事务缓存中获取第一数据。响应于当前操作请求为修改操作,对第一事务缓存中的第一数据进行修改。响应于当前操作请求为删除操作,将第一事务缓存中第一数据的状态标记为删除状态。响应于当前操作请求为插入操作,提示数据已存在。也就是,在当前操作为插入操作时,由于第一数据已经存在,则插入失败,提示数据已存在。例如,第一事务缓存中已存在用户1的用户信息,当前操作请求为插入用户1的用户信息,则提示数据已存在。65.一种情况是,与当前操作请求相邻的上一次操作请求为修改操作时,在当前操作请求为查询操作、修改操作、删除操作以及插入操作时,业务系统的处理情况如下。66.参见图2b所示的处理框架图,响应于当前操作请求为查询操作,从第一事务缓存中获取修改后的第一数据。例如,上次操作修改了用户1对应的用户信息中地址信息,则再次查询时,从第一事务缓存中获取的是经过修改的用户1的用户信息。响应于当前操作请求为修改操作,对第一事务缓存中的修改后的第一数据进行修改。例如,上次操作修改了用户1对应的用户信息中的地址信息,则再次修改对用户信息中的电话号码进行了修改。响应于当前操作请求为删除操作,将第一事务缓存中修改后的第一数据的状态标记为删除状态。响应于当前操作请求为插入操作,提示数据已存在。由于上一次操作为修改操作,可以表明在第一事务缓存中已经存在该第一数据,则无需重复插入,提示数据已存在,插入失败。67.一种情况是,与当前操作请求相邻的上一次操作请求为删除操作时,在当前操作请求为查询操作、修改操作、删除操作以及插入操作时,业务系统的处理情况如下。68.参见图2c所示的处理框架图,由于上一次操作为删除操作,则说明第一事务缓存中第一数据的状态为删除状态,则当前操作请求为查询操作、修改操作或删除操作中的任一种时,均提示数据不存在。69.响应于当前操作请求为插入操作,则在第一事务缓存中插入第三数据,该第三数据的数据标识与第一数据的数据标识相同。例如,上一次删除操作将第一事务缓存中用户1对应的用户信息删除,所删除的用户信息中地址信息为a,电话号码为b1。在进行插入时,所插入的用户1的用户信息中地址信息为a,电话号码为b1,或者所插入的用户1的用户信息中地址信息为a,电话号码为b2。70.一种情况是,与当前操作请求相邻的上一次操作请求为插入操作时,在当前操作请求为查询操作、修改操作、删除操作以及插入操作时,业务系统的处理情况如下。71.参见图2d所示的处理框架图,响应于当前操作请求为查询操作,从第一事务缓存中获取第四数据。其中,第四数据的数据标识和第一数据的数据标识相同。具体地,第四数据为上一次插入操作所插入到第一事务缓存中的数据,在情况下,业务系统先从第一事务缓存中删除第一数据,再插入第四数据。或者,第四数据等于第一数据,该情况下,在进行上一次插入操作之前未执行删除操作,使得第一事务缓存中一直存在第一数据,从而使得上一次插入操作未插入成功。响应于当前操作请求为修改操作时,对第一事务缓存中的第四数据进行修改。响应于当前操作请求为删除操作时,将第一事务缓存中的第四数据的状态标记为删除状态。响应于当前操作请求为插入操作时,提示数据已存在。72.s105:响应于第一事务的结束,根据第一事务缓存中的操作结果以及数据库的版本号,向数据库进行事务提交。73.本实施例中,当针对第一数据的所有操作执行完成后,将针对第一数据的所有操作的操作结果合并成一次更新,将所有操作的记录向数据库进行事务提交。同时,向数据库发送执行第一事务所对应的数据库的版本号,以便数据库根据该版本号以及第一事务所对应的操作记录进行数据更新。其中,数据库基于版本号所进行的事务提交,可能会出现提交失败的情况,如果提交失败,则数据库将自行回滚所有事务的操作结果,无需业务系统参与。74.在一种具体的实现方式中,如果第一事务所指示的操作请求仅包括查询时,则业务系统无需进行事务提交,从而减少交互流程。如果第一事务所指示的操作请求中包括插入操作、修改操作或删除操作中的任意一种或多种,则业务系统将根据第一事务缓存中的操作结果以及数据库的版本号,向数据库进行事务提交。75.在一种具体的实现方式中,响应于对第一事务进行回滚,删除第一事务缓存中的数据。即,业务系统下处理完数据或因异常情况进行回滚时,只需删除第一事务缓存中的数据,无需和数据库,数据库无感知,减少数据库的处理压力。76.可见,在针对数据库进行操作时,针对数据库的事务,即第一事务,建立该第一事务所对应的第一事务缓存。在从数据库中获取操作的第一数据时,获取该数据库的版本号,同时将获取的第一数据缓存至第一事务缓存中。当需要针对第一数据进行操作时,将根据第一事务所指示的操作对第一事务缓存中的第一数据进行相应的操作,例如进行修改、删除等操作。即针对第一事务的操作均在第一事务缓存中生效。在执行完第一事务所指示的所有操作后,根据第一事务缓存中的操作结果以及数据库的版本号,向数据库进行事务提交。其中,数据库的版本号用于指示第一事务开始的时刻数据库中各数据的状态。即,针对第一事务中的所有操作,均在系统侧的第一事务缓存中进行,在第一事务结束时,一次性向数据库完成事务的提交,减少系统与数据库的交互,从而降低数据库的处理压力。77.针对事务提交过程,将分为以下几种情况进行说明,参见图3所示的事务提交流程图,如图3所示,将分为两种情况,一种是,第一事务开始时,数据库中存在第一数据;另一种是,第一事务开始时,数据库不存在第一数据。78.(一)第一事务开始时,数据库中存在第一数据79.如果第一事务所指示的操作请求中仅包括查询操作,则无需向数据库提交对于第一数据的操作。80.如果第一事务所指示的操作请求中仅包括查询操作和修改操作,则向数据库提交修改操作对应的操作结果。81.如果第一事务所指示的操作请求中不仅有查询操作和修改操作,则需要根据第一事务中针对第一数据的最后一次非查询操作进行适应的提交。当最后一次非查询操作为修改操作时,则向数据库提交修改操作对应的操作结果。当最后一次非查询操作为插入操作时,则向数据库调教插入操作对应的操作结果。82.(二)第一事务开始时,数据库不存在第一数据83.如果第一事务所指示的操作请求中仅包括查询请求,则无需向数据库进行事务提交。84.如果第一事务所指示的操作请求中最后一次非查询操作为删除操作时,则无需向数据库进行事务提交。85.如果第一事务所指示的操作请求中最后一次非查询操作为插入操作,则向数据库提交插入操作对应的操作结果。86.需要说明的是,图3所示的实例仅针对第一事务中关于第一数据的处理,当第一事务中针对多条数据时,针对每一条数据均可以执行图3所示的处理过程。87.为便于理解本技术实施例的具体实现,参见图4所述的数据处理框架图,在第一事务开始时,业务系统基于第一事务所指示的操作集合,按照操作顺序在第一事务缓存中查询第一数据,如果在第一事务缓存中未查到第一数据,则从数据库中查询第一数据,并将该第一数据缓存在第一事务缓存中。在执行后续的更新操作时,可以对第一事务缓存中的第一数据进行更新操作,第一事务缓存将记录更新操作的操作结果。在执行完第一事务中,判断是否提交事务,如果是,则从第一事务缓存中获取各操作的操作结果,向数据库进行提交。如果不进行事务提交,则执行事务回滚操作,删除第一事务缓存中的相关数据。88.基于上述方法实施例,本技术实施例提供了一种数据处理装置,下面将结合附图对该装置进行说明。89.参见图5,该图为本技术实施例提供的一种数据处理装置结构图,如图5所示,该装置500可以包括:建立单元501、第一获取单元502、缓存单元503、第二获取单元504和提交单元505。90.建立单元501,用于响应于第一事务的开始,建立所述第一事务对应的第一事务缓存;91.第一获取单元502,用于响应于所述第一事务中的首次查询操作,获取数据库的版本号以及第一数据,所述数据库的版本号用于指示所述第一事务开始的时刻所述数据库中各数据的状态;92.缓存单元503,用于将所述第一数据缓存至所述第一事务缓存中;93.第二获取单元504,用于根据所述第一事务中针对所述第一数据的操作请求,对所述第一事务缓存中的所述第一数据进行操作,获得操作结果,所述操作请求包括插入、修改、删除和查询;94.提交单元505,用于响应于所述第一事务的结束,根据所述第一事务缓存中的操作结果以及所述数据库的版本号,向所述数据库进行事务提交。95.在一种具体的实现方式中,所述第一获取单元,还用于响应于所述第一事务中对第二数据进行操作,根据所述数据库的版本号以及所述第二数据的数据标识,从所述数据库中获取所述第二数据,所述第二数据的数据标识与所述第一数据的数据标识不同;96.所述缓存单元,还用于将所述第二数据缓存至所述第一事务缓存中。97.在一种具体的实现方式中,所述装置还包括:删除单元;98.所述删除单元,用于在向所述数据库进行事务提交之前,响应于对所述第一事务进行回滚,删除所述第一事务缓存中的数据。99.在一种具体的实现方式中,所述建立单元,还用于响应于第二事务的开始,建立所述第二事务对应的第二事务缓存,所述第一事务缓存与所述第二事务缓存完全隔离。100.在一种具体的实现方式中,所述第二获取单元,具体用于响应于与当前操作请求相邻的上一次操作请求为查询操作且所述当前操作请求为所述查询操作,从所述第一事务缓存中获取所述第一数据;和/或,响应于与当前操作请求相邻的上一次操作请求为查询操作且所述当前操作请求为修改操作,对所述第一事务缓存中的所述第一数据进行修改;和/或,响应于与当前操作请求相邻的上一次操作请求为查询操作且所述当前操作请求为删除操作,将所述第一事务缓存中的所述第一数据的状态标记为删除状态;和/或,响应于与当前操作请求相邻的上一次操作请求为查询操作且所述当前操作请求为插入操作,提示数据已存在。101.在一种具体的实现方式中,所述第二获取单元,具体用于响应于与当前操作请求相邻的上一次操作请求为修改操作且所述当前操作请求为查询操作,从所述第一事务缓存中获取修改后的第一数据;和/或,响应于与当前操作请求相邻的上一次操作请求为修改操作且所述当前操作请求为所述修改操作,对所述第一事务缓存中的修改后的第一数据进行修改;和/或,响应于与当前操作请求相邻的上一次操作请求为修改操作且所述当前操作请求为删除操作,将所述第一事务缓存中修改后的第一数据的状态标记为删除状态;响应于与当前操作请求相邻的上一次操作请求为修改操作且所述当前操作请求为插入操作,提示数据已存在。102.在一种具体的实现方式中,所述第二获取单元,具体用于响应于与当前操作请求相邻的上一次操作请求为删除操作且所述当前操作请求为查询操作、修改操作或删除操作中任一种,提示数据不存在;和/或,响应于与当前操作请求相邻的上一次操作请求为删除操作且所述当前操作请求为插入操作,在所述第一事务缓存中插入第三数据,所述第一数据的数据标识与所述第三数据的数据标识相同。103.在一种具体的实现方式中,所述第二获取单元,具体用于响应于与当前操作请求相邻的上一次操作请求为插入操作且所述当前操作请求为查询操作时,从所述第一事务缓存中获取第四数据,所述第四数据的数据标识与所述第一数据的数据标识相同;和/或,响应于与当前操作请求相邻的上一次操作请求为插入操作且所述当前操作请求为修改操作时,对所述第一事务缓存中的所述第四数据进行修改;和/或,响应于与当前操作请求相邻的上一次操作请求为插入操作且所述当前操作请求为删除操作时,将所述第一事务缓存中的所述第四数据的状态标记为删除状态;和/或,响应于与当前操作请求相邻的上一次操作请求为插入操作且所述当前操作请求为插入操作时,提示数据已存在。104.在一种具体的实现方式中,所述提交单元,具体用于响应于所述第一事务中针对所述第一数据的操作请求至少包括插入、修改和删除中一种,根据所述第一事务缓存中的操作结果以及所述数据库的版本号,向所述数据库进行事务提交。105.在一种具体的实现方式中,所述第一获取单元,具体用于根据第一次查询操作中的第一数据的标识从所述数据库中获取第一数据。106.需要说明的是,本实施例中各个单元的实现可以参见上述方法实施例中相应描述,本实施例在此不再赘述。107.下面参考图6,其示出了适于用来实现本技术实施例的电子设备600的结构示意图。本技术实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(personaldigitalassistant,个人数字助理)、pad(portableandroiddevice,平板电脑)、pmp(portablemediaplayer,便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv(television,电视机)、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。108.如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储装置608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。109.通常,以下装置可以连接至i/o接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然6图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。110.特别地,根据本技术的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从rom602被安装。在该计算机程序被处理装置601执行时,执行本技术实施例的方法中限定的上述功能。111.本技术实施例提供的电子设备与上述实施例提供的数据处理方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。112.本技术实施例提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如上述任一实施例所述的数据处理方法。113.需要说明的是,本技术上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd‑rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。114.在一些实施方式中,客户端、服务器可以利用诸如http(hypertexttransferprotocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,adhoc端对端网络),以及任何当前已知或未来研发的网络。115.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。116.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述数据处理方法。117.可以以一种或多种程序设计语言或其组合来编写用于执行本技术的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。118.附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。119.描述于本技术实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元/模块的名称在某种情况下并不构成对该单元本身的限定,例如,语音数据采集模块还可以被描述为“数据采集模块”。120.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。121.在本技术的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd‑rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。122.需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。123.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。124.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。125.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1