白帆
摘 要 數(shù)據(jù)庫的擴展是分布式存儲的關鍵技術,本文對sharding技術的適用環(huán)境進行了研究,介紹了一種基于存儲分片技術對于數(shù)據(jù)庫系統(tǒng)擴展能力的提升方法。
關鍵詞 分布式 存儲 分片 擴展
中圖分類號:TP311.13 文獻標識碼:A
0引言
如何提升數(shù)據(jù)庫的擴展能力一直是數(shù)據(jù)庫技術的核心問題,隨著互聯(lián)網(wǎng)高速發(fā)展,商業(yè)數(shù)據(jù)庫軟件對數(shù)據(jù)庫的自動擴展能力顯示出不適應的情況,暴露出一些不足之處,本文結(jié)合sharding碎片技術,對該技術適合的應用領域進行分析研究,提出了一種存儲分片擴展的新方案,改進分布式數(shù)據(jù)庫存儲管理,提升擴展能力。
1 分片技術介紹
1.1 sharding 的定義
shard即“碎片”,sharding也稱作數(shù)據(jù)切分或分區(qū)。是指通過某種條件,把同一個數(shù)據(jù)庫中的數(shù)據(jù)分散到多個數(shù)據(jù)庫或多臺機器上,以減小單臺機器壓力。
1.2 常見的sharding切分算法
hash切分
hash放置是以每條數(shù)據(jù)的一個域或者多個域(一般都選擇主鍵或者unique鍵)作為劃分鍵K,假設總共的節(jié)點數(shù)量為N (1-N), 那么數(shù)據(jù)被分配到的節(jié)點編號為:
n = hash(k) mod N
hash劃分實現(xiàn)非常簡單,只要所采用的哈希函數(shù)能把值算的足夠均勻,那么數(shù)據(jù)將會很均勻的被切分到各個節(jié)點,而且?guī)缀醪恍枰獢?shù)據(jù)就可以進行查詢的路由。但是,hash切分也存在很明顯的兩個缺點:
(1)實用性較差,由于劃分鍵的值被hash化,生成一個與輸入分布無關、輸出均勻的值,所以每個節(jié)點內(nèi)數(shù)據(jù)之間并沒有什么邏輯相關性,關聯(lián)數(shù)據(jù)集中性差,這樣不能高效的支持一些具有范圍性或分類性的服務,比如區(qū)域性服務、以時間范圍為約束的服務等。
(2)擴展能力差 ,由于最終位置n是依賴N(節(jié)點總數(shù))的值,因此一旦N發(fā)生變化,將導致n的數(shù)值變化,也就是說一旦加入新的機器,老節(jié)點里的數(shù)據(jù)可能大部分都要進行遷移,這樣的開銷太大。
2 分片存儲的新方案
區(qū)間劃分(Range-based Partitioning)首先會把數(shù)據(jù)按某種數(shù)值(時間,區(qū)域等)分為多個區(qū)間,然后再將這些區(qū)間分配到系統(tǒng)的各個節(jié)點上面。最簡單的區(qū)間劃分是一個節(jié)點只持有一個區(qū)間,在有n個節(jié)點的情況下,將劃分鍵的取值區(qū)間均勻劃分(這里的均勻是指劃分后的每個partition的數(shù)據(jù)量盡可能一樣大,而并非值域區(qū)間一樣大)為n份,然后每個節(jié)點持有一塊。
例如,按照用戶名稱首字母進行劃分,可能有以下的劃分方案:如圖-1所示,總共有4個shard。
用戶名稱首字母在[a-d)的會被分配到shard1節(jié)點
用戶名稱首字母在[d-h)的會被分配到shard2節(jié)點
用戶名稱首字母在[h-t)的會被分配到shard3節(jié)點
用戶名稱首字母在[t-z)的會被分配到shard4節(jié)點
-1 sharding區(qū)間劃分圖片
綜上所述,區(qū)間分布比hash分布在處理分布式、大數(shù)據(jù)存儲管理時具備一定的優(yōu)勢,主要表現(xiàn)在:
(1)提高了數(shù)據(jù)庫的可擴展性,可以隨著應用的增長來增加更多的服務器滿足應用需求,只需要將新增加的數(shù)據(jù)以及負載放到新加的服務器上即可。
(2)提高了數(shù)據(jù)庫的可用性。因為各節(jié)點的數(shù)據(jù)是相獨立的,所以如果其中幾個shard服務器down掉之后,并不會使整個系統(tǒng)對外停止服務。
(3)系統(tǒng)有更好的可管理性。對系統(tǒng)的升級和配置可以按照shard一個一個來做,并不會對服務產(chǎn)生大的影響。
直接hash劃分使用價值不高,區(qū)間劃分則可以得到很廣泛運用,有很好的分片擴展性,大大降低了對系統(tǒng)的性能消耗。
3結(jié)束語
使用區(qū)間分片擴展解決的hash分片擴展的弊端,使得各節(jié)點的數(shù)據(jù)能相對均勻的遷移到新的節(jié)點上面,大大提高了I/O效率和系統(tǒng)穩(wěn)定性,在工作實踐中,我們可以適當根據(jù)數(shù)據(jù)的實際情況來對區(qū)間分布進行人為的干擾和定制,這樣數(shù)據(jù)的分布和遷移能得到更好的效果。
參考文獻
[1] 秦秀磊,張文博,魏峻,王偉,鐘華,黃濤.云計算環(huán)境下分布式緩存技術的現(xiàn)狀與挑戰(zhàn)[J].軟件學報,2013.1.
[2] 分布式存儲系統(tǒng)中一致性哈希算法的研究-電腦知識與技術.學術交流,2011.8(7).