衛(wèi)朝霞,徐 艷
(四川大學(xué)錦城學(xué)院,四川 成都 611731)
大型的分布式存儲系統(tǒng)中,通常將同一數(shù)據(jù)的不同副本存儲在多個異地數(shù)據(jù)庫上,由于部分副本數(shù)據(jù)庫是可移動的,很難保證可以實時更新最新數(shù)據(jù)信息,如何保證異地數(shù)據(jù)庫中不同副本的數(shù)據(jù)一致性已成為開發(fā)高效分布式信息存儲機制必不可少的關(guān)鍵技術(shù)。
針對這一問題,相關(guān)科研人員提出了幾種分布式存儲信息一致性控制方法:文獻[1]運用值計算的方法控制分布式存儲機制傳輸數(shù)據(jù)一致性,通過構(gòu)建大規(guī)模異地數(shù)據(jù)傳輸架構(gòu),對數(shù)據(jù)包中的數(shù)據(jù)進行分塊處理和值計算,得到值和序列號,對數(shù)據(jù)包是否連續(xù)進行判斷。文獻[2]重新定義了條件函數(shù)依賴和微函數(shù)依賴,應(yīng)用依賴控制數(shù)據(jù)一致性,確定了依賴集合,發(fā)現(xiàn)違反依賴的錯誤數(shù)據(jù)和修復(fù)錯誤,并對其中兩個步驟展開了深入的研究。
但是以上兩種方法還存在一些問題,主要有兩個方面:問題1:數(shù)據(jù)存儲:傳統(tǒng)的數(shù)據(jù)存儲方式,需要設(shè)立1個或者多個字段用于記錄數(shù)據(jù)的更新記錄,大大增加了存儲的開銷;問題2:數(shù)據(jù)傳輸:傳統(tǒng)的數(shù)據(jù)一致性控制方法對網(wǎng)絡(luò)通信開銷的需求比較大,一般的互聯(lián)網(wǎng)環(huán)境很難滿足。
基于此,本文提出了一種基于模式識別的分布式存儲信息一致性控制方法。模式識別相對于其它控制方法特征分類更精準(zhǔn),安全性更高,開銷成本更低,同時結(jié)合數(shù)據(jù)全相關(guān)的一致性更新技術(shù),可以有效并且在節(jié)約存儲開銷的前提下完成對分布式信息存儲機制的一致性控制。
分布式信息存儲機制由主副本兩部分組成:
1)副本移動端
如PDA、手機、筆記本電腦等是可進行移動的便攜電子設(shè)備,其數(shù)據(jù)庫為副本數(shù)據(jù)庫[3-4]。
2)主本固定端
有固定的數(shù)據(jù)存儲設(shè)備,安全性、可靠性極高。具有可用來傳輸數(shù)據(jù)的通信接口,可以和副本數(shù)據(jù)庫進行數(shù)據(jù)傳輸,其數(shù)據(jù)庫為主本數(shù)據(jù)庫。
分布式信息存儲機制如圖1所示。
圖1 分布式信息存儲機制
該分布式信息存儲機制分為3層結(jié)構(gòu):
結(jié)構(gòu)1:中心控制端
中心控制端是主本數(shù)據(jù)庫所在的固定端。采集分布式信息存儲機制所有的數(shù)據(jù)集,可以操控整個系統(tǒng),以及對副本的權(quán)限進行設(shè)置。
結(jié)構(gòu)2:傳輸控制端
傳輸控制端對主副本各節(jié)點之間的數(shù)據(jù)信息進行傳輸,并判斷其使用的廣域網(wǎng)還是企業(yè)內(nèi)部的局域網(wǎng)或者企業(yè)網(wǎng)。
結(jié)構(gòu)3:移動端
移動端中的各個副本由于是可移動的,工作環(huán)境復(fù)雜多變,而且是不可預(yù)測的,很難具備實時更新數(shù)據(jù)的條件,但分布式信息存儲機制中的主本數(shù)據(jù)處在動態(tài)變化之中,而且每個數(shù)據(jù)的副本數(shù)量多。
為了提高分布式信息存儲機制的存儲效率、時效性、可用性以及可靠性,需要采用主副本的方式來存儲信息。建立副本存儲機制不但可以提高數(shù)據(jù)的可靠性、安全性,而且還可以大大提高整個系統(tǒng)的存儲效率。但是副本也需要占用一部分的存儲空間,增加了整個分布式信息存儲機制的復(fù)雜性。對副本的實時更新成為控制分布式信息存儲機制一致性的重要研究內(nèi)容。圖2為產(chǎn)品數(shù)據(jù)規(guī)劃圖,以某企業(yè)B為例,達到分布式存儲產(chǎn)品數(shù)據(jù)一致性更新的目的。
圖2 產(chǎn)品數(shù)據(jù)規(guī)劃圖
在圖2產(chǎn)品數(shù)據(jù)規(guī)劃圖中,企業(yè)B擁有零件Pi的生產(chǎn)權(quán)限,下屬部門有B1和B2,B2部門擁有零件Pi的數(shù)據(jù)主本數(shù)據(jù)以及研發(fā)設(shè)計權(quán)限。有關(guān)零件Pi的主本信息如結(jié)構(gòu)化數(shù)據(jù)、有關(guān)零件Pi的全部文檔信息存儲在企業(yè)B的數(shù)據(jù)庫中;一些副本信息如非結(jié)構(gòu)化數(shù)據(jù)存儲在企業(yè)B與其它企業(yè)A、C、F的分布式存儲系統(tǒng)中。為了更好的實現(xiàn)信息一致性控制,可以借助文件指針功能把企業(yè)B數(shù)據(jù)庫中的主副本信息聯(lián)系在一起,實時更新主副本數(shù)據(jù)以達到主副本信息一致性控制的目的。為了防止數(shù)據(jù)丟失或損壞,將數(shù)據(jù)分布式存儲在企業(yè)A的數(shù)據(jù)庫中,當(dāng)做零件Pi的備份數(shù)據(jù)。則企業(yè)B對零件Pi的數(shù)據(jù)進行更新的同時也要對企業(yè)A的數(shù)據(jù)庫中有關(guān)零件Pi的數(shù)據(jù)進行一致性更新。企業(yè)C和企業(yè)F是零件Pi的相關(guān)配件企業(yè),如子裝配件、套用件、裝配基準(zhǔn)件等可能來自企業(yè)C或者企業(yè)F。所以當(dāng)企業(yè)B有關(guān)零件Pi的數(shù)據(jù)發(fā)生變化時,相應(yīng)的也要及時更新企業(yè)C和企業(yè)F的次級庫的產(chǎn)品數(shù)據(jù)。
由于零件Pi由企業(yè)B生產(chǎn)研發(fā),那么企業(yè)B所擁有的有關(guān)零件Pi的所有產(chǎn)品數(shù)據(jù)都是主本數(shù)據(jù),而企業(yè)A是該數(shù)據(jù)的備份存儲部門,企業(yè)C和企業(yè)F是相關(guān)配件企業(yè),所以企業(yè)A、C、F中有關(guān)零件Pi的數(shù)據(jù)是零件Pi數(shù)據(jù)的副本。
如圖2中的部門B2是零件Pi的設(shè)計研發(fā)部門,B1是零件Pi數(shù)據(jù)備份部門,對于企業(yè)B內(nèi)部的多個設(shè)計或者制造部門,由于這些部門使用的是企業(yè)內(nèi)部的局域網(wǎng)或者是企業(yè)網(wǎng),使用的是同一個網(wǎng)絡(luò)地址,所以企業(yè)B的所有部門都擁有零件Pi的主本數(shù)據(jù)信息,并且各部門之間不存在數(shù)據(jù)一致性要求。
在企業(yè)B有關(guān)零件Pi的主副本數(shù)據(jù)存儲方式中,對于零件Pi的數(shù)據(jù)需要在中心庫、次級庫和數(shù)據(jù)相關(guān)性的其它次級庫重復(fù)更新設(shè)置,這種分布式存儲信息的方法較為復(fù)雜,但是安全性極高。每個企業(yè)節(jié)點都有零件Pi的副本數(shù)據(jù),當(dāng)其中某一個節(jié)點出現(xiàn)故障時,不會影響其它企業(yè)繼續(xù)使用這些數(shù)據(jù),而且每個節(jié)點使用的都是企業(yè)內(nèi)部的局域網(wǎng)或者企業(yè)網(wǎng),不使用廣域網(wǎng),相對成本也較低。因此采用數(shù)據(jù)全相關(guān)的一致性更新技術(shù),可以滿足異地企業(yè)之間動態(tài)聯(lián)盟的數(shù)據(jù)管理要求。
在這種分布式信息存儲機制中,擁有產(chǎn)品數(shù)據(jù)主本的企業(yè)對數(shù)據(jù)進行更新和維護,以保證實時更新其它相關(guān)企業(yè)的數(shù)據(jù)。當(dāng)數(shù)據(jù)主本發(fā)生改變時,數(shù)據(jù)全相關(guān)的一致性更新機制將所有有關(guān)產(chǎn)品數(shù)據(jù)的企業(yè)節(jié)點庫中的數(shù)據(jù)副本進行更新。
模式識別技術(shù)在數(shù)據(jù)的處理、特征的提取等方面有一定的優(yōu)越性,且在各行業(yè)中應(yīng)用廣泛,因此本文利用該方法提取數(shù)據(jù)特征信息。
特征選擇方法一般有篩選和復(fù)選兩種。篩選與復(fù)選的方式有所不同,篩選中判別函數(shù)J(X)所得到的最優(yōu)特征子集只依賴于訓(xùn)練樣本,而復(fù)選主要是依據(jù)分類器的學(xué)習(xí)算法在不同特征子集上的正確識別率,來判斷所選子集是否為最優(yōu)特征子集。那么可知訓(xùn)練樣本的統(tǒng)計特性同時影響篩選和復(fù)選的結(jié)果,并且測試樣本的學(xué)習(xí)算法復(fù)選的結(jié)果也有一定的影響,復(fù)選在實際的應(yīng)用中會比篩選難的多,所以應(yīng)用的也比篩選少。
無論用篩選或者復(fù)選哪一種方法,在d中選取r的最優(yōu)特征子集最簡單也是最常用的方法就是衡量每一個特征子集,從中找出使J(X)可以達到最大值的那個特征子集。
為了解決這個問題,通過模式識別法來獲取最優(yōu)特征子集,找出可以構(gòu)成最優(yōu)特征子集所需的單個特征。雖然這種方法不能保證找出的就是最優(yōu)特征子集,或者說找到的就是次優(yōu)特征子集,但是由于這種方法計算量非常的小,在實際應(yīng)用中也是比較常見的。本文通過大量分析得出,在所有d沒有任何關(guān)系時,單個最優(yōu)特征所構(gòu)成的子集未必是最優(yōu)特征子集,但是自動文本分類的諸多實驗數(shù)據(jù)說明,由單個最優(yōu)特征構(gòu)成最優(yōu)特征子集依然是應(yīng)用最多的一種方法。在大量提取單個最優(yōu)特征的算法中,模式識別最為有效。
在從d中選取r個特征的計算如下:
d中的每個特征f與類別標(biāo)號的互信息用式(1)表示為
(1)
其中,f的觀測值用x表示,x的類別標(biāo)號用?表示。
將互信息最大的r個特征選取出來,構(gòu)成所需的最優(yōu)特征子集,以便接下來對分布式存儲信息進行一致性控制。
將數(shù)據(jù)模型定義比較常見的二元組(ID,DataSet)。ID可以表示其中某一個數(shù)據(jù)項,也可以表示多個數(shù)據(jù)項結(jié)合起來所構(gòu)建的,是數(shù)據(jù)庫中每組數(shù)據(jù)獨有的標(biāo)識;DataSet表示與ID相對應(yīng)的某一個數(shù)據(jù)集合。
對數(shù)據(jù)庫中的數(shù)據(jù)進行操作主要有添加、修改、刪除三種。對數(shù)據(jù)進行這三種操作所產(chǎn)生的數(shù)據(jù)集就是結(jié)構(gòu)序列,為了實現(xiàn)計算機編程計算,將這三種操作用形式化表達為:
1)ADD(ID,DataSet),對ID所對應(yīng)的數(shù)據(jù)項中增加一個DataSet
2)DELETE(ID,DataSet),對ID所對應(yīng)的數(shù)據(jù)項中刪除DataSet;
3)MODIFY(ID,DataSet),修改ID所對應(yīng)的數(shù)據(jù)項DataSet。
對同一個DataSet執(zhí)行多次重復(fù)的添加、刪除和修改,只有第一次操作對數(shù)據(jù)產(chǎn)生實際改變。
當(dāng)對系統(tǒng)中的數(shù)據(jù)進行添加、刪除或者修改時,操作記錄會被記錄在分布式信息存儲機制的結(jié)構(gòu)序列[5]中。結(jié)構(gòu)序列由以下三種格式構(gòu)成:
1)(“+”,ID,DataSet):對ID添加了一個DataSet;
2)(“-”,ID,DataSet):對ID刪除了一個DataSet;
3)(“`”,ID,DataSet):對ID修改了數(shù)據(jù)DataSet。
結(jié)構(gòu)序列僅記錄對數(shù)據(jù)產(chǎn)生實際改變的操作,并且只有提交對數(shù)據(jù)的操作,使數(shù)據(jù)發(fā)生改變,操作記錄[6]才會被記錄在結(jié)構(gòu)序列中。如果對一個數(shù)據(jù)項添加或者刪除一個已經(jīng)存在的數(shù)據(jù)時,數(shù)據(jù)項不會發(fā)生任何的改變,也不會有操作記錄,更不會被記錄在結(jié)構(gòu)序列中。這樣不僅減少了存儲機制的存儲開銷,而且減少了對系統(tǒng)數(shù)據(jù)的誤操作,保證了系統(tǒng)數(shù)據(jù)的安全性。如果要修改其中某一個數(shù)據(jù)項,可以通過先在系統(tǒng)中刪除這個數(shù)據(jù)項,再添加新的數(shù)據(jù)項來實現(xiàn)。
在對系統(tǒng)中數(shù)據(jù)進行一致性控制時,整個結(jié)構(gòu)序列會被分為n個序列域。在同一數(shù)據(jù)庫中,一個序列域可以包含數(shù)據(jù)一致性控制間隔中對數(shù)據(jù)操作產(chǎn)生的所有結(jié)構(gòu)序列條目[7]。序列域只有在本地節(jié)點中創(chuàng)建,如果要與其它節(jié)點進行數(shù)據(jù)一致性控制,一定要在發(fā)送到其它節(jié)點數(shù)據(jù)庫之前關(guān)閉。在數(shù)據(jù)一致性控制完成后,會有新的序列域產(chǎn)生,因此,結(jié)構(gòu)序列也可以說是本地節(jié)點的序列域與其它節(jié)點的序列域的集合。
在整個分布式存儲機制中,已知所有主副本數(shù)據(jù)庫,也就是所有節(jié)點數(shù)據(jù)庫的版本狀態(tài),所有的版本狀態(tài)可以通過狀態(tài)向量[8]體現(xiàn)并記錄,記錄格式如表1。
表1 狀態(tài)向量的記錄
狀態(tài)向量可以用來表示和記錄整個分布式信息存儲機制中所有的主副本數(shù)據(jù)庫,也就是已知節(jié)點數(shù)據(jù)庫所處的版本集合,在分布式存儲信息一致性控制中是數(shù)據(jù)庫狀態(tài)的主要參考,有著不可或缺的作用。
在對分布式信息存儲系統(tǒng)的兩個節(jié)點進行數(shù)據(jù)一致性控制時,可以通過對比分析兩個節(jié)點數(shù)據(jù)庫的狀態(tài)向量,盡可能選擇少的信息進行傳輸,以減少系統(tǒng)的工作量。
企業(yè)B的狀態(tài)向量中包含了其副本數(shù)據(jù)企業(yè)A、C、F的狀態(tài),并同時體現(xiàn)在企業(yè)B的數(shù)據(jù)集中。在完整的分布式信息存儲機制中,每個節(jié)點數(shù)據(jù)庫的狀態(tài)向量是遞增的,如果企業(yè)A的狀態(tài)向量值大于企業(yè)B的狀態(tài)向量值,說明企業(yè)A擁有的數(shù)據(jù)信息要比企業(yè)B的新,所以,要把相應(yīng)的數(shù)據(jù)集發(fā)送給企業(yè)B,例如企業(yè)A的狀態(tài)向量是3,企業(yè)B是2,那么企業(yè)B會接收到來自企業(yè)A狀態(tài)向量為3所對應(yīng)的所有數(shù)據(jù)集。當(dāng)企業(yè)A、B中所有數(shù)據(jù)集的狀態(tài)向量完成對比后,企業(yè)A就可以得到所有狀態(tài)向量值大于企業(yè)B的數(shù)據(jù)集清單[9],并通過網(wǎng)絡(luò)傳輸給企業(yè)B。
企業(yè)A利用模式識別技術(shù)掃描整個數(shù)據(jù)庫,將所有需要發(fā)送的數(shù)據(jù)集按r分類,否則可能導(dǎo)致數(shù)據(jù)無法被正確同步,然后將完成分類的數(shù)據(jù)集發(fā)送給企業(yè)B,企業(yè)B在接收到這些數(shù)據(jù)集后,后臺程序?qū)φ麄€數(shù)據(jù)庫進行掃描對照,并將相應(yīng)的數(shù)據(jù)操作對企業(yè)B的主本數(shù)據(jù)庫進行更新,同時把數(shù)據(jù)集添加到本地數(shù)據(jù)庫中,使接收到的數(shù)據(jù)集只有對本地數(shù)據(jù)產(chǎn)生實際的改變才會被寫入,否則將不會被寫入。
不同企業(yè)之間數(shù)據(jù)集順序[10]的不同不會影響到分布式信息存儲機制中主副本數(shù)據(jù)之間的一致性控制。因為對于每一個數(shù)據(jù)項來說,在本地數(shù)據(jù)集進行更新時,與該數(shù)據(jù)項有關(guān)的信息是否可以被添加到本地數(shù)據(jù)庫中,與其它數(shù)據(jù)項無關(guān),即使該數(shù)據(jù)項的內(nèi)容在兩個數(shù)據(jù)庫中的順序是完全不同的,最終也能實現(xiàn)一致性控制的目的。
為了驗證本文方法對分布式存儲信息一致性控制的綜合有效性,進行仿真。將本文方法與文獻[1]方法和文獻[2]方法對比,以分布式存儲信息一致性控制的準(zhǔn)確性和耗時為實驗指標(biāo)進行測試。
首先對準(zhǔn)確度進行測試,依次向系統(tǒng)寫入300M、500M、1G、2G、3G、5G的數(shù)據(jù),結(jié)果如表1所示,其中,J代表數(shù)據(jù)文件大小,D表示主本數(shù)據(jù),R表示副本數(shù)據(jù),A表示實際一致情況,Z表示本文方法測試結(jié)果,F(xiàn)表示文獻[1]測試結(jié)果,X表示文獻[2]測試結(jié)果,而表中的Y代表測試結(jié)果一致,N代表測試結(jié)果不一致。
表2 三種方法對分布式存儲信息一致性控制測試結(jié)果
分析表1可知,本文方法測試結(jié)果與實際結(jié)果一致,而文獻[1]和文獻[2]方法都存在數(shù)據(jù)錯誤的情況,說明本文方法在控制分布式存儲信息上準(zhǔn)確度更高。
其次,使用三種方法對綜合數(shù)據(jù)庫和企業(yè)數(shù)據(jù)庫再次進行一致性控制準(zhǔn)確度測試。綜合數(shù)據(jù)庫通過信息檢索和機器學(xué)習(xí)所得,二者均為大規(guī)模數(shù)據(jù)庫。結(jié)果如圖3所示。
圖3 綜合數(shù)據(jù)庫和企業(yè)數(shù)據(jù)庫準(zhǔn)確度測試結(jié)果
分析圖3可知,不管是綜合數(shù)據(jù)庫還是企業(yè)數(shù)據(jù)庫,本文方法在控制分布式存儲信息一致性上準(zhǔn)確度一直最高,而文獻[1]方法和文獻[2]方法對綜合數(shù)據(jù)庫的一致性控制準(zhǔn)確度相對較低,對企業(yè)數(shù)據(jù)庫的一致性控制準(zhǔn)確度明顯降低,這是因為本文使用了模式識別提取出最優(yōu)特征子集,使得一致性控制結(jié)果更優(yōu),同時適用性更強。
在上述實驗的基礎(chǔ)上,給出本文方法、文獻[1]方法和文獻[2]方法對不同數(shù)據(jù)庫進行一致性控制的耗時,結(jié)果如圖4所述。
圖4 對綜合數(shù)據(jù)庫和企業(yè)數(shù)據(jù)庫一致性控制耗時
分析圖4可知,不管是綜合數(shù)據(jù)庫還是企業(yè)數(shù)據(jù)庫,本文方法耗時明顯比其它兩種方法少,說明本文將模式識別與數(shù)據(jù)全相關(guān)的一致性更新技術(shù)相結(jié)合的方法不僅對控制分布式存儲信息一致性的準(zhǔn)確度高,而且可有效解決分布式存儲信息實時更新的問題。
本文采用的基于模式識別的分布式存儲信息一致性控制方法,與現(xiàn)有的數(shù)據(jù)一致性控制方法相比具有計算簡單、數(shù)據(jù)更新及時、節(jié)省存儲開銷等優(yōu)勢。采用模式識別技術(shù)對數(shù)據(jù)集進行甄別和預(yù)處理,篩選出某些特征相似的信息與數(shù)據(jù)全相關(guān)的一致性更新技術(shù)相結(jié)合,二者協(xié)同對分布式存儲信息一致性控制有很大的幫助,可以在一定程度上節(jié)省系統(tǒng)存儲開銷,更有效的支持移動設(shè)備在移動條件下的數(shù)據(jù)一致性控制,為繼續(xù)研究分布式信息存儲一致性控制提供了參考依據(jù)。