分布式异构数据库数据处理方法及装置与流程

文档序号:19879334发布日期:2020-02-08 06:48阅读:134来源:国知局
分布式异构数据库数据处理方法及装置与流程

本发明实施例涉及数据库技术领域,具体涉及一种分布式异构数据库数据处理方法及装置。



背景技术:

异构数据库即多个数据库的集合,其中每个数据库具有自身的自治性,其可以是相同数据模型的多个数据库,也可以为不同数据模型的数据库。异构数据库的各数据库间要实现数据一致性时,现有技术一般采用如xa协议(x/opendtp组织定义的两阶段提交协议,采用两阶段提交方式来管理分布式事务),或者tcc分布式事务、base柔性事务方式等二阶段事务来实现数据的一致性。但采用以上任一种两阶段事务,存在以下问题:

1)需要进行大量的编码处理,编码成本过高的问题。如采用tcc分布事务,当数据更新链路较长时,异构数据库发生数据更新不一致的问题,整个上下游均需要编码实现回滚。

2)仍然可能存在事务不一致的问题。如base柔性事务会存在正向数据更新重试时失败,导致异构数据库最终仍无法达成一致性。xa协议也无法完全避免第二阶段时更新数据库的节点发生异常,导致事务不一致。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的分布式异构数据库数据处理方法及装置。

根据本发明实施例的一个方面,提供了一种分布式异构数据库数据处理方法,其包括:

接收数据更新发起方的数据更新请求,启动数据更新协同事务;

根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并获取各个数据库对应的预更新结果;

判断各个数据库的预更新结果中任一数据库的预更新结果是否为更新失败;

若是,获取预更新结果为更新失败的数据库提供的未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据;

关闭数据更新协同事务。

可选地,获取预更新结果为更新失败的数据库中未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据进一步包括:

获取预更新结果为更新失败的数据库中未更新数据;

对未更新数据进行异构数据模型转换处理,得到符合预更新结果为更新成功的数据库的数据类型的未更新数据;

利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据。

可选地,获取预更新结果为更新失败的数据库中未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据进一步包括:

根据数据更新请求确定对应的业务服务信息,并根据业务服务信息确定各数据库中对应的数据表;

获取预更新结果为更新失败的数据库中对应的数据表中未更新数据,利用未更新数据覆盖预更新结果为更新成功的数据库中对应的数据表中已更新数据。

可选地,方法还包括:

若各个数据库的预更新结果均为更新成功,则根据数据更新请求更新数据更新发起方数据库;

关闭数据更新协同事务。

可选地,方法还包括:

根据判断结果,返回更新失败信息或更新成功信息,以通知数据更新发起方。

可选地,根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理进一步包括:

根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并标记预更新处理标记。

可选地,在获取预更新结果为更新失败的数据库中未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据之后,或在根据数据更新请求更新数据更新发起方数据库之后,方法还包括:

去除分布式异构数据库中的多个数据库的预更新处理标记。

可选地,在启动数据更新协同事务之后,方法还包括:在缓存中记录数据更新请求的id以及数据更新协同事务已执行步骤;

在接收数据更新发起方的数据更新请求之后,方法还包括:判断缓存中是否已记录数据更新请求的id;若是,则根据缓存中记录的数据更新协同事务已执行步骤,接续执行未执行步骤。

根据本发明实施例的另一方面,提供了一种分布式异构数据库数据处理装置,其包括:

接收模块,适于接收数据更新发起方的数据更新请求,启动数据更新协同事务;

预更新模块,适于根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并获取各个数据库对应的预更新结果;

第一判断模块,适于判断各个数据库的预更新结果中任一数据库的预更新结果是否为更新失败;

覆盖更新模块,适于若第一判断模块判断各个数据库的预更新结果中任一数据库的预更新结果为更新失败,获取预更新结果为更新失败的数据库提供的未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据;

关闭模块,适于关闭数据更新协同事务。

可选地,覆盖更新模块进一步适于:

获取预更新结果为更新失败的数据库中未更新数据;

对未更新数据进行异构数据模型转换处理,得到符合预更新结果为更新成功的数据库的数据类型的未更新数据;

利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据。

可选地,覆盖更新模块进一步适于:

根据数据更新请求确定对应的业务服务信息,并根据业务服务信息确定各数据库中对应的数据表;

获取预更新结果为更新失败的数据库中对应的数据表中未更新数据,利用未更新数据覆盖预更新结果为更新成功的数据库中对应的数据表中已更新数据。

可选地,装置还包括:

更新模块,适于若第一判断模块判断各个数据库的预更新结果均为更新成功,则根据数据更新请求更新数据更新发起方数据库。

可选地,装置还包括:

返回模块,适于根据判断结果,返回更新失败信息或更新成功信息,以通知数据更新发起方。

可选地,预更新模块进一步适于:

根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并标记预更新处理标记。

可选地,装置还包括:

去除模块,适于去除分布式异构数据库中的多个数据库的预更新处理标记。

可选地,装置还包括:

记录模块,适于在缓存中记录数据更新请求的id以及数据更新协同事务已执行步骤;

第二判断模块,适于判断缓存中是否已记录数据更新请求的id;若是,则根据缓存中记录的数据更新协同事务已执行步骤,接续执行未执行步骤。

根据本发明实施例的另一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;

存储器用于存放至少一可执行指令,可执行指令使处理器执行上述分布式异构数据库数据处理方法对应的操作。

根据本发明实施例的另一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述分布式异构数据库数据处理方法对应的操作。

根据本发明实施例提供的分布式异构数据库数据处理方法及装置,接收数据更新发起方的数据更新请求,启动数据更新协同事务;根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并获取各个数据库对应的预更新结果;判断各个数据库的预更新结果中任一数据库的预更新结果是否为更新失败;若是,获取预更新结果为更新失败的数据库提供的未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据;关闭数据更新协同事务。通过在数据更新协同事务中,利用未更新数据覆盖更新已更新数据,保障了分布式异构数据库中数据一致性。利用覆盖更新方式替代分布式事务中当更新失败需二阶段的回滚操作,大大降低了实现时所需编码的复杂度,提升编码效率。尤其对于包含深度嵌套调用链路的数据更新,可以利用覆盖更新方式,在保障所涉及的各分布式异构数据库的数据一致性的同时,大大减少编码工作量与复杂度。

上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的分布式异构数据库数据处理方法的流程示意图;

图2示出了根据本发明另一个实施例的分布式异构数据库数据处理方法的流程示意图;

图3示出了根据本发明一个实施例的分布式异构数据库数据处理装置的结构框图;

图4示出了根据本发明一个实施例的一种计算设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一个实施例的分布式异构数据库数据处理方法的流程示意图,如图1所示,该方法包括如下步骤:

步骤s101,接收数据更新发起方的数据更新请求,启动数据更新协同事务。

数据更新发起方可以为终端的应用,如用户操作终端的应用,进行商品信息更新,更新商品的参数信息、价格等。用户输入的商品信息进行更新操,数据更新发起方会发送数据更新请求。在接收到数据更新发起方的数据更新请求后,分布式异构数据库中的各数据库都需要根据数据更新请求,来对应的更新各自的数据库中的数据。在分布式异构数据库更新数据时,先启动数据更新协同事务,来保障这个数据更新过程的一致性。

启动的数据更新协同事务可以协调各分布式异构数据库中各数据库的数据更新,对更新产生的结果、更新流程、更新流水号信息等进行管理,以上管理可以借助数据更新发起方本地的数据库等进行记录,方便了解到对数据更新请求的处理状态等。

步骤s102,根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并获取各个数据库对应的预更新结果。

根据数据更新请求,获取到需要更新的数据或者需要执行的更新语句等更新信息。根据更新信息对应的对分布式异构数据库中的多个数据库进行数据预更新处理。更新信息可以根据分布式异构数据库中各数据库的不同,适应性调整,如各数据库中数据库类型不同对应的更新语句不同;更新对应的数据表、字段等不同对应的更新语句不同等。在对分布式异构数据库中的多个数据库进行数据预更新处理时,分别在各个数据库中执行对应的更新操作,完成各个数据库的数据更新。

在分布式异构数据库中各数据库完成数据预更新处理后,获取各个数据库的预更新结果,以便对分布式异构数据库更新情况进行确认。

步骤s103,判断各个数据库的预更新结果中任一数据库的预更新结果是否为更新失败。

根据各个数据库的预更新结果进行判断,若其中任一数据库的预更新结果为更新失败,则说明分布式异构数据库中有数据库未能更新数据,导致存在更新后数据不一致的问题。为保持分布式异构数据库中各数据库中数据的一致性,需要对本次已更新数据进行回滚,保持其与未更新数据的一致性,需执行步骤s104;若所有数据库的预更新结果均为更新成功,即没有数据库存在更新失败的情况,则说明分布式异构数据库中各个数据库均更新成功,分布式异构数据库中各数据库的数据具有一致性,则执行步骤s105。

步骤s104,获取预更新结果为更新失败的数据库提供的未更新数据,利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据。

在对分布式异构数据库中更新成功的数据库中已更新数据进行回滚时,与现有技术需采用较多编码来完成数据的回滚处理不同,本实施例从预更新结果为更新失败的数据库中获取未更新数据,利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据,即通过覆盖更新方式将已更新数据更新为未更新数据,保障了分布式异构数据库中各数据库的数据的一致性。

具体的,在从预更新结果为更新失败的数据库中获取未更新数据时,需要先根据数据更新请求确定对应的业务服务信息,如数据更新请求为商品信息更新请求,对应的业务服务信息为商品更新业务服务。在确定业务服务信息后,可以根据业务服务信息确定各数据库中对应的数据表。由于数据库不同,各数据库中涉及的数据表也可能存在不同。根据业务服务信息确定各数据库中对应的数据表。如预更新结果为更新失败的数据库1中商品更新业务服务对应的数据表为表a,预更新结果为更新成功的数据库2中商品更新业务服务对应的数据表为表c。在获取预更新结果为更新失败的数据库中对应的数据表中未更新数据时,从数据库1中获取表a的未更新数据;在利用未更新数据覆盖预更新结果为更新成功的数据库中对应的数据表中已更新数据时,利用表a的未更新数据覆盖数据库2中表c已更新数据,从而实现覆盖更新,保障了数据库1和数据库2中数据的一致性。

进一步,在根据业务服务信息确定各数据库中对应的数据表时,不同数据库中数据表可能会设置不同,如预更新结果为更新失败的数据库1中商品更新业务服务对应的数据表为表a和表b,预更新结果为更新成功的数据库2中商品更新业务服务对应的数据表为表c,需要在获取预更新结果为更新失败的数据库中未更新数据时,获取数据库1中表a和表b的未更新数据,对未更新数据进行异构数据模型转换处理。此处异构数据模型转换处理,包括了将表a和表b中未更新数据进行整合,得到数据库2中表c对应的已更新数据;进一步还包括对于表a和表b中数据类型与表c中数据类型不一致的数据进行转换,如将表a中与表c中对应的数据字段进行类型转换,将表a中数据类型为int类型的数据转换为表c中数据类型为nunber类型的数据,从而得到符合预更新结果为更新成功的数据库的数据类型的未更新数据。利用转换后的未更新数据覆盖预更新结果为更新成功的数据库中已更新数据,实现覆盖更新,保障数据库1和数据库2中数据的一致性。

以上均为举例说明,在实际实施过程中,分布式异构数据库中可以为多个类型相同或不同数据库,数据库的数量不做限定。

步骤s105,根据数据更新请求更新数据更新发起方数据库。

根据各个数据库的预更新结果进行判断,若各个数据库的预更新结果均为更新成功,则说明分布式异构数据库中所有数据库的数据都更新成功,更新后的各数据库中的数据具有一致性。此时,还可以根据数据更新请求,将数据更新发起方对应的其本地的数据库中的数据也进行相应的更新,保存本地的数据库与分布式异构数据库中各数据库的数据一致性。具体的,如数据更新发起方为商户端,对应的本地的数据库为商户本地的数据库,其存储了商户设置的各种商品数据,分布式异构数据库为各销售平台对应的数据库,其中各销售平台对应的数据库中存储有商家设置的各种商品数据,以供各销售平台利用各种商品数据进行展示等。

数据更新发起方对数据进行更新设置后,根据数据更新发起方发送的数据更新请求对分布式异构数据库中的各数据库的数据进行预更新处理,在分布式异构数据库中各数据库预更新成功后,对应的将数据更新发起方的数据库进行更新,从而保持了各数据库中数据的一致性。

步骤s106,关闭数据更新协同事务。

在执行完步骤s104或执行完步骤s105后,即在利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据后,保持分布式异构数据库中各数据库的数据一致性后,关闭数据更新协同事务;或者,在分布式异构数据库中各数据库均数据预更新处理成功,以及根据数据更新请求更新数据更新发起方数据库后,在保持各数据库中数据一致性的前提下,可以关闭数据更新协同事务。

根据本发明实施例提供的分布式异构数据库数据处理方法,接收数据更新发起方的数据更新请求,启动数据更新协同事务;根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并获取各个数据库对应的预更新结果;判断各个数据库的预更新结果中任一数据库的预更新结果是否为更新失败;若是,获取预更新结果为更新失败的数据库提供的未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据;关闭数据更新协同事务。通过在数据更新协同事务中,利用未更新数据覆盖更新已更新数据,保障了分布式异构数据库中数据一致性。利用覆盖更新方式替代分布式事务中当更新失败需二阶段的回滚操作,大大降低了实现时所需编码的复杂度,提升编码效率。尤其对于包含深度嵌套调用链路的数据更新,可以利用覆盖更新方式,在保障所涉及的各分布式异构数据库的数据一致性的同时,大大减少编码工作量与复杂度。

图2示出了根据本发明另一个实施例的分布式异构数据库数据处理方法的流程示意图,如图2所示,该方法包括如下步骤:

步骤s201,接收数据更新发起方的数据更新请求,启动数据更新协同事务。

数据更新发起方在设置准备更新的数据后,发起数据更新请求。考虑到在处理数据更新请求时,考虑到处理过程中可能会由于服务器宕机、网络不稳定等各种因素导致更新处理过程中断。而采用本实施例的处理方式,可以在处理过程中断再次接收到相同的数据更新请求时,在处理中断处继续执行未执行的步骤。具体的,在本实施例处理中,在接收到数据更新发起方的数据更新请求时,启动数据更新协同事务。由数据更新协同事务来获取数据更新请求的id。数据更新请求的id会根据数据更新请求的对象设置,若数据更新请求的对象相同时,设置相同的数据更新请求的id。如数据更新请求发起方设置更新的数据为商品信息,且两次或多次要更新的商品信息是相同的商品信息,如两次或多次要更新的商品信息都是将商品名称更改为“国庆特价商品xx”相同的商品名称,由于数据更新请求的对象是相同的商品信息,将数据更新请求发起方发送的两次或多次的数据更新请求的id设置为相同的数据更新请求的id。

进一步,在第一次接收到数据更新发起方的数据更新请求时,可以由数据更新协同事务在缓存中记录数据更新请求的id,以便后续发生中断再次接收到数据更新发起方的数据更新请求时,从缓存中判断是否记录有数据更新请求的id,对其继续进行处理。此处的缓存可以设置在数据更新发起方侧,如数据更新发起方的数据库中,便于记录和查找。

步骤s202,判断缓存中是否已记录数据更新请求的id。

在接收到数据更新发起方的数据更新请求后,获取对应的数据更新请求的id。判断缓存中是否已记录数据更新请求的id,若是,说明已经对该数据更新请求的id进行了部分更新处理,则执行步骤s203。否则,说明第一次接收到该数据更新请求,执行步骤s204。

步骤s203,根据缓存中记录的数据更新协同事务已执行步骤,接续执行未执行步骤。

当判断缓存中已记录了数据更新请求的id时,根据数据更新请求的id,从缓存中查找并获取到该数据更新请求的id对应的数据更新协同事务已执行步骤。由当前启动的数据更新协同事务载入缓存中记录的数据更新协同事务已执行步骤,实现数据更新协同事务的重入,恢复至中断操作前的已执行步骤。根据已执行步骤,接续执行未执行步骤。如在第一次接收到数据更新请求时,启动的第一次数据更新协同事务执行了步骤s204、s205后中断,在第二次接收到数据更新请求时,判断缓存中记录该数据更新请求的id,启动的第二次数据更新协同事务载入第一次数据更新协同事务已执行的步骤s204、s205,不需要重新执行步骤s204、s205,可以直接根据步骤s205获取到的各个数据库对应的预更新结果,执行后续的步骤s206-s209,减少重复执行已执行的步骤。

进一步,在启动数据更新协同事务后,数据更新协同事务会根据更新时所执行的步骤,在缓存中相应的记录已执行步骤。当判断缓存中已记录数据更新请求的id时,启动的数据更新协同事务载入缓存中记录的数据更新协同事务已执行步骤后,在接续执行未执行步骤时,也需要根据接续执行的步骤进行记录。

步骤s204,在缓存中记录数据更新请求的id。

当判断缓存中未记录数据更新请求的id时,即第一次接收到数据更新发起方的数据更新请求的id对应的数据更新请求时,由启动的数据更新协同事务在缓存中记录数据更新请求的id。同时,还需要在数据更新协同事务执行后续步骤的过程中,对已执行步骤进行记录,将其记录在缓存中。记录时,可以记录如具体执行步骤,或者,执行步骤对应的流水号等。

步骤s205,根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并获取各个数据库对应的预更新结果。

在根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理后,对各个数据库标记预更新处理标记,记录该数据库完成数据预更新处理。标记预更新处理标记可以方便确定分布式异构数据库中哪些数据库中的哪些数据表完成了预更新处理,也方便当中断后再次接收到数据更新请求后,可以接续执行对分布式异构数据库的数据预更新处理等。

对分布式异构数据库中的多个数据库进行数据预更新处理的具体内容参照图1实施例中步骤s102的描述,在此不再赘述。

步骤s206,判断各个数据库的预更新结果中任一数据库的预更新结果是否为更新失败。

根据分布式异构数据库中各个数据库的预更新结果进行判断,若其中任一数据库的预更新结果为更新失败,则说明分布式异构数据库中有数据库未能更新数据,导致存在更新后数据不一致的问题。为保持分布式异构数据库中各数据库中数据的一致性,需要对本次已更新数据进行回滚,保持其与未更新数据的一致性,需执行步骤s207;若所有数据库的预更新结果均为更新成功,即没有数据库存在更新失败的情况,则说明分布式异构数据库中各个数据库均更新成功,分布式异构数据库中各数据库的数据具有一致性,则执行步骤s208。

步骤s207,获取预更新结果为更新失败的数据库提供的未更新数据,利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据。

步骤s208,根据数据更新请求更新数据更新发起方数据库。

以上步骤参照图1实施例中步骤s104-s105的描述,在此不再赘述

步骤s209,去除分布式异构数据库中的多个数据库的预更新处理标记。

在执行完成步骤s207或s208后,即针对本次接收到的数据更新请求已经对分布式异构数据库中各数据库完成了一致性更新或覆盖更新处理,将分布式异构数据库中各个数据库的数据预更新处理后所标记的预更新处理标记去除。

步骤s210,关闭数据更新协同事务。

在关闭数据更新协同事务时,可以将缓存中记录的数据更新请求的id以及数据更新协同事务已执行步骤删除,减少对缓存的占用。

进一步,当本实施例正常执行时,执行完步骤s209后,数据更新协同事务已经正常执行完成对分布式异构数据库中多个数据库的数据更新,可以正常关闭数据更新协同事务。但当本实施例在执行过程中遇到如服务器宕机、网络不稳定等各种因素导致更新处理过程中断时,数据更新协同事务会由于中断而异常关闭。在数据更新协同事务异常关闭时,仅在缓存中记录了已执行步骤,当再次接收到数据更新发起方的数据更新请求时,判断缓存中已记录数据更新请求的id,获取缓存中记录的数据更新协同事务已执行步骤,载入缓存中记录的数据更新协同事务已执行步骤,接续执行未执行步骤。

步骤s211,根据判断结果,返回更新失败信息或更新成功信息,以通知数据更新发起方。

在执行完成以上步骤后,本实施例还可以根据步骤s206对各个数据库的预更新结果中任一数据库的预更新结果的判断结果,返回相应的信息来通知数据更新发起方对应的更新结果。若判断各个数据库的预更新结果中任一数据库的预更新结果为更新失败,则返回更新失败信息通知数据更新发起方本次更新失败,方便数据更新发起方了解更新结果,以便再次重新发起数据更新请求。若判断各个数据库的预更新结果均为更新成功,则返回更新成功信息通知数据更新发起方本次数据更新成功。

根据本发明实施例提供的分布式异构数据库数据处理方法,利用数据更新协同事务在缓存中记录数据更新请求的id,以及执行步骤。在接收到数据更新发起方的数据更新请求后,判断缓存中是否已记录数据更新请求的id,可以直接获取到缓存中记录的前一次数据更新协同事务已执行步骤,载入缓存中记录的数据更新协同事务已执行步骤,实现数据更新协同事务的重入,恢复至中断操作前的已执行步骤,避免重复执行已执行的步骤。进一步,在数据更新协同事务中,利用覆盖更新方式替代分布式事务中当更新失败需二阶段的回滚操作,大大降低了实现时所需编码的复杂度,提升编码效率。

图3示出了根据本发明一个实施例的分布式异构数据库数据处理装置的结构框图,如图3所示,该装置包括:

接收模块301适于:接收数据更新发起方的数据更新请求,启动数据更新协同事务;

预更新模块302适于:根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并获取各个数据库对应的预更新结果;

第一判断模块303适于:判断各个数据库的预更新结果中任一数据库的预更新结果是否为更新失败;

覆盖更新模块304适于:若第一判断模块303判断各个数据库的预更新结果中任一数据库的预更新结果为更新失败,获取预更新结果为更新失败的数据库提供的未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据;

关闭模块305适于:关闭数据更新协同事务。

可选地,覆盖更新模块304进一步适于:获取预更新结果为更新失败的数据库中未更新数据;对未更新数据进行异构数据模型转换处理,得到符合预更新结果为更新成功的数据库的数据类型的未更新数据;利用未更新数据覆盖预更新结果为更新成功的数据库中已更新数据。

可选地,覆盖更新模块304进一步适于:根据数据更新请求确定对应的业务服务信息,并根据业务服务信息确定各数据库中对应的数据表;获取预更新结果为更新失败的数据库中对应的数据表中未更新数据,利用未更新数据覆盖预更新结果为更新成功的数据库中对应的数据表中已更新数据。

可选地,装置还包括:更新模块306适于:若第一判断模块判断各个数据库的预更新结果均为更新成功,则根据数据更新请求更新数据更新发起方数据库。

可选地,装置还包括:返回模块307适于:根据判断结果,返回更新失败信息或更新成功信息,以通知数据更新发起方。

可选地,预更新模块302进一步适于:根据数据更新请求,对分布式异构数据库中的多个数据库进行数据预更新处理,并标记预更新处理标记。

可选地,装置还包括:去除模块308适于:去除分布式异构数据库中的多个数据库的预更新处理标记。

可选地,装置还包括:记录模块309适于:在缓存中记录数据更新请求的id以及数据更新协同事务已执行步骤;

第二判断模块310适于:判断缓存中是否已记录数据更新请求的id;若是,则根据缓存中记录的数据更新协同事务已执行步骤,接续执行未执行步骤。

以上各模块的描述参照方法实施例中对应的描述,在此不再赘述。

根据本发明实施例提供的分布式异构数据库数据处理装置,利用数据更新协同事务在缓存中记录数据更新请求的id,以及执行步骤。在接收到数据更新发起方的数据更新请求后,判断缓存中是否已记录数据更新请求的id,可以直接获取到缓存中记录的前一次数据更新协同事务已执行步骤,载入缓存中记录的数据更新协同事务已执行步骤,实现数据更新协同事务的重入,恢复至中断操作前的已执行步骤,避免重复执行已执行的步骤。进一步,在数据更新协同事务中,利用覆盖更新方式替代分布式事务中当更新失败需二阶段的回滚操作,大大降低了实现时所需编码的复杂度,提升编码效率。

本发明实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,可执行指令可执行上述任意方法实施例中的分布式异构数据库数据处理方法。

图4示出了根据本发明实施例的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。

如图4所示,该计算设备可以包括:处理器(processor)402、通信接口(communicationsinterface)404、存储器(memory)406、以及通信总线408。

其中:

处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。

通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。

处理器402,用于执行程序410,具体可以执行上述分布式异构数据库数据处理方法实施例中的相关步骤。

具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。

处理器402可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。

存储器406,用于存放程序410。存储器406可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

程序410具体可以用于使得处理器402执行上述任意方法实施例中的分布式异构数据库数据处理方法。程序410中各步骤的具体实现可以参见上述分布式异构数据库数据处理实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明实施例的内容,并且上面对特定语言所做的描述是为了披露本发明实施例的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明实施例的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明实施例的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明实施例的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明实施例的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明实施例还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明实施例进行说明而不是对本发明实施例进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明实施例可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1