【问题标题】:Any open source examples of offline-online synchronization?任何离线在线同步的开源示例?
【发布时间】:2010-10-14 16:40:06
【问题描述】:

是否有任何开源应用程序展示了 online-offline synchronization数据库 的良好技术,例如 Remember The Milk 使用他们的 iPhone 应用程序、Google Gears 离线模式等?

【问题讨论】:

  • 我确实想到了IMAP客户端,但是IMAP在离线时没有完整的功能,例如,邮件保留在发件箱中,然后转移到发送的邮件中,所以它有临时安排......这个是我能用简短的一句话解释为什么 IMAP 不是一个好例子的最好方法。
  • @Marc 最好是 Python。

标签: database-design web-applications


【解决方案1】:

google gears 本身是开源的。你会想看看 localserver 模块。

查看code.google.com/p/gears 获取主要开发者网站,查看the LocalServer source。虽然 gears 是一个复杂的软件,因为它有很多组件(浏览器插件接口、与 javascript 的集成、SQLite 集成等......),但它的因素相当好,因此 LocalServer 源代码很容易理解。

【讨论】:

  • 据我了解,Gears 提供了一个离线数据库和一个 API 来检测在线/离线连接,它本身不进行任何类型的同步。应用程序程序员必须自己做。
【解决方案2】:

Unison file synchronizer 是一个很棒的工具,但它的源代码不适合胆小的人。你没有要求学术论文,但我写了one I'm proud of。有一些 perl 代码与那个一起使用,但我不确定它是否有任何用处。如果你想要它给我发电子邮件。

【讨论】:

  • 谢谢诺曼,这篇论文应该很有帮助,会看看。但是,论文中的概念能否用于数据库同步(天真的问题?),抱歉,如果我之前不清楚,我专门研究结构化数据的同步。
  • 当然,记录操作并将日志转换为正常形式的想法对数据库很有用。我希望代数的细节会有所不同。还可以查看 Pierce 的“镜头编程”新工作,其动机是数据库视图更新问题。
【解决方案3】:

我有使用SymmetricDS 的经验,它真的很棒。它可以处理很多场景。它是开源的,因此可以针对某些特殊情况进行修改或扩展。正如作者所说,它是为现实生活中的项目而开发的,因此您可以确定它确实运行良好(而且它也适用于我)。

只有一件事。 SymmetricDS 依赖于数据库触发器,因此您的数据库必须支持触发器。

【讨论】:

    【解决方案4】:

    Operational Transform 上的维基百科文章引用了四个开源应用程序 - Ace、Gobby、Subetheredit 和 So6。也许其中一个可以作为您的起点。

    虽然它们可能无法直接与您选择的 DBMS 一起使用,但值得考虑将 Operation Transform 作为同步的基础。

    【讨论】:

    • 感谢您提供此信息。我不知道有一个专门的领域!在Google Waves "Under The Hood" talk 的上下文中,我发现这也很有趣,他们在前 20 分钟内讨论了操作转换。
    • 我一直想回到这里并提到 Google Wave - 但你领先一步!
    【解决方案5】:

    文章Create offline web applications on mobile and stationary devices with CouchDB 描述了一个简单的库存管理应用程序。与源代码。它使用 CouchDB 的replication support。 虽然 CouchDB 是一个 NoSQL 数据库(更具体地说,是面向文档的)。如果您正在寻找 RDBMS 的解决方案,Microsoft 的 Sync 框架中的 database synchronization provider 可以利用 SQL server 2008 中内置的更改跟踪机制。Microsoft 还在他们的 Smart Client Offline Application Block 文档中描述了 a service-oriented approach。在某些情况下,这种方法比在面向数据的方法中使用合并复制更灵活。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2010-09-21
      • 2011-09-10
      相关资源
      最近更新 更多