gpt4 book ai didi

python - pymongo:使用 MongoReplicaSetClient 的优势?

转载 作者:IT老高 更新时间:2023-10-28 13:21:20 26 4
gpt4 key购买 nike

看来MongoClientMongoReplicaSetClient可以连接到 mongo 副本集。事实上,它们的文档页面几乎相同——相同的选项、相同的方法等——除了后者的构造函数需要我指定一个副本集。

在这两种情况下,我们都可以指定读取偏好。在这两种情况下,如果发生降级,我们必须处理 AutoReconnect 异常。

所以我的问题是:

  1. 为什么一个使用一个而不是另一个,因为一个可以执行完全相同的操作?

  2. 两者都可以执行二次读取,对吗?文档说 ReplicaSetClient 的优点是我们可以进行二次读取,但是 clearly两者都支持。

  3. documentation说 ReplicaSetClient 具有“副本集健康监控”功能。这到底是什么意思呢?有没有我可以调用的新方法告诉我 replset 的健康状况,而我不能用 MongoClient 做这些?

  4. theory MongoReplicaSetClient 将连接到 replset 的所有成员,而不仅仅是一个。这是错误的:您可以删除或省略连接字符串中的任何服务器,并且 MongoClient 和 MongoReplicaSetClient 仍然能够连接。我错过了什么吗?

最佳答案

这是一个令人困惑的 API 选择,我们在 PyMongo 2.x 中感到遗憾。我们将在 2015 年 4 月将所有客户端类合并到 PyMongo 3 中的 MongoClient 中:

http://emptysqua.re/blog/good-idea-at-the-time-pymongo-mongoreplicasetclient/

同时:

  1. 当您计划连接到整个副本集时,请使用 MongoReplicaSetClient。 MongoClient 仅连接到 一个 成员。
  2. 单个 MongoReplicaSetClient 可用于执行主要或次要读取,以及更复杂的读取偏好决策,请参阅 my blog post on the subject . MongoClient 将连接到副本集(主)的 一个 成员并始终从中读取,除非您使用 MongoClient 直接连接到辅助,在这种情况下它将始终从该辅助读取.
  3. MongoReplicaSetClient 使用后台线程监控集合的健康状况,该线程定期检查所有成员。客户端跟踪成员是否启动,跟踪他们的 ping 时间,并在添加成员时通知。这将减少您在不稳定的网络或副本集的配置更改时看到的异常数量,并允许客户端正确实现读取首选项。
  4. MongoReplicaSetClient 实际上确实连接到所有成员,而 MongoClient 只连接到 一个 成员。 MongoReplicaSetClient 尝试连接到连接字符串中列出的每个成员;一旦它连接到一个成员,它就会要求该成员提供所有其他成员的列表。从这一点开始,它会忽略您的连接字符串并使用它从连接到的成员那里获得的列表。

关于python - pymongo:使用 MongoReplicaSetClient 的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19554764/

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