首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB中的自动分片是否适用于具有许多小集合/小数据库的分片

MongoDB中的自动分片是否适用于具有许多小集合/小数据库的分片
EN

Stack Overflow用户
提问于 2012-04-06 12:07:20
回答 2查看 1.4K关注 0票数 1

在用于自动分片的MongoDB文档中,它说:“分片是在每个集合的基础上执行的。小集合不需要被分片。”

我们的业务有许多数据库(~100),有许多小集合(~30),每个数据库的文档数为1- 3000。我们的数据库系统每月大约有100,000,000个页面浏览量。

在这种情况下,分片将被激活,因为集合永远不会足够大,即使数据库使用率和站点流量肯定足够高,需要负载平衡。从文档中我似乎找不到一个明确的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-06 18:40:27

分片是否有意义在一定程度上取决于您是否主要对数据库进行写操作或读操作。分片主要用于写缩放,但如果您不进行大量写操作,那么简单地使用带有"slaveOkay“的副本集进行读操作可能同样有效。

从您提供的数字来看,您似乎获得了大约900万个文档,但它们是大文档吗?如果它们很容易放入内存中,那么除了故障转移功能之外,很可能不需要复制集。

票数 0
EN

Stack Overflow用户

发布于 2012-04-06 18:40:43

如果不更多地了解您的用例,很难回答这个问题,但我会尝试一下。

你确定切分是你需要的吗?你的插入率是多少?

如果您打算使用静态数据集,甚至是相对静态的数据集,那么您可能不需要分片,只需使用更多的次要数据并启用slaveOK读取即可。读操作将被分发到不同的辅助服务器,并扩展您的读取容量。

如果不是这样,并且您确实需要分片,那么有一些选择。但首先,简要地、高层次地解释自动分片是如何工作的:

一般情况下,mongos进程负责拆分和迁移块。这是两个独立的操作-拆分和平衡。

当mongos发现最大区块大小的特定部分已经写入时,就会发生

  • 拆分,如果实际上有足够的数据来保证拆分,它就会启动拆分。随着时间的推移,随着足够的数据写入,当存在块的不平衡时,块grows.
  • Balancing的数量就会发生(目前在2.0中有8个,但在2.2中转移到了更动态的启发式)。平衡器在碎片周围迁移块,直到达到平衡。

因此,您需要写入与最大块大小相关的足够数据(2.0中默认值为64MB ),以生成平衡器适当移动它们所需的块。如果您的数据不会发生这种情况,那么您可以查看:

拆分减少区块大小(也有缺点- split/move

有关手册说明,请参阅:

http://www.mongodb.org/display/DOCS/Splitting+Shard+Chunks

http://www.mongodb.org/display/DOCS/Moving+Chunks

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

https://stackoverflow.com/questions/10039011

复制
相关文章

相似问题

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