Spring MongoDB 写入关注度值

5

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

我希望了解与写关注相关的不同写入数量选项,例如none、normal、safe等。

我可以假设写入数量与写关注的映射如下吗?

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

以下链接提供了关于在Spring中设置Mongo选项的很好的帮助,但对于写入数字值并不具体: 如何为生产环境配置MongoDB Java驱动程序MongoOptions?

2个回答

3
写入关注(write-concern)数字是“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(作为整数)。


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>

希望这可以帮助到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接