我mongodb
配置了 3 个分片,每个分片有 3 个副本,它们驻留在 3 个物理服务器上。
我正在尝试获取每个分片上特定日期范围的数据;
即我想要一个分片上最近 3 天的数据和分片 2 上最近 6 天到 3 天的数据以及分片 3 上的所有其他数据。
是否可以像这样手动定义分片键范围?
提前致谢。
1.I am trying to have data for specific date ranges on each shards;
所以最好使用Date作为shard key
2.我想要一个分片上最近 3 天的数据,分片 2 上最近 6 天到 3 天的数据,以及分片 3 上的所有其他数据。
为此,标签感知分片将对您有很大帮助。
说明:
让我们假设有 3 个分片shard1、shard2、shard3。所以首先为所需的分片创建分片标签:
sh.addShardTag("shard1", "tag1")
sh.addShardTag("shard2", "tag2")
sh.addShardTag("shard3", "tag3")
其中tag1、tag2、tag3是标签名称。标签名称通常是用户定义的。
要删除分片标签:
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:确保在日期字段上创建分片键。
我希望这有帮助。