2008-09-03 55 views
11

通常數據庫服務器是我們必須購買的最大,最昂貴的盒子,因爲垂直縮放是唯一的選擇。是否有任何數據庫能夠水平擴展(即跨多臺商品機器)並且這種方法有哪些侷限性?你能推薦一個水平伸縮的數據庫嗎?

+0

你檢查出任何的NewSQL選擇? NuoDB,Clustrix和Xeround都是分佈式的OLTP數據庫。我在Clustrix工作,並認爲它是一個很棒的產品。 – clieu 2013-01-03 02:58:40

回答

4

別擔心,好的解決方案即將到來!

CouchdbHypertable是開源的,仍然在alpha版本,但它們明確地設計爲使商品軟件的縮放比較簡單。他們工作得很好,可能會改變你對數據庫的看法。

另外,如果可以讓其他人爲你分發,Google AppEngineAmazon SimpleDB是非常便宜的分佈式數據庫服務,儘管它們現在都處於測試階段,所以嚴格限制。

2

存在諸如JavaSpaces(或諸如Gigaspaces之類的商業實現)的存儲技術,其提供高度可擴展,快速的對象安全訪問。

還有分佈式緩存系統,如memcached,它們提供了類似的方法。

當然,這些都不是真正的數據庫,但它們都是可以與數據庫結合使用以提供大量水平可伸縮性的東西,只要有合適的架構。真正的問題是,如果你想要一個數據庫附帶的所有ACID優點,就會有一些不可避免的性能損失。唯一的出路是找出不需要ACID的位,並使用其他技術來處理這些位。

1

Netezza和其他數據倉庫設備以這種方式擴展,但它們不適用於OLTP和Web應用程序工作負載。

5

的Oracle RAC - 真正應用集羣

這工作得很好,你只需要添加框集羣。您可以從一個盒子故障轉移到另一個盒子。這不是複製,所有的盒子都是同一個邏輯單元的一部分。

當然,這很漂亮。

2

Oracle RAC是勞斯萊斯的數據庫,允許額外的硬件節點相對容易地添加和硬件故障切換。

但是,您的商品硬件成本將因許可證成本而相形見絀。

爲什麼你覺得你需要水平縮放。具有40GB RAM和SAN存儲的多CPU核心服務器可以支持非常大的數據庫安裝。

您能提供任何尺寸和預期的活動信息,以便更好地理解您的問題嗎?

0

Oracle Real Application Clusters。如果你想要最好的話,請看看它。

0

如果你真的認爲你會出規模像樣的多核「大鐵」框,然後你想想你的分區數據。這是一個很好的,數據庫不可知的擴展方式。

所有數據庫水平將會以嚴重的成本。

除非你有百萬$$的拋出這個問題,忘記RAC。雖然它非常好,但是一旦你縮放超過2個節點,它就非常昂貴。

2

如果你確實走下了RAC路線,值得記住它不會永遠水平放大。即使銷售人員也承認90%的rac客戶都是4個或更少的節點。一旦你走得更遠,你的收益遞減。所以rac可能適合你,但不能保證是答案。

2

的MySQL:http://www.mysql.com/why-mysql/scaleout.html

限制是,它最適用於讀取大部分工作負載。你通常有一個接收所有寫入的「主」,以及複製寫入的許多「從屬」。然後,您將讀取分配到所有數據庫。

MySQL複製是異步的,所以你可能要處理的時間滯後的問題(你寫主,再由從機讀寫已經被複制之前)。

6

的Oracle RAC不是橫向擴展可言,因爲所有Oracle實例共享相同的數據存儲。是的,用SAN的東西你可以得到一個大尺寸的數據庫,但它根本不可擴展。換句話說,Oracle RAC仍然是一種擴展方法。因此,對於向外擴展或橫向擴展,您必須通過函數對數據進行分區,這意味着將不同的表組放在不同的數據庫中;或者爲每個表分區數據,這意味着將一個表分成多個具有相同模式的子表,但存儲在不同的數據庫中。通過這種方式,您可以獲得擴展解決方案。那裏有很多資源。在Web 2.0網站架構博客領域,一段時間以來一直是一個流行詞。 由於Sharding不直接受數據庫本身支持,因此您必須構建自己的解決方案。但正如我所說,已經有很多教訓。對於oracle,分區表是可能的。對於mysql,請查詢this question

相關問題