离线-在线同步的开源示例有哪些?

7

我曾考虑过IMAP客户端,但是IMAP在离线时没有完整的功能,例如,邮件会被保留在发件箱中,然后稍后移动到已发送邮件中,因此它具有临时性安排...这是我能够用简短的句子解释为什么IMAP不是一个好的例子。 - Swaroop C H
@Marc 最好使用Python。 - Swaroop C H
5个回答

8
Unison文件同步器是一款非常优秀的工具,但它的源代码并不适合新手。虽然您没有要求学术论文,但我写过一篇自豪的论文。该论文附带有一些Perl代码,但我不确定它是否有用。如果您需要,请给我发送电子邮件。

谢谢Norman,这篇论文应该很有用,我会去看看。不过,这篇论文中的概念是否可以用于数据库同步(天真的问题?)抱歉如果之前没有表述清楚,我特别关注结构化数据的同步。 - Swaroop C H
当然,记录操作的想法并将日志放入正常形式对于数据库来说是有用的。我预计代数的细节会有所不同。还要看一下皮尔斯关于“镜头编程”的新作品,这是受到数据库视图更新问题的启发。 - Norman Ramsey

3
Google Gears本身是开源的。您需要查看LocalServer模块。
请访问code.google.com/p/gears获取主要开发者网站和LocalServer源代码。虽然Gears是一个复杂的软件,因为它有很多组成部分(浏览器插件接口、与JavaScript集成、SQLite集成等等...),但它相当好地分解了,所以LocalServer源代码相当容易理解。

据我理解,Gears提供了一个离线数据库和一个API来检测在线/离线连接,但它本身不进行任何类型的同步。应用程序员必须自己完成这个任务。 - Swaroop C H

2

我有使用SymmetricDS的经验,它非常好用。它可以处理许多情况。它是开源的,可以根据需要进行修改或扩展。正如作者所说,它是为一个实际项目而开发的,因此您可以确信它真的很好用(对我也是如此)。

只有一点需要注意。SymmetricDS依赖于数据库触发器,因此您的数据库必须支持触发器。


2
维基百科关于操作转换的文章提到了四个开源应用程序——Ace、Gobby、Subetheredit和So6。也许其中一个可以作为你的起点。
虽然它们可能不能直接与你选择的数据库管理系统配合使用,但考虑以操作转换作为同步的基础是值得的。

谢谢您提供这些信息。我不知道有一个完整的领域专门研究这个!在Google Waves“Under The Hood”演讲中,他们在前20分钟内首次讨论了操作转换,我也觉得这很有趣。 - Swaroop C H
我一直想回到这里提一下Google Wave,但你比我更快了! - Daniel Paull

0
本文使用CouchDB在移动和桌面设备上创建离线Web应用程序,描述了一个简单的库存管理应用程序及其源代码。它使用了CouchDB的复制支持
虽然CouchDB是一种NoSQL数据库(具体来说是面向文档的),但如果您正在寻找RDBMS的解决方案,则Microsoft Sync Framework中的数据库同步提供程序利用了内置于SQL Server 2008中的更改跟踪机制。Microsoft还在其Smart Client离线应用程序块的文档中描述了面向服务的方法。在某些情况下,这种方法比数据导向方法中的合并复制更加灵活。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接