以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 征集讨论,离线同步方案 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3136) |
-- 作者:qtcks -- 发布时间:2009/6/14 9:00:00 -- 征集讨论,离线同步方案 说明:架构分为,远程数据中心与本地数据. |
-- 作者:woodiy -- 发布时间:2009/6/14 10:53:00 -- 这个方案不错,希望可以实现! |
-- 作者:qtcks -- 发布时间:2009/6/14 11:22:00 -- 网上找寻的一篇文章 1、哪些数据需要同步 (1) 新增的数据 (2) 修改过的数据 (3) 删除的数据 (4) 其它数据(原数据没有修改过,也未删除的) 2、保证最小数据量的同步 (1) 新增的数据需要同步添加 (2) 修改过的数据需要同步进行更新 (3) 删除的数据需要同步进行删除 (4) 其它数据(保持不变,不需要进行处理) 3、同步方案(数据获取的方式,JMS发送方) 考虑到在信息系统中的特殊的操作,即删除只是置标志位,可以视为更新进行处理。故我们可隐藏了对于删除的处理。 在数据库中的设计中已经留存有dataversion字段,用来进行版本控制。 设计参照于以下方案: (1) 默认未同步过的数据的dataversion为0。 (2) 首次同步时,取所有的dataversion为0的数据(其它条件自己制定)。 (3) 在JMS提交同步后,将被同步的表的数据的字段dataversion统一置为一个dataversion,记录至同步情况表中。(理论上,同步也应当记录日志)。 (4) 进行数据的更新操作时,同时增加一个拦截器,将dataversion置为上次同步的dataversion+1。(现有数据的删除为更新标志位,也遵守此规定) (5) 新添加的数据,dataversion字段置为0。 (6) 非首次同步时,查询同步日志中记录的上次的同步时dataversion的值,同步 数据的dataversion!=上次同步的dataversion的数据字段。 4、同步方案(数据的保存方式,JMS接收方) (1) 对于dataversion == 0 的数据,执行添加操作(insert)。 (2) 对于dataversion != 0 的数据,执行更新操作(update)。 |