我正在用Python编写一个webcrawler,它将在MySQL数据库中存储大量页面的HTML代码。在开始处理数据之前,我想确保我的存储和处理方法是最佳的。我想:
最大限度地减少数据库中使用的存储空间 - 可能通过缩小HTML代码,霍夫曼编码或其他形式的压缩。我想保持全文搜索字段的可能性 - 我不知道像霍夫曼编码这样的压缩算法是否允许这样做。
最大限度地减少编码和存储大量行所需的处理器使用量。
有没有人对此问题或类似问题有任何建议或经验? Python是否是最佳语言,因为它需要大量的HTTP请求和正则表达式以及任何压缩是最佳的?
答案 0 :(得分:1)
如果您不介意HTML对MySQL不透明,您可以使用COMPRESS函数存储数据,使用UNCOMPRESS来检索它。您将无法在WHERE子句中使用HTML内容(例如,使用LIKE)。
答案 1 :(得分:0)
您是否真的需要将源存储在数据库中?
尝试对数据运行“LIKE”查询无论如何都会耗费大量时间。
将原始数据存储在文件系统中,作为标准文件。只是不要将它们全部放在一个文件夹中。使用id的哈希值,将它们存储在可预测的文件夹中。
(当然,完全有可能将文本存储在数据库中,它会使数据库的大小膨胀,并且使其更难处理。备份(更多!)更大,更改存储引擎,变得更加痛苦扩展你的文件系统通常只是添加另一个硬盘的情况。这对数据库来说不那么容易 - 你开始需要分片)
...要对数据进行任何类型的搜索,您需要构建索引。我只有SphinxSearch的经验,但允许您在输入数据库中指定文件名。