1.更高的寫入負(fù)載
默認(rèn)情況下列赎,MongoDB更側(cè)重高數(shù)據(jù)寫入性能宏悦,而非事務(wù)安全,MongoDB很適合業(yè)務(wù)系統(tǒng)中有大量“低價值”數(shù)據(jù)的場景包吝。但是應(yīng)當(dāng)避免在高事務(wù)安全性的系統(tǒng)中使用MongoDB饼煞,除非能從架構(gòu)設(shè)計上保證事務(wù)安全。
2.高可用性
MongoDB的復(fù)副集(Master-Slave)配置非常簡潔方便诗越,此外砖瞧,MongoDB可以快速響應(yīng)的處理單節(jié)點故障,自動嚷狞、安全的完成故障轉(zhuǎn)移块促。這些特性使得MongoDB能在一個相對不穩(wěn)定(如云主機)的環(huán)境中,保持高可用性感耙。
3.數(shù)據(jù)量很大或者未來會變得很大
依賴數(shù)據(jù)庫(MySQL)自身的特性褂乍,完成數(shù)據(jù)的擴(kuò)展是較困難的事,在MySQL中即硼,當(dāng)一個單達(dá)表到5-10GB時會出現(xiàn)明顯的性能降級,此時需要通過數(shù)據(jù)的水平和垂直拆分屡拨、庫的拆分完成擴(kuò)展只酥,使用MySQL通常需要借助驅(qū)動層或代理層完成這類需求褥实。而MongoDB內(nèi)建了多種數(shù)據(jù)分片的特性,可以很好的適應(yīng)大數(shù)據(jù)量的需求裂允。
4.基于位置的數(shù)據(jù)查詢
MongoDB支持二維空間索引损离,因此可以快速及精確的從指定位置獲取數(shù)據(jù)。
5.表結(jié)構(gòu)不明確绝编,且數(shù)據(jù)在不斷變大
在一些傳統(tǒng)RDBMS中僻澎,增加一個字段會鎖住整個數(shù)據(jù)庫/表,或者在執(zhí)行一個重負(fù)載的請求時會明顯造成其它請求的性能降級十饥。通常發(fā)生在數(shù)據(jù)表大于1G的時候(當(dāng)大于1TB時更甚)窟勃。 因MongoDB是文檔型數(shù)據(jù)庫,為非結(jié)構(gòu)貨的文檔增加一個新字段是很快速的操作逗堵,并且不會影響到已有數(shù)據(jù)秉氧。另外一個好處當(dāng)業(yè)務(wù)數(shù)據(jù)發(fā)生變化時,是將不在需要由DBA修改表結(jié)構(gòu)蜒秤。
6.沒有DBA支持
如果沒有專職的DBA汁咏,并且準(zhǔn)備不使用標(biāo)準(zhǔn)的關(guān)系型思想(結(jié)構(gòu)化、連接等)來處理數(shù)據(jù)作媚,那么MongoDB將會是你的首選攘滩。MongoDB對于對像數(shù)據(jù)的存儲非常方便,類可以直接序列化成JSON存儲到MongoDB中纸泡。 但是需要先了解一些最佳實踐轰驳,避免當(dāng)數(shù)據(jù)變大后,由于文檔設(shè)計問題而造成的性能缺陷弟灼。