1

我想知道分片是否是部分複製的替代名稱。我已經知道了 -部分複製和分片之間的區別?

部分Repl。 - 每個數據項只在一些但不是全部節點處複製('Sharding'?)

Pure Partial Repl。 - 僅具有數據項子集的副本,但沒有節點包含數據庫的完整副本

混合部分複製 - 一組節點是完整副本,另一組節點是部分副本

回答

3

分片是對錶進行水平分區的一種方法。它與複製無關。 傳統上,RDBMS服務器位於系統中心,具有星型拓撲結構。這就是爲什麼它變成:

  1. 單一故障點

  2. 系統的性能瓶頸

要解決問題#1使用複製:如果原始服務器死你失敗複製到一個副本。

要解決問題2,您可以:

  1. 使用分片

    1.1做拆分自己

    1.2使用RDBMS 「開箱即用」 集羣機制

  2. 遷移到NoSQL解決方案

Sharding允許您通過拆分數據到多臺服務器來擴展數據庫。但分片是一種折衷。它限制了數據連接/相交/等。

如果你使用分片,你仍然有問題#1。因此,複製分片節點是一種很好的做法。

3

好點。

部分複製是一種有趣的方式,在這種方式下,您可以通過從主服務器到從服務器的複製來分發數據,每個數據都包含一部分數據。最終你會得到一組較小的數據庫,只讀,每個包含一部分數據。讀取可以很好地分佈和並行化。

但寫什麼呢?

這些仍然堵塞,在1大胖懶惰的主數據庫中,作爲緩衝區管理,鎖定,線程鎖/信號量和恢復任務的任務 - 是OLTP的真正瓶頸,它們使寫操作無法擴展......在我的博客文章中可以看到更多內容:http://database-scalability.blogspot.com/2012/08/scale-up-partitioning-scale-out.html。順便說一句 - 你的話題在這裏給了我另一篇文章的好主意。我會鏈接到這個問題,並給你信用! :)

分片是數據只出現一次,在數組的數據庫中的地方。每個數據庫都是數據的完整所有者,從那裏讀取數據,將數據寫入其中。這樣,讀寫就是分佈式和並行化的。真正的橫向擴展可以實現。

分片是一個混亂的處理,維護,它很難像地獄。 ScaleBase(我在那裏工作,檢查我們!),http://www.scalebase.com,啓用自動透明向外擴展,只需將它放在中間,後面將有10個DB,並且它對您的應用來說看起來像1。自動,透明的超級分片 - 在一個盒子裏。

享受, 多倫

+0

多倫您好,感謝您的回覆... 只是想根據過去的幾天裏讀書添加幾句: 分片是數據庫水平或垂直分成機制可以分散到多個獨立節點的多個分區。我假設我們可以將此視爲純粹部分複製的一個例子,如果我們也複製單獨的分片。如今,許多NoSQL系統主要基於選定的分片鍵提供水平分割,其目的在於如果能夠相應地設計應用邏輯,則提供良好的讀取和寫入可伸縮性。 – joarderm

+0

但是,我猜管理分片的應用邏輯非常困難,因爲事務類型和工作負載模式是事先已知的。然後,我們必須省略可能訪問單個操作的不同分片的分佈式事務,並且如果使用異步複製,則會產生不一致的讀取。看起來,在1)分片(複製 - 純粹的部分複製)和完全複製之間總是有幾個折衷; 2)異步和同步更新傳播。 值得去閱讀 http://danweinreb.org/blog/improving-the-pacel-taxonomy – joarderm

相關問題