`
jimmy.shine
  • 浏览: 389845 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据同步方式探讨

    博客分类:
  • SOA
JMS 
阅读更多

<!---->一、<!---->数据同步方式<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)           <!---->默认未同步过的数据的dataversion0<o:p></o:p>

<!---->(2)           <!---->首次同步时,取所有的dataversion0的数据(其它条件自己制定)。<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>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics