• mongodb写入安全级别


    MongoDB的写安全机制

    写入安全(Write Concern)是一种由客户端设置的,用于控制写入安全级别的机制,通过使用写入安全机制可以提高数据的可靠性。

    MongoDB提供四种写入级别,分别是:

    • (Unacknowledged)非确认式写入
    • (Acknowledged)确认式写入
    • (Journaled)日志写入
    • (Replica Acknowledged)复制集确认式写入

     

    1. 非确认式写入

     

    2. 确认式写入

     

    3. journal日志写入

    64位机器上,MongoDB 2.0以上版本默认情况下是开启journal

    journal文件位于journal目录中,只能以追加方式添加数据,文件名以j._开头

    数据库正常关闭时(例如:db.shutdownServer()来关闭数据库),数据库服务会清空journal目录下的所有文件

    MongoDB数据库每隔100ms或30ms向journal文件中flush一次数据

    journal日志和data数据在一个磁盘上时每隔100ms刷新一次,不在一个磁盘上时30ms刷新一次,建议把journal日志和data数据放在不同的磁盘上,提高数据的可靠性

    4. 复制集确认式写入

    5.写入安全级别的使用

    W选项

    0:非确认式写入

    1:确认式写入

      说明:这个级别下,对副本级只对主库做确认写入

    2:副本级确认式写入

      说明:这个级别下,副本级第一个slave写入成功后就响应给client

    majority:复制级更多slave写入成功后,在响应给client

    示例代码

    //连接数据库
    dbService = connect("localhost:27017");
    //选择插入集合
    db = dbService.getSiblingDB("jike");
    
    //创建bluk对象用于批量插入
    db.write_concern.drop();
    
    //测试数据
    var doc1 = {
        name:"xiaoli",
        age:20,
        address:
        {
            province:"GuangDong",
            city:"ShenZhen"
        }
    }
    
    print("======writeConcern的使用 - 非确认式写入======")
    var result = db.wirte_concern.insert(doc1,{writeConcern:{w:0}})
    printjson(result)
    
    print("======writeConcern的使用 - 确认式写入======")
    var result = db.wirte_concern.insert(doc1,{writeConcern:{w:1}})
    printjson(result)
    
    print("======writeConcern的使用 - 确认式写入 + journaled + wtimeout======")
    var result = db.wirte_concern.insert(doc1,{writeConcern:{w:1,j:true,wtimeout:5}})
    printjson(result)
  • 相关阅读:
    几句话总结一个算法之DQN
    几句话总结一个算法之Q-Learning与Sarsa
    几句话总结一个算法之Policy Gradients
    深度图像特征在推荐和广告中的应用(三)
    深度图像特征在推荐和广告中的应用(一)
    Kaggle实战之二分类问题
    Kaggle实战之一回归问题
    Deep Learning 论文解读——Session-based Recommendations with Recurrent Neural Networks
    Scala 中的函数式编程基础(三)
    Scala 中的函数式编程基础(二)
  • 原文地址:https://www.cnblogs.com/phpfans/p/4852808.html
Copyright © 2020-2023  润新知