gpt4 book ai didi

mongodb - 如果我不检查错误代码,MongoDB 会自动失败吗?

转载 作者:可可西里 更新时间:2023-11-01 09:37:34 24 4
gpt4 key购买 nike

我想知道如果我不检查错误代码是否会检测不到任何持久性故障?如果是这样,在检测错误的同时快速(异步)写入的正确方法是什么?

最佳答案

如果您不检查错误,您的更新只是 fireAndForget。您确实会错过所有可能出现的错误。请参阅 MongoDB WriteConcerns对于 MongoDB 中可用的写入模式(抱歉,我总是找不到官方的、与驱动程序无关的文档,我真的应该将其添加为书签)。
因此,对于 NORMAL,您至少会遇到连接错误,而 NONE 则完全没有异常(exception)。如果您想获知异常,您必须使用其他模式之一,它们的不同之处仅在于它们为您提供的持久性保证。
异步运行时无法检测到错误,因为这有悖于本意。您发送写操作的连接可能已经关闭或重新使用,因此您无法通过该连接发送它。此外,只有您的实际代码知道失败时该怎么做。由于 mongoDB 不提供一些远程过程调用以异步通知您更新,您必须等到给定阶段的写入完成。
所以最快,但最不可靠的是 SAFE,写入只发生在内存中。 JOURNAL 为您提供至少写入磁盘的安全性。使用 FSYNC,您将在磁盘上的数据库中保留这些更改。 REPLICA 表示至少有两个副本已经写入,而 MAJORITY 表示超过一半的副本已经写入(三个副本应该是默认值,这没有区别)。

我看到有类似异步的唯一机会是有一个单独的线程同步执行所有写操作。您可以在该线程中处理实际更新以及在无法执行处理此故障所需的操作时调用的类。但我不认为这是好的应用程序设计。

关于mongodb - 如果我不检查错误代码,MongoDB 会自动失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10893454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com