首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb自定义范围分片键

mongodb自定义范围分片键
EN

Stack Overflow用户
提问于 2013-09-03 15:45:03
回答 2查看 1.5K关注 0票数 4

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

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

也就是说,我希望过去3天的数据放在一个分片上,过去6天到3天的数据放在第二分片上,所有其他数据都放在第三分片上。

可以手动定义这样的分片键范围吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-09-20 20:15:42

你可以使用标签感知的分片。

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

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

票数 2
EN

Stack Overflow用户

发布于 2014-11-15 14:34:55

代码语言:javascript
复制
1.I am trying to have data for specific date ranges on each shards;

因此,最好将Date用作shard key

2.我希望过去3天的数据在一个分片上,过去6天到3天的数据在分片2上,所有其他数据都在分片3上。

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

解释

假设有3个分片,shard1shard2shard3.So 为所需的分片创建分片标签:

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

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

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

其中,tag1tag2tag3是通常由用户定义的标记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字段。

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18586784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档