我们将Mongo DB用于基于Java Java EE的应用程序。 我们使用一个主要和两个辅助作为Mongo DB集群的一部分 Mongo DB作为我们架构的一部分不断读取/更新/写入。
由于这个原因,当我们从Mongo DB进行提取操作时,我们得到脏读(零值)。
为了解决这个问题,我试图以这样一种方式对其进行配置:读取操作总是从主要本身获取,写入/更新可以转到主要/次要。
如果可能,请告诉我(始终从主要读取并使用任何主要/次要的东西进行写入/更新)
它会对这样的设计产生负面影响吗?
答案 0 :(得分: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/
其中指出不建议使用不带错误检查的写入进行生产。
答案 1 :(得分:1)
要排除从属读取,您必须设置相应的ReadPreference。请参阅Mongo连接类的文档。
这样的事情:
mongo.setReadPreference(ReadPreference.primary());
然而,文档说,默认情况下,所有读取都应该已经转到主要:
默认情况下,所有读写操作都将在主数据库上进行,但可以通过更改读取首选项来读取辅助数据:
你确定你没有在应用程序中打开奴隶读取吗?