基于線性哈希表的數(shù)據(jù)存儲(chǔ)平臺(tái)組織方法和數(shù)據(jù)存儲(chǔ)平臺(tái)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種基于線性哈希表的數(shù)據(jù)存儲(chǔ)平臺(tái)組織方法和數(shù)據(jù)存儲(chǔ)平臺(tái),涉及云計(jì)算領(lǐng)域。本發(fā)明擴(kuò)展了哈希表的結(jié)構(gòu)和地址映射模式,在有新的節(jié)點(diǎn)加入集群時(shí),保持鍵值和地址間原有的映射不變,只是擴(kuò)展地址的有效位數(shù)和哈希表長(zhǎng)度,將新產(chǎn)生的地址賦予新節(jié)點(diǎn),并在保持系統(tǒng)運(yùn)行的同時(shí)逐漸遷移數(shù)據(jù);同理,在有節(jié)點(diǎn)離開(kāi)集群時(shí),保持鍵值和地址間原有的映射不變,只是收縮地址的有效位數(shù)和哈希表長(zhǎng)度,并在保持系統(tǒng)運(yùn)行的同時(shí)逐漸遷移數(shù)據(jù)。這種組織方法,既保留了通過(guò)哈希表組織云集群的實(shí)時(shí)性高的優(yōu)點(diǎn),又使集群易于維護(hù)和擴(kuò)展。本發(fā)明適用于所有云存儲(chǔ)平臺(tái),特別是對(duì)實(shí)時(shí)性要求較高、運(yùn)行在內(nèi)存數(shù)據(jù)庫(kù)上的計(jì)費(fèi)或流量控制等業(yè)務(wù)平臺(tái)。
【專利說(shuō)明】基于線性哈希表的數(shù)據(jù)存儲(chǔ)平臺(tái)組織方法和數(shù)據(jù)存儲(chǔ)平臺(tái)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及云計(jì)算領(lǐng)域,特別涉及一種基于線性哈希表的數(shù)據(jù)存儲(chǔ)平臺(tái)組織方法 和數(shù)據(jù)存儲(chǔ)平臺(tái)。
【背景技術(shù)】
[0002] 隨著大數(shù)據(jù)時(shí)代的來(lái)臨,云模式是數(shù)據(jù)存儲(chǔ)平臺(tái)的發(fā)展趨勢(shì)。云存儲(chǔ)的組織方法 是指根據(jù)鍵值決定哪些數(shù)據(jù)存儲(chǔ)在哪個(gè)節(jié)點(diǎn)的方法,可以分為樹(shù)狀組織法和哈希表組織法 兩種。其中,哈希表組織法適合單記錄查詢和修改,優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、訪問(wèn)速度快,缺點(diǎn)是集 群不易維護(hù),增加和刪除節(jié)點(diǎn)都需要停止集群運(yùn)行并重新組織數(shù)據(jù)。
[0003] 通過(guò)哈希表組織云存儲(chǔ)平臺(tái)的方法如下:
[0004] 1)為簡(jiǎn)化模型起見(jiàn),我們認(rèn)為數(shù)據(jù)具有唯一的鍵值k,云存儲(chǔ)平臺(tái)有N個(gè)節(jié)點(diǎn),編 號(hào)為0?N-1,節(jié)點(diǎn)之間對(duì)等。
[0005] 2)云存儲(chǔ)平臺(tái)維護(hù)一張哈希表,長(zhǎng)度為N,表的每一列指向一個(gè)節(jié)點(diǎn),并維護(hù)一個(gè) 哈希函數(shù)H,H (k)的結(jié)果取值范圍在0?N-I之間。哈希本身是一種成熟的技術(shù),現(xiàn)有的哈 希函數(shù)能夠做到,無(wú)論k的分布如何,H(k)的分布基本均勻。
[0006] 3)當(dāng)有新的數(shù)據(jù)(鍵值kl)載入云存儲(chǔ)平臺(tái)時(shí),云存儲(chǔ)平臺(tái)計(jì)算H(kl),假設(shè) H (kl)=n,則在哈希表上查找到η號(hào)節(jié)點(diǎn),并將該數(shù)據(jù)存入η號(hào)節(jié)點(diǎn);
[0007] 4)當(dāng)用戶向云存儲(chǔ)平臺(tái)請(qǐng)求訪問(wèn)鍵值為kl的數(shù)據(jù)時(shí),云存儲(chǔ)平臺(tái)同樣根據(jù) H (kl) =n查找哈希表,將這個(gè)請(qǐng)求轉(zhuǎn)發(fā)給η號(hào)節(jié)點(diǎn)。
[0008] 圖1為現(xiàn)有的哈希表組織原理示意圖。如圖1所示,如果有新的節(jié)點(diǎn)加入集群,則 系統(tǒng)需要擴(kuò)展哈希表,使其長(zhǎng)度達(dá)到Ν+1,新節(jié)點(diǎn)的地址編號(hào)為N ;更換哈希函數(shù),新的哈希 函數(shù)H'(k)的取值范圍為0?Ν;根據(jù)新的哈希函數(shù)遷移數(shù)據(jù),對(duì)于任一k,H'(k)即是k 所代表的數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)。數(shù)據(jù)遷移過(guò)程涉及到整個(gè)集群幾乎所有的節(jié)點(diǎn),為此不得不停 止集群服務(wù)。
[0009] 節(jié)點(diǎn)離開(kāi)集群的流程與上述加入集群相似,也需要更換哈希函數(shù),數(shù)據(jù)遷移過(guò)程 也涉及到整個(gè)集群幾乎所有的節(jié)點(diǎn)。
[0010] 有上述分析可見(jiàn),現(xiàn)有的哈希表組織法集群不易維護(hù),增加和刪除節(jié)點(diǎn)都需要停 止集群運(yùn)行并重新組織數(shù)據(jù),不適用于實(shí)時(shí)性要求較高的數(shù)據(jù)存儲(chǔ)平臺(tái)。
【發(fā)明內(nèi)容】
[0011] 本發(fā)明實(shí)施例所要解決的一個(gè)技術(shù)問(wèn)題是:解決現(xiàn)有的哈希表組織法存在的集群 不易維護(hù),增加和刪除節(jié)點(diǎn)都需要停止集群運(yùn)行并重新組織數(shù)據(jù)的問(wèn)題。
[0012] 根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提出一種基于線性哈希表的數(shù)據(jù)存儲(chǔ)平臺(tái)組織方 法,包括:對(duì)于節(jié)點(diǎn)數(shù)量為N的一個(gè)集群,如果有新節(jié)點(diǎn)加入該集群,將哈希表長(zhǎng)度擴(kuò)展為 N+1,新節(jié)點(diǎn)的地址編號(hào)記為N ;將哈希表分裂指針指向的節(jié)點(diǎn)上的部分?jǐn)?shù)據(jù)遷移到地址編 號(hào)為N的新節(jié)點(diǎn)上;哈希表分裂指針后移一位,指向下一個(gè)節(jié)點(diǎn);更新哈希表位數(shù)計(jì)數(shù)器的 值
【權(quán)利要求】
1. 一種基于線性哈希表的數(shù)據(jù)存儲(chǔ)平臺(tái)組織方法,包括: 對(duì)于節(jié)點(diǎn)數(shù)量為N的一個(gè)集群,如果有新節(jié)點(diǎn)加入該集群,將哈希表長(zhǎng)度擴(kuò)展為N+1, 新節(jié)點(diǎn)的地址編號(hào)記為N; 將哈希表分裂指針指向的節(jié)點(diǎn)上的部分?jǐn)?shù)據(jù)遷移到地址編號(hào)為N的新節(jié)點(diǎn)上; 哈希表分裂指針后移一位,指向下一個(gè)節(jié)點(diǎn); A/"+l 更新哈希表位數(shù)計(jì)數(shù)器的值log,,其中,d表示哈希表位數(shù)計(jì)數(shù)器的值,I表示向上取整。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 用戶請(qǐng)求訪問(wèn)鍵值為k的數(shù)據(jù)時(shí),根據(jù)H(k)=n計(jì)算k的哈希值,H表示哈希函數(shù),η表 示計(jì)算出的哈希值; 獲取哈希表位數(shù)計(jì)數(shù)器的值d; 截取η的后d位得到η' ; 截取η的后d-1位得到η" ; 比較哈希表分裂指針與地址編號(hào)η"的位置,如果地址編號(hào)為η"的節(jié)點(diǎn)在哈希表分裂 指針之后,將請(qǐng)求定位到地址編號(hào)為η"的節(jié)點(diǎn),如果地址編號(hào)為η"的節(jié)點(diǎn)在哈希表分裂指 針之前,將請(qǐng)求定位到地址編號(hào)為η'的節(jié)點(diǎn)。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,哈希函數(shù)的取值范圍大于集群中節(jié)點(diǎn)的 地址編號(hào)的范圍。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)存儲(chǔ)平臺(tái)是云存儲(chǔ)平臺(tái)。
5. -種基于線性哈希表的數(shù)據(jù)存儲(chǔ)平臺(tái)組織方法,包括: 對(duì)于節(jié)點(diǎn)數(shù)量為Ν+1的一個(gè)集群,如果哈希表最末端的地址編號(hào)為N的節(jié)點(diǎn)離開(kāi)該集 群,哈希表分裂指針前移一位,指向上一個(gè)節(jié)點(diǎn); 更新哈希表位數(shù)計(jì)數(shù)器的值J=Iog^,其中,d表示哈希表位數(shù)計(jì)數(shù)器的值,pi表 示向上取整; 將地址編號(hào)為N的節(jié)點(diǎn)上的所有數(shù)據(jù)遷移到哈希表分裂指針指向的節(jié)點(diǎn); 將哈希表長(zhǎng)度縮小為N。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 用戶請(qǐng)求訪問(wèn)鍵值為k的數(shù)據(jù)時(shí),根據(jù)H(k)=n計(jì)算k的哈希值,H表示哈希函數(shù),η表 示計(jì)算出的哈希值; 獲取哈希表位數(shù)計(jì)數(shù)器的值d; 截取η的后d位得到η' ; 截取η的后d-1位得到η" ; 比較哈希表分裂指針與地址編號(hào)η"的位置,如果地址編號(hào)為η"的節(jié)點(diǎn)在哈希表分裂 指針之后,將請(qǐng)求定位到地址編號(hào)為η"的節(jié)點(diǎn),如果地址編號(hào)為η"的節(jié)點(diǎn)在哈希表分裂指 針之前,將請(qǐng)求定位到地址編號(hào)為η'的節(jié)點(diǎn)。
7. -種數(shù)據(jù)存儲(chǔ)平臺(tái),包括:節(jié)點(diǎn)加入處理單元或/和節(jié)點(diǎn)離開(kāi)處理單元; 節(jié)點(diǎn)加入處理單元對(duì)于節(jié)點(diǎn)數(shù)量為N的一個(gè)集群,如果有新節(jié)點(diǎn)加入該集群,將哈希 表長(zhǎng)度擴(kuò)展為N+1,新節(jié)點(diǎn)的地址編號(hào)記為N;將哈希表分裂指針指向的節(jié)點(diǎn)上的部分?jǐn)?shù)據(jù) 遷移到地址編號(hào)為N的新節(jié)點(diǎn)上;哈希表分裂指針后移一位,指向下一個(gè)節(jié)點(diǎn);更新哈希表 ,Γι制1 位數(shù)計(jì)數(shù)器的值J=Iog2,其中,d表示哈希表位數(shù)計(jì)數(shù)器的值,f1表示向上取整; 節(jié)點(diǎn)離開(kāi)處理單元對(duì)于節(jié)點(diǎn)數(shù)量為N+1的一個(gè)集群,如果哈希表最末端的地址編號(hào)為N的節(jié)點(diǎn)離開(kāi)該集群,哈希表分裂指針前移一位,指向上一個(gè)節(jié)點(diǎn);更新哈希表位數(shù)計(jì)數(shù)器 的值J=log『,其中,d表示哈希表位數(shù)計(jì)數(shù)器的值,pi表示向上取整;將地址編號(hào)為N 的節(jié)點(diǎn)上的所有數(shù)據(jù)遷移到哈希表分裂指針指向的節(jié)點(diǎn);將哈希表長(zhǎng)度縮小為N。
8. 根據(jù)權(quán)利要求7所述的數(shù)據(jù)存儲(chǔ)平臺(tái),其特征在于,還包括: 數(shù)據(jù)訪問(wèn)處理單元,用于用戶請(qǐng)求訪問(wèn)鍵值為k的數(shù)據(jù)時(shí),根據(jù)H(k)=n計(jì)算k的哈希 值,H表示哈希函數(shù),η表示計(jì)算出的哈希值;獲取哈希表位數(shù)計(jì)數(shù)器的值d;截取η的后d 位得到η' ;截取η的后d-Ι位得到η" ;比較哈希表分裂指針與地址編號(hào)η"的位置,如果地 址編號(hào)為η"的節(jié)點(diǎn)在哈希表分裂指針之后,將請(qǐng)求定位到地址編號(hào)為η"的節(jié)點(diǎn),如果地址 編號(hào)為η"的節(jié)點(diǎn)在哈希表分裂指針之前,將請(qǐng)求定位到地址編號(hào)為η'的節(jié)點(diǎn)。
9. 根據(jù)權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)平臺(tái),其特征在于,哈希函數(shù)的取值范圍大于集群 中節(jié)點(diǎn)的地址編號(hào)的范圍。
10. 根據(jù)權(quán)利要求7所述的數(shù)據(jù)存儲(chǔ)平臺(tái),其特征在于,所述數(shù)據(jù)存儲(chǔ)平臺(tái)是云存儲(chǔ)平 臺(tái)。
【文檔編號(hào)】G06F17/30GK104462124SQ201310430856
【公開(kāi)日】2015年3月25日 申請(qǐng)日期:2013年9月22日 優(yōu)先權(quán)日:2013年9月22日
【發(fā)明者】郁抒思, 姚良, 何葉 申請(qǐng)人:中國(guó)電信股份有限公司