iPad/iPhone应用程序之间的云同步

iPad/iPhone应用程序之间的云同步,iphone,ipad,synchronization,cloud,dropbox,Iphone,Ipad,Synchronization,Cloud,Dropbox,我有一个核心数据应用程序,最终将成为iPhone/iPad通用应用程序 我想实现云同步,这样运行该应用的iPhone和iPad都可以共享数据。我正计划用这个。有没有人对这样做的最佳方式有什么想法?Dropbox API允许应用程序在云上存储文件。我当时的想法是将应用程序的原始数据库(sqlite)存储在云上,然后下载该数据库,但随后我意识到,使用该方法将使合并更改(而不是替换整个数据库)变得非常困难 任何想法都很感激。谢谢。您可以查看以共享数据。否则,您似乎只需要管理与中间文件服务器的同步。您可

我有一个核心数据应用程序,最终将成为iPhone/iPad通用应用程序

我想实现云同步,这样运行该应用的iPhone和iPad都可以共享数据。我正计划用这个。有没有人对这样做的最佳方式有什么想法?Dropbox API允许应用程序在云上存储文件。我当时的想法是将应用程序的原始数据库(sqlite)存储在云上,然后下载该数据库,但随后我意识到,使用该方法将使合并更改(而不是替换整个数据库)变得非常困难


任何想法都很感激。谢谢。

您可以查看以共享数据。否则,您似乎只需要管理与中间文件服务器的同步。

您可能需要使用不同的同步方法。您将要处理的数据类型是什么


我在使用轻量级rails后端方面取得了很大的成功。

您可能希望将数据导出为本机sqlite格式以外的其他格式。如果我在设计这样的东西,我想这可能是我选择的形式


我没有看过dropbox API,但它们支持上传和下载文件差异,而不是整个文件,对吗?根据API的工作方式,让您的应用程序理解其“diff”格式并使用它可能会更容易…

如果您能够成功,最简单的同步方法(到目前为止)是在本地拥有数据的三个副本:您上次上传的副本(“旧的”),本地更改生成的副本(“我的”)现在从服务器下载的副本(“他们的”)

然后,对所有三个文件中的所有记录进行排序,并逐一浏览:

  • 如果old==我的,用他们的
  • 否则,如果旧==他们的,使用我的
  • 否则你会有冲突;做点什么(例如,总是用我的,也就是“最后一个作家赢了”)
请注意,“我的”、“他们的”或“旧的”可能不存在。在这种情况下,上述规则仍然适用;如果选择的结果为“不存在”,则需要删除输出文件中的记录

最后,将生成的文件上传回服务器,以便它成为下一个人的“他们的”数据库。然后将新文件复制到本地“旧”和“我的”数据库中


(有比上述更节省空间的算法……但没有更简单的:)而且现在磁盘空间非常便宜,尤其是压缩文件时。)

我正在考虑这个选项,但是,在两个核心数据数据库之间合并更改的最简单方法是什么呢?iPhone不支持OSX()提供的同步服务,因此您需要编写自己的例程。研究向记录添加时间戳,并允许用户决定如何进行同步的策略(例如,最新的时间戳记录被发送到所有其他设备)。只需一些简单的模型对象(基本上由NSString、NSArray等组成)如果您对rails感到满意,请查看ObjectiveResource项目。很遗憾,我只有一票赞成Frank Schmitt的评论。将数据转换为JSON不会有问题。我仍然面临的问题是如何有效地合并两个库之间的更改。不幸的是,同步通常是一个困难的问题。如果你想在两个方向上同步,你需要为每个记录保留一些修改计数,并在合并时使用“最新”版本。真正的挑战在于以合理的方式处理冲突。这就是我的假设,我需要找到解决冲突的方法。我想到的一个特定场景是,如果设备A有一条记录但随后被删除,而设备B有该记录但未被删除,我不希望设备A在同步时恢复该记录。。这很难