同步数据涉及到的一些思考及解决

项目需求:数据库由于业务需要,相关表数据不一致,需要同步



    设计到的问题-->>
    [1]同步的记录表数据由触发器来控制还是程序?

    [2]什么时候做同步?

    [3]数据量大的情况如何处理?

    [4]同步时候标志已经操作过的数据,下次操作的时候方便操作,此sql操作会涉及大量数据,怎么效率较好?




  • 第一个问题解决:触发器简单直接,不需要程序里面写很多东西,但是触发器一多貌似不是什么好事
  • 第二个问题解决:什么时候同步可以由cron表达式和job来控制,但是你的代码必须复杂一点。
  • 第三个问题解决:数据量大,每次处理数据分页取,分页处理,那么此时跟分页的原理一样,每次记录当前处理的条数,然后一次处理多少条,多少条你可以随便指定(类似每页显示多少条),根据你数据库的性能和系统资源。
  • 第四个文件解决:标志一般利用时间,但是主键是自增长的话,为什么要去每次记录时间去比较呢?用id不是更好吗?每次操作取出上次操作的最后一条数据的id,再查询当前数据库最大的id数是多少,此时就形成了一个id区间,那么你的程序接下来就运行在这个id区间中,每次区也是在这个id区间取,如果数据量大,id区间每次指定一定范围,把大区间划分成n个小区间去处理。标志什么也省了,操作完数据我记录他的id,不需要在更新数据库里面的标志,更新标志就属于不好的设计。




    两天时间就从思考到实现,解决了以上问题,我的tomcat源码,solr教程 struts2源码还没时间看了,明天得看啊,等不及了,但今天实在没精力了

猜你喜欢

转载自blognojava.iteye.com/blog/1147758