mongodb中的自定义范围碎片键

时间:2013-09-03 07:45:03

标签: mongodb sharding

我有一个mongodb配置了3个分片,每个分片有3个副本,这些分片位于3个物理服务器上。

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用标记识别分片。

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

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

答案 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 :确保在日期字段上创建分片键。

我希望这会有所帮助。