MongoDB:读关注

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 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
目录
相关文章
|
12天前
|
NoSQL 关系型数据库 Shell
Mongodb支持事务吗?
MongoDB 是一个非关系型数据库,最初不支持事务。4.0版本引入了多文档事务支持,确保跨多个文档的操作要么全部成功,要么全部失败回滚,保持数据一致性。从4.2版本起,分布式事务和多文档事务成为同义词,支持分片集群和副本集上的多文档操作。配置事务需开启副本集,并通过会话管理事务的提交与回滚。示例展示了如何在MongoDB Shell中使用事务进行多文档操作。
44 11
|
监控 NoSQL 安全
mongodb 持久化
Mongodb在1.8版本之后开始支持journal,就是我们常说的redo log,用于故障恢复和持久化。
2118 0
|
5月前
|
NoSQL MongoDB
MongoDB 读写分离——MongoDB 安装
MongoDB 读写分离——MongoDB 安装
49 0
|
8月前
|
监控 NoSQL 算法
【MongoDB】MongoDB的复制如何工作?
【4月更文挑战第1天】【MongoDB】MongoDB的复制如何工作?
|
8月前
|
运维 NoSQL Linux
MongoDB详解(六)——MongoDB主从同步配置
MongoDB详解(六)——MongoDB主从同步配置
339 5
|
8月前
|
NoSQL MongoDB 数据库
【MongoDB】MongoDB中执行查询
【4月更文挑战第3天】【MongoDB】MongoDB中执行查询
|
8月前
|
缓存 NoSQL 关系型数据库
【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
【4月更文挑战第2天】【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
|
存储 SQL NoSQL
【MongoDB系列】-MongoDB详解(一文让你明白什么是MongoDB)
【MongoDB系列】-MongoDB详解(一文让你明白什么是MongoDB)
452 0
|
存储 NoSQL MongoDB
【mongo 系列】mongodb 学习十,MongoDB 分片集群
之前说到了主从集群,关于主从集群的搭建以及细节后面会再次分享,这次我们先初步来看看 分片集群
155 0
|
SQL NoSQL MongoDB
MongoDB:14-MongoDB- 原子操作
MongoDB:14-MongoDB- 原子操作
657 0