MongoDB:读关注

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB读关注,类似于关系型数据库的隔离级别,但只是解决脏读的问题 READ-uncommited。在3.2版本后,读关注read concern在local majority 的基础上新增linerizable级别,使读到的数据更加安全,但也带来一些性能上面的问题。

MongoDB读关注,类似于关系型数据库的隔离级别,但只是解决脏读的问题 READ-uncommited。
在3.2版本后,读关注read concern在local majority 的基础上新增linerizable级别,使读到的数据更加安全,但也带来一些性能上面的问题。
在一个3副本的副本集架构中,看看设置不同read concern级别,会对读操作有什么影响image
假设在同一个时间线T1~T4上,primary多次执行写操作,分解写过程,分析下可以返回的数据:
image
T1--A写入数据,B、C同步oplog,B、C应用日志之后,ACK返回给A
T2--A写入数据,B、C同步oplog,C应用日志之后,ACK返回给A,B没有返回
T3--A写入数据,C同步oplog, C没有返回
对不同读关注级别,总结如下
image

可以看到,linearizable级别,需要查询过滤条件中包含唯一约束fields,并且推荐只在primary查询时使用;
查询会一直等待大部分节点返回ACK,所以要有超时设置,db.restaurants.find( { _id: 5 } ).readConcern("linearizable").maxTimeMS(10000);
读到的数据肯定是持久化的数据,但性能会有所降低。

majority级别,只要是在发起读操作之前,已经大部分节点ACK的数据,都可以被读取,但不保证数据已经持久化;
推荐使用majority。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
22天前
|
NoSQL MongoDB 数据库
【MongoDB】MongoDB中执行查询
【4月更文挑战第3天】【MongoDB】MongoDB中执行查询
|
24天前
|
缓存 NoSQL 关系型数据库
【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
【4月更文挑战第2天】【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
|
监控 NoSQL 安全
mongodb 持久化
Mongodb在1.8版本之后开始支持journal,就是我们常说的redo log,用于故障恢复和持久化。
1975 0
|
2月前
|
运维 NoSQL Linux
MongoDB详解(六)——MongoDB主从同步配置
MongoDB详解(六)——MongoDB主从同步配置
53 5
|
5月前
|
SQL NoSQL MongoDB
06 MongoDB - 数据操作
06 MongoDB - 数据操作
21 0
|
9月前
|
存储 缓存 NoSQL
【mongo 系列】mongodb 学习十二,MongoDB 存储引擎
上次我们说到了关于 mongodb 的集群,分为主从集群和分片集群,对于分片集群中的分片这里需要注意如下几点,一起来回顾一下
193 0
|
9月前
|
存储 SQL NoSQL
【mongo 系列】mongodb 学习一,基本 nosql 和 mongodb等数据库对比
咱们工作或者学习的过程中,接到一个需求,或者学习一个技能的时候,我们是如何去学习的呢?
107 2
|
SQL NoSQL MongoDB
MongoDB:14-MongoDB- 原子操作
MongoDB:14-MongoDB- 原子操作
533 0
|
NoSQL MongoDB 存储
MongoDB: 通过ReadConcern 来处理备库一致读的问题
问题描述 MongoDB的写请求写入Primary, secondary从Primary自动获取并且应用oplog来保持和主库的同步, MongoDB 允许用户从Primary 或者 secondary 读取数据(由客户端ReadPreference 决定)。
2671 0
|
NoSQL 程序员 C#
C#简单操作MongoDB
一 安装MongoDB 官网按需下载, 安装, 一步到位. 二 VS创建新项目 创建一个.netcore console项目, 然后nuget安装驱动MongoDB.Driver 三 建立连接 在Program.
2513 0