2012-06-15 70 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> 

希望這可以提供幫助。