2014-12-24 47 views
0

我们有一个可能会非常大的集合。这个集合用于存储Bill相关数据。所以这通常用于报告/分析目的。如何处理大的mongodb集合

请让我知道处理这种大量收集

1最好的计算策略)我可以分裂和存档旧的数据(比如12个月)?但这里的老数据,需要得到解析reports.I想要查询这些旧数据以显示过去2年的销售比较。

2)我可以用旧数据(12个月)有新的收藏。所以每12个月我就要创建新的收藏。对于生成报告,我必须访问所有这些文档才能查询。所以这会导致性能问题?

3)我可以去Sharding吗?

回答

1

有很多变数需要考虑,最清楚的是您使用的硬件,数据结构如何以及如何查询。分布式网络应该能够比单台机器更快地咀嚼您的数据,但在深入研究该解决方案之前,我建议您生成一个荒谬的模拟数据,并与您期望的数据进行比较,然后测试各种方法。认真。创建一堆数据,并尝试打破一切。好有趣!很快你就会比任何网站能告诉你更多的了解你的问题。

至于直接响应:

  1. 也许,归档数据之前,可以产生适当的统计信息摘要(或更新)。这些摘要/简化可用于销售比较,而无需重新加载它们所代表的所有归档数据。

  2. 这让我觉得很明智。通过分解销售数据,您可以更多地控制需要访问的数据量。毕竟,用户并不总是希望看到3年的数据,他们可能只希望看到上周的数据。

  3. 当您真正需要时转到分片。正如在MongoDB站点上所述:

    将未分割数据库转换为分片群集非常简单且无缝,因此在数据集较小时配置分片几乎没有什么优势。

你会知道它的时候,你的内存映射接近服务器的内存限制。 MongoDB支持对数据库进行读写操作,但不能保存在内存中,但我相信你已经知道这是SLOW

+0

感谢您的宝贵意见。正如你在第一点所述“可以生成适当的统计摘要”,你能否详细说明这一点。我如何进行总结如果我需要旧数据与新年数据进行比较?总结可能吗? – Roots

+1

这取决于你的数据以及你想做什么样的比较。例如,超过12个月的任何事情都可以简化为每周总和。或者,用户查看的常见属性可能是每日销售总额。而不是将每笔销售记录的总数加起来,每天的总数可以预先计算并保存在手边。 – Miles

+0

谢谢。我可以在哪里存储预计算摘要?在一个不同的集合?你可以请指教这个.. – Roots