Oem*_*erA 4 database iphone synchronization web-services
是的,我知道有几个问题与iPhone和Web DB的同步有关,但没有一个问题对我有帮助.我也做了很多谷歌搜索,但我很少发现有关双向同步的信息.也许我只是使用了错误的关键字.
我正在构建一个应用程序,我想出了为我的应用程序和我的Web服务添加两个同步的想法.我的第一个想法是,这将是非常容易的,但事实证明并非那么容易.我发现了一些问题并解决了我的问题,但我想听听你们这些灵魂是否会产生其他问题,或者这些解决方案是好还是坏.
我的应用程序的想法是帮助我同步我的笔记,我将随身携带我的iPhone,在工作或在家里使用Web应用程序.这两个端应始终同步,因为我不知道我将使用哪个设备(iPhone或计算机)来拍摄,编辑或只读我的笔记.
我双方都有:
对于我的Web服务(和Web应用程序),我将使用rails,我认为数据库端的mysql.在iPhone上,我将使用带有Objective-C包装器(FMDB)的SQLite DB.两者都将通过JSON交换数据(在iPhone端使用JSON框架).
我的想法到目前为止:
主键必须在两侧都是唯一的
作为主键,我将使用a UUID.我认为这是双方独特的解决方案,它不会重复(至少我希望).
数据变更的修订
每个更改都将保存为带有SHA1密钥的修订,我将从中创建date + note data.修订对象还包括以下信息:
到目前为止,我的"解决方案"是我将在一个hetroy-table上跟踪每个修改(创建,更新,删除)以及双方的修订.在iPhone方面,我将首先从Web DB更新我的历史表,然后将我的更改提交到Web DB.这应该有用,对吗?
这对我来说听起来并不坏,但我的问题是如何处理冲突?我不想打扰用户如何处理冲突的消息.
我的问题综述:
编辑:
谢谢大家的答案.我现在知道,我并不是唯一遇到这个"问题"的人,并没有针对所有应用程序的简单而全面的解决方案.我认为到目前为止我对我的想法或解决方案做得很好,我会尝试提出同步规则.
到目前为止,我的想法是:我将尽可能简单地开发它,并将它用于我自己的需要.解决我在使用和同步时发现的问题.之后我会邀请我的朋友来测试并解决他们遇到的问题.我认为这样我可以想出用于将我的数据与Web同步的现实世界规则,因为我看到人们实际在做什么以及问题在哪里.
你认为呢?
Wil*_*ung 11
"这取决于."
每个人都喜欢他们的答案.
双向同步从根本上归结为解决冲突.只有您作为应用程序设计人员才能提出解决冲突的规则.
没有冲突,同步很容易.
同步的一种方式是"简单",因为它就像双向同步一样,除了冲突规则总是有利于一方."让它看起来像那样." 简单的规则.
细粒度的双向同步并不难,您只需要记录所做的具体更改以及完成后的更改,然后在同步时,从各方获取更改日志,将它们合并到一个日志中,然后将该日志应用于从上一次同步开始的每一方.
根据具体的变化,我并不是说"记录改变了",因为它太粗糙了.相反,您想知道记录的"lastName"已更改.它在01/01/2011 12:23:45发生了变化.
当A方在2011年1月1日12:22:45将lastName更改为"Johnson"并且B方在2011年1月1日12:22:46将lastName更改为"Smith"时,则"Smith"为右回答,因为这是最新的.
但等等,你看到那里发生了什么?我只是凭空捏造了一条规则."最新胜利".也许这对你不起作用,也许你有不同的规则."这取决于".
所以,真的,这一切都归结为规则.您可以根据需要将其制作成细粒度.总会有冲突.这就是规则的用途.
所以你需要决定那些适合你的应用程序.