锁定老帖子 主题:数据同步方式探讨
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-15
<!---->一、<!---->数据同步方式<o:p></o:p> 1、哪些数据需要同步<o:p></o:p> <!---->(1) <!---->新增的数据<o:p></o:p> <!---->(2) <!---->修改过的数据<o:p></o:p> <!---->(3) <!---->删除的数据<o:p></o:p> <!---->(4) <!---->其它数据(原数据没有修改过,也未删除的)<o:p></o:p> 2、保证最小数据量的同步<o:p></o:p> <!---->(1) <!---->新增的数据需要同步添加<o:p></o:p> <!---->(2) <!---->修改过的数据需要同步进行更新<o:p></o:p> <!---->(3) <!---->删除的数据需要同步进行删除<o:p></o:p> <!---->(4) <!---->其它数据(保持不变,不需要进行处理)<o:p></o:p> 3、同步方案(数据获取的方式,JMS发送方)<o:p></o:p> 考虑到在信息系统中的特殊的操作,即删除只是置标志位,可以视为更新进行处理。故我们可隐藏了对于删除的处理。<o:p></o:p> 在数据库中的设计中已经留存有dataversion字段,用来进行版本控制。<o:p></o:p> 设计参照于以下方案:<o:p></o:p> <!---->(1) <!---->默认未同步过的数据的dataversion为0。<o:p></o:p> <!---->(2) <!---->首次同步时,取所有的dataversion为0的数据(其它条件自己制定)。<o:p></o:p> <!---->(3) <!---->在JMS提交同步后,将被同步的表的数据的字段dataversion统一置为一个dataversion,记录至同步情况表中。(理论上,同步也应当记录日志)。<o:p></o:p> <!---->(4) <!---->进行数据的更新操作时,同时增加一个拦截器,将dataversion置为上次同步的dataversion+1。(现有数据的删除为更新标志位,也遵守此规定)<o:p></o:p> <!---->(5) <!---->新添加的数据,dataversion字段置为0。<o:p></o:p> <!---->(6) <!---->非首次同步时,查询同步日志中记录的上次的同步时dataversion的值,同步 数据的dataversion!=上次同步的dataversion的数据字段。<o:p></o:p> 4、同步方案(数据的保存方式,JMS接收方)<o:p></o:p> <!---->(1) <!---->对于dataversion == 0 的数据,执行添加操作(insert)。<o:p></o:p> <!---->(2) <!---->对于dataversion != 0 的数据,执行更新操作(update)。<o:p></o:p> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 7845 次