我有一个配置了3个分片的mongodb,每个分片有3个副本,它们驻留在3个物理服务器上。
我正在尝试在每个分片上有特定日期范围的数据;
也就是说,我希望过去3天的数据放在一个分片上,过去6天到3天的数据放在第二分片上,所有其他数据都放在第三分片上。
可以手动定义这样的分片键范围吗?
提前谢谢。
发布于 2013-09-20 20:15:42
你可以使用标签感知的分片。
http://docs.mongodb.org/manual/core/tag-aware-sharding/
这将允许您向分片添加标记,然后为标记定义范围。
发布于 2014-11-15 14:34:55
1.I am trying to have data for specific date ranges on each shards;因此,最好将Date用作shard key
2.我希望过去3天的数据在一个分片上,过去6天到3天的数据在分片2上,所有其他数据都在分片3上。
为此,标签感知分片将对您有很大帮助。
解释
假设有3个分片,shard1,shard2,shard3.So 为所需的分片创建分片标签:
sh.addShardTag("shard1","tag1")
sh.addShardTag("shard2","tag2")
sh.addShardTag("shard3","tag3")
其中,tag1、tag2、tag3是通常由用户定义的标记names.Tag名称。
要删除分片标记,请执行以下操作:
sh.removeShardTag("shard3","tag3")
现在,您需要来自coll(collection)中的db(database)的数据,用于一个shard.Then中的最后一个3 days。尝试如下所示:
sh.addTagRange(db.coll,{新日期(2014,11,11)},{新日期(2010,14,111)},tag1)
P.S:请确保创建了分片密钥on date字段。
我希望这能帮到你。
https://stackoverflow.com/questions/18586784
复制相似问题