1

来自 mongoDB 文档(http://docs.mongodb.org/manual/core/sharding-shard-key/)我正在阅读

除非唯一字段在分片键中,否则分片系统无法强制执行集群范围的唯一索引。

我不太清楚。如果我有以下唯一索引 {a,b,c,d} 和分片键 {a,b},

{a,b,c,d} 的唯一性是否在所有集群中得到尊重?

4

1 回答 1

2

由于分片键是唯一键的前缀,因此保留了这种唯一性。关键的见解是每个块都存在于一个分片上。

唯一性约束是,如果您有两个不同的文档,其中 a、b、c 和 d 都相等,它们不应该同时存在,因为它们不是唯一的。但是由于它们对于 a 和 b 具有相同的值,因此它们必须在同一个块中,因此它们将位于同一个分片上。该分片在 {a:1, b:1, c:1, d:1} 上确实具有唯一索引,因此它将保持这两个文档的唯一性不变性,并且不允许您插入第二个文档。

所以:

{a,b,c,d} 的唯一性是否在所有集群中得到尊重?

是的。

于 2014-03-14T05:41:33.273 回答