【问题标题】:Right solution for storing/accessing large amounts of data存储/访问大量数据的正确解决方案
【发布时间】:2012-02-13 06:23:48
【问题描述】:

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

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

当然,我不能一次在我的家用电脑上处理那么多数据,我不得不只处理其中的一小部分,这既费时又效率低。

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

【问题讨论】:

    标签: database database-design relational-database


    【解决方案1】:

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

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

    【讨论】:

    • 我不存储图像、外部 js 或 css 内容。而且我无法摆脱 html 内容,因为分析任务可能会发生变化 - 今天我正在提取关键字,明天我可能需要做其他任何事情。
    【解决方案2】:

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

    还有像面向列的Infobright 这样的 BI 产品透明地使用压缩。

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 2012-11-07
      • 2020-08-09
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      相关资源
      最近更新 更多