MongoDb在用於生產環境的三種模式,master/slaves(主從模式);replcation副本集;auto shard 分片模式算法
在早期的系統設計中,主從模式是比較流行的,將讀寫分離,在不一樣的DB上操做,能夠有效下降數據庫的壓力,並且還能實現數據的備份,可是在master節點故障的時候,不能及時的自動的切換到slaves節點,須要手動干預,這個是硬傷數據庫
目前在Mongodb的官方說法中已經不推薦使用master/slave/模式,推薦使用副本集模式,應爲該模式不但實現了主從模式的讀寫分離,並且有本身的一套選舉機制,能經過本身的算法,選舉出當前最優的節點做爲活躍節點,一旦活躍節點宕機,選舉出來的新的節點將成爲活躍節點對外提供服務,其餘節點則繼續做爲複製節點,當原先的活躍節點恢復,會自動做爲非活躍節點(備份節點)存在。架構
這種模式的最大優勢在於Mongodb的自動選舉活躍節點的機制,不須要手動干預即可以實現活躍與非活躍的切換,可是它因爲數據沒有shard,每一個節點都是一個完成的備份,則不能使用MongoDb的分佈式計算功能,固然,也能夠經過程序本身來實現(成本很高),因此就有了Auto shard模式分佈式
利用Mongo的分片,能夠將數據自動的分解成多個塊,存儲在不一樣的節點上,每一個被差分的塊都有三個副本集,這樣是爲了數據備份和恢復,並且數據分片之後,能夠利用多臺廉價的存儲和CPU的計算構建一個水平可擴展的計算架構,這就是咱們的分佈式計算設計
目前在單臺Mongodb上作MapReduce,速度仍是比較慢的,可是若是數據分散在多臺機器上,利用多太機器創建一個計算集羣,計算速度估計會線性增加。
io