我有一个mongodb收藏,我想切碎。此集合保存来自用户的消息,来自集合的文档具有以下属性
{
_id : ObjectId,
conversationId: ObjectId,
created: DateTime
}所有查询都将使用converstionId属性和创建的排序器来完成。
根据我在mongo文档中看到的,shard键要么是索引字段,要么是集合中每个文档中存在的索引复合字段。
这是否意味着我可以在复合索引上创建一个碎片键?
底线是:
因此,如果能做到这两件事的结合,那就太好了。
有什么想法吗?
谢谢
发布于 2013-09-05 13:43:25
对于您的情况,这两个字段看起来都是切分的好选择。例如,如果您在conversationId上分解,它将导致热点,即大部分插入将发生在最后一个碎片,因为随着时间的推移,conversationId会单调地增加。其他两个字段也有相同的问题。
而且,conversationId不会提供高度隔离,因为随着时间的推移,conversationId会单调地增加。(因为更新的对话将比非常老的对话更新得更频繁)
在您的例子中,conversationId上的“散列碎片密钥”(Version2.4)将是明智的选择,因为人们可能会想象会有大量的对话并行进行。
有关创建哈希碎片键的详细信息,请参阅以下链接:[ http://docs.mongodb.org/manual/tutorial/shard-collection-with-a-hashed-shard-key/ ]
https://stackoverflow.com/questions/18614748
复制相似问题