请问一般是在项目中的数据同步问题怎么处理的?
比如,购买商品,要查库存,然后减库存。
这样的话,这么实现同步?
请问项目中要怎么实现??
希望大家能够多给出一点实现方案。谢谢了  呵呵

解决方案 »

  1.   

    这个貌似像是 
    多线程并发访问 数据 需要共享。。
    这个时候 我们是不是应该用socket 的多线程来解决呢??说实在的我只能给你这么一点建议。。我对多线程不是很了解。。期待高手解答,
    在此 与楼主共勉
      

  2.   


    这种同步最好由数据库事务来完成数据的完整性和一致性,一般我采用存储过程,利用其原子性,对表加锁,等等。如果用程序来做,分布式应用就不合适,一个应用程序只能锁该应用程序内部的对象,锁不了别的应用程序。当然,如果是一堆数据库可能需要另外的办法来做,比如通过oracle的dblink+scheduler同步两个数据库的数据。。
      

  3.   

    数据库加一个同步字段,比如时时间类型的,查库存的时候取出该字段,更新库存的时候将其作为where条件并同时将它更新为当前数据库时间
      

  4.   

    这个跟银行的取款机一样要求精确  这样就必须将整个购物操作的SQL封装在一个事务中 
    来保证数据的完整性和一致性
    你可以看看oracle中的事务处理 
      

  5.   


    CRUD是基础。基础要先明白了,一些数据库高级特性个人认为还是有必要了解的。很多时候可能写程序需要几天,写出来的东西还不一定稳定,但是通过数据库的高级特性来做,几小时甚至几十分钟就搞定了,稳定性自不必多言。个人意见,呵呵
      

  6.   

    还有一个问题..呵呵
    就是如果用框架,比如spring吧,其中事务就不用自己去开启了,
    比如我用两个方法
    public void A(){
    B();
    //还有其他代码,操作数据库
    ....
    }public void B(){
    //一些操作数据库的代码
    ....
    }这种情况,事务时怎么处理的。默认情况,如果B出错了,A中的事务还提交吗?
    是不是spring中默认的就是针对每个方法的事务?? 
    先谢谢  大家的 回答 呵呵!!
      

  7.   

    你好:我曾经听过一个做银行系统的老师说过是,通过几个部分来完成的。一个是事务的管理,还有数据库的加锁。
    你刚刚你那个spring的列子如果B出错了那么A的事务,绝对不会提交的。
      

  8.   

    第一,可以写存储过程,把语句写在存储过程中第二,JDBC 使用事务 Connection.setAutoCommit(flase);执行后修改回来第三,用spring管理事务
      

  9.   


    性能优化是为了数据库的读写快。
    而事务,一般是为了保证数据的一致性和完整性。
    从这个角度来说,这两者没有任何关系。但是,另一个角度,如果一个事务,既需要insert/update/delete,又需要count去统计一个中间结果以便查询,则无疑事务保证了数据的一致性,也提高了查询性能,最常见的是进销存里面的库存统计:
    当insert一条交易数据的时候,需要同时改变库存数量,采用事务来insert并count比只insert,之后实时的count要好。