在分片环境中,数据存储在分片键范围内的不同分片中。在我看来,在这种情况下,mongodb不能保证索引的唯一性(至少如果它不是分片键)。我们可以为分片键使用唯一索引吗?我们可以在除分片键之外的字段上使用索引吗?
答案 0 :(得分:7)
你是对的,mongodb不能保证分片集群中索引的唯一性,因为每个分片都无法报告它是否包含要插入的密钥在其上下文中是唯一的。
documentation涵盖了这一点,并且number strategies围绕这种情况。
结果是,如果为分片键选择了这样的密钥,您将需要应用程序层来强制分片键的唯一性。
我不是100%清楚你的第二个问题是指什么。您可以在分片键以外的集合上使用索引,这些索引可以用于提高查询的性能,但是任何不使用分片键的查询都将是分散/聚集(因此命中每个分片)。命中每个分片时的性能取决于索引的好坏,这是除了分片键之外的索引的好处。