溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在NoSQL文檔型存儲(chǔ)數(shù)據(jù)庫(kù)中MongoDB的作用以及用法是怎樣的

發(fā)布時(shí)間:2021-09-18 15:47:59 來(lái)源:億速云 閱讀:171 作者:柒染 欄目:編程語(yǔ)言

NoSQL文檔型存儲(chǔ)數(shù)據(jù)庫(kù)中MongoDB的作用以及用法是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

一、 NoSQL數(shù)據(jù)庫(kù)分類

MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。

NoSQL 數(shù)據(jù)庫(kù)數(shù)量很多,但可以劃分為如下圖所示的 4 大類:
鍵值存儲(chǔ)數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)代表——Redis
列存儲(chǔ)數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)代表——HBase;
文檔型存儲(chǔ)數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)代表——MongoDB;
圖形數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)代表——Neo4J。

二、什么是MongoDB

關(guān)系型數(shù)據(jù)庫(kù):在我們所用過(guò)的sqlserver、mysql等,這些都是關(guān)系型數(shù)據(jù)庫(kù),并且關(guān)系型數(shù)據(jù)庫(kù)是遵循ACID原則的,嚴(yán)格的一致性。
非關(guān)系型數(shù)據(jù)庫(kù):也叫作NoSQL,用與超大規(guī)模數(shù)據(jù)的存儲(chǔ),這些類型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無(wú)需多余的操作就可以橫向擴(kuò)展。

MongoDB 是由C++語(yǔ)言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫(kù)系統(tǒng)。在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成。MongoDB 文檔類似于 JSON 對(duì)象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。

三、Mongodb優(yōu)缺點(diǎn)以及適合場(chǎng)景

MongoDB是為互聯(lián)網(wǎng)而生的數(shù)據(jù)庫(kù),是文檔數(shù)據(jù)庫(kù)。

1.1 、優(yōu)點(diǎn):

Schema-less,不需要預(yù)先定義表結(jié)構(gòu),同一個(gè)“表”中可以保存多個(gè)格式的數(shù)據(jù);

數(shù)據(jù)支持嵌套,數(shù)據(jù)以json格式存儲(chǔ);

允許使用JavaScript寫服務(wù)端腳本,類似于存儲(chǔ)過(guò)程;

支持Map/Reduce;

MongoDB支持地理位置索引,可以直接用于位置距離計(jì)算和查詢,實(shí)現(xiàn)“附近的人”、

“滴滴打車接單”等很容易;

1.2 、缺點(diǎn):

Mongodb沒(méi)有“數(shù)據(jù)一致性檢查”、“事務(wù)”等,不適合存儲(chǔ)對(duì)數(shù)據(jù)事務(wù)要求高(比如金融)的數(shù)據(jù);只適合放非關(guān)鍵性數(shù)據(jù)(比如日志或者緩存)。

關(guān)聯(lián)查詢很弱,不適合做報(bào)表查詢

1.3、Mongodb適合場(chǎng)景

1)、應(yīng)用在應(yīng)用服務(wù)器的日志記錄。

2)、主要用來(lái)存儲(chǔ)一些監(jiān)控?cái)?shù)據(jù),No schema 對(duì)開發(fā)人員來(lái)說(shuō),真的很方便,增加字段不用改表結(jié)構(gòu),而且學(xué)習(xí)成本極低。

3)、使用MongoDB做了O2O快遞應(yīng)用,·將送快遞騎手、快遞商家的信息(包含位置信息)存儲(chǔ)在 MongoDB,然后通過(guò) MongoDB 的地理位置查詢,這樣很方便的實(shí)現(xiàn)了查找附近的商家、騎手等功能,使得快遞騎手能就近接單。

1.4、不適合MongoDB的場(chǎng)景

如果業(yè)務(wù)中存在大量復(fù)雜的事務(wù)邏輯操作,則不要用MongoDB數(shù)據(jù)庫(kù)。

四、 總結(jié)

在mongodb中對(duì)應(yīng)關(guān)系型數(shù)據(jù)庫(kù)中‘表’的概念為‘集合’,表中的數(shù)據(jù)結(jié)構(gòu)是一致,mongodb以json格式存儲(chǔ),集合數(shù)據(jù)是靈活的,mongodb的同一集合collection中可存不同結(jié)構(gòu)的數(shù)據(jù)。但是實(shí)際工作中,阿笨不建議大家將不同類對(duì)象存入同一個(gè)MongoDB的Collection。

在NoSQL文檔型存儲(chǔ)數(shù)據(jù)庫(kù)中MongoDB的作用以及用法是怎樣的

NoSQL文檔型存儲(chǔ)數(shù)據(jù)庫(kù)—MongoDB

通過(guò)本次分享課程后大家記住一點(diǎn)千萬(wàn)不要把MongoDB NOSQL數(shù)據(jù)庫(kù)像RDBMS關(guān)系型數(shù)據(jù)庫(kù)一樣去應(yīng)用!建議把不是頻繁修改的數(shù)據(jù)放在MongoDB中。Mongodb是永遠(yuǎn)取代不了我們?nèi)粘S玫降膕qlserver,mysql,oracle等數(shù)據(jù)庫(kù)的。兩者只能相互補(bǔ)充,取長(zhǎng)補(bǔ)短的作用。

歸納:NoSQL 適用于數(shù)據(jù)模型較簡(jiǎn)單、無(wú)高度的數(shù)據(jù)一致性需求,但要求高性能和靈活性的情況。

記住一點(diǎn):如果你用著用著你突然發(fā)現(xiàn)把mongodb當(dāng)成RDMS關(guān)系型數(shù)據(jù)庫(kù)來(lái)使用了,那就是你的不對(duì)了!mongodb只永遠(yuǎn)只適合存放一些固化的非結(jié)構(gòu)化的數(shù)據(jù)!

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI