MongoDB日记——MongoDB的写安全机制

写过程介绍

当使用insert/update/remove/save等操作更新集合中的数据时,只是修改了数据在内存中的映像,数据更新并没有同步地保存到磁盘上,而且更新内存中的数据之前,更新操作会被记录到journal日志文件中。
这里写图片描述

写安全级别介绍

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

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

  • Unacknowledged 非确认式写入
  • Acknowledge 确认式写入
  • Journaled 日志写入
  • Replica Acknowledged 复制确认式写入

非确认式写入

非确认式写入不会返回任何结果,对于写操作,在没有得到服务器写入确认的情况下就立即返回,所以无法知道是否写入成功。
这里写图片描述

确认式写入

写操作必须得到MongoDB服务器的写入确认,如果写入失败,服务器会返回异常
这里写图片描述

journal日志简介

  • journal日志作用相当于Oracle中的redo日志文件,用于故障恢复和持久化
  • 64位机器上,MongoDB2.0以上版本默认情况下是开启了journal
  • journal文件位于journal目录中,只能以追加方式添加数据,文件名以j._开头
  • 数据库正常关闭时(例如:db.shutdownServer()来关停数据库),数据库服务会清空journal目录下的所有文件
  • MongoDB数据库每隔100ms(或journal和数据文件不在同一磁盘则是30ms)想joournal文件中flush一次数据

日志写入

写操作要等到操作记录存储到journal日志后才返回结果,这种写入方式是可以容忍服务器突然宕机,有效的保障数据的可靠性
这里写图片描述

复制集确认式写入

写操作不仅要得到主节点的写入确认,还需要得到从节点的写入确认,可以设置写入节点的个数,此处设置为2,所以写入结点为2时返回确认信息。
这里写图片描述

总结

设置写安全级别,其实就是在写操作的性能和写操作的可靠性之间去一个权衡,使用的写安全级别越高,写操作等待时间越长,数据的可靠性也就越高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值