我与一位朋友讨论了 MongoDb 及其原子性,我想知道他是否正确。有人告诉我,MongoDb 在更新期间会执行两个原子操作:
- 它正在删除现有文档(第一个原子操作);
- 并插入一个新的(第二个原子操作)。
这意味着在一小部分时间里,文档是空的。
尽管这对我来说听起来不合理,但有没有人确定这是真的还是假的?
非常感谢您的回复,如果有人可以指出一些在线文档来阅读它,我们将不胜感激。
编辑:拼写
MongoDB 对所有变异操作使用全局写锁(2.2 之前的每个服务器和 2.2 中的每个数据库)。这意味着无论更新的实现细节如何,从客户端的角度来看,它们都是原子的。全局写锁保证没有其他客户端可以看到对单个文档的部分更新。
这里有关于 MongoDB 全局写锁的文档:http ://www.mongodb.org/display/DOCS/How+does+concurrency+work