本發(fā)明一種多元大數(shù)據(jù)存儲方法,涉及數(shù)據(jù)存儲領(lǐng)域。
背景技術(shù):
1、現(xiàn)有的大數(shù)據(jù)存儲方法存在以下不足:
2、操作復雜:現(xiàn)有的大數(shù)據(jù)存儲方法,大多涉及本地存儲,需要根據(jù)本地服務(wù)器的剩余存儲大小進行人為調(diào)控,對專業(yè)人員的需求量高,存在一定的硬件或軟件依賴。
3、數(shù)據(jù)安全和訪問延遲:現(xiàn)有的大數(shù)據(jù)存儲方法在進行分布式存儲的過程中,數(shù)據(jù)分布存儲節(jié)點的劃分邏輯簡單、節(jié)點數(shù)量較少,導致數(shù)據(jù)容易被竊取和轉(zhuǎn)移,不利于數(shù)據(jù)的長期存儲,同時過多的節(jié)點,還會導致數(shù)據(jù)訪問時存在一定的延遲。
4、數(shù)據(jù)一致性:現(xiàn)有的大數(shù)據(jù)存儲方法不能確保數(shù)據(jù)在不同節(jié)點間數(shù)據(jù)傳輸?shù)囊恢滦裕枰獜碗s的數(shù)據(jù)同步和協(xié)調(diào)機制。
技術(shù)實現(xiàn)思路
1、針對現(xiàn)有技術(shù)存在的不足,本發(fā)明目的是提供一種多元大數(shù)據(jù)存儲方法,旨在解決數(shù)據(jù)存儲效率低的問題。
2、為了實現(xiàn)上述目的,本發(fā)明是通過如下的技術(shù)方案來實現(xiàn):一種多元大數(shù)據(jù)存儲方法包括:
3、步驟s1:獲取待存儲數(shù)據(jù)的用戶id號,獲取每個用戶id號對應(yīng)的待存儲數(shù)據(jù)的數(shù)量;獲取每個待存儲數(shù)據(jù)對應(yīng)的數(shù)據(jù)大小、訪問次數(shù)和修改次數(shù),得到分配參數(shù);根據(jù)分配參數(shù),將待存儲數(shù)據(jù)分為熱數(shù)據(jù)、讀溫數(shù)據(jù)、寫溫數(shù)據(jù)和冷數(shù)據(jù);
4、步驟s2:獲取本地服務(wù)器的數(shù)量,獲取每臺服務(wù)器的剩余內(nèi)存大小、網(wǎng)絡(luò)帶寬以及cpu主頻,得到服務(wù)器參數(shù);
5、根據(jù)服務(wù)器參數(shù)為熱數(shù)據(jù)分配服務(wù)器,將熱數(shù)據(jù)存儲在本地服務(wù)器中,判斷本地服務(wù)器是否能存儲全部的熱數(shù)據(jù);
6、若能,則將全部熱數(shù)據(jù)和一部分寫溫數(shù)據(jù)進行加密并存儲在本地服務(wù)器中,將另一部分寫溫數(shù)據(jù)作為寫余數(shù)據(jù);
7、若不能,則對部分熱數(shù)據(jù)進行加密并存儲在本地服務(wù)器中,將另一部分熱數(shù)據(jù)作為熱余數(shù)據(jù);
8、步驟s3:匯總熱余數(shù)據(jù)、寫余數(shù)據(jù)和讀溫數(shù)據(jù),作為未存儲數(shù)據(jù);在云數(shù)據(jù)平臺中創(chuàng)建2個空間,得到空間a和空間b;在空間a中存儲未存儲數(shù)據(jù),在空間b中存儲未存儲數(shù)據(jù)的索引,向本地服務(wù)器返回空間b的訪問接口,并用用戶id號對訪問接口的接口號進行加密;
9、對冷數(shù)據(jù)進行加密和分割,并構(gòu)建merkle樹;根據(jù)merkle樹的節(jié)點結(jié)構(gòu),將冷數(shù)據(jù)存儲在區(qū)塊鏈中;
10、步驟s4:持續(xù)獲取待存儲數(shù)據(jù),并更新本地服務(wù)器和云服務(wù)器中存儲的待存儲數(shù)據(jù)。
11、進一步地,所述步驟s1的具體步驟如下:
12、步驟s11:統(tǒng)計用戶id號的數(shù)量,記作so;
13、步驟s12:將第1個用戶id號對應(yīng)的待存儲數(shù)據(jù)分為熱數(shù)據(jù)、讀溫數(shù)據(jù)、寫溫數(shù)據(jù)和冷數(shù)據(jù);
14、步驟s13:處理第2至第so個用戶id號對應(yīng)的待存儲數(shù)據(jù)分為熱數(shù)據(jù)、讀溫數(shù)據(jù)、寫溫數(shù)據(jù)和冷數(shù)據(jù),進入步驟s2。
15、進一步地,所述步驟s12的具體步驟如下:
16、步驟s121:將第1個用戶id號對應(yīng)的待存儲數(shù)據(jù),作為待分類數(shù)據(jù);統(tǒng)計待分類數(shù)據(jù)的數(shù)量,記作fn;
17、獲取每個待分類數(shù)據(jù)的大小,記作b1、b2~bfn;
18、其中,b1表示第1個待分類數(shù)據(jù)的大??;b2表示第2個待分類數(shù)據(jù)的大小;以此類推,bfn表示第fn個待分類數(shù)據(jù)的大?。?/p>
19、步驟s122:獲取待分類數(shù)據(jù)的訪問次數(shù)和修改次數(shù);
20、匯總第1個~第fn個待分類數(shù)據(jù)的訪問次數(shù)和修改次數(shù),分別記作r1、r2~rfn和w1、w2~wfn;
21、其中,r1和w1,分別表示第1個待分類數(shù)據(jù)的訪問次數(shù)和修改次數(shù);r2和w2,分別表示第2個待分類數(shù)據(jù)的訪問次數(shù)和修改次數(shù);以此類推,rfn和wfn,分別表示第fn個待分類數(shù)據(jù)的訪問次數(shù)和修改次數(shù);
22、步驟s123:匯總步驟s121~步驟s122得到的數(shù)據(jù),作為分配參數(shù);根據(jù)分配參數(shù),將待分類數(shù)據(jù)分為熱數(shù)據(jù)、溫數(shù)據(jù)和冷數(shù)據(jù);
23、步驟s124:計算r1~rfn的平均值,記作ar;計算w1~wfn的平均值,記作aw;計算b1~bfn的平均值,記作ab;
24、提取r1~rfn中的最大值記作rmax,最小值記作rmin;
25、提取w1~wfn中的最大值記作wmax,最小值記作wmin;
26、定義關(guān)系式1:(ri+wi)×bi≥(ar×aw)1/2×ab;其中,i為正整數(shù),i的取值范圍為:1~fn;ri表示第i個待分類數(shù)據(jù)的訪問次數(shù),wi表示第i個待分類數(shù)據(jù)的修改次數(shù);bi表示第i個待分類數(shù)據(jù)的大?。?/p>
27、步驟s125:將r1~rfn和w1~wfn,代入關(guān)系式1中;
28、匯總不滿足關(guān)系式1的待分類數(shù)據(jù),作為冷數(shù)據(jù);統(tǒng)計冷數(shù)據(jù)的個數(shù),記作cmn;
29、匯總滿足關(guān)系式1的待分類數(shù)據(jù),作為非冷數(shù)據(jù)。
30、進一步地,所述步驟s125的后續(xù)步驟如下:
31、步驟s126:定義關(guān)系式2:(rj+rmin)>2×ar;
32、定義關(guān)系式3:(wj+wmin)>2×aw;
33、其中,j為正整數(shù),j的取值范圍:1~(fn-cmn);wj表示第j個非冷數(shù)據(jù)的訪問次數(shù);rj表示第j個非冷數(shù)據(jù)的修改次數(shù);
34、將非冷數(shù)據(jù)對應(yīng)的訪問次數(shù)和修改次數(shù),代入關(guān)系式2和關(guān)系式3中;
35、匯總同時滿足關(guān)系式2和關(guān)系式3的非冷數(shù)據(jù),作為熱數(shù)據(jù);統(tǒng)計熱數(shù)據(jù)的個數(shù),記作wmn;
36、匯總只滿足關(guān)系式2的非冷數(shù)據(jù),作為數(shù)據(jù)a;統(tǒng)計數(shù)據(jù)a的個數(shù),記作nn;
37、匯總只滿足關(guān)系式3的非冷數(shù)據(jù),作為數(shù)據(jù)b;統(tǒng)計數(shù)據(jù)b的個數(shù),記作ny;
38、步驟s127:定義關(guān)系式4:(wp+wmax)>2×aw;
39、定義關(guān)系式5:(rq+rmax)>2×ar;
40、其中,p為正整數(shù),p的取值范圍:1~nn;wp表示第p個數(shù)據(jù)a的修改次數(shù);
41、q為正整數(shù),q的取值范圍:1~ny;rq表示第q個數(shù)據(jù)b的訪問次數(shù);
42、步驟s128:將數(shù)據(jù)a對應(yīng)的修改次數(shù)代入關(guān)系式4中,將數(shù)據(jù)b對應(yīng)的訪問次數(shù)代入關(guān)系式5中;
43、匯總滿足關(guān)系式4的數(shù)據(jù)a作為讀溫數(shù)據(jù),不滿足關(guān)系式4的數(shù)據(jù)a作為寫溫數(shù)據(jù),
44、匯總滿足關(guān)系式5的數(shù)據(jù)b作為寫溫數(shù)據(jù),不滿足關(guān)系式5的數(shù)據(jù)b作為讀溫數(shù)據(jù);
45、統(tǒng)計讀溫數(shù)據(jù)的數(shù)量記作smn,統(tǒng)計寫溫數(shù)據(jù)的數(shù)量記作snn。
46、進一步地,所述步驟s2的具體步驟如下:
47、步驟s21:獲取本地服務(wù)器的數(shù)量,記作se;
48、獲取每臺本地服務(wù)器對應(yīng)的剩余內(nèi)存大小,記作fm1、fm2~fmse;
49、網(wǎng)絡(luò)帶寬,記作ba1、ba2~base;
50、cpu主頻,記作df1、df2~dfse;
51、其中,fm1、ba1和df1,分別表示第1個本地服務(wù)器對應(yīng)的剩余內(nèi)存大小、網(wǎng)絡(luò)帶寬和cpu主頻;fm2、ba2和df2,分別表示第2個本地服務(wù)器對應(yīng)的剩余內(nèi)存大小、網(wǎng)絡(luò)帶寬和cpu主頻;以此類推,fmse、base和dfse,分別表示第se個本地服務(wù)器對應(yīng)的剩余內(nèi)存大小、網(wǎng)絡(luò)帶寬和cpu主頻;
52、匯總fm1~fmse、ba1~base以及df1~dfse,作為服務(wù)器參數(shù);
53、步驟s22:計算第1個本地服務(wù)器的性能參數(shù),記作pp(1),pp(1)的計算式如下:
54、pp(1)=(ba1×df1)1/2×fm1;
55、計算第2個本地服務(wù)器的性能參數(shù),記作pp(2),pp(2)的計算式如下:
56、pp(2)=(ba2×df2)1/2×fm2;
57、以此類推,計算第se個本地服務(wù)器的性能參數(shù),記作pp(se),pp(se)的計算式如下:
58、pp(se)=(base×dfse)1/2×fmse;
59、步驟s23:按pp(1)~pp(se)降序的順序排列本地服務(wù)器,得到服務(wù)器序列;
60、計算fm1~fmse的和,記作afm;
61、匯總第1至第so個用戶id號對應(yīng)的熱數(shù)據(jù)的總大小,記作ab1、ab2~abso;
62、其中,ab1表示第1個用戶id號對應(yīng)的熱數(shù)據(jù)的總大小;
63、ab2表示第2個用戶id號對應(yīng)的熱數(shù)據(jù)的總大??;
64、以此類推,abse表示第so個用戶id號對應(yīng)的熱數(shù)據(jù)的總大小。
65、進一步地,所述步驟s23的后續(xù)步驟如下:
66、步驟s24:計算ab1~abso的和,記作abb;判斷afm與abb的大小;
67、若afm>abb,則利用ras算法對第1至第so個用戶id號對應(yīng)的熱數(shù)據(jù)進行加密,并將熱數(shù)據(jù)存儲到本地服務(wù)器中,進入步驟s25;
68、若afm≤abb,則利用ras算法對一部分熱數(shù)據(jù)進行加密,并根據(jù)服務(wù)器序列,將一部分熱數(shù)據(jù)存儲到本地服務(wù)器中;將另一部分熱數(shù)據(jù)作為熱余數(shù)據(jù),進入步驟s26;
69、步驟s25:將第1個用戶id號對應(yīng)的熱數(shù)據(jù)作為待加密熱數(shù)據(jù);利用ras算法對待加密熱數(shù)據(jù)進行加密;
70、將全部加密熱數(shù)據(jù)和部分寫溫數(shù)據(jù)存入本地服務(wù)器中,將另一部分寫溫數(shù)據(jù)作為寫余數(shù)據(jù);
71、步驟s26:定義關(guān)系式22:;其中,q為正整數(shù),q的取值范圍為:2~eo;abi表示第i個用戶id號對應(yīng)的熱數(shù)據(jù)總大小;ab(1-q)表示第1至第q個用戶id號對應(yīng)的熱數(shù)據(jù)總大小的累加和;
72、將ab1~abso代入關(guān)系式22中,找到首個不滿足關(guān)系式22的用戶id號,記作bso;
73、重復將全部加密熱數(shù)據(jù)存入本地服務(wù)器的相同步驟,將第1至第bso個寫溫數(shù)據(jù)存入本地服務(wù)器中;將第(bso+1)至第so個用戶id號對應(yīng)的熱數(shù)據(jù)作為熱余數(shù)據(jù),進入步驟s3。
74、進一步地,所述步驟s25的具體步驟如下:
75、步驟s251:使用哈希算法處理第1個用戶id號,得到第1個用戶id號的哈希值,記作hn;
76、步驟s252:使用mersenne?twister算法,隨機生成兩個正素數(shù),記作pr1和pe2;
77、pr1和pe2滿足以下條件:
78、{lim[(pr1+pe2)/hn]→1}∩(pr1+pe2)min;
79、步驟s253:計算hn的歐拉數(shù),記作φ(hn),φ(hn)=(pr1-1)×(pr2-1);
80、隨機生成一個小于φ(hn)的整數(shù)e,使得gcd(e,φ(hn))=1(即e與φ(hn)互質(zhì)),e為公鑰;其中,gcd表示最大公約數(shù);
81、計算e關(guān)于φ(hn)的模逆元d,d=e(φ(hn)-2),d為私鑰;
82、步驟s254:使用公鑰e對待加密熱數(shù)據(jù)進行加密,得到加密熱數(shù)據(jù)集1;
83、步驟s255:重復對第1個用戶id號熱數(shù)據(jù)進行加密的相同步驟,對第2至第os個用戶id號對應(yīng)的熱數(shù)據(jù)進行加密,得到加密熱數(shù)據(jù)集2至加密熱數(shù)據(jù)集os;
84、步驟s256:計算加密熱數(shù)據(jù)集1至加密熱數(shù)據(jù)集os對應(yīng)的數(shù)據(jù)大小,記作bj1、bj2~bjos;其中,bj1表示加密熱數(shù)據(jù)集1中數(shù)據(jù)大小的和;bj2表示加密熱數(shù)據(jù)集2中數(shù)據(jù)大小的和;以此類推,bjos表示加密熱數(shù)據(jù)集os中數(shù)據(jù)大小的和;
85、將加密熱數(shù)據(jù)集1至加密熱數(shù)據(jù)集os按bj1~bjos降序排列,得到待存儲序列a;
86、將待存儲序列a中對應(yīng)的加密熱數(shù)據(jù)集,按服務(wù)器序列的順序依次存入本地服務(wù)器中;
87、步驟s257:匯總第1至第so個用戶id號對應(yīng)的寫溫數(shù)據(jù)的總大小,記作bb1、bb2~bbso;
88、其中,bb1表示第1個用戶id號對應(yīng)的寫溫數(shù)據(jù)的總大?。?/p>
89、bb2表示第2個用戶id號對應(yīng)的寫溫數(shù)據(jù)的總大小;
90、以此類推,bbse表示第so個用戶id號對應(yīng)的寫溫數(shù)據(jù)的總大?。?/p>
91、定義關(guān)系式21:;其中,p為正整數(shù),p的取值范圍為:2~eo;bbi表示第i個用戶id號對應(yīng)的寫溫數(shù)據(jù)總大小;bb(1-p)表示第1至第p個用戶id號對應(yīng)的寫溫數(shù)據(jù)總大小的累加和;
92、步驟s258:將bb1~bbso代入關(guān)系式21中,找到首個不滿足關(guān)系式21的用戶id號,記作aso;
93、重復步驟s251~步驟s256,將第1至第aso個寫溫數(shù)據(jù)存入本地服務(wù)器中;將第(aso+1)至第so個用戶id號對應(yīng)的寫溫數(shù)據(jù)作為寫余數(shù)據(jù)。
94、進一步地,所述步驟s3的具體步驟如下:
95、步驟s31:匯總熱余數(shù)據(jù)、寫余數(shù)據(jù)和讀溫數(shù)據(jù),作為未存儲數(shù)據(jù);
96、在云數(shù)據(jù)平臺中創(chuàng)建2個空間,得到空間a和空間b;將讀溫數(shù)據(jù)存入云數(shù)據(jù)平臺中;
97、步驟s32:重復將讀溫數(shù)據(jù)存入云數(shù)據(jù)平臺中的相同步驟,將熱余數(shù)據(jù)和寫余數(shù)據(jù)存入云數(shù)據(jù)平臺中;
98、步驟s33:對冷數(shù)據(jù)進行去中心化加密和數(shù)據(jù)分割,并構(gòu)建merkle樹;根據(jù)merkle樹的節(jié)點結(jié)構(gòu),將冷數(shù)據(jù)存儲在區(qū)塊鏈中,并向本地服務(wù)器提供區(qū)塊鏈的訪問接口。
99、進一步地,所述步驟s31的具體步驟如下:
100、步驟s311:獲取每臺本地服務(wù)器的網(wǎng)絡(luò)帶寬,記作ba1、ba2~base;se表示本地服務(wù)器的個數(shù);
101、提取的最大值記作bam,最小值記作bal,眾數(shù)記作baz;
102、定義關(guān)系式31:(lim(bai/bam))→1;
103、關(guān)系式32:(lim(bai/bal))→1;
104、關(guān)系式33:(lim(bai/baz))→1;
105、其中,i為正整數(shù),i的取值范圍為:1~se;bai表示第i臺每臺本地服務(wù)器的網(wǎng)絡(luò)帶寬;
106、將ba1~base代入關(guān)系式31~33中,統(tǒng)計滿足關(guān)系式31的個數(shù),記作baa;滿足關(guān)系式32的個數(shù),記作bab;滿足關(guān)系式33的個數(shù),記作bac;
107、步驟s312:計算最大值的占比系數(shù),記作a1,a1=baa/se;最小值的占比系數(shù),記作a2,a2=bab/se;眾數(shù)的占比系數(shù),記作a3,a3=bac/se;
108、計算ba1~base的平均值,記作aba;
109、將本地服務(wù)器的加權(quán)帶寬,記作qba;判斷a3與0.5的大小,確定qba的值;
110、若qba<0.5,則qba的計算式如下:
111、;
112、若qba≥0.5,則qba的值為baz;
113、步驟s313:將第1個用戶id號,記作目標id;將第1個用戶id號對應(yīng)的讀溫數(shù)據(jù),記作目標數(shù)據(jù);
114、根據(jù)qba將目標數(shù)據(jù)存入空間a中,并在空間b中存入目標數(shù)據(jù)對應(yīng)的索引;
115、獲取目標id的長度,記作sl;
116、設(shè)sl的平方根為sr,對sl進行連續(xù)平方根運算,直至sr的結(jié)果在區(qū)間(0,10)內(nèi),sr向上取整;
117、步驟s314:將目標數(shù)據(jù)分為sr份單元數(shù)據(jù);
118、在空間a中隨機選擇一個存儲空間為空的地址,作為目標地址1;將第1份單元數(shù)據(jù)存入目標地址1對應(yīng)的空間中;
119、在空間b中創(chuàng)建一個鏈表結(jié)構(gòu),記作鏈l;將目標地址1的地址值存入鏈l中的第1個節(jié)點;第1個節(jié)點的前驅(qū)為null;
120、步驟s315:將目標地址1的地址值,記作adi(1);
121、判斷空間a中地址值為(adi(1)±y×2sr)的存儲空間是否為空;
122、若不為空,則將地址值為(adi(1)±y×2sr)的存儲空間地址,作為目標地址2,將第2份單元數(shù)據(jù)存入目標地址2對應(yīng)的空間中;并將目標地址2對應(yīng)的地址值存入鏈l中的第2個節(jié)點中,第1個節(jié)點的后繼為:目標地址2對應(yīng)的地址值,第2個節(jié)點的前驅(qū)為:adi(1);
123、若為空,則將y自增1,繼續(xù)在空間a中查找存儲空間為空的地址,作為目標地址2;
124、其中,y表示激增系數(shù),y為自然數(shù),y的初始值為1。
125、進一步地,所述步驟s315的后續(xù)步驟如下:
126、步驟s316:將目標地址2的地址值,記作adi(2);
127、判斷空間a中地址值為(adi(2)±y×2sr)的存儲空間是否為空;
128、若不為空,則將地址值為(adi(2)±y×2sr)的存儲空間地址,作為目標地址3,將第3份單元數(shù)據(jù)存入目標地址3對應(yīng)的空間中;并將目標地址3對應(yīng)的地址值存入鏈l中的第3個節(jié)點中,第2個節(jié)點的后繼為:目標地址3對應(yīng)的地址值,第3個節(jié)點的前驅(qū)為:adi(2);
129、若為空,則將y自增1,繼續(xù)在空間a中查找存儲空間為空的地址,作為目標地址3;
130、步驟s317:重復步驟s315~步驟s316,將第4至第sr份單元數(shù)據(jù)存入空間a中,鏈l中的第sr個節(jié)點的前驅(qū)為:空間a中存儲第(sr-1)份單元數(shù)據(jù)的地址值,第sr個節(jié)點的后繼為:null;
131、步驟s318:向本地服務(wù)器返回空間b的訪問接口,以目標id為密鑰用des加密算法對訪問接口的接口號進行加密;
132、確定第1至第sr份單元數(shù)據(jù)間的數(shù)據(jù)發(fā)送速率;
133、步驟s3181:將第1份單元數(shù)據(jù)向本地服務(wù)器發(fā)送數(shù)據(jù)的數(shù)據(jù)發(fā)送速率設(shè)置為:qba;
134、獲取云數(shù)據(jù)平臺的最快數(shù)據(jù)發(fā)送速率,記作dtv1;最慢數(shù)據(jù)發(fā)送速率,記作dtv2;
135、計算云數(shù)據(jù)平臺的單位數(shù)據(jù)發(fā)送速率變化量,記作δdtv,δdtv的計算式如下:
136、δdtv=(dtv1-dtv2)1/sr;
137、步驟s3182:設(shè)第i份單元數(shù)據(jù)在空間a中的存儲地址值為adi(i),其中,i為正整數(shù),y的取值范圍為:i~sr;
138、設(shè)第i份單元數(shù)據(jù)向本地服務(wù)器發(fā)送數(shù)據(jù)的數(shù)據(jù)發(fā)送速率為:dtv(i),dtv(i)的計算式如下:
139、;dtv(i)的最大值為dtv1。
140、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
141、高效性與可擴展性:本發(fā)明采用分布式存儲架構(gòu)能夠高效處理大規(guī)模數(shù)據(jù),提高數(shù)據(jù)的存取效率;同時本發(fā)明支持動態(tài)擴展存儲容量和計算資源,適應(yīng)數(shù)據(jù)量的快速增長,無需停機即可增加新的存儲節(jié)點。
142、靈活性:本發(fā)明能夠支持多用戶的數(shù)據(jù)存儲,在數(shù)據(jù)存儲的過程中根據(jù)用戶對數(shù)據(jù)的使用習慣,對數(shù)據(jù)進行劃分,并用不同的存儲方式存儲數(shù)據(jù),既保證了數(shù)據(jù)安全,又不影響用戶日常使用。
143、數(shù)據(jù)一致性與完整性:本發(fā)明利用同步機制管理存儲在云平臺的數(shù)據(jù),確保數(shù)據(jù)在不同存儲節(jié)點間的一致性,避免因數(shù)據(jù)不一致導致的錯誤決策。