CN102203779B - 更新数据的方法和控制装置 - Google Patents

更新数据的方法和控制装置 Download PDF

Info

Publication number
CN102203779B
CN102203779B CN2011800006943A CN201180000694A CN102203779B CN 102203779 B CN102203779 B CN 102203779B CN 2011800006943 A CN2011800006943 A CN 2011800006943A CN 201180000694 A CN201180000694 A CN 201180000694A CN 102203779 B CN102203779 B CN 102203779B
Authority
CN
China
Prior art keywords
data
resource manager
transaction journal
explorer
master resource
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
Application number
CN2011800006943A
Other languages
English (en)
Other versions
CN102203779A (zh
Inventor
陶建波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changshu intellectual property operation center Co.,Ltd.
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN102203779A publication Critical patent/CN102203779A/zh
Application granted granted Critical
Publication of CN102203779B publication Critical patent/CN102203779B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了更新数据的方法和控制装置。该方法包括:当主资源管理器和从资源管理器的预执行操作成功时,在主资源管理器上记录事务日志;向从资源管理器发送提交命令,并确定从资源管理器是否都提交成功;如果从资源管理器存在任何一个没有提交成功,则保留所述事务日志,以根据事务日志和所述主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。基于本发明实施例提供的技术方案,由于在主资源管理器上记录有辅助修正的事务日志,可以基于事务日志和主资源管理器的数据来进行数据修正。这样,即便在提交过程中出现错误,从资源管理器的数据也可以恢复到与主资源管理器的数据相同的状态,从而保证数据的一致性。

Description

更新数据的方法和控制装置
技术领域
本发明涉及数据管理领域,并且更具体地,涉及数据管理领域中更新数据的方法和控制装置。
背景技术
随着计算机系统越来越复杂,为了提高数据的可靠性或者读取数据时的性能,常常将一份数据保存在多个设备上。例如,在现有的电信系统中,不仅需要将用户签约信息保存在计费系统中,还需要将其保存在呼叫控制系统中。即使在同一个系统,在容灾组网、负载均衡组网的情况下,也会把相同的数据存放在多个设备上。
当把数据存放在多个设备上时,会面临数据一致性的问题。当需要在多个设备上同时更新数据时,需要该数据更新操作在这些设备上要么都成功、要么都失败,以保持数据的一致性。这种操作方式通常被称为分布式事务处理。
在分布式事务处理中,目前主要是使用两阶段提交协议。在第一阶段中,事务管理器向所有设备发送预执行命令。在第二阶段中,事务管理器根据资源管理器对预执行操作的响应,向该事务中涉及的所有资源管理器发送相应命令。即,当任一资源管理器预执行操作失败而作出否定响应时,事务管理器向涉及的所有资源管理器发送回滚命令,返回到数据更新前的状态;当所有资源管理器预执行操作成功而作出肯定响应时,事务管理器命令涉及的所有资源管理器提交该事务,对数据进行更新。
虽然两阶段提交协议能够降低由于数据结构、主键冲突等原因导致的部分失败而引起的数据不一致的几率,但是依旧存在数据不一致的可能。因为在第二阶段中,事务管理器向资源管理器发送提交命令时,可能出现网络异常或资源管理器异常,从而导致部分资源管理器提交失败。这样,虽然预执行都成功,但是提交错误,仍然不能保证数据的一致性。特别是在网络质量比较低、所涉及的设备较多时,更容易造成数据不一致的问题。
针对在提交过程中出现的数据不一致,目前很难自动发现这种错误的存在,也很难确定需要对哪些数据进行修正,并且在修复的情况下也只能通过手工修复而不能自动修复,从而使得修复过程繁琐。
发明内容
本发明实施例提供了更新数据的方法和控制装置,能够解决提交过程出现错误而导致的数据不一致的问题,使得可以在提交过程中容易地发现错误的存在,并使不一致的数据得以修复,从而保证多个设备上数据的一致性。
一方面,本发明实施例提供了一种更新数据的方法,包括:当主资源管理器和从资源管理器的预执行操作成功时,在主资源管理器上记录事务日志;向从资源管理器发送提交命令,并确定从资源管理器是否都提交成功;如果从资源管理器存在任何一个没有提交成功,则保留所述事务日志,以根据事务日志和所述主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。
另一方面,本发明实施例提供了一种用于更新数据的控制装置,包括:记录模块,用于当主资源管理器和从资源管理器的预执行操作成功时,在主资源管理器上记录事务日志;确定模块,用于向从资源管理器发送提交命令,并确定从资源管理器是否都提交成功;第一保留模块,用于如果从资源管理器存在任何一个没有提交成功,则保留事务日志,以根据事务日志和主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。
基于本发明实施例提供的上述技术方案,由于在主资源管理器上记录有辅助修正的事务日志,基于事务日志可以容易地发现提交过程中数据不一致的存在,并可以基于事务日志和主资源管理器的数据来进行数据修正。这样,与主资源管理器的数据不一致的从资源管理器的数据可以得以修正,使得即便在提交过程中出现错误,从资源管理器的数据也可以恢复到与主资源管理器的数据相同的状态,从而保证数据的一致性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的用于进行分布式事务处理的系统的结构示意图。
图2是根据本发明实施例的更新数据的方法的流程图。
图3是根据本发明实施例的更新数据的另一方法的流程图。
图4是根据本发明实施例的包括更新事务日志的事务处理方法的流程图。
图5是根据本发明实施例的正常执行提交操作时的例子的时序图。
图6是根据本发明实施例的处理事务日志的方法的流程图。
图7是根据本发明实施例的用于更新数据的控制装置的结构框图。
图8是根据本发明实施例的用于更新数据的另一控制装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的所述实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
首先,结合图1描述根据本发明实施例的用于进行分布式事务处理的系统100。
如图1所示,系统100包括控制装置110、多个资源管理器和事务发起者130。
在多个资源管理器中存储有相同的数据,它们基于控制装置110的控制而执行同一事务的操作,即这些资源管理器是同一事务所涉及的资源管理器。当控制装置110需要对资源管理器中的数据进行诸如修改、添加、删除之类的更新时,这些资源管理器由于管理着相同的数据,需要同步进行相同的操作,以保持数据的一致性。
可以将这些资源管理器划分为主资源管理器120和从资源管理器1至N(N是大于等于1的整数)。例如,当用户通过事务发起者130提供的用户接口输入操作数据时,可以将与事务发起者130所在的设备处于同一逻辑子网中的资源管理器设置为主资源管理器120,也可以将与事务发起者130所在的设备具有最近的物理距离的资源管理器设置为主资源管理器120,当然,还可以将其中任意一个资源管理器设置为主资源管理器120。
主资源管理器120和从资源管理器1至N各自管理自己的数据库,对其中的数据进行添加、删除、插入、修改、替代等更新操作。另外,在主资源管理器120上,除了存储有数据之外,还存储有事务日志。可以通过事务日志来修正从资源管理器中的数据以实现数据的一致,这将在下文详细描述。
控制装置110可以被进一步划分为事务管理器112和事务日志处理器114,其具体操作将结合图5和图6进行描述。在描述数据更新的方法时,仍以控制装置110作为主体进行描述,而不受控制装置110的功能划分的限制。
事务发起者130负责业务处理,是事务的发起者。事务发起者130可以向用户提供用户接口;可以通过控制装置110中的事务管理器112将数据写到资源管理器中;可以把与事务有关的信息告诉事务管理器112,以命令主资源管理器120记录事务日志;还可以根据控制装置110中的事务日志管理器114从事务日志中提取的信息,来构造修正命令,再通过事务管理器112进行修正。
下面,结合图1的系统,描述图2中示出的根据本发明实施例的更新数据的方法200。
方法200包括:在S210中,当主资源管理器和从资源管理器的预执行操作成功时,控制装置110命令在主资源管理器上记录事务日志;在S220中,控制装置110向从资源管理器发送提交命令,并确定从资源管理器是否都提交成功;在S230中,如果从资源管理器存在任何一个没有提交成功的,则保留事务日志,以根据事务日志和主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。
当主资源管理器120和从资源管理器1至N需要执行数据更新事务时,控制装置110命令主资源管理器120和从资源管理器1至N进行预执行操作。当这些资源管理器返回的响应告诉控制装置110预执行操作成功时,控制装置110命令主资源管理器120记录事务日志,并命令从资源管理器1至N执行提交操作,从而根据从资源管理器1至N返回的响应来确定从资源管理器1至N是否都提交成功。如果有从资源管理器1至N提交不成功,则控制装置110命令主资源管理器120保留所记录的事务日志,以使得可以根据事务日志,并以主资源管理器的数据为准,对与主资源管理器的数据不一致的从资源管理器的数据进行修正,从而保持数据的一致性。
根据本发明实施例提供的更新数据的方法,由于在主资源管理器上记录有辅助修正的事务日志,基于事务日志可以容易地发现提交过程中数据不一致的存在,并可以基于事务日志,以主资源管理器的数据为准,来进行数据修正。这样,与主资源管理器的数据不一致的从资源管理器的数据可以得以修正,使得即便在提交过程中出现错误,从资源管理器的数据也可以恢复到与主资源管理器的数据相同的状态,从而保证数据的一致性。
接下来,详细描述根据本发明实施例的S210至S230。
在S210中,当主资源管理器和从资源管理器的预执行操作成功时,在主资源管理器上记录事务日志。
事务日志可以表征当前所执行的事务的特征。例如,当前事务是对数据库中哪些表格、哪些记录的数据进行更新等。
根据本发明的一个实施例,可以在主资源管理器120上将当前事务的数据类型和数据标识信息记录为事务日志。
控制装置110可以命令主资源管理器120将当前事务的数据类型和数据标识信息记录为事务日志。数据类型和数据标识信息可以是由事务发起者130传递给控制装置110的信息,也可以是由控制装置110根据事务而主动提取出的信息。数据类型可以指示是对数据库中的哪些表格进行操作(例如更新操作),数据标识信息可以指示是对表格中的哪些记录进行操作。
例如,在电信系统中,当需要更新与订户签约信息有关的数据时,该事务的数据类型是订户信息的表格,该事务的数据标识信息是用户的电话号码,通过电话号码来标识记录。
再例如,在以XML(Extensible Markup Language,扩展标记语言)格式化表达的数据中,如下所示:
Figure BDA0000073141950000051
由该格式化的数据可知,数据类型是Object1,数据标识信息是1。该数据类型和数据标识信息可以直接由控制装置110提取出来。
通过记录数据类型和数据标识信息,就可以确定当前的事务是什么,从而可以基于此来记录事务日志。
在S220中,向从资源管理器发送提交命令,并确定从资源管理器是否都提交成功。
控制装置110命令从资源管理器1至N执行提交操作,并接收来自从资源管理器1至N的响应,通过响应来确定是否提交成功。
虽然在该例子中S220在S210之后执行,但是S220也可以在S210之前执行,还可以与S210同时执行。只要在主资源管理器120和从资源管理器1至N的预执行操作都成功之后,执行S210和S220即可。所以,S210的记录事务日志和S220的发送提交命令并确定是否提交成功的执行顺序对本发明的保护范围不构成限制。
在S230中,如果从资源管理器存在任何一个没有提交成功的,则保留事务日志,以根据事务日志和主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。
如果控制装置110从任一从资源管理器接收到提交不成功的响应、或者没有接收到任何响应、或者接收响应的时间超时、或者返回响应内容错误,则控制装置110可以确定相应的从资源管理器提交不成功。该不成功可能是由于网络异常造成的从资源管理器没有接收到提交命令或提交命令错误,也可能是由于从资源管理器异常(例如断电、死机等)造成的提交不成功。
当从资源管理器1至N没有都提交成功,所记录的事务日志就被保留下来,以辅助之后的修正。根据事务日志,可以容易地确定在提交过程中出现了数据不一致,并且可以容易地定位是哪些数据出现了不一致,例如是哪些表格中的哪些记录出现了不一致。
根据本发明的实施例,之后的修正可以是人工参考事务日志进行的修正。此时,相比于目前人工修正的方法,可以根据事务日志的记载来自动且方便地确定数据不一致的存在,并可以基于事务日志来找到需要对哪些数据进行修正,从而简化了数据修正过程。
根据本发明的实施例,之后的修正也可以是控制装置120根据事务日志进行的自动修正,从而无需人工的参与,可以提高数据修正的效率。
在控制装置120进行的数据修正中,可以从事务日志中提取数据类型和数据标识信息,从而可以确定需要完成什么事务,由此可以构造出与相应事务对应的修正命令。例如,修正命令可以是先删除对应表格的对应记录中的数据,再将新的数据插入到对应表格的对应记录中。修正命令可以由事务发起者130来构造,也可以由控制装置110来构造(例如,从资源管理器支持相同的接口,从而可以由控制装置110构造通用的修正命令)。由于事务发起者130构造的修正命令也需要交由控制装置110来执行,所以数据修正的执行都是由控制装置110来控制进行的。从从资源管理器1至N的角度看,修正命令的来源可以认为都是控制装置110。
而用什么数据进行修正,则需要借助于主资源管理器120中的数据,以主资源管理器120管理的数据为准。例如,根据事务日志中的数据类型和数据标识信息,可以在主资源管理器120中找到相应的数据,以该数据为准,对从资源管理器管理的数据进行修正。根据本发明的实施例,为准的数据可以是主资源管理器提交后的数据,也可以是主资源管理器回滚后的数据。
进行修正时,控制装置110可以向所有的从资源管理器1至N发送修正命令以指示其修正或重新执行数据更新操作等。对于已提交成功的从资源管理器只需对提交的数据进行覆盖即可,而对于未提交成功的从资源管理器则会对其中的数据进行修正。
控制装置110也可以仅仅向与主资源管理器120的数据不一致的从资源管理器发送修正命令。此时,控制装置110可以认为提交响应异常的从资源管理器都是与主资源管理器120不一致的从资源管理器。
另外,进行修正时,有可能从资源管理器管理着不同类型的数据库,或者其数据库具有不同的接口,使得需要根据不同的资源管理器,构造出与其接口相适应的修正命令。当然,如果从资源管理器的数据库接口相同或可以识别通用的命令,则可以只构造一种修正命令或构成数据更新操作的通用命令,再分别发送给它们以执行修正。
根据本发明实施例提供的更新数据的方法,由于在主资源管理器上记录有辅助修正的事务日志,可以在提交出现错误时,基于事务日志中的数据类型和数据标识来确定对哪些表格的哪些记录进行修正,并基于主资源管理器管理的数据来确定修正为哪些数据,从而完成对从资源管理器管理的数据的修正。这样,即便在提交过程中出现错误,借助于事务日志,从资源管理器管理的数据也可以自动恢复到与主资源管理器的数据相同的状态,从而可以保证数据的一致性,并且由于控制装置可以根据事务日志自动进行数据修正,使得数据修正的效率得以提高。
图3是根据本发明实施例的更新数据的另一方法300的流程图。图3的方法300的S310和S320与图2的方法200的S210和S220基本相同。
当在S320中确定从资源管理器1至N存在任何一个没有提交成功时,在S330中保留事务日志,以根据该事务日志和主资源管理器120的数据来进行纠正。
在S335中,控制装置110向主资源管理器120发送回滚命令。
这样,可以根据S330中保留的事务日志和主资源管理器120回滚后的数据,对从资源管理器的数据进行修正。
由于从资源管理器1至N没有都提交成功,这可能意味着部分提交成功、部分提交失败,也可能意味着都没有提交成功,这将造成数据不一致的风险。此时,由于主资源管理器120还没有执行提交操作,因此可以让主资源管理器120回滚到预执行操作前的状态,从而以该状态为准进行数据的修复,使得无论从资源管理器1至N是否提交成功,都可以保持在主资源管理器120回滚所恢复的状态中,从而实现数据的一致。
在S340中,控制装置110根据事务日志和主资源管理器120回滚到的数据,对与主资源管理器120的数据不一致的从资源管理器的数据进行修正。修正过程可以参考上述S230中的描述。
修正之后,在S345中,控制装置110确定修正是否成功。例如,控制装置110可以接收来自进行修正操作的从资源管理器的响应,在响应中可以携带修正是否成功的信息,也可以携带修正后的结果。根据返回的响应,确定修正是否成功。
如果修正成功,则在S350中删除事务日志。如果修正不成功,则在S360中保留事务日志。
在事务日志中可以存储提交过程有错误的事务,如果修正成功,则说明主资源管理器120管理的数据和从资源管理器1至N管理的数据相一致,可以删除该事务日志,从而表明该事务日志对应的事务已成功完成。而如果修正不成功,说明数据不一致还存在,则还需要保留事务日志,以在后续操作中,再次对该事务日志对应的事务进行处理。
当在S320中确定从资源管理器1至N都提交成功时,在S360中,控制装置110向主资源管理器120发送提交命令。
由于从资源管理器1至N都提交成功,则主资源管理器120也需要进行提交操作。
在S365中,在主资源管理器120提交成功时删除事务日志。
主资源管理器120提交成功的同时删除事务日志,可以防止错误地记录下正确执行的事务。
例如,控制装置110可以先向主资源管理器120发送删除事务日志的预执行命令,当删除预执行成功时,主资源管理器120再进行提交操作,并在提交成功的同时删除事务日志。提交数据的进程与删除事务日志的进程并发执行。
根据本发明的一个实施例,在S310之后,在S370中,控制装置110周期性检查是否存在事务日志。
主资源管理器120可以将事务日志存储在事务日志表中,该事务日志表中的事务日志可以随着操作的进行而得以更新和改变,这将结合图4来进行描述。
控制装置110可以通过查找事务日志表来检查是否在其中存在事务日志。控制装置110可以以等长的时间间隔来进行周期性检查,也可以以变长的时间间隔来进行周期性检查。
在S375中,如果存在事务日志,则根据该事务日志和主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。
事务日志的存在说明还有数据不一致的问题,因此,控制装置110从事务日志表中读取一条事务日志,根据该事务日志指示的事务,结合主资源管理器120在该事务日志指示下的数据,对从资源管理器中的相应数据进行修正。
虽然在图3中S370和S375在S310之后执行,但是S370和S375也可以在任何时刻执行。
根据本发明实施例提供的更新数据的方法,由于在主资源管理器上记录辅助修正的事务日志,在数据不一致仍存在的情况下保留事务日志,而在数据不一致得以解决的情况下删除事务日志,使得事务日志动态改变,从而可以基于现存的事务日志,并以主资源管理器在事务日志指示下的数据为准,来修正数据。这样,即便事务日志没有得到及时处理或处理错误,也可以在后续操作中继续处理,从而可以保证数据的一致性。并且,借助于事务日志来进行自动修正,无需人工的干预,可以提高数据修复的效率。
图4示出了根据本发明实施例的包括更新事务日志的事务处理方法400的流程图。
在S405中,事务发起者130启动诸如数据更新之类的事务,事务开始。
在S410中,控制装置110向主资源管理器120和次资源管理器1至N发送预执行命令,从而在主资源管理器120和次资源管理器1至N上预执行数据操作。
在S415中,控制装置110根据返回的响应,确定主资源管理器120和次资源管理器1至N的预执行操作是否都成功。
如果预执行存在任何一个没有成功,则在S420中,控制装置110向预执行成功的资源管理器发送回滚命令,以返回预执行前的状态。
在S425中,控制装置110向事务发起者130返回事务执行失败。并在S470中,事务发起者130启动的事务结束。
如果在S415中确定预执行都成功,则在S430中,在主资源管理器120上创建一个新事务。
在S435中,在该新事务中执行事务日志的记录操作并提交该新事务,以将事务日志写到事务日志表中。
在S440中,控制装置110向从资源管理器1至N发送提交命令,以提交从资源管理器1至N上的事务。
在S445中,控制装置110接收从资源管理器1至N的响应,确定从资源管理器1至N是否都提交成功。
如果从资源管理器1至N存在任何一个没有提交成功,则在S450中,事务管理器112向主资源管理器120发送回滚命令,回滚主资源管理器120上的事务。
如果从资源管理器1至N都提交成功,则在S455中,在主资源管理器120上预执行事务日志的删除操作。
在S460中,控制装置110向主资源管理器120发送提交命令,提交主资源管理器120上的事务,并在提交成功的同时删除事务日志。
在S465中,控制装置110向事务发起者130返回事务执行成功。并在S470中,事务发起者130启动的事务结束。
接下来,结合图5描述根据本发明实施例的正常执行提交操作时的时序图,并结合图6描述根据本发明实施例的处理事务日志的方法600。此外,结合图1,通过控制装置110包含的事务管理器112和事物日志处理器114来进行更加详细的描述。
事务管理器112可用于控制和管理资源管理器的操作,向资源管理器发送命令,从资源管理器接收响应。事务日志处理器114可用于管理事务日志,从事务日志中提取信息,将提取的信息提交给事务发起者130以构造修正命令,或者将提取的信息提交给事务管理器112以构造修正命令。
如图5所示,在S510中,事务发起者130向事务管理器112提交数据以及数据类型和数据标识信息。其中,在数据具有诸如XML、SQL(StructuredQuery Language,结构化查询语言)之类的良好的结构化时,可以不向事务管理器112提交数据类型和数据标识信息,而由事务管理器112根据数据来自动提取。
在S520中,事务管理器112开始事务。
在S530中,事务管理器112将数据类型和数据标识信息保存到事务上。
在S540中,事务管理器112向主资源管理器120发送数据以进行预执行操作。
在S550中,事务管理器112向从资源管理器1至N发送数据以进行预执行操作。S550也可以在S540之前执行,还可以与S540同时执行。
当从资源管理器1至N和主资源管理器120返回的响应(在图中未示出)表明预执行都成功时,在S560中,事务管理器112在新的事务中命令主资源管理器120将与事务有关的上下文信息(例如,数据类型和数据标识信息)保存在事务日志中。
在S570中,事务管理器112向从资源管理器1至N发送提交命令,以提交从资源管理器1至N中的事务。
当从资源管理器1至N返回的响应(在图中未示出)表明提交都成功时,在S580中,事务管理器112在事务发起者130启动的事务中命令主资源管理器120预删除当前的事务日志。
在S590中,事务管理器112向主资源管理器120发送提交命令,以提交主资源管理器120中的事务。同时,在主资源管理器120的事务中执行删除事务日志的操作,使得该删除操作与提交操作一起完成。
在S95中,由于提交都成功,事务管理器112向事务发起者130返回事务执行成功的响应。
如图6所示,事务日志处理器114可以定期扫描事务日志表,对超过一定时间仍然存在的事务日志进行处理。
在S610中,事务日志处理器114从事务日志表中顺序地读取一条事务日志。
在S620中,事务日志处理器114提取事务日志中的数据类型和数据标识信息。
在S630中,事务日志处理器114可以将数据类型和数据标识信息作为参数,通过该参数回调事务发起者130用于构造修正命令的接口,或者传递给事务管理器112。事务发起者130或事务管理器112以主资源管理器120的数据为准,构造修复数据的修正命令。
由于事务发起者130可以知晓不同从资源管理器的类型或接口,所以事务发起者130可以针对不同的从资源管理器构造修正命令。在数据结构简单、具有良好结构化的情况下,例如数据没有复杂的关联关系或者级联删除的情况下,事务日志处理器114可以将数据类型和数据标识信息传递给事务管理器112,由事务管理器112来构造从资源管理器通用的修正命令,而无需回调事务发起者130的接口。
无论修正命令由谁构造,都由控制装置110(具体地,可以为事务管理器112)来控制从资源管理器执行修正命令,因此,都可以认为是由控制装置110根据事务日志和主资源管理器管理的数据来对从资源管理器管理的数据进行修正。
在S640中,事务管理器112发送从事务发起者130接收或自己构造的修正命令,在从资源管理器上执行数据修正操作。
在S650中,事务管理器112确定从资源管理器的数据修正是否成功。
如果从资源管理器的修正操作成功,则在S660中,事务日志处理器114删除当前事务日志,否则在S670中,事务日志处理器114不删除事务日志,以供下一周期再次重试。
上面描述了根据本发明实施例的更新数据的方法,接下来,结合图7和图8描述根据本发明实施例的用于更新数据的控制装置。
图7是根据本发明实施例的用于更新数据的控制装置700的结构框图。
控制装置700包括记录模块710、确定模块720和第一保留模块730。记录模块710可用于当主资源管理器和从资源管理器的预执行操作成功时,在主资源管理器上记录事务日志。确定模块720可用于向从资源管理器发送提交命令,并确定从资源管理器是否都提交成功。第一保留模块730可用于如果从资源管理器存在任何一个没有提交成功,则保留事务日志,以根据事务日志和主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。
记录模块710、确定模块720和第一保留模块730的上述和其他操作和/或功能可以参考上述更新数据的方法200中的S210、S220和S230,为了避免重复,在此不再赘述。
本发明实施例提供的控制装置通过在主资源管理器上记录辅助修正的事务日志,使得可以基于事务日志来容易地发现提交过程中数据不一致的存在,并可以基于事务日志,以主资源管理器的数据为准,对不一致的数据进行修正。这样,与主资源管理器的数据不一致的从资源管理器的数据可以得以修正,使得即便在提交过程中出现错误,从资源管理器的数据也可以恢复到与主资源管理器的数据相同的状态,从而保证数据的一致性。
图8是根据本发明实施例的用于更新数据的控制装置800的结构框图。控制装置800的记录模块810、确定模块820和第一保留模块830与图7的控制装置700的记录模块710、确定模块720和第一保留模块730基本相同。
根据本发明的一个实施例,记录模块810可用于在主资源管理器上将当前事务的数据类型和数据标识信息记录为事务日志。
根据本发明的一个实施例,控制装置800还可以包括第一发送模块840。第一发送模块840可用于在第一保留模块830保留事务日志之后,向主资源管理器发送回滚命令。这样,可以根据事务日志和主资源管理器回滚后的数据,对从资源管理器的数据进行修正,从而将资源管理器管理的数据维持在事务执行前的状态。
根据本发明的一个实施例,控制装置800还可以包括第一删除模块850和第二保留模块860。第一删除模块850可用于如果修正成功,则删除事务日志。第二保留模块860可用于如果修正不成功,则保留事务日志。
根据本发明的一个实施例,控制装置800还可以包括第二发送模块870和第二删除模块880。第二发送模块870可用于如果从资源管理器都提交成功,则向主资源管理器发送提交命令。第二删除模块880可用于在主资源管理器提交成功时删除事务日志。
根据本发明的一个实施例,控制装置800还可以包括检查模块890和修正模块895。检查模块880可用于周期性检查是否存在事务日志。修正模块890可用于如果存在事务日志,则根据该事务日志和主资源管理器的数据,对与主资源管理器的数据不一致的从资源管理器的数据进行修正。
第一发送模块840、第一删除模块850、第二保留模块860、第二发送模块870、第二删除模块880、检查模块890和修正模块895的上述和其他操作和/或功能可以参考上述更新数据的方法300中的S310至S375以及方法400中的相应描述,为了避免重复,在此不再赘述。
本发明实施例提供的控制装置的记录模块810通过将数据类型和数据标识信息记录在主资源管理器上作为事务日志,可以在提交出现错误时,使修正模块895基于事务日志的数据类型和数据标识来确定对哪些表格的哪些记录进行修正,并基于主资源管理器管理的数据来确定修正为哪些数据,从而完成对从资源管理器管理的数据的自动修正。
控制装置中的第一保留模块830和第二保留模块860在数据不一致仍存在的情况下保留事务日志,而第一删除模块850和第二删除模块880在数据不一致得以解决的情况下删除事务日志,使得事务日志动态改变,从而修正模块895可以基于现存的事务日志,并以主资源管理器在事务日志指示下的数据为准,来修正数据。
这样,在提交过程中出现错误时,借助于事务日志,从资源管理器管理的数据可以自动恢复到与主资源管理器的数据相同的状态,从而保证数据的一致性。并且即便事务日志没有得到及时处理或处理错误,也可以在后续操作中继续处理,数据的一致性得到了极大地保证。另外,借助于事务日志进行的自动修正,无需人工的干预,还可以提高数据修复的效率。
本领域技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法步骤可以用硬件、处理器执行的软件程序、或者二者的结合来实施。软件程序可以置于随机存取存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM或技术领域内所公知的任意其它形式的存储介质中。
尽管已示出和描述了本发明的一些实施例,但本领域技术人员应该理解,在不脱离本发明的原理和精神的情况下,可对这些实施例进行各种修改,这样的修改应落入本发明的范围内。

Claims (12)

1.一种更新数据的方法,其特征在于,包括:
当主资源管理器和从资源管理器的预执行操作成功时,在所述主资源管理器上记录事务日志;
向所述从资源管理器发送提交命令,并确定所述从资源管理器是否都提交成功;
如果所述从资源管理器存在任何一个没有提交成功,则保留所述事务日志,以根据所述事务日志和所述主资源管理器的数据,对与所述主资源管理器的数据不一致的从资源管理器的数据进行修正。
2.根据权利要求1所述的方法,其特征在于,所述在所述主资源管理器上记录事务日志包括:
在所述主资源管理器上将当前事务的数据类型和数据标识信息记录为事务日志。
3.根据权利要求1或2所述的方法,其特征在于,所述保留所述事务日志之后,还包括:
向所述主资源管理器发送回滚命令。
4.根据权利要求1或2所述的方法,其特征在于,所述对与所述主资源管理器的数据不一致的从资源管理器的数据进行修正之后,还包括:
如果修正成功,则删除所述事务日志;
如果修正不成功,则保留所述事务日志。
5.根据权利要求1或2所述的方法,其特征在于,还包括:
如果所述从资源管理器都提交成功,则向所述主资源管理器发送提交命令;
在所述主资源管理器提交成功时删除所述事务日志。
6.根据权利要求1或2所述的方法,其特征在于,还包括:
周期性检查是否存在事务日志;
如果存在事务日志,则根据该事务日志和所述主资源管理器的数据,对与所述主资源管理器的数据不一致的从资源管理器的数据进行修正。
7.一种用于更新数据的控制装置,其特征在于,包括:
记录模块,用于当主资源管理器和从资源管理器的预执行操作成功时,在所述主资源管理器上记录事务日志;
确定模块,用于向所述从资源管理器发送提交命令,并确定所述从资源管理器是否都提交成功;
第一保留模块,用于如果所述从资源管理器存在任何一个没有提交成功,则保留所述事务日志,以根据所述事务日志和所述主资源管理器的数据,对与所述主资源管理器的数据不一致的从资源管理器的数据进行修正。
8.根据权利要求7所述的控制装置,其特征在于,所述记录模块用于在所述主资源管理器上将当前事务的数据类型和数据标识信息记录为事务日志。
9.根据权利要求7或8所述的控制装置,其特征在于,还包括:
第一发送模块,用于在所述第一保留模块保留所述事务日志之后,向所述主资源管理器发送回滚命令。
10.根据权利要求7或8所述的控制装置,其特征在于,还包括:
第一删除模块,用于如果修正成功,则删除所述事务日志;
第二保留模块,用于如果修正不成功,则保留所述事务日志。
11.根据权利要求7或8所述的控制装置,其特征在于,还包括:
第二发送模块,用于如果所述从资源管理器都提交成功,则向所述主资源管理器发送提交命令;
第二删除模块,用于在所述主资源管理器提交成功时删除所述事务日志。
12.根据权利要求7或8所述的控制装置,其特征在于,还包括:
检查模块,用于周期性检查是否存在事务日志;
修正模块,用于如果存在事务日志,则根据该事务日志和所述主资源管理器的数据,对与所述主资源管理器的数据不一致的从资源管理器的数据进行修正。
CN2011800006943A 2011-05-03 2011-05-03 更新数据的方法和控制装置 Active CN102203779B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/073611 WO2011120452A2 (zh) 2011-05-03 2011-05-03 更新数据的方法和控制装置

Publications (2)

Publication Number Publication Date
CN102203779A CN102203779A (zh) 2011-09-28
CN102203779B true CN102203779B (zh) 2013-04-17

Family

ID=44662783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011800006943A Active CN102203779B (zh) 2011-05-03 2011-05-03 更新数据的方法和控制装置

Country Status (2)

Country Link
CN (1) CN102203779B (zh)
WO (1) WO2011120452A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133596B2 (en) 2012-03-16 2018-11-20 Oracle International Corporation System and method for supporting application interoperation in a transactional middleware environment
US9760584B2 (en) 2012-03-16 2017-09-12 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database
US9146944B2 (en) * 2012-03-16 2015-09-29 Oracle International Corporation Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls
CN103927236B (zh) 2013-01-11 2018-01-16 深圳市腾讯计算机系统有限公司 在线校验方法和装置
CN106503027B (zh) * 2015-09-08 2020-02-21 阿里巴巴集团控股有限公司 数据库操作方法及装置
CN105183879A (zh) * 2015-09-22 2015-12-23 浪潮集团有限公司 一种云计算下分布式数据库保持事务一致性的方法
CN106557530B (zh) * 2015-09-30 2019-10-11 腾讯科技(深圳)有限公司 业务系统、数据修复方法及装置
CN105610917B (zh) * 2015-12-22 2019-12-20 腾讯科技(深圳)有限公司 实现系统中同步数据修复的方法及系统
CN106503257B (zh) * 2016-11-15 2019-09-20 北京京东金融科技控股有限公司 基于binlog补偿机制的分布式事务服务方法及系统
TWI725110B (zh) * 2017-01-19 2021-04-21 香港商阿里巴巴集團服務有限公司 資料庫操作方法及裝置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329670A (zh) * 2007-06-20 2008-12-24 诺基亚西门子通信公司 复制数据库环境下保持数据一致性的方法和系统
CN101567805A (zh) * 2009-05-22 2009-10-28 清华大学 并行文件系统发生故障后的恢复方法
US7725432B2 (en) * 2004-05-21 2010-05-25 Bea Systems, Inc. Logging last resource system
CN101853186A (zh) * 2008-12-31 2010-10-06 Sap股份公司 分布式事务恢复系统和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725432B2 (en) * 2004-05-21 2010-05-25 Bea Systems, Inc. Logging last resource system
CN101329670A (zh) * 2007-06-20 2008-12-24 诺基亚西门子通信公司 复制数据库环境下保持数据一致性的方法和系统
CN101853186A (zh) * 2008-12-31 2010-10-06 Sap股份公司 分布式事务恢复系统和方法
CN101567805A (zh) * 2009-05-22 2009-10-28 清华大学 并行文件系统发生故障后的恢复方法

Also Published As

Publication number Publication date
CN102203779A (zh) 2011-09-28
WO2011120452A3 (zh) 2012-03-08
WO2011120452A2 (zh) 2011-10-06

Similar Documents

Publication Publication Date Title
CN102203779B (zh) 更新数据的方法和控制装置
EP1770512A2 (en) Method and system for updating software
US9779128B2 (en) System and method for massively parallel processing database
CN103077222B (zh) 机群文件系统分布式元数据一致性保证方法及系统
KR101805948B1 (ko) 파일 시스템에 대한 체크포인트
CN102891849B (zh) 业务数据同步方法、恢复方法及装置和网络设备
KR101993432B1 (ko) 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들
US9672244B2 (en) Efficient undo-processing during data redistribution
CN105574187A (zh) 一种异构数据库复制事务一致性保障方法及系统
JP3094888B2 (ja) 採番機構、データ整合性確認機構、トランザクション再実行機構及び分散トランザクション処理システム
CN104794138A (zh) 一种数据库交易结果确认方法、装置及系统
CN101350022B (zh) 基于数据库逻辑锁的变更处理方法
CN110888718A (zh) 分布式事务的实现方法及装置
CN112214649B (zh) 一种时态图数据库分布式事务解决系统
CN115145697A (zh) 数据库事务的处理方法、装置及电子设备
CN115617908A (zh) 一种MySQL数据同步方法、装置、数据库终端、介质及系统
CN112905613A (zh) 一种异构数据库的数据双向同步方法及装置
CN103019826A (zh) 一种事务处理的方法和装置
CN113254536A (zh) 数据库事务处理方法、系统、电子设备及存储介质
CN112667600A (zh) 一种redis与MySQL结合的库存解决方法
CN116107807B (zh) 数据库中数据备份时获取全局一致性点位的方法及装置
CN115292092A (zh) 一种数据回滚方法、装置、设备及其存储介质
WO2023111910A1 (en) Rolling back database transaction
CN115719274A (zh) 一种分布式事务交易的控制方法、装置、设备及存储介质
CN112765126A (zh) 数据库事务的管理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201126

Address after: Unit 2414-2416, main building, no.371, Wushan Road, Tianhe District, Guangzhou City, Guangdong Province

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Effective date of registration: 20201126

Address after: 215500 No.13, Caotang Road, Changshu, Suzhou, Jiangsu Province

Patentee after: Changshu intellectual property operation center Co.,Ltd.

Address before: Unit 2414-2416, main building, no.371, Wushan Road, Tianhe District, Guangzhou City, Guangdong Province

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

TR01 Transfer of patent right
CP02 Change in the address of a patent holder

Address after: 215500 5th floor, building 4, 68 Lianfeng Road, Changfu street, Changshu City, Suzhou City, Jiangsu Province

Patentee after: Changshu intellectual property operation center Co.,Ltd.

Address before: No.13 caodang Road, Changshu City, Suzhou City, Jiangsu Province

Patentee before: Changshu intellectual property operation center Co.,Ltd.

CP02 Change in the address of a patent holder