劉張榕
(福建林業職業技術學院 信息工程系,福建 南平 353000)
數據庫種類可以按照有效性,分為靜態數據庫、動態數據庫和實時數據庫3種,在檢索數據庫中的數據時,大多是從靜態數據庫中挖掘數據。但數據庫的實時性,又使數據庫處于一種動態變化中,不斷在數據庫中積累新的數據,此時,采用挖掘方法挖掘到的靜態數據庫數據,則會因為數據庫數據的更新,出現知識失效問題[1-2]。所以,需要研究動態數據庫數據挖掘方法。
目前,國內外對動態數據庫挖掘也有許多研究,文獻[3]提出了多域分布式數據庫的電能質量擾動事件記錄關聯規則挖掘,采用移動時間窗技術實現擾動數據預處理,然后在考慮數據庫更新的情況下,提出一種分布式協同算法,該算法通過交換各數據庫間的局部頻繁項目集,實現擾動數據關聯模式分布式挖掘。文獻[4]設計了基于聚類優化的大型網絡數據庫挖掘系統,該搭建數據采集所需的傳感器節點結構,選擇CC3200作為主控芯片,在原有的電路中引入射頻通信電路,實現數據的無線傳輸。在此基礎上,對數據庫中數據進行預處理,利用優化后的聚類算法和軟件程序實現數據挖掘,至此系統設計完成。
針對上述存在問題,本文提出基于大數據集的動態數據庫關聯挖掘研究。
在動態數據庫中,會存在歷史數據和新增數據兩種,因此,此次研究動態數據庫關聯挖掘方法,將選擇靜態挖掘與動態挖掘相結合的方式,先挖掘動態數據庫中的歷史數據,再挖掘動態數據庫中的更新數據。
在大數據背景下,采用大數據集中的分布式計算,分布式存儲動態數據庫中的歷史數據,需要將動態數據庫中的原始大數據分割成多個子數據集,大量的小文件則需要合并為一個子數據集,從而提高數據存儲效率。此時,需要采用并行化技術統計方式,優化每一個子數據集中的數據量,并將數據的空間與時間復雜度記為O,單節點中分片數據量記為D,則數據的分布式存儲過程,如圖1所示。

圖1 數據分布式存儲過程
從圖1中可以看出,采用分割的方式將合并的小文件和分割的子數據集存儲至各個節點中,通過并行化統計,判斷各個節點數據的支持度,從而去除不滿足支持度的數據項,得到第一序列數據。完成數據分布式存儲。
根據圖1得到的第一序列數據,需要進行數據修剪重排分組和計算量預估與均衡化分組。
(1)數據修剪重排分組。對于動態數據庫中的原始數據,按照圖1得到的第一序列數據,進行修剪排序,即刪除原始數據中不滿足支持度閾值的數據項,修剪后的數據依照支持度的降序排列,其數據修剪重排分組具體過程如圖2所示。

圖2 數據修剪重排分組過程
圖中,〈w,p,v,m,s,n〉表示數據集中的一條數據[5]。將〈w,p,v,m,s,n〉數據按照第一序列數據進行修剪重排分組后,得到的數據為〈p,w,n,s,v〉,再按照數據的后綴進行迭代分割,采用Key-Value的形式表達,則得到{v,〈p,w,n,s〉},{s,〈p,w,n〉},{n,〈p,w〉},{w,〈p〉}。此時,得到的修剪重排分組后的數據需要再次存儲至圖1所示的節點中,進行計算量預估與均衡化分組處理。
(2)計算量預估與均衡化分組。計算圖2得到的數據,需要根據第一序列數據中,存在的以e為后綴的數據位置,計算量數據C(e)的估值,如式(1)。
C(e)=log(P(e,F))
(1)
式中,F表示第一序列數據;P表示以e為后綴的數據位置,與第一序列數據之間的關聯。此時,需要按照式(1)得到的關聯值,將第一序列數據按照估值的降序順序排列,其排列式如式(2)。
(2)
式中,Ti表示第i條原始數據;n表示包含e的數據總數目;P(e,Ti)表示第i條原始數據Ti中,所含有e的數據位置[6]。綜合式(1)、式(2),即完成數據分組。此時,需要將計算量估值按照計算均衡化分配來進行分組歸類。對此,假設需要計算的數據節點數為N,依據計算節點數N建立分組記錄表gN,需要將每一計算節點都與分組數據相對應。則均衡化分組流程如下。
(1)將計算量數據C(e)的估值中的前N個節點數據保存至分組記錄表gN中;(2)計算gN的各個節點數據集之和,作為gN的計算估值;(3)確定計算量數據C(e)的估值中存在的多余節點數據數目;(4)將多余節點數據依次加入gN中,并計算估值最小列表;(5)更新gN對應的計算估值。綜合上述內容,即完成數據分組處理。
更新動態數據庫數據時,需要構建數據樹,并將數據樹分為多個子數據樹和總數據樹,更新匯聚在節點的第一序列數據,為此設定如下更新動態數據庫新增數據步驟。
1)更新動態數據庫新增數據特征。假設動態數據庫新增數據為d,其d中新增數據頻繁項集記錄為Qd,其頻次數據記錄為Qd={T1,T3},動態數據庫歷史數據為D,歷史數據頻繁項集記錄為QD,其頻次數據為QD={T1,T2}。將歷史數據和新增數據累加,記錄為QdD。此時更新動態數據庫中的歷史數據,會出現如下4種情形:(1)如T1∈Qd,T1∈QD,即T1在Qd和QD中,均屬于頻繁項集;(2)如T2?Qd,T2∈QD,即T2僅在QD中屬于頻繁項集;(3)如T3∈Qd,T3?QD,即T3僅在Qd中屬于頻繁項集;(4)如T4?Qd,T4?QD,即T4在Qd和QD中,均為非頻繁項集[7-8]。
2)按照步驟1,即可完成一組動態數據庫,歷史數據更新。當所有歷史數據完成更新時對數據進行統計,完成第一序列數據更新,并將其標記為FdD。
3)依據FdD來合并新舊數據樹。其合并步驟如下。
(1)輸入歷史數據樹和更新數據樹;(2)建立數據樹根節點;(3)從頭建立數據樹子節點;(4)遍歷數據樹節點;(5)從當前節點上溯至根節點路徑;(6)重新排列動態數據庫數據;(7)輸出更新后的動態數據庫數據。
綜合上述3步,即完成動態數據庫中新增數據的更新,此時,即可挖掘動態數據庫中的新增數據。
1.4.1 挖掘動態數據庫歷史數據
基于多次分組后,節點得到了動態數據庫歷史分組數據,將其整理為〈key=word,value={g1,g2,…,gN}〉,將其作為數據挖掘的輸入數據,則動態數據庫的歷史數據挖掘過程如圖3所示。

圖3 動態數據庫的歷史數據挖掘過程
圖中,key表示動態數據庫新輸入數據的密鑰。基于圖3所示的動態數據庫的歷史數據挖掘過程,將各個節點數據分組,有序輸入數據。每當有新數據輸入時,都會發生改變,促進數據樹進一步挖掘,待數據輸出后會又重新計算其頻繁項集,清空數據樹,對動態數據庫的歷史數據進行重新挖掘。
1.4.2 挖掘動態數據庫增量數據
基于更新動態數據庫新增數據所分出的4種情形,需要采用不同的策略來挖掘動態數據庫中的新增數據,所以,此次設計的挖掘過程如圖4所示。

圖4 動態數據庫的增量更新數據挖掘流程
從圖4中可以看出,情形1中的項集,在動態數據庫的整體數據中,也屬于頻繁情況;情形2中的項集,需要計算其頻次,并將Qd和QD的項集頻次累加,即可確定數據的頻繁性;情形3需要重新計算各個節點的數據,獲取其在整體數據中的頻次信息;情形4中的數據在動態數據庫中并不頻繁,沒有數據可以挖掘。根據文中劃分的3種情形,完成動態數據庫中的新增數據挖掘后,將歷史數據和新增數據結合,即可得到動態數據庫中的關聯數據。
本次實驗將采用對比實驗的方式,以某系統的動態數據庫軟件作為此次實驗的研究對象,在計算機上驗證此次研究的動態數據庫關聯挖掘方法。并將此次研究的動態數據庫關聯挖掘方法記為實驗A組;兩組傳統的動態數據庫關聯挖掘方法分別記為實驗B組和實驗C組。確定時間標準差計算式,改變基本窗口數量和支持度,對比3組方法的運行時間、內存使用情況和節點任務分配度。
根據此次實驗,選擇了3組動態數據庫關聯挖掘方法,設計的方法運行環境如表1所示。

表1 方法運行環境
為驗算此次研究的動態數據庫關聯挖掘方法,選擇了動態數據庫Mushroom數據源,設計實驗數據流來比較3組方法。此次實驗,將Mushroom數據源數據流的基本窗口數量設定為10,每個基本窗口中的事務數設定為200,則10個基本窗口的總數據數為2 000。在該數據流的基礎數據上,讓其隨著時間衰減,增加基本窗口。其中,w表示基本窗口數。根據Mushroom數據源數據流窗口數據增加情況,設置的時間衰減權重函數如式(3)。
w(d)=1-50%*(d-1)
(3)
式中,d表示時間衰減標識,即可以將首次讀入的基本窗口數據記為d=1,當窗口數增加時,其每一次增加的數據,增加值都為1。
依據上述內容,確定了該方法的運行環境和實驗對象,選擇Test Director軟件測試工具,測試3組方法的運行時間、內存占用情況和時間標準差,并形成XRD圖,對比3組動態數據庫關聯挖掘方法,其實驗過程及結果如下。
2.2.1 第一組實驗
基于此次實驗設置的實驗對象,將基本窗口數據的支持度設置為10%,每增加一個基本窗口,都會Mushroom數據源數據流窗口數據增加情況,增加數據。此時,Mushroom數據源數據流窗口數據增加情況,改變基本窗口有效數據數目,測試3組方法運行時間,其實驗結果如圖5所示。

圖5 相同支持度下,不同窗口數據運行時間比較圖
從圖5可以看出,在時間衰減權重函數作用下,實驗C組的平均運行時間高達3 900 s;實驗B組其平均運行時間依然達到了3 616.7 s;而實驗A組在挖掘基本窗口中的數據時,運行時間波動最小,僅需450 s。由此可見,在同一支持度,不同窗口數據下,挖掘動態數據庫數據,運行時間波動較小,方法運行速度較快。
2.2.2 第二組實驗
基于上述結果,進行第二組實驗,改變基本窗口的支持度,并將其首次支持數記為30%,對比3組方法,在挖掘窗口數據時,對處理器內存的使用情況。此后每隔10%,記錄一次方法對處理器內存使用量。為保證實驗的嚴謹性,將3組方法在首次支持度下,挖掘窗口數據對處理器內存的使用情況比較2次,分別為讀入數據時給定的支持數據和更新支持度后的支持數據。其實驗結果如圖6所示。

圖6 不同支持度下,方法內存使用量對比
從圖6可以看出,不同支持度在挖掘數據過程中,處理器的內存占用量都在不斷降低至固定值。實驗B組所占用的內存在逐漸恢復平穩時,出現大幅度下降現象;實驗C組和實驗A組所占用的內存,都在同一支持度下逐漸走向平穩。由此可見,此次研究的動態數據庫關聯挖掘方法,在支持度不同的條件下,內存使用量偏低,在處理器存儲方面的開銷也較小。
2.2.3 第三組實驗
基于第一組和第二組實驗結果基礎上,進行第三組實驗,通過任務執行時間標準差,對比3組方法中的各個節點任務分配均度。為此假設3組方法的計算節點數量為N,第i個節點任務執行時間為ti,則獲得節點任務執行時間的標準差σ為式(4)。
(4)


圖7 不同支持度下,方法節點的時間標準差
從圖7可以看出,在不同支持度下,實驗C組的時間標準差出現了下降趨勢,而實驗A組、B組的時間標準差都出現了一定的上升趨勢。由此可見,此次研究的動態數據庫關聯挖掘方法,受到支持度影響較小,可以均勻分配各個節點的計算量。
綜上所述,本文提出的基于大數據集的動態數據庫關聯挖掘方法,充分利用大數據時代下的大數據技術,研究動態數據庫關聯挖掘方法,優化動態數據庫中數據的挖掘效率。但是,此次研究的基于大數據集的動態數據庫關聯挖掘方法,未曾考慮大數據時代網絡數據的膨脹速度。因此在今后的研究中,還需深入研究基于大數據集的動態數據庫關聯挖掘方法,分析大數據時代網絡數據的膨脹速度,研究出可以挖掘不同數據交互、數據共享等動態數據庫挖掘方法。