欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法

文檔序號:6522913閱讀:709來源:國知局
一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法
【專利摘要】本發(fā)明涉及一種分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法,特別涉及一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法,屬于數(shù)據(jù)庫領域。該方法通過擬合數(shù)據(jù)的產(chǎn)生概率,根據(jù)此概率計算具有最大溢出概率的存儲節(jié)點,在此節(jié)點的數(shù)據(jù)存儲區(qū)間上添加新的存儲節(jié)點以分擔負載,在不管數(shù)據(jù)是否為均勻分布以及存儲節(jié)點的負載能力是否相同的情況下,都可以提高系統(tǒng)的利用率,維持負載均衡,以及減少節(jié)點之間數(shù)據(jù)移動次數(shù)。
【專利說明】一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法
【技術領域】
[0001]本發(fā)明涉及一種分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法,特別涉及一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法,屬于數(shù)據(jù)庫領域。
【背景技術】
[0002]隨著計算機科學和互聯(lián)網(wǎng)技術的發(fā)展,信息檢索系統(tǒng)的數(shù)據(jù)量變得越來越大,為了保證其擴展性,可靠性,高性能和高適用性,通常使用分布式存儲系統(tǒng)來保存海量的數(shù)據(jù)。
[0003]擴容是分布式存儲系統(tǒng)的重要問題之一,目前通常使用分區(qū)、分片或分布式哈希表等技術。在處理非均勻分布的數(shù)據(jù)時,這些方法不能保證較高的系統(tǒng)利用率、較好的負載均衡性能以及較小的節(jié)點之間數(shù)據(jù)移動次數(shù)。因此,研究更好的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法,是目前分布式數(shù)據(jù)庫領域研究的一個重要問題。
[0004]分布式數(shù)據(jù)存儲系統(tǒng)可分為分布式數(shù)據(jù)庫和對等網(wǎng)絡(P2P)數(shù)據(jù)存儲系統(tǒng)。分布式數(shù)據(jù)庫一般使用分區(qū)技術進行擴容,分區(qū)技術通常建立一個從分區(qū)鍵到存儲節(jié)點的映射,根據(jù)分區(qū)鍵對數(shù)據(jù)進行定位,確定其所在的存儲節(jié)點,并通過修改映射關系來進行擴容。其中分區(qū)鍵通常采用數(shù)據(jù)某個特征值或其哈希值。
[0005]分布式數(shù)據(jù)庫的擴容也可以采用分片技術,一般包括垂直劃分,以及基于關鍵字、哈希值、時間、區(qū)間、服務、映射目錄的水平劃分方法的分片。其中垂直分區(qū)是將數(shù)據(jù)庫中的表的不同列劃分到不同的服務器上,一般將和某些指定特征相關的數(shù)據(jù)劃分在相同的服務器上。而基于關鍵字、哈希值、時間、區(qū)間、服務、映射目錄等方法的水平劃分分片技術是建立一個這些特征到存儲節(jié)點的映射,根據(jù)這些特征的特征值對數(shù)據(jù)庫中的表進行劃分以及對數(shù)據(jù)進行定位。
[0006]P2P數(shù)據(jù)存儲系統(tǒng)的存儲以及擴容方法通常使用分布式哈希表技術,其中比較典型的如 1n Stoica 根據(jù) DavidKarger 在《Consistent hashing and randomtrees:Distributed caching protocols for relieving hot spots on theWorld Wide Web》中的一致性哈希方法所提出的Chord協(xié)議和PetarMaymounkov在《Kademlia:Apeer-to-peer information system based on the xor metric》中提出Kademlia協(xié)議和使用此協(xié)議的分布式存儲系統(tǒng),簡稱Kad網(wǎng)絡。
[0007]一致性哈希方法定義一個標志符區(qū)間,這個區(qū)間首尾相連形成一個環(huán),對每個節(jié)點生成一個位于此區(qū)間的標志符,根據(jù)此標志符將此節(jié)點映射到區(qū)間環(huán)上,對每個文件生成一個位于同樣區(qū)間的標志符,將此標志符映射到區(qū)間環(huán)上,找到第一個標志符大于此文件標志符的節(jié)點,作為此文件的存儲位置。
[0008]當添加新節(jié)點時,對此節(jié)點生成標志符,映射到區(qū)間環(huán)上。向大于其標志符和小于其標志符的若干個節(jié)點發(fā)送自身的信息,即可更新Chord網(wǎng)絡的節(jié)點索引,完成了新節(jié)點的添加過程。
[0009]Kad網(wǎng)絡中每個節(jié)點使用特定信息的哈希值或隨機生成一個160位的ID作為標志符。所有節(jié)點被組織成一個二叉樹結(jié)構(gòu),每個節(jié)點位于此二叉樹的葉子節(jié)點上,每個節(jié)點的位置都由其標志符的最短前綴確定。當添加新的節(jié)點時,新的節(jié)點首先為自己生成一個標志符,根據(jù)此標志符確定其在二叉樹索引中的位置,并向其他節(jié)點發(fā)送自己的標志符和其他信息,同時獲取Kad網(wǎng)絡其他節(jié)點的信息,這樣就將此節(jié)點插入到索引二叉樹中,同時也更新了整個Kad網(wǎng)絡的節(jié)點索引和完成了新節(jié)點的插入過程。
[0010]Kad網(wǎng)絡存儲的數(shù)據(jù)為文件,對每個文件的內(nèi)容通過哈希函數(shù)生成160位的哈希值作為此文件的標志,在Kad網(wǎng)絡中每個存儲節(jié)點的標志符中找出若干個與文件標志符最接近的節(jié)點,將文件存儲在這些存儲節(jié)點上。
[0011]在使用分區(qū)和分片等方法對數(shù)據(jù)進行劃分時,都沒有考慮數(shù)據(jù)的分布情況,或者沒有根據(jù)數(shù)據(jù)分布的實時變化對存儲節(jié)點和數(shù)據(jù)的對應關系進行調(diào)整,因此不能總是取得滿意的負載均衡效果。特別是在系統(tǒng)擴容時,需要在節(jié)點之間移動大量的數(shù)據(jù),這會嚴重影響系統(tǒng)的數(shù)據(jù)查詢功能。
[0012]而分布式哈希表方法只是將節(jié)點的哈希值和數(shù)據(jù)關鍵字的哈希值簡單地對應起來,并沒有考慮到數(shù)據(jù)的分布情況和存儲節(jié)點的負載能力,一般在存儲節(jié)點數(shù)量較大以及數(shù)據(jù)分布較為均勻時,系統(tǒng)表現(xiàn)較好,如果數(shù)據(jù)不是均勻分布,節(jié)點性能不一致,則會導致數(shù)據(jù)分布不合理,影響系統(tǒng)的負載均衡性。
[0013]因此,如何根據(jù)數(shù)據(jù)的分布情況對分布式數(shù)據(jù)庫進行擴容,提高系統(tǒng)的利用率,維持系統(tǒng)中每個存儲節(jié)點的負載均衡,同時減少節(jié)點之間的數(shù)據(jù)移動次數(shù),是目前分布式數(shù)據(jù)庫領域的一個很有研究價值的課題。

【發(fā)明內(nèi)容】

[0014]本發(fā)明的目的是針對目前分布式存儲系統(tǒng)擴容方法中存在的負載均衡不佳,利用率不高,節(jié)點之間數(shù)據(jù)移動次數(shù)較為頻繁等問題,而提出一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法。
[0015]本發(fā)明的主要內(nèi)容為:首先對存儲系統(tǒng)進行初始化,然后順序存儲數(shù)據(jù)集里面的數(shù)據(jù),在存儲數(shù)據(jù)的過程中對存儲歷史進行保存,在存儲數(shù)據(jù)的過程中需要添加存儲節(jié)點時,使用本文提出的方法添加存儲節(jié)點;之后交替進行存儲數(shù)據(jù)、保存存儲歷史的操作以及添加存儲節(jié)點的操作,直到所有數(shù)據(jù)都存儲完畢。
[0016]本發(fā)明是通過以下技術方案實現(xiàn)的。
[0017]一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法,包括3個操作:A、系統(tǒng)初始化、存儲數(shù)據(jù)并保存數(shù)據(jù)存儲歷史;C、添加存儲節(jié)點。具體過程為:
[0018] A、系統(tǒng)初始化;
[0019]具體為:
[0020]步驟Al:選擇一個哈希函數(shù),此哈希函數(shù)可以根據(jù)數(shù)據(jù)的某個特征計算其哈希值將數(shù)據(jù)映射到區(qū)間(a,b]上,其中a,b為整數(shù),a〈b。這樣可以將每個數(shù)據(jù)用標志符k來表示,k位于標志符區(qū)間(a,b]上,整個數(shù)據(jù)集合可表示為一個標志符集合K,Κ={^,..Αω},數(shù)據(jù)h的數(shù)量為Si。
[0021]分布式存儲系統(tǒng)包含若干個保存數(shù)據(jù)的存儲節(jié)點,將每個數(shù)據(jù)存儲節(jié)點用一個標志符η來表示,整個存儲節(jié)點集合可表示為一個標志符集合N,N= In1,...nd},存儲節(jié)點的標志符η也位于標志符區(qū)間(a,b]上。如果存儲節(jié)點標識符按升序排列為Ii1,...nd,規(guī)定標志符k位于區(qū)間(?+?]中的數(shù)據(jù)會被存儲在上,稱的存儲區(qū)間為Ov1, n』。r^.的負載Ij定義為目前r^_上存儲的數(shù)據(jù)的數(shù)量,Cj為r^_的最大可以承受的負載,或稱為r^_的容量。
[0022]L定義為系統(tǒng)負載,即系統(tǒng)中數(shù)據(jù)的總數(shù),可知:
[0023]L = Σψ=ο Si = Σ;=ο nJ⑴
[0024]定義在系統(tǒng)負載為L時Ici的產(chǎn)生概率函數(shù)為:
[0025]Pi=P (ki; L) (2)
[0026]可知,
[0027]Si=LXp(^1L) (3)
[0028]L = Σ|=οL X p(/q,L)(4)
[0029]對于存儲節(jié)點η」上,在系統(tǒng)總負載為L時,
[0030]Cj = lfiy(._i)+1 L X PikilV)(5)
[0031]步驟A2:構(gòu)建存儲節(jié)點的索引。存儲節(jié)點的查詢索引使用二叉樹結(jié)構(gòu),其中葉子節(jié)點保存存儲節(jié)點的信息(如容量、目前負載、IP,端口等位置信息,等等),非葉子節(jié)點存儲其左子樹的葉子節(jié)點可以存儲的數(shù)據(jù)標志符的最大值。
[0032]經(jīng)過步驟Al至步驟A2的操作,完成存儲系統(tǒng)初始化的操作。
[0033]B、存儲數(shù)據(jù)并保存數(shù)據(jù)存儲歷史;
[0034]具體為:
[0035]步驟B1:查詢數(shù)據(jù)所在存儲節(jié)點位置,詳細過程為:根據(jù)數(shù)據(jù)的標志符從根節(jié)點開始查詢,如果目前查詢的節(jié)點不是葉子節(jié)點的話,判斷所要查詢的標志符是否大于非葉子節(jié)點中的值,如果是則繼續(xù)查詢其右子樹,否則繼續(xù)查詢其左子樹。直到所訪問的是葉子節(jié)點時停止查詢,返回此節(jié)點。
[0036]步驟B2:添加數(shù)據(jù)。將數(shù)據(jù)存儲在步驟BI所返回的節(jié)點上。
[0037]步驟B3:記錄添加歷史。每次添加數(shù)據(jù)時記錄系統(tǒng)負載Lz和每個數(shù)據(jù)的數(shù)量Siz,具體定義如下:如果系統(tǒng)添加數(shù)據(jù)的次數(shù)為q,那么在每一次添加數(shù)據(jù)時,系統(tǒng)負載為Lz, z e [1,q],此時每一個數(shù)據(jù)k” i e [l,m]時會對應一個數(shù)據(jù)量siz, i e [l,m],z e [1,q],即siz是指在第z次添加數(shù)據(jù)時Ici的數(shù)量。
[0038]經(jīng)過步驟BI至步驟B3的操作,完成存儲數(shù)據(jù)并記錄各種參數(shù)的操作。
[0039]C、添加存儲節(jié)點。
[0040]具體為:
[0041]步驟Cl:擬合數(shù)據(jù)產(chǎn)生概率。根據(jù)步驟B3所得到的數(shù)據(jù)存儲歷史,根據(jù)(6)可計算出每次添加數(shù)據(jù)時的P (ki; L),即Piz。
[0042]piz=piz/Lz, z e [I, q](6)
[0043]再使用曲線回歸的方法來擬合數(shù)據(jù)產(chǎn)生概率P (ki; L),定義:
[0044]
【權(quán)利要求】
1.一種基于數(shù)據(jù)分布的分布式數(shù)據(jù)存儲系統(tǒng)的擴容方法,其特征在于,包括3個操作:A、系統(tǒng)初始化;B、存儲數(shù)據(jù)并保存數(shù)據(jù)存儲歷史;C、添加存儲節(jié)點;具體過程為: A、系統(tǒng)初始化; 具體為: 步驟Al:選擇一個哈希函數(shù),此哈希函數(shù)可以根據(jù)數(shù)據(jù)的某個特征計算其哈希值將數(shù)據(jù)映射到區(qū)間(a,b]上,其中a,b為整數(shù),a<b;這樣可以將每個數(shù)據(jù)用標志符k來表示,k位于標志符區(qū)間(a,b]上,整個數(shù)據(jù)集合可表示為一個標志符集合K,K=數(shù)據(jù)ki的數(shù)量為Si ; 分布式存儲系統(tǒng)包含若干個保存數(shù)據(jù)的存儲節(jié)點,將每個數(shù)據(jù)存儲節(jié)點用一個標志符η來表示,整個存儲節(jié)點集合可表示為一個標志符集合N,N=In1,...nd},存儲節(jié)點的標志符η也位于標志符區(qū)間(a,b]上;如果存儲節(jié)點標識符按升序排列為η”...nd,規(guī)定標志符k位于區(qū)間Ov1, Iij]中的數(shù)據(jù)會被存儲在r^_上,稱r^_的存儲區(qū)間為O^1, Iij] ;nj的負載Ij定義為目前上存儲的數(shù)據(jù)的數(shù)量,Cj為的最大可以承受的負載,或稱為的容量; L定義為系統(tǒng)負載,即系統(tǒng)中數(shù)據(jù)的總數(shù),可知:
【文檔編號】G06F17/30GK103810244SQ201310661131
【公開日】2014年5月21日 申請日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】牛振東, 束博 申請人:北京理工大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
固原市| 和田县| 施秉县| 两当县| 页游| 巴楚县| 铁岭市| 石首市| 黎城县| 蒙阴县| 化隆| 东明县| 龙陵县| 苏尼特右旗| 什邡市| 丰城市| 沙河市| 昌都县| 揭西县| 龙井市| 绿春县| 文安县| 晴隆县| 古浪县| 从化市| 西乡县| 北宁市| 县级市| 高邑县| 隆化县| 顺义区| 乐亭县| 平原县| 三原县| 新巴尔虎左旗| 兰西县| 安西县| 察隅县| 衡山县| 康平县| 彭阳县|