个人外包项目全记 - Best Partner (十七)数据同步2

来源:互联网 发布:程序员职业规划1000字 编辑:程序博客网 时间:2024/06/08 14:31

正文:(十七)数据同步2

确定选用数据库同步工具来实现数据同步后,我就开始Google数据库同步工具,其中Sybase Mobilink进入了我的视线,它的主要功能介绍如下:

“MobiLink 同步允许在符合 ODBC 标准的统一数据库和 Adaptive Server Anywhere 或 UltraLite 远程数据库之间进行复制。在本教程中使用的是 Adaptive Server Anywhere 远程数据库。统一数据库能够是使用 Sybase Adaptive Server Anywhere、Sybase Adaptive Server Enterprise、Oracle、Microsoft SQL Server 或 IBM DB2 生成的数据库。

MobiLink 适用于将一个统一数据服务器和大量远程数据库进行同步(通常包含多个移动数据库)。远程站点的管理和资源需要已降到了最低限度。此系统是基于偶连接的,并且远程站点可随时进行连接。在每次进行连接之后,数据库是完全同步的。

MobiLink 的工作方式是:将远程数据库上的多个事务的结果合并成一个更改集,然后应用到统一数据库中。因为同步始终在事务边界进行的,所以保持了参照完整性。不保留在组件事务过程中所做的各个更改的顺序:因为从不复制未提交的数据,所以保留了数据完整性。”

乍看到这些介绍的时候,我简直是喜出望外,这些同步功能简直就是为本项目需求所设计的啊。

我赶忙连夜下载了一套 Sql Anywhere 9 开发版(其中包含Mobilink同步工具),依据一些文档资料,我开始测试起数据同步功能来。先新建好一个中心数据库和两个远程数据库,然后按照文档中提供的例子,启动同步服务器和同步客户端。没想到进行得异常顺利,远程数据库和中心数据库的数据很快就实现了同步,我有点找不到北了,心想原本以为麻烦的问题,原来就是层窗户纸啊!

可高兴劲还来得及过去,就发现一个问题,其他所有的同步都正常,就是删除操作的同步出来点问题。远程数据库中的删除可以正常同步到中心数据库上,但远程数据库之间却无法同步删除操作。具体情况的描述如下:

中心服务器取名CenterDB(Server),两个远程数据库分别取名RemoteDB1(Client1)和RemoteDB2(Client2),当你在RemoteDB1(Client1)中删除某条记录后,Clinet1执行同步语句后,能同步到CenterDB(Server)上,即CenterDB中也删除了这条记录。接着在Client2上执行同步语句后,却发现这条记录依然存在于RemoteDB2(Client2)中。

这是我在MobiLink使用过程中遇到的第一个麻烦。

原创粉丝点击