快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → MongoDB读策略之read Preference

MongoDB读策略之read Preference

时间:2022-09-18 17:53:28人气:作者:快盘下载我要评论

//

MongoDB读策略之read Preference

//

01

read Preference概念

Read Preference描述MongoDB客户端如何路由读操作到复制集成员。

默认情况下,客户端直接将它的读操作发送到primary成员上,但同时客户端可以定义一个读操作的读取顺序,例如优先读secondary成员。定义这个读取顺序的选项,就是Read Preference。

MongoDB读策略之read Preference

Read Preference这个选项由read preference mode、tag set以及maxStalenessSeconds参数组成(后两者可选)。其中:

maxStalenessSeconds :代表最大延时时间。单词stale代表旧数据。也就是非旧数据的最大延时时间,最少设置为90s。用官方文档的话来描述,就是:

意思是如果从服务器的预期延时时间超过了maxStalenessSeconds时间,则不会从它上面读取。

注意:

1、选定除Primary之外的Read Preference可能返回旧的数据,因为复制是异步进行的。

2、Secondary上面的数据可能不能反映最近的写操作

3、Read Preference不影响数据是否可见,客户机可以在写入结果得到确认或已传播到大多数副本集成员之前看到它们。

02

选项

Read Preference常见的模式:

1、primary

默认模式,当前的读操作都从primary上面读。

2、primaryPreferred

多数情况下,读操作从primary读,特殊情况从secondary读

3、secondary

所有操作从secondary上读

4、secondaryPreferred

多数情况下从secondary上读,特殊情况从primary读

5、nearest

从网络延时最低的那个节点读,不管是primary还是secondary

上面说过了,Read Preference这个选项由read preference mode、tag set以及maxStalenessSeconds参数组成,如果一个复制集中的成员member有tag标签,可以通过下面的办法来让read操作定位到带有某个标签的成员上。(当然,Primary Mode不支持标签,因为它只有一个固定的节点。)

[ { "region": "South", "datacenter": "A" }, { } ]     // Find members with both tag values. If none are found, read from any eligible member.
[ { "region": "South" }, { "datacenter": "A" }, { } ] // Find members with the specified region tag. Only if not found, then find members with the specified datacenter tag. If none are found, read from any eligible member.
[ { "datacenter": "A" }, { "region": "South" }, { } ] // Find members with the specified datacenter tag. Only if not found, then find members with the specified region tag. If none are found, read from any eligible member.
[ { "region": "South" }, { } ]                        // Find members with the specified region tag value. If none are found, read from any eligible member.
[ { "datacenter": "A" }, { } ]                        // Find members with the specified datacenter tag value. If none are found, read from any eligible member.
[ { } ]                                               // Find any eligible member.

三、使用方法

MongoDB shell中调用readPreference的方法:

db.collection.find({}).readPref( "secondary", [ { "region": "South" } ] )

连接串中调用readPreference的方法:

复制集

mongodb://db0.example.com,db1.example.com,db2.example.com/?replicaSet=myRepl&readPreference=secondary&maxStalenessSeconds=120

分片集群

mongodb://mongos1.example.com,mongos2.example.com/?readPreference=secondary&maxStalenessSeconds=120

带tag的定义方式:

mongodb://mongos1.example.com,mongos2.example.com/?readPreference=secondary&readPreferenceTags=dc:ny,rack:r1&readPreferenceTags=dc:ny&readPreferenceTags=xxx

相关文章

  • 一步步带你设计MySQL索引数据结构

    一步步带你设计MySQL索引数据结构,想想我们生活中的例子,比如新华字典,我们有一个目录,目录根据拼音排序,内容包含了汉字位于字典中具体的的页码。聪明的你肯定也想到了,我们也可以借鉴这种思想,建立一个MySQL的目录,叫做“索引”。...
  • 影刀连接Mysql数据库

    影刀连接Mysql数据库,影刀配置连接mysql数据库基础版...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。