分布式查询
一、分片集群读操作
分片集群允许您分割一个数据库设置为mongod实例集群的一部分,这种方式对应用程序来说近乎是透明的。对于分片集群的概念,请参阅本手册的分片部分。
对于分片集群,应用程序发出操作到与集群关联的mongos实例之一。
分片集群图
当直接定向到一个分片时在分片集群上的读操作是最有效的。分片的集合的查询将包含一个分片的key。当一个查询包含一个分片的key,mongos能用集群元数据从配置数据库路由查询到分片。
读操作一个分片集群。查询条件包括分片key。查询路由mongos可以定位查询到相应的分片或分片组。
如果查询不包括分片key,mongos直接查询集群中的所有分片。这些聚集查询是低效的。在更大的集群,分散聚集查询的日常操作是不可行的。
读操作一个分片集群。查询条件不包括分片key。查询路由mongos必须发送查询到所有的分片集
合。
对于读操作到分片群集的更多信息,参阅分片集群查询路由和分片key部分。
二、读操作到副本集
副本集用读取优先来决定路由查询到哪里的副本集成员。默认情况下,MongoDB总是从副本集的主读取数据。你可以通过改变读取优先模式修改那个行为。
可以基于每个连接或每个操作为基础配置读取优先模式,以允许从从读取数据:
减少多数据中心部署的延迟,
通过分发高读取量(相对于大量写)提高读取的吞吐量,
用于备份操作,和/或,
允许在故障转移的情况下读取。
读操作到副本集。默认读取优先路由读取到主。最近的路由读取优先读取到最近的成员。
从副本集的从成员读操作不保证反映主成员的当前状态,从副本集的从成员读操作不保证反映主成员的当前状态,从状态将跟踪主一些时间。通常情况下,应用程序不依赖于这种严格的一致性,但应用程序开发者应该设定优先读取之前一直顾及他们的应用程序的需要。
更多读取优先或读取优先模式,参阅读取优先和读取优先模式。