然而,我最终希望它可以在本地存储数据,并在有互联网连接时进行同步,因为我知道我个人有时会禁用手机上的互联网连接(如乘飞机、低电量)或没有信号。我想知道是否可以向我推荐一些关于这种同步的好资源,例如一些推荐的库?或者一些讨论它们的缺陷以及如何规避它们的文章。我已经谷歌了一下,但我现在不知道该问什么问题。
另外,我的意图是先建立一个依赖于互联网的应用程序,然后再添加同步功能...这是一个好主意吗?还是说我自己给自己挖了一个坑?我需要从一开始就构建同步功能吗?
我有个人建议先构建一个本地应用程序,而不是先做互联网部分,从某种逻辑上来说这是有道理的。远程存储对我来说很重要。我知道该决策与我的应用程序目标有很大关系,但从构建的角度来看,最终目标是本地存储+互联网存储和双向同步,哪个更容易?还是说没有区别? 首先,我想使用UUID而不是顺序整数主键。我也考虑过为每个设备分配ID,并在其生成的任何密钥前加上前缀,但这似乎很微妙。有人使用过这两种技术吗?你有什么想法吗? 我想我需要一个好的系统来告诉我哪些数据已经同步。在客户端,我想任何创建/编辑的记录都可以标记为要同步。但在服务器端,您有多个客户端,这样就行不通了。我想您可以拥有一个last_updated时间戳,并同步自上次成功同步以来更新的所有内容。
如果记录在多个地方进行了编辑怎么办?如果两个客户端都进行了编辑并希望同步,那么合并时就会出现一些不确定性,就像在git或其他版本控制系统中合并分支时一样。你如何处理这个问题?我猜git是通过存储每个提交的差异来实现的。我想你可以存储差异?我越想越觉得这听起来越复杂。我是过度思考还是欠缺思考?
客户端存储怎么办?我考虑过SQLite或PhoneGap本地存储(http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html)。有什么建议吗?同步将通过REST API进行,交换JSON数据,所以我认为实际上将数据存储为JSON或类似JSON的东西易于转换会很好。另一方面,如果我要交换某种数据差异格式,也许这就是我需要存储的内容?