RAIDb的目標:
通過將多個廉價的數(shù)據(jù)庫實例組合到一個數(shù)據(jù)庫陣列,提供比單臺數(shù)據(jù)庫更好的性能和容錯性。
隱藏分布式數(shù)據(jù)庫的復雜性,提供給數(shù)據(jù)庫客戶端一個獨立的數(shù)據(jù)庫。
在RAIDb中,一個控制器在其他資源的前面。客戶發(fā)送他們的請求到RAIDb控制器,這個控制器將他們分發(fā)給一組RDBMS后端。
有不同的RAIDb級別或數(shù)據(jù)分發(fā)方案可用,它提供不同的費用,性能,或者容錯權(quán)衡。
全分割(RAIDb-0)
RAIDb-0 分割數(shù)據(jù)庫表到一個數(shù)據(jù)庫后端節(jié)點集。
- 一個表本身不能再分割了。但是不同的表可以分布在不同的后端節(jié)點上。
- RAIDb-0 需要至少兩個數(shù)據(jù)庫后端。
- RAIDb-0 當前只能和一個控制器配置一起使用。
- RAIDb-0 提供了一定的性能擴展,但不支持容錯功能。

注意:
當前的實現(xiàn)不支持分布式join。也就是說如果你想在表t1和t2間進行join操作,你必須確保t1和t2在同一臺機器上。
擴展性的提升取決于表的數(shù)目和各個表的負載情況:
- 如果你的數(shù)據(jù)庫很大,沒有單個節(jié)點有足夠的容量存放整個數(shù)據(jù)庫,那么RAIDb-0允許你把一個數(shù)據(jù)庫分布存儲到到一組節(jié)點上。
- 此外,每個數(shù)據(jù)庫引擎處理一個小的數(shù)據(jù)集可以盡可能的提高緩存利用率,因為總是請求那幾個表。
- RAIDb-0存儲的使用率是最高的,因為沒有重復的信息。
- RAIDb-0需要控制器知道那個表在哪臺服務器上,以便把請求導向正確的節(jié)點。因為沒有重復的表,一直一個后端會執(zhí)行一個特定的請求。這些信息也可以靜態(tài)配置到配置文件中,也可以從每個數(shù)據(jù)庫中抓取其schema來動態(tài)構(gòu)建。
全復制 (RAIDb-1)
- RAIDb-1 在一組后端上提供了一個數(shù)據(jù)庫的全鏡像。
- RAIDb-1 需要至少兩個后端節(jié)點,但是理論上后端的數(shù)量沒有上限的限制。每個后端必須有足夠的空間運行整個數(shù)據(jù)庫。
- RAIDb-1 允許在集群配置中使用幾個控制器來為關(guān)鍵系統(tǒng)獲得高可用性。

RAIDb-1的擴展能力取決于控制器廣播更新所有節(jié)點的能力。如果有大量后端數(shù)據(jù)庫,使用復合RAIDb可以獲得更好的擴展性。
RAIDb-1提供了對讀查詢的加速,因為他們可以被均衡到所有后端上。另一方面,它對寫操作沒有加速(update,insert,delete請求),因為他們必須廣播到所有節(jié)點。寫操作在所有的后端并行執(zhí)行。所以,在寫的角度來看,RAIDb-1可能比不上一個單獨的節(jié)點,但是從讀的角度來看,性能會隨著后端節(jié)點的增加而線性增長。
RAIDb-1有很好的容錯性,因為系統(tǒng)即使只有一個后端可用時也可以保持工作。
不像RAIDb-0,RAIDb-1控制器不需要知道數(shù)據(jù)庫的結(jié)構(gòu),因為所有的節(jié)點都有能力處理任何請求。然后,RAIDb-1提供了一個緩存,它需要數(shù)據(jù)庫結(jié)構(gòu)來維護緩存的一致性。
部分復制 (RAIDb-2)
RAIDb-2可以看作是RAIDb-0 和 RAIDb-1權(quán)衡下的一個中庸的解決方案。它支持調(diào)整每個數(shù)據(jù)庫表的部分復制程度,以獲得一個做好的讀寫性能。
RAIDb-2:
- 要求至少三個數(shù)據(jù)庫后端;
- 要求每個數(shù)據(jù)庫表在至少兩個后端上可用以解決單點故障問題。
- 不要求任何一個節(jié)點可以運行整個數(shù)據(jù)庫。
下面是RAIDb-2的典型應用:

沒有或者只有少數(shù)幾個節(jié)點運行整個數(shù)據(jù)庫,一組節(jié)點各自運行這數(shù)據(jù)庫的一部分。
下圖中的例子顯示了RAIDb-2的部分復制,數(shù)據(jù)庫包含3個表:x,y,和z.第一個后端包含整個數(shù)據(jù)庫,但是其他節(jié)點都只包含一個或兩個表。表x 和 y有3份拷貝,表z有兩份拷貝。任一節(jié)點失敗,仍然可以從其他的存活節(jié)點中找到數(shù)據(jù)。
RAIDb-2對于異構(gòu)數(shù)據(jù)庫非常有用。一個已有的企業(yè)數(shù)據(jù)庫使用商業(yè)數(shù)據(jù)庫,但是要建立一個全拷貝無論是從存儲上還是從增加許可的費用上來說,都太貴了。有了RAIDb-2就好辦了,你可以增加幾個小型開源數(shù)據(jù)庫來各自運行整個數(shù)據(jù)庫中的某些部分來代替整個數(shù)據(jù)庫,這樣也可以獲得更好的容錯性。
RAIDb-2容錯性沒有RAIDb-1好,但是它有效的改善了寫操作的效率。跟RAIDb-0類似,RAIDb-2也要求控制器知道所有數(shù)據(jù)庫的結(jié)構(gòu),以便將請求定向到適當?shù)墓?jié)點。
posted on 2008-12-10 21:35
安文豪 閱讀(1292)
評論(1) 編輯 收藏