gpt4 book ai didi

MongoDB 分片 + 复制

转载 作者:可可西里 更新时间:2023-11-01 10:09:07 27 4
gpt4 key购买 nike

我是 MongoDB 的新手,我想了解这两种技术如何协同工作:

当为你的数据库使用复制时,你有一个主节点和一堆辅助节点。为了保证一致性,建议大家始终从主节点读取,对吧?

因此,当您将复制与分片结合使用时:您在不同的服务器上有 2 个副本 r1 和 r2,分区由 1 到 250 的 id 和 2 个分片组成,分片 1 有 1 - 125,分片 2 有 126 - 250。

现在我的问题是:当使用分区和分片时,这意味着现在每个分片都有自己的主节点?那么当从 id 为 130 的文档中读取信息时,我必须首先找出分片 2 的主节点所在的位置?

例如:r1有1-125的主节点和126-250的副节点

r2 有 126-250 的主节点和 1-125 的辅助节点

对吗?

每个副本仍然保留完整的数据库信息?

最好的问候

最佳答案

When using replication for you database, you have a primary node and a bunch of secondaries. To ensure consistency, it's recommended for you to always read from the primary node, right?

答案是肯定的和否定的。是的,您通常是从主节点读取,但如果您从辅助节点读取,它会有一点延迟,但结果与从主节点读取几乎相同

不,您无需检查要读取的主节点在哪里,只需在连接字符串中指定副本集即可,而无需考虑副本集。就像使用单个数据库一样使用它

Now my questions: When using partitioning with sharding it means now that every shard have its own primary node?

So when reading information from document with id 130 I have to first find out where the primary node from the shard 2 is located?

不,当连接到集群时,您应该通过 mongos 连接 https://docs.mongodb.com/manual/reference/program/mongos/它会为您做所有事情,从查找哪个分片包含您的数据、主节点等。使用 mongos,您可以像使用单个数据库一样使用集群。

您唯一应该关心的是性能,您应该阅读并了解有关分片集合和分片键的信息 https://docs.mongodb.com/manual/core/sharding-shard-key/

For example: r1 have the primary node for 1-125 and a secondary for 126-250. r2 have the primary node for 126-250 and secodnary for 1-125. Is that correct?

-> 错误,数据由分片键分隔,请阅读上面的详细信息。在这种情况下,如果您使用 id (1 - 250) 作为分片键。

  • r1 将在主要和次要中包含 1-125(次要是主要的备份,主要的将被克隆到次要的)
  • r2 也将在主节点和辅助节点中包含 126 - 250(详细信息 r2 主节点包含 126 - 250,r2 辅助节点也包含 126 - 250。辅助节点是主节点的镜像)

Every replica still keeps the full database information?

不,只有主分片包含完整的数据库信息 ( https://docs.mongodb.com/manual/core/sharded-cluster-shards/#primary-shard )每个副本集都包含由分片键定义的分片集合的一部分。分片集合是您希望在多台机器上分离以提高性能的大表

关于MongoDB 分片 + 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52921471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com