Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 通过mongos时,如何将MongoDB中的读取路由到特定的辅助节点?_Ruby On Rails_Mongodb_Mongoid_Sharding - Fatal编程技术网

Ruby on rails 通过mongos时,如何将MongoDB中的读取路由到特定的辅助节点?

Ruby on rails 通过mongos时,如何将MongoDB中的读取路由到特定的辅助节点?,ruby-on-rails,mongodb,mongoid,sharding,Ruby On Rails,Mongodb,Mongoid,Sharding,这是MongoDB(2.0.0)的分片设置,具有多个副本集,每个副本集有3个节点。Mongoid正在经历mongos。我想将一个辅助节点(每个副本集的)专用于长时间运行的查询,否则会影响用户体验;我不想让普通的查询转到那里。我知道我可以标记节点(数据中心感知),但如何向特定标记的节点发送读取 另一个使用案例是在不同的数据中心中有一个备份节点,但查询应该只转到本地数据中心,而不是随机分布以包括远程数据中心。在查阅文档后,我非常确定不可能实现您想要的功能,至少在数据库级别不可能。由于mongos从应

这是MongoDB(2.0.0)的分片设置,具有多个副本集,每个副本集有3个节点。Mongoid正在经历mongos。我想将一个辅助节点(每个副本集的)专用于长时间运行的查询,否则会影响用户体验;我不想让普通的查询转到那里。我知道我可以标记节点(数据中心感知),但如何向特定标记的节点发送读取


另一个使用案例是在不同的数据中心中有一个备份节点,但查询应该只转到本地数据中心,而不是随机分布以包括远程数据中心。

在查阅文档后,我非常确定不可能实现您想要的功能,至少在数据库级别不可能。由于mongos从应用程序中提取碎片,因此无法将查询定向到特定的碎片

然而,我认为这里有一个更高层次的概念。如果有一个长时间运行的查询不需要阻塞UI,那么最好设置一个消息队列并将查询弹出到其中。这样,查询可以在后台运行。如果所述查询通常会影响系统的性能,那么您可能需要通过将其拆分为处理较小数据集的查询并在内存中重新组装该数据集,或者找到降低其优先级的方法,以使系统资源不受太大影响,从而降低其影响

希望这有帮助