0

我正在考虑编写一个网络爬虫,它只收集页面的 URL,仅此而已(用于归档项目),但我在找到存储结果的正确方法方面遇到了问题。

要求是无论使用什么存储引擎,都可以处理数十万个项目(最好能够将元数据添加到每个条目,尽管不是必需的),并且可以忽略现有项目(以避免重复)而无需显着的性能打击。

我看过的引擎:

  • MySQL:随着数据库变大,检查现有项目的速度明显变慢。
  • SQLite:与上述相同的问题,甚至更糟糕的性能命中。
  • memcache 和 Redis:数据集可能变得足够大,以至于 RAM 存储不可行。
  • MongoDB :根据他们网站上的解释,不确定如果大部分数据集存储在磁盘上,性能是否可以接受。

您对 MongoDB 的适用性有何看法(因为我没有在 MongoDB 中处理大型数据集的经验),您是否知道为此目的存在任何更好的(免费)存储引擎?

4

2 回答 2

1

如果您使用传统的 RDBMS,您可以根据数据的散列创建唯一键(例如:使用 md5 或 sha1 对 URL 进行散列)。这将使唯一密钥保持较小(ish),并且应该有助于提高性能。

我喜欢 PostgreSQL——你可能想用它做一些测试。

编辑:(见评论)好的,也许在这个时代避免使用 md5(:

于 2012-11-22T00:48:20.553 回答
0

听起来 NoSQL 解决方案很适合您。

特别是因为您只想在某个地方在 URL 的“id”下转储各种灵活的数据。

我用过 lucene,但 mongo 也是一个不错的选择。

于 2012-11-22T01:01:51.650 回答