如果我们使用分片,mongodb中的唯一索引

Ole*_*leg 3 sharding mongodb

在分片环境中,数据存储在分片键范围内的不同分片中.在我看来,在这种情况下,mongodb不能保证索引的唯一性(至少如果它不是分片键).我们可以为分片键使用唯一索引吗?我们可以在除了分片键之外的字段上使用索引吗?

And*_*ere 7

你是对的,mongodb不能保证分片集群中索引的唯一性,因为每个分片都无法报告它是否包含要插入的密钥在其上下文中是唯一的.

这是覆盖在文档并有若干策略解决这个情况.

结果是,如果为分片键选择了这样的键,您将需要应用程序层来强制分片键的唯一性.

我不是100%清楚你的第二个问题是指什么.您可以在分片键以外的集合上使用索引,这些索引可以用于提高查询的性能,但是任何不使用分片键的查询都将是分散/聚集(因此会命中每个分片).点击每个分片时的性能取决于索引的好坏,这是除了分片键之外的索引的好处.

  • 是的,您可以为分片键创建唯一索引,MongoDb将保证分片的唯一性.您不能保证不是分片键的唯一键的唯一性,并且您不能保证仅作为唯一分片键的一部分的键的唯一性.在唯一复合分片键的情况下,MongoDb可以保证只有完整的键是唯一的(不是它的一部分). (2认同)