也许我的问题将被关闭,因为它不够“建设性”,但无论如何......我已经搜索过答案,但其中大多数都太笼统了。对于我的硕士论文项目,我必须抓取大量(即数千个)网页并将它们完全存储在数据库中。这是必要的,因为我必须以不同的方式分析它们,尝试几种机器学习算法并以不同的方式解析它们。目前,我正在为此使用 SQlite 数据库,并结合 Django 作为首选的 Web 框架。
我已将单个网页的整个 HTML 数据放入 DjangoTextField
中,即对于每个网页,数据库表中都有单独的行,所有网页的内容都存储在表的单个列中。现在的问题是查询和排序数据,尤其是迭代数据非常慢。到目前为止,我已经抓取了大约 1000 个网页,并且数据库文件的大小已经超过 2 GB。此外,我的 4 GB RAM 被完全填满,我的电脑(Macbook Pro 2009 年中,Core2Duo 2.26 Ghz,500 GB 硬盘,OSX 10.8)变得无响应。如果我限制要预缓存的项目数量,那么处理数据会变得更慢,因为查询数量会增加。由于我必须抓取更多数据,因此我当前的设置无法很好地扩展。
我现在的问题是: 如何更有效地存储我的 HTML 数据,以便更快地查询数据?切换到另一个 RDBMS(如 MySQL 或 PostgreSQL)是否有意义?或者你会推荐一个面向文档的数据库系统,比如 MongoDB?到目前为止,我只有使用 SQlite 的经验,所以我真的不知道该使用什么。随着我硕士论文的截止日期越来越近,我没有时间尝试许多不同的设置。
为了帮助您帮助我,这里有一些进一步的要求:
- 与 SQlite 相比,查询大型 HTML 数据的性能更高,同时不会占用我计算机的所有内存(工作负载无法分配到其他计算机)
- 与 Django 或多或少的良好集成
- 这只是研究工作,因此它永远不会在生产环境中运行,而只能在我的计算机上运行(也许也在我教授的计算机上)
如果你能帮助我决定我应该走哪个方向,那就太好了,因为我对这些巨大的可能性感到不知何故迷失了方向。非常感谢您!:)