【问题标题】:MongoDB: sharded systems cannot enforce cluster-wide unique indexesMongoDB:分片系统无法强制执行集群范围的唯一索引
【发布时间】:2014-03-13 17:54:44
【问题描述】:

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

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

我不知道很好理解。 如果我有以下唯一索引 {A B C D} 和分片键 {a,b},

在所有集群中都尊重 {a,b,c,d} 的唯一性吗?

【问题讨论】:

    标签: mongodb mongodb-indexes


    【解决方案1】:

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

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

    所以:

    在所有集群中都尊重 {a,b,c,d} 的唯一性吗?

    是的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      • 2019-06-16
      • 2013-04-29
      • 1970-01-01
      相关资源
      最近更新 更多