通过mongos路由器在多台服务器上拆分MongoDB集合

通过mongos路由器在多台服务器上拆分MongoDB集合,mongodb,cloud,mongoid,mongomapper,nosql,Mongodb,Cloud,Mongoid,Mongomapper,Nosql,有一个名为maindabase的MongoDB数据库,它有3个名为users、tags和categories的文档集合,我想知道是否有可能将它们分别放在三个不同的服务器上(在不同的云服务提供商上) 我的意思是不作为副本,但mongos路由器可以选择性地路由服务器的一个集合(一个数据库在一台服务器上仅包含类别集合,一个数据库在另一台服务器上包含用户,另一个数据库在第三台服务器上包含标签) 有人知道这是否可能吗 不幸的是,您目前无法以这种方式将集合拆分到单个数据库中。但是,如果将每个集合放在不同的数

有一个名为
maindabase
的MongoDB数据库,它有3个名为users、tags和categories的文档集合,我想知道是否有可能将它们分别放在三个不同的服务器上(在不同的云服务提供商上)

我的意思是不作为副本,但mongos路由器可以选择性地路由服务器的一个集合(一个数据库在一台服务器上仅包含类别集合,一个数据库在另一台服务器上包含用户,另一个数据库在第三台服务器上包含标签)


有人知道这是否可能吗

不幸的是,您目前无法以这种方式将集合拆分到单个数据库中。但是,如果将每个集合放在不同的数据库中,则可以执行此操作。在分片系统中,每个数据库都有一个与其关联的“主分片”,该数据库上所有未分片的集合都位于该分片系统中。如果将3个集合分为3个不同的数据库,则可以使用“movePrimary”命令将它们分别移动到不同的碎片:


但是,创建更多数据库会带来一些开销,因此不清楚这是否是满足您需求的最佳解决方案

除了@matulef关于通过
movePrimary
手动操作数据库的回答外,这可能需要一个更简单的解决方案,只需维护3个数据库连接:每台服务器一个,每个连接位于您最初指定的不同云提供商的数据中心。您不会拥有单一的
mongos
连接点的简单性,但是通过三个连接,您可以直接操作
用户
标签
、以及
类别
,这在mongoid 3.0中是可能的。看一看,搜索
store_in
您指的是以下mongoid/CHANGELOG.md吗#1291 Mongoid现在支持Mongoid.yml中定义的任意数量的数据库连接。例如,您可以在同一个应用程序环境中拥有本地单服务器数据库、多可用性区域副本集和分片集群。Mongoid可以在任何时间点连接到任何会话。@LucaGSoave是的,我只是指那个。只是好奇:为什么需要将集合分离到不同的云提供商数据中心?我可以理解这样定位replicaset节点和采用灾难恢复策略,但我很想听到地理位置不同的集合商店的价值主张。@DavidMakogon,拥有零预算项目,并使用免费的MongoID云服务作为MongoHQ+MongoLab+OtherMongos。。。(如今,每个人都有一个免费计划),您可以将数据处理实验扩展到单个提供商的规模限制之上。如果你没有预算问题,那就忘了它:-)…除非你像我一样,只想玩弄这项令人敬畏的技术的架构限制:谢谢你对大卫的贡献,我仍然不会结束这个问题。直到其他一些观点出现。。。我也必须尝试一些东西,再次感谢你,直到现在。这也是我要走的路。而且,移动是危险的。这样做之后,您会发现一些Mongose看到了旧的主位置,而一些Mongose看到了新的主位置。有关此命令中长期存在的问题,请参见。