首页
学习
活动
专区
圈层
工具
发布

MongoDB读策略之read Preference

// MongoDB读策略之read Preference // 01 read Preference概念 Read Preference描述MongoDB客户端如何路由读操作到复制集成员。...默认情况下,客户端直接将它的读操作发送到primary成员上,但同时客户端可以定义一个读操作的读取顺序,例如优先读secondary成员。定义这个读取顺序的选项,就是Read Preference。...02 选项 Read Preference常见的模式: 1、primary 默认模式,当前的读操作都从primary上面读。...2、primaryPreferred 多数情况下,读操作从primary读,特殊情况从secondary读 3、secondary 所有操作从secondary上读 4、secondaryPreferred...多数情况下从secondary上读,特殊情况从primary读 5、nearest 从网络延时最低的那个节点读,不管是primary还是secondary 上面说过了,Read

3.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spark shuffle读操作

    2. shuffle读过程是否有溢出操作?是如何处理的? 3. shuffle读过程是否可以排序、聚合?是如何做的?...下面我们直接进入主题,看shuffle的读操作是如何进行的。 直接计算 其核心方法如下: ? 首先,org.apache.spark.rdd.RDD#compute是一个抽象方法。...我们来看shuffle过程reduce的读map数据的实现。 表示shuffle结果的是 org.apache.spark.rdd.ShuffledRDD。 其compute 方法如下: ?...在聚合的过程中涉及到了数据的溢出操作,如果有溢出操作还涉及 ExternalSorter的溢出合并操作。 数据排序 数据排序其实也很简单。...关于聚合和排序的使用,在前面文章中shuffle写操作也提到了,聚合和排序的类是独立出来的,跟shuffle的处理耦合性很低,这使得在shuffle的读和写阶段的数据内存排序聚合溢出操作的处理类可以重复使用

    1K20

    MongoDB基本操作

    并新增了一条{“name”:”lecaf”}的数据 db.users.insert({“name”:”ghost”, “age”:10}) 在users集合中插入一条新数据,,如果没有users这个集合,mongodb...会自动创建 save()和insert()也存在着些许区别:若新增的数据主键已经存在,insert()会不做操作并提示错误,而save() 则更改原来的内容为新内容。...val$/i })    正则,类似like;“i”忽略大小写,“m”支持多行 db.collection.find({ $or : [{a : 1}, {b : 2} ] })    $or或 (注意:MongoDB...*val$/i } })    这是一个与其他查询条件组合使用的操作符,不会单独使用。上述查询条件得到的结果集加上$not之后就能获得相反的集合。...count(true)    count()返回结果集的条数 db.collection.find().skip(5).limit(5).count(true)    在加入skip()和limit()这两个操作时

    83630

    MongoDB教程(十五):MongoDB原子操作

    MongoDB 提供了一系列内置的原子操作,使开发者能够轻松地在数据库层面实现事务性和数据完整性。...本文将深入探讨 MongoDB 中的原子操作,包括更新、插入和删除操作的原子性,并通过具体案例代码展示如何在实际应用中运用这些原子操作。...一、MongoDB 原子操作概述 MongoDB 中的原子操作通常指的是在单个文档或单个写操作级别上,确保操作的不可分割性和隔离性。...在4.0版本之后,MongoDB 还引入了多文档事务,允许在多个文档或集合上执行跨文档的原子操作。 二、单文档原子操作 1. 更新操作 MongoDB 的更新操作天然具备原子性。...db.users.deleteOne( { _id: ObjectId("5f9c9d...") } ); 三、多文档原子操作 在 MongoDB 4.0 及以上版本中,可以使用事务来实现跨文档的原子操作

    28710

    扩展你的复制集:MongoDB 4.0中从节点的非阻塞读操作

    背 景 从一开始,MongoDB就是这样设计的:当主节点上有一系列的写入操作时,每个从节点必须以相同的顺序体现出这些操作。...你可能会在最终一致性系统内看到这种现象,但在MongoDB中不会。 在从节点上,我们会分批应用写操作,因为按顺序应用这些写操作可能会导致从节点落后于主节点。...当批量应用写操作时,我们必须阻塞读操作,使应用程序不会看到以“错误”顺序应用的数据。这就是为什么由从节点读取数据时,必须定期等待副本批量数据的应用。...除了读操作必须等待副本批量数据写入完成外,写操作也需要一个锁,获取该锁要求所有读操作必须全部完成。...这意味着,在存在大量读操作的情况下,副本数据的写入可能会出现滞后——当链式复制(chain replication)被启用时,这个问题会相当复杂。 MongoDB 4.0的目标是什么?

    1.1K30

    扩展你的复制集:MongoDB 4.0中从节点的非阻塞读操作

    背 景 从一开始,MongoDB就是这样设计的:当主节点上有一系列的写入操作时,每个从节点必须以相同的顺序体现出这些操作。...你可能会在最终一致性系统内看到这种现象,但在MongoDB中不会。 在从节点上,我们会分批应用写操作,因为按顺序应用这些写操作可能会导致从节点落后于主节点。...当批量应用写操作时,我们必须阻塞读操作,使应用程序不会看到以“错误”顺序应用的数据。这就是为什么由从节点读取数据时,必须定期等待副本批量数据的应用。...除了读操作必须等待副本批量数据写入完成外,写操作也需要一个锁,获取该锁要求所有读操作必须全部完成。...这意味着,在存在大量读操作的情况下,副本数据的写入可能会出现滞后——当链式复制(chain replication)被启用时,这个问题会相当复杂。 MongoDB 4.0的目标是什么?

    1.2K30

    扩展你的复制集:MongoDB 4.0中从节点的非阻塞读操作

    背 景 从一开始,MongoDB就是这样设计的:当主节点上有一系列的写入操作时,每个从节点必须以相同的顺序体现出这些操作。...你可能会在最终一致性系统内看到这种现象,但在MongoDB中不会。 在从节点上,我们会分批应用写操作,因为按顺序应用这些写操作可能会导致从节点落后于主节点。...当批量应用写操作时,我们必须阻塞读操作,使应用程序不会看到以“错误”顺序应用的数据。这就是为什么由从节点读取数据时,必须定期等待副本批量数据的应用。...除了读操作必须等待副本批量数据写入完成外,写操作也需要一个锁,获取该锁要求所有读操作必须全部完成。...这意味着,在存在大量读操作的情况下,副本数据的写入可能会出现滞后——当链式复制(chain replication)被启用时,这个问题会相当复杂。 MongoDB 4.0的目标是什么?

    99030
    领券