开发者社区> 问答> 正文

MongoDB 副本集控制读操作的一致性级别 —— ReadConcern的级别有几个,分别是什么

MongoDB 副本集控制读操作的一致性级别 —— ReadConcern的级别有几个,分别是什么

展开
收起
不变的狗子 2021-09-28 14:16:33 1447 0
2 条回答
写回答
取消 提交回答
  • 即使是搬砖,也要有自己的姿势

    readConcern解决的是读取数据是否正确的问题,比如 脏读 幻读 不可重复读的问题。 有以及几个纬度可供选择: 1.# local:假如 readPreferred配置的是primary.那么读取数据时,只在primary的local查,可能出现的问题是 1.local的时候可能还没有刷新到磁盘或者journal日志中,只是在内存中,那么当前机器宕机 重启后这个local的数据就读取不到了
    2.local的数据可能还没有同步到其他的从节点中,那么如果readPreferred配置的secondary,是读取不到刚刚插入的数据的。 2.# avalibal:此项可以保证数据在当前节点上是不会再丢失的,比如宕机啊 重启后,也就是以及落地的数据,但是还有可能没有同步到从节点或者大部分的从节点上。 3.marjority:读取已经存在大部分的节点上的数据,可以保证该数据安全 可靠 以及可以安全使用了。 4.snapshort:快照读取,这个比较复杂,在每个节点上间隔时间生成一份快照,而在这份快照上读取数据要求大部分的节点都同步到的快照上的数据

    2021-10-14 11:28:46
    赞同 展开评论 打赏
  • 热爱技术

    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

    2021-09-28 14:17:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载