關(guān)于NoSQL之MongoDB的一些總結(jié)
NoSQL已經(jīng)流行了很長一段時間,那么究竟是什么場景下你才更需要用到這些“新興事物”,就比如MongoDB?下面是一些總結(jié):
你期望一個更高的寫負(fù)載
默認(rèn)情況下,對比事務(wù)安全,MongoDB更關(guān)注高的插入速度。如果你需要加載大量低價值的業(yè)務(wù)數(shù)據(jù),那么MongoDB將很適合你的用例。但是必須避免在要求高事務(wù)安全的情景下使用MongoDB,比如一個1000萬美元的交易。
不可靠環(huán)境保證高可用性
設(shè)置副本集(主-從服務(wù)器設(shè)置)不僅方便而且很快,此外,使用MongoDB還可以快速、安全及自動化的實現(xiàn)節(jié)點(diǎn)(或數(shù)據(jù)中心)故障轉(zhuǎn)移。
未來會有一個很大的規(guī)模
數(shù)據(jù)庫擴(kuò)展是非常有挑戰(zhàn)性的,當(dāng)單表格大小達(dá)到5-10GB時,MySQL表格性能會毫無疑問的降低。如果你需要分片并且分割你的數(shù)據(jù)庫,MongoDB將很容易實現(xiàn)這一點(diǎn)。
使用基于位置的數(shù)據(jù)查詢
MongoDB支持二維空間索引,因此可以快速及精確的從指定位置獲取數(shù)據(jù)。
非結(jié)構(gòu)化數(shù)據(jù)的爆發(fā)增長
給RDBMS增加列在有些情況下可能鎖定整個數(shù)據(jù)庫,或者增加負(fù)載從而導(dǎo)致性能下降,這個問題通常發(fā)生在表格大于1GB(更是下文提到BillRun系統(tǒng)中的痛點(diǎn)——單表格動輒幾GB)的情況下。鑒于MongoDB的弱數(shù)據(jù)結(jié)構(gòu)模式,添加1個新字段不會對舊表格有任何影響,整個過程會非??焖伲灰虼?,在應(yīng)用程序發(fā)生改變時,你不需要專門的1個DBA去修改數(shù)據(jù)庫模式。
缺少專業(yè)的數(shù)據(jù)庫管理員
如果你沒有專業(yè)的DBA,同時你也不需要結(jié)構(gòu)化你的數(shù)據(jù)及做join查詢,MongoDB將會是你的首選。MongoDB非常適合類的持久化,類可以被序列化成JSON并儲存在MongoDB。需要注意的是,如果期望獲得一個更大的規(guī)模,你必須要了解一些最佳實踐來避免走入誤區(qū)。
BillRun——使用MongoDB的賬單系統(tǒng)|2014年2月MUG IL(來自oc666)現(xiàn)實用例學(xué)習(xí):賬單
在上一次的ILMUG上,Ofer Cohen提出了BillRun,一個下一代基于MongoDB的開源賬單解決方案。這個賬單系統(tǒng)已被增速最快的以色列移動電話運(yùn)營商采用,每月處理超過5億的CDR(通訊記錄),Ofer分享了該系統(tǒng)如何利用MongoDB的優(yōu)勢:
PPT請訪問Slide Share
弱數(shù)據(jù)結(jié)構(gòu)模式允許系統(tǒng)快速引入新的CDR類型,BillRun負(fù)責(zé)托管所有的數(shù)據(jù)。BillRun系統(tǒng)已經(jīng)管理了TB級的表格,I/O性能受限于新字段的增加及數(shù)據(jù)體積的增長??焖俑北炯试S更簡單地設(shè)置多數(shù)據(jù)中心DRP和HA方案。分片允許I/O超預(yù)算時的線性橫向擴(kuò)展。在CDR插入達(dá)到2000個每秒時,MongoDB非常適用于高寫入系統(tǒng)。同時,你完全可以使用findAndModify(會影響性能)以及2階段提交(應(yīng)用程序級別)來解決事務(wù)問題。面向開發(fā)者的查詢允許優(yōu)雅查詢的編寫。基于位置允許更好的分析用戶使用情況,從而更好地制定移動電話基礎(chǔ)設(shè)施的投入點(diǎn)。
總結(jié)
MongoDB是個非常不錯的工具,但是只有在適合的場景下才能爆發(fā)出壓倒性優(yōu)勢,BillRun就是一個不錯的用例。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
- PHP對MongoDB[NoSQL]數(shù)據(jù)庫的操作
- 大數(shù)據(jù)時代的數(shù)據(jù)庫選擇:SQL還是NoSQL?
- 8種主流NoSQL數(shù)據(jù)庫系統(tǒng)特性對比和最佳應(yīng)用場景
- 初識NoSQL NoSql數(shù)據(jù)庫入門 NoSql數(shù)據(jù)庫基礎(chǔ)知識
- NoSQL反模式 - 文檔數(shù)據(jù)庫篇
- 最新統(tǒng)計排名前十的SQL和NoSQL數(shù)據(jù)庫排行榜
- 純Python開發(fā)的nosql數(shù)據(jù)庫CodernityDB介紹和使用實例
- NoSQL和Redis簡介及Redis在Windows下的安裝和使用教程
- MongoDB系列教程(一):NoSQL起源
- NoSQL數(shù)據(jù)庫的分布式算法詳解
- 深入解析NoSQL數(shù)據(jù)庫的分布式算法(圖文詳解)
- NoSQL開篇之為什么要使用NoSQL
- 8 種常用的 NoSQL 數(shù)據(jù)庫系統(tǒng)對比分析
- NoSQL 數(shù)據(jù)庫你應(yīng)該了解的 10 件事
相關(guān)文章
MongoDB數(shù)據(jù)庫安裝配置、基本操作實例詳解
這篇文章主要介紹了MongoDB數(shù)據(jù)庫安裝配置、基本操作,結(jié)合實例形式詳細(xì)分析了MongoDB數(shù)據(jù)庫安裝配置具體步驟、相關(guān)命令與基本操作實現(xiàn)技巧,需要的朋友可以參考下2020-01-01MongoDB進(jìn)階之動態(tài)字段設(shè)計詳解
這篇文章主要給大家介紹了MongoDB進(jìn)階之動態(tài)字段設(shè)計的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-06-06開發(fā)分布式醫(yī)療掛號系統(tǒng)MongoDB集成實現(xiàn)上傳醫(yī)院接口
這篇文章主要介紹了開發(fā)分布式醫(yī)療掛號系統(tǒng)MongoDB集成實現(xiàn)上傳醫(yī)院接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04基于Morphia實現(xiàn)MongoDB按小時、按天聚合操作方法
這篇文章主要介紹了基于Morphia實現(xiàn)MongoDB按小時、按天聚合操作 ,實現(xiàn)思路是啟動定時任務(wù),對各用戶的設(shè)備狀態(tài)數(shù)據(jù)分別按照小時以及天進(jìn)行聚合,并存儲進(jìn)數(shù)據(jù)庫中供用戶后續(xù)查詢.需要的朋友可以參考下2019-07-07