首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb读取首选项

问Mongodb读取首选项
EN

Stack Overflow用户
提问于 2012-11-23 20:28:34
回答 2查看 5.6K关注 0票数 3

设置:

我有一个mongodb主实例和两个辅助实例。两个辅助实例中的一个与我的web应用托管在同一区域。

我正在使用pymongo进行连接。

查询:

如何连接到延迟更低的辅助服务器?

目前我正在做这件事:

代码语言:javascript
复制
  from pymongo import ReplicaSetConnection
  from pymongo import ReadPreference

  db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
  db.read_preference = ReadPreference.SECONDARY

我能连接到任何一个次要的。如何从延时较低的实例强制获取连接

谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-04 18:36:21

这个答案是针对我的情况的,因为我最近的辅助服务器和我的web服务器在同一个区域(就像在同一台机器上运行一样好),所以数据传输会非常快,而且我不需要为带宽使用付费(考虑到数据量,带宽使用量在一个月内可能会变得非常重要)。

否则,'secondary_acceptable_latency_ms‘的默认值= 15ms。所以这并不重要。

因此,如果有人发现他/她自己也处于同样的情况,下面是要做的:

代码语言:javascript
复制
    from pymongo import ReplicaSetConnection
    from pymongo import ReadPreference

    db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
    db.read_preference = ReadPreference.SECONDARY
    db.secondary_acceptable_latency_ms = 0.001

谢谢!!

票数 3
EN

Stack Overflow用户

发布于 2012-11-23 22:38:48

阅读首选项如下所示:

  • PRIMARY:查询将发送到复制副本的主服务器,set.
  • PRIMARY_PREFERRED:查询将发送到主服务器(如果可用),否则secondary.
  • SECONDARY:查询将分布在辅助服务器之间。如果没有次要查询,则会引发错误;如果没有次要查询,则会引发错误;如果没有次要查询,则会引发错误;如果没有次要查询,则会在所有成员之间分发available.
  • SECONDARY_PREFERRED:查询。

因此,对于最近的次要节点,没有特定于的。您可以通过组合NEAREST和tag_sets并标记辅助节点来实现这一点。

然后,如果从属服务器已标记为{'secondaries': 1},则可以从最近的从属服务器读取数据,如下所示:

代码语言:javascript
复制
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference

db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]

更新:

您应该注意到,如果发生了选举并且您的副本集的拓扑发生了变化,那么您必须手动更改tag_sets来表示新的辅助节点。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13529174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档