我正在读的mongoDB文档(http://docs.mongodb.org/manual/core/sharding-shard-key/)
切分系统不能强制执行群集范围内的唯一索引,除非唯一字段位于“碎片”键中。
我不太容易理解。如果我有以下唯一索引{a,b,c,d}和切分键{a,b},
在整个集群中,{a,b,c,d}的唯一性受到尊重吗?
发布于 2014-03-14 05:41:33
因为shard键是唯一键的前缀,所以这种唯一性被保留下来。关键的洞察力在于,每个块正好存在于一个碎片上。
唯一性约束是,如果您有两个不同的文档( a、b、c和d都是相等的),它们不应该都存在,因为它们不是唯一的。但是,由于它们对a和b具有相同的值,所以它们必须位于相同的块中,因此它们位于相同的碎片上。该碎片对于{a:1,b:1,c:1,d:1}确实有一个唯一的索引,因此它将保持这两个文档的唯一性不变,并且不允许您插入第二个文档。
所以:
在整个集群中,{a,b,c,d}的唯一性受到尊重吗?
是。
https://stackoverflow.com/questions/22386956
复制相似问题