中心服务器和分区服务器的数据交互

来源:互联网 发布:扒一扒淘宝oem化妆品 编辑:程序博客网 时间:2024/05/17 00:13
要求:   目前有多台服务器,每个服务器上面都利用数据库存储了数据,当然很有可能数据库表有多个,但是数据库表的个数是有限的几个,现在需要使得每个服务器上面的数据库数据同步.每个服务器仅能对表中的一些数据进行修改. 
例如:多台服务器共同完成数据库表   userTable(name,password)的同步工作.每台机器只能修改自己对应的name的password. 


解决方法:   利用一台机器作为中心服务器,中心服务器上部属Web   Services实例, 
每日每台其他服务器对数据库表内容的操作(insert,delete,update)都形成XML文件日志(这里参考了《Web   Services技术、架构和应用》的page   206的方法) 
方法大致如下: 
  SELECT   USERNAME,   PASSWORD   FROM   TBL_USER   
  转换为=》 
  <dbtrans   name=”selectUser”   table=”TBL_USER”   method=”select”> 
  <get> 
  <property   name=”username”   type=”string”/> 
  <property   name=”password”   type=”string”/> 
  </get> 
  </dbtrans> 


  各机器调用Web   Services服务将自己的日志上传到中心服务器,中心服务器按照内部的权限核对这些操作的合法性,最后综合各地日志,形成总的数据库的操作日志XML文件.各个服务器调用Web   Services服务下载总的数据库的操作日志XML文件.,到本机重新构造SQL事务,完成数据库的同步操作. 


原因:很有可能各个数据库(MSSQL,Oracle等)不同,所以无法直接利用数据库系统中的同步功能,   另外,利用XML,可以实现跨越防火墙. 


问题: 


1)我仅实现两个服务接口,上传XML日志文件,下载XML日志文件,不知道如何用web   services传送xml文件。soap传送的xml文件是根据接口自动生成的,俺怎么声明我的接口那?难道如下声明: 
    void     upload   (   string   ) 
                                    ^^^^ < <---   这里把整个数据库操作的日志文件都放到string里面,传入? 
    string   download() 
    ^^^^ < < <----这里把整个数据库操作的日志文件都放到string里面去,返回? 




2)我的解决方案有不妥的地方么?因为涉及到几个具体的表,我把对这几个表的所有操作都用同样的schema描述,将表名,表的字段都封装到里面去了,这样是否适合那?是否应该将对这几个表的操作分开来完成,写多个接口程序,完成表的同步呢? 
可能我这段说的不清楚,总之如果是您需要完成此任务,会有更好更适合的办法么?
原创粉丝点击