我是mongodb的新手,我希望使用创建一个分布式数据库环境。我创建了多个带有碎片的对接器来模拟多个站点。但是,将同一组文档复制到多个碎片中有问题。
例如,我有一个具有值"A“和"B”的键的集合。我想把这个收藏分成两个碎片
碎片1=A&B
碎片2=B
然而,当我运行平衡器时,它会将所有的A分配到碎片1,B分配到碎片2。有什么方法可以用重复的数据进行切分吗?还是我对问题使用了错误的方法?
发布于 2020-11-08 08:43:22
您可能正在接近切分(水平缩放)不正确。在蒙古族工作中,切分的原因是选择了切分键,这样就会产生(垂直)碎片,这些碎片的数据分布大致均匀,或者类似数量的Mongo文档。切分的一个要求是,查询通常只指向一个碎片,这使其工作良好。如果您有需要返回A和B值不同的字段的查询,那么这意味着这个字段不应该是切分键。查询可以跨碎片,但某些交叉碎片操作,如联接,可能会非常昂贵。在您的特殊情况下,也许可以使用其他一些字段作为切分键。
发布于 2020-11-08 08:48:28
MongoDB中的冗余是由副本集提供的,而不是由切分的集群提供的。
每个碎片都可以由一个具有所需数量的节点的副本集来支持,以提供所需的冗余级别。
不可能将同一个文档(权威地)定位在多个碎片中。
https://stackoverflow.com/questions/64736178
复制相似问题