断开的流星应用程序

时间:2012-10-29 18:26:34

标签: meteor local-storage

我有兴趣使用Meteor框架创建一个应用程序,该框架将长时间(多个小时)与网络断开连接。我相信meteor将本地数据存储在RAM中的迷你mongodb js结构中。如果用户关闭浏览器或刷新页面,则所有本地更改都将丢失。如果本地更改持久保存到磁盘(localStorageindexedDB?)会很好。 Meteor即将推出的任何机会?

相关问题...... Meteor如何处理文档冲突?换句话说,如果2个用户编辑相同的MongoDB JSON文档,那么该冲突是如何解决的?乐观锁定?

1 个答案:

答案 0 :(得分:4)

冲突解决是“最后一位作家获胜”。

更具体地说,客户端上的每个MongoDB插入/更新/删除操作都映射到RPC。来自给定客户端的RPC始终按顺序播放。来自不同客户端的RPC在服务器上交错存在,没有任何特定的排序保证。

如果客户端尝试在断开连接时发出RPC,则这些RPC会在客户端重新连接之前排队,然后按顺序回放到服务器。当多个客户端执行脱机RPC时,它们最终在服务器上运行的顺序高度依赖于每个客户端重新连接的确切时间。

对于某些离线突变,例如MongoDB的$inc$addToSet,此模型的效果非常好。但是许多常见的修饰符如$set在长时间断开连接时表现不佳,因为突变可能会与其他客户端的干预变化发生冲突。

因此构建“离线”应用程序不仅仅是持久保存本地数据库。您还需要定义实现某种冲突解决方案的RPC。最终,我们希望拥有实现各种解决方案的交钥匙包。