2012-06-15 48 views
5

我在春天以下核心蒙戈选项配置:春天的MongoDB写的关注值

<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> 

我想知道的是关于不同的写号的选项是关于写像没有关注,正常,安全等

我可以假设写入数量到writeconcern的映射如下?

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

下面的链接提供了很好的帮助来设定在春季蒙戈的选择,而不是写数值不够具体: How to configure MongoDB Java driver MongoOptions for production use?

回答

3

的写关注数是“W”的值映射到写入必须传播到的副本的数量,然后在w> 1时认为成功。

FSYNC_SAFE映射到设置write-fsync(true或false),并且由于JOURNAL_SAFE也是布尔值,所以我怀疑存在在Spring中有类似的布尔值设置,但我无法在它们的任何d中找到它OCS。

如果你拥有的一切安装实证检验了这一点,只是尝试多种配置和检查结果写入关心的实际设置的东西,如:

 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)。

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> 

希望这可以提供帮助。