mongodb 中的主要碎片

primary shards in mongodb

我正在尝试查看 mongodb 分片的文档,但我对主分片的分配方式和主分片的含义有些困惑

根据文档,它指出

Every database has a primary shard that holds all the un-sharded collections for a database. The primary shard has no relation to the primary in a replica set.

这是否意味着主分片是第一个创建数据库的分片中的分片(或服务器集合)?

假设我有 3 个分片 s0、s1 和 s2。在每个分片中我有 3 个服务器

现在,当我通过 mongoclient 和 mongos 创建新数据库时。现在假设请求转到分片 1 (s1)。由于创建数据库是一个写入操作,它将转到分片 1 中的服务器 4,因此 s1 成为主分片?

另一方面,如果请求遍历到 s2 分片,那么主服务器 7 将创建集合,然后 s2 将成为我的主分片?

这个理解是正确的还是我哪里出错了?

是的,你是对的!你理解了概念。

只要您不对单个集合进行分片,集合就必须具有主要位置,位于其中一个副本集。因此,将这些单独的分片视为单独的 RS。 因此,一个 DB 位于一个分片,如果您在 DB 内分片集合,则集合 "balanced" 到多个分片。使用 TAG,您可以决定该集合的传播位置。正常情况是均匀分布到所有分片。

而且您始终可以决定数据库的主要位置。创建后,你可以"move"它,当DB还是空的或者很小的时候,它的运行速度很快。 movePrimary