发明内容
为了解决上述技术问题,本发明提供了一种基于数据包的移动数据同步冲突预处理与消解方法。
为了达到上述目的,本发明所采用的技术方案是:
一种基于数据包的移动数据同步冲突预处理与消解方法,包括以下步骤,
步骤一,生成增量数据包,并通过数据同步服务上传至移动应用服务器;
步骤二,通过数据同步冲突预处理,对涉及移动和同步的增量数据创建中间表;对没有涉及移动和同步的增量数据,依据同步规则将数据回填至后端业务系统;
步骤三,对中间表中的增量数据进行冲突检测,获得冲突增量数据;
步骤四,采用冲突消解算法对冲突增量数据进行消解;
步骤五,将中间表中消解后的增量数据移动至后端业务系统的业务数据表中。
所述数据同步冲突预处理过程为,首先按照数据贮存位置、主要用途和同步移动特性,将移动应用的数据分为移动中间件基础数据、技术数据和业务数据,其中移动中间件基础数据和技术数据贮存在不同的移动控制组件中,不需要同步和移动;业务数据贮存在移动终端、后端业务系统及移动数据同步中间件中,用于支撑移动业务流转,需要进行数据同步与移动,然后对涉及移动和同步的增量数据创建中间表,最后按预处理策略添加到中间表。
所述预处理策略为,
A)针对和实体,按照数据同步规则的新增业务实体SQL语句,将Ex Ai、Ex Au实体添加到中间表;
B)针对实体,按照数据同步规则的删除业务实体SQL语句,直接应用于业务系统数据库完成数据删除;
上述和分别表示移动终端在实体Ex上的新增、更新和删除三种操作类型;
Ex的表达式为其中,集合E表示一类业务实体,元素Ex∈E为实体类的一个实例化;集合F表示一组业务实体的属性,元素Fy∈F为一个属性名称,F0为固有属性名称,为实体的唯一标识;集合V表示一组属性值,元素V(x,y)∈V,表示实体Ex的属性Fy上的值,V(x,0)为主键的值,记为PK(x);所述x∈[0,n],y∈[0,n],n为正整数。
所述增量数据中的非结构化数据以结构化的方式进行存储。
所述中间表的属性名称以及数据类型均与业务数据表的数据结构一致;所述中间表属性在业务数据表属性的基础上增加了“数据包任务ID”、“数据实例ID”、“数据执行用户”、“数据操作模式”及逻辑主键;所述中间表的关联关系和约束条件均与业务数据表相同。
所述冲突检测过程为,以“数据包任务ID”和“数据实例ID”标识作为冲突检测判断依据,如果存在两条或两条以上记录,即发生数据冲突。
采用冲突消解算法对冲突增量数据进行消解过程为,在数据库侧通过调用数据冲突消解存储过程和函数对冲突数据进行消解,所述冲突消解算法以用户一次上传的增量数据包为单位进行消解,算法在业务系统数据库通过存储过程和函数实现,冲突数据在同一数据库中进行消解。
本发明的有益效果是:本发明首次提出了一种基于数据包的移动数据同步冲突预处理和消解机制,通过数据的移动和同步特性对移动应用数据进行分类,分别制定不同的数据同步冲突预处理策略,能够对冲突进行提前预判和有效规避;冲突检测和冲突消解通过创建中间表作为媒介,这种面向中间表的冲突检测机制,不仅具有效率高的优点,而且避免冲突数据直接同步到业务数据表中,提高了业务系统数据的安全性;冲突消解算法,以存储过程和函数实现,并采用特殊队列和多线程并发控制模型,在中间表中实现冲突消解,中间表与业务数据表之间仅进行数据移动,起到分担业务系统负载的作用,解决了国内外同类方案未能解决的业务高峰期大数据量、高并发引起的业务系统性能瓶颈问题,保证了业务系统的快速响应能力和稳定性。
具体实施方式
下面将结合说明书附图,对本发明作进一步说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,一种基于数据包的移动数据同步冲突预处理与消解方法,包括以下步骤:
步骤一,生成增量数据包,并通过数据同步服务上传至移动应用服务器。
增量数据包是移动应用基于统一的客户端开发框架,框架运行时自动记录数据的变更日志,增量数据上传依赖于移动终端的数据变更日志,移动终端首先根据日志,按照操作时间顺序,将变更的数据依次取出、去重、归并,生成增量数据包。
移动应用服务器采用增量数据包处理池方式,对增量数据包进行异步提交。提交的增量数据包首先进入回填作业包队列,状态为“待处理”,并尝试加入回填任务池。移动应用服务器对回填作业包任务池和队列进行扫描,按入池顺序先后处理状态为待处理的增量数据包。
步骤二,通过数据同步冲突预处理,对涉及移动和同步的增量数据创建中间表;对没有涉及移动和同步的增量数据,依据同步规则将数据回填至后端业务系统。
在数据更新时,有可能出现冲突数据,即在一条业务数据被一个移动终端修改时,业务系统或另一个移动终端也进行了修改,例如:一个数据包下载到多个移动终端,多人都编辑了“工作总结”字段。这种情况,相当于多人修改了同一条数据记录。因此,采用了冲突预处理,能够对冲突进行提前预判和有效规避。
数据同步冲突预处理先对增量数据进行分类,然后根据不同的类别进行处理。先按照数据贮存位置、主要用途和同步移动特性,将移动应用的数据分为移动中间件基础数据、技术数据和业务数据,其中移动中间件基础数据和技术数据贮存在不同的移动控制组件中,不需要同步和移动;业务数据贮存在移动终端、后端业务相同及移动数据同步中间件中,用于支撑移动业务流转,需要进行数据同步与移动;对涉及移动和同步的增量数据创建中间表,并按预处理策略添加到中间表;对没有涉及移动和同步的增量数据,依据同步规则将数据回填至后端业务系统。
上述的中间表用以暂存涉及移动和同步的增量数据,中间表的属性名称以及数据类型均与业务数据表的数据结构一致,另外,中间表需要进行界面展现,对中间表进行扩充,以实现冲突手动确认等功能,一般通过特定的建模工具创建中间表,创建中间表的规范如下:
(1)中间表命名规范:业务表名+“_ZJB”;
(2)中间表属性在业务数据表属性的基础上增加了“数据包任务ID”、“数据实例ID”、“数据执行用户”、“数据操作模式”及逻辑主键;
(3)中间表的关联关系和约束条件均与业务数据表相同。
如图2所示,上述用以将涉及移动和同步的增量数据添加到中间表的策略如下:
令集合E表示一类业务实体,在数据库中通常以表对象的形式存在,其中元素Ex∈E为实体类的一个实例化,x∈[0,n],n为正整数,Ex′为Ex的子集,通常存储在移动终端嵌入式数据库中,其元素仅为发生数据变更的项;
令集合F表示一组业务实体的属性,在数据库中为表对象的字段集合,其中元素Fy∈F,表示表的一个属性名称,y∈[0,n],F0为固有属性名称,作为实体的唯一标识(主键),中间表中通常用GUID作为唯一标识;
令集合V表示一组属性值,其中元素V(x,y)∈V,表示实体Ex的属性Fy上的值,V(x,0)为主键的值,记为PK(x);
则,实体Ex可表达为:
实体Ex将作为一次数据同步操作的最小单元,和分别表示移动终端在实体Ex上的新增、更新和删除三种操作类型。
(1)针对和实体,按照数据同步规则的新增业务实体SQL语句,将Ex Ai、Ex Au实体添加到中间表,作为后续数据冲突检查和消解的依据。
所述数据同步规则通过Table标签声明对一张中间数据表的查询、修改和删除SQL,数据添加时使用InsertLogic、UpdateLogic、DeleteLogic等SQL。
(2)针对实体,按照数据同步规则的删除业务实体SQL语句,直接应用于业务系统数据库完成数据删除。
针对非结构化数据(文本、word文档、图片等)同步,本方法要求非结构化数据以结构化方式进行存储,其冲突预处理和消解建立在结构化的描述信息之上,由描述信息维护与非结构化数据的映射关系。
步骤三,对中间表中的增量数据进行冲突检测,获得冲突增量数据。
为了尽可能的避免冲突,通过数据包进行数据同步机制,设计出合理的任务分配及管理制度。例如一个数据包任务下载到多个终端,多人执行,每人只填写自己负责范围内的工作处理信息,这种情况,从逻辑上无交叉,实际数据无冲突。
但是冲突是不可避免的,所以本发明对中间表中的增量数据进行冲突检测,以便后续的消解,本发明提供的数据冲突检测方法是多人修改了同一数据实体的数据冲突检测,任意一个执行用户将增量数据上传到中间表后,均触发主站业务系统进行冲突检测,冲突检测过程为,以“数据包任务ID”和“数据实例ID”标识作为冲突检测判断依据,如果存在两条或两条以上记录,即发生数据冲突。
步骤四,采用冲突消解算法对冲突增量数据进行消解。
消解过程为,在数据库侧通过调用数据冲突消解存储过程和函数对冲突数据进行消解,所述冲突消解算法以用户一次上传的增量数据包为单位进行消解,算法在业务系统数据库通过存储过程和函数实现,冲突数据在同一数据库中进行消解,用以减轻业务系统应用服务器负荷,提高执行效率。
针对不同的类型的数据冲突,消解的原则也不同,主要分为以下几类:
(1)针对业务系统与移动终端的数据冲突,原则上,对数据操作时间点进行比较,采用时间优先原则消解冲突;
(2)针对多移动终端的数据冲突,采用按操作时间优先及自定义扩展冲突消解组件相结合的方式进行消解;
(3)针对需要用户手动进行数据冲突确认及编辑的情况,更新数据包的状态为“发生数据冲突,未进行同步”,用户触发“数据冲突手动确认”功能,弹出数据冲突解决可视化界面,对冲突数据进行忽略、编辑等操作并保存到中间表,待业务系统或用户对检测出的数据冲突验证无误之后,再通过冲突消解算法对冲突数据进行消解,最终实现数据同步。
步骤五,将中间表的增量数据移动至后端业务系统的业务数据表中。
高峰期大数据量、高并发的数据同步任务往往给业务系统应用服务及数据库服务器造成难以控制的影响,例如,数据库死锁、服务器高内存及CPU资源占用等性能瓶颈问题,因此,本发明实施例提供的数据冲突消解及同步移动方法中采用特殊队列和多线程并发控制模型,用以保证业务系统的快速响应能力和稳定性。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。