5

我在春天有以下核心 mongo 选项配置:

<mongo:mongo host="${db.hostname}" >
  <mongo:options
    connections-per-host="40"
    threads-allowed-to-block-for-connection-multiplier="1500"
    connect-timeout="15000"
    auto-connect-retry="true"
    socket-timeout="60000"
    write-number="1"
    write-fsync="false"/>
</mongo:mongo>

我想知道的是不同的写入编号选项,这些选项与写入问题相关,例如无、正常、安全等。

我可以假设 write-number 到 writeconcern 的映射如下?

NONE: -1
NORMAL: 0
SAFE: 1 (default)
FSYNC_SAFE: 2
REPLICAS_SAFE: 3
JOURNAL_SAFE: 4
MAJORITY: 5  

以下链接为在 spring 中设置 mongo 选项提供了很好的帮助,但对于 write-number 值不够具体: How to configure MongoDB Java driver MongoOptions for production use?

4

2 回答 2

3

写入关注数是“w”的值,它映射到当 w > 1 时写入被认为成功之前必须传播到的副本数。

FSYNC_SAFE 映射到设置 write-fsync(true 或 false),并且由于 JOURNAL_SAFE 也是一个布尔值,我怀疑 Spring 中有类似的布尔设置,但我在他们的任何文档中都找不到它。

如果您已经安装了所有东西来根据经验进行测试,只需尝试几种配置并检查生成的写入关注点的实际设置,例如:

       WriteConcern wc = new WriteConcern(); // should get your default write concern
       System.out.println(wc.getJ());
       System.out.println(wc.getFsync());
       System.out.println(wc.getW());

这应该会显示日志设置、Fsync 设置(均为布尔值)、W(作为 int)。

于 2012-06-17T07:32:28.743 回答
1

您可以配置 write-concern="ACKNOWLEDGED"。

<mongo:mongo id="replicaSetMongo" replica-set="${mongo.replicaSetSevers}" />
    <mongo:db-factory dbname="${mongo.dbname}" mongo-ref="replicaSetMongo" write-concern="ACKNOWLEDGED" />
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    </bean>

希望这能有所帮助。

于 2017-03-30T10:32:59.270 回答