mongodb-4.4.10版本的存储引擎与写策略

mongo官方存储引擎说明地址: Configuration File Options — MongoDB Manual   mongodb有两种存储引擎:wiredTiger、inMemory,后者在4.0版本中已经废弃。
wiredTiger比inMemory多了journal buffer机制,也就是每次存储数据到缓存时,同时将数据存储到journal buffer,并且每100ms刷新日志到journal文件。这样当“每60s或容量达到2G后提交一次到磁盘文件“时,大大减少数据丢失的情况。

Journaling

类似于关系数据库中的事务日志。Journaling能够使MongoDB数据库由于意外故障后快速恢复。MongoDB2.4版本后默认开启了Journaling日志功能,mongod实例每次启动时都会检查journal日志文件看是否需要恢复。由于提交journal日志会产生写入阻塞,所以它对写入的操作有性能影响,但对于读没有影响。在生产环境中开启Journaling是很有必要的。

写策略配置:{ w: <value>, j: <boolean>, wtimeout: <number> }

w:   数据写入到number个节点才向用客户端确认

        {w: 0} 对客户端的写入不需要发送任何确认,适用于性能要求高,但不关注正确性的场景

        {w: 1} 默认的writeConcern,数据写入到Primary就向客户端发送确认

        {w: “majority”} 数据写入到副本集大多数成员后向客户端发送确认,适用于对数据安全性要求比较高的场景,该选项会降低写入性能

j:   写入操作的journal持久化后才向客户端确认

          默认为{j: false},如果要求写入持久化了才向客户端确认,则指定该选项为true

wtimeout: 写入超时时间,仅w的值大于1时有效。

当指定{w: }时,数据需要成功写入number个节点才算成功,如果写入过程中有节点故障,可能导致这个条件一直不能满足,从而一直不能向客户端发送确认结果,针对这种情况,客户端可设置wtimeout选项来指定超时时间,当写入过程持续超过该时间仍未结束,则认为写入失败。

java配置类及参数--com.mongodb.WriteConcern

UNACKNOWLEDGED:不等待服务器返回或确认,仅可以抛出网络异常;

ACKNOWLEDGED:默认配置,等待服务器返回结果;

JOURNALED:等待服务器完成journal持久化之后返回;

W1 :等待集群中一台服务器返回结果;

W2 :等待集群中两台服务器返回结果;

W3 :等待集群中三台服务器返回结果;

MAJORITY:等待集群中多数服务器返回结果;

end.

支付宝扫一扫,为女程序员打赏!
作者:梦幻朵颜
版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/zhuwenjoyce/p/15495379.html