最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

MongoDB應(yīng)用二三事

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 14:39:36
文檔

MongoDB應(yīng)用二三事

MongoDB應(yīng)用二三事:最近,隨著大數(shù)據(jù)時(shí)代的到來(lái),NoSQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)行業(yè)的后起之秀,在短短的幾年之間,得到了迅猛的發(fā)展,而如今還大有取代RDBMS之勢(shì)。在眾多的NoSQL數(shù)據(jù)庫(kù)中,名氣最大的莫過(guò)于MongoDB了。MongoDB于2009年2月推出第一個(gè)版本,至今的5年多時(shí)間,其已經(jīng)發(fā)展
推薦度:
導(dǎo)讀MongoDB應(yīng)用二三事:最近,隨著大數(shù)據(jù)時(shí)代的到來(lái),NoSQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)行業(yè)的后起之秀,在短短的幾年之間,得到了迅猛的發(fā)展,而如今還大有取代RDBMS之勢(shì)。在眾多的NoSQL數(shù)據(jù)庫(kù)中,名氣最大的莫過(guò)于MongoDB了。MongoDB于2009年2月推出第一個(gè)版本,至今的5年多時(shí)間,其已經(jīng)發(fā)展

最近,隨著大數(shù)據(jù)時(shí)代的到來(lái),NoSQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)行業(yè)的后起之秀,在短短的幾年之間,得到了迅猛的發(fā)展,而如今還大有取代RDBMS之勢(shì)。在眾多的NoSQL數(shù)據(jù)庫(kù)中,名氣最大的莫過(guò)于MongoDB了。MongoDB于2009年2月推出第一個(gè)版本,至今的5年多時(shí)間,其已經(jīng)發(fā)展

最近,隨著“大數(shù)據(jù)時(shí)代”的到來(lái),NoSQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)行業(yè)的后起之秀,在短短的幾年之間,得到了迅猛的發(fā)展,而如今還大有取代RDBMS之勢(shì)。在眾多的NoSQL數(shù)據(jù)庫(kù)中,名氣最大的莫過(guò)于MongoDB了。MongoDB于2009年2月推出第一個(gè)版本,至今的5年多時(shí)間,其已經(jīng)發(fā)展成為在DB Engine影響力排行世界第5位的數(shù)據(jù)庫(kù)。

MongoDB具有以下幾個(gè)特點(diǎn):

1) 非結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu),保證了適應(yīng)多種多樣的數(shù)據(jù)類型和形式,無(wú)需預(yù)先設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和表模式。

2) 水平擴(kuò)張,理論上是可以無(wú)限擴(kuò)展的水平擴(kuò)展性。

3) 多樣的功能和平臺(tái)架構(gòu)支持,經(jīng)過(guò)其開(kāi)發(fā)團(tuán)隊(duì)的自身推進(jìn)以及Mongo開(kāi)源社區(qū)的蓬勃發(fā)展,使得MongoDB支持越來(lái)越多的開(kāi)發(fā)語(yǔ)言和大數(shù)據(jù)架構(gòu),同時(shí)也不斷豐富了他的功能。

而本人作為一個(gè)大數(shù)據(jù)相關(guān)的從業(yè)人員,在工作中不斷地學(xué)習(xí)MongoDB的知識(shí),我自己也將其運(yùn)用到了一些實(shí)際應(yīng)用場(chǎng)景當(dāng)中。

在使用MongoDB的過(guò)程中,其性能表現(xiàn)雖然中規(guī)中矩,也很好的體現(xiàn)了NoSQL的基本特性,但是實(shí)際應(yīng)用場(chǎng)景之中,MongoDB仍然有不少功能上的不足以及性能上可改進(jìn)之處。

1. 性能

首先我想談?wù)凪ongoDB的性能表現(xiàn)。作為NoSQL數(shù)據(jù)庫(kù),MongoDB的讀寫查等許多操作的性能方面自然是領(lǐng)先于RDBMS的,然而在與其他的NoSQL產(chǎn)品比較時(shí),MongoDB其實(shí)并沒(méi)有太大的優(yōu)勢(shì)。

根據(jù)網(wǎng)上之前公布的一些權(quán)威機(jī)構(gòu)的測(cè)試結(jié)果,MongoDB的性能在眾多NoSQL數(shù)據(jù)庫(kù)中只能說(shuō)是一般般。讀寫性能方面,相比于HBase,MongoDB在少分區(qū)下還能基本持平,但是在多分區(qū)的情情景下性能表現(xiàn)也只有HBase的1/3甚至1/5。而與這方面的佼佼者Cassandra相比,Mongo在各項(xiàng)對(duì)比中,也只能達(dá)到Cassandra的1/10甚至更少。

http://planetcassandra.org/nosql-performance-benchmarks

而與存儲(chǔ)方式同類的Couchbase相比,MongoDB似乎也不占優(yōu)勢(shì)。

http://www.csdn.net/article/2013-04-15/2814886-nosql-benchmark

http://www.couchbase.com/press-releases/couchbase-blows-past-competition-nosql-performance-benchmark

從以上兩個(gè)測(cè)試報(bào)告也可以看出,作為NoSQL領(lǐng)軍人物的MongoDB,在性能表現(xiàn)上確實(shí)差強(qiáng)人意。

2. 功能

2.1 事務(wù)

事務(wù)作為RDBMS一個(gè)非常實(shí)用的特性,在處理高可用性高安全性的情景,如企業(yè)級(jí)的應(yīng)用時(shí),事務(wù)有它獨(dú)到的優(yōu)點(diǎn)。

MongoDB并沒(méi)有事務(wù)處理的功能,而在原子性的保證方面,其只能做到單個(gè)文檔級(jí)別,不能支持多文件的原子性。

如今,MongoDB在開(kāi)源之后應(yīng)用層也有民間開(kāi)發(fā)的集成了事務(wù)功能的組件,但是應(yīng)用層的實(shí)現(xiàn)在數(shù)據(jù)庫(kù)的通信上面不能保證性能和可靠性,也就很難提供更專業(yè)和完善的支持。

2.2 SQL支持

SQL作為已經(jīng)使用了幾十年的數(shù)據(jù)庫(kù)操作語(yǔ)言,不僅在應(yīng)用上,有著完善多樣的接口和驅(qū)動(dòng),同時(shí),SQL的思維在眾多數(shù)據(jù)庫(kù)使用者和DBA的腦中已經(jīng)根深蒂固,想要迅速的改變這種思維方式是困難也沒(méi)有必要的。所以,NoSQL對(duì)于SQL語(yǔ)句的支持也很重要。MongoDB并不具備這樣的原生支持,同樣,應(yīng)用層的一些驅(qū)動(dòng)并不能很好的結(jié)合數(shù)據(jù)庫(kù)本身,完全發(fā)揮它的能量。

相反,有許多的同類產(chǎn)品已經(jīng)提供自帶的SQL語(yǔ)句處理,例如通過(guò)對(duì)接PostgreSQL來(lái)實(shí)現(xiàn)SQL語(yǔ)句支持,這樣能讓開(kāi)發(fā)者更快的熟悉和轉(zhuǎn)入NoSQL。

2.3 鎖

MongoDB 只有庫(kù)級(jí)粒度的鎖,這意味著當(dāng) MongoDB 一個(gè)寫鎖處于占用狀態(tài)時(shí),其它的讀寫操作都需要等待。雖然因?yàn)楦膭?dòng)過(guò)的鎖處理機(jī)制讓其能保證較高的并發(fā)量和高性能(感興趣可以另外介紹)。

可是基本保證并能完全避免問(wèn)題,如果數(shù)據(jù)操作不當(dāng),依然會(huì)導(dǎo)致長(zhǎng)時(shí)間占用寫鎖,比如前臺(tái)創(chuàng)建索引操作,當(dāng)出現(xiàn)這種情況的時(shí)候,整個(gè)數(shù)據(jù)庫(kù)就處于完全阻塞狀態(tài),無(wú)法進(jìn)行任何讀寫操作,情況十分嚴(yán)重。

2.4 自動(dòng)分區(qū)

體現(xiàn)MongoDB水平擴(kuò)展能力的重要一個(gè)功能就是自動(dòng)分區(qū)(auto-sharding),然而MongoDB的自動(dòng)分區(qū)在實(shí)際應(yīng)用當(dāng)中也存在著不少問(wèn)題。1)在高負(fù)載的情況下,MongoDB的自動(dòng)分區(qū)功能會(huì)出現(xiàn)不可用或者運(yùn)行緩慢的情況。2)可以看到網(wǎng)上有不少使用者在系統(tǒng)自動(dòng)分區(qū)后出現(xiàn)數(shù)據(jù)錯(cuò)誤或者數(shù)據(jù)丟失的情況(最出名的當(dāng)然是Foursquare的宕機(jī)事件)。3)我自己在實(shí)際應(yīng)用中也出現(xiàn)過(guò)類似問(wèn)題,也就是MongoDB在高負(fù)載下,出現(xiàn)了數(shù)據(jù)的丟失,并且還沒(méi)辦法恢復(fù)。

2.5 Join

MongoDB不支持Join操作,需要在多個(gè)Collection中查找時(shí),不能使用Join將多個(gè)Collection合并,只能分別在每個(gè)Collection中運(yùn)行一次存儲(chǔ)操作。

3. 安全性

MongoDB的原生數(shù)據(jù)庫(kù)系統(tǒng)安全性雖然也是它極力展示的一個(gè)特性之一,但是事實(shí)上

MongoDB的安全性設(shè)計(jì)仍有缺陷。首先,MongoDB的默認(rèn)安全設(shè)置為否,這給了很多不熟悉MongoDB特點(diǎn)的新人或是第一次轉(zhuǎn)換NoSQL的企業(yè)用戶一個(gè)非常大的安全隱患。此外,MongoDB也在網(wǎng)上被報(bào)道一些安全漏洞或者黑客攻擊事件,包括非法數(shù)據(jù)獲取、數(shù)據(jù)的無(wú)故丟失等這些事件究其原因也是安全保障設(shè)計(jì)的缺陷。

4. 易用性

易用上來(lái)說(shuō),MongoDB的表現(xiàn)也是中規(guī)中矩,雖然可以使用Javascript的Shell工具以及界面化的MMS,但是其操作仍有優(yōu)化的空間。此外,MongoDB不具備自動(dòng)安裝部署功能。MongoDB的安裝部署必須全手動(dòng)操作,這樣不僅比較耗時(shí),對(duì)于新手來(lái)說(shuō)可能因?yàn)椴皇煜ざ雎曰虿荒芡瓿梢恍┫到y(tǒng)配置的工作,導(dǎo)致安裝失敗或是使用過(guò)程中出現(xiàn)異常。

以上是我個(gè)人在實(shí)踐中發(fā)現(xiàn)的MongoDB的幾點(diǎn)不足,我認(rèn)為,MongoDB雖然是作為NoSQL的領(lǐng)軍人物在與關(guān)系型數(shù)據(jù)庫(kù)華山論劍,但是其實(shí)他并不完善,所以我希望未來(lái)MongoDB自身能做出改進(jìn),當(dāng)然我更希望能有新的數(shù)據(jù)庫(kù)產(chǎn)品能后來(lái)居上,這樣才能加快NoSQL數(shù)據(jù)庫(kù)的更快進(jìn)步。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

MongoDB應(yīng)用二三事

MongoDB應(yīng)用二三事:最近,隨著大數(shù)據(jù)時(shí)代的到來(lái),NoSQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)行業(yè)的后起之秀,在短短的幾年之間,得到了迅猛的發(fā)展,而如今還大有取代RDBMS之勢(shì)。在眾多的NoSQL數(shù)據(jù)庫(kù)中,名氣最大的莫過(guò)于MongoDB了。MongoDB于2009年2月推出第一個(gè)版本,至今的5年多時(shí)間,其已經(jīng)發(fā)展
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top