4

mongodb配置了 3 个分片,每个分片有 3 个副本,它们驻留在 3 个物理服务器上。

我正在尝试获取每个分片上特定日期范围的数据;

即我想要一个分片上最近 3 天的数据和分片 2 上最近 6 天到 3 天的数据以及分片 3 上的所有其他数据。

是否可以像这样手动定义分片键范围?

提前致谢。

4

2 回答 2

2

您可以使用标签感知分片。

http://docs.mongodb.org/manual/core/tag-aware-sharding/

这将允许您向分片添加标签,然后为标签定义范围。

于 2013-09-20T12:15:42.073 回答
0
1.I am trying to have data for specific date ranges on each shards;

所以最好使用Date作为shard key

2.我想要一个分片上最近 3 天的数据,分片 2 上最近 6 天到 3 天的数据,以及分片 3 上的所有其他数据。

为此,标签感知分片将对您有很大帮助。

说明

让我们假设有 3 个分片shard1shard2shard3。所以首先为所需的分片创建分片标签:

sh.addShardTag("shard1", "tag1")

sh.addShardTag("shard2", "tag2")

sh.addShardTag("shard3", "tag3")

其中tag1tag2tag3是标签名称。标签名称通常是用户定义的。

删除分片标签:

sh.removeShardTag("shard3", "tag3")

现在您需要来自coll中db(database)的数据作为最后一个分片。然后试试这个:(collection)3 days

sh.addTagRange(db.coll,{new Date(2014, 11, 11)}, {new Date(2010, 14, 111)}, tag1)

PS:确保在日期字段上创建分片键。

我希望这有帮助。

于 2014-11-15T06:34:55.487 回答