MongoDB系列之适用场景和不适用场景
生活随笔
收集整理的這篇文章主要介紹了
MongoDB系列之适用场景和不适用场景
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MongoDB是一款開(kāi)源的分布式架構(gòu)的NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。在前面的NoSQL和SQL對(duì)比學(xué)習(xí)中,我們知道了NoSQL數(shù)據(jù)庫(kù)系統(tǒng)和傳統(tǒng)的RDBMS的不同和優(yōu)點(diǎn)
1、MongoDB優(yōu)點(diǎn)
可以簡(jiǎn)單列舉MongoDB一些明顯的主要的優(yōu)點(diǎn)
- 速度:MongoDB比一般的關(guān)系型數(shù)據(jù)庫(kù)快很多,作為面向文檔的NoSQL數(shù)據(jù)庫(kù),MongoDB可以通過(guò)索引使訪問(wèn)文檔變得很容易而且快速
- 分片:MongoDB另外一個(gè)優(yōu)勢(shì)是允許用戶存儲(chǔ)大量的數(shù)據(jù),其通過(guò)分片的方式將數(shù)據(jù)分發(fā)到多個(gè)服務(wù)器上。
- 靈活性:因?yàn)镸ongoDB是非結(jié)構(gòu)化的數(shù)據(jù)庫(kù)系統(tǒng),而且多種數(shù)據(jù)類型,所以不需要像關(guān)系型數(shù)據(jù)那樣,進(jìn)行特別的表結(jié)構(gòu)設(shè)計(jì),存儲(chǔ)數(shù)據(jù)更加靈活
- 分布式:MongoDB數(shù)據(jù)庫(kù)默認(rèn)支持分布式,內(nèi)帶分布式的解決方案
2、MongoDB局限性
- 不支持連接:與支持連接的理性數(shù)據(jù)庫(kù)不同,MongoDB 不支持。盡管可以通過(guò)手動(dòng)編碼來(lái)添加連接功能,但執(zhí)行起來(lái)可能會(huì)很慢并影響性能。
- 數(shù)據(jù)大小有限制:MongoDB允許的文檔最大值為16MB
- 不能無(wú)限嵌套:MongoDB的數(shù)據(jù)格式是BSON的,但是其不支持無(wú)限的嵌套,用戶不能超過(guò)100級(jí)的文檔嵌套
- 高內(nèi)存:MongoDB會(huì)存儲(chǔ)每個(gè)值對(duì)的鍵名。它還受到數(shù)據(jù)冗余的影響,因?yàn)樗狈B接的功能。這會(huì)導(dǎo)致高內(nèi)存使用率。
- 不支持業(yè)務(wù)復(fù)雜查詢:MySQL這些類型數(shù)據(jù)庫(kù)都可以進(jìn)行表連接等等復(fù)雜業(yè)務(wù)查詢,MongoDB是文檔型的數(shù)據(jù)庫(kù),所以不支持聯(lián)表(Collection)查詢
3、適用場(chǎng)景
歸納了MongoDB一些比較明顯的特征后,我們可以知道MongoDB的一些適用場(chǎng)景。
在MongoDB官網(wǎng)也會(huì)列舉了MongoDB的適用場(chǎng)景:
- 1)網(wǎng)站實(shí)時(shí)數(shù)據(jù):MongoDB 非常適合實(shí)時(shí)的插入,更新與查詢,并具備網(wǎng)站實(shí)時(shí)數(shù)據(jù)存儲(chǔ)所需的復(fù)制及
高度伸縮性。 - 2)數(shù)據(jù)緩存:由于性能很高,MongoDB 也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由 MongoDB
搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過(guò)載。 - 3)大尺寸、低價(jià)值數(shù)據(jù)存儲(chǔ):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)一些數(shù)據(jù)時(shí)可能會(huì)比較昂貴,在此之前,很
多時(shí)候程序員往往會(huì)選擇傳統(tǒng)的文件進(jìn)行存儲(chǔ)。 - 4)高伸縮性場(chǎng)景:MongoDB 非常適合由數(shù)十或數(shù)百臺(tái)服務(wù)器組成的數(shù)據(jù)庫(kù)。MongoDB 的路線圖中已經(jīng)包
含對(duì) MapReduce 引擎的內(nèi)置支持。 - 5)對(duì)象或 JSON 數(shù)據(jù)存儲(chǔ):MongoDB 的 BSON 數(shù)據(jù)格式非常適合文檔化格式的存儲(chǔ)及查詢。
4、不適用場(chǎng)景
- 1)高度事務(wù)性系統(tǒng):例如銀行或會(huì)計(jì)這些金融系統(tǒng)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)目前還是更適用于需要大量原子性復(fù)雜事務(wù)的應(yīng)用程序。
- 2)傳統(tǒng)的商業(yè)智能應(yīng)用:針對(duì)特定問(wèn)題的 BI 數(shù)據(jù)庫(kù)會(huì)對(duì)產(chǎn)生高度優(yōu)化的查詢方式。對(duì)于此類應(yīng)用,關(guān)系型可能是更合適的選擇。
所以,對(duì)于需要復(fù)雜 SQL 查詢的問(wèn)題。MongoDB是不太適合的,在技術(shù)選項(xiàng)上需要根據(jù)業(yè)務(wù)場(chǎng)景和公司實(shí)際情況選擇合適的數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù)各有優(yōu)缺點(diǎn),應(yīng)該根據(jù)實(shí)際場(chǎng)景合理選擇數(shù)據(jù)庫(kù)
5、參考資料
- MongoDB應(yīng)用場(chǎng)景:https://hevodata.com/learn/mongodb-use-case/
- MongoDB 官網(wǎng)地址:https://www.mongodb.com/
- MongoDB 官方英文文檔:https://docs.mongodb.com/manual/
- MongoDB 各平臺(tái)下載地址:https://www.mongodb.com/download-center#community
總結(jié)
以上是生活随笔為你收集整理的MongoDB系列之适用场景和不适用场景的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【unity 笔记】ugui艺术字体
- 下一篇: 10大经典数据分析模型,你知道几个?(二