我对mongodb c#driver中的WriteConcern设置有点不满。
WriteConcern.Acknowledged是否表示Journal = true且FSYNCED = true?
如果我只是想确保它写入primary,那么WriteConcern.Acknowledged够吗?
答案 0 :(得分:2)
WriteConcern = Acknowledged
仅表示主服务器已收到写操作。无法保证在写入调用返回之前将数据写入磁盘。如果要确保将数据写入主节点上的磁盘,则需要journal=true
和fsync=true
,您可以在连接字符串中执行此操作。
答案 1 :(得分:1)
我不是C#程序员,但仅凭语义我会说 - 不,不是。
Journal和Fysncing一个写入与确认它在某个mongod
中的存在是非常不同的,老实说,同时设置两者都没有意义,因为你实际上正在等待它写入磁盘两次{{1 }}。
你最好和Journal一起去;如果你需要记录的写作。再次Journaled写入与已确认的写入不同,Journaled在返回响应之前给出了磁盘上的持久性感,但是,只需要接收已确认的写入以使其返回,而不是写入磁盘。
所以不,:/
与您WriteConcern.Acknowledged
的旧设置不一样,但我会说这已经足够了,而且您可能会对这些设置过度使用。
我注意到您的标题中包含Journal= true and FSYNCED =true
设置。这不是Fsync而是W = 1
。因此,您需要做的就是获得与之前相同的写入操作,实际上是将日记选项与acknowledged
一起添加到您的写作问题中,这应该会给您带来与之前相同的写入问题。