一種冷熱數(shù)據(jù)分片挖掘存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種冷熱數(shù)據(jù)分片挖掘存儲(chǔ)方法,尤其涉及一種基于Mongodb數(shù)據(jù)庫(kù)的冷熱數(shù)據(jù)分片挖掘存儲(chǔ)方法,屬于計(jì)算機(jī)安全存儲(chǔ)領(lǐng)域。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)的快速發(fā)展,大數(shù)據(jù)的應(yīng)用已經(jīng)深入到各個(gè)領(lǐng)域,大數(shù)據(jù)發(fā)展逐漸從物理轉(zhuǎn)為虛擬,現(xiàn)正步入云時(shí)代,但是數(shù)據(jù)的價(jià)值并非全都一樣,也不是一成不變的,因此,對(duì)冷熱數(shù)據(jù)(不同級(jí)別的數(shù)據(jù))的有效處理和存儲(chǔ)愈發(fā)重要,同時(shí)也需要更好地對(duì)冷熱數(shù)據(jù)存儲(chǔ)有著更為智能的策略。
[0003]目前主流操作系統(tǒng)(如LINUX等),數(shù)據(jù)庫(kù)系統(tǒng)(如REDIS,M0NG0DB等)都有對(duì)冷熱數(shù)據(jù)進(jìn)行分離的策略和算法,大多數(shù)都是基于LRU (近期最少使用算法)的經(jīng)典算法,即節(jié)省利用容量有限的內(nèi)存為最多的進(jìn)程提供資源,但是當(dāng)熱數(shù)據(jù)變得很大時(shí),繼續(xù)使用該策略,就會(huì)消耗很大的系統(tǒng)資源,需要高昂成本,同時(shí)也影響系統(tǒng)性能,降低響應(yīng)速度,比如M0NG0DB,由于應(yīng)用數(shù)據(jù)量大,在啟動(dòng)時(shí)就占用了 83G的內(nèi)存,然后這其中的部分?jǐn)?shù)據(jù)(部分字段數(shù)據(jù))是可以分離出來(lái)的,它們相對(duì)而言屬于偏冷的數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0004]針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,本發(fā)明的目的在于提供一種更高效的冷熱數(shù)據(jù)分片挖掘存儲(chǔ)方法。本發(fā)明將由系統(tǒng)(如M0NG0DB)已經(jīng)分離了的數(shù)據(jù)進(jìn)行數(shù)據(jù)字段信息提純和再分離,然后再分片,將熱數(shù)據(jù)(價(jià)值最大的數(shù)據(jù))保存在等級(jí)最高的存儲(chǔ)資源上,以保證最高的性能、可用性和安全性。而對(duì)冷數(shù)據(jù)(不重要的數(shù)據(jù)),就放在代價(jià)較小的存儲(chǔ)資源上,這樣就可減輕主存的容量壓力,提升系統(tǒng)性能,提高應(yīng)用響應(yīng)的速度,節(jié)省數(shù)據(jù)存儲(chǔ)成本。
[0005]本發(fā)明改良了原先基于LRU算法的冷熱數(shù)據(jù)分離方法,數(shù)據(jù)分離顆粒度更小,將需要分離的數(shù)據(jù)提交給數(shù)據(jù)分離模塊,數(shù)據(jù)分離模塊將數(shù)據(jù)冷熱分離,然后將分離的冷熱數(shù)據(jù)提交到數(shù)據(jù)分片模塊,數(shù)據(jù)分片模塊將數(shù)據(jù)映射到對(duì)應(yīng)存儲(chǔ)器,然后進(jìn)行存儲(chǔ)。
[0006]本發(fā)明的技術(shù)方案為:
[0007]—種更高效的冷熱數(shù)據(jù)分片挖掘存儲(chǔ)方法,其步驟為:
[0008]I)從數(shù)據(jù)庫(kù)(比如MongoDb)中獲取待分離的數(shù)據(jù),并將其提交給數(shù)據(jù)分離模塊;
[0009]2)冷熱數(shù)據(jù)分離模塊對(duì)提交過(guò)來(lái)的數(shù)據(jù)進(jìn)行冷熱數(shù)據(jù)分離:
[0010]21)首先設(shè)置每個(gè)數(shù)據(jù)字段各自的熱度閥值;
[0011]22)計(jì)算每條數(shù)據(jù)字段的熱度值;用內(nèi)存數(shù)據(jù)庫(kù)如memcached記錄每個(gè)字段的訪問(wèn)量和訪問(wèn)開(kāi)始時(shí)間S,每訪問(wèn)一次,訪問(wèn)量累加一,然后在時(shí)刻E提取各個(gè)字段單位時(shí)間內(nèi)T (比如每15分鐘)的訪問(wèn)量Q,則熱度值P=Q* (E-S) /T ;
[0012]23)將數(shù)據(jù)的熱度和熱度閥值進(jìn)行比較;
[0013]24)將超過(guò)熱度閥值的數(shù)據(jù)放入熱數(shù)據(jù)區(qū),其余數(shù)據(jù)放入冷數(shù)據(jù)區(qū);
[0014]3)將多條記錄分離后的熱數(shù)據(jù)區(qū)和冷數(shù)據(jù)區(qū)的數(shù)據(jù)提交給數(shù)據(jù)分片模塊,數(shù)據(jù)分片模塊將冷熱數(shù)據(jù)分別映射至對(duì)應(yīng)的存儲(chǔ)器:
[0015]31)分片模塊通過(guò)HASH算法分別對(duì)每條記錄的熱數(shù)據(jù)和冷數(shù)據(jù)進(jìn)行散列,使其映射到對(duì)應(yīng)的存儲(chǔ)器,比如可用的HASH算法有取模,位偏移,字符串哈希等等;
[0016]4)將冷熱數(shù)據(jù)存儲(chǔ)到分片處理后對(duì)應(yīng)的存儲(chǔ)系統(tǒng)。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
[0018]本發(fā)明創(chuàng)造性的提出了熱度閥值和數(shù)據(jù)字段的概念,對(duì)數(shù)據(jù)用數(shù)據(jù)字段區(qū)分,減小了冷熱數(shù)據(jù)區(qū)分的顆粒度,提純了熱數(shù)據(jù),熱度閥值的調(diào)整,可以方便調(diào)整熱數(shù)據(jù)大小和存儲(chǔ)器的容量匹配,最大限度的利用了當(dāng)前可用資源。并通過(guò)分片加強(qiáng)分布式處理,提升了數(shù)據(jù)存儲(chǔ)容量,方便后期的擴(kuò)容和調(diào)整,既保證了數(shù)據(jù)的精確度,提高了系統(tǒng)的性能,又充分利用了存儲(chǔ)資源,節(jié)省了成本,整體方案的性能較現(xiàn)有的方案相比有較大的性能提升。
【附圖說(shuō)明】
[0019]圖1為本發(fā)明的系統(tǒng)結(jié)構(gòu)圖。
[0020]圖2為本發(fā)明的冷熱數(shù)據(jù)分片挖掘存儲(chǔ)流程圖。
【具體實(shí)施方式】
[0021]1.從數(shù)據(jù)庫(kù)Mongodb中提取序號(hào)為Ai, Bi的兩條數(shù)據(jù)記錄A,B,分別包含字段name,address。
[0022]2.冷熱數(shù)據(jù)分離模塊設(shè)置A,B數(shù)據(jù)各個(gè)字段的熱度閥值namea,address,, nameb,addressb。
[0023]用內(nèi)存數(shù)據(jù)庫(kù)(memcached)記錄每個(gè)字段的開(kāi)始訪問(wèn)時(shí)間
Saname,^aaddress? ^bname?
^baddress,
和訪問(wèn)量
Qaname,Qaaddress,Qbname,Qbaddress,
在時(shí)刻E取單位時(shí)間T (1800秒)根據(jù)公式P=Q* (E-S) /T 計(jì)算每個(gè)子段的熱度值 Paname,Paaddress? Pbname? Pbaddress°
[0〇24] 3.比較每個(gè)子段的熱度值Paname, Paaddress? Pbname ? PbaddreSS和對(duì)應(yīng)的熱度閥值namea,addressa, nameb, addressb的大小,將小于熱度閥值的數(shù)據(jù)Ai中的name和Bi中的address放入冷數(shù)據(jù)區(qū),將大于熱度閥值的數(shù)據(jù)Ai中的address和Bi中的name放入熱數(shù)據(jù)區(qū)。
[0025]4.通過(guò)哈希算法分別對(duì)每條記錄的熱數(shù)據(jù)和冷數(shù)據(jù)進(jìn)行散列,使其映射到對(duì)應(yīng)的N臺(tái)存儲(chǔ)服務(wù)器,根據(jù)每條數(shù)據(jù)記錄序號(hào)Ai, Bi和字段對(duì)應(yīng)的數(shù)據(jù)值Van.,Vaaddress, Vbname,Vbadtoss,通過(guò)SHA-1分別處理熱數(shù)據(jù)和冷數(shù)據(jù)計(jì)算散列值,然后取模散列至對(duì)應(yīng)的存儲(chǔ)服務(wù)器 I,I=SHAl (Waname) %N。
【主權(quán)項(xiàng)】
1.一種冷熱數(shù)據(jù)分片挖掘存儲(chǔ)方法,其步驟為: 1)從數(shù)據(jù)庫(kù)中獲取一組待分離的數(shù)據(jù)記錄,并將其提交給冷熱數(shù)據(jù)分離模塊; 2)對(duì)于每一數(shù)據(jù)記錄,冷熱數(shù)據(jù)分離模塊計(jì)算單位時(shí)間段內(nèi)該數(shù)據(jù)記錄中每一字段的熱度值P,如果該字段的熱度值大于該字段對(duì)應(yīng)的熱度閾值,則將該字段放入設(shè)定的熱數(shù)據(jù)區(qū),否則將該字段放入設(shè)定的冷數(shù)據(jù)區(qū); 3)將熱數(shù)據(jù)區(qū)和冷數(shù)據(jù)區(qū)的數(shù)據(jù)提交給數(shù)據(jù)分片模塊,數(shù)據(jù)分片模塊將熱數(shù)據(jù)區(qū)和冷數(shù)據(jù)區(qū)的數(shù)據(jù)分別映射至對(duì)應(yīng)的存儲(chǔ)器。
2.如權(quán)利要求1所述的方法,其特征在于所述冷熱數(shù)據(jù)分離模塊根據(jù)字段的訪問(wèn)量,計(jì)算每一字段的熱度閥值P。
3.如權(quán)利要求2所述的方法,其特征在于所述冷熱數(shù)據(jù)分離模塊初始化一條鏈表Li用于記錄同一數(shù)據(jù)記錄中各個(gè)字段的訪問(wèn)量,每出現(xiàn)一次,對(duì)應(yīng)的訪問(wèn)量加一。
4.如權(quán)利要求2或3所述的方法,其特征在于所述冷熱數(shù)據(jù)分離模塊通過(guò)公式P=Q*(E-S)/T計(jì)算每一字段的熱度值P ;其中,S為該字段的訪問(wèn)開(kāi)始時(shí)間,E為該字段的訪問(wèn)結(jié)束時(shí)間,Q為該字段從時(shí)刻S到時(shí)刻E的訪問(wèn)量,T為設(shè)定的單位時(shí)間長(zhǎng)度。
5.如權(quán)利要求1或2或3所述的方法,其特征在于所述數(shù)據(jù)分片模塊通過(guò)HASH算法分別對(duì)每條數(shù)據(jù)記錄的熱數(shù)據(jù)和冷數(shù)據(jù)進(jìn)行散列,使其映射到對(duì)應(yīng)的存儲(chǔ)器。
6.如權(quán)利要求5所述的方法,其特征在于所述HASH算法為取模HASH算法,或位偏移HASH算法,或字符串HASH算法。
7.如權(quán)利要求1所述的方法,其特征在于所述冷熱數(shù)據(jù)分離模塊根據(jù)系統(tǒng)性能和資源利用情況調(diào)整對(duì)字段的熱度閥值進(jìn)行調(diào)整。
【專利摘要】本發(fā)明公開(kāi)了一種冷熱數(shù)據(jù)分片挖掘存儲(chǔ)方法。本方法為:1)從數(shù)據(jù)庫(kù)中獲取一組待分離的數(shù)據(jù)記錄,并將其提交給冷熱數(shù)據(jù)分離模塊;2)對(duì)于每一數(shù)據(jù)記錄,冷熱數(shù)據(jù)分離模塊計(jì)算單位時(shí)間段內(nèi)該數(shù)據(jù)記錄中每一字段的熱度值P,如果該字段的熱度值大于該字段對(duì)應(yīng)的熱度閾值,則將該字段放入設(shè)定的熱數(shù)據(jù)區(qū),否則將該字段放入設(shè)定的冷數(shù)據(jù)區(qū);3)將熱數(shù)據(jù)區(qū)和冷數(shù)據(jù)區(qū)的數(shù)據(jù)提交給數(shù)據(jù)分片模塊,將熱數(shù)據(jù)區(qū)和冷數(shù)據(jù)區(qū)的數(shù)據(jù)分別映射至對(duì)應(yīng)的存儲(chǔ)器。本發(fā)明將熱數(shù)據(jù)保存在等級(jí)最高的存儲(chǔ)資源上,以保證最高的性能、可用性和安全性;而對(duì)冷數(shù)據(jù)(不重要的數(shù)據(jù))放在代價(jià)較小的存儲(chǔ)資源上,減輕主存的容量壓力,提升系統(tǒng)性能,節(jié)省數(shù)據(jù)存儲(chǔ)成本。
【IPC分類】G06F17-30
【公開(kāi)號(hào)】CN104731794
【申請(qǐng)?zhí)枴緾N201310705213
【發(fā)明人】解皇偉
【申請(qǐng)人】北京華易互動(dòng)科技有限公司
【公開(kāi)日】2015年6月24日
【申請(qǐng)日】2013年12月19日