Mongodb 如何分割数据?

Mongodb 如何分割数据?,mongodb,Mongodb,为了提供写扩展,我决定将独立mongoDB转换为分片集群。问题是我找不到具有高度随机性的shard键来确保集群的写操作均匀分布,而且只要所有集合都有复合唯一索引,我就不能使用哈希shard键 我看到两种解决方案: 使用唯一索引的前缀作为分片键。但即使忽略不好的分布,这也是不可接受的,因为不知何故,所有块都放在主碎片上,然后均衡器将它们分布到各个碎片上。当我使用散列切分键时,负数放在第一个切分上,正数放在第二个切分上。如何使用范围分布强制mongoDB在两个碎片之间分布块 使用标记感知分片。但我无

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

我看到两种解决方案:

  • 使用唯一索引的前缀作为分片键。但即使忽略不好的分布,这也是不可接受的,因为不知何故,所有块都放在主碎片上,然后均衡器将它们分布到各个碎片上。当我使用散列切分键时,负数放在第一个切分上,正数放在第二个切分上。如何使用范围分布强制mongoDB在两个碎片之间分布块

  • 使用标记感知分片。但我无法预测未来几个月的数据,所以我未来的标签可能分布不均匀。我认为没有廉价的自动化数据标记解决方案

  • 您知道使用复合唯一密钥的集合的切分解决方案吗?

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


    时间位置对您重要吗?如果是这样的话,使用便宜的选择,并使用时间戳。我不确定我是否有它。您的意思是使用时间戳列作为标记吗?不幸的是,我们的“时间戳”是真实时间戳的小时数。是否会导致“热碎片”?这是一篇好文章。