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

本文详细介绍了在使用MobiLink进行数据同步时遇到的删除操作无法同步的问题及解决方案。作者通过研究发现,MobiLink无法将中心数据库的删除操作同步到远程数据库。为解决这一问题,提出了两种方法:建立影子表和采用逻辑删除的方式,并最终选择了逻辑删除方案。此外,还提供了一种快速修改现有代码实现逻辑删除的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正文:(十八)数据同步3

为了删除无法同步的问题,我到处Google解决方法,可网上几乎没有什么讨论MobiLink的文章,仅有的几篇都是介绍性的文章,逐渐地我开始有点毛爪了。可Gentleman在得知这个问题后,确表现得非常大度,他对我说,如果实在解决不了删除同步的问题,那系统在使用的过程中,就采取行政手段来同步。即需要数据删除的时候,大家就记录下来,然后互相发Email通知。

我很难想象在系统使用过程中,大家互相发Email通知删除的时候,会顺便暗自问候我这个程序开发者多少次。我没得选择,必须找出办法来。在翻了很多资料和搜索大量网页后,终于在Sybase网站上一个英文的帮助文件上,找到了这个问题的解决方法。

原来MobiLink在实现数据同步的过程中,中心数据库的删除就是无法同步到远程数据库上,而远程数据库的删除可以同步到中心数据库上。如果想实现这种删除的数据同步,有两种解决办法。第一种方法是建立影子表,即对每个表都新建一个影子表,某条记录删除的时候,都在其对应的影子表中记录下删除行的主键;第二种方法是逻辑删除,即在每个表中建一个删除标识字段。

考虑到实现的复杂度,我最终选用了逻辑删除的方法。但紧接着另一个问题又来了,此时的程序编码工作差不多完成了70%左右,现在把程序中所有的真实删除都改成逻辑删除,源代码中需要修改很多的地方。如何以最快最全的方法实现逻辑删除?我整整思索了半天,突然灵光一闪,想到了一个最佳方法。即从数据交互的父类中修改真实删除所调用的函数,把真实删除改的SQL语句改为逻辑删除所对应的SQL语句。这样只修改一处代码,即把系统中所有的真是删除都搞定。

我暗自夸奖自己:你怎么这么聪明啊!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值