【问题标题】:Data Synchronization between Mobile App and Cloud移动应用与云端数据同步
【发布时间】:2014-12-19 11:20:38
【问题描述】:

嗯,我正在 iOS 和 Android 上构建一个应用程序,这两个应用程序都需要与云数据库 MySQL 同步。这两个应用程序都可以离线工作,所以我需要所有的插入和更新功能。可能不会使用删除,但我仍然想知道。

嗯,我在这里寻找的是实现这一目标所需的解决方案、想法或算法。

我将 CreatedOn 和 LastSync 保留为每个表上的时间戳列。

现在的问题是我是否应该始终检查所有行和所有列?

我认为我应该在所有表上保留 ModifiedOn 列,并使用 LastSync 检查每个设备 ID。大家有什么建议?

【问题讨论】:

    标签: android ios mysql synchronization cloud


    【解决方案1】:

    也许这不是您正在等待的答案,但在我正在进行的项目中,我们正在使用 Azure 移动服务。有一个 Android 和 iOS SDK,它们在其中实现了离线数据库和 Azure 之间的同步(就像在 Git 中可以调用推送和拉取方法一样)。

    有一些限制(TableStorage 是一种有限的 MSSQL 存储),但您应该检查一下。

    【讨论】:

    • 当然,如果我打算使用 Azure,那么我会选择它。
    【解决方案2】:

    我知道这已经逾期两年了,但我一直在做同样的事情(与 web api 和 postgresql 同步的 Android 应用)

    到目前为止,我所做的(仍在研究它是否是最好的方法,这就是我发现这个问题的方式)是我保留了一个带有时间戳的 last_update 字段和一个带有布尔值的更改字段数据是否被更改(通过设备上的用户操作)

    所以当我执行同步时:

    • 我先将数据库复制到备份中(以防出现问题)
    • 我发送所有标记为已更改的行(服务器处理冲突)
    • 然后删除它们
    • 之后我找到了 max(last_update) 值,
    • 我从中减去一分钟
    • 然后请求在该值之后已更新的所有行,(这也将包括我发送的数据,因为除非出现问题,否则无法将行设置为在最后一个未更改的行)

    这可能会导致一些重复的数据被传输(特别是如果您经常进行大量更改)但在我的情况下这是一种罕见的现象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 2019-01-15
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多