我有一个mongodb
配置了3个分片,每个分片有3个副本,这些分片位于3个物理服务器上。
我正在尝试为每个分片上的特定日期范围提供数据;
即。我想要一个分片上最近3天的数据和分片2上最近6天到3天的数据以及分片3上的所有其他数据。
是否可以手动定义分片键范围?
提前致谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
1.I am trying to have data for specific date ranges on each shards;
因此,将日期用作shard key
2.我想要一个分片上最近3天的数据和过去6天到3的数据 碎片2上的天数和碎片3上的所有其他数据。
为此目的,标记识别分片会对您有所帮助。
解释:
让我们假设有3个分片 shard1 , shard2 , shard3 。首先创建分片标签必需的分片:
sh.addShardTag(“shard1”,“tag1”)
sh.addShardTag(“shard2”,“tag2”)
sh.addShardTag(“shard3”,“tag3”)
其中 tag1 , tag2 , tag3 是标记名称。标记名称通常是用户定义的。
删除分片广告代码:
sh.removeShardTag(“shard3”,“tag3”)
现在,您需要 db (database)
中 coll (collection)
中的数据,以获取一个分片中的最后3 days
。然后尝试以下操作:
sh.addTagRange(db.coll,{new Date(2014,11,11)},{new Date(2010,14, 111)},tag1)
P.S :确保在日期字段上创建分片键。
我希望这会有所帮助。