用于存储/访问大量数据的正确解决方案

时间:2012-02-10 15:57:47

标签: database database-design relational-database

我写了一个程序,它抓取网站,处理html页面并将结果存储在MySql数据库中。 “结果”是指html内容,所有带有属性的链接以及爬虫无法获取时的各种错误。我将此程序用于分析目的。

一切正常但主要问题是数据占用了太多的磁盘空间。对于每个被抓取的100000个网站(每个网站最多20个网页),我有5个mysql表总共约60 GB的空间,我需要处理20-30倍的网站。

当然,我无法立即在家用电脑上处理那么多数据,而且我只能处理它的一小部分时间,这是耗时且效率不高的。

所以我正在寻求建议或解决方案: 1)提供访问关系数据库所具有的数据的相同灵活性 2)允许智能和有效地保存数据

2 个答案:

答案 0 :(得分:2)

我怀疑不同的存储引擎会比这更有效 - 如果您将所有内容存储在一个表中,没有任何索引,并且使用自然主键,那么几乎不会产生任何存储开销,即使您确实添加了有点结构,它应该仍然保持理智。

我的猜测是您的问题是您收集的大量数据,因此您可能希望在存储之前删除大部分示例数据:例如,您可能希望将页面源简化为一堆(规范化)关键字,您可能想要跳过重要内容(图像等)和您不感兴趣的内容(例如CSS样式表,javascript等)等。

答案 1 :(得分:1)

您可能需要查看InnoDB Data Compression选项。

还有一些BI产品,如面向列的Infobright,它们透明地使用压缩。