0

我们将 Mongo DB 用于基于 Java Java EE 的应用程序。我们使用一个主要和两个辅助作为 Mongo DB 集群的一部分 Mongo DB 作为我们架构的一部分不断地读取/更新/写入。

因此,当我们从 Mongo DB 执行 fetch 操作时,我们会得到脏读(零值)。

为了解决这个问题,我试图以这样一种方式配置它,即读取操作总是从主要本身获取,并且写入/更新可以转到主要/次要。

请让我知道这是否可能(始终从主要读取并使用主要/次要的任何东西进行写入/更新)

这样的设计会产生负面影响吗?

4

2 回答 2

2

由于 mongoDB 在插入中使用分阶段写入,即使在单个节点中也可能存在写入操作滞后。 http://docs.mongodb.org/manual/reference/glossary/#term-journal

使用写关注来避免问题(脏数据):http ://api.mongodb.org/java/2.6/com/mongodb/WriteConcern.html

您可以阅读有关写入操作的更多信息:http: //docs.mongodb.org/manual/core/write-operations/

其中指出不建议在生产中使用不带错误检查的写入。

于 2013-01-29T06:37:42.943 回答
1

要排除从读取,您必须设置相应的ReadPreference。请参阅有关Mongo连接类的文档。

像这样的东西:

 mongo.setReadPreference(ReadPreference.primary());

但是,文档说,默认情况下,所有读取都应该已经转到主:

默认情况下,所有读取和写入操作都将在主节点上进行,但可以通过更改读取首选项从辅助节点读取:

你确定你没有在应用程序中打开从读取?

于 2013-01-29T05:09:14.333 回答