1

我对 mongodb c# 驱动程序中的 WriteConcern 设置有点困惑。

WriteConcern.Acknowledged 是否意味着 Journal=true 和 FSYNCED =true?

如果我只是想确保它写入主节点,WriteConcern.Acknowledged 是否足够?

4

2 回答 2

2

WriteConcern = Acknowledged仅表示主节点已收到写操作。无法保证在您的 write 调用返回之前将数据写入磁盘。如果要确保将数据写入主节点上的磁盘,则需要journal=trueand fsync=true,您可以在连接字符串中执行此操作。

于 2013-05-09T17:38:06.100 回答
1

我不是 C# 程序员,但仅从语义上我会说 - 不,不是。

日志和 Fysncing 写入与在某个特定时间确认其存在有很大不同mongod,老实说,两者同时设置是没有意义的,因为您实际上是在等待它写入​​磁盘两次:/

您最好选择 Journal;如果您需要日志写入,那就是。再次,日志写入与确认写入不同,日志在返回响应之前给人一种磁盘持久性的感觉,但是,确认写入只需要接收才能返回,而不是写入磁盘。

因此,WriteConcern.Acknowledged不,与您的旧设置不同,Journal= true and FSYNCED =true但是我会说这已经足够了,而且您可能对这些设置有些矫枉过正。

编辑

我注意到您的标题中有设置W = 1。这不是 Fsync 而是acknowledged. 因此,要获得与以前相同的写入,您需要做的就是在您的写入关注点中实际添加一个日志选项,WriteConcern.Acknowledged这应该会为您提供与以前相同的写入关注点。

于 2013-05-09T14:29:47.247 回答