mongodb - Mongodb 中的标签感知分片

标签 mongodb sharding

我一直在阅读有关标签感知分片的内容。这些是我引用的链接:
http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding
http://www.kchodorow.com/blog/2012/07/25/controlling-collection-distribution/
Kristina 以一种非常清晰的方式解释了这个概念,有一点是肯定的:这一增强将使 MongoDB 对开发人员更加友好。

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

编辑:
知道索引如何受到如此巨大的迁移影响吗?

最佳答案

阿弗林,

你是对的。在此阶段,分片标记执行许多与分片键平衡相同的功能。它没有做的一件事是执行超出标记级别的任何级别的分发。所以说标记架构位于现有分片架构之上可能更正确。

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

a) 标记数据将去往哪里,未标记数据将使用分片键

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

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

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

至于索引,它们受迁移的影响很大,因为它们需要重新指向。但负载级别对于大量 block 迁移来说是相同的 - 就像向集群添加新分片一样。

关于mongodb - Mongodb 中的标签感知分片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447426/

相关文章:

node.js - 如何汇总总计百分比

database - 什么是检查一个数字是否存在于多个集合中而不搜索所有集合的好算法?

performance - Azure 数据库设计、数据表分区与联合?

sorting - 您如何实现对分布式数据的排序和分页?

java - 设置分片orientdb

node.js - Mongo Find() 函数不会排除 _id

php - 数据表过滤器、搜索 mongodb php 无法运行

mongodb - 多个分片键是否有助于提高 mongodb 的性能?

node.js - 我可以 $addToSet 和 upsert 一个数组吗?

python - 如何使用python bottle框架查询mongo数据库