專利名稱:一種數(shù)據(jù)版本控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)版本控制方法。
背景技術(shù):
在大型設(shè)備的狀態(tài)數(shù)據(jù)庫中,數(shù)據(jù)版本的管理不善可造成系統(tǒng)的混亂甚至崩潰,因此數(shù)據(jù)版本控制尤為重要。數(shù)據(jù)版本控制技術(shù)是對(duì)每次修改都做詳細(xì)記錄,尤其當(dāng)多人同時(shí)開發(fā)一個(gè)數(shù)據(jù)庫管理和應(yīng)用系統(tǒng)時(shí),采用合理的方法監(jiān)控?cái)?shù)據(jù)庫中表、存儲(chǔ)過程和視圖等對(duì)象的變動(dòng)。數(shù)據(jù)版本控制的核心是變更管理,主要目標(biāo)和任務(wù)是記錄并保存每個(gè)安全可靠的版本歷史記錄,并且保證每個(gè)客戶端得到的都是最新版本。目前數(shù)據(jù)版本控制的主要方法有:差分編碼、檔案上鎖、中央系統(tǒng)與分布式系統(tǒng)等。差分編碼只保留檔案相繼版本之間的差異,該方法可以有效地儲(chǔ)存數(shù)個(gè)版本的檔案,節(jié)省大量空間,但是采用該方法時(shí),版本恢復(fù)比較麻煩;檔案上鎖功能對(duì)高難度的合并,例如大幅更改大檔案或檔案群的許多部分,提供了一些保護(hù),但其他開發(fā)者可以繞過版本控制系統(tǒng)改變檔案(這本身就是很大問題);中央式系統(tǒng)是當(dāng)多個(gè)客戶端同時(shí)要改變同一個(gè)檔案時(shí),由中央權(quán)威管理存取權(quán)限“鎖上”檔案庫中的檔案,一次只讓一個(gè)開發(fā)者工作,或是像分布式系統(tǒng)容許多個(gè)檔案庫開發(fā)者同時(shí)更動(dòng)同一檔案,而不需經(jīng)中央權(quán)威許可,分布式系統(tǒng)仍然可以有檔案上鎖功能?,F(xiàn)有的幾種版本關(guān)系模型中線性版本模型能夠很好地描述版本順序產(chǎn)生的過程,但不能區(qū)分替換版本和修訂版本的區(qū)別;樹狀版本模型雖然解決了對(duì)象模型的修訂版本與替換版本之間的區(qū)別,但是不能描述版本合并這一實(shí)際情況;有向無環(huán)圖盡管支持版本合并和變更的歷史信息描述,但只能用節(jié)點(diǎn)序號(hào)描述版本的產(chǎn)生層次和來源,無法表示該版本的邏輯層次性,而且容易產(chǎn)生歧義;多色圖的版本模型只考慮了同一版本的修訂和變型關(guān)系。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種數(shù)據(jù)版本控制方法,用以解決由于多人并發(fā)修改數(shù)據(jù)導(dǎo)致的數(shù)據(jù)庫不一致的問題。為實(shí)現(xiàn)上述目的,本發(fā)明的方案是:一種數(shù)據(jù)版本控制方法,步驟如下:(I)建立基于有色Petri網(wǎng)的數(shù)據(jù)版本控制模型,該P(yáng)etri網(wǎng)的庫所包括數(shù)據(jù)版本庫和操作員庫,所述數(shù)據(jù)版本庫包括最新數(shù)據(jù)版本庫、歷史數(shù)據(jù)版本庫、更新的數(shù)據(jù)版本庫和合并數(shù)據(jù)版本庫,且不同的數(shù)據(jù)版本庫由不同顏色的托肯來表示,所述最新數(shù)據(jù)版本庫只能存放一個(gè)最新數(shù)據(jù)版本的托肯,所述歷史數(shù)據(jù)版本庫可以存放多個(gè)更新過的數(shù)據(jù)版本的托肯,所述托肯存放于Petri網(wǎng)的庫所中,用于根據(jù)其動(dòng)態(tài)變化表示庫所中數(shù)據(jù)版本的狀態(tài);( 2)對(duì)步驟(I)中建立的模型進(jìn)行初始化,使最新數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫各獲得一個(gè)顏色相同的托肯,該托肯表示的是目前最新數(shù)據(jù)版本的信息,其他數(shù)據(jù)版本庫為空;(3)當(dāng)有操作員準(zhǔn)備更新數(shù)據(jù)時(shí),觸發(fā)源變遷,使操作員庫得到一個(gè)表示操作員信息的托肯;(4)當(dāng)操作員更新數(shù)據(jù)時(shí),觸發(fā)更新操作變遷,并根據(jù)操作員庫中的托肯信息和最新數(shù)據(jù)版本庫中的托肯信息,產(chǎn)生一個(gè)表示更新后的數(shù)據(jù)版本信息的托肯存放在更新的數(shù)據(jù)版本庫中,同時(shí),操作員庫中的托肯被刪除;(5)根據(jù)更新的數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫中的托肯信息,判斷是否需要合并去除冗余數(shù)據(jù)版本操作,如果需要,則觸發(fā)冗余數(shù)據(jù)版本合并變遷,將更新的數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫進(jìn)行合并,并將合并后產(chǎn)生的表示合并數(shù)據(jù)版本信息的托肯存放在合并數(shù)據(jù)版本庫,如果不需要,則觸發(fā)復(fù)制變遷,將步驟(3)中得到的更新的數(shù)據(jù)版本庫中的托肯復(fù)制到合并數(shù)據(jù)版本庫中,同時(shí),更新的數(shù)據(jù)版本庫中的托肯被刪除;(6)觸發(fā)提交更新變遷,將合并數(shù)據(jù)版本庫中的托肯復(fù)制為兩個(gè),分別存放到所述最新數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫中,同時(shí),合并數(shù)據(jù)版本庫中的托肯被刪除;(7)若有其他操作員要更新數(shù)據(jù),則繼續(xù)執(zhí)行步驟(3) (6),如此循環(huán),直到所述歷史數(shù)據(jù)版本庫中托肯數(shù)量達(dá)到它能存放的最大數(shù)量時(shí),終止Petri網(wǎng)的運(yùn)行。在(4廣(6)任一步驟執(zhí)行的過程中,若有其他操作員要更新數(shù)據(jù)庫中的不同數(shù)據(jù),則在前一操作員繼續(xù)執(zhí)行其數(shù)據(jù)操作步驟的同時(shí),其他操作員開始執(zhí)行步驟(3廣(6),若有其他操作員要更新數(shù)據(jù)庫中的相同數(shù)據(jù),則要在前一操作員執(zhí)行完提交更新變遷之后再開始執(zhí)行步驟(3) (6)。所述數(shù)據(jù)版本庫中托肯表不的信息包括:版本號(hào)、父版本號(hào)、修改時(shí)間、修改的內(nèi)容和修改人,所述操作員庫中的托肯信息包括:操作員編號(hào)、操作員姓名和要更新的內(nèi)容。步驟(4)中觸發(fā)更新操作變遷后產(chǎn)生兩個(gè)不同顏色的托肯,其中一個(gè)顏色的托肯是原托肯的復(fù)制,存放于所述最新數(shù)據(jù)版本庫中,另一個(gè)顏色的托肯為新托肯,存放于更新的數(shù)據(jù)版本庫中?;赑etri網(wǎng)的數(shù)據(jù)版本控制模型初始化時(shí),所述數(shù)據(jù)版本庫中的托肯表示的信息只顯示版本號(hào),其余信息字段均為空。本發(fā)明達(dá)到的有益效果:(1)本發(fā)明構(gòu)建了一種有色Petri網(wǎng)(CPN)模擬數(shù)據(jù)版本控制過程,用不同顏色的托肯表示數(shù)據(jù)的不同版本,在數(shù)據(jù)控制過程中,當(dāng)有操作員更新數(shù)據(jù)時(shí),觸發(fā)源變遷,使操作員庫獲得操作員的信息,然后通過觸發(fā)更新操作變遷,產(chǎn)生新的數(shù)據(jù)版本,并通過觸發(fā)提交更新變遷,將形成的最新數(shù)據(jù)版本存放在最新數(shù)據(jù)版本庫中,而且如果判斷有冗余數(shù)據(jù),可以觸發(fā)冗余合并變遷,將冗余數(shù)據(jù)進(jìn)行合并后再觸發(fā)提交更新變遷將數(shù)據(jù)進(jìn)行存儲(chǔ),有效地解決了數(shù)據(jù)版本更新過程中合并的問題,保證了數(shù)據(jù)的完整性;(2)當(dāng)操作員I在對(duì)數(shù)據(jù)庫進(jìn)行操作時(shí),若有操作員2也要更新數(shù)據(jù)庫,如果操作員2與操作員I修改的數(shù)據(jù)不同,則繼續(xù)觸發(fā)源變遷,操作員庫重新獲得操作員2的信息,此時(shí)操作員I繼續(xù)執(zhí)行之后的過程,操作員2在對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行更新后,最新數(shù)據(jù)版本庫中最后存放的就是操作員2最后更新過的數(shù)據(jù)版本,如果操作員2和操作員I要修改的數(shù)據(jù)相同,那么操作員2要在操作員I修改的數(shù)據(jù)提交后才能進(jìn)行其數(shù)據(jù)更新過程,這樣就避免了由于多人并發(fā)修改數(shù)據(jù)導(dǎo)致的數(shù)據(jù)庫不一致的問題。
圖1是本發(fā)明數(shù)據(jù)版本控制的有色Petri網(wǎng)模型;圖2是本發(fā)明有色Petri網(wǎng)初始化模型;圖3是觸發(fā)產(chǎn)生操作變遷后的有色Petri網(wǎng)模型;圖4是本發(fā)明觸發(fā)更新操作變遷后的有色Petri網(wǎng)模型;圖5是本發(fā)明觸發(fā)復(fù)制變遷或冗余數(shù)據(jù)版本合并變遷后的有色Petri網(wǎng)模型;圖6是本發(fā)明觸發(fā)提交更新變遷后的有色Petri網(wǎng)模型。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)的說明。本發(fā)明建立的有色Petri網(wǎng)Σ CPN= (P,T,F(xiàn),M,D,C,I,G,K)用于構(gòu)建數(shù)據(jù)版本控制模型,其具體定義如下:(I)P= {pi, p2, p3, p4, p5},P 是庫所的有限集;(2)T={tl,t2,t3,t4,t5},T 是變遷的有限集;(3)F= (PXT) U (TXP),是網(wǎng)中有向弧集合;(4) D為顏色集;(5) C:P U T — Ψ (D), Ψ (D)為顏色集 D 的冪集合;(6) M:Ρ — DMS,是網(wǎng)的標(biāo)識(shí),標(biāo)識(shí)Mi下的標(biāo)識(shí)分量Mi (ρ)表示庫所P中的托肯顏色集上的多重集,MO是初始標(biāo)識(shí);(7)G:變遷護(hù)衛(wèi)函數(shù),G:T —表達(dá)式;(8) I為F上的權(quán)函數(shù),I:F — DMS,確定變遷發(fā)生后托肯的變化;(9) K為P上得容量函數(shù),K =P- {1,2,3...},如果庫所P沒有定義容量函數(shù),則默認(rèn) K (ρ) = °°。如圖1,本實(shí)施例Petri網(wǎng)模型中的庫所包括操作員庫和數(shù)據(jù)版本庫,圖中的P1、P3、P4和P5為數(shù)據(jù)版本庫,不同的數(shù)據(jù)版本庫由不同顏色的托肯表示,數(shù)據(jù)版本庫的庫所中的托肯顏色為C(P1) = Ic1, CfC1J, C1, CfCn e D, Ci表不版本的差異信息,由多參數(shù)的一元組組成,屬性包括版本號(hào),父版本號(hào),操作時(shí)間,操作的內(nèi)容,操作方式和操作人,Pl表示最新數(shù)據(jù)版本庫,用于存放最新的數(shù)據(jù)版本,圖中的W(pl)=l表示該庫所中的托肯數(shù)量為I個(gè),P4表示歷史數(shù)據(jù)版本庫,P4中托肯的信息相當(dāng)于在數(shù)據(jù)庫中建立了一個(gè)版本控制表,記錄一系列數(shù)據(jù)版本的變化信息,相當(dāng)于一個(gè)版本存儲(chǔ)庫,方便以后查閱。P2為操作員庫,用于存放數(shù)據(jù)操作員的信息,其中表示操作員庫的庫所托肯顏色為C(P2) = Im1, m2---mn},m1, nv“mn e DjHii表示操作員信息,包括數(shù)據(jù)操作員的編號(hào)、姓名和要更新的數(shù)據(jù)內(nèi)容。tl、t2、t3、t4和t5為 變遷,表示修改數(shù)據(jù)版本庫或操作員庫狀態(tài)信息的操作,h為源變遷,提供更改數(shù)據(jù)的操作人員的信息,t2為更新操作變遷,產(chǎn)生顏色為Ci和&的兩個(gè)托肯,Ci是原托肯的復(fù)制,便于下次更新操作,即Ci=Ci,存于P1, Cj為新顏色的托肯,存于P3O t5為數(shù)據(jù)版本的復(fù)制,t3為冗余數(shù)據(jù)版本的合并,為避免沖突,t3的優(yōu)先權(quán)高于t5,產(chǎn)生的托肯的顏色變化類似t2,t4是提交更新操作,當(dāng)提交成功時(shí)G (t4) =true,將P5中的托肯復(fù)制成2個(gè),一個(gè)存放在P1,一個(gè)存放在P4用于存儲(chǔ)同時(shí)進(jìn)行合并比較。圖中有方向的弧線表示庫所與變遷之間的關(guān)系。各數(shù)據(jù)版本庫及變遷t2、t3、t4和t5的含義及其操作變化過程如表I所示,表中-1D表明弧的方向由數(shù)據(jù)版本庫或者操作員庫指向變遷,數(shù)據(jù)版本庫或者操作員庫是作為變遷的輸入,表示經(jīng)過該變遷,數(shù)據(jù)版本庫或者操作員庫失去相應(yīng)變遷的顏色的托肯,ID說明弧的方向由變遷指向數(shù)據(jù)版本庫或者操作員庫,數(shù)據(jù)版本庫或者操作員庫是作為變遷的輸出,表示經(jīng)過該變遷,數(shù)據(jù)版本庫或者操作員庫得到相應(yīng)變遷的顏色的托肯,F(xiàn)l和F2各表不一個(gè)有向弧,但此處的變遷不一定觸發(fā)。表I
權(quán)利要求
1.種數(shù)據(jù)版本控制方法,其特征在于,步驟如下: (1)建立基于有色Petri網(wǎng)的數(shù)據(jù)版本控制模型,該P(yáng)etri網(wǎng)的庫所包括數(shù)據(jù)版本庫和操作員庫,所述數(shù)據(jù)版本庫包括最新數(shù)據(jù)版本庫、歷史數(shù)據(jù)版本庫、更新的數(shù)據(jù)版本庫和合并數(shù)據(jù)版本庫,且不同的數(shù)據(jù)版本庫由不同顏色的托肯來表示,所述最新數(shù)據(jù)版本庫只能存放一個(gè)最新數(shù)據(jù)版本的托肯,所述歷史數(shù)據(jù)版本庫可以存放多個(gè)更新過的數(shù)據(jù)版本的托肯,所述托肯存放于Petri網(wǎng)的庫所中,用于根據(jù)其動(dòng)態(tài)變化表示庫所中數(shù)據(jù)版本的狀態(tài); (2)對(duì)步驟(I)中建立的模型進(jìn)行初始化,使最新數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫各獲得一個(gè)顏色相同的托肯,該托肯表示的是目前最新數(shù)據(jù)版本的信息,其他數(shù)據(jù)版本庫為空; (3)當(dāng)有操作員準(zhǔn)備更新數(shù)據(jù)時(shí),觸發(fā)源變遷,使操作員庫得到一個(gè)表示操作員信息的托肯; (4)當(dāng)操作員更新數(shù)據(jù)時(shí),觸發(fā)更新操作變遷,并根據(jù)操作員庫中的托肯信息和最新數(shù)據(jù)版本庫中的托肯信息,產(chǎn)生一個(gè)表示更新后的數(shù)據(jù)版本信息的托肯存放在更新的數(shù)據(jù)版本庫中,同時(shí),操作員庫中的托肯被刪除; (5)根據(jù)更新的數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫中的托肯信息,判斷是否需要合并去除冗余數(shù)據(jù)版本操作,如果需要,則觸發(fā)冗余數(shù)據(jù)版本合并變遷,將更新的數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫進(jìn)行合并,并將合并后產(chǎn)生的表示合并數(shù)據(jù)版本信息的托肯存放在合并數(shù)據(jù)版本庫,如果不需要,則觸發(fā)復(fù)制變遷,將步驟(3)中得到的更新的數(shù)據(jù)版本庫中的托肯復(fù)制到合并數(shù)據(jù)版本庫中,同時(shí),更新的數(shù)據(jù)版本庫中的托肯被刪除; (6)觸發(fā)提交更新變遷,將合并數(shù)據(jù)版本庫中的托肯復(fù)制為兩個(gè),分別存放到所述最新數(shù)據(jù)版本庫和歷史數(shù)據(jù)版本庫中,同時(shí),合并數(shù)據(jù)版本庫中的托肯被刪除; (7)若有其他操作員要更新數(shù)據(jù),則繼續(xù)執(zhí)行步驟(3) (6),如此循環(huán),直到所述歷史數(shù)據(jù)版本庫中托肯數(shù)量達(dá)到它能存放的最大數(shù)量時(shí),終止Petri網(wǎng)的運(yùn)行。
2.據(jù)權(quán)利要求1所述的方法,其特征在于,在(4) (6)任一步驟執(zhí)行的過程中,若有其他操作員要更新數(shù)據(jù)庫中的不同數(shù)據(jù),則在前一操作員繼續(xù)執(zhí)行其數(shù)據(jù)操作步驟的同時(shí),其他操作員開始執(zhí)行步驟(3廣(6),若有其他操作員要更新數(shù)據(jù)庫中的相同數(shù)據(jù),則要在前一操作員執(zhí)行完提交更新變遷之后再開始執(zhí)行步驟(3) (6)。
3.據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)版本庫中托肯表示的信息包括:版本號(hào)、父版本號(hào)、修改時(shí)間、修改的內(nèi)容和修改人,所述操作員庫中的托肯信息包括:操作員編號(hào)、操作員姓名和要更新的內(nèi)容。
4.據(jù)權(quán)利要求1所述的方法,其特征在于,步驟(4)中觸發(fā)更新操作變遷后產(chǎn)生兩個(gè)不同顏色的托肯,其中一個(gè)顏色的托肯是原托肯的復(fù)制,存放于所述最新數(shù)據(jù)版本庫中,另一個(gè)顏色的托肯為新托肯,存放于更新的數(shù)據(jù)版本庫中。
5.據(jù)權(quán)利要求3所述的方法,其特征在于,基于Petri網(wǎng)的數(shù)據(jù)版本控制模型初始化時(shí),所述數(shù)據(jù)版本庫中的托肯表示的信息只顯示版本號(hào),其余信息字段均為空。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)版本控制方法,該方法構(gòu)建一種有色Petri網(wǎng)(CPN)模擬數(shù)據(jù)版本控制過程,有色Petri網(wǎng)庫所包括數(shù)據(jù)版本庫和操作員庫,并用不同顏色的托肯表示數(shù)據(jù)的不同版本,當(dāng)有操作員更新數(shù)據(jù)時(shí),觸發(fā)源變遷,使操作員庫獲得操作員的信息,并通過觸發(fā)不同的變遷,模擬數(shù)據(jù)版本的形成過程,將形成的最新數(shù)據(jù)版本存放在最新數(shù)據(jù)版本庫中,將歷史數(shù)據(jù)版本都存放在歷史數(shù)據(jù)版本庫中,方便以后的查詢,且通過觸發(fā)冗余合并變遷,將冗余數(shù)據(jù)進(jìn)行合并,有效地解決了數(shù)據(jù)版本更新過程中的并發(fā)、合并的問題,保證了數(shù)據(jù)的一致性和完整性,有效提高了歷史數(shù)據(jù)的管理水平。
文檔編號(hào)G06F17/30GK103092947SQ201310011230
公開日2013年5月8日 申請(qǐng)日期2013年1月11日 優(yōu)先權(quán)日2013年1月11日
發(fā)明者李保福, 葉陽東, 佘維, 姬波, 劉 文, 盧紅星, 邵秋華, 梁經(jīng)宛, 張靜, 雍明超, 莊益詩, 路光輝 申請(qǐng)人:遼寧省電力有限公司朝陽供電公司, 許繼電氣股份有限公司, 許昌許繼軟件技術(shù)有限公司, 國家電網(wǎng)公司