【问题标题】:What is the best way to sync 2 sqlite tables over http and json?通过 http 和 json 同步 2 个 sqlite 表的最佳方法是什么?
【发布时间】:2008-11-29 03:23:25
【问题描述】:

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

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

【问题讨论】:

    标签: database json sqlite synchronization


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多