用户离线时产生了N多条操作记录,然后上传到了云端,请问如何把它们合并成数据最后的状态?

如题,我们是一款可以本地阅读图书的应用。用户可以针对一本书进行笔记操作,具体而言,主要讲就是“增删改查”笔记。

我们是支持离线使用的,为了保证数据同步,用户离线使用时的“每一个操作”都会生成一条usageRecord,有点像log吧。
比如用户离线时,先增加一条笔记,我们会记录
{noteId:a-guid-string,operation:add,time:123123123}
然后用户又更新了一下这条笔记,我们就会记录:
{noteId:a-guid-string,operation:update,time:123123123}
最后用户又删除了这条笔记,我们就会记录:
{noteId:a-guid-string,operation:delete,time:123123123}

当用户联网之后,客户端就会把上述3条数据都传到服务器端,让服务期存到数据库。但是存之前,需要先把数据整理成最终的样子,请问有什么好的解决方案可以参考吗?

PS:也可以在客户端完成数据的处理,然后上传到服务期端。


紫衣仙女
浏览 656回答 2
2回答

倚天杖

联网情况下,这些不是同步处理的么?现在有个想法:离线之后,再联网的操作,就相当于把之前这段时间的操作再回放一下,那么可否把这些请求暂存进一个客户端的任务队列,联网的时候,再去消费这个队列?

弑天下

对于任意数据: 不是所有数据都一定能合并 ("最终一致")。比如dropbox在有冲突的时候是直接给你复制一份,让你自己解决。只有文本的时候相对好些,但能合并也需要不弱的条件。无法合并时让人类 (你的用户) 处理可能比较好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript