爬蟲的資料庫選型,redis, leveldb, mongodb, mysql 選哪個?


你最在意查詢速度了。
那你知不知道有個東西叫做倒排索引?這個查詢速度比正排快的不是一星半點。
不知道的話,就去百度。
然後寫個程序,把所有的倒排索引放到內存裡面。然後內存放不下所有倒排索引,該如何存放?不過你數據量小,應該不是問題。
當然,如何建立倒排索引,放到內存中,又有很多實現方式。增量和全量如何解決。
這樣,查詢的時候直接從內存裡面讀取數據,速度要比你從資料庫中讀取要快的多得多。
所以你的問題關鍵點不在資料庫上,這個不是影響查詢速度的大頭,而在如何建立索引上。
挺好的,你這寫完索引模塊,一個搜索引擎的雛形就出來了。
可以自己參考一些開源的搜索引擎框架。


如果自己練手用開源系統,就用ElasticSearch。原因是功能對口,且上手容易。


取決於你要怎樣查詢,比如按標題關鍵字查詢?單關鍵字模糊查詢的話,用mysql應該就可以.(mongodb沒有多少區別).更複雜的情況的話最好用 elasticsearch.
redis,leveldb沒有提供查詢的條件的.需要自己處理索引問題.


提供一個 保險、簡單、可擴展的思路,供參考

過程數據放在 redis 裡面,剝殼以後的價值數據放在 mongodb 或者 mysql。 要高能全文檢索的話,push 到 阿里雲的 open search 。


爬蟲爬回來的數據,大部分時候你預先是不知道它有什麼欄位的,這種時候用 schemaless的資料庫比較方便,我一直用 Scrapy + MongoDB


標準的key value結構,就用redis吧


好像還沒有人提SQLite3
這個簡單好用, 實測 8000+的數據搜索起來也挺快的
GitHub - but0n/JianSo_Movie: 包括了一個多進程電影資源爬蟲、一個電影圖片抓取腳本和Flask+Nginx+wsgi網站架構


如果是存 html,請用 Cassandra,如果是存結構化數據,請用 PostgreSQL。


上面說的這麼複雜,這麼簡單的需求用redis不就好了,簡單快速,支持持久化


查詢也是簡單的按key查詢嗎?如果是這樣的話,用redis最方便,速度也沒問題


不知道是不是我們這邊負責leveldb的同事配置問題或者通過thrift開放的介面的問題... leveldb 堆積的量大了之後很慢... 整體量不大的話 還是 redis比較靠譜


這種需求簡直就是給redis量身定製的,我建議果斷上mysql然後用redis做緩存。


推薦閱讀:

mysql 的事件調度器(Event Scheduler)穩定性如何?主要用在什麼場合?
大家設計資料庫時使用外鍵嗎?
如何MySQL鏈接Excel,實現一個簡易的自動更新報表?
MySQL主資料庫負責增刪改,從資料庫負責增改怎麼配置?
使用ECharts如何從mysql資料庫取數據顯示在頁面?

TAG:Python | MySQL | NoSQL | 爬蟲計算機網路 | LevelDB |