数据库同步云从MySql到Sqlite Android

时间:2016-08-12 13:54:07

标签: android mysql sqlite synchronization android-sqlite

我有一个可以随时更改的远程数据库。我需要找到一种方法来保持我的sqlite数据库更新,以更好和优化的方式进行所有更改。

我认为每个表只有一个时间戳并且只将更新的表发送到客户端将是一个解决方案,或者每行可能有一个时间戳并且只将更新的行发送给客户端。

但是 - 例如,我如何管理已删除的项目? - 我如何管理Android上的技术更新?

基本上,简而言之,在应用程序的某个时刻,我需要使用API​​下载更改并更新本地数据库。

有没有人有想法?

由于

1 个答案:

答案 0 :(得分:0)

由于这似乎是单向同步,我会:

  • 使服务器数据库上的每个表都有一个UUID列和一个最后一个 更新日期/时间栏。

  • 创建一个请求更新数据的REST调用。理想情况下,它会 花时间更新客户端。这个日期应该来自 更新呼叫期间的服务器。

  • 服务器将扫描每个表,搜索日期>的行。比过去的日期。序列化数据并将其作为JSON以及下一个请求的服务器日期/时间返回。

现在跟踪删除工作要多得多。你可以:

  1. 从不删除数据并仅将行标记为已删除,这是最简单的,但根据您的数据,最终可能会在数据库中包含大量行。
  2. 删除数据,然后跟踪另一个表中已删除的行。这些可以在一段时间后删除,如果/当所有客户端都已更新。
  3. 进行第二次更新调用,该调用将按下每行的所有UUID值和时间戳。然后,客户端可以确定需要删除哪些行。
  4. 虽然这是最复杂的,但我可能会选择选项3,因为我不喜欢旧的数据。我要去的方向还取决于将与DB同步的客户端数量。