gpt4 book ai didi

Mongodb 读取首选项

转载 作者:行者123 更新时间:2023-12-02 21:08:47 26 4
gpt4 key购买 nike

设置:

我有一个主要的 mongodb 实例和两个辅助的 mongodb 实例。两个辅助实例之一与我的网络应用托管在同一区域。

我正在使用 pymongo 进行连接。

查询:

如何以较低的延迟连接到 SECONDARY。

目前我正在这样做:

  from pymongo import ReplicaSetConnection
from pymongo import ReadPreference

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

我与任何一个 SECONDARY 建立了连接。如何强制以较低延迟从实例获取连接

谢谢!!

最佳答案

读取偏好如下:

  • PRIMARY:查询将发送到副本集的主节点。
  • PRIMARY_PREFERRED:查询将发送到主数据库(如果可用),否则发送到辅助数据库。
  • SECONDARY:查询分布在辅助节点之间。如果没有可用的辅助节点,则会引发错误。
  • SECONDARY_PREFERRED:查询分布在辅助数据库中,如果没有可用的辅助数据库,则分布在主要数据库中。
  • NEAREST:查询分布在所有成员之间。

因此没有特定的最近辅助站点。您可以通过组合 NEAREST 和 tag_sets 来实现此目的并标记辅助。

然后,如果辅助节点已标记为 {'secondaries': 1},您可以从最近的辅助节点读取数据,如下所示:

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 以代表新的辅助节点。

关于Mongodb 读取首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13529174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com