本發(fā)明屬于空間數(shù)據(jù)存儲(chǔ)組織技術(shù)領(lǐng)域,特別是涉及一種考慮負(fù)載均衡與磁盤效率的空間數(shù)據(jù)存儲(chǔ)組織方法及系統(tǒng)。
背景技術(shù):
地理信息系統(tǒng)在城市規(guī)劃、環(huán)境監(jiān)測(cè)以及防災(zāi)減災(zāi)等領(lǐng)域的應(yīng)用也越來越普及,需要著重解決由于用戶的密集訪問所帶來的無限帶寬需求(infinitebandwidth)、無限容量需求(infinitecapacity)以及無限處理能力需求(infiniteprocessingcapability),分布式系統(tǒng)為海量空間數(shù)據(jù)提供存儲(chǔ)和訪問服務(wù)成為解決上述問題的有效途徑之一。目前傳統(tǒng)的網(wǎng)絡(luò)地理信息系統(tǒng),如nasaworldwind等,通常采用數(shù)據(jù)驅(qū)動(dòng)的空間數(shù)據(jù)存儲(chǔ)組織方法,其主要是利用數(shù)據(jù)本身的固有特性(位置、屬性)對(duì)數(shù)據(jù)進(jìn)行分布存儲(chǔ),該方法的一個(gè)顯著優(yōu)點(diǎn)是查找索引效率較高,但其也存在用戶訪問需求匹配度不夠、部分存儲(chǔ)節(jié)點(diǎn)熱度高、訪問服務(wù)排隊(duì)長、負(fù)載不均衡等問題。
在信息處理領(lǐng)域,針對(duì)數(shù)據(jù)的分布存儲(chǔ)等研究相對(duì)較多,相應(yīng)算法策略包括動(dòng)態(tài)布局策略、sp策略及pb策略、數(shù)據(jù)融合(合并)與數(shù)據(jù)分塊技術(shù)以及k-means聚類等[1~3]。其中動(dòng)態(tài)布局策略在每次數(shù)據(jù)訪問請(qǐng)求之后更新現(xiàn)有數(shù)據(jù)布局,以實(shí)時(shí)優(yōu)化數(shù)據(jù)布局;sp策略及pb策略通過最小化服務(wù)時(shí)間方差實(shí)現(xiàn)負(fù)載均衡;而k-means聚類則通過兩階段算法動(dòng)態(tài)部署數(shù)據(jù)集,使每個(gè)數(shù)據(jù)中心處理的計(jì)算數(shù)都非常接近。但這些算法大部分都是針對(duì)專門的應(yīng)用系統(tǒng),或者為了計(jì)算的負(fù)載均衡進(jìn)行設(shè)計(jì),或者其布局更新策略難以滿足“大數(shù)據(jù)”的應(yīng)用需求。
專門針對(duì)空間數(shù)據(jù)的組織策略則包括基于概率潛語義分析(plsa)[4]和基于特征匹配[5]的小文件合并策略,以及基于并發(fā)訪問的數(shù)據(jù)分布算法(apsa)[6]等,前兩者主要通過數(shù)據(jù)合并存儲(chǔ)和組織,實(shí)現(xiàn)數(shù)據(jù)從存儲(chǔ)節(jié)點(diǎn)的連續(xù)批量讀取,重點(diǎn)考慮的是磁盤i/o效率。后者則利用訪問相關(guān)性分布存儲(chǔ)和組織數(shù)據(jù),實(shí)現(xiàn)對(duì)數(shù)據(jù)并發(fā)訪問和系統(tǒng)的負(fù)載均衡,重點(diǎn)考慮的是網(wǎng)絡(luò)i/o效率,但上述算法策略都只考慮了空間數(shù)據(jù)存儲(chǔ)組織在某一個(gè)層面的局部要求,缺乏全局協(xié)同。
總之,現(xiàn)有的單純從提高地理信息系統(tǒng)并發(fā)能力的角度分布存儲(chǔ)空間數(shù)據(jù)的方法或通過合并存儲(chǔ)提高空間數(shù)據(jù)連續(xù)讀取效率的方法,都不能同時(shí)滿足地理信息系統(tǒng)負(fù)載均衡需求和高效磁盤i/o需求。
文中涉及如下參考文獻(xiàn):
[1]qinx,jiangh,manzanaresa,ruanx,yins.dynamicloadbalancingfori/o-intensiveapplicationsonclusters.acmtransactionsonstorage,2009,5(3):300–309;
[2]brinkmanna,efferts,scheidelerc.dynamicandredundantdataplacement.in:proceedingsofthe27thinternationalconferenceondistributedcomputingsystems(icdcs’07),2007,toronto,pp29–39;
[3]dongb,zhengqh,tianf,chaokm,mar,ananer.anoptimizedapproachforstoringandaccessingsmallfilesoncloudstorage.journalofnetworkandcomputerapplication,2012,35:1847–1862.
[4]王濤,姚士紅,徐正全,熊煉.云存儲(chǔ)中面向訪問任務(wù)的小文件合并與預(yù)取策略.武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2013,38(12):1504-1508.
[5]熊煉,徐正全,王濤,顧鑫.云環(huán)境下的時(shí)空數(shù)據(jù)小文件存儲(chǔ)策略.武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2014,39(10):1252-1256.
[6]pans,liy,xuz,chongy.distributedstoragealgorithmforgeospatialimagedatabasedondataaccesspatterns.plosone,2015,10(7):e0133029.doi:10.1371/journal.pone.0133029.
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種考慮負(fù)載均衡與磁盤效率的空間數(shù)據(jù)存儲(chǔ)組織方法及系統(tǒng)。
本發(fā)明思路為:
首先,按照分布式地理信息系統(tǒng)服務(wù)器數(shù)量長度,對(duì)空間數(shù)據(jù)的訪問日志信息進(jìn)行分段。然后,統(tǒng)計(jì)各子段內(nèi)空間數(shù)據(jù)訪問次數(shù),以計(jì)算空間數(shù)據(jù)相互間的平均訪問并發(fā)度。最后,按照平均訪問并發(fā)度將熱點(diǎn)空間數(shù)據(jù)分布存儲(chǔ)于分布式地理信息系統(tǒng)的不同服務(wù)器,以提高分布式地理信息系統(tǒng)的整體負(fù)載均衡性能。與此同時(shí),對(duì)各服務(wù)器中空間數(shù)據(jù),從空間數(shù)據(jù)的訪問日志信息中抽取屬于該服務(wù)器的子訪問日志信息,并依照子訪問日志信息計(jì)算空間數(shù)據(jù)的平均訪問連續(xù)度;根據(jù)平均訪問連續(xù)度、存儲(chǔ)效率、空間數(shù)據(jù)大小,計(jì)算連續(xù)存儲(chǔ)的空間數(shù)據(jù)數(shù)量,將每個(gè)服務(wù)器中的空間數(shù)據(jù)進(jìn)行連續(xù)存儲(chǔ)組織,以提高空間數(shù)據(jù)的服務(wù)器磁盤i/o效率。
本發(fā)明技術(shù)方案如下:
一、考慮負(fù)載均衡與磁盤效率的空間數(shù)據(jù)存儲(chǔ)組織方法,包括:
步驟1,空間數(shù)據(jù)文件的平均訪問并發(fā)度計(jì)算,本步驟進(jìn)一步包括:
1.1從分布式地理信息系統(tǒng)中獲得用戶對(duì)空間數(shù)據(jù)文件的訪問日志信息a=(a1,a2,…,am)和t=(t1,t2,…,tm),am和tm分別表示用戶第m次訪問的空間數(shù)據(jù)文件的標(biāo)識(shí)和訪問絕對(duì)時(shí)間,m=1,2,...m,m為用戶訪問的總次數(shù);
1.2記分布式地理信息系統(tǒng)中服務(wù)器數(shù)量為c,以c個(gè)元素為一組對(duì)a中元素順次劃分,獲得若干子段ak;
1.3統(tǒng)計(jì)各空間數(shù)據(jù)文件在各子段ak上的訪問次數(shù);
1.4對(duì)任意兩個(gè)空間數(shù)據(jù)文件,分別計(jì)算該兩個(gè)空間數(shù)據(jù)文件在各子段ak上的并發(fā)度,所有并發(fā)度的平均值即該兩個(gè)空間數(shù)據(jù)文件間的平均訪問并發(fā)度;
所述的并發(fā)度采用如下方法計(jì)算:記任意兩個(gè)空間數(shù)據(jù)文件為fn1和fn2,則fn1和fn2在子段ak上的并發(fā)度
步驟2,空間數(shù)據(jù)文件的多數(shù)據(jù)中心存儲(chǔ)分布,本步驟進(jìn)一步包括:
2.1將步驟1所得的平均訪問并發(fā)度構(gòu)建成平均訪問并發(fā)度矩陣ξ,ξ中第i行第j列的元素即第i個(gè)和第j個(gè)空間數(shù)據(jù)文件間的平均訪問并發(fā)度;
2.2從ξ中找到最大的平均訪問并發(fā)度ξmax,令ξ中主對(duì)角線元素值為ξmax;構(gòu)建與ξ大小相同的最大平均訪問并發(fā)度矩陣,其中所有元素值均為ξmax;最大平均訪問并發(fā)度矩陣減去ξ,得轉(zhuǎn)換后的平均訪問并發(fā)度矩陣ξ′;
2.3從ξ′中搜索各服務(wù)器的分布存儲(chǔ)模式,具體為:
2.3a重新排列ξ′中元素,使ξ′的度最小,將重新排列后的ξ′記為ξ′';
2.3b從ξ′'的第1行開始,計(jì)算當(dāng)前行x中非零元素長度lx,x表示當(dāng)前行的行號(hào);
2.3c以ξ′'當(dāng)前行x中第一個(gè)非零元素為頂點(diǎn),取大小為lx×lx的上三角矩陣ux;
2.3d遍歷當(dāng)前上三角矩陣ux中元素,找出最大元素,將該最大元素所對(duì)應(yīng)的兩個(gè)空間數(shù)據(jù)文件在第x個(gè)服務(wù)器上的分布存儲(chǔ)模式值pxij設(shè)為1,i和j為該最大元素在ξ′中的行號(hào)和列號(hào);然后,以該最大元素為頂點(diǎn),重新取大小為lx×lx的上三角矩陣ux,重復(fù)循環(huán)本步驟,直至找到qx個(gè)空間數(shù)據(jù)文件存儲(chǔ)于第x個(gè)服務(wù)器;循環(huán)終止即獲得存儲(chǔ)于第x個(gè)服務(wù)器的空間數(shù)據(jù)文件的分布存儲(chǔ)模式px=(pxij)n×n,qx表示第x個(gè)服務(wù)器中存儲(chǔ)的空間數(shù)據(jù)文件數(shù)量,該值根據(jù)存儲(chǔ)器存儲(chǔ)容量靈活設(shè)置;
2.3e根據(jù)分布存儲(chǔ)模式px=(pxij)n×n,從ξ′'中刪除存儲(chǔ)于第x個(gè)服務(wù)器的所有空間數(shù)據(jù)文件所對(duì)應(yīng)的行和列;
2.3f判斷是否找到c個(gè)分布存儲(chǔ)模式,若找到,結(jié)束,執(zhí)行步驟2.4;否則,令x=x+1,然后執(zhí)行步驟2.3b;
2.4根據(jù)分布存儲(chǔ)模式,將空間數(shù)據(jù)文件分布存儲(chǔ)到各服務(wù)器;
步驟3,空間數(shù)據(jù)文件的平均訪問連續(xù)度計(jì)算,本步驟進(jìn)一步包括:
3.1抽取各服務(wù)器存儲(chǔ)的空間數(shù)據(jù)文件的訪問日志信息ax和tx,記為子訪問日志信息;
對(duì)各服務(wù)器分別執(zhí)行:
3.2以h個(gè)元素為一組分別對(duì)該服務(wù)器的tx和ax中元素順次劃分,獲得若干子段txw和axw;h為用戶訪問空間數(shù)據(jù)文件時(shí)的瀏覽路徑深度,通過預(yù)測(cè)獲得;
3.3對(duì)存儲(chǔ)于該服務(wù)器的任意兩個(gè)空間數(shù)據(jù)文件,分別計(jì)算該兩個(gè)空間數(shù)據(jù)文件在各子段txw上的平均訪問時(shí)間差,所有子段txw上的平均訪問時(shí)間差的平均值即該兩個(gè)空間數(shù)據(jù)文件在該服務(wù)器上的平均訪問間隔距離;同時(shí),還分別計(jì)算該兩個(gè)空間數(shù)據(jù)文件在各子段axw上的并發(fā)度,所有并發(fā)度的平均值即該兩個(gè)空間數(shù)據(jù)文件在該服務(wù)器的平均訪問并發(fā)度;
3.4該兩個(gè)空間數(shù)據(jù)文件的平均訪問并發(fā)度和平均訪問間隔距離的比值,即平均訪問連續(xù)度;
步驟4,空間數(shù)據(jù)文件的連續(xù)存儲(chǔ)組織,本步驟進(jìn)一步包括:
4.1根據(jù)空間數(shù)據(jù)文件大小和高效磁盤i/o需求,計(jì)算要連續(xù)存儲(chǔ)在單個(gè)磁盤分片上的空間數(shù)據(jù)文件數(shù)量h0;
對(duì)各服務(wù)器分別執(zhí)行:
4.2初始化當(dāng)前平均訪問連續(xù)度序列,具體為:以服務(wù)器存儲(chǔ)的任意空間數(shù)據(jù)文件為基準(zhǔn),獲得基準(zhǔn)空間數(shù)據(jù)文件和服務(wù)器存儲(chǔ)的其他空間數(shù)據(jù)文件的平均訪問連續(xù)度序列,即初始化的當(dāng)前平均訪問連續(xù)度序列;
4.3更新當(dāng)前平均訪問連續(xù)度序列,具體為:將當(dāng)前平均訪問連續(xù)度序列中最大值對(duì)應(yīng)的空間數(shù)據(jù)文件序號(hào)記為nmax,以序號(hào)為nmax的空間數(shù)據(jù)文件為基準(zhǔn),重新獲得基準(zhǔn)空間數(shù)據(jù)文件和其他空間數(shù)據(jù)文件的平均訪問連續(xù)度序列;
4.4從當(dāng)前平均訪問連續(xù)度序列中選擇最大的(h-1)個(gè)元素,將該(h-1)個(gè)元素所對(duì)應(yīng)的空間數(shù)據(jù)文件和序號(hào)為nmax的空間數(shù)據(jù)文件連續(xù)存儲(chǔ)于服務(wù)器sx的磁盤上,然后執(zhí)行步驟4.5;
空間數(shù)據(jù)文件連續(xù)存儲(chǔ)于服務(wù)器sx的磁盤上,具體為:
按照與基準(zhǔn)空間數(shù)據(jù)文件的平均訪問連續(xù)度從大到小,對(duì)該(h-1)個(gè)元素所對(duì)應(yīng)的空間數(shù)據(jù)文件和序號(hào)為nmax的空間數(shù)據(jù)文件進(jìn)行排序,對(duì)排序后的空間數(shù)據(jù)文件以h0個(gè)為一組進(jìn)行分組,剩余不夠1組的空間數(shù)據(jù)文件不分組,將所獲得的各組空間數(shù)據(jù)文件連續(xù)存儲(chǔ)于服務(wù)器sx的不同磁盤分片上;
4.5將h個(gè)空間數(shù)據(jù)文件中,已連續(xù)存儲(chǔ)的空間數(shù)據(jù)文件的平均訪問連續(xù)度設(shè)置為0,返回步驟4.4繼續(xù)執(zhí)行,直至所有空間數(shù)據(jù)文件被連續(xù)存儲(chǔ)或者未連續(xù)存儲(chǔ)的空間數(shù)據(jù)文件數(shù)量小于h0,若未連續(xù)存儲(chǔ)的空間數(shù)據(jù)文件數(shù)量小于h0,將這些剩余的空間數(shù)據(jù)文件儲(chǔ)于同一磁盤分片。
子步驟1.2中,若a元素?cái)?shù)量不是c的整倍數(shù),丟棄a中排列最前面的部分元素,以使剩余元素?cái)?shù)量為c的整倍數(shù),之后再對(duì)a中元素進(jìn)行順次劃分。
子步驟2.4具體為:
對(duì)各服務(wù)器的分布存儲(chǔ)模式px=(pxij)n×n分別執(zhí)行:
從px=(pxij)n×n中找到qx行,且qx中每行均存在至少1個(gè)元素不為0;將所找到的qx行的行號(hào)作為標(biāo)識(shí),將標(biāo)識(shí)對(duì)應(yīng)的空間數(shù)據(jù)文件存儲(chǔ)到該服務(wù)器。
子步驟3.1具體為:
對(duì)各服務(wù)器sx分別執(zhí)行:
初始化服務(wù)器sx對(duì)應(yīng)的子訪問日志信息為ax=a=(a1,a2,…,am)和tx=t=(t1,t2,…,tm);
記服務(wù)器sx的分布存儲(chǔ)模式為px=(pxij)n×n,遍歷分布存儲(chǔ)模式px=(pxij)n×n的所有行,判斷當(dāng)前行是否存在非零元素,若不存在,將該行的行號(hào)作為目標(biāo)標(biāo)識(shí),將ax中和目標(biāo)標(biāo)識(shí)相同的元素刪除,同時(shí)刪除tx中對(duì)應(yīng)的元素;當(dāng)所有行遍歷完成,最后的ax和tx即服務(wù)器sx的子訪問日志信息。
子步驟3.3中,所述的平均訪問時(shí)間差采用如下方法獲得:
若兩個(gè)空間數(shù)據(jù)文件fn1和fn2在子段txw上同時(shí)出現(xiàn),將第β次出現(xiàn)的fn1和fn2作為一組,計(jì)算同組內(nèi)fn1和fn2在子段txw上所出現(xiàn)的絕對(duì)時(shí)間的差值,所有組的絕對(duì)時(shí)間的差值的平均值即fn1和fn2的平均訪問時(shí)間差;β=1,2,…b,b為fn1和fn2在子段txw上出現(xiàn)次數(shù)中的較小值;
若fn1和fn2在子段txw上未出現(xiàn)或未同時(shí)出現(xiàn),則fn1和fn2在子段txw上的平均訪問時(shí)間差設(shè)為1。
子步驟4.1中,需要連續(xù)存儲(chǔ)在單個(gè)磁盤分片上的空間數(shù)據(jù)文件數(shù)量
二、考慮負(fù)載均衡與磁盤效率的空間數(shù)據(jù)存儲(chǔ)組織系統(tǒng),包括:
(1)空間數(shù)據(jù)平均訪問并發(fā)度計(jì)算單元,用于基于空間數(shù)據(jù)文件同時(shí)被用戶訪問請(qǐng)求的次數(shù)統(tǒng)計(jì),計(jì)算空間數(shù)據(jù)文件的平均訪問并發(fā)度;
所述的空間數(shù)據(jù)平均訪問并發(fā)度計(jì)算單元進(jìn)一步包括:
訪問日志信息記錄模塊,用于記錄分布式地理信息系統(tǒng)中用戶對(duì)空間數(shù)據(jù)文件的訪問日志信息;
訪問日志信息分段模塊,用于根據(jù)分布式地理信息系統(tǒng)中服務(wù)器數(shù)量,將訪問日志信息分成多個(gè)子段;
訪問次數(shù)統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)各訪問日志信息子段中各空間數(shù)據(jù)的訪問次數(shù);
平均訪問并發(fā)度計(jì)算模塊,用于根據(jù)從各訪問日志信息子段統(tǒng)計(jì)得到的空間數(shù)據(jù)訪問次數(shù),計(jì)算空間數(shù)據(jù)文件的平均訪問并發(fā)度;
(2)空間數(shù)據(jù)多數(shù)據(jù)中心存儲(chǔ)分布單元,用于根據(jù)分布式地理信息系統(tǒng)負(fù)載均衡需求,按照空間數(shù)據(jù)文件的平均訪問并發(fā)度,將空間數(shù)據(jù)文件分布存儲(chǔ)到分布式地理信息系統(tǒng)的所有服務(wù)器;
所述的空間數(shù)據(jù)多數(shù)據(jù)中心存儲(chǔ)分布單元進(jìn)一步包括:
平均訪問并發(fā)度矩陣生成模塊,用于將空間數(shù)據(jù)文件的平均訪問并發(fā)度組織成平均訪問并發(fā)度矩陣;
平均訪問并發(fā)度矩陣變換模塊,用于將平均訪問并發(fā)度矩陣進(jìn)行最大最小轉(zhuǎn)換;
平均訪問并發(fā)度矩陣搜索模塊,用于從轉(zhuǎn)換后的平均訪問并發(fā)度矩陣搜索空間數(shù)據(jù)文件的多數(shù)據(jù)中心分布存儲(chǔ)模式;
多數(shù)據(jù)中心存儲(chǔ)分布模塊,用于利用多數(shù)據(jù)中心分布存儲(chǔ)模式,將空間數(shù)據(jù)文件分布存儲(chǔ)到分布式地理信息系統(tǒng)的所有服務(wù)器;
(3)平均訪問連續(xù)度計(jì)算單元,用于根據(jù)空間數(shù)據(jù)文件夾同時(shí)被用戶訪問的平均訪問并發(fā)度和平均訪問間隔距離,統(tǒng)計(jì)計(jì)算空間數(shù)據(jù)文件的平均訪問連續(xù)度;
所述的平均訪問連續(xù)度計(jì)算單元進(jìn)一步包括:
訪問日志抽取模塊,用于按照多數(shù)據(jù)中心分布存儲(chǔ)模式從訪問日志信息中抽取各服務(wù)器存儲(chǔ)空間數(shù)據(jù)文件的子訪問日志信息;
訪問間隔計(jì)算模塊,用于利用抽取的子訪問日志信息計(jì)算空間數(shù)據(jù)文件的平均訪問間隔距離;
平均訪問連續(xù)度計(jì)算模塊,用于利用平均訪問并發(fā)度和平均訪問間隔距離計(jì)算空間數(shù)據(jù)文件的平均訪問連續(xù)度;
(4)連續(xù)存儲(chǔ)組織單元,用于根據(jù)空間數(shù)據(jù)文件的平均訪問連續(xù)度,將分布式地理信息服務(wù)器中的空間數(shù)據(jù)文件進(jìn)行連續(xù)存儲(chǔ)組織;
所述的連續(xù)存儲(chǔ)組織單元進(jìn)一步包括:
連續(xù)存儲(chǔ)規(guī)模計(jì)算模塊,用于根據(jù)空間數(shù)據(jù)大小和高效磁盤i/o需求,計(jì)算需要連續(xù)存儲(chǔ)的空間數(shù)據(jù)文件數(shù)量;
連續(xù)度排序模塊,用于以任意空間數(shù)據(jù)文件為基準(zhǔn),根據(jù)空間數(shù)據(jù)文件的平均訪問連續(xù)度,對(duì)所有其它空間數(shù)據(jù)文件的連續(xù)度進(jìn)行排序;
連續(xù)存儲(chǔ)組織模塊,用于將基準(zhǔn)空間數(shù)據(jù)文件和按照空間數(shù)據(jù)文件連續(xù)存儲(chǔ)規(guī)模及按照平均訪問連續(xù)度高低選擇的其它空間數(shù)據(jù)文件一起連續(xù)存儲(chǔ)于分布地理信息系統(tǒng)服務(wù)器。
分布式地理信息系統(tǒng)中,為提高系統(tǒng)負(fù)載均衡性能,需要將被同時(shí)訪問的空間數(shù)據(jù)分布存儲(chǔ);為提高磁盤存儲(chǔ)效率,需要將被訪問的空間數(shù)據(jù)合并存儲(chǔ);這樣就導(dǎo)致用戶訪問服務(wù)的負(fù)載均衡要求和磁盤存儲(chǔ)服務(wù)的并行讀取要求之間的矛盾需求,單純考慮負(fù)載均衡或磁盤存儲(chǔ)效率,勢(shì)必?fù)p害另一方面的性能。本發(fā)明則可解決該問題,利用空間數(shù)據(jù)的并發(fā)度,將同時(shí)訪問的空間數(shù)據(jù)分布存儲(chǔ)的同時(shí),利用服務(wù)器內(nèi)部空間數(shù)據(jù)的連續(xù)度,將需要連續(xù)訪問的空間數(shù)據(jù)連續(xù)存儲(chǔ),以在滿足負(fù)載均衡要求的同時(shí),實(shí)現(xiàn)連續(xù)被訪問空間數(shù)據(jù)的有效批量讀取,保障了地理信息系統(tǒng)的存儲(chǔ)效率,具有較好的工程實(shí)踐性,適用于大規(guī)模分布式環(huán)境下地理信息系統(tǒng)。
本發(fā)明的有益效果為:
(1)本發(fā)明根據(jù)空間數(shù)據(jù)文件的并發(fā)度將同時(shí)被訪問的空間數(shù)據(jù)文件分布存儲(chǔ)在不同的服務(wù)器上,以實(shí)現(xiàn)熱點(diǎn)數(shù)據(jù)的并行訪問和服務(wù),提高系統(tǒng)整體的負(fù)載均衡率;利用存儲(chǔ)在相同服務(wù)器上的空間數(shù)據(jù)文件的連續(xù)度,將連續(xù)度高的空間數(shù)據(jù)文件連續(xù)存儲(chǔ)在服務(wù)器的磁盤空間內(nèi),以實(shí)現(xiàn)空間數(shù)據(jù)從磁盤空間的有效批量讀取,減少磁盤搜索和磁頭移動(dòng),提高了存儲(chǔ)系統(tǒng)的i/o效率。
(2)本項(xiàng)目受國家自然科學(xué)基金資助完成(基金號(hào):41671382,41271398)。
附圖說明
圖1是本發(fā)明系統(tǒng)的整體結(jié)構(gòu)示意圖;
圖2是本發(fā)明空間數(shù)據(jù)平均訪問并發(fā)度計(jì)算單元的功能模塊示意圖;
圖3是本發(fā)明空間數(shù)據(jù)多數(shù)據(jù)中心存儲(chǔ)分布單元的功能模塊示意圖;
圖4是本發(fā)明空間數(shù)據(jù)平均訪問連續(xù)度計(jì)算單元的功能模塊示意圖;
圖5是本發(fā)明空間數(shù)據(jù)連續(xù)存儲(chǔ)組織單元的功能模塊示意圖;
圖6是本發(fā)明方法的系統(tǒng)流程圖。
具體實(shí)施方式
分布式地理信息系統(tǒng)在面對(duì)大規(guī)模用戶訪問時(shí),由于磁盤的讀取速度較慢,又為了避免服務(wù)器單點(diǎn)實(shí)效,提高系統(tǒng)整體服務(wù)性能等,需要將同時(shí)被訪問的空間數(shù)據(jù)分布存儲(chǔ)在不同的服務(wù)器,以提高負(fù)載均衡性能;同時(shí),將連續(xù)訪問的空間數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的連續(xù)磁盤空間,以減少磁頭的搜索和移動(dòng),提高存儲(chǔ)性能。而綜合考慮地理信息系統(tǒng)的以上兩個(gè)方面的要求進(jìn)行空間數(shù)據(jù)進(jìn)行分布存儲(chǔ)組織,是滿足分布式地理信息系統(tǒng)大規(guī)模用戶訪問服務(wù)性能的有效途徑。
本發(fā)明設(shè)計(jì)了一種考慮負(fù)載均衡與磁盤效率的空間數(shù)據(jù)存儲(chǔ)組織方法,通過將平均訪問并發(fā)度高的數(shù)據(jù)分布存儲(chǔ)于不同服務(wù)器,以保證負(fù)載均衡性能。同時(shí),在同一個(gè)服務(wù)器內(nèi)部,將平均訪問連續(xù)度高的空間數(shù)據(jù),根據(jù)存儲(chǔ)效率進(jìn)行連續(xù)存儲(chǔ)組織,以減少磁頭移動(dòng)距離,提高存儲(chǔ)效率。該方法能同時(shí)滿足上層網(wǎng)絡(luò)i/o和底層磁盤i/o的矛盾需求,且能根據(jù)當(dāng)前分布式地理信息系統(tǒng)的運(yùn)行,自動(dòng)獲得所需要的訪問日志信息,從而實(shí)現(xiàn)根據(jù)數(shù)據(jù)屬性、用戶屬性和地理信息系統(tǒng)服務(wù)器屬性的動(dòng)態(tài)調(diào)整。
以下對(duì)本發(fā)明技術(shù)方案的具體實(shí)施提供詳細(xì)建議說明。
如圖1所示,本發(fā)明系統(tǒng)包括空間數(shù)據(jù)平均訪問并發(fā)度計(jì)算單元(100)、空間數(shù)據(jù)多數(shù)據(jù)中心存儲(chǔ)分布單元(200)、空間數(shù)據(jù)平均訪問連續(xù)度計(jì)算單元(300)和空間數(shù)據(jù)連續(xù)存儲(chǔ)組織單元(400)??臻g數(shù)據(jù)平均訪問并發(fā)度計(jì)算單元(100)用于基于空間數(shù)據(jù)文件同時(shí)被用戶訪問請(qǐng)求的次數(shù)統(tǒng)計(jì),計(jì)算空間數(shù)據(jù)文件的平均訪問并發(fā)度??臻g數(shù)據(jù)多數(shù)據(jù)中心存儲(chǔ)分布單元(200)用于根據(jù)分布式地理信息系統(tǒng)負(fù)載均衡需求,按照空間數(shù)據(jù)的平均訪問并發(fā)度,將空間數(shù)據(jù)均勻分布存儲(chǔ)到分布式地理信息的所有服務(wù)器中??臻g數(shù)據(jù)平均訪問連續(xù)度計(jì)算單元(300)用于根據(jù)空間數(shù)據(jù)同時(shí)被用戶訪問的平均訪問并發(fā)度和平均訪問間隔距離統(tǒng)計(jì),計(jì)算空間數(shù)據(jù)的平均訪問連續(xù)度??臻g數(shù)據(jù)連續(xù)存儲(chǔ)組織單元(400)用于根據(jù)空間數(shù)據(jù)的平均訪問連續(xù)度,將分布式地理信息服務(wù)器中的空間數(shù)據(jù)進(jìn)行連續(xù)存儲(chǔ)組織。
如圖2所示,空間數(shù)據(jù)平均訪問并發(fā)度計(jì)算單元(100)進(jìn)一步包括訪問日志信息記錄模塊(101)、訪問日志信息分段模塊(102)、訪問次數(shù)統(tǒng)計(jì)模塊(103)和平均訪問并發(fā)度計(jì)算模塊(104)。其中,訪問日志信息記錄模塊(101)用于記錄分布式地理信息系統(tǒng)中用戶對(duì)空間數(shù)據(jù)的訪問日志信息;訪問日志信息分段模塊(102)用于根據(jù)分布式地理信息系統(tǒng)中服務(wù)器的數(shù)量,將所記錄的空間數(shù)據(jù)的訪問日志信息分成多個(gè)子段;訪問次數(shù)統(tǒng)計(jì)模塊(103)用來統(tǒng)計(jì)各子段中各空間數(shù)據(jù)的訪問次數(shù);平均訪問并發(fā)度計(jì)算模塊(104)用來根據(jù)統(tǒng)計(jì)得到的各空間數(shù)據(jù)的訪問次數(shù),計(jì)算空間數(shù)據(jù)相互間的平均訪問并發(fā)度。
如圖3所示,空間數(shù)據(jù)多數(shù)據(jù)中心存儲(chǔ)分布單元(200)進(jìn)一步包括平均訪問并發(fā)度矩陣生成模塊(201)、平均訪問并發(fā)度矩陣變換模塊(202)、平均訪問并發(fā)度矩陣搜索模塊(203)和多數(shù)據(jù)中心存儲(chǔ)分布模塊(204)。其中,平均訪問并發(fā)度矩陣生成模塊(201)用來將平均訪問并發(fā)度組織成平均訪問并發(fā)度矩陣;平均訪問并發(fā)度矩陣變換模塊(202)用來將平均訪問并發(fā)度矩陣進(jìn)行最大最小轉(zhuǎn)換;平均訪問并發(fā)度矩陣搜索模塊(203)用來從轉(zhuǎn)換后的平均訪問并發(fā)度矩陣搜索多數(shù)據(jù)中心分布存儲(chǔ)模式;多數(shù)據(jù)中心存儲(chǔ)分布模塊(204)用來利用多數(shù)據(jù)中心空間數(shù)據(jù)分布存儲(chǔ)模式將空間數(shù)據(jù)分布式的分布存儲(chǔ)到地理信息系統(tǒng)的所有服務(wù)器。
如圖4所示,空間數(shù)據(jù)平均訪問連續(xù)度計(jì)算單元(300)進(jìn)一步包括訪問日志信息抽取模塊(301)、訪問間隔計(jì)算模塊(302)和平均訪問連續(xù)度計(jì)算模塊(303)。其中,訪問日志信息抽取模塊(301)用來按照多數(shù)據(jù)中心分布存儲(chǔ)模式,從訪問日志信息中抽取各服務(wù)器存儲(chǔ)的空間數(shù)據(jù)的子訪問日志信息;訪問間隔計(jì)算模塊(302)用來利用抽取的子訪問日志信息計(jì)算空間數(shù)據(jù)的平均訪問間隔距離;平均訪問連續(xù)度計(jì)算模塊(303)用來利用空間數(shù)據(jù)的平均訪問并發(fā)度和平均訪問間隔距離,計(jì)算空間數(shù)據(jù)的平均訪問連續(xù)度。
如圖5所示,空間數(shù)據(jù)連續(xù)存儲(chǔ)組織單元(400)進(jìn)一步包括連續(xù)存儲(chǔ)規(guī)模計(jì)算模塊(401)、連續(xù)度排序模塊(402)和連續(xù)存儲(chǔ)組織模塊(403)。其中,連續(xù)存儲(chǔ)規(guī)模計(jì)算模塊(401)用來根據(jù)空間數(shù)據(jù)大小和高效磁盤i/o需求,計(jì)算需要連續(xù)存儲(chǔ)的空間數(shù)據(jù)數(shù)量;連續(xù)度排序模塊(402)用來以任意空間數(shù)據(jù)為基準(zhǔn),根據(jù)平均訪問連續(xù)度對(duì)所有其它空間數(shù)據(jù)的連續(xù)度進(jìn)行排序;連續(xù)存儲(chǔ)組織模塊(403)用來將基準(zhǔn)空間數(shù)據(jù)文件和按照空間數(shù)據(jù)文件連續(xù)存儲(chǔ)規(guī)模及按照平均訪問連續(xù)度高低選擇的其它空間數(shù)據(jù)文件一起連續(xù)存儲(chǔ)于地理信息系統(tǒng)服務(wù)器中。
如圖6所示,本發(fā)明方法的具體實(shí)施過程的步驟如下。
(1)空間數(shù)據(jù)文件的平均訪問并發(fā)度計(jì)算。
本步驟進(jìn)一步包括:
①利用訪問日志信息記錄模塊(101),記錄并獲得分布式地理信息系統(tǒng)中用戶對(duì)空間數(shù)據(jù)的訪問日志信息。所述的訪問日志信息為按照用戶訪問時(shí)間順序記錄且包含對(duì)應(yīng)的空間數(shù)據(jù)文件索引。
設(shè)f={f1,f2,…,fn}為存儲(chǔ)的所有空間數(shù)據(jù)文件的集合,fn表示第n個(gè)空間數(shù)據(jù)文件,n為空間數(shù)據(jù)文件的標(biāo)識(shí),n=1,2,…n;n為空間數(shù)據(jù)文件的總數(shù)量。分布式地理信息系統(tǒng)按照時(shí)間順序記錄用戶訪問的空間數(shù)據(jù)文件的標(biāo)識(shí),并以a=(a1,a2,…,am)的形式保存在內(nèi)存中或以文件或數(shù)據(jù)庫的形式保存在存儲(chǔ)器中。其中,a中元素按照用戶訪問的實(shí)際時(shí)間順序排列;am表示用戶第m次訪問的空間數(shù)據(jù)文件的標(biāo)識(shí),即用戶第m次訪問的空間數(shù)據(jù)文件為fam,1≤am≤n;m表示用戶訪問的總次數(shù)。相應(yīng)的,記錄用戶每次訪問的絕對(duì)時(shí)間,并以t=(t1,t2,…,tm)的形式和a一起保存,t2表示用戶第m次訪問空間數(shù)據(jù)文件的絕對(duì)時(shí)間。a和t作為用戶訪問分布式地理信息系統(tǒng)的訪問日志信息。
②利用訪問日志分段模塊(102),根據(jù)分布式地理信息系統(tǒng)中服務(wù)器的數(shù)量,將所記錄的訪問日志信息劃分為多個(gè)子段。
設(shè)c是分布式地理信息系統(tǒng)中服務(wù)器總數(shù)。按照a中元素的順序,以c個(gè)元素為一組對(duì)a中元素進(jìn)行順次劃分,獲得若干子段a={a1,a2,…,ak},其中,ak={ak1,ak2,…,akc},ak表示第k個(gè)子段,k=1,2,…k,k為子段的總數(shù)量;akc∈[1,n],c=1,2,…c。若a元素?cái)?shù)量不是c的整倍數(shù),丟棄a中排列最前面的部分元素,以使剩余元素?cái)?shù)量為c的整倍數(shù),之后再對(duì)a中元素進(jìn)行分段。
參數(shù)c通過參數(shù)輸入獲得,參數(shù)輸入方式包括但不限于文件、用戶輸入、網(wǎng)絡(luò)發(fā)現(xiàn)等。
③利用訪問次數(shù)統(tǒng)計(jì)模塊(103)統(tǒng)計(jì)每個(gè)子段中每個(gè)空間數(shù)據(jù)文件的訪問次數(shù)。
對(duì)任意子段ak,若任意空間數(shù)據(jù)文件fn在該子段中出現(xiàn)的次數(shù)為rkn次,則rkn為空間數(shù)據(jù)文件fn在子段ak上的訪問次數(shù)。
④利用平均訪問并發(fā)度計(jì)算模塊(104),根據(jù)從每個(gè)子段統(tǒng)計(jì)得到的各空間數(shù)據(jù)文件的訪問次數(shù),計(jì)算所有空間數(shù)據(jù)相互間的平均訪問并發(fā)度。
對(duì)任意子段ak,空間數(shù)據(jù)文件fn1和fn2在該子段ak上的并發(fā)度ξk(n1,n2)為:
其中,rkn1和rkn2分別為空間數(shù)據(jù)文件fn1和fn2在子段ak上的訪問次數(shù);n1∈[1,n],n2∈[1,n],且n1≠n2。
則對(duì)所有子段,空間數(shù)據(jù)文件fn1和fn2相互間的平均訪問并發(fā)度ξ(n1,n2)為:
(2)空間數(shù)據(jù)文件的多數(shù)據(jù)中心存儲(chǔ)分布
通過空間數(shù)據(jù)多數(shù)據(jù)中心存儲(chǔ)分布單元(200),根據(jù)分布式地理信息系統(tǒng)負(fù)載均衡需求,按照空間數(shù)據(jù)的平均訪問并發(fā)度,將空間數(shù)據(jù)均勻分布存儲(chǔ)到所有服務(wù)器中。
本步驟進(jìn)一步包括:
①利用平均訪問并發(fā)度矩陣生成模塊(201),將空間數(shù)據(jù)文件的平均訪問并發(fā)度組織成平均訪問并發(fā)度矩陣。
將所有空間數(shù)據(jù)文件相互間的平均訪問并發(fā)度,按照式(3)組織成平均訪問并發(fā)度矩陣ξ:
其中,ξ(i,j)表示第i個(gè)和第j個(gè)空間數(shù)據(jù)文件間的平均訪問并發(fā)度。
②利用平均訪問并發(fā)度矩陣變換模塊(202),將平均訪問并發(fā)度矩陣進(jìn)行轉(zhuǎn)換。
從平均訪問并發(fā)度矩陣中找到最大的平均訪問并發(fā)度,記為ξmax;令平均訪問并發(fā)度矩陣中ξ(1,1)=ξ(2,2)=…=ξ(n,n)=ξmax,即令平均訪問并發(fā)度矩陣中主對(duì)角線元素值為ξmax。將ξmax與平均訪問并發(fā)度矩陣中每個(gè)元素均相減,得到轉(zhuǎn)換后的平均訪問并發(fā)度矩陣ξ′:
顯然,轉(zhuǎn)換后,平均訪問并發(fā)度越高的空間數(shù)據(jù)文件,其對(duì)應(yīng)在轉(zhuǎn)換后的平均訪問并發(fā)度矩陣中元素值越小。反之,平均訪問并發(fā)度越低的空間數(shù)據(jù)文件,其對(duì)應(yīng)在轉(zhuǎn)換后的平均訪問并發(fā)度矩陣中的元素值越大。
③利用平均訪問并發(fā)度矩陣搜索模塊(203),從轉(zhuǎn)換后的平均訪問并發(fā)度矩陣搜索多數(shù)據(jù)中心分布存儲(chǔ)模式。
負(fù)載均衡的目標(biāo)是實(shí)現(xiàn)每個(gè)服務(wù)器內(nèi)存儲(chǔ)的空間數(shù)據(jù)文件的平均訪問并發(fā)度最小,即從轉(zhuǎn)換后的平均訪問并發(fā)度矩陣ξ′中,找到qx行和qx列,且對(duì)應(yīng)行和列的元素值之和最大。qx為第x個(gè)服務(wù)器中存儲(chǔ)的空間數(shù)據(jù)文件數(shù)量,該值可根據(jù)存儲(chǔ)器存儲(chǔ)容量靈活設(shè)置。該目標(biāo)可轉(zhuǎn)換為從轉(zhuǎn)換后的平均訪問并發(fā)度矩陣ξ′中找到c個(gè)子矩陣,其行列元素之和最大。
本子步驟可采用現(xiàn)有的矩陣排列搜索法實(shí)現(xiàn),具體過程如下:
3.1對(duì)ξ′中元素重新排列,使得ξ′的度最小,以減少搜索次數(shù)。將重新排列后的ξ′記為ξ′',將空間數(shù)據(jù)文件的多數(shù)據(jù)中心分布存儲(chǔ)模式記數(shù)器初始化為0。
3.2從ξ′'第1行開始,計(jì)算當(dāng)前行x中非零元素長度,即當(dāng)前行中非零元素的數(shù)量,記為lx。
3.3以ξ′'中當(dāng)前行x中第一個(gè)非零元素為頂點(diǎn),取大小為lx×lx的上三角矩陣,記為ux。
3.4遍歷當(dāng)前上三角矩陣ux中元素,找出最大元素,將該最大元素所對(duì)應(yīng)的兩個(gè)空間數(shù)據(jù)文件在第x個(gè)服務(wù)器上的分布存儲(chǔ)模式值pxij設(shè)為1,i和j為該最大元素在ξ′中的行號(hào)和列號(hào);然后,以該最大元素為頂點(diǎn),重新取大小為lx×lx的上三角矩陣ux,重復(fù)循環(huán)本步驟,直至找到qx個(gè)空間數(shù)據(jù)文件存儲(chǔ)于第x個(gè)服務(wù)器;循環(huán)終止即獲得存儲(chǔ)于第x個(gè)服務(wù)器的qx個(gè)空間數(shù)據(jù)文件的分布存儲(chǔ)模式px=(pxij)n×n,pxij=1則表示ξ′中第i個(gè)和第j個(gè)空間數(shù)據(jù)文存儲(chǔ)于第x個(gè)服務(wù)器上。分布存儲(chǔ)模式px=(pxij)n×n中,不存儲(chǔ)于第x個(gè)服務(wù)器的空間數(shù)據(jù)文件,其對(duì)應(yīng)的分布存儲(chǔ)模式值缺省為0。
3.5根據(jù)所獲得的第x個(gè)服務(wù)器的分布存儲(chǔ)模式,從ξ′'中刪除存儲(chǔ)于第x個(gè)服務(wù)器的所有空間數(shù)據(jù)文件所對(duì)應(yīng)的行和列。
3.6多數(shù)據(jù)中心分布存儲(chǔ)模式記數(shù)器加1。
3.7判斷是否找到c個(gè)分布存儲(chǔ)模式,若找到,則結(jié)束搜索,執(zhí)行步驟3.8;否則,令x=x+1,返回步驟3.2。
3.8輸出所有服務(wù)器的分布存儲(chǔ)模式,即多數(shù)據(jù)中心分布存儲(chǔ)模式。
④利用多數(shù)據(jù)中心存儲(chǔ)分布模塊(204),根據(jù)獲得的多數(shù)據(jù)中心分布模式,將空間數(shù)據(jù)文件分布存儲(chǔ)到分布式地理信息系統(tǒng)的所有服務(wù)器中。
本步驟具體為:
根據(jù)空間數(shù)據(jù)文件的分布存儲(chǔ)模式px=(pxij)n×n,其中,1≤x≤c,從分布存儲(chǔ)模式中找到qx行,且每行存在至少1個(gè)元素不為0;
將所找到的qx行的行號(hào)作為標(biāo)識(shí),把標(biāo)識(shí)對(duì)應(yīng)的空間數(shù)據(jù)文件存儲(chǔ)到第x個(gè)服務(wù)器中;
循環(huán)遍歷處理所有空間數(shù)據(jù)文件的分布存儲(chǔ)模式,將空間數(shù)據(jù)文件分布存儲(chǔ)到分布式地理信息系統(tǒng)的所有服務(wù)器中。
(3)空間數(shù)據(jù)文件的平均訪問連續(xù)度計(jì)算
通過空間數(shù)據(jù)平均訪問連續(xù)度計(jì)算單元(300),根據(jù)平均訪問并發(fā)度和平均訪問間隔距離,計(jì)算空間數(shù)據(jù)的平均訪問連續(xù)度。
本步驟進(jìn)一步包括;
①利用訪問日志信息抽取模塊(301),按照多數(shù)據(jù)中心分布存儲(chǔ)模式,從訪問日志信息中抽取各服務(wù)器的子訪問日志信息。
將分布式地理信息系統(tǒng)中任意服務(wù)器記為sx,其分布存儲(chǔ)模式記為px=(pxij)n×n。初始化服務(wù)器sx對(duì)應(yīng)的子訪問日志信息為ax=a=(a1,a2,…,am)和tx=t=(t1,t2,…,tm)。
根據(jù)分布存儲(chǔ)模式px=(pxij)n×n,按照如下步驟遍歷px的所有行:
判斷當(dāng)前行是否存在非零元素,若不存在,將該行的行號(hào)作為目標(biāo)標(biāo)識(shí),將ax中和目標(biāo)標(biāo)識(shí)相同的元素刪除,同時(shí)刪除tx中對(duì)應(yīng)的元素。
當(dāng)所有行遍歷完成,輸出最終的ax和tx作為服務(wù)器sx的子訪問日志信息。
遍歷所有服務(wù)器,輸出所有服務(wù)器的子訪問日志信息。
②利用訪問間隔計(jì)算模塊(302),根據(jù)各服務(wù)器的子訪問日志信息,計(jì)算空間數(shù)據(jù)文件的平均訪問間隔距離。
對(duì)分布式地理信息系統(tǒng)中任意服務(wù)器sx,其對(duì)應(yīng)的子訪問日志信息為ax和tx。按照tx中元素順序,以h個(gè)元素為一組對(duì)tx中元素進(jìn)行順次劃分,獲得若干子段tx={tx1,tx2,…,txw},其中,txw表示第w個(gè)子段,txw={tw1,tw2,…,twh},w=1,2,…w,w為子段的總數(shù)量。若tx元素?cái)?shù)量不是h的整倍數(shù),丟棄tx中排列最前面的部分元素,以使剩余元素?cái)?shù)量為h的整倍數(shù),之后再對(duì)tx中元素進(jìn)行劃分分段。
考察任意子段txw,空間數(shù)據(jù)文件fn1和fn2在子段txw上的平均訪問時(shí)間差記為dxw(n1,n2),若空間數(shù)據(jù)文件fn1和fn2在子段txw上同時(shí)出現(xiàn),則dxw(n1,n2)通過兩者在txw上的絕對(duì)時(shí)間相減得到,否則設(shè)dxw(n1,n2)=1。由此,則空間數(shù)據(jù)文件fn1和fn2在服務(wù)器sx上的平均訪問間隔距離λx(n1,n2)為:
參數(shù)h為用戶訪問空間數(shù)據(jù)文件時(shí)的瀏覽路徑深度,即根據(jù)用戶當(dāng)前訪問狀態(tài),預(yù)測(cè)得到的用戶未來訪問路徑的最大步數(shù)。相關(guān)研究表明,h一般在5~10內(nèi)取值。本發(fā)明中,h通過參數(shù)輸入獲得,參數(shù)輸入方式包括但不限于文件、用戶輸入、函數(shù)參數(shù)等。
③利用平均訪問連續(xù)度計(jì)算模塊(303),根據(jù)平均訪問并發(fā)度和平均訪問間隔距離,計(jì)算空間數(shù)據(jù)的平均訪問連續(xù)度。
對(duì)分布式地理信息系統(tǒng)中任意服務(wù)器sx,其對(duì)應(yīng)的子訪問日志信息為ax和tx,計(jì)算空間數(shù)據(jù)文件fn1和fn2在服務(wù)器sx上的平均訪問并發(fā)度ξx(n1,n2):
計(jì)算ξx(n1,n2)時(shí),先按照ax中元素順序,以h個(gè)元素為一組對(duì)ax中元素進(jìn)行順次劃分,獲得若干子段ax={ax1,ax2,…,axw},若ax元素?cái)?shù)量不是h的整倍數(shù),丟棄ax中排列最前面的部分元素,以使剩余元素?cái)?shù)量為h的整倍數(shù),之后再對(duì)ax中元素進(jìn)行劃分分段。rwn1和rwn2分別為空間數(shù)據(jù)文件fn1和fn2在子段axw上的訪問次數(shù)。
則空間數(shù)據(jù)文件fn1和fn2在服務(wù)器sx上的平均訪問連續(xù)度γx(n1,n2)為:
(4)空間數(shù)據(jù)文件的連續(xù)存儲(chǔ)組織
通過空間數(shù)據(jù)連續(xù)存儲(chǔ)組織單元(400),根據(jù)空間數(shù)據(jù)文件的平均訪問連續(xù)度,將分布式地理信息服務(wù)器中空間數(shù)據(jù)進(jìn)行連續(xù)存儲(chǔ)組織。
本步驟具體為:
①利用連續(xù)存儲(chǔ)規(guī)模計(jì)算模塊(401),根據(jù)空間數(shù)據(jù)文件大小和高效磁盤i/o需求,計(jì)算需要連續(xù)存儲(chǔ)的空間數(shù)據(jù)文件數(shù)量。
單個(gè)空間數(shù)據(jù)文件大小fsize可以自動(dòng)檢測(cè)文件大小獲得。高效磁盤i/o需求指為減少磁盤讀取數(shù)據(jù)的移動(dòng)距離,并實(shí)現(xiàn)高效的磁盤空間利用,所采用的磁盤分片存儲(chǔ)空間大小記為dsize。磁盤分片存儲(chǔ)空間大小通過參數(shù)輸入,參數(shù)輸入方式包括但不限于文件、用戶輸入、函數(shù)參數(shù)等。
基于單個(gè)空間數(shù)據(jù)大小fsize和磁盤分片存儲(chǔ)空間大小dsize,計(jì)算單片可以需要連續(xù)存儲(chǔ)的空間數(shù)據(jù)文件數(shù)量
②利用連續(xù)度排序模塊(402),以任意空間數(shù)據(jù)文件為基準(zhǔn),根據(jù)基準(zhǔn)空間數(shù)據(jù)文件與其他空間數(shù)據(jù)文件的平均訪問連續(xù)度,對(duì)所有其他空間數(shù)據(jù)文件進(jìn)行排序。
對(duì)分布式地理信息系統(tǒng)中任意服務(wù)器sx,得到存儲(chǔ)在該服務(wù)器sx上的任意空間數(shù)據(jù)文件fn1和其它存儲(chǔ)在該服務(wù)器sx上的所有空間數(shù)據(jù)文件的平均訪問連續(xù)度γx(n1)為:
γx(n1)=(γx(n1,1),γx(n1,2),…,γx(n1,n))(8)
設(shè)γx(n1,n1)=0,按照從大到小的順序?qū)Ζ脁(n1)中元素重新排序,并輸出。同時(shí)記錄重新排列后的空間數(shù)據(jù)文件序號(hào)。
③利用連續(xù)存儲(chǔ)組織模塊(403),根據(jù)磁盤存儲(chǔ)容量,將基準(zhǔn)空間數(shù)據(jù)文件和按照連續(xù)度高低選擇的其它空間數(shù)據(jù)一起連續(xù)存儲(chǔ)于分布式地理信息系統(tǒng)服務(wù)器中。
對(duì)分布式地理信息系統(tǒng)中任意服務(wù)器sx,按照如下步驟執(zhí)行:
(a)從當(dāng)前γx(n1)中選擇一個(gè)最大值,n=1,2,…n,將該最大值對(duì)應(yīng)的空間數(shù)據(jù)文件序號(hào)記為nmax;
(b)以序號(hào)為nmax的空間數(shù)據(jù)文件為基準(zhǔn),重新獲得γx(n1),從γx(n1)中選擇前(h-1)個(gè)元素,將該(h-1)個(gè)元素對(duì)應(yīng)的空間數(shù)據(jù)文件和序號(hào)為nmax的空間數(shù)據(jù)文件順序存儲(chǔ)于服務(wù)器sx的磁盤上。具體的存儲(chǔ)方法為:按照當(dāng)前γx(n1)中順序,將獲得的h個(gè)空間數(shù)據(jù)文件以h0個(gè)為一組進(jìn)行分組,剩余不夠1組的空間數(shù)據(jù)文件不分組,將所獲得的各組空間數(shù)據(jù)文件連續(xù)存儲(chǔ)于服務(wù)器sx的不同磁盤分片上;
(c)將連續(xù)存儲(chǔ)的空間數(shù)據(jù)文件所對(duì)應(yīng)的所有平均訪問連續(xù)度設(shè)為0,返回步驟(a),繼續(xù)執(zhí)行直至當(dāng)前γx(n1)中所有元素均為0或其中不為0的元素?cái)?shù)量小于h0,若當(dāng)前γx(n1)中不為0的元素?cái)?shù)量小于h0,將這些不為0元素所對(duì)應(yīng)的空間數(shù)據(jù)文件存儲(chǔ)于同一磁盤分片。