我正在将我的应用程序从App Engine数据存储移植到MongoDB后端,我对"文档更新"的一致性有疑问我知道一个文档上的更新都是原子的和隔离的,但是有没有办法保证它们在不同的副本集之间"一致"呢?
在我们的应用程序中,许多用户可以(也将)通过在一次更新过程中插入几个嵌入式文档(对象)来同时更新一个文档.我们需要确保这些更新在所有副本中以逻辑一致的方式进行,即当一个用户将几个嵌入的文档"放入"父文档中时,在我们确保其他用户已阅读并收到第一个用户的更新之前,其他用户不能将其嵌入的文档放入父文档中.
因此,我所说的一致性是指,我们需要一种方法来确保,如果两个用户试图同时exactly次对一个文档执行更新,MongoDB只允许其中一个更新通过,并丢弃另一个(或至少防止两个都发生).我们不能在这里使用标准的"分片"解决方案,因为单个更新不只是增量或减量.
保证一个特定文档的一致性的最佳方法是什么?