RT,谢谢了

解决方案 »

  1.   

    就是感知数据项的update/delete/insert
      

  2.   

    只只到一个方法:
    建时间戳字段,每更新就重置时间为系统时间。delete不能物理删只能逻辑删,否则感知不到。
    时效要求高的不用trigger很难做到同步。时效不高的比如一小时或一天统计一次的那些,可以利用数据库的任务计划来做。(Oracle的Schedule、Mysql的Event、DB2、SqlServer都支持任务计划)。
      

  3.   

    如果update/delete/insert都是在java上执行,就比较方便了。
    可以用Spring或者AspectJ对所有相关代码拦截就可以了。如果还有其他程序update/delete/insert,除了firebird之外,基本不太可能。
      

  4.   

    恩,如果可以规定所有数据库的操作都必须通过固定的Java接口来做,就好搞了。
    否则就麻烦了,只能不停的扫描数据库,不过数据库还吃得消不
      

  5.   

    客户不允许建触发器,估计要建个类似于时间戳字段的也没门儿啊,所有的update/delete/insert都是客户那边的操作,我们做的这个模块只负责将表select出来以后同步到另一个DB,类似于备份的操作,所以需要增量更新。最坏的结果我想只有强行遍历比较XML了。
      

  6.   


    不允许建trigger是有道理的,对于大量DML的操作,有trigger存在的情况下,DML效率会降低很多。
    但加字段不一样,加个字段对DML的影响不是很大。
    不过如果你们那里是物理删除(delete语句不是update某个标志),要同步也很难办的。
    增量更新你得有取得变化的数据的条件,时间戳就是最常利用的条件。
    否则没有条件只有全备份了。
    顺便问下,你们什么数据库?