Mongodb

RDBMS:是否可以橫向擴展 RDB?

  • January 18, 2012

是否可以擴展 RDB ?如果有可能,如何實現?

我問這個問題是因為我協助了一個 NoSQL 事件,在該事件中演講者多次告訴我,關係數據庫的缺點之一是無法擴展。換句話說,我們應該添加更多的記憶體和更多的儲存空間,但我們不能像使用 NoSQL 數據庫那樣添加另一台電腦。

是的,在某種程度上。

  • Master-Master Replication - 理論上可以擴展讀寫,但是對於寫入來說它很複雜並且需要分佈式送出機制,例如兩階段送出。這限制了它的實用性。
  • Master-Slave Replication - 可擴展讀取操作,但它對寫入操作完全沒有幫助。引入了複製滯後。
  • 垂直分區——基本上是在不同的伺服器上定位不相關的表。可擴展讀寫,但缺點是您不能輕鬆地 JOIN 來自不同伺服器的結果。
  • 水平分區又名分片——將每個表中的數據均勻地分佈在所有伺服器之間。數據的位置由分片鍵確定。可擴展讀寫,但是通過分片鍵以外的標準訪問數據需要查詢所有伺服器,在極端情況下需要 map-reduce 類型的基礎設施。

如果您將垂直和水平分區發揮到極致,您實際上最終會得到建構在 SQL 後端之上的 NoSQL 解決方案。

經驗法則是,您不能水平擴展保留完整的 ACID,您將不得不放棄至少一個特徵。最典型的是在可擴展系統中只有最終的一致性(即,不能保證整個系統始終保持一致,但保證最終達到一致狀態)。

引用自:https://serverfault.com/questions/351072