为了实现 杭州MES系统 数据的高效、安全、完整的复制,根据业务类型的特点,采用以下方式:
(1)针对每个需要复制的数据表建立一个任务分发表;
(2)用触发器适时生成分发任务;
(3)用守护进程定时或定点对分发表中的分发任务进行分发。
1、任务分发表
由于绝大多数数据都需进行多路分发,即需要分发到多个网络节点,而且对各节点的分发不可能一次性地分发成功,很可能只是部分分发成功,因此必须跟踪每条 信息对每个节点的分发状态。同时为了减少对原数据表的操作量(大部分业务数据表的数据量较大,如果经常对原数据表进行扫描,将严重影响数据库的性能),针 对每个需要进行多路分发的数据表建立一个任务分发表,在任务分发表中存放原数据表的全部字段信息,并增加一个机构节点标识字段,表示需要对哪些目标单位进 行分发。任务表中应包含需要分发的节点信息和数据信息。数据集中系统直接从任务分发表中按节点标识分组提取分发信息并进行打包发送。为了统一操作,对任务 分发表采用统一的命名规范,即任务分发表的表名统一由原数据表的表名加上后缀“-RW”构成。
2、 分发任务的形成和任务分发
任务分发表中存放着所有需要进行分发的数据信息,因此,如何正确形成分发任务是整个复制过程中非常重要的一个环节。在设计中采用的方法是通过触发器来产生分发任务的,它建立在插入操作(Insert)和更新操作(Update)基础之上。
触发器通过以下步骤确定需要对哪些节点产生分发并生成分发任务表:
(1)获取本地数据库服务器通讯中间件节点名称;
(2)通过本地节点名称获取上下级节点名称。如果本地机构代码等于上级机构代码,则说明该节点为顶级节点,触发器将不对上级节点产生分发信息。
(3)触发器根据所操作的数据需要复制的范围(全网、向上、向下、定点复制)生成相应的记录到任务分发表。
3、 数据复制流程
数据复制流程包括数据分发处理流程和数据接收处理流程,如下:
(1)数据分发处理流程图
深圳MES数据复制前应首先设定固定的开始时间和轮循次数,开始时间一般设在零点,从而减轻数据复制对业务系统的影响。达到设定的开始H,1间后,系统开始检索分 发任务表,如果分发任务表存在需要分发的数据并且尚未达到设定的轮循次数的上限,系统则按分发目的地址检索出分发信息并按报文格式进行打包分发。如果没有 分发任务或超过轮循次数的上限则结束数据分发流程等待下次开始时间。
(2)数据接收处理流程图
数据接收端程序为一后台守护进程,当守护进程检测到通讯中间件发 过来的数据报文时,首先提取报文头并根据报文头确定报文类型、报文长度等信息,从而调用相应的报文处理模块。如果消息类型是接收端数据更新成功后发过来的 确认信息,则删除分发任务表中已经发送成功的数据并等待新的数据报文。如果消息类型是需要复制的原始数据,则调用数据更新模块将数据报文中的数据逐条更新到相应的数据库表,如果更新成功则生成确认信息并将确认信息打包成数据报文发送回数据发送端( 杭州MES系统 ),出现异常更新不成功则放弃该报文,数据发送端在没有收到确认 消息的情况下会重新发送数据,直到成功。