日期:2014-05-16  浏览次数:20511 次

了解一下MongoDB中的写关注(write concern)

?

? ? ? ? MongoDB提供了一个配置参数:write concern 来让用户自己衡量性能和写安全。分布式数据库中这样的参数比较常见,记得Cassandra中也有一个类似参数,不过那个好像是要写入几个节点返回成功。其实道理都一样分布式的集群环境考虑到性能因素不能确保每个成员都写入后在返回成功,所以只能交给用户根据实际场景去衡。

?

? ? ? ??Mongodb提供了以下几个可选设置:Errors Ignored,Unacknowledged,Acknowledged,Journaled。列出的级别分别是安全性一次增强的。解释一下每一个选项的特点。

?

Errors Ignored [-1]

一个比较不靠谱级别,发出谢写令后就不再理会,即使现在有网络问题也不会发出异常。其实这个官方已经明确给出了警告,闲着没事别用这个。

? ? Unacknowledged [0]

这个级别也属于比较低的级别,以前这个级别是驱动配置的默认级别,不过后来调整成Acknowledged级别。在这个级别下,这个驱动会根据当前系统的网络配置进行网络问题的检测,不等待Mongd的返回。代码测试:本地网络问题是否有异常?本地网络无问题是远程server问题是否异常?

? ? Acknowledged [1]

这个级别算是中等级别的配置,这个级别能够拿到mongod的返回信息:dupkey Error,以及一些其他的问题。现在这个级别是驱动的默认级别,估