您好,登錄后才能下訂單哦!
在NoSQL文檔型存儲(chǔ)數(shù)據(jù)庫(kù)中MongoDB的作用以及用法是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
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。
關(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是為互聯(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ù)。
在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
通過(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ì)億速云的支持。
免責(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)容。