使用MongoDB将原始抓取HTML与提取的字段一起存储的策略

时间:2017-04-19 22:33:26

标签: mongodb performance database-design storage database-performance

问题:

我每天抓取大约2.5-3gb的HTML数据,并且在一天的刮擦之后​​,我从每个页面中提取某些字段并将它们存储在MongoDB集合中,其中提取的字段位于与从中提取的HTML相同的文档。我开始考虑,也许我应该将它们存储在单独的集合中。这是我的理由:

HTML字段:

  • 从未改变
  • 从未在任何计算上昂贵的算法中使用
  • 从未向我们的数据库的信息中心查询

所有其他字段:

  • 某些字段在计算成本高昂的程序中一致地更改
  • 在计算成本高昂的程序中大量使用
  • 通过数据库的信息中心相对频繁地查询

注意:一些关于"计算成本昂贵的细节" - 想到的主要程序是一个匹配的算法,每天运行,运行14-16个并行进程,所有进程都会大量读/写集合。在此算法期间一致更新的字段之一是索引字段。我尝试在它们看似有用的地方使用投影和批量大小增加,但我不会在每个查询上投影。

我们在集合中出现了大约3000万个文档,因此索引开始变得非常大。

问题:

  • 从集合中删除原始HTML会提高读取和/或写入的性能吗?
  • 由于我很少查询HTML,我是否应该打扰MongoDB集合,而是考虑在常规文件系统中存储/压缩它?

我很乐意根据要求提供更多详细信息...我想我会保持相对一般性的开头。

非常感谢!

0 个答案:

没有答案