更新時(shí)間:2020-12-11 來(lái)源:黑馬程序員 瀏覽量:
python爬蟲(chóng)用什么數(shù)據(jù)庫(kù)好?Mysql和Mongdb哪家有優(yōu)勢(shì)?我們從Mysql、Mongdb各自特點(diǎn)和關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)來(lái)分析。
Mysql和Mongdb的特點(diǎn)
MySQL屬于關(guān)系型數(shù)據(jù)庫(kù),它具有以下特點(diǎn)
·在不同的引擎上有不同的存儲(chǔ)方式。
·查詢語(yǔ)句是使用傳統(tǒng)的sql語(yǔ)句,擁有較為成熟的體系,成熟度很高。
·開(kāi)源數(shù)據(jù)庫(kù)的份額在不斷增加,MySQL的份額也在持續(xù)增長(zhǎng)。
·處理海量數(shù)據(jù)的效率會(huì)顯著變慢。
Mongodb屬于非關(guān)系型數(shù)據(jù)庫(kù),它具有以下特點(diǎn):
·數(shù)據(jù)結(jié)構(gòu)由鍵值對(duì)組成。
·存儲(chǔ)方式:虛擬內(nèi)存+持久化。
·查詢語(yǔ)句是獨(dú)特的Mongodb的查詢方式。
·可以通過(guò)副本集、分片來(lái)實(shí)現(xiàn)高可用。
·數(shù)據(jù)是存儲(chǔ)在硬盤(pán)上的,只不過(guò)需要經(jīng)常讀取的數(shù)據(jù)會(huì)被加載到內(nèi)存中,將數(shù)據(jù)存儲(chǔ)在物理內(nèi)存中,從而達(dá)到高速讀寫(xiě)。
·新興數(shù)據(jù)庫(kù),成熟度較低。
關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)特點(diǎn)
關(guān)系型數(shù)據(jù)庫(kù)可以理解為依賴一個(gè)模型來(lái)創(chuàng)建的數(shù)據(jù)庫(kù),比如我們使用的MySQL中的表是由橫列和縱列組成的一個(gè)二維表格。關(guān)系型數(shù)據(jù)庫(kù)可以通過(guò)關(guān)系模型使多個(gè)表的數(shù)據(jù)關(guān)聯(lián)起來(lái),比如我們平時(shí)說(shuō)的 一對(duì)一、一對(duì)多、多對(duì)一。由于是建立在數(shù)據(jù)模型的基礎(chǔ)上,所以我們可以通過(guò)SQL語(yǔ)句很方便的在多個(gè)表之間做復(fù)雜的查詢操作。關(guān)系型數(shù)據(jù)庫(kù)相對(duì)安全,因?yàn)橹苯哟鎯?chǔ)在硬盤(pán)中所以突然的宕機(jī)、停電等意外不會(huì)導(dǎo)致數(shù)據(jù)丟失。MySQL的存儲(chǔ)方式是由自身的引擎決定的,常用的引擎有Innodb和MyISAM。他們主要的區(qū)別就是MyISAM 不支持事務(wù),強(qiáng)調(diào)的是性能,執(zhí)行速度比Innodb要快,Innodb提供支持事務(wù)等高級(jí)數(shù)據(jù)庫(kù)功能。
非關(guān)系型數(shù)據(jù)庫(kù)即我們常說(shuō)的NoSQL數(shù)據(jù)庫(kù),部署起來(lái)都比較簡(jiǎn)單,沒(méi)有關(guān)系型數(shù)據(jù)庫(kù)那么復(fù)雜。Mongo的存儲(chǔ)方式為虛擬內(nèi)存+持久化存儲(chǔ),Mongo將數(shù)據(jù)寫(xiě)入內(nèi)存中,再由虛擬內(nèi)存管理器將其持久化到硬盤(pán)中,因此寫(xiě)操作會(huì)比關(guān)系型數(shù)據(jù)庫(kù)快很多。NOSQL的存儲(chǔ)格式是key-value形式,可以像關(guān)系型數(shù)據(jù)庫(kù)那樣存儲(chǔ)基礎(chǔ)數(shù)據(jù)類型的數(shù)據(jù),也可以存儲(chǔ)集合、對(duì)象等等。NoSQL雖然性能比較高,但是并不支持事物,也不能進(jìn)行聯(lián)表查詢,一般用于較大規(guī)模數(shù)據(jù)的存儲(chǔ)。
python爬蟲(chóng)用什么數(shù)據(jù)庫(kù)好?Mysql和Mongdb用哪個(gè)好?
建議用MongoDB,理由是:因?yàn)槟阌门老x(chóng),不光是要把網(wǎng)頁(yè)抓下來(lái),重要的是,要把抓取的網(wǎng)頁(yè)中的信息提取出來(lái),保存到數(shù)據(jù)庫(kù)中。而如果未來(lái)的字段會(huì)發(fā)生變化(增加、刪除、修改),那么用MongoDB這種鍵值數(shù)據(jù)庫(kù)是再合適不過(guò)了,因?yàn)?,你插入到?shù)據(jù)庫(kù)中的每條記錄中都同時(shí)包含著數(shù)據(jù)的的“鍵”和“值”,新數(shù)據(jù)使用新的格式保存,而舊數(shù)據(jù)使用舊的格式保存,你不需要做任何的操作就可以保持?jǐn)?shù)據(jù)格式的一致性。反之,如果你用SQL類數(shù)據(jù)庫(kù)的話,你就必須修改數(shù)據(jù)庫(kù)的格式,還要保證舊數(shù)據(jù)在新格式下的可用性,而這往往是非常麻煩的。
猜你喜歡:
關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)詳解
MySQL數(shù)據(jù)庫(kù)的高效檢索如何實(shí)現(xiàn)?