MongoDB中跨复制集的读取分布
我在MongoDB(读取查询)中运行了几个实验,并通过以下方式连接到副本集:MongoDB中跨复制集的读取分布,mongodb,pymongo,Mongodb,Pymongo,我在MongoDB(读取查询)中运行了几个实验,并通过以下方式连接到副本集: connection = MongoClient("publicIP1:27017,publicIP2:27017,publicIP3:27017,publicIP4:27017,publicIP5:27017", replicaSet="rs0", readPreference='nearest', localThresholdMS=500) 我已设置readPreference='nearest',以便读取任何可
connection = MongoClient("publicIP1:27017,publicIP2:27017,publicIP3:27017,publicIP4:27017,publicIP5:27017",
replicaSet="rs0", readPreference='nearest',
localThresholdMS=500)
我已设置readPreference='nearest',以便读取任何可用的成员
这里说:
如果多个成员与读取首选项匹配,PyMongo将从
在最近的成员中,根据ping时间选择。默认情况下,
仅限ping时间在最近值x毫秒内的成员
用于查询。”
我为负载平衡设置了localThresholdMS=500
所以我的问题是,读取请求分布在副本集的成员之间?(所有节点具有相同的数据)
如果是这种情况,返回的数据是如何组合在一起的?对此进行了更详细的解释。驱动程序基于ping选择一个成员,打开一个光标,并从此节点读取所有数据。它基于每个查询库,而不是每个文档。您说一个成员是基于其ping选择的,所有数据都是从这个节点读取的。我无法理解。当您使用
pymongo.MongoClient
获取诸如db.test.find()之类的文档时,它选择了从哪个成员获取数据。在多个find()
上,它可以为每个查询选择不同的成员。这就是“读的分布”。一旦选择了成员,驱动程序将向其发送查询,检索光标,并对其进行迭代以从该特定实例读取所有匹配的文档。