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