通过http和json同步2个sqlite表的最佳方法是什么?

Joh*_*ght 12 database sqlite json synchronization

我有一个相当简单的同步问题.我有一个包含大约10列的表,我希望在3个不同客户端上的sqlite文件之间保持同步:Iphone客户端,浏览器客户端和Ruby on Rails客户端.所以我需要一个适用于所有3个的简单sycing解决方案,即我可以在Javascript,Objective C和Ruby中轻松实现它,它可以通过HTTP与JSON一起使用.我查看了其他同步解决方案的各种组件,例如git中的一个,Google齿轮社区中的一些教程,以及一个名为acts_as_replica的rails插件.我天真的方法是简单地在数据库中创建最后同步的时间戳,然后在制作时创建所有删除的更改日志.(我不允许更新表中的条目).然后,我可以检索自上一个时间戳以来的所有新条目,

我应该考虑使用SHA1哈希值还是每个条目的UUID,或者是最后同步的时间戳是否足够?如何确保没有重复的条目?我可以遵循更简单的算法吗?

muh*_*huk 3

我假设变化可能会在最后发生。我不知道插入和更新的特征,但这是我的想法;

  • 我会使用 SHA1(或 MD5,在这种情况下并不重要)当月和前几个月的天数。与这些指纹进行比较是一种快速了解差异的方法。(我今天就离开)
  • 如果前几个月有差异;
    • 如果一个月的数量太大,我们可以分割该月并简单地动态生成每日指纹,而不是比较整个月。
    • 否则,我们可以像对待每日变化一样对待每月变化。
  • 找出发生更改的位置后,主副本将发送该期间所有唯一 ID 的列表。(始终发送今天的信息)
  • 然后从机删除需要删除的内容并编译要插入的 id 列表。
  • 主站仅发送这些记录(完整)。

时间类别(日、月)可以根据数据量进行调整。

当然,这是一个幼稚且简单的算法。如果我正在处理敏感/关键数据,我会寻找事务算法。