在Mongodb中标记识别分片

时间:2012-09-16 13:54:54

标签: mongodb sharding

我一直在阅读标签识别分片。这些是我提到的链接:
http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding
http://www.kchodorow.com/blog/2012/07/25/controlling-collection-distribution/
Kristina以非常清晰的方式解释了这个概念,有一件事是肯定的:这一改进将使MongoDB更加适合开发人员。

但是我的问题是......看起来标记/重新标记意味着可以轻松地迁移块。将所有写入到首选数据中心等等。但是这如何适应旧的范围分区系统和Mongo学习的方式平衡的关键分布?据说shard-key无法更改,这是因为假设数据分布在分片上并且更改分片键会干扰这一点。是不是应用基本上做同样的标签?那么标签感知分片意味着来处理这个问题吗?

修改
任何想法如何影响这些巨大的迁移?

1 个答案:

答案 0 :(得分:7)

Aafreen,

你是对的。在此阶段,shard-tagging执行许多与平衡键平衡相同的功能。它没有做的一件事就是执行超出标记的任何级别的分发。因此,将标记体系结构置于现有的分片体系结构之上可能更为正确。

您必须记住,标记仅适用于:

a)标记数据将进入,未标记数据将使用分片键

b)仍需要分发许多标记服务器之间共享的标记数据

您当然可以使用标签识别分片来手动控制数据分布,方法与平衡器现在的方式相同,方法是制作足够精细的标签,以便将数据放在您想要的位置并均匀分布。

然而,用例更类似于您链接的文档。您将大量分片分解为较小的子集的位置。在此示例中,您将标记每个对象,然后标记将其推送到正确的地理位置(用于较低延迟检索),并且一旦在正确的地理位置内,原始分片架构将接管并在标记的分片之间分发。

至于索引,它们受到迁移的严重影响,因为它们需要被重新命名。但是负载级别与大量块迁移的负载级别相同 - 例如向群集添加新分片。