首页 > 解决方案 > 如何对单调键上的范围查询的集合进行分片?

问题描述

我有一个名为高度的字段的集合。高度单调增加,即每个新文档有效地具有先前文档的高度+1 的高度。

我想分片这个集合,因为我知道这个集合会变得很大。我将在此集合上运行的查询类型基本上是为了支持分页,它们都将使用高度作为页面标记。

我将运行的查询示例:

db.collection1.find({ 
    height: { $lt: 1000) 
    })
    .sort({ height: -1 })
    .limit(100)

问题:远程分片,即使用高度作为分片键是这些查询的最佳策略吗?

到目前为止我的想法:

如果我使用hashed sharding,高度相近的文档将分散在不同的分片中。所以这不是我查询的最佳策略。

如果我使用远程分片,所有写入将始终在一个分片上结束,因为高度总是增加。但是读取历史数据应该仍然能够利用分片。我可能不得不偶尔添加新的分片以继续传播新数据。

分区分片听起来也可以,但似乎比远程分片更复杂。

标签: mongodb

解决方案


推荐阅读