CN104113571A - 数据冲突处理方法和装置 - Google Patents
数据冲突处理方法和装置 Download PDFInfo
- Publication number
- CN104113571A CN104113571A CN201310136397.2A CN201310136397A CN104113571A CN 104113571 A CN104113571 A CN 104113571A CN 201310136397 A CN201310136397 A CN 201310136397A CN 104113571 A CN104113571 A CN 104113571A
- Authority
- CN
- China
- Prior art keywords
- data
- conflict
- client
- type
- collision
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据冲突处理方法和装置,其中,该方法包括:确定第一客户端提交的数据所产生的数据冲突的冲突类型;通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理。本发明解决了相关技术中难以对数据冲突进行有效处理而导致的数据提交或者数据同步失败的技术问题,达到了对数据冲突的有效处理和对数据库的有效维护的技术效果。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据冲突处理方法和装置。
背景技术
在客户端与服务器进行数据同步的过程中,通常都会有多个客户端存在,这样就不可避免地会出现两个或者两个以上的客户端处理了相同的数据的情况,或者是两个或者两个以上的客户端同时对服务器侧的一个数据项进行更改,这样就很容易会出现数据冲突。目前,按照客户端所请求或者提交的数据类型的不同,存在着多种数据冲突类型。
数据冲突的存在,使得客户端所请求的数据难以被有效的保存或者是导致数据同步失败。相关技术中也存在一些对数据冲突进行处理的方法,然而,这些处理方法一股都是以最后提交的数据作为最终处理成功的数据,或者是以最先提交的数据作为最终处理成功的数据,这种采用单一的数据处理方式对数据冲突进行处理的方式很难对数据冲突进行有效处理从而导致数据提交或者数据同步的失败。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据冲突处理方法和装置,以至少解决现有技术中难以对数据冲突进行有效处理而导致的数据提交或者数据同步失败的技术问题。
根据本发明实施例的一个方面,提供了一种数据冲突处理方法,包括:确定第一客户端提交的数据所产生的数据冲突的冲突类型:通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理。
优选地,通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理包括:确定所述第一客户端请求的数据的业务类型;通过预先定义的与所述业务类型对应的冲突处理策略组中与所述数据类型对应的冲突处理策略对所述数据冲突进行处理,其中,不同的业务类型对应不同的冲突处理策略组,一个所述冲突处理策略组中包含对多种冲突类型的数据冲突进行处理的冲突处理策略。
优选地,通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理包括:生成与所述第一客户端提交的数据类型对应的数据替换所述第一客户端提交的数据;和/或从发生冲突的客户端提交的数据中选择一个进行保存。
优选地,从发生冲突的客户端请求的数据中选择一个进行保存包括:按照预先定义的规则从发生冲突的客户端提交的数据中选择一个进行保存,其中,所述预先定义的规则包括以下至少之一:保存提交时间最早的数据,保存提交时间最晚的数据,保存数据完整度最高的数据,保存客户端优先级最高的客户端所提交的数据。
优选地,在所述数据冲突为以下之一的情况下,生成与所述第一客户端提交的数据类型对应的数据替换所述第一客户端提交的数据:主键冲突、业务编号冲突、字典项冲突;或者,在所述数据冲突为业务编号冲突和/或数据版本冲突的情况下,从发生冲突的客户端请求的数据中选择一个进行保存。
优选地,确定所述第一客户端请求的数据所产生的数据冲突的冲突类型包括:接收所述第一客户端提交的数据;确定所述第一客户端所提交的数据的数据类型;调用预先定义的与所述数据类型对应的冲突判断策略判断所述第一客户端提交的数据是否会产生数据冲突;如果会产生数据冲突,则将与所述第一客户端提交的数据的数据类型对应的冲突类型作为确定的冲突类型,其中,所述数据类型与所述冲突类型一一对应。
优选地,调用预先定义的与所述数据类型对应的冲突判断策略包括:从数据同步规则库中调用预先定义的与所述数据类型对应的冲突判断策略,其中,所述数据同步规则库中还存储有预先定义的一个或多个所述冲突处理策略。
优选地,确定数据冲突的冲突类型包括以下至少之一:在所述第一客户端提交的数据的数据类型是主键,且所述第一客户端提交数据时生成的主键与第二客户端生成的主键相同的情况下,则确定产生了主键冲突;在所述第一客户端提交的数据的数据类型是业务编号,且本地已经存储了与所述客户端提交的业务编号相同的业务编号的情况下,确定产生了业务编号冲突;在所述第一客户端提交的数据的数据类型是字典项,且所述第一客户端提交的字典项与本地的字典项不同的情况下,确定产生了字典项冲突;在所述第一客户端提交的数据的数据类型是数据,且所述第一客户端与所述第二客户端同时提交了同一数据的情况下,确定产生了数据版本冲突。
根据本发明实施例的另一方面,提供了一种数据冲突处理装置,包括:确定单元,用于确定客户端提交的数据所产生的数据冲突的冲突类型;处理单元,用于通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理。
优选地,所述处理单元包括:确定模块,用于确定所述客户端请求的数据的业务类型;处理模块,用于通过预先定义的与所述业务类型对应的冲突处理策略组中与所述数据类型对应的冲突处理策略对所述数据冲突进行处理,其中,不同的业务类型对应不同的冲突处理策略组,一个所述冲突处理策略组中包含对多种冲突类型的数据冲突进行处理的冲突处理策略。
在本发明实施例中,通过预定对每种数据冲突类型定义其自身对应的冲突处理策略,从而使得在出现数据冲突时可以按照数据冲突类型所对应的冲突处理策略进行处理,这些系统预定的冲突处理策略是可调的,解决了相关技术中难以对数据冲突进行有效处理而导致的数据提交或者数据同步失败的技术问题,达到了对数据冲突的有效处理和对数据库的有效维护的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据冲突处理系统的一种优选结构示意图
图2是根据本发明实施例的数据冲突处理装置的一种优选结构框图;
图3是根据本发明实施例的数据冲突处理装置的另一种优选结构框图;
图4是根据本发明实施例的数据冲突处理装置的又一种优选结构框图;
图5是根据本发明实施例的数据冲突处理方法的一种优选流程图;
图6是根据本发明实施例的数据冲突处理方法的另一种优选流程图;
图7是根据本发明实施例的数据冲突处理方法的另一种优选流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
在描述本发明的各实施例的进一步细节之前,将参考图1来描述可用于实现本发明的原理的一个计算体系结构示意图。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表示来描述本发明的各实施例。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器系统中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然而,尽管在上述上下文中描述本发明,但它并不意味若限制性的,如本领域的技术人员所理解的,后文所描述的动作和操作的各方面也可用硬件来实现。
转向附图,其中相同的参考标号指代相同的元素,本发明的原理被示为在一个合适的计算环境中实现。以下描述基于所述的本发明的实施例,并且不应认为是关于此处未明确描述的替换实施例而限制本发明。
图1示出了实现本实施例的原理的一个示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应将该计算系统解释为对图1所示的任一组件或其组合具有任何依赖或需求。
在其最基本的配置中,图1中的数据冲突处理系统至少包括:一个网站的服务器102以及一个或多个客户端104。服务器102可以包括但不限于用于存储数据的存储装置以及与客户端通信的传输装置;客户端104可以包括:微处理器MCU、与服务器通信的传输装置、与用户交互的装置。在本实施例中,"系统"也可以为能够执行软件、固件来实现功能的任何硬件组件或硬件组件的组合,系统可以是分布式的,以实现分布式功能。
如本实施例所使用的,术语"模块"、"组件"或"单元"可以指在数据冲突处理的系统上执行的软件对象或例程。此处所描述的不同组件、模块、单元、引擎和服务可被实现为在数据冲突处理系统上执行(例如,作为单独的线程)的对象或进程。尽管此处所描述的系统和方法较佳地以软件来实现,但是硬件或软件和硬件的组合的实现也是可能并被构想的。
在其最基本的配置中,图2是根据本发明实施例的数据冲突处理装置的结构示意图,该装置优选地可以位于上述服务器102中。如图2所示,该数据冲突处理装置包括:
确定单元202,用于确定客户端提交的数据所产生的数据冲突的冲突类型:即,在收到客户端提交的数据后,先判断该提交的数据是否会产生数据冲突,如果会,则判断冲突的冲突类型。上述的冲突类型可以是数据本身出现冲突、主键冲突等等。
处理单元204,与确定单元202耦合,用于通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理。在确定出现数据冲突后,可以调用预先设定好的与该数据冲突类型对应的冲突处理策略进行处理。
在上述优选实施方式中,通过预定对每种数据冲突类型定义其自身对应的冲突处理策略,从而使得在出现数据冲突时可以按照数据冲突类型所对应的冲突处理策略进行处理,这些系统预定的冲突处理策略是可调的,解决了相关技术中难以对数据冲突进行有效处理而导致的数据提交或者数据同步失败的技术问题,达到了对数据冲突的有效处理和对数据库的有效维护,满足了各种业务场景处理数据冲突的需要。
优选地,对于这些系统中预先设定好的冲突处理策略可以是系统预先定义的,也可以人为根据当前业务的需要设定的。例如,如果产生了数据本身的冲突,那么可以从系统中提取数据本身的冲突所对应的冲突处理策略,如果有两种对数据本身的冲突进行处理的策略:
1)通过数据版本进行控制,例如,只有获取到服务器上最新版本的数据的客户端所处理得到的数据才会被保存:具体实现方式可以是:在数据表中建立一个数值型的version字段,在对数掘进行处理时,每对该数据进行一次处理,就更新这个version字段(例如,每对该数据进行一次处理,就使得version字段的值递增)。只有取得最新的version值的客户端才可以正常保存数据,而其它未取得最新的version值的客户端,处理得到的数据将被丢弃,并产生数据处理异常的指示。
2)不通过版本进行控制,对所有客户端处理得到的数据都进行保持,这也就相当于直接保存了时间上最后提交的数据。
在这种情况下,就可以按照系统中定义的数据冲突处理策略进行冲突处理,如果定义的是数据版本控制方式,那么就按照第一种策略对数据本身的冲突进行处理。优选地,也可以根据当前业务的需要对数据冲突处理策略进行更改,如果用户希望保存时间上最后提交的数据,那么就可以将系统预定的对数据本身的冲突的处理策略修改为不通过版本进行控制,而是保存时间上最后提交的数据,从而实现了按照业务需求对数据冲突进行灵活处理的效果。
考虑到不同业务的情况是不同的,例如,在网站上进行秒杀活动的时候需要的冲突处理处理策略就是先点击先得,也就是需要保存最先进行提交的用户的数据,然而,如果是对质量信息进行更新时,可能需要保存时间点上后提交的数据以获取最新的信息。为了可以满足不同业务的不同需求,在一个优选实施方式中,上述处理单元可以如图3所示,包括:确定模块302,用于确定所述第一客户端请求的数据的业务类型;处理模块304,用于通过预先定义的与所述业务类型对应的冲突处理策略组中与所述数据类型对应的冲突处理策略对所述数据冲突进行处理,其中,不同的业务类型对应不同的冲突处理策略组,一个所述冲突处理策略组中包含对多种冲突类型的数据冲突进行处理的冲突处理策略。即,为每种业务设置一个冲突处理策略组,在每种业务类型所对应的冲突处理策略组中存储有该业务类型所对应的各个数据类型所对应的冲突策略。通过这种方式就可以有效地对不同业务按照业务需求设定其对应的冲突处理策略,从而满足不同业务的需求。按照业务的不同,可以定义不同的处理规则,类似的业务也可以使用相同的规则。
处理单元在对数据冲突进行处理时可以有以下两种处理策略
1)生成与所述第一客户端提交的数据类型对应的数据替换所述第一客户端提交的数据;即,如果出现数据冲突,那么就由服务器统一生成一个数据来替代客户端提交的数据。
2)从发生冲突的客户端提交的数据中选择一个进行保存;即,如果出现数据冲突,那么服务器就按照预定的规则从客户端所请求的数据中选择一个进行存储。优选地,上述预定的规定的规则可以包括但不限于以下至少之一:保存提交时间最早的数据,保存提交时间最晚的数据,保存数据完整度最高的数据,保存客户端优先级最高的客户端所提交的数据。
在上述各个优选实施方式中,数据冲突类型可以包括但不限于以下至少之一:主键冲突、业务编号冲突、字典项冲突以及数据版本冲突。在本优选实施方式中,还提供了对上述几种类型的数据冲突类型进行判断的方式,确定单元202用于按照以下策略进行冲突判断:
1)在所述第一客户端提交的数据的数据类型是主键,且所述第一客户端提交数据时生成的主键与第二客户端生成的主键相同的情况下,则确定产生了主键冲突;
2)在所述第一客户端提交的数据的数据类型是业务编号,且服务器端已经存储了与所述客户端提交的业务编号相同的业务编号的情况下,确定产生了业务编号冲突;和/或
3)在所述第一客户端提交的数据的数据类型是字典项,且所述第一客户端提交的字典项与所述服务器端的字典项不同的情况下,确定产生了字典项冲突;和/或
4)在所述第一客户端提交的数据的数据类型是数据,且所述第一客户端与所述第二客户端同时提交了同一数据的情况下,确定产生了数据版本冲突。
考虑到上述冲突类型中各个类型的特殊性,可以按照以下方式对其进行冲突处理:在数据冲突类型为主键冲突、业务编号冲突、字典项冲突中的一种时,可以生成与所述第一客户端提交的数据类型对应的数据替换所述第一客户端提交的数据来对数据冲突进行处理;在数据冲突类型为业务编号冲突和/或数据版本冲突时,可以从发生冲突的客户端请求的数据中选择一个进行保存来对数据冲突进行处理。
在一个优选实施方式中,如图4所示,确定单元202包括:
接收模块402,用于接收所述第一客户端向服务器提交的数据;
数据类型确定模块404,与接收模块402耦合,用于确定所述第一客户端所提交的数据的数据类型;
判断模块406,与数据类型确定模块404耦合,用于调用预先定义的与所述数据类型对应的冲突判断策略判断所述第一客户端提交的数据是否会产生数据冲突:
冲突类型确定模块408,与判断模块406耦合,用于在判断模块判断会产生数据冲突的情况下,将与所述第一客户端提交的数据的数据类型对应的冲突类型作为确定的冲突类型,其中,所述数据类型与所述冲突类型一一对应。
在一个优选实施方式中,上述判断模块可以是从数据同步规则库中调用预先定义的与所述数据类型对应的冲突判断策略,其中,所述数据同步规则库中还存储有预先定义的一个或多个所述冲突处理策略。
值得注意的是,本发明的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本发明的众所周知的计算系统、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器系统、基于微处理的系统、小型机、大型计算机、以及包括任一上述装置或者系统或设备的分布式计算环境。
基于上述图2至4所示的数据冲突的处理装置,本优选实施例中还提供了一种优选的数据冲突的处理方法,如图5所示,包括以下步骤:
步骤S502:确定第一客户端提交的数据所产生的数据冲突的冲突类型;即,在收到客户端提交的数据后,先判断该提交的数据是否会产生数据冲突,如果会,则判断冲突的冲突类型。上述的冲突类型可以是数据本身出现冲突、主键冲突等等。
步骤S504:通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理。在确定出现数据冲突后,可以调用预先设定好的与该数据冲突类型对应的冲突处理策略进行处理,对于这些系统中预先设定好的冲突处理策略可以是系统预先定义的,也可以人为根据当前业务的需要设定的。例如,如果产生了数据本身的冲突,那么可以从系统中提取数据本身的冲突所对应的冲突处理策略,如果有两种对数据本身的冲突进行处理的策略:
1)通过数据版本进行控制,例如,只有获取到服务器上最新版本的数据的客户端所处理得到的数据才会被保存:具体实现方式可以是:在数据表中建立一个数值型的version字段,在对数掘进行处理时,每对该数据进行一次处理,就更新这个version字段(例如,每对该数据进行一次处理,就使得version字段的值递增)。只有取得最新的version值的客户端才可以正常保存数据,而其它未取得最新的version值的客户端,处理得到的数据将被丢弃,并产生数据处理异常的指示。
2)不通过版本进行控制,对所有客户端处理得到的数据都进行保持,这也就相当于直接保存了时间上最后提交的数据。
在这种情况下,就可以按照系统中定义的数据冲突处理策略进行冲突处理,如果定义的是数据版本控制方式,那么就按照第一种策略对数据本身的冲突进行处理。优选地,也可以根据当前业务的需要对数据冲突处理策略进行更改,如果用户希望保存时间上最后提交的数据,那么就可以将系统预定的对数据本身的冲突的处理策略修改为不通过版本进行控制,而是保存时间上最后提交的数据,从而实现了按照业务需求对数据冲突进行灵活处理的效果,满足了各种业务场景处理数据冲突的需要。
优选地,上述步骤S502可以包括以下步骤:
步骤S1:确定所述第一客户端请求的数据的业务类型;
步骤S2:通过预先定义的与所述业务类型对应的冲突处理策略组中与所述数据类型对应的冲突处理策略对所述数据冲突进行处理,其中,不同的业务类型对应不同的冲突处理策略组,一个所述冲突处理策略组中包含对多种冲突类型的数据冲突进行处理的冲突处理策略。
在一个优选实施方式中,提供了两种对数据冲突进行处理的策略
1)服务器生成与所述第一客户端提交的数据类型对应的数据替换所述第一客户端提交的数据;在所述数据冲突为以下之一的情况下:主键冲突、业务编号冲突、字典项冲突,可以按照该策略进行处理。
2)所述服务器从发生冲突的客户端提交的数据中选择一个进行保存。优选地,该策略可以包括:服务器按照预先定义的规则从发生冲突的客户端提交的数据中选择一个进行保存,其中,所述预先定义的规则包括以下至少之一:保存提交时间最早的数据,保存提交时间最晚的数据,保存数据完整度最高的数据,保存客户端优先级最高的客户端所提交的数据。在所述数据冲突为业务编号冲突和/或数据版本冲突的情况下,可以采用此策略进行处理。
优选地,在上述步骤S502中,可以如图6所示,具体包括以下步骤
步骤S602接收所述第一客户端向所述服务器提交的数据;
步骤S604确定所述第一客户端所提交的数据的数据类型;
步骤S606:调用预先定义的与所述数据类型对应的冲突判断策略判断所述第一客户端提交的数据是否会产生数据冲突;优选地,可以是从数据同步规则库中调用预先定义的与所述数据类型对应的冲突判断策略,其中,所述数据同步规则库中还可以存储有预先定义的一个或多个所述冲突处理策略。
步骤S608:如果会产生数据冲突,则将与所述第一客户端提交的数据的数据类型对应的冲突类型作为确定的冲突类型,其中,所述数据类型与所述冲突类型一一对应。
在上述各个优选实施方式中,可以按照以下策略确定数据冲突的冲突类型包括
1)在所述第一客户端提交的数据的数据类型是主键,且所述第一客户端提交数据时生成的主键与第二客户端生成的主键相同的情况下,则确定产生了主键冲突;和/或
2)在所述第一客户端提交的数据的数据类型是业务编号,且服务器端已经存储了与所述客户端提交的业务编号相同的业务编号的情况下,确定产生了业务编号冲突;和/或
3)在所述第一客户端提交的数据的数据类型是字典项,且所述第一客户端提交的字典项与所述服务器端的字典项不同的情况下,确定产生了字典项冲突;和/或
4)在所述第一客户端提交的数据的数据类型是数据,且所述第一客户端与所述第二客户端同时提交了同一数据的情况下,确定产生了数据版本冲突。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
优选地,本实施例还可以提供一个用于执行上述各个实施例的计算机程序以及保存上述计算机程序的载体,即本发明上述实施例可以通过一个合适的计算体系结构来进行符合自然规律的运行过程。另外,尽管在上述上下文中描述本发明,但上述用于实现执行步骤的计算机程序并不意味着是限制性的,所描述的动作和操作的各方面也可用硬件来实现。
本实施例中还提供了一个优选的实施方式对上述方法进行进一步描述。
在本优选实施例中提供了一种解决数据冲突的方案,可以为客户端与服务器进行数据同步过程中出现的冲突实现所需而变的处理。即不同的数据,可以制定不同的冲突解决方案,从而满足各种业务场景处理数据冲突的需要。
优选地,在对数据进行处理时,可以通过数据层的程序中专门进行数据操作的对象(DataAccessObject,简称为DAO),DAO主要实现对数据的CRUD(即,create、read、update、delete)的操作。在本优选实施例中,可以在DAO层添加规则处理以实现对数据冲突的差异化处理,既可以兼容数据版本冲突处理的方式也可以定义符合业务规则的数据冲突解决方法,如图7所示,主要包括以下步骤(步骤S702至步骤S706):
步骤S702:定义数据冲突处理规则,优选地,该处理规则以基于java脚本语言进行定义,并将规则注册到规则同步库中。
步骤S704:数据同步冲突检测,在客户端执行数据同步(提交)时,数据发送到服务端,首先由服务端规则处理装置根据规则配置进行数据冲突检测,按照客户端请求的数据项(数据类型)从规则与数据项(数据类型)对应表中调用相应的规则。
数据类型与规则可以按照以下方式进行对应
1)主键,对应着冲突检测规则:Rule.pkConflict(主键冲突),优选地,主键可以有数字、字符串等类型,多个客户端产生数据的主键是否唯一需要服务端进行检测。
2)业务编号,对应着冲突规则:Rule.snConnict(业务编号冲突),优选地,在对信息的管理应用中,业务可以都拥有与业务相关的独立编号,这些编号有生成规则,同时也都具有唯一性。
3)字典项,对应着冲突规则:Rule.dictConflict(字典项冲突),优选地,字典项是填写表单数据时的可选择项,多数情况下,字典项是稳定不变的,然而在一些较为极端的情况下,字典项也是可以被维护和修改的。
4)数据版本,对应着冲突规则:Rule.version Conflict(数据版本冲突),优选地,数据行本身都带有版本号,每次修改数据,版本号都会自动增长,根据数据版本号可以检测是否出现多个客户端同时修改了相同数据。
在确定数据冲突存在的时候,可以由规则引擎执行规则表达式,根据规则判断是否有冲突存在,通过规则的执行返回一个布尔值,如果返回值是false,则表示没有冲突;如果返回值是true,则表示存在冲突。判断是否存在冲突以及冲突的类型可以有以下几种情况:
1)主键冲突,在多客户端环境下,多个客户端如果采用相同的规则生成的主键时,可能会产生不同的客户端生成相同的主键值,这样就会导致在数据同步到服务器时发生数据冲突,从而导致数据同步失败。针对这种冲突,规则根据比对主键是否唯一即可判断是否存在冲突。
2)业务编号冲突,业务编号是根据信息环境中的具体业务需求确定的,不同的业务会有不同的编号规则,在多客户端环境下,同一个编号规则会在不同的客户端上产生相同的编号,这个编号可能不会导致数据同步的失败,却会产生业务数据上的混乱。这种冲突的判断通过比对编号值是否与服务端已有编号重复就可以确定。
3)字典项冲突,字典项冲突主要有两张情况:一种是发生在客户端自行修改字典项的情况下,当客户端可以自定义字典项时,这种冲突必然会发生,当客户端的字典项无法与服务端进行对应时,即认为发生字典项冲突;另一种是当服务端的字典项发生变化时,也可能会导致客户端与服务端的字典项无法对应,这时也认为发生字典项冲突。
4)数据版本冲突,多客户端的环境下,当多个客户端同时修改了同一数据时,一般的处理规则是提交较晚的数据无法保存,这种冲突是根据数据本身携带的版本信息决定的。通过对数据版本的比对,可以判断是否存在数据版本冲突。
如果确定不存在冲突,那么可以将数据直接交由DAO进行保存。如果存在冲突,则由规则处理部分执行冲突解决方法。
步骤S706:数据同步冲突处理,在执行数据同步冲突处理的规则时,规则可以包含版本控制方式和自定义方式。其中,自定义方式对应着自定义规则,对于出现冲突的数据可以啊按照预定义的规则进行合并、废弃、优先级判断、权限判断等各种业务的处理。
不同冲突类型的冲突处理规则,以及冲突处理后得到的冲突结构可以是如下的方式
1)主键冲突
对于主键冲突,如果通过统一的唯一标识生成主键,那么每个客户端就会产生唯一的主键值,这种情况并不会需要专门的冲突处理规则进行处理。如果主键由服务器生成,客户端需要从服务器获取,这样可以保证主键符合一定的规则,且不发生冲突,但是这种方式依赖于网络,离线情况下无法实现。
主键由服务端生成,客户端按照需要从服务端获取,这种方式可以由冲突规则进行处理。
主键由客户端自己按规则生成,在向服务器同步时再由规则判断是否冲突,如果冲突则由规则返回唯一的主键以替换客户端的主键。通过这种自定义的规则对冲突进行检测与处理,既可以在检测到冲突时由规则返回给客户端一个唯一的主键,也可以根据需求做其他处理,具体的执行方式可以由自定义规则本身确定。
2)业务编号冲突
业务编号一般具有特定的规则,根据业务的不同,客户端会产生不同的编号,只有当不同的客户端处理相同的业务时,才会出现业务编号的冲突。对于业务编号冲突的处理可以由服务器自定义处理规则,并确定处理的策略,例如:如果检测到业务编号冲突,则在服务器侧生成业务编号,再将生成的业务编号返回给客户端:或者是在检测到业务编号冲突时,按照业务规则,从多个冲突的业务编号中选取一个符合规则要求的,其它的废弃。
通过上述由服务器按业务自定义的规则进行冲突处理,实现了对业务编号冲突的差异化处理。
3)字典项冲突
字典项在某些特定情况下是由客户端进行管理的,这样就很容易导致字典项冲突,字典项冲突主要包括两种:一种是字典的id出现冲突,一种是字典项本身出现冲突。对应的对字典项冲突的处理策略也有两种:如果是字典id冲突,那么由服务器生成id来解决:如果是字典项本身冲突,那么就通过自定义的规则对字典项进行校验比对,在发现冲突时可以通过覆盖,或者给客户端返回错误的方式进行处理。通过上述服务器按业务自定义估计对冲突进行处理,可以实现字典项冲突的差异化处理。
4)数据版本冲突
数据版本冲突是在数据同步或者数据提交时最常出现的冲突类型,多个客户端在处理相同的数据时必然会发生版本冲突。可以采用以下两种策略进行数据版本冲突的检测:1)检测数据本身的版本号;2)检测数据的关键字段。
对于数据版本冲突的处理也可以采用以下两种策略进行处理:1)按照数据版本管理的策略只接受最早提交的版本;2)按照自定义规则确定,例如:按照提交时间、数据完整度、用户角色优先和后提交的直接覆盖先提交的数据等等。通过简单的数据版本管理,可以实现早提交的数据不会被随意覆盖,使用自定义规则进行处理可以满足不同业务的差异化处理,实现对数据版本的良好管理。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
从以上的描述中,可以看出,本发明实现了如下技术效果:通过预定对每种数据冲突类型定义其自身对应的冲突处理策略,从而使得在出现数据冲突时可以按照数据冲突类型所对应的冲突处理策略进行处理,这些系统预定的冲突处理策略是可调的,解决了相关技术中难以对数据冲突进行有效处理而导致的数据提交或者数据同步失败的技术问题,达到了对数据冲突的有效处理和对数据库的有效维护,满足了各种业务场景处理数据冲突的需要。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据冲突处理方法,其特征在于,包括
确定第一客户端提交的数据所产生的数据冲突的冲突类型;
通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理。
2.根据权利要求1所述的方法,其特征在于,通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理包括:
确定所述第一客户端请求的数据的业务类型;
通过预先定义的与所述业务类型对应的冲突处理策略组中与所述数据类型对应的冲突处理策略对所述数据冲突进行处理,其中,不同的业务类型对应不同的冲突处理策略组,一个所述冲突处理策略组中包含对多种冲突类型的数据冲突进行处理的冲突处理策略。
3.根据权利要求1所述的方法,其特征在于,通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理包括:
生成与所述第一客户端提交的数据类型对应的数据替换所述第一客户端提交的数据:和/或
从发生冲突的客户端提交的数据中选择一个进行保存。
4.根据权利要求3所述的方法,其特征在于,所述从发生冲突的客户端请求的数据中选择一个进行保存包括:
按照预先定义的规则从发生冲突的客户端提交的数据中选择一个进行保存,其中,所述预先定义的规则包括以下至少之一:保存提交时间最早的数据,保存提交时间最晚的数据,保存数据完整度最高的数据,保存客户端优先级最高的客户端所提交的数据。
5.根据权利要求3所述的方法,其特征在于,
在所述数据冲突为以下之一的情况下,生成与所述第一客户端提交的数据类型对应的数据替换所述第一客户端提交的数据:主键冲突、业务编号冲突、字典项冲突:或者,
在所述数据冲突为业务编号冲突和/或数据版本冲突的情况下,从发生冲突的客户端请求的数据中选择一个进行保存。
6.根据权利要求1所述的方法,其特征在于,确定所述第一客户端请求的数据所产生的数据冲突的冲突类型包括:
接收所述第一客户端提交的数据;
确定所述第一客户端所提交的数据的数据类型;
调用预先定义的与所述数据类型对应的冲突判断策略判断所述第一客户端提交的数据是否会产生数据冲突:
如果会产生数据冲突,则将与所述第一客户端提交的数据的数据类型对应的冲突类型作为确定的冲突类型,其中,所述数据类型与所述冲突类型一一对应。
7.根据权利要求6所述的方法,其特征在于,调用预先定义的与所述数据类型对应的冲突判断策略包括:
从数据同步规则库中调用预先定义的与所述数据类型对应的冲突判断策略,其中,所述数据同步规则库中还存储有预先定义的一个或多个所述冲突处理策略。
8.根据权利要求1至7中任一项所述的方法,其特征在于,确定数据冲突的冲突类型包括以下至少之一:
在所述第一客户端提交的数据的数据类型是主键,且所述第一客户端提交数据时生成的主键与第二客户端生成的主键相同的情况下,则确定产生了主键冲突;
在所述第一客户端提交的数据的数据类型是业务编号,且本地已经存储了与所述客户端提交的业务编号相同的业务编号的情况下,确定产生了业务编号冲突;
在所述第一客户端提交的数据的数据类型是字典项,且所述第一客户端提交的字典项与本地的字典项不同的情况下,确定产生了字典项冲突;
在所述第一客户端提交的数据的数据类型是数据,且所述第一客户端与所述第二客户端同时提交了同一数据的情况下,确定产生了数据版本冲突。
9.一种数据冲突处理装置,其特征在于,包括
确定单元,用于确定客户端提交的数据所产生的数据冲突的冲突类型;
处理单元,用于通过预先定义的与所述冲突类型对应的冲突处理策略对所述数据冲突进行处理。
10.根据权利要求9所述的装置,其特征在于,所述处理单元包括
确定模块,用于确定所述客户端请求的数据的业务类型;
处理模块,用于通过预先定义的与所述业务类型对应的冲突处理策略组中与所述数据类型对应的冲突处理策略对所述数据冲突进行处理,其中,不同的业务类型对应不同的冲突处理策略组,一个所述冲突处理策略组中包含对多种冲突类型的数据冲突进行处理的冲突处理策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310136397.2A CN104113571A (zh) | 2013-04-18 | 2013-04-18 | 数据冲突处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310136397.2A CN104113571A (zh) | 2013-04-18 | 2013-04-18 | 数据冲突处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104113571A true CN104113571A (zh) | 2014-10-22 |
Family
ID=51710204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310136397.2A Pending CN104113571A (zh) | 2013-04-18 | 2013-04-18 | 数据冲突处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104113571A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808559A (zh) * | 2014-12-29 | 2016-07-27 | 深圳市金蝶中间件有限公司 | 处理数据冲突的方法及装置 |
CN105915572A (zh) * | 2015-12-12 | 2016-08-31 | 乐视移动智能信息技术(北京)有限公司 | 一种移动终端处理数据冲突的方法和装置 |
CN106301825A (zh) * | 2015-05-18 | 2017-01-04 | 中兴通讯股份有限公司 | Dpi规则的生成方法及装置 |
CN106354732A (zh) * | 2015-07-17 | 2017-01-25 | 中国石油化工股份有限公司 | 一种支持并发协同的离线数据版本冲突解决方法 |
WO2017050176A1 (zh) * | 2015-09-25 | 2017-03-30 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN109582666A (zh) * | 2018-09-29 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 数据主键生成方法、装置、电子设备及存储介质 |
CN111428453A (zh) * | 2019-12-31 | 2020-07-17 | 杭州海康威视数字技术股份有限公司 | 批注同步过程中的处理方法、装置以及系统 |
WO2021044322A1 (en) * | 2019-09-06 | 2021-03-11 | Axisplay Limited | Tablet computer for completing form |
CN112765144A (zh) * | 2021-01-22 | 2021-05-07 | 武汉大学 | 一种健康医疗大数据合并后冲突项的检查与校正方法 |
CN117520460A (zh) * | 2024-01-05 | 2024-02-06 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110813A (zh) * | 2006-07-17 | 2008-01-23 | 深圳市艾派应用系统有限公司 | 一种保持兼容的移动数据同步方法 |
US20110153787A1 (en) * | 2009-12-23 | 2011-06-23 | International Business Machines Corporation | Information technology asset management |
CN102314411A (zh) * | 2010-06-30 | 2012-01-11 | 百度在线网络技术(北京)有限公司 | 处理词条编创冲突的方法与系统 |
CN102360357A (zh) * | 2011-09-29 | 2012-02-22 | 南京国电南自轨道交通工程有限公司 | Scada系统网状关系数据库节点的数据同步组件 |
CN102945260A (zh) * | 2012-10-18 | 2013-02-27 | 江苏南开之星软件技术有限公司 | 一种基于用户级文件双向同步的冲突检测方法 |
-
2013
- 2013-04-18 CN CN201310136397.2A patent/CN104113571A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110813A (zh) * | 2006-07-17 | 2008-01-23 | 深圳市艾派应用系统有限公司 | 一种保持兼容的移动数据同步方法 |
US20110153787A1 (en) * | 2009-12-23 | 2011-06-23 | International Business Machines Corporation | Information technology asset management |
CN102314411A (zh) * | 2010-06-30 | 2012-01-11 | 百度在线网络技术(北京)有限公司 | 处理词条编创冲突的方法与系统 |
CN102360357A (zh) * | 2011-09-29 | 2012-02-22 | 南京国电南自轨道交通工程有限公司 | Scada系统网状关系数据库节点的数据同步组件 |
CN102945260A (zh) * | 2012-10-18 | 2013-02-27 | 江苏南开之星软件技术有限公司 | 一种基于用户级文件双向同步的冲突检测方法 |
Non-Patent Citations (1)
Title |
---|
满靖等: "信息集成中的数据冲突解决策略", 《计算机与信息技术》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808559A (zh) * | 2014-12-29 | 2016-07-27 | 深圳市金蝶中间件有限公司 | 处理数据冲突的方法及装置 |
CN106301825B (zh) * | 2015-05-18 | 2020-10-16 | 南京中兴新软件有限责任公司 | Dpi规则的生成方法及装置 |
CN106301825A (zh) * | 2015-05-18 | 2017-01-04 | 中兴通讯股份有限公司 | Dpi规则的生成方法及装置 |
CN106354732A (zh) * | 2015-07-17 | 2017-01-25 | 中国石油化工股份有限公司 | 一种支持并发协同的离线数据版本冲突解决方法 |
CN106354732B (zh) * | 2015-07-17 | 2019-07-05 | 中国石油化工股份有限公司 | 一种支持并发协同的离线数据版本冲突解决方法 |
WO2017050176A1 (zh) * | 2015-09-25 | 2017-03-30 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN106557497A (zh) * | 2015-09-25 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN105915572A (zh) * | 2015-12-12 | 2016-08-31 | 乐视移动智能信息技术(北京)有限公司 | 一种移动终端处理数据冲突的方法和装置 |
CN109582666A (zh) * | 2018-09-29 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 数据主键生成方法、装置、电子设备及存储介质 |
WO2021044322A1 (en) * | 2019-09-06 | 2021-03-11 | Axisplay Limited | Tablet computer for completing form |
CN111428453A (zh) * | 2019-12-31 | 2020-07-17 | 杭州海康威视数字技术股份有限公司 | 批注同步过程中的处理方法、装置以及系统 |
CN111428453B (zh) * | 2019-12-31 | 2023-09-05 | 杭州海康威视数字技术股份有限公司 | 批注同步过程中的处理方法、装置以及系统 |
CN112765144A (zh) * | 2021-01-22 | 2021-05-07 | 武汉大学 | 一种健康医疗大数据合并后冲突项的检查与校正方法 |
CN117520460A (zh) * | 2024-01-05 | 2024-02-06 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
CN117520460B (zh) * | 2024-01-05 | 2024-04-02 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104113571A (zh) | 数据冲突处理方法和装置 | |
US10237295B2 (en) | Automated event ID field analysis on heterogeneous logs | |
CN107391758B (zh) | 数据库切换方法、装置及设备 | |
US10417103B2 (en) | Fault-tolerant methods, systems and architectures for data storage, retrieval and distribution | |
EP3418877A1 (en) | Data writing and reading method and apparatus, and cloud storage system | |
EP2948875A1 (en) | Method and system for using a recursive event listener on a node in hierarchical data structure | |
CN106776785B (zh) | 一种数据写入方法及装置和数据处理系统 | |
CN111552701A (zh) | 确定分布式集群中数据一致性的方法及分布式数据系统 | |
CN111767270A (zh) | 数据迁移方法、装置、服务器及存储介质 | |
CN111339114A (zh) | 一种数据访问方法、装置、设备及存储介质 | |
EP2025133B1 (en) | Repository synchronization in a ranked repository cluster | |
CN107656980B (zh) | 应用于分布式数据库系统中的方法及分布式数据库系统 | |
CN112035458B (zh) | 数据隔离方法、装置和设备 | |
CN109033134A (zh) | 一种消息处理方法、装置、存储介质及计算机设备 | |
CN114547184A (zh) | 人员信息同步方法、终端设备及存储介质 | |
CN112463322B (zh) | 一种分布式系统内的请求的控制方法及相关设备 | |
CN110716726A (zh) | 客户端更新方法及装置、电子设备和计算机可读存储介质 | |
CN116366609B (zh) | 全局唯一标识生成方法、系统、计算机和可读存储介质 | |
CN111274228B (zh) | 保单数据迁移存储方法、系统、设备及可读存储介质 | |
CN109446215B (zh) | 一种基于优先级的实时id拉通引擎方法 | |
CN114300153A (zh) | 医疗数据发送方法、装置、计算机设备和存储介质 | |
CN116955494A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
WO2020139282A1 (en) | A data comparison system | |
CN117573679A (zh) | 数据同步方法、装置、终端及存储介质 | |
CN117539540A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141022 |
|
RJ01 | Rejection of invention patent application after publication |