我看了看医生,却找不到明确的答案。
假设我在a,b,c上有一个稀疏索引
发布于 2012-12-21 00:13:42
c不存在,并且查询在查询计划中使用c索引,则将找不到文档,因为它不在索引中。shard key on 切分参考文档上的注释,上面写着理想的碎片键: 易于分割,这使得MongoDB很容易在碎片之间分发内容。具有有限数量的可能值的碎片键并不理想,因为它们可能导致一些“不可分割”的块。有关更多信息,请参见基数部分。将在集群中分发写操作,以防止任何单个碎片成为瓶颈。由于这个原因,与插入时间相关较高的Shard键是糟糕的选择;然而,具有较高“随机性”的shard键更好地满足了这一要求。有关其他背景,请参阅“写入缩放”部分。将使mongos能够直接从一个特定的mongod实例返回大多数查询操作。您的切分键应该是查询使用的主要字段,而具有高度“随机性”的字段正是由于这个原因而做出的错误选择。有关特定示例,请参阅查询隔离部分。
因此,如果假设,如果mongo接受稀疏索引作为shard键,mongo将不知道在哪里放置不适合索引的文档。为了这个目的,我们可以争辩,把它们都放在另一个碎片里。相反的论点是,如果它增长超过.因此,我不认为这样做是有意义的,即使这是允许的。
3-我怀疑稀疏索引能否工作,因为碎片需要唯一的索引,而稀疏索引不符合标准。唯一的索引要求,我还没有在docs中找到,但是如果您使用mongo帮助,它会告诉您它的情况。
https://stackoverflow.com/questions/13982326
复制相似问题