【发布时间】:2020-05-11 05:54:36
【问题描述】:
对于我的应用程序,我需要对一个相当大的集合进行分片,整个集合将包含 app. 5000 亿份文件。
我有两个可以用作 Sharding Key 的潜在字段:
对于插入,Sharding Key 将在整个集群中均匀分布文档,我使用哪个字段作为 Sharding Key 并不重要。
对于查询,它是不同的。
Field(1) 通常是查询过滤条件的一部分,因此查询通常只在单个分片上处理。
字段 (2) 通常不是查询过滤条件的一部分,因此查询将在所有分片上进行处理,并且通常多个分片将有助于最终查询结果。
哪个字段更适合用作 Sharding Key?我在 MongoDB 文档中没有找到关于该主题的任何内容。
两个字段具有相同的范围和非常相似的基数,不会有任何区别。通常查询返回的文档数量非常少(通常少于 20-30 个文档)。
【问题讨论】: