我们正在构建一个调用管理软件,允许不同的人获得分配给他们的调用,他们可以在移动设备上编辑这些调用,然后从移动设备关闭调用,该调用将同步回服务器以供中央管理员监控。对于线性数据流,即在服务器上创建调用 > 发送到移动设备 > 在移动设备上更新 > 发送回服务器,我们已经能够建立数据流并且一切正常。
我被困在这个工作流程中可能出现的下一个复杂级别,即如果在调用创建并发送到移动设备之后,如果它在服务器上更新,那么如何将此更改与移动设备同步,保持请记住,可能在移动设备上进行了一些更改,但由于通话尚未关闭,因此尚未同步。现在没有自动同步,移动用户必须按下一个按钮,该按钮指示在调用关闭时将数据发送回服务器的操作,这是我们希望作为工作流程的一部分。同时,我们希望在数据同步和更新方面实现一些自动化,直到通话结束。
我可以用 git 和代码版本控制(先拉后推)来类比,但可能会发生合并冲突,必须手动解决。
感谢对此问题的任何见解。
ps:在 android 和 PostgreSQL(ruby on rails)中的 SQLite 上实现,移动设备模仿服务器的数据结构,存储来自服务器的记录的相应 id,以调用 REST API 来更新服务器上的数据。
最佳答案
因此我们设法编写了大量自定义 API 来处理服务器和客户端之间的所有数据交换。我们想出了一个自定义冲突解决方案,它描述了所有可从移动设备编辑的数据字段的更高优先级,因此每次将数据同步到移动设备时,都会保存更高优先级的数据(即,如果移动设备更改了这些字段,则这些值是即使服务器也更改了数据也会保留)。 此外,在编辑移动设备中的数据之前,我们还会从服务器提取数据,以确保始终提供最新数据。 这符合我们试图实现的业务逻辑,因此不能一概而论。
关于android - 在客户端(android)和服务器(rails PostgreSQL)之间同步数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36951459/