對比MySQL,什麼場景MongoDB更適用

原文連接: http://page.factj.com/blog/p/4078mongodb

 

MongoDB已經流行了很長一段時間,相對於MySQL,究竟什麼場景更須要用MongoDB?下面是一些總結。數據庫

更高的寫入負載安全

默認狀況下,MongoDB更側重高數據寫入性能,而非事務安全,MongoDB很適合業務系統中有大量「低價值」數據的場景。可是應當避免在高事務安全性的系統中使用MongoDB,除非能從架構設計上保證事務安全。數據結構

高可用性架構

MongoDB的復副集(Master-Slave)配置很是簡潔方便,此外,MongoDB能夠快速響應的處理單節點故障,自動、安全的完成故障轉移。這些特性使得MongoDB能在一個相對不穩定(如雲主機)的環境中,保持高可用性。ide

數據量很大或者將來會變得很大性能

依賴數據庫(MySQL)自身的特性,完成數據的擴展是較困難的事,在MySQL中,當一個單達表到5-10GB時會出現明顯的性能降級,此時須要經過數據的水平和垂直拆分、庫的拆分完成擴展,使用MySQL一般須要藉助驅動層或代理層完成這類需求。而MongoDB內建了多種數據分片的特性,能夠很好的適應大數據量的需求。大數據

基於位置的數據查詢url

MongoDB支持二維空間索引,所以能夠快速及精確的從指定位置獲取數據。spa

表結構不明確,且數據在不斷變大

在一些傳統RDBMS中,增長一個字段會鎖住整個數據庫/表,或者在執行一個重負載的請求時會明顯形成其它請求的性能降級。一般發生在數據表大於1G的時候(當大於1TB時更甚)。 因MongoDB是文檔型數據庫,爲非結構貨的文檔增長一個新字段是很快速的操做,而且不會影響到已有數據。另一個好處當業務數據發生變化時,是將不在須要由DBA修改表結構。

沒有DBA支持

若是沒有專職的DBA,而且準備不使用標準的關係型思想(結構化、鏈接等)來處理數據,那麼MongoDB將會是你的首選。MongoDB對於對像數據的存儲很是方便,類能夠直接序列化成JSON存儲到MongoDB中。 可是須要先了解一些最佳實踐,避免當數據變大後,因爲文檔設計問題而形成的性能缺陷。


BillRun – 基於MongoDB的賬單系統 (來自oc666)

BillRun是由Ofer Cohen推出開源帳單系統,採用MongoDB作爲數據存儲。這套帳單系統被以色列一家增速最快的電信運營商採用,每個月處理5億條通訊記錄,Ofer在Slideshare上說明了具體利到了MongoDB的哪些特性:

弱數據結構的特色,使得BillRun能很快的支持新的CDR(通信記錄)類型。這個特性使文檔型數據庫很適用於快速發展、業務需求不肯定的系統中。

BillRun僅使用了一個Collection,已經管理了數TB的文檔數據,而且沒有遇到由結構變動、數據爆發式增加的帶來的限制和問題

replicaSet副本集特性使創建更多的數據中心DRP變得更輕鬆。

內建的Sharding分片特性避免系統在數據增加的過程當中遇到性能瓶頸。

每秒鐘2000條通訊記錄的插入,MongoDB在架構設計上很好的支持了高負載的數據寫入。而且可使用findAndModify(相對緩慢)完成基礎的事務特性,而且經過應用層面的支持,實現雙段式提交。

查詢方式相比SQL,更加易讀、易懂,開發相對輕鬆。

基於位置容許更好的分析用戶使用狀況,從而更好地制定移動電話基礎設施的投入點。

相關文章
相關標籤/搜索