當爬取數據時候,咱們可能須要緩存大量的數據,可是又無須任何複雜的鏈接操做,所以咱們將選用NoSQL數據庫,這種數據庫比傳統的關係型數據庫更易於操做,這裏我想主要說一下目前很是流行的MongoDB做爲緩存數據庫。mongodb
NoSQL(NoSQL = Not Only SQL ),意即"不只僅是SQL"。NoSQL,指的是非關係型的數據庫。數據庫
在現代的計算系統上天天網絡上都會產生龐大的數據量。編程
這些數據有很大一部分是由關係數據庫管理系統(RDMBS)來處理。 1970年 E.F.Codd's提出的關係模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程序編程更加簡單。json
經過應用實踐證實,關係模型是很是適合於客戶服務器編程,遠遠超出預期的利益,今天它是結構化數據存儲在網絡和商務應用的主導技術,然而,對於大多數據集的狀況,數據量太大使其難以存放在單一服務器上,此時就須要擴展到多臺服務器上。不過,關係模型對於這種擴展的支持並不夠好,由於在查詢多個表時,數據可能在不一樣的服務器上,相反,NoSQL數據庫一般是無模式的,從設計之初就考慮了跨服務器無縫分片的問題。在NoSQL中,有多種方式能夠實現該目標,分別是列數據存儲(如Hbase),鍵值對存儲(如Redis),面向文檔的數據庫(如MongoDB)以及圖形數據庫(如Neo4j).windows
——高可擴展性數組
——分佈式計算緩存
——低成本服務器
——架構的靈活性,半結構化數據網絡
——沒有複雜的關係數據結構
——沒有標準化
——有限的查詢功能(到目前爲止)
——最終一致是不直觀的程序
類型 | 部分表明
|
特色 |
列存儲 | Hbase Cassandra Hypertable |
顧名思義,是按列存儲數據的。最大的特色是方便存儲結構化和半結構化數據,方便作數據壓縮,對針對某一列或者某幾列的查詢有很是大的IO優點。 |
文檔存儲 |
MongoDB CouchDB |
文檔存儲通常用相似json的格式存儲,存儲的內容是文檔型的。這樣也就有有機會對某些字段創建索引,實現關係數據庫的某些功能。 |
key-value存儲 |
Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis |
能夠經過key快速查詢到其value。通常來講,存儲無論value的格式,照單全收。(Redis包含了其餘功能) |
圖存儲 |
Neo4J FlockDB |
圖形關係的最佳存儲。使用傳統關係數據庫來解決的話性能低下,並且設計使用不方便。 |
對象存儲 |
db4o Versant |
經過相似面嚮對象語言的語法操做數據庫,經過對象的方式存取數據。 |
xml數據庫 |
Berkeley DB XML BaseX |
高效的存儲XML數據,並支持XML的內部查詢語法,好比XQuery,Xpath。 |
好了,說完了NoSQL,那麼對非關係型數據庫有了簡單的理解,那下面具體的介紹一下MongoDB
MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。
在高負載的狀況下,添加更多的節點,能夠保證服務器性能。
MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。
————MongoDB 是一個面向文檔存儲的數據庫,操做起來比較簡單和容易。
————你能夠在MongoDB記錄中設置任何屬性的索引 來實現更快的排序。
————你能夠經過本地或者網絡建立數據鏡像,這使得MongoDB有更強的擴展性。
————若是負載的增長,它能夠分佈在計算機網絡中的其餘節點上(這就是所謂的分片)。
————Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
————MongoDb 使用update()命令能夠實現替換完成的文檔(數據)或者一些指定的數據字段 。
————Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操做。
————Map和Reduce。Map函數調用emit(key,value)遍歷集合中全部的記錄,將key與value傳給Reduce函數進行處理。
————Map函數和Reduce函數是使用Javascript編寫的,並能夠經過db.runCommand或mapreduce命令來執行MapReduce操做。
————GridFS是MongoDB中的一個內置功能,能夠用於存放大量小文件。
————MongoDB容許在服務端執行腳本,能夠用Javascript編寫某個函數,直接在服務端執行,也能夠把函數的定義存儲在服務端,下次直接調用便可。
————MongoDB支持各類編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
————MongoDB安裝簡單。
能夠在mongodb官網下載該安裝包,地址爲:https://www.mongodb.com/download-center#community。
第一步:點擊安裝:mongodb-win32-x86_64-2008plus-ssl-3.0.1-signed.msi
第二步:贊成協議
第三步:自定義安裝
第四步:繼續下一步
第五步:完成
首先,建立數據庫文件的存放位置
好比d:/mongodb/data/db。啓動mongodb服務以前須要必須建立數據庫文件的存放文件夾,不然命令不會自動建立,並且不能啓動成功。
打開cmd(windows鍵+r輸入cmd)命令行,進入D:\mongodb\bin目錄(如圖先輸入d:進入d盤而後輸入cd d:\mongodb\bin),
輸入以下的命令啓動mongodb服務:
D:/mongodb/bin>mongod --dbpath D:\mongodb\data\db
而後輸入
mongod.exe --dbpath=d:\db
最後啓動服務
net start mongodb