在用于自动分片的MongoDB文档中,它说:“基于每个集合执行分片。小分集不需要分片。”
我们的业务有许多数据库(~100),有许多小型馆藏(约30个),每个馆藏的文件数量为1 - 3000.我们的数据库系统每月的页面浏览量大约为100,000,000。
在这种情况下,分片将永远激活,因为即使数据库使用和站点流量肯定足以要求负载平衡,集合也永远不够大。从文档中我似乎无法找到明确的答案。
答案 0 :(得分:0)
碎片是否有意义取决于您是否主要是对数据库进行写入或读取。 Sharding主要用于写入缩放,但如果您没有进行大量写操作,那么只需使用带有“slaveOkay”的复制副本进行读取也可以正常工作。
根据您提供的数字,您似乎可以获得大约900万份文档,但它们是大型文档吗?如果它们很容易适合内存,那么除了故障转移功能之外,很可能甚至不需要复制。
答案 1 :(得分:0)
如果不了解您的用例,我很难回答,但我会试一试。
你确定你需要分片吗?你的插入率是什么样的?
如果您要拥有一组静态数据,甚至是一个相对静态的数据集,那么您可能不需要进行分片,只需使用更多辅助数据并启用slaveOK读取。读取将分发给各个辅助设备,并扩大您的读取容量。
如果不是这种情况,并且您确实需要进行分片,则可以选择。但首先,简要介绍一下自动分片的工作原理:
mongos进程负责一般分割和迁移块。这是两个独立的操作 - 分裂和平衡。
因此,您需要编写相对于最大块大小(2.0中默认为64MB)的足够数据,以生成平衡器适当移动它们所需的块。如果您的数据不会发生这种情况,那么您可以查看: