以文本方式查看主题

-  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
--  征集讨论,离线同步方案

说明:架构分为,远程数据中心与本地数据.
在断网的情况下.数据保存在本地.
联网后,数据同步到远程数据中心.
关键点.数据如何同步.
如,新增商品信息的编码.如何控制.
订单类的,自动编号可以与操作员的iD挂钩.这样就没有问题.
主要点,就是唯一的数据.产品信息\\仓库id\\等.


--  作者: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)。