【问题标题】:Should I shard all collections in my MongoDB or just some我应该对我的 MongoDB 中的所有集合进行分片还是只分片
【发布时间】:2014-03-09 11:03:45
【问题描述】:

我正在运行 MongoDB 集群(我网站的后端)。我正在将我以前的数据库从普通的数据库转换为分片结构。

问题是:我应该对我所有的收藏品进行分片,还是只对那些我预计会增长很多的收藏品进行分片。我有一些集合永远不会超过几千个文档,最多几十万个,我应该对它们进行分片吗?如果是,什么时候?是现在在转换过程中,还是在以后不带阴影和分片的情况下进行转换?

换个说法:如果表不是太大,分片有什么好处吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    一个常见的误解是分片是基于集合的大小。这是完全不真实的。然而,常识表明,当一个集合达到一定大小时,它可能在单个服务器上存储太多,但另一方面,分片的原因是由操作而不是大小决定的。

    有意义的是,那些将“增长很多”的操作应该被分片以在集群中分配这些操作,但是那些可能更安静的操作,例如您的较小集合可以愉快地保留在主分片上。

    至于何时对它们进行分片:这取决于操作。分片旨在横向扩展读取和写入,因此它只是一个集合何时需要横向扩展的问题。

    您可能拥有一个包含 1,000 个项目的集合,但如果操作要求对它进行分片,则它需要分片。反之亦然,您可能拥有 10 亿个项目的集合,但仍然不值得分片。

    【讨论】:

    • 感谢您的回答,但什么是“OP”,我怎么知道“OP 要求对它进行分片”?
    • @henry 抱歉,它是操作的缩写,例如读/写/等
    • @henry 第二点有点难,它是分片的关键。我想说有几种方法可以判断:1. IO 瓶颈是由对该集合的操作导致的(mongostat 可以告诉你这些东西),另一种可能是这个集合的读取速度很慢,尽管它已尽可能优化在单个服务器上
    猜你喜欢
    • 2021-08-21
    • 2022-10-03
    • 1970-01-01
    • 2013-08-31
    • 2021-07-26
    • 2012-05-10
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多