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。

目录
相关文章
|
存储 Java UED
Java网络编程:实现文件断点续传功能
文件下载是网络应用程序中的常见任务,而断点续传是提供更好用户体验的重要功能之一。本文将详细介绍如何使用Java实现文件断点续传功能,使用户能够在下载中断后从上次中断的地方继续下载。
445 0
|
存储 消息中间件 NoSQL
亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型
互联网快速发展的今天,社交类应用、消息类功能大行其道,占据了大量网络流量。大至钉钉、微信、微博、知乎,小至各类App的推送通知,消息类功能几乎成为所有应用的标配。根据场景特点,我们可以将消息类场景归纳成三大类:IM(钉钉、微信)、Feed流(微博、知乎)以及常规消息队列。
16941 0
|
自然语言处理 Docker 容器
elasticsearch-analysis-ik分词器下载与安装
elasticsearch-analysis-ik分词器下载与安装
3969 0
elasticsearch-analysis-ik分词器下载与安装
|
7月前
|
XML 安全 Apache
利用EXCEL进行XXE攻击
本文介绍了通过构造恶意 Excel 文件利用 XXE(XML 外部实体)漏洞的原理与实践。首先说明了文件如 Word、Excel 等以 ZIP 格式存储,包含多个 XML 文件的特点。当服务器未正确配置 XML 解析器时,可能导致文件泄露、远程代码执行或拒绝服务攻击等风险。接着详细描述了搭建测试环境的过程,包括使用 Apache POI 依赖读取 Excel 文件,修改 xlsx 文件中的 Content_Types.xml 添加外部实体引用,以及通过 DNSLog 验证漏洞存在。最后展示了如何利用外部 DTD 文件读取目标系统上的敏感文件,并将数据写入指定位置,完成攻击验证。
609 5
利用EXCEL进行XXE攻击
|
11月前
|
NoSQL 关系型数据库 Shell
Mongodb支持事务吗?
MongoDB 是一个非关系型数据库,最初不支持事务。4.0版本引入了多文档事务支持,确保跨多个文档的操作要么全部成功,要么全部失败回滚,保持数据一致性。从4.2版本起,分布式事务和多文档事务成为同义词,支持分片集群和副本集上的多文档操作。配置事务需开启副本集,并通过会话管理事务的提交与回滚。示例展示了如何在MongoDB Shell中使用事务进行多文档操作。
1075 11
|
存储 NoSQL 数据管理
揭秘MongoDB时间序列集合:这个超级功能将如何彻底改变你的数据管理?
【8月更文挑战第8天】时间序列数据记录随时间变化的信息,在数据库管理中至关重要。MongoDB自4.0版起引入时间序列集合,专为这类数据优化存储与查询。通过问答形式介绍其特点:自动数据过期、高效存储机制及快速查询操作。创建时需指定时间字段及可选元数据字段。支持设置数据过期时间,采用粗粒度索引减少I/O操作。查询时可通过时间范围筛选数据,并利用聚合框架进行数据分析。随着实时分析需求的增长,时间序列集合的应用将更加广泛。
764 1
|
NoSQL 数据挖掘 数据处理
深入浅出:MongoDB聚合管道的技术详解
深入浅出:MongoDB聚合管道的技术详解
|
存储 缓存 Dragonfly
如何进行容器镜像加速?| 深度揭秘阿里云 Serverless Kubernetes(3)
容器相比虚拟机最突出的特点之一便是轻量化和快速启动。相比虚拟机动辄十几个 G 的镜像,容器镜像只包含应用以及应用所需的依赖库,所以可以做到几百 M 甚至更少。但即便如此,几十秒的镜像拉取还是在所难免,如果镜像更大,则耗费时间更长。
1709 0
如何进行容器镜像加速?| 深度揭秘阿里云 Serverless Kubernetes(3)
|
Java 应用服务中间件 Maven
IDEA使用Tomcat
IDEA使用Tomcat
197 0
|
SQL 安全 Java
Mybatis中# 和 $ 的使用详解
Mybatis中# 和 $ 的使用详解
565 0