MongoDB 副本集控制读操作的一致性级别 —— ReadConcern的级别有几个,分别是什么
readConcern解决的是读取数据是否正确的问题,比如 脏读 幻读 不可重复读的问题。 有以及几个纬度可供选择: 1.# local:假如 readPreferred配置的是primary.那么读取数据时,只在primary的local查,可能出现的问题是 1.local的时候可能还没有刷新到磁盘或者journal日志中,只是在内存中,那么当前机器宕机 重启后这个local的数据就读取不到了
2.local的数据可能还没有同步到其他的从节点中,那么如果readPreferred配置的secondary,是读取不到刚刚插入的数据的。 2.# avalibal:此项可以保证数据在当前节点上是不会再丢失的,比如宕机啊 重启后,也就是以及落地的数据,但是还有可能没有同步到从节点或者大部分的从节点上。 3.marjority:读取已经存在大部分的节点上的数据,可以保证该数据安全 可靠 以及可以安全使用了。 4.snapshort:快照读取,这个比较复杂,在每个节点上间隔时间生成一份快照,而在这份快照上读取数据要求大部分的节点都同步到的快照上的数据
ReadConcern 有五个级别如下:
·"Local":读操作直接读取本地最新提交的数据,返 回的数据可能被回滚。
·" A v a i l a b l e " : 含 义 和 " L o c a l " 类 似 , 但 是 用 于 Sharding 场景可能会返回孤儿文档。
·"Majority":读操作返回已经在多数节点确认应用 完成的数据,返回的数据不会被回滚,但可能会读到 历史数据。
·"Linearizable":读取最新的数据,且能够保证数 据不会被回滚,是所谓的线性一致性,是最高的一致 性级别。
· "Snapshot":只用于多文档事务中,和"Majority" 语义类似,但额外提供真正的一致性快照语义。
资源来源:电子书《玩转MongoDB从入门到实战》,下载链接:https://developer.aliyun.com/topic/download?id=1060
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。