首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Mongo在读取关注点设置为主要的情况下从次要读取

在MongoDB中,读取关注点设置为主要的情况下从次要读取是为了实现读写分离和提高系统的可用性和性能。

读写分离是指将读操作和写操作分离到不同的节点上进行,以减轻主节点的负载压力。主要的读取关注点指的是读操作会优先选择主节点进行,而次要的读取关注点指的是读操作也可以选择从节点进行。

为什么要从次要读取呢?主要有以下几个原因:

  1. 提高读取性能:通过从次要节点读取数据,可以减轻主节点的读取压力,提高系统的读取性能和响应速度。
  2. 分担主节点负载:将读操作分散到从节点上进行,可以减轻主节点的负载压力,提高系统的整体性能和可扩展性。
  3. 提高系统的可用性:当主节点发生故障或不可用时,从节点可以顶替主节点的角色,继续提供读取服务,保证系统的可用性。
  4. 支持数据备份和恢复:从节点可以作为主节点的备份,当主节点发生故障时,可以快速切换到从节点进行数据恢复,保证数据的安全性和可靠性。

在MongoDB中,可以通过设置读偏好(read preference)来控制读取关注点。常见的读偏好模式包括:

  1. primary:优先从主节点读取数据,适用于对数据一致性要求较高的场景。
  2. primaryPreferred:优先从主节点读取数据,如果主节点不可用,则从次要节点读取数据。
  3. secondary:只从次要节点读取数据,适用于对数据一致性要求较低,但读取性能要求较高的场景。
  4. secondaryPreferred:优先从次要节点读取数据,如果次要节点不可用,则从主节点读取数据。
  5. nearest:从最近的节点读取数据,可以是主节点或次要节点,适用于对读取性能要求较高,但数据一致性要求较低的场景。

腾讯云提供了MongoDB的云服务,包括TencentDB for MongoDB,具有高可用、高性能、弹性扩展等特点。您可以通过以下链接了解更多信息:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

高可用:MongoDB 容器部署

下面命令进入容器名 mongo1 容器内部。...MongoDB 服务还是否可用,正常情况下应该是不可用,主节点 mongo1 会降级,变为只读,直连 mongo1 可以连接进行数据读取,集群无法连接。...replicaSet = rs0 用来指定副本集名称 readPreference=primary ,将读取偏好设置为主节点,表示只主节点读取数据,这也是默认模式,除了 primary 外,还有一些其他配置选项...readPreference=secondary:查询将只副本集次要节点读取数据。如果没有次要节点可用,则查询将失败。...readPreference=secondaryPreferred:查询将优先从次要节点读取数据,但如果没有次要节点可用,则可以主节点读取数据。

39520

Spring认证中国教育管理中心-Spring Data MongoDB教程十五

转换器消歧 通常,我们会检查Converter它们相互转换源和目标类型实现。根据其中一个是否是底层数据访问 API 可以本地处理类型,我们将转换器实例注册读取或写入转换器。...如有必要,特定数据库启用分片。 启用了分片数据库中分片集合。 指定分片键。此示例使用基于范围分片。 19.2.分片键处理 分片键由一个或多个属性组成,这些属性必须存在于目标集合每个文档中。...默认情况下,来自 Kotlin 中使用 Java API 类型被识别为平台类型,对其进行空检查。...Kotlin 类型是 Spring API 推断出来,但在使用时应该知道 Spring API 可空性声明可以演变,即使在次要版本之间也是如此,并且将来可能会添加更多检查。...与静态导入类似,IDE 应该在大多数情况下自动建议导入。 例如,Kotlin reified 类型参数 JVM泛型类型擦除提供了一种解决方法,Spring Data 提供了一些扩展来利用此功能。

2.3K30

mongodb 内存引擎及配置

,而是存在内存里面的 mongodb 内存引擎是 InMemory 存储引擎,主要是用在企业版本 mongodb,MongoDB Enterprise , 他不是将文档存储磁盘上,而是将它们保留在内存中..., 因此 InMemory 存储引擎 是没有持久化 ,默认情况下,内存存储引擎使用50%物理RAM减去1 GB 那么,就这个不会持久化内存引擎,我们一般是什么场景会使用他呢?...存储非持久数据 应用程序数据和系统数据,例如用户,权限,索引,副本集配置,分片群集配置等等 用于高性能读取 用于副本集中用来提供高性能查询次要节点,可以其他节点恢复数据,因此 内存引擎是不适用于副本集主节点...引擎 配置拿过来,将 engine 字段改成 inmemory 即可 GridFS 顺手来看看 GridFS , 通过名字我们可以判别他是存储大文件 我们一起来看看 GridFS 主要是能做什么...(默认是 255 kB),并将每个大块存储单独文档 mongodb 中,GridFS 是使用这俩集合来存储文件块,也就是存储文件元数据 fs.chunks fs.files 今天就到这里,学习所得

1K50

软件测试面试题分享-No.1

为什么会问简历之外内容呢?可能想考察一下你知识面。 接下来让我们一起看一下今天一位小伙伴粉丝群分享一些面试题: 一、你是怎么做自动化测试。...存储上,mongodb和es是document格式存储,mysql是行格式,因此mongo和es并不需要显式定义字段,而mysql需要。...架构上,es天然就是分布式,这个可以很容易横向扩容,而mongo和mysql不行。...说说awk和sed区别。 sed核心是正则,awk核心是格式化. sed读取一行,以行作为单位,进行处理。 awk读取一行,切割成字段,以字段单位,进行细节处理。...,可以表达式简洁程度、不同浏览器响应速度、易用性上面去考虑 3、PO模式的话,这里需要介绍PO模式思路,介绍你是怎么管理页面元素,为什么要这么管理,以及怎么去执行用例和生成报告等 十、接口自动化如何做断言

48520

MongoDB 集群和安全

某些情况下,复制可以提供增加读取性能,因为客户端可以将读取操作发送到不同服务上, 不 同数据中心维护数据副本可以增加分布式应用程序数据位置和可用性。...承载数据节点中,一个且仅一个成员被视为主节点,而其他节点被视为次要)节点。 主节点接收所有写操作。...副本集只能有一个主要能够确认具有{w:“most”}写入关注写入; 虽然某 些情况下,另一个mongod实例可能暂时认为自己也是主要主要记录其操作日志中数据集所有 更改,即oplog。...次要(辅助、)节点(Secondaries)类型:数据冗余备份节点,可以读或选举。 三种角色: 主要成员(Primary):主要接收所有写操作。就是主节点。...仲裁者将永远是仲裁者,而主要人员可能会退出并成为次要人员,而次要人员可能成为选举期间主要 人员。 如果你副本+主节点个数是偶数,建议加一个仲裁者,形成奇数,容易满足大多数投票。

1K30

【微服务架构 】微服务简介,第3部分:服务注册表

但是,对于简单体系结构,自注册可能是正确选择。 ? 第三方注册通常在行业中使用。 在这种情况下,有一个管理所有其他服务进程或服务。...发现 可以想象,客户角度来看,发现是注册对应物。当客户想要访问服务时,它必须找出服务所在位置(以及执行请求其他相关信息)。 客户端发现强制客户端执行实际请求之前查询发现服务。...我们已通过以下方式将此库集成到现有的微服务示例中(将SELF_REGISTRY变量设置任何值以启用此功能)。...Mongo数据库中读取服务信息。...Mongo提供了一个命令行界面,我们可以启动或关闭期间使用它来注册服务。

96320

MongoDB mongoshake 迁移分片到复制集合

等符号 1 master_quorum 一般情况下这个参数false 打开此参数主要原因是,当你有两个mongoshake 都在抽取一个源端情况下,就需要打开这个参数 master_quorum...= false 这里建议一开始使用时设置true ,mongoshake 工作情况下,可以看到最新日志,当然这样操作可能有一些性能影响。...6 sync_mode = all 这里mongoshake 进行数据同步情况下,一般情况下都是设置all ,all 全量+增量模式,如果仅仅是全量同步可以设置 full ,但如果仅仅是增量则设置...10 mongo_connect_mode 这个部分和上面的链接部分是兼容,这里secondaryPreferred 是默认一个设置,如果这里拉取是分片集合,则这里建议primary 避免孤儿文档...这个选项是复制中不对DDL操作进行复制,所以数据迁移中避免一些问题,可以使用false 而数据同步情况就需要考虑打开这个设置

32810

补习系列(16)-springboot mongodb 数据库应用技巧

最近发布4.0版本中,MongoDB开始支持事务。可见,未来这些数据库之间差异只会越来越少。...二、Spring-Data-Mongo Spring-Data-Mongo 是Spring框架对于MongoDB 数据读写ORM 封装, 与 大家熟悉 JPA一样,其MongoDB-Java-Driver...一般情况下这已经足够了,但某些场景下你不得不实现自己序列化方式,比如通过文档存储某些特殊格式内容。...(secondary)读 secondary 仅从备节点(secondary)读取数据 secondaryPreferred 优先从备节点读,节点不可用时到主节点读取 nearest 到网络延迟最低节点读取数据...,不管是主节点还是节点 小结 MongoDB 是当下 NoSQL 数据库首选,也有不少服务化架构采用了 MongoDB作为主要数据库, 其 4.x版本中即将推出事务功能,未来该文档数据库相对于

1.8K41

MongoDB 事务 — 基础入门篇

几个选项值: w:0 设置 0 无需关注写入成功与否。 w:1 ~ 任意节点数 自定义节点数设置,复制集中不得大于最大节点数。...如果设置 j:true,写操作只有到达 journal 文件才算成功。...主要保证事务中隔离性,避免脏读。 可选值 available:读取所有可用数据。 local:仅读取当前分片数据。 majority:读取大多数节点上提交完成数据。...readConcern 默认情况下是脏读,例如,用户主节点读取一条数据之后,该节点未将数据同步至其它从节点,就因为异常挂掉了,待主节点恢复之后,将未同步至其它节点数据进行回滚,就出现了脏读。...("secondaryPreferred") 解决方法一: 设置 readPreference=primary,将复制集节点读取节点转换为主节点。

2.7K20

mongodb笔记

某些情况下,复制可以提供增加读取性能,因为客户端可以将读取操作发送到不同服务上,不同数据中心维护数据副本可以增加分布式应用程序数据位置和可以性。...(2)复制 副本集时一组维护相同数据集mongod实例。包含多个数据承载节点和可选一个仲裁节点。承载数据节点中,一个且仅有一个成为被视为主节点,其他节点被视为次要节点。...主节点接收所有写操作,副本集只有一个主要能够确认具有{w:”most”}写入关注写日;虽然某些情况下,另一个mongod实例可能暂时认为自己也是主要。...副本集三个角色 副本集有两种数据类型三个角色 两种类型: 主节点(primary)类型:数据操作主要连接点,可读写。 次要(辅助、)节点类型:数据冗余备份节点,可以读或选举。...三种角色: 主要成员(primary):主要接收所有写操作。就是主节点。 副本成员(Replicate):主节点通过复制操作以维护相同数据集,即数据备份,不可写操作,但可以读操作(但需要配置)。

1.3K10

MongoDB入门实战教程(11)

前面我们学习了MongoDB中写操作事务管理,本篇我们开始进入读操作事务。 1 读数据关注两个问题 通过mongodb读取数据时,我们一般需要关注两个问题: (1)哪里读取?...readPreference适用场景 比如,电商场景中,用户下单后会立即跳转到订单详情页,这时候可以配置 primary/primaryPreferred,因为这时候节点可能还没有获得同步新订单数据...最后,在内容管理场景中,将用户上传图片分发到全世界(比如多数据中心场景),可以配置nearest,让各地用户能够就近读取数据。...; .NET应用程序中: // 通过连接字符串设置全局默认readPreference策略 mongodb://mongo-master:27017,mongo-slave1:27017,mongo-slave2...).Find(doc => true); writeConcern + readConcern 某些场景中,向主节点写入了一条数据,立即从节点读取这条数据,如何才能在不改变方式前提下保证用户能够读取到刚刚写入数据

50930

012.MongoDB读写分离

如果应用程序需要读取它自己写操作(比如,先插入一个文档,再去查询它),那么不应该备份节点去读取数据,除非针对写操作,使用Write Concern定义w数值,复制到所有备份节点之后,再返回执行成功与否...1.2 使用场景 通常官方不推荐使用节点实现读写分离,但可能存在以下场景需要使用读写分离: 异地分布式部署 故障切换,紧急情况下节点读数据 1.3 延伸读写分离思考 该思考来源:https:...clusteradmin -p clusteradmin 4 my_rep:SECONDARY> db.getMongo().setSlaveOk() #分别连接两个Sencondary节点服务器,设置可读状态...2.3 客户端设置读取方式 通过修改客户端读取方式实现从节点读,具体方式包括: Read Preference模式 中文解释 primary 默认,只主节点读取数据 primaryPreferred...主节点不可用时,副节点读取数据 secondary 所有的读操作,副节点读取数据 secondaryPreferred 副节点不可用时,主节点读取数据 nearest 网络延迟最小节点获取数据

2.3K20

MongoDB PSA架构痛点以及如何应对

主要包括如下内容(WT存储引擎下版本是3.2,3.4,3.6,4.0,4.2为主,4.4,5.0也存在) 1、PSA架构下节点宕机后,重启主库为什么会这么久 2、PSA架构还有哪些问题 3、PSA架构下如何缓解内存压力以及推荐...1、用于副本集或者集群中读取数据时,能够允许我们读取到被大多数节点收到并被确认数据.对应关系型数据库里面提交读,注意这里只是允许而已(数据库提供能力,3.2版本才开始支持),客户端是否需要根据实际...3、临时将异常优先级别与投票都设置0(5.0版本由于不能禁用MajorityReadConcern,注意这个只能修改下应对库宕机或延迟时,来缓解主库内存压力以及解决一些配置majority场景...,另外注意changestream以及readConcern采用majority) 2、修改节点vote和priority0,这个只适合临时针对实例宕机或者存在大延迟情况下降低主库内存压力。...【方案2、临时将异常优先级别与投票都设置0来恢复】 1、查看config里面信息 几个重要时间: 当时北京时间:9号21点.

73130

春节送祝福谈谈 IO 模型(二)

Java 中 IO 模型,主要细分为 BIO(同步阻塞 )、NIO(同步非阻塞)、AIO(异步非阻塞 )。莫要怕,一切反动派都是纸老虎,下面就逐个击破。 02....BIO 是同步阻塞式 IO, Java 中主要是指文件读写磁盘 IO 以及网络通信 IO,是指平常用 java.io、java.net 这两个包。 喂,基本功扎实吗?...以 InputStream 字节输入流,提供流中读取 Byte 数据能力。 ? 以 OutputStream 字节输出流,提供向流中写出 Byte 数据能力。 ?...以 Reader 字符输入流,提供了读取文本数据编码支持。 ? 以 Writer 字符输出流,提供了写入文本数据能力。 无论是字节流还是字符流设计,背后都透漏了一个装饰器设计模式。...【是】 ==========> 客户端发来信息【客户端【1578754253173】】 关注点(三):writer.write() 是阻塞吗?

73530

【腾讯云 MongoDB】 基于snapshot库读优化

导语 我们发现腾讯云上一些腾讯云MongoDB实例主库写压力比较大情况下,这时库上会出现很多慢查询,经过调查发现,回放oplog时候加了全局锁,阻塞了所有的读直到回放结束。...修改内部读snapshot读 如果设置了readConcernreadMajority的话,mongo会开启一个后台线程,对已经同步到大多数节点oplog做一个snapshot,来实现readMajority...由于mongo server端是多线程处理请求,所以要限制cpu,保证库cpu使用不能超过我们设定值 但是测试过程中我们发现在限制cpu情况下,snapshot版本库上面会出现资源争抢情况...小结 通过去掉全局锁PBWM,使得主库写入压力很大情况下读性能有一个很大提升,但是并不是所有的场景都适用,下面两点需要注意。...这个问题在原生mongo中如果设置了readMajority的话也会出现,后面的话会去深入WT内部去研究这个问题。 4.png

2.8K10

Play Mongo 模块简介

Play Mongo 是一个专门 Play Framework 开发 MongoDB 模块, 该项目基于 MongoDB 官方 Scala 驱动,并且提供了更多实用功能,例如, 更简洁多样数据库交方式...支持关联查询(Relationship Query) 为什么开发 Play Mongo ?...另外 Mongo Scala Driver 数据库操作默认返回 Observable 类型,如果你忘记了调用 toFuture 方法,或是没有消费返回数据,则数据库操作实际上并不会被执行,开发中很容易引入一些...ReactiveMongo 主要有三个问题,一是版本更新不够及时,无法跟上 MongoDB 更新节奏;二是可能存在安全隐患,容易造成生产事故,详情参考:issue#721。...Play Mongo 不会过多关注底层驱动实现细节,而是将关注点放在与 Play Framework 集成上,开发者提供舒适开发体验。

1.3K10

ApiBoot v2.2.7版本发布,新增扩展SpringBoot Mongo详细配置组件

ApiBoot依赖于SpringBoot,完全遵循SpringBoot自定义Starter规范实现,可以使用ApiBoot构建独立Java应用程序,主要职责是封装并且落地项目中常用到第三方依赖,...愿景: Java开发者提供低门槛第三方框架集成解决方案,让复杂框架集成使用门槛更低。 开箱即用,内部封装了主流框架,只需添加依赖、简单配置即可使用。 各个组件可独立使用,不再冗余你应用程序。...单位:毫秒 api.boot.mongo.settings.socket.read-timeout-milli-seconds 10000 设置Socket读取超时时间,单位:毫秒 api.boot.mongo.settings.socket.receive-buffer-size...设置心跳Socket读取超时时间,单位:毫秒 api.boot.mongo.settings.heartbeat-socket.receive-buffer-size 设置心跳Socket接收缓冲区大小...连接池上运行第一个维护作业之前要等待时间,单位:毫秒 api.boot.mongo.settings.cluster.local-threshold-milli-seconds 15 设置本地阈值,

53620
领券