当前位置: 首页 > 知识库问答 >
问题:

pymongo:使用Mongore客户端的优势?

申屠涛
2023-03-14

似乎MongoClient和MongoReplicaSetClient都可以连接到mongo副本集。事实上,它们的文档页面几乎相同——相同的选项、相同的方法等等——只是后者的构造函数要求我指定一个复制集。

在这两种情况下,我们都可以指定读取首选项。在这两种情况下,如果发生降压,我们都必须处理自动重新连接异常。

所以我的问题是:

>

  • 既然可以对两者执行完全相同的操作,为什么要使用一个而不是另一个?

    两者都可以执行二次读取,对吗?留档说ReplicaSetClient的优势是我们可以进行二次读取,但显然两者都支持它们。

    文档中说,ReplicaSetClient具有“副本集运行状况监视”功能这到底是什么意思?我是否可以调用新的方法来告诉我回复集的运行状况,而我不能用其他方法来处理MongoClient?

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

  • 共有1个答案

    钱宇
    2023-03-14

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

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

    同时:

    1. 当您计划连接到整个副本集时,请使用MongoReplicaSetClient。MongoClient仅连接到一个成员
    2. 单个MongoreReplicateSetClient可用于执行主要或次要读取,以及使用读取首选项进行更复杂的决策,请参阅我关于该主题的博客文章。MongoClient将连接到副本集的一个成员(主)并始终从中读取,除非您使用MongoClient直接连接到辅助服务器,在这种情况下,它将始终从该辅助服务器读取
    3. MongoReplicaSetClient通过一个后台线程来监视集合的运行状况,该线程会定期检查所有成员。客户端会跟踪成员是否已启动,跟踪他们的ping时间,并在添加成员时发出通知。这将减少在不稳定的网络上或副本集的配置更改时出现的异常数量,并允许客户端正确实现读取首选项
    4. MongoReplicaSetClient实际上连接到所有成员,而MongoClient只连接到一个成员。MongoReplicaSetClient尝试连接到连接字符串中列出的每个成员;一旦它连接到一个,它就会要求该成员提供所有其他成员的列表。从现在开始,它将忽略您的连接字符串,并使用从其连接的成员处获得的列表
     类似资料:
    • 1. 创建 Maven 工程 服务端部署完毕后,我们可以新建一个 Maven 工程使用 SOFARegistry 提供的服务。首先新建一个 Maven 工程,然后引入如下依赖: <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>registry-client-all</artifactId> <versi

    • 发起请求 让我们从导入aiohttp模块开始: import aiohttp 好啦,我们来尝试获取一个web页面。比如我们来获取下GitHub的时间轴。 async with aiohttp.ClientSession() as session: async with session.get('https://api.github.com/events') as resp:

    • 完整代码: 完整日志: 附加到dockerfolder_mongodb_1,dockerfolder_docker_flask_mongo_1 mongodb_1 2018-08-27t13:14:18.349+0000 I控件[initandlisten]MongoDB开始:pid=1 port=27017 dbpath=/data/db 64位主机=E086871a3aeb mongodb_1

    • 安装命令行工具 使用命令行工具 使用Python SDK 使用Web控制台

    • 问题内容: 如何使用Jersey客户端API将GET请求发送到运行HTTPS协议的服务器。我可以使用任何示例代码吗? 问题答案: 这样构建您的客户 从此博客文章中窃取了更多详细信息:http : //blogs.oracle.com/enterprisetechtips/entry/consumption_restful_web_services_with 有关设置证书的信息,请参见以下已很好回答

    • 现代 Web 应用程序, 除了呈现并发送到浏览器的静态 HTML 页面外, 还包含 JavaScript, 用于通过操纵现有元素或通过 AJAX 加载新内容来修改浏览器中的页面。 本节介绍 Yii 提供的用于向网站添加 JavaScript 和 CSS 以及动态调整它们的方法。 注册脚本 使用 yii\web\View 对象时,可以动态注册前端脚本。 这里有两个专门的方法: registerJs(