诚心请教:利用Web Services实现多服务器的数据库数据同步的解决方案??

J2eeLearner 2003-10-15 07:41:54
要求: 目前有多台服务器,每个服务器上面都利用数据库存储了数据,当然很有可能数据库表有多个,但是数据库表的个数是有限的几个,现在需要使得每个服务器上面的数据库数据同步.每个服务器仅能对表中的一些数据进行修改.
例如:多台服务器共同完成数据库表 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描述,将表名,表的字段都封装到里面去了,这样是否适合那?是否应该将对这几个表的操作分开来完成,写多个接口程序,完成表的同步呢?
可能我这段说的不清楚,总之如果是您需要完成此任务,会有更好更适合的办法么?
...全文
245 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rottenapple 2003-10-21
  • 打赏
  • 举报
回复
WebService事务处理成熟了吗?现在我不是很清楚,一年前作论文的时候这方面是比较困难.多个Web服务怎么样做成一个事务?这样才可以保证在各个数据库的更新是同步的.web service的事务处理协议是有了,但不知道有没有好的产品,自己做,难度比较大.不过你要能保证中央webservice不出问题也有可能做的.ibm网站好像有些资料
timiil 2003-10-19
  • 打赏
  • 举报
回复
好厉害的想法! 学习中。
J2eeLearner 2003-10-16
  • 打赏
  • 举报
回复
楼上的,我做的也就是局部的实现,因为数据量并非很大,所以速度方面问题不是很大,关键是我现在的思量是否正确,是否还有更好的方法?
另外如何利用WebService传送一个XML文件?我看到的参考书上面的接口参数都是简单的数据类型,对.Net也不是很熟悉。

请帮忙!谢谢!
速马 2003-10-16
  • 打赏
  • 举报
回复
哇,这是个大玩艺...
据说Oracle 10i提供了类似的能力
自己来做...我是觉得太复杂了,用WebService,速度方面应该会很成问题
J2eeLearner 2003-10-16
  • 打赏
  • 举报
回复
to gujunyan:
1) 不同的数据库系统怎么使用数据库同步?
2)如果我这个系统放到企业联盟上,企业的数据库服务器能够裸露在外面么?
3)现有的数据库系统具备多服务器间的复制么?如果数据库服务器的个数是动态增长的呢?

to arding123:
每个结点对数据库数据的修改,传送到中心服务器的时候,会进行一定的审核,然后才能完成到SQL语句的转换,最后做成事务的批处理。
其实问题不在于一个结点对数据的修改,关键是如果多个结点对数据都修改了,如何保证数据的一致,这才是关键的。好在我的系统不是很复杂,每个结点只能修改自己的数据,对于其他结点的数据只能读,没有修改的权限,这些审核会在中心服务器完成。


传送XML的问题我已经会了,:) 关键是我对.Net不是很熟悉,虽然可以拿方案,但是对于实现当时还是不是很会 呵呵!谢谢大家了!

现在问题是,有对我的方案修改的好主意么?

阿拉丁 2003-10-16
  • 打赏
  • 举报
回复
要做到用transaction来控制,还是有点难度的。
做好不要和数据库相关,那样就没什么意思了
顾君彦 2003-10-16
  • 打赏
  • 举报
回复
直接使用sql server的发布与订阅就可以完成同步,并不需要写什么程序。
速马 2003-10-16
  • 打赏
  • 举报
回复
SORRY,这个东西我只是自己想过,但是没有实际做过
还是等高手来回答吧
Good Luck (-:
rgbcn 2003-10-15
  • 打赏
  • 举报
回复
gz

12,163

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧