zoukankan      html  css  js  c++  java
  • 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.

    支付宝扫一扫,为女程序员打赏!
    作者:梦幻朵颜
    版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    config 文件夹中的 dev.env.js
    config 文件夹中的 index.js
    Dialog 对话框 可拖拽
    Pagination 分页 封装
    ElasticSearch学习03--使用Java连接ES
    ElasticSearch学习02--使用Kibana管理ES
    ElasticSearch学习01--基本结构与操作
    redis学习02--使用Jedis调用Redis
    redis学习01--常用命令
    Java基础学习08--JDK1.8特性
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/15495379.html
Copyright © 2011-2022 走看看