mongodb写入策略(WriteConcern)

更新时间:2023-06-18 19:34:09 阅读: 评论:0

mongodb写⼊策略(WriteConcern)
写⼊策略(WriteConcern)
日暮苍山远下一句mongodb的写⼊策略有多种⽅式,写⼊策略是指当客户端发起写⼊请求后,数据库什么时候给应答,mongodb有三种处理策略:客户端发出去的时候,服务器收到请求的时候,服务器写⼊磁盘的时候
Unacknowledged
客户端发出请求丢到socket的时候就收到相应,这个时候客户端不需要等地服务器的应答,但是的本地的驱动还是尽可能的通知客户端⽹络的异常,这和客户端操作系统的配置有关。就像现实中邮寄信件⼀样,丢到信箱就结束了,但是如果信箱坏了,发信⼈还是能知道的。思考的乐趣>我喜欢的节目
Acknowledged
这种⽅式客户端发送接⼝会等待服务器给的确认,这种⽅式⼀定能确保服务器收到了客户端的请求,并且服务器能够异常时,响应客户端。混的人
Journaled
Journaled⽅式相⽐Acknowledged的⽅式是要保证服务器端已经写⼊到硬盘⽂件了。对于Acknowledged的⽅式有可能服务收到请求数据相应客户端后的⼀瞬间当机了,这个数据就丢失了,但是对于Journaled⽅式,服务器保证写⼊到磁盘后再相应客户端,即使当机了,也不会导致数据丢失。
Replica Acknowledged
这个⽅式和Acknowledged是⼀样的意思,适⽤于Replica ts模式。Acknowledged模式下只有⼀台机器收到了请求就返回了,对于复制集模式有多台机器的情况,可以要求有多台机器收到写⼊请求后再相应客户端。这种更安全,但是导致了客户端耗时增加,所以要结合⾃⼰的场景设置合适的策略。
可以通过下⾯的⽅式设置默认的策略,majority表⽰多数节点写⼊成功后才相应客户端,也可以替换成具体的数⼦,⽐如w:2表⽰⾄少写⼊2个节点才返回。wtimeout表⽰超时时间,还有⼀个参加 j 可以设置true,fal表⽰是否是写⼊⽇志才返回。
cfg = rs.conf()
戒指的意义LastErrorDefaults = { w: "majority", wtimeout: 5000 }
也可以通过客户端来指定具体的策略,如下:⾄少要写⼊两个节点,超时时间是5s
db.products.inrt(
柯达广告
{ item: "envelopes", qty : 100, type: "Clasp" },
{ writeConcern: { w: 2, wtimeout: 5000 } }
)
如果复制集是3台机器,写⼊两台机器,流程如下:
脚麻的原因参考资料实习月志

本文发布于:2023-06-18 19:34:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1044446.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:客户端   请求   收到   时候
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图