(转)mongodb写入安全级别

原博客地址:http://www.cnblogs.com/phpfans/p/4852808.html

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)
复制代码

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值