WriteConcern.Acknowledged vs new WriteConcern {Journal = true,W = 1}

时间:2013-05-09 14:15:09

标签: c# mongodb mongodb-.net-driver

我对mongodb c#driver中的WriteConcern设置有点不满。

WriteConcern.Acknowledged是否表示Journal = true且FSYNCED = true?

如果我只是想确保它写入primary,那么WriteConcern.Acknowledged够吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

Journal和Fysncing一个写入与确认它在某个mongod中的存在是非常不同的,老实说,同时设置两者都没有意义,因为你实际上正在等待它写入​​磁盘两次{{1 }}。

你最好和Journal一起去;如果你需要记录的写作。再次Journaled写入与已确认的写入不同,Journaled在返回响应之前给出了磁盘上的持久性感,但是,只需要接收已确认的写入以使其返回,而不是写入磁盘。

所以不,:/与您WriteConcern.Acknowledged的旧设置不一样,但我会说这已经足够了,而且您可能会对这些设置过度使用。

修改

我注意到您的标题中包含Journal= true and FSYNCED =true设置。这不是Fsync而是W = 1。因此,您需要做的就是获得与之前相同的写入操作,实际上是将日记选项与acknowledged一起添加到您的写作问题中,这应该会给您带来与之前相同的写入问题。