什么是在MySQL中存储大量文本的最节省空间的方法?

时间:2011-11-13 05:36:05

标签: mysql sql text full-text-search huffman-code

我正在用Python编写一个webcrawler,它将在MySQL数据库中存储大量页面的HTML代码。在开始处理数据之前,我想确保我的存储和处理方法是最佳的。我想:

  • 最大限度地减少数据库中使用的存储空间 - 可能通过缩小HTML代码,霍夫曼编码或其他形式的压缩。我想保持全文搜索字段的可能性 - 我不知道像霍夫曼编码这样的压缩算法是否允许这样做。

  • 最大限度地减少编码和存储大量行所需的处理器使用量。

有没有人对此问题或类似问题有任何建议或经验? Python是否是最佳语言,因为它需要大量的HTTP请求和正则表达式以及任何压缩是最佳的?

2 个答案:

答案 0 :(得分:1)

如果您不介意HTML对MySQL不透明,您可以使用COMPRESS函数存储数据,使用UNCOMPRESS来检索它。您将无法在WHERE子句中使用HTML内容(例如,使用LIKE)。

答案 1 :(得分:0)

您是否真的需要将源存储在数据库中?

尝试对数据运行“LIKE”查询无论如何都会耗费大量时间。

将原始数据存储在文件系统中,作为标准文件。只是不要将它们全部放在一个文件夹中。使用id的哈希值,将它们存储在可预测的文件夹中。

(当然,完全有可能将文本存储在数据库中,它会使数据库的大小膨胀,并且使其更难处理。备份(更多!)更大,更改存储引擎,变得更加痛苦扩展你的文件系统通常只是添加另一个硬盘的情况。这对数据库来说不那么容易 - 你开始需要分片)

...要对数据进行任何类型的搜索,您需要构建索引。我只有SphinxSearch的经验,但允许您在输入数据库中指定文件名。