发明内容
本发明提供一种处理数据冲突的方法及装置,主要目的在于如何灵活处理不同业务操作的数据冲突的技术问题。
为实现上述目的,本发明提供一种处理数据冲突的方法,所述方法包括:
配置数据的操作语义标识符和主键唯一约束字段,所述操作语义标识符用于标识所述数据的操作属性,所述主键唯一约束字段用于标识所述数据的唯一性;
根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;
若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;
根据所述数据的冲突策略处理所述数据。
优选地,所述根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突,包括:
若所述数据的操作语义标识符为插入标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为更新标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为删除标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突。
优选地,所述若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略,包括:
若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则所述数据的冲突策略为插入操作和/或忽略所述插入操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则所述数据的冲突策略为更新操作和/或忽略所述更新操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则所述数据的冲突策略为忽略删除操作和/或报告数据错误异常;
所述根据所述数据的冲突策略处理所述数据,包括:
若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则执行插入所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则执行更新所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则执行忽略所述数据和/或报告所述数据错误异常。
优选地,所述根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突之前,还包括:
判断是否预先设置主动检查数据冲突的时间;
若是,则执行根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;
若否,则对所述数据执行所述数据的操作语义标识符标识的数据操作;
若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据;
若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则结束处理所述数据冲突的操作。
优选地,所述根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突之后,还包括:
若确定所述数据不冲突,则执行对所述数据执行所述数据的操作语义标识符标识的数据操作;
若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据;
若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则结束处理所述数据冲突的操作。
此外,为实现上述目的,本发明还提供一种处理数据冲突的装置,所述装置包括:
配置单元,用于配置数据的操作语义标识符和主键唯一约束字段,所述操作语义标识符用于标识所述数据的操作属性,所述主键唯一约束字段用于标识所述数据的唯一性;
确定单元,用于根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;
获取单元,用于若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;
第一处理单元,用于根据所述数据的冲突策略处理所述数据。
优选地所述确定单元,用于:
若所述数据的操作语义标识符为插入标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为更新标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为删除标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突。
优选地,所述获取单元,用于:
若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则所述数据的冲突策略为插入操作和/或忽略所述插入操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则所述数据的冲突策略为更新操作和/或忽略所述更新操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则所述数据的冲突策略为忽略删除操作和/或报告数据错误异常;
所述第一处理单元,用于:
若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则执行插入所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则执行更新所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则执行忽略所述数据和/或报告所述数据错误异常。
优选地,所述装置还包括:
判断单元,用于判断是否预先设置主动检查数据冲突的时间;
若是,则执行确认单元;
若否,则执行操作单元;
所述操作单元,用于对所述数据执行所述数据的操作语义标识符标识的数据操作;
若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行所述获取单元和所述第一处理单元;
若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则执行第二处理单元,所述第二处理单元用于结束处理所述数据冲突的操作。
优选地,所述装置还包括:
所述操作单元,用于若确定所述数据不冲突,则执行对所述数据执行所述数据的操作语义标识符标识的数据操作;
若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行所述获取单元和第一处理单元;
若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则执行第二处理单元。
本发明实施例通过配置数据的操作语义标识符和主键唯一约束字段;根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据,从而可以灵活处理不同业务操作数据的冲突,根据用户的集成业务来进行动态处理各种数据冲突,而不是将在代码中固化写死,并且不同的数据冲突的处理方式可以重用,从而提供解决数据冲突的灵活性。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种处理数据冲突的方法。
参照图1,图1为本发明处理数据冲突的方法第一实施例的流程示意图。
在第一实施例中,该处理数据冲突的方法包括:
步骤101,配置数据的操作语义标识符和主键唯一约束字段,所述操作语义标识符用于标识所述数据的操作属性,所述主键唯一约束字段用于标识所述数据的唯一性;
具体的,源端获取数据,并对获取的数据进行封装,在数据中增加操作语义标识符和主键唯一约束字段,新增的操作语义标识符可以为新增和/或更新和/或删除。主键唯一约束字段用于记录业务的唯一性,数据的冲突检查以该字段为准。业务主键字段理论上应该和数据库主键字段一致,但也可以不一致。
步骤102,根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;
优选地,所述根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突,包括:
若所述数据的操作语义标识符为插入标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为更新标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为删除标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突。
具体的,若所述数据的操作语义标识符为插入标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段相同,即表示该数据在数据库中已有相同的数据,则确定插入所述数据为冲突操作;
若所述数据的操作语义标识符为更新标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,即表示该数据在数据库中没有对应的数据,则无法更新,确定更新所述数据为冲突操作;
若所述数据的操作语义标识符为删除标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,即表示该数据在数据库中没有对应的数据,则无法删除,确定删除所述数据为冲突操作。
步骤103,若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;
优选地,所述若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略,包括:
若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则所述数据的冲突策略为插入操作和/或忽略所述插入操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则所述数据的冲突策略为更新操作和/或忽略所述更新操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则所述数据的冲突策略为忽略删除操作和/或报告数据错误异常。
具体的,若数据的操作语义标识符为插入标识符,则数据冲突的策略可以为:执行insert操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突的策略可以为:执行update操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突的策略可以为:执行忽略该删除操作和/或执行报告数据错误异常的信息。
步骤104,根据所述数据的冲突策略处理所述数据。
优选地,若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则执行插入所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则执行更新所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则执行忽略所述数据和/或报告所述数据错误异常。
具体的,若数据的操作语义标识符为插入标识符,则数据冲突时,可以执行insert所述数据的操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突时,可以执行update所述数据的操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突时,可以执行忽略该删除操作和/或执行报告数据错误异常的信息。
对用户而言,用户可以人为设置对多个数据是否采取全局策略或者局部策略,根据所配置的处理策略查询策略配置库获取策略处理逻辑,并应用到当前所引用该策略的程序逻辑中来解决该冲突。策略库提供全局策略和局部策略的应用,说明如下:
如使用全局策略,而不使用局部单表策略,则应用全局策略;
如同时使用了全局策略和局部单表策略,则只应用局部单表策略。
本发明实施例通过配置数据的操作语义标识符和主键唯一约束字段;根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据,从而可以灵活处理不同业务操作数据的冲突,根据用户的集成业务来进行动态处理各种数据冲突,而不是将在代码中固化写死,并且不同的数据冲突的处理方式可以重用,从而提供解决数据冲突的灵活性。
参照图2,图2为本发明处理数据冲突的方法第二实施例的流程示意图。
在第一实施例的基础上,在步骤102之前还包括:
步骤105,判断是否预先设置主动检查数据冲突的时间;
目前,通常来说在一个整体的数据交换场景中,数据冲突出现的概率是不相同的。可能有部分业务数据交换到目标库中几乎不会有存在的数据,比如只交换一次初始数据;而另外一些业务数据,同样的一份业务数据则可能需要在多个系统或者数据库之间来回多次交换。提前检测冲突对于不会出现冲突的数据来说,从而降低了性能;而容易出现冲突的数据后再检查冲突,也会导致冲突出现后再执行冲突解决策略,从而降低性能。数据冲突检测时机是不同这将导致数据持久化性能具有很大差异。
本实施例中,用户可以指定检查冲突的时机,选择是否“主动检查冲突”,从而提高解决数据冲突的性能。
若是,则执行步骤102;
若否,则执行步骤106,对所述数据执行所述数据的操作语义标识符标识的数据操作;
具体的,新增操作标识的数据则进行insert操作;更新操作标识的数据执行update操作;删除操作标识的数据执行delete操作。
步骤107,若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据;
具体的,若数据的操作语义标识符为插入标识符,则数据冲突时,可以执行insert所述数据的操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突时,可以执行update所述数据的操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突时,可以执行忽略该删除操作和/或执行报告数据错误异常的信息。
步骤108,若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则结束处理所述数据冲突的操作。
对用户而言,用户可以人为设置对多个数据是否采取全局策略或者局部策略,根据所配置的处理策略查询策略配置库获取策略处理逻辑,并应用到当前所引用该策略的程序逻辑中来解决该冲突。策略库提供全局策略和局部策略的应用,说明如下:
如使用全局策略,而不使用局部单表策略,则应用全局策略;
如同时使用了全局策略和局部单表策略,则只应用局部单表策略。
本发明实施例通过配置数据的操作语义标识符和主键唯一约束字段;根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据,从而可以灵活处理不同业务操作数据的冲突,根据用户的集成业务来进行动态处理各种数据冲突,而不是将在代码中固化写死,并且不同的数据冲突的处理方式可以重用,从而提供解决数据冲突的灵活性;同时,用户可以根据不同的业务指定数据冲突的检测时机,从而提高处理数据冲突的性能。
参照图3,图3为本发明处理数据冲突的方法第三实施例的流程示意图。
在第一实施例的基础上,在步骤102之后还包括:
步骤106,若确定所述数据不冲突,则执行对所述数据执行所述数据的操作语义标识符标识的数据操作;
具体的,新增操作标识的数据则进行insert操作;更新操作标识的数据执行update操作;删除操作标识的数据执行delete操作。
步骤107,若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据;
具体的,若数据的操作语义标识符为插入标识符,则数据冲突时,可以执行insert所述数据的操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突时,可以执行update所述数据的操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突时,可以执行忽略该删除操作和/或执行报告数据错误异常的信息。
步骤108,若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则结束处理所述数据冲突的操作。
对用户而言,用户可以人为设置对多个数据是否采取全局策略或者局部策略,根据所配置的处理策略查询策略配置库获取策略处理逻辑,并应用到当前所引用该策略的程序逻辑中来解决该冲突。策略库提供全局策略和局部策略的应用,说明如下:
如使用全局策略,而不使用局部单表策略,则应用全局策略;
如同时使用了全局策略和局部单表策略,则只应用局部单表策略。
本发明实施例通过配置数据的操作语义标识符和主键唯一约束字段;根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据,从而可以灵活处理不同业务操作数据的冲突,根据用户的集成业务来进行动态处理各种数据冲突,而不是将在代码中固化写死,并且不同的数据冲突的处理方式可以重用,从而提供解决数据冲突的灵活性;同时,用户可以根据不同的业务指定数据冲突的检测时机,从而提高处理数据冲突的性能。
本发明提供一种处理数据冲突的装置。
参照图4,图4为本发明处理数据冲突的装置第一实施例的功能模块示意图。
在第一实施例中,该处理数据冲突的装置包括:
配置单元401,用于配置数据的操作语义标识符和主键唯一约束字段,所述操作语义标识符用于标识所述数据的操作属性,所述主键唯一约束字段用于标识所述数据的唯一性;
具体的,源端获取数据,并对获取的数据进行封装,在数据中增加操作语义标识符和主键唯一约束字段,新增的操作语义标识符可以为新增和/或更新和/或删除。主键唯一约束字段用于记录业务的唯一性,数据的冲突检查以该字段为准。业务主键字段理论上应该和数据库主键字段一致,但也可以不一致。
确定单元402,用于根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;
优选地,所述确定单元402,用于:
若所述数据的操作语义标识符为插入标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为更新标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突,和/或;
若所述数据的操作语义标识符为删除标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,则确定所述数据冲突。
具体的,若所述数据的操作语义标识符为插入标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段相同,即表示该数据在数据库中已有相同的数据,则确定插入所述数据为冲突操作;
若所述数据的操作语义标识符为更新标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,即表示该数据在数据库中没有对应的数据,则无法更新,确定更新所述数据为冲突操作;
若所述数据的操作语义标识符为删除标识符,所述主键唯一约束字段和数据库存储的主键唯一约束字段不相同,即表示该数据在数据库中没有对应的数据,则无法删除,确定删除所述数据为冲突操作。
获取单元403,用于若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;
优选地,所述获取单元403,用于:
若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则所述数据的冲突策略为插入操作和/或忽略所述插入操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则所述数据的冲突策略为更新操作和/或忽略所述更新操作和/或报告数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则所述数据的冲突策略为忽略删除操作和/或报告数据错误异常。
具体的,若数据的操作语义标识符为插入标识符,则数据冲突的策略可以为:执行insert操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突的策略可以为:执行update操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突的策略可以为:执行忽略该删除操作和/或执行报告数据错误异常的信息。
第一处理单元404,用于根据所述数据的冲突策略处理所述数据。
优选地,所述第一处理单元404,用于:
若确定所述数据冲突,且所述数据的操作语义标识符为插入标识符,则执行插入所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为更新标识符,则执行更新所述数据和/或忽略所述数据和/或报告所述数据错误异常;
若确定所述数据冲突,且所述数据的操作语义标识符为删除标识符,则执行忽略所述数据和/或报告所述数据错误异常。
具体的,若数据的操作语义标识符为插入标识符,则数据冲突时,可以执行insert所述数据的操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突时,可以执行update所述数据的操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突时,可以执行忽略该删除操作和/或执行报告数据错误异常的信息。
对用户而言,用户可以人为设置对多个数据是否采取全局策略或者局部策略,根据所配置的处理策略查询策略配置库获取策略处理逻辑,并应用到当前所引用该策略的程序逻辑中来解决该冲突。策略库提供全局策略和局部策略的应用,说明如下:
如使用全局策略,而不使用局部单表策略,则应用全局策略;
如同时使用了全局策略和局部单表策略,则只应用局部单表策略。
本发明实施例通过配置数据的操作语义标识符和主键唯一约束字段;根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据,从而可以灵活处理不同业务操作数据的冲突,根据用户的集成业务来进行动态处理各种数据冲突,而不是将在代码中固化写死,并且不同的数据冲突的处理方式可以重用,从而提供解决数据冲突的灵活性。
参照图5,图5为本发明处理数据冲突的装置第二实施例的功能模块示意图。
在第一实施例的基础上,所述装置还包括:
判断单元405,用于判断是否预先设置主动检查数据冲突的时间;
目前,通常来说在一个整体的数据交换场景中,数据冲突出现的概率是不相同的。可能有部分业务数据交换到目标库中几乎不会有存在的数据,比如只交换一次初始数据;而另外一些业务数据,同样的一份业务数据则可能需要在多个系统或者数据库之间来回多次交换。提前检测冲突对于不会出现冲突的数据来说,从而降低了性能;而容易出现冲突的数据后再检查冲突,也会导致冲突出现后再执行冲突解决策略,从而降低性能。数据冲突检测时机是不同这将导致数据持久化性能具有很大差异。
本实施例中,用户可以指定检查冲突的时机,选择是否“主动检查冲突”,从而提高解决数据冲突的性能。
若是,则执行确认单元402;
若否,则执行操作单元406;
所述操作单元406,用于对所述数据执行所述数据的操作语义标识符标识的数据操作;
具体的,新增操作标识的数据则进行insert操作;更新操作标识的数据执行update操作;删除操作标识的数据执行delete操作。
若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行所述获取单元403和所述第一处理单元404;
具体的,若数据的操作语义标识符为插入标识符,则数据冲突时,可以执行insert所述数据的操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突时,可以执行update所述数据的操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突时,可以执行忽略该删除操作和/或执行报告数据错误异常的信息。
若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则执行第二处理单元407,所述第二处理单元407用于结束处理所述数据冲突的操作。
对用户而言,用户可以人为设置对多个数据是否采取全局策略或者局部策略,根据所配置的处理策略查询策略配置库获取策略处理逻辑,并应用到当前所引用该策略的程序逻辑中来解决该冲突。策略库提供全局策略和局部策略的应用,说明如下:
如使用全局策略,而不使用局部单表策略,则应用全局策略;
如同时使用了全局策略和局部单表策略,则只应用局部单表策略。
本发明实施例通过配置数据的操作语义标识符和主键唯一约束字段;根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据,从而可以灵活处理不同业务操作数据的冲突,根据用户的集成业务来进行动态处理各种数据冲突,而不是将在代码中固化写死,并且不同的数据冲突的处理方式可以重用,从而提供解决数据冲突的灵活性;同时,用户可以根据不同的业务指定数据冲突的检测时机,从而提高处理数据冲突的性能。
参照图6,图6为本发明处理数据冲突的装置第三实施例的功能模块示意图。
在第一实施例的基础上,所述装置还包括:
所述操作单元406,用于若确定所述数据不冲突,则执行对所述数据执行所述数据的操作语义标识符标识的数据操作;
具体的,新增操作标识的数据则进行insert操作;更新操作标识的数据执行update操作;删除操作标识的数据执行delete操作。
若执行所述数据的操作语义标识符标识的数据操作出现异常情况,则执行所述获取单元403和第一处理单元404;
具体的,若数据的操作语义标识符为插入标识符,则数据冲突时,可以执行insert所述数据的操作和/或执行忽略该插入操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为更新标识符,则数据冲突时,可以执行update所述数据的操作和/或执行忽略该更新操作和/或执行报告数据错误异常的信息。
若数据的操作语义标识符为删除标识符,则数据冲突时,可以执行忽略该删除操作和/或执行报告数据错误异常的信息。
若执行所述数据的操作语义标识符标识的数据操作未出现异常情况,则执行第二处理单元407。
对用户而言,用户可以人为设置对多个数据是否采取全局策略或者局部策略,根据所配置的处理策略查询策略配置库获取策略处理逻辑,并应用到当前所引用该策略的程序逻辑中来解决该冲突。策略库提供全局策略和局部策略的应用,说明如下:
如使用全局策略,而不使用局部单表策略,则应用全局策略;
如同时使用了全局策略和局部单表策略,则只应用局部单表策略。
本发明实施例通过配置数据的操作语义标识符和主键唯一约束字段;根据所述数据的操作语义标识符、所述主键唯一约束字段和数据库存储的主键唯一约束字段确定所述数据是否冲突;若确定所述数据冲突,则根据所述数据的操作语义标识符和预先存储的数据冲突策略,获取所述数据的冲突策略;根据所述数据的冲突策略处理所述数据,从而可以灵活处理不同业务操作数据的冲突,根据用户的集成业务来进行动态处理各种数据冲突,而不是将在代码中固化写死,并且不同的数据冲突的处理方式可以重用,从而提供解决数据冲突的灵活性;同时,用户可以根据不同的业务指定数据冲突的检测时机,从而提高处理数据冲突的性能。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。