从某种意义上说,默认的“保存”操作在 MongoDB 中似乎是异步的。似乎当客户端保存文档时,它通常会立即从服务器收到成功的响应,即使该操作尚未应用于数据库(更不用说提交到磁盘)。
(我将此模型基于save()
PHP 客户端文档的行为方式,其中包含一个可选参数safe
——我认为它确实确保保存已由服务器处理,而不仅仅是由服务器接收,并且Mathias Stearn 的博文评论中说:“默认情况下,‘提交’仅意味着应用于 mmaped 结构,但也可能意味着复制或刷新到磁盘。”)
save()
我可以看到一个可能达到的“成功”有几个级别,包括:(a)由客户发送;(b) 由服务器接收;(c) 由服务器提交给内部数据结构;(d) 由服务器发送到 n 个副本;(e) 提交到磁盘。
- MongoDB 默认是做什么的?
- 这个怎么调?
safe
(例如,我在 mongo shell 中找不到 PHP 模式的等价物。)
save()
此外,对发出 的客户端和任何其他客户端的行为是否有任何不同?即 MongoDB 是否支持 read-your-own-writes 或类似的?