NoSQL數據庫的分布式模型


NoSQL數據庫的分布式模型

單一服務器

在一個服務器完全能夠勝任工作時就沒必要考慮分布式,這樣部署簡單,維護也方便很多;

分片

特點

數據的各個部分存放在集群的不同服務器中;
比如按字母來划分:以a-g開頭的鍵值都存放到第一台服務器上,以h-n開頭的存放到第二台...

需要考慮的問題

  • 如何存放數據,讓用戶基本上只需從一台服務器上獲取數據
    如果經常需要與多個結點交互才能取到需要數據,可能分片策略不合適,或者該場景中分片不是一個理想的方案;

  • 數據節點的分布:地理位置與訪問用戶的關系
    數據結點分布在全球各地,讓北京的用戶只需要訪問北京的結點就能取到所需數據;

  • 保持負載均衡

優點

  • 同時提升讀取和寫入性能
    由於分片是將數據分散到多個結點存儲,這樣在寫入時,壓力同樣分散;

  • 橫向擴展寫入能力

缺點

降低數據庫的錯誤恢復能力
分片后,集群中結點的故障將導致部分數據丟失;
解決方案:每個分片數據不只存放在一個結點上,冗余存放,增加數據安全性(通過后面講到的與主從復制的結合使用,是常用的手段)

主從復制

特點

主節點存放權威數據,負責數據更新操作;
主節點將更新的數據復制到從節點;

優點

  • 有助於提升數據讀取性能
    從結點只負責查詢,增加從結點提升數據讀取性能

  • 增強“讀取操作的故障恢復能力”
    主節點損壞,依然可處理讀取請求;
    從結點升級為主結點后可以處理更新請求;

  • “一拖一” 即時備份的單存儲方案
    即使不需要分布式部署,主從復制也可以用來做為單機服務器備份的部署方案;

缺點

  • 數據的不一致性(未及時更新)
    主節點更新后,同步到各個從結點的數據不能保證及時,可能導致各個結點上查詢的數據不一致(只具有最終一致性)

  • 對提升寫入操作性能幫助不大
    所有的更新操作都通過主結點處理,對於更新頻繁的業務,使用主從復制模型優勢不大;

  • 主節點是系統的瓶頸和弱點

對等復制

特點

所有節點地位相同,都可接收查詢和寫入請求;
各節點將自己的更新的數據復制到其他節點;

優點

  • 從容處理出錯節點,不必擔心數據請求的丟失
  • 增加節點,輕易提升查詢和寫入性能

缺點

  • 數據不一致性
    寫入和讀取都有可能發生沖突;

結合使用

分片和主從復制中的一拖一方案結合使用;
分片的作用在於數據的分布式存儲;主從復制的作用在於為各個分片結點提供備份,增加數據安全;

注:新浪Redis集群的部署使用的是這種方案,關於新浪redis的使用詳見大CC之前的博客:
Redis 在新浪微博中的應用

附思維導圖

NoSQL:分布式模型

參考

《NoSQL精粹》

 

Posted by: 大CC | 30JUN,2014
博客:blog.me115.com [訂閱]
微博:新浪微博


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM