三层架构中怎样处理数据同步?我每到一个公司面试都会问这个问题,怎么回答!?

解决方案 »

  1.   

    怎么个同步?他根本没讲清楚环境和条件嘛。
    面试的时候问这种问题要么是公司太烂,根本不懂;要么就是故意让你发挥,让你用你的理解去完善。当然,后面的情况居多,你可以用你做过的项目系统举例来说说阿。这种时候往往没有统一的答案,只有你前后一致的回答和逻辑思维的体现!
    在一个简单的三层逻辑中,一笔数据的提交,从用户界面到数据业务处理再到数据写入保存可以用事务处理的概念来达到一致。可以是开发者define的“客户事务”也可以简单用开发工具所提供的事务方法来处理。
      

  2.   

    客户请求、服务器接受请求本来就是一个同步的过程,如果真的要想做是实时同步的话,可以用回调,但是以效率为代价来换取的,再者,同步的概念不知道别人是如何理解的,就我而言,每次的数据提交之后的反馈就可以进行同步,不一定要一次性的提交;http://expert.csdn.net/Expert/topic/1315/1315069.xml?temp=.2805292
    希望贵版版主可以将此贴置项,谢谢;
      

  3.   

    同步的意思可能是指下面这种情况:
    一个客户端(客户A)删掉一条记录,而同时另一个客户(B)在A 删除这条记录之前就已经读取了这条记录,这时如果B对这条记录进行处理的话就会产生问题了! 
    这种情况如何处理?可不可以做到时实的对客户端B进行更新?
      

  4.   

    这实际上是指数据库的“并发控制”嘛。
    为了预防这种情况的发生,使用并发控制这一手段。
    实现并发控制的主要技术是“封锁”-排他锁和共享锁。
    当然不同的DBMS并发控制机制是不同的
      

  5.   

    如果采用c/s或者b/s结构的话可以用事务来控制某个用户的访问,用户访问数据库的时候他对数据库的访问(ddl除外)都不能跨过事务边界的,同时也要结合锁的概念,来进行并发控制
    如果采用的是分布式的结构的话,这个问题就比较棘手了,但我认为可以通过建立权威数据中心来避免这个问题(好像没有多大必要,分布式开发好像很少遇到这样罗索的问题)
      

  6.   

    我所知道的解决方案和icefire_cwj() 的一样。但是这不太好,不知道是否还有更好的方法?