MongoDB-处理大量收藏

MongoDB-处理大量收藏,mongodb,bigdata,Mongodb,Bigdata,我有一个庞大的MongoDB集合,其中包含数亿个文档(例如3亿、4亿个文档,并且还在增长)。确保查询和聚合快速运行的最佳解决方案是什么?我有一些想法,哪一个是正确的 将数据拆分为几个较小的集合 将最初生成的数据存储在单独的集合中,以便对于最常见的查询/生成,可以快速返回结果 添加适当的索引-向这样大的集合添加索引有意义吗 保留一个集合并跨多台计算机分发此数据(分片)?MongoDB是否处理分布在少数或更多机器上的此类集合 有没有我错过的更好的解决方案 将数据拆分为几个较小的集合 只有当您的查询和

我有一个庞大的MongoDB集合,其中包含数亿个文档(例如3亿、4亿个文档,并且还在增长)。确保查询和聚合快速运行的最佳解决方案是什么?我有一些想法,哪一个是正确的

  • 将数据拆分为几个较小的集合
  • 将最初生成的数据存储在单独的集合中,以便对于最常见的查询/生成,可以快速返回结果
  • 添加适当的索引-向这样大的集合添加索引有意义吗
  • 保留一个集合并跨多台计算机分发此数据(分片)?MongoDB是否处理分布在少数或更多机器上的此类集合
  • 有没有我错过的更好的解决方案

  • 将数据拆分为几个较小的集合

    只有当您的查询和聚合仅限于此类较小的集合时,才有意义。如果您的查询必须连接多个集合,那么您不会获得太多。您的查询将更加复杂

  • 将最初聚合的数据存储在单独的集合中,以便对于最常见的查询/聚合,可以快速返回结果

    可能有意义,但是您创建的冗余数据可能与实际数据不一致。除此之外,您还需要更多的光盘空间

  • 添加适当的索引-向这样大的集合添加索引有意义吗

    绝对是个好主意。如果这么大的集合没有任何索引,那将是非常令人惊讶的

  • 保留一个集合并在多台机器上分发此数据(分片)

    当然也是个好主意。在某种程度上,这与(1)类似,但MongoDB处理拆分和加入,所以您不需要关心它