概述
要求: 目前有多台服务器,每个服务器上面都利用数据库存储了数据,当然很有可能数据库表有多个,但是数据库表的个数是有限的几个,现在需要使得每个服务器上面的数据库数据同步.每个服务器仅能对表中的一些数据进行修改.
例如:多台服务器共同完成数据库表 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描述,将表名,表的字段都封装到里面去了,这样是否适合那?是否应该将对这几个表的操作分开来完成,写多个接口程序,完成表的同步呢?
可能我这段说的不清楚,总之如果是您需要完成此任务,会有更好更适合的办法么?
最后
以上就是闪闪烤鸡为你收集整理的中心服务器和分区服务器的数据交互的全部内容,希望文章能够帮你解决中心服务器和分区服务器的数据交互所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复