2011-11-13 26 views
1

我正在用Python編寫一個webcrawler,它將大量頁面的HTML代碼存儲在MySQL數據庫中。在開始處理數據之前,我想確保我的存儲和處理方法是最佳的。我想:在MySQL中存儲大量文本的最節省空間的方式是什麼?

  • 最小化在數據庫中使用的存儲空間 - 可能通過縮小HTML代碼,霍夫曼編碼或壓縮的一些其它形式。我想保持全文搜索的可能性 - 我不知道像霍夫曼編碼這樣的壓縮算法是否會允許這樣做。

  • 儘量減少編碼和存儲大量行所需的處理器使用量。

有沒有人有任何建議或經驗在這個或類似的問題? Python是否是最佳語言,因爲它需要大量的HTTP請求和正則表達式以及任何壓縮是最優的?

回答

1

如果您不介意HTML對MySQL不透明,則可以使用COMPRESS函數存儲數據,並使用UNCOMPRESS來檢索它。您將無法在WHERE子句中使用HTML內容(例如使用LIKE)。

+0

什麼是壓縮比?我希望能夠使用WHERE子句,但是如果COMPRESS節省了足夠的空間,那麼它可能是值得的。 – MarathonStudios

+0

@MarathonStudios - 我不知道HTML的典型壓縮是什麼。它取決於實際的內容和壓縮庫鏈接到您正在使用的特定MySQL安裝。我可以建議的唯一事情就是試驗。 –

0

您是否需要將源代碼存儲在數據庫中?

試圖對數據運行'LIKE'查詢無論如何都會佔用大量時間。

將原始數據作爲標準文件存儲在文件系統上。只是不要將它們全部放在一個文件夾中。使用id的散列,將它們存儲在可預測的文件夾中。 (當然,將文本存儲在數據庫中是完全可能的,但它會增加數據庫的大小,並使其難以處理。備份(更多!)更大,更改存儲引擎,變得更多痛苦等擴展你的文件系統,通常只是一個添加另一個硬盤的情況下,這並不容易與數據庫工作 - 你開始需要分片)

...做任何形式的數據搜索,你看着建立一個索引。我只有SphinxSearch的經驗,但它允許你在輸入數據庫中指定一個文件名。

相關問題