MongoDB使用場景總結(jié)
很多人比較關(guān)心 MongoDB 的適用場景,也有用戶在話題里分享了自己的業(yè)務場景,比如
案例1
用在應用服務器的日志記錄,查找起來比文本靈活,導出也很方便。也是給應用練手,從外圍系統(tǒng)開始使用MongoDB。
- 用在一些第三方信息的獲取或者抓取,因為MongoDB的schema-less,所有格式靈活,不用為了各種格式不一樣的信息專門設計統(tǒng)一的格式,極大的減少開發(fā)的工作。
案例2
mongodb之前有用過,主要用來存儲一些監(jiān)控數(shù)據(jù),No schema 對開發(fā)人員來說,真的很方便,增加字段不用改表結(jié)構(gòu),而且學習成本極低。
案例3
使用MongoDB做了O2O快遞應用,·將送快遞騎手、快遞商家的信息(包含位置信息)存儲在 MongoDB,然后通過 MongoDB 的地理位置查詢,這樣很方便的實現(xiàn)了查找附近的商家、騎手等功能,使得快遞騎手能就近接單,目前在使用MongoDB 上沒遇到啥大的問題,官網(wǎng)的文檔比較詳細,很給力。
經(jīng)常跟一些同學討論 MongoDB 業(yè)務場景時,會聽到類似『你這個場景 mysql 也能解決,沒必要一定用 MongoDB』的聲音,的確,并沒有某個業(yè)務場景必須要使用 MongoDB才能解決,但使用 MongoDB 通常能讓你以更低的成本解決問題(包括學習、開發(fā)、運維等成本),下面是 MongoDB 的主要特性,大家可以對照自己的業(yè)務需求看看,匹配的越多,用 MongoDB 就越合適。
MongoDB 特性 | 優(yōu)勢 |
---|---|
事務支持 | MongoDB 目前只支持單文檔事務,需要復雜事務支持的場景暫時不適合 |
靈活的文檔模型 | JSON 格式存儲最接近真實對象模型,對開發(fā)者友好,方便快速開發(fā)迭代 |
高可用復制集 | 滿足數(shù)據(jù)高可靠、服務高可用的需求,運維簡單,故障自動切換 |
可擴展分片集群 | 海量數(shù)據(jù)存儲,服務能力水平擴展 |
高性能 | mmapv1、wiredtiger、mongorocks(rocksdb)、in-memory 等多引擎支持滿足各種場景需求 |
強大的索引支持 | 地理位置索引可用于構(gòu)建 各種 O2O 應用、文本索引解決搜索的需求、TTL索引解決歷史數(shù)據(jù)自動過期的需求 |
Gridfs | 解決文件存儲的需求 |
aggregation & mapreduce | 解決數(shù)據(jù)分析場景需求,用戶可以自己寫查詢語句或腳本,將請求都分發(fā)到 MongoDB 上完成 |
從目前阿里云 MongoDB 云數(shù)據(jù)庫上的用戶看,MongoDB 的應用已經(jīng)滲透到各個領(lǐng)域,比如游戲、物流、電商、內(nèi)容管理、社交、物聯(lián)網(wǎng)、視頻直播等,以下是幾個實際的應用案例。
- 游戲場景,使用 MongoDB 存儲游戲用戶信息,用戶的裝備、積分等直接以內(nèi)嵌文檔的形式存儲,方便查詢、更新
- 物流場景,使用 MongoDB 存儲訂單信息,訂單狀態(tài)在運送過程中會不斷更新,以 MongoDB 內(nèi)嵌數(shù)組的形式來存儲,一次查詢就能將訂單所有的變更讀取出來。
- 社交場景,使用 MongoDB 存儲存儲用戶信息,以及用戶發(fā)表的朋友圈信息,通過地理位置索引實現(xiàn)附近的人、地點等功能
- 物聯(lián)網(wǎng)場景,使用 MongoDB 存儲所有接入的智能設備信息,以及設備匯報的日志信息,并對這些信息進行多維度的分析
- 視頻直播,使用 MongoDB 存儲用戶信息、禮物信息等
- ......
如果你還在為是否應該使用 MongoDB,不如來做幾個選擇題來輔助決策(注:以下內(nèi)容改編自 MongoDB 公司 TJ 同學的某次公開技術(shù)分享)。
應用特征 | Yes / No |
---|---|
應用不需要事務及復雜 join 支持 | 必須 Yes |
新應用,需求會變,數(shù)據(jù)模型無法確定,想快速迭代開發(fā) | ? |
應用需要2000-3000以上的讀寫QPS(更高也可以) | ? |
應用需要TB甚至 PB 級別數(shù)據(jù)存儲 | ? |
應用發(fā)展迅速,需要能快速水平擴展 | ? |
應用要求存儲的數(shù)據(jù)不丟失 | ? |
應用需要99.999%高可用 | ? |
應用需要大量的地理位置查詢、文本查詢 | ? |
如果上述有1個 Yes,可以考慮 MongoDB,2個及以上的 Yes,選擇MongoDB絕不會后悔。
到此這篇關(guān)于MongoDB使用場景總結(jié)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MongoDB的備份(mongodump)與恢復(mongorestore)
在使用MongoDB時,數(shù)據(jù)備份與恢復是非常重要的一環(huán),以防止數(shù)據(jù)丟失或意外刪除,本文就來介紹一下MongoDB的備份(mongodump)與恢復(mongorestore),感興趣的可以了解一下2023-12-12MongoDB中強大的統(tǒng)計框架Aggregation使用實例解析
這篇文章主要介紹了MongoDB中強大的統(tǒng)計框架Aggregation使用實例解析,文中舉了Python和Java使用Aggregation的數(shù)據(jù)統(tǒng)計例子進行講解,需要的朋友可以參考下2016-01-01MongoDB中的常用操作$push、$pushAll和$pull示例詳解
MongoDB從2.2版本開始支持$push操作符,$push是用于在數(shù)組中添加一個元素的更新操作符,它將指定的值追加到數(shù)組的末尾,本文給大家介紹MongoDB的常用操作$push、$pushAll和$pull,感興趣的朋友一起看看吧2023-12-12