一种数据同步方法和设备与流程

文档序号:11733218阅读:175来源:国知局
一种数据同步方法和设备与流程
本发明的实施方式涉及数据处理领域,更具体地,本发明的实施方式涉及一种数据同步方法和设备。

背景技术:
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。服务器,一般指的是一种运行管理软件以控制对网络或网络资源(磁盘驱动器、打印机等)进行访问的计算机或者计算机系统,并能够为在网络上的计算机提供资源使其犹如工作站那样地进行操作。例如,邮箱服务器或者博客服务器等。一般情况下,服务器在保存数据的时候通常采用数据库。因为服务器所需保存的数据量较大,且网络并不是任何时刻都能保证高性能的数据传输,所以服务器一般情况下会采用两个数据库来进行数据的保存和备份,即是在本地数据库上保存数据的同时,再将本地数据库的操作日志通过网络传输到设置在与服务器不同的计算机上的备份数据库,以此来达到即便本地数据库的数据丢失的情况下也能从备份数据库进行数据恢复的目的。其中,本地数据库一般情况下也会设置在与服务器不同的专门保存数据的计算机上。事务在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。一般数据库上的事务具有原子性,即一个事务内的操作或者都发生或者都不发生。例如,存在一个用户在终端上进行取款的一个流程,那么对于银行系统来说,用户银行卡上金额的扣除、钱币的投出以及银行系统内部金额数据的更新等一系列的事件,就称为一个事务。一般情况下,当事务成功执行之后服务器会对本地数据库中与该事务有关的数据进行更新,一旦服务器的本地数据库中的数据产生了更新,该事务就会生效。

技术实现要素:
但是,本发明人在研究过程中发现,在现有技术中,服务器对于本地数据库和备份数据库之间的数据同步是这样进行的:如果当前在本地数据库上产生了一个事务,服务器生成相应的操作日志,并根据该操作日志更新本地数据库中的数据,然后再将该操作日志发送给备份数据库所在的机器,并在收到操作日志成功写入备份数据库的消息时再执行下一个事务。因此依照现有技术,服务器在操作日志成功发送到备份数据库之前就对本地数据库中的数据进行了相应的更新,这种情况下,如果由于网络问题或者本地数据库等出现问题,导致操作日志未能成功发送给备份数据库所在的计算机,就会使得备份数据库中丢失了当前事务执行时对应的操作日志,那么备份数据库中的数据就无法根据该操作日志进行相应的更新,就会使得本地数据库和备份数据库之间的数据产生差异,因此就使得本地数据库和备份数据库之间的数据同步就没有正常实现。此外,又因为每次执行一个事务的时候,服务器都需要对于该事务的操作日志是否成功传输到备份数据库所在的计算机而进行确认信息的等待,这就使得服务器处理事务的整体性能下降。为此,非常需要一种改进的数据同步方法和设备(例如,服务器),以解决现有技术中本地数据库和备份数据库之间的数据同步无法正常实现这一技术问题,进一步地,也能够提升服务器处理事务的整体性能。在本上下文中,本发明的实施方式期望提供一种数据同步方法和设备。在本发明实施方式的第一方面中,提供了一种数据同步方法,例如可以包括:响应于本地数据库的事务集合执行完成的操作,获取所述事务集合的操作日志;将所述操作日志写入备份数据库;判断所述操作日志是否写入成功,如果是,则依据所述操作日志更新所述本地数据库的数据。在本发明的一个实施方式中,其中,所述判断所述操作日志是否写入成功,包括:判断是否接收到所述操作日志成功写入所述备份数据库的消息。在本发明的另一实施方式中,其中,所述获取所述事务集合的操作日志,包括:将所述事务集合的操作日志从内存读取至磁盘中;从所述磁盘中获取所述操作日志。在本发明的又一个实施方式中,例如还可以包括:触发所述备份数据库的服务程序依据所述操作日志更新所述备份数据库中的数据。在本发明的再一个实施方式中,其中,所述事务集合为:单个事务的集合或包含多个事务的事务组。在本发明实施方式的第二方面中,提供了一种数据同步设备,例如可以包括:获取模块,配置用于响应于本地数据库的事务集合执行完成的操作,获取所述事务集合的操作日志;写模块,配置用于将所述操作日志写入备份数据库;判断模块,配置用于判断所述操作日志是否写入成功;本地更新模块,配置用于在所述判断模块的结果为是的情况下,依据所述操作日志更新所述本地数据库的数据。在本发明的另一实施方式中,其中,所述判断模块,具体配置用于:判断是否接收到所述操作日志成功写入所述备份数据库的消息。在本发明的另一实施方式中,其中,所述获取模块,包括:第一读取子模块,配置用于将所述事务集合的操作日志从内存读取至磁盘中;第二读取子模块,配置用于从所述磁盘中获取所述操作日志。在本发明的另一实施方式中,例如还可以包括:触发模块,配置用于触发所述备份数据库的服务程序依据所述操作日志更新所述备份数据库中的数据。在本发明的另一实施方式中,其中,所述事务集合为:单个事务的集合或包含多个事务的事务组。在本实施方式中,在更新本地数据库的数据之前,先判断操作日志是否成功写入备份数据库了,在成功写入备份数据库的情况下再更新本地数据库的数据,就会避免现有技术中无法实现正常同步的现象,成功实现任何情况下本地数据库与备份数据库之间的数据同步。进一步地,事务组中的多个事务都执行完成之后,再批量获取该事务组中多个事务的操作日志,并且服务器也将事务组的操作日志一并发送给备份数据库,因此备份数据库所在的计算机也只需针对该事务组回复一次成功接收的消息即可,因此也降低了网络通信开销,提高了服务器处理事务的整体性能。附图说明通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:图1示意性地示出了适于实现本发明实施方式的示例性计算系统100的框图;图2示意性地示出了本发明的实施方式的一个示例性应用场景的框架示意图;图3示意性地示出了根据本发明一实施方式的方法流程图;图4示意性地示出了本发明一实施方式中步骤301的流程图;图5示意性地示出了根据本发明又一实施方式的方法流程图;图6示意性地示出了本发明一实施方式的设备(例如,服务器)的结构框架图;图7示意性地示出了本发明一实施方式的设备中获取模块601的结构框架图;图8示意性地示出了本发明又一实施方式的设备的结构框架图。在附图中,相同或对应的标号表示相同或对应的部分。具体实施方式下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。图1示出了适于实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算系统100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。下面将参照本发明实施方式的方法的流程图和设备(或系统)的框图描述本发明的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。根据本发明的实施方式,提出了一种数据同步方法和设备。在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。发明概述本发明人发现,因为现有技术中先对本地数据库的数据进行更新,再将操作日志发送给备份数据库,这可能会导致本地数据库的数据更新成功而操作日志却因为网络问题等未能成功发送给备份数据库的情况,而如果备份数据库丢失了该操作日志,就会无法实现本地数据库和备份数据库之间的数据同步。如果能够在一个事务执行的时候,先不对本地数据库进行更新,而是先将操作日志发送给备份数据库,在发送成功的情况下再更新本地数据库的数据,就可以实现本地数据库和备份数据库之间数据的成功同步。在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。应用场景总览首先参考图2,图2是本发明的实施方式的一个示例性应用场景的框架示意图。其中,用户通过客户端201与服务器202进行交互。本领域技术人员可以理解,图2所示的框架示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的适用范围不受到该框架任何方面的限制。需要注意的是,此处的客户端201可以是现有的、正在研发的或将来研发的、能够通过任何形式的有线或无线连接(例如,Wi-Fi、LAN、WAN、因特网等)与服务器202交互的任何客户端,包括但不限于:现有的、正在研发的或将来研发的、台式计算机、膝上型计算机、移动终端(包括智能手机、非智能手机、各种平板电脑)等。还需要注意的是,此处的服务器202仅是现有的、正在研发的或将来研发的、能够向用户提供服务的设备的一个示例。本发明的实施方式在此方面不受任何限制。服务器202通过本地数据库204和备份数据库203存储数据,其中,本地数据库204可以设置在服务器202上,也可以设置在与服务器202不同的计算机上,备份数据库203一般情况下设置在与服务器202不同的计算机上,并且通常与本地数据库204设置在不同的计算机上。服务器202可以响应于本地数据库204的事务集合执行完成的操作,获取所述事务集合的操作日志,将所述操作日志写入备份数据库203,并判断所述操作日志是否写入成功,如果是,则依据所述操作日志更新所述本地数据库204的数据。示例性方法下面结合图2的应用场景,参考图3来描述根据本发明示例性实施方式的数据同步方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。参考图3所示,为本发明公开的数据同步方法一实施方式的流程图,本实施方式具体例如可以包括:步骤301:响应于本地数据库的事务集合执行完成的操作,获取所述事务集合的操作日志。在本实施方式中,如果在本地数据库上有单个事物或者包含多个事物的事务组执行完成,则服务器可以获取到该单个事物或者包含多个事物的事务组的操作日志。其中,所述的事务集合即可以是单个事务的集合,也可以是包含多个事务的事务组。操作日志一般是网络设备、系统及服务程序等,在运作时产生的一个叫log(日志)的事件记录,而每一行操作日志都记载着事务发生的日期、时间、使用者及动作等相关操作的描述。其中,参考图4所示,获取所述事务集合的操作日志的步骤,具体可以包括:步骤401:将所述事务集合的操作日志从内存读取至磁盘中;在本实施方式中,事务执行之后,操作日志一般产生在服务器的内存中,如果服务器需要获取事务集合的操作日志,就需要先将操作日志从内存读取至磁盘中。步骤402:从所述磁盘中获取所述操作日志。服务器将操作日志从内存成功读取至磁盘之后,再从磁盘中获取事务集合的操作日志。接着返回图3,进入步骤302:将所述操作日志写入备份数据库。在本实施方式中,因为事务集合是在本地数据库上执行的,所以对于服务器来讲,如果需要再本地数据库和备份数据库之间实现数据同步,必须要把每一个事务集合的操作日志都写入备份数据库才能为数据同步做好准备。步骤303:判断所述操作日志是否写入成功,如果是,则进入步骤304。在本实施方式中,因为备份数据库一般是与本地数据库或者服务器设置在不同的计算机上,所以如果网络出现问题的话,服务器在获取到操作日志之后有可能无法成功写入备份数据库,因此,就需要在将操作日志写入备份数据库之后,判断该操作日志是否成功写入备份数据库。在成功将操作日志写入备份数据库的情况下,再执行后续步骤304。其中,在具体实施方式中,服务器判断操作日志是否写入成功,可以通过判断是否接收到所述操作日志成功写入所述备份数据库的消息来实现。一般情况下,备份数据库所在的计算机在操作日志成功写入备份数据库之后,会向服务器返回一个操作日志已经成功写入备份数据库的消息,如果服务器接收到该消息,则说明操作日志已经成功写入备份数据库。步骤304:依据所述操作日志更新所述本地数据库的数据。而服务器则在操作日志成功写入备份数据库之后,再依据操作日志的内容更新本地数据库中的数据,即是按照事务执行时所涉及的数据更新情况来对本地数据库中的数据做一个相对应的更新。例如,某个事务涉及本地数据库中的某条数据需要进行删除,那服务器就将本地数据库中的该条数据进行删除即可。在本实施方式中,因为服务器先将操作日志写入备份数据库,并在成功写入备份数据库的情况下,再依据操作日志来更新本地数据库中的数据,如果后续本地数据库的数据出现异常,也可以触发备份数据库依据操作日志来进行数据的更新,从而保证任何情况下本地数据库和备份数据库之间的数据都是一致的,成功实现在本地数据库和备份数据库之间数据的同步。参考图5所示,为本发明公开的数据同步方法又一实施方式的流程图,本实施方式具体例如可以包括:步骤501:响应于本地数据库的事务组执行完成的操作,获取所述事务组的操作日志。步骤502:将所述事务组的操作日志写入备份数据库。在本实施方式中,事务集合为一个包含多个事务的事务组,具体的步骤501~502的实现可以参考实施方式1的相关介绍,在此不再赘述。步骤503:判断是否接收到所述事务组的操作日志成功写入所述备份数据库的消息,如果是,进入步骤504,如果否,则返回步骤502。在本实施方式中,服务器判断是否接收到备份数据库所在的计算机返回的、事务组的操作日志成功写入备份数据库的消息,如果接收到了,则进入后续步骤504,如果没有接收到,则说明本次操作日志并未成功写入备份数据库,则可以返回步骤502,由服务器继续向备份数据库所在的计算机发送操作日志。在本实施方式中,需要说明的是,事务组中的多个事务的操作日志是一并发送给备份数据库的,即是待事务组中的多个事务均执行完毕,再一次性获取该多个事务的操作日志,然后以事务组为单位进行操作日志的发送过程。步骤504:依据所述事务组的操作日志更新所述本地数据库的数据。服务器待事务组中多个事务的操作日志均成功写入备份数据库之后,再以事务组为单位按照其中多个事务的操作日志分别更新本地数据库中该多个事务执行过程中涉及到的相关数据。在本实施方式中,待服务器根据事务组的操作日志批量更新本地数据库中的数据之后,如果后续服务器检测到本地数据库的数据出现异常,则还可以包括:步骤505:触发所述备份数据库的服务程序依据所述事务组的操作日志更新所述备份数据库中的数据。服务器触发备份数据库的服务程序依据步骤502成功写入的操作日志,来相应的更新备份数据库中的数据,更新之后备份数据库中的数据就和出现异常的本地数据库的数据是一致的,也不影响服务器对最近更新的数据的正常使用,避免了服务器数据丢失的现象,也成功实现了本地数据库和备份数据库的数据同步。进一步地,在本实施方式中,事务组中的多个事务都执行完成之后,再批量获取该事务组中多个事务的操作日志,并且服务器也将事务组的操作日志一并发送给备份数据库,因此备份数据库所在的计算机也只需针对该事务组回复一次成功接收的消息即可,因此也降低了网络通信开销,提高了服务器处理事务的整体性能。示例性设备在介绍了本发明示例性实施方式的方法之后,接下来,参考图6,图6是本发明实施方式公开的设备(例如,服务器)的一实施方式的结构示意图,本发明示例性实施方式的、数据同步设备,具体例如可以包括:获取模块601,配置用于响应于本地数据库的事务集合执行完成的操作,获取所述事务集合的操作日志。根据本发明的某些实施方式,所述的事务集合即可以是单个事务的集合,也可以是包含多个事务的事务组。其中,所述获取模块601,参考图7所示,具体可以包括:第一读取子模块701,配置用于将所述事务集合的操作日志从内存读取至磁盘中;第二读取子模块702,配置用于从所述磁盘中获取所述操作日志。写模块602,配置用于将所述操作日志写入备份数据库。判断模块603,配置用于判断所述操作日志是否写入成功。其中,所述判断模块603,具体配置用于:判断是否接收到所述操作日志成功写入所述备份数据库的消息。本地更新模块604,配置用于在所述判断模块的结果为是的情况下,依据所述操作日志更新所述本地数据库的数据。在本实施方式中,因为服务器先将操作日志写入备份数据库,并在成功写入备份数据库的情况下,再依据操作日志来更新本地数据库中的数据,如果后续本地数据库的数据出现异常,也可以触发备份数据库依据操作日志来进行数据的更新,从而保证任何情况下本地数据库和备份数据库之间的数据都是一致的,成功实现在本地数据库和备份数据库之间数据的同步。参考图8所示,为本发明提供的设备的又一实施方式的结构框图,除了图6所示意的结构之外,本实施方式具体例如还可以包括:获取模块601,配置用于响应于本地数据库的事务组执行完成的操作,获取所述事务组的操作日志。写模块602,配置用于将所述事务组的操作日志写入备份数据库。判断模块603,判断是否接收到所述事务组的操作日志成功写入所述备份数据库的消息。本地更新模块604,配置用于在所述判断模块的结果为是的情况下,依据所述事务组的操作日志更新所述本地数据库的数据。触发模块801,配置用于触发所述备份数据库的服务程序依据所述事务组的操作日志更新所述备份数据库中的数据。可见,本发明实施方式提供的设备(例如,服务器),不仅能够实现本地数据库和备份数据库之间的成功同步,还能降低网络通信开销,提高了服务器处理事务的整体性能。应当注意,尽管在上文详细描述中提及了设备(例如,服务器)的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1