这个问题是关于我认为在 Android / iOS 开发中非常常见的问题,但我还没有找到任何“标准”解决方案。
假设我们有一个相当普通的 REST API。服务器数据库包含(除其他外)表countries
并towns
具有 1:N 关系。
客户端(移动应用程序)想要维护这两个表的本地快照。这样当它离线时,它可以执行通常通过 REST 完成的查询,例如:“获取人口 >= 100 的奥地利城镇列表”?
如何解决这个问题?
第一个问题:一致性。客户端应该有两个表的快照。如果客户端下载towns
表的更新并离线,则某些城镇可能会引用不在countries
表的本地副本中的国家/地区。
第二个问题:客户端应该只下载新的/删除的/更改的行。放弃 REST 并使用一些自定义 RPC 调用,例如get_updates_since(...)
?
第三个问题:客户端对数据库副本的本地更改(可能离线)应该如何与服务器同步?自定义 RPC 调用?