劉春穎,張曉芬,張 悅沈陽師范大學,遼寧沈陽 110034
數據庫集群研究中的一致性哈希算法分析
劉春穎,張曉芬,張悅
沈陽師范大學,遼寧沈陽110034
為了提高數據的運行速度以及運行的可靠性和安全性,需要設置合理的數據劃分方法,并將一致性哈希算法運用到數據庫集群研究中。本文分析了一致性哈希算法在數據庫集群研究中的具體應用方法,并設計了具體的數據劃分方案,為后期的數據研究工作提供參考和借鑒。
數據庫集群研究;一致性哈希算法;數據劃分
由于數據庫中的數據信息分布并儲存在多個節點上,因此,為了提高系統運行的性能以及數據處理的速度,要將數據庫中所有的數據進行科學的劃分,并提高其分布的合理性。在進行數據劃分的過程中,要考慮到數據訪問和處理的性能以及數據增長和集群的可擴展性,進而在確保其運行性能的情況下降低運行成本。而哈希算法是較為常見且運用十分廣泛的數據分布技術,下文對其進行詳細的分析[1]。
一致性哈希算法的工作方法大概可以分為兩個步驟:第一,通過求模運算來計算儲存節點上的哈希值,在計算過程中,可以將儲存空間假設成一個環,并將所有的儲存節點均勻的分布在環上,這樣的話所有的節點就都擁有了一個哈希值。第二,應用哈希算法對第一步的數據進行計算,然后按照順時針的方向將計算出來的結果映射到離它最近的節點上去。即使某個節點出現了故障導致離線,也能減少對其他節點的影響。而當需要在兩個節點之間增加一個節點時,所產生的影響也僅僅存在于兩個節點之間的位置。因此,通過一致性哈希算法,對節點進行分布和計算可以有效提高系統運行的穩定性和可靠性。
一致性哈希算法區分于傳統哈希算法,也是在簡單哈希算法的基礎上進行改進,其應用優勢可以從以下幾點進行分析:第一,改進了傳統哈希算法中需要增刪節點的麻煩,提高了系統更新的效率,并避免在增刪節點過程中對其它節點造成影響。同時節省傳統哈希算法中進行數據移動的開銷,降低了系統運行的成本。第二,增強了系統的平衡性。由于數據庫中的每個點都有其自身的性能,有些性能較強,有些則較差,通過一致性哈希算法,可以對其節點性能進行科學分析,進而提高節點分布的合理性。第三,能夠提高數據增長時的系統運行速度。當數據庫內的數據出現持續增長狀態時,對系統的運行壓力比較大,很容易因為突然的數據數量增加而導致其運行速度遲緩或者直接造成癱瘓。而通過一致性哈希算法的應用,能夠將包含數據較多的虛擬節點進行分類,并可以在服務器之間調整期儲存分布情況,這樣就可以提高系統服務器對于數據增長的適應性,避免造成運行不暢[3]。一致性哈希算法目前主要應用于分布式Key-Value存儲系統中,其作用是存儲高并發的事務性數據,并根據Key值的不同,存放在不同服務器中,比如一些大型網站通常會把一些訪問頻率較高但是變化頻率較低的系統緩存頁面儲存在Key-Value系統中,以降低服務器的運行壓力和后臺的訪問壓力,進而提高其運行速度和運行的穩定性。
對于數據庫的集群研究可以根據其研究目的以及數據特征等劃分為不同的研究形式,其中對于結構化數據的分析稱為分析性數據庫。而隨著現代化信息化程度的提高,以及基于智能平臺的新媒體的不斷深化和拓展,導致結構化數據的產生速度不斷加快,進而提高了對于數據的分析工作難度。在這種情況下,傳統的數據庫分析方法已經不能夠滿足其數據數量和數據增長的需求,而針對大規模數據分析的并行計算和集群系統應運而生(以下并稱為并行分析型數據庫集群),提高了數據分析的擴展性和可靠性,并節省了分析成本。以下就對一致性哈希算法在并行分析型數據庫集群中的應用進行分析。
3.1數據的基本劃分方法
在對數據進行劃分時,可以選擇一個分區鍵,分區鍵和元組之間形成類似Key-Value的關系,并利用哈希函數計算出每個元組在分區鍵上的哈希值并作為新的分區鍵。如果分區鍵是基本型數值,可以將原來的分區鍵劃分為新的分區鍵,稱其為“數值型分區鍵”,并稱數值型分區鍵的值空間“分區空間”。指定數值型分區鍵之后,即可將數值型分區空間劃分為若干的分區。
3.2數據劃分方案設計
HDSF是目前數據量較多情況下實用性很強的一種存儲系統,能夠保證存儲數據的容差性和可擴展性。而MapReduce能夠很好的完成數據進入存儲引擎之前的抽
取、轉換格式和加載的任務。因此,將利用這兩種系統完成對數據劃分方案的設計。具體劃分方案可以分為以下幾個流程:第一,輸人劃分所需的參數。輸入的參數需要包括具體的采樣數和分區數。并用a表示在HDFS上的數據表文件中總共采集了多少行參數作為樣本,A表示數據劃分最終要生成多少個分區,同時保證每個數據塊的大小要基本均衡,最終這些數據塊將會被導入到集群的存儲系統中。第二,采樣生成Partition File。對于采集到的每個行,獲取或計算出其數值型分區鍵。采樣到a個分區鍵后,對其進行排序,并按照這a個分區鍵的值將分區空間劃分為A段,每段中包含的分區鍵個數基本相同,將劃分后的A一1個分區端點寫入到Partition File。第三,啟動一個MapReduce Job對數據表進行一致性哈希劃分。
3.3.1測試方法
在Presto中DDL部分的功能依賴于Hive的實現,所支持的數據劃分和Hive是一致的。但是Hive不能直接對哈希劃分哈范圍互粉提供支持,因此可以指定一個字段作為分區鍵,導入數據時可以將分區鍵上值相同的元組導入一個分區中,相當于提供了對列表劃分的支持。對于導入同一分區的數據,可以按照某個字段的值進行聚簇和排序。
3.3.2測試結果
采用TPC-DS作為測試基準,并利用其生成器生成了100GB數據集,同時把其中最大的一張事實表作為測試數據,數據量達到38.15GB。在實際的測試過程中,對Hive/Presto和哈希數據劃分方法進行對比。從測試結果可以看出,哈希數據劃分方法的性能更加良好,并且當數據集群規模增加時,哈希劃分方法的適應性和擴展性都表現得比較優良[4]。
本文通過分析一致性哈希算法的具體工作原理以及應用優勢,并以并行分析性數據庫集群為例,分析了一致性哈希算法的實際應用效果,并建立了具體的應用方案,通過對方案的測試可以發現,一致性哈希算法的應用效果良好,能夠提高數據劃分的速度并保持其擴展性能,有利于維護系統的穩定性和安全性。
[1]顏吉強.數據庫集群中的數據分布策略研究[J].煤炭技術,2013,32(4):154-155.
[2]姚墨涵,謝紅蘞.一致性哈希算法在分布式系統中的應用[J].電腦開發與應用,2012(7):1-2.
[3]楊或劍,林波.分布式存儲系統中一致性哈希算法的研究[J].電腦知識與技術,2011(22):5295.
[4]趙飛,蘇忠.一致性哈希算法在數據庫集群上的拓展應用[J].成都信息工程學院學報.2015,30(1):54.
TP3
A
1674-6708(2015)152-0068-01
劉春穎,講師,碩士,研究方向:計算機科學與技術
張曉芬,副教授,研究生,研究方向:計算機科學與技術
張悅,碩士,副教授,研究方向:數據挖掘,LSBN