春天mongodb写关注值

时间:2012-06-15 16:57:30

标签: spring mongodb

我在spring中有以下核心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?

2 个答案:

答案 0 :(得分:3)

写入关注数字是“w”的值,其映射到当w> 1时被认为成功之前写入必须传播到的副本的数量。 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());

那应该显示Journal设置,Fsync设置(两者都是布尔值),W(作为int)。

答案 1 :(得分: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>

希望这可以提供帮助。