2010-09-17 55 views
70

我聽說過兩種數據庫體系結構。主 - 主與主 - 從數據庫架構?

  • 主 - 主

  • 主從

是不是主 - 主更適合當今的網絡因爲它就像Git的,每個單位都有一整套數據如果一個人倒下,這並不重要。

主從提醒我SVN(我不喜歡),你有一個處理事物的中央單元。

問題:

  1. 各有什麼利弊?

  2. 如果你想在你的iPhone手機上有本地數據庫,哪一個更合適?

  3. 這些選擇之一是否需要徹底考慮?

回答

52

我們正在降低可用性,一致性和複雜性。首先解決最後一個問題:這很重要嗎?非常好!關於如何管理您的數據的選擇是絕對必要的,並且沒有「最佳實踐」來避免這些決定。你需要了解你的特殊要求。

有一個根本性的緊張關係:

一個副本:一致性是很容易的,但如果它正好是下每個人都露出水面,如果人們是遠程的,然後將付出可怕的通信費用。將可能需要斷開連接的便攜式設備帶入照片中,並且一個副本不會將其切斷。

主從:一致性不是太困難,因爲每條數據都有一個擁有主數據。但是,如果你看不到那個主人,你會怎麼做,需要某種推遲的工作。

師父:好吧,如果你能做到這一點,那麼它似乎提供了一切,沒有單點失敗,每個人都可以一直工作。麻煩是很難很難保持絕對一致性。有關更多信息,請參閱wikipedia article

維基百科似乎有優點的很好的總結和缺點

優勢

  • 如果一個主機出現故障,其他高手將繼續更新 數據庫。

  • 主人可以位於幾個物理站點,即分佈在網絡上的 。

缺點

  • 大多數多主複製系統僅鬆散一致,即 懶惰和異步,違反ACID屬性。

  • 急切的複製系統很複雜,引入了一些通信延遲。

  • 衝突解決等問題可能會變得棘手,因爲 所涉及的節點數量增加並且所需的等待時間減少。

+0

CouchDB使用MVCC。當我重新聯機時,這種處理多主數據庫所面臨的一致性問題的原因是,版本控制系統處理一致性,並且此主數據庫將獲得正確的更新數據。 – 2010-09-18 04:00:46

+4

但是當兩個用戶做出一些矛盾時會發生什麼 - 就像兩個用戶試圖購買庫存的最後一件商品一樣?設想一下,我們有兩個主人,每個用戶都會碰到不同的主人,然後我們會遇到某種形式的溝通障礙 - 最終會導致完整性降低或者可用性降低 - 一位用戶被告知「對不起,直到我與另一位大師交談之前,我真的不知道發生了什麼「,或者當通信恢復時我們有一個令人討厭的衝突 - 而且這些可能會變得非常複雜。 – djna 2010-09-18 06:42:42

+2

金融交易或股票市場使用什麼?他們會一直遇到這個問題? – CMCDragonkai 2014-06-20 05:50:02

48

雖然研究各種數據庫架構。我編寫了一些可能與其他人在未來研究相關的信息。我碰到

  1. 主從複製來到
  2. 主 - 主複製
  3. MySQL集羣

我已經決定定居使用MySQL集羣爲我的使用情況。不過請參閱下面的,我已經編制了各種利弊

1.主從複製

優點

  • 分析應用程序可以從從(S),而不會影響閱讀master
  • 整個數據庫的備份對主服務器的影響相對較小
  • 從服務器可脫機並同步回主服務器而沒有任何停機時間

缺點

  • 在發生故障的情況下,從機已被提升到掌握接管它的位置。沒有自動故障轉移
  • 停機時間和可能的數據丟失時,主站出現故障
  • 所有寫入也有到主要由在一個主從設計
  • 每個額外的從添加一些負載到主器件,因爲該二進制記錄所有被讀取並複製到每個從
  • 應用程序可能有數據要重新啓動

2。主 - 主複製

優點

  • 應用程序可以從兩個主人
  • 分佈在兩個主節點
  • 簡單,自動和快速故障轉移

缺點寫負載讀

  • 鬆散一致
  • 不是那麼簡單的主從配置和部署

3. MySQL集羣

基於MySQL的集羣設計鎮上新來的小子。 MySQL集羣的開發考慮了高可用性和可擴展性,是用於不需要停機時間,高可用性和橫向可伸縮性的環境的理想解決方案。

瞭解更多信息

優點見MySQL Cluster 101

  • (高Avalability)無單一故障點
  • 非常高吞吐量
  • 99.99%的正常運行時間
  • 自動分片
  • 實時響應
  • 在線操作(架構更改等)
  • 分佈式寫道:

缺點

您可以訪問我的Blog細目包括建築圖表,去進一步詳細介紹了上述3種體系結構。

+0

感謝您分享博客文章! – 2015-07-21 06:56:12

+0

沒問題。很高興幫助你! – Skillachie 2015-07-22 06:48:01