也許我的問題將被關閉,因爲它不夠「建設性」,但無論如何......我已經在尋找答案,但其中大部分都太籠統。對於我的碩士論文項目,我必須抓取很多(即幾千個)網頁,並將它們完全存儲在數據庫中。這是必要的,因爲我必須以不同的方式分析它們,嘗試幾種機器學習算法並以不同的方式解析它們。目前,我正在使用SQlite數據庫來實現此目的,並將Django作爲首選Web框架。查詢HTML數據比查詢SQlite數據庫更有效嗎?
我已將整個單個網頁的HTML數據放入Django TextField
,即對於每個網頁,數據庫表中有單獨的行,並且所有網頁的內容都存儲在表的單個列中。現在的問題是查詢和排序數據,尤其是迭代數據非常緩慢。到目前爲止,我已經抓取了大約1000個網頁,數據庫文件的大小已經超過2 GB。此外,我的4 GB內存被完全填滿,我的電腦(Macbook Pro 2009年中,Core2Duo 2.26 Ghz,500 GB HDD,OSX 10.8)無響應。如果我限制要預緩存的項目數,那麼處理數據變得更慢,因爲查詢數量增加。由於我必須抓取更多數據,因此我目前的設置不能很好地擴展。
我現在的問題如下: 如何更有效地存儲我的HTML數據,以便更快地查詢數據?切換到另一個RDBMS如MySQL或PostgreSQL是否有意義?或者你會推薦一個面向文檔的數據庫系統,比如MongoDB?我目前只有SQlite的經驗,所以我不知道該怎麼用。由於我的碩士論文截止日期越來越近,我沒有時間嘗試很多不同的設置。
爲了幫助你在幫我,這裏有一些進一步的要求:
- 在查詢,而不是吃了我的電腦(工作量的所有內存相比,對於SQLite大的HTML數據多表現不能被分發到其他計算機)和Django
- 或多或少良好的集成
- 這是研究工作,只有如此它永遠不會在生產環境中,但只有我的電腦上我的教授之一)
如果你幫助我決定我應該採取哪個方向,那將是很棒的事情,因爲我有種失去這種巨大可能性的感覺。非常感謝您提前! :)
你在html頁面查詢哪些數據?你正在進行一些基本的文字搜索嗎? – Jeremy
@Jeremy文本搜索是一個部分,是的,但我也必須分析網頁的HTML結構,並將其用作多種機器學習算法的訓練數據。這就是爲什麼我必須全部存儲網頁,而不僅僅是文本內容。 – pemistahl
許多數據庫(MySQL,SQLAnywhere,MS-SQL Server等)提供內置函數來幫助解析XML數據,這可能有一定的用處(假如HTML格式正確)。這在理論上會降低您的查詢時間,取決於您所追求的內容... – sybkar