如何分片数据?

时间:2016-09-28 10:28:16

标签: mongodb

为了提供写入扩展,我决定将独立的mongoDB转换为分片集群。问题是我找不到具有高度随机性的分片密钥以确保集群的写操作均匀分布,并且只要所有集合都有复合唯一索引,我就不能使用散列分片键。

我看到了两个解决方案:

  1. 使用唯一索引的前缀作为分片键。但是,即使忽略不良分布也是不可接受的,因为某种程度上所有的块都被放置在主分片上,然后平衡器将它们分布在分片上。当我使用散列分片键时,负数放在第一个分片上,正数放在第二个分片上。如何使用范围分布强制mongoDB在两个分片中分发块?

  2. 使用标记感知分片。但是我无法预测未来几个月的数据,因此将来我的标签分布不均匀。我认为自动化数据标记没有廉价的解决方案。

  3. 您是否知道使用复合唯一键的集合的任何分片解决方案?

1 个答案:

答案 0 :(得分:0)

您可以使用UUID(通用唯一标识符)

https://docs.mongodb.com/manual/reference/method/UUID/