数据库实时双向同步

来源:百度知道 编辑:UC知道 时间:2024/05/29 02:05:44
异地两数据库sqlserver2000,有静态ip。表相同。如何做到两数据库双向实时同步,比如a更新了,马上b也更新,如果b更新了,a也马上更新.
如果两边都用订阅,不知道是否会死循环.没试过.
还有没有其他办法呢

订阅的设置里有没相关选项我倒没注意,不过就我做的这些项目来看,一般情况下都是使用接口机来完成两个数据库间的数据传递的,不管是单向还是双向。
首先数据库A和数据库B上都有伺服程序监听数据变化,数据改变的事件触发后向接口程序(一般都另外放一个机器,自己测试就丢到A或者B的机器上好了)
发送数据,由接口机传送该数据到另外一个机器。这样不会出现死循环的情况,因为传过来的记录是经过了伺服程序判断后才会写进数据库的,你可以用各种手段(做标记,查重复记录,捕捉SENDER等等方法)判断某个改变是由更新引起还是正常操作引起。
目前为止我还没有遇到需要双向更新的需求,但是曾经就这个可能性在部门里讨论过,结论是实用性很差,主要体现在不可靠性。网络延迟很可能会带来不可预料的错误(典型的是数据丢失),但是如果使用消息中间件来确保数据安全的话(比如我正在做的机场集成系统),实时性会大打折扣,违背了初衷。
如果真的有同步的需要,建议考虑重新设计下数据库结构,也许是可以绕过这个问题的。举个简单例子,如果可以负担的起,完全可以架起第3个数据库C,在A和B那里订阅更新。
PS:我不是做数据库的,所以有些数据库新技术我不太了解,搞不好很多数据库自己带的就有两数据库双向同步的,还是先查一下资料的好。我的建议仅恭参考:-)