專(zhuān)利名稱(chēng):事務(wù)日志的記錄方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)存儲(chǔ)記錄方法,具體地說(shuō),涉及一種事務(wù)日志的記錄方法。
背景技術(shù):
數(shù)據(jù)庫(kù)已經(jīng)在各個(gè)領(lǐng)域得到廣泛應(yīng)用,通用的結(jié)構(gòu)化查詢(xún)語(yǔ)言為軟件開(kāi)發(fā)人員提供了簡(jiǎn)單、快捷的數(shù)據(jù)存儲(chǔ)操作方法,使得數(shù)據(jù)存儲(chǔ)由文件數(shù)據(jù)庫(kù)幾乎完全轉(zhuǎn)換到關(guān)系數(shù)據(jù)庫(kù);但是在數(shù)據(jù)庫(kù)的實(shí)際應(yīng)用過(guò)程中,常常由于各種原因,如網(wǎng)絡(luò)中斷、數(shù)據(jù)庫(kù)本身出現(xiàn)問(wèn)題等,而導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法正常工作,給我們的生產(chǎn)活動(dòng)帶來(lái)很大影響。為此,技術(shù)人員通過(guò)各種辦法來(lái)彌補(bǔ)這種隱患,但效果都不夠理想。
發(fā)明內(nèi)容
本發(fā)明針對(duì)數(shù)據(jù)庫(kù)無(wú)法訪問(wèn)這種隱患,提供了一種簡(jiǎn)單、快捷、使用方便的事務(wù)日志的記錄方法。本發(fā)明所采用的技術(shù)方案如下一種事務(wù)日志的記錄方法,該方法包括以下步驟
步驟1、數(shù)據(jù)庫(kù)由連通狀態(tài)變?yōu)橹袛酄顟B(tài),執(zhí)行轉(zhuǎn)存操作,即,將內(nèi)存中的數(shù)據(jù)序列化后得到文本數(shù)據(jù)流,并將文本數(shù)據(jù)流記錄到事物日志上,此時(shí),存儲(chǔ)模式由數(shù)據(jù)庫(kù)存儲(chǔ)模式轉(zhuǎn)換為事務(wù)日志存儲(chǔ)模式;
步驟2、數(shù)據(jù)庫(kù)處于中斷狀態(tài),此時(shí),存儲(chǔ)模式采用事務(wù)日志存儲(chǔ)模式,存儲(chǔ)操作只和事物日志交互數(shù)據(jù);
步驟3、數(shù)據(jù)庫(kù)由中斷狀態(tài)變?yōu)檫B通狀態(tài),執(zhí)行提交操作,S卩,將內(nèi)存中的數(shù)據(jù)提交到數(shù)據(jù)庫(kù)中,此時(shí),存儲(chǔ)模式由事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式;
步驟4、數(shù)據(jù)庫(kù)處于連通狀態(tài),此時(shí),存儲(chǔ)模式采用數(shù)據(jù)庫(kù)存儲(chǔ)模式,存儲(chǔ)操作只和數(shù)據(jù)庫(kù)交互數(shù)據(jù),并刪除對(duì)應(yīng)的本地事務(wù)日志。基于上述,在步驟2中,事務(wù)日志存儲(chǔ)模式下,包括三種操作添加數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù);其中,添加數(shù)據(jù)和更新數(shù)據(jù)沒(méi)有區(qū)別,添加數(shù)據(jù)前,需要從本地序列范圍中獲取序列值作為臨時(shí)序列;刪除數(shù)據(jù)即刪除對(duì)應(yīng)的事務(wù)日志,刪除數(shù)據(jù)時(shí),如果刪除的是數(shù)據(jù)庫(kù)中斷后添加的數(shù)據(jù),則可以直接刪除,如果刪除的數(shù)據(jù)是數(shù)據(jù)庫(kù)中斷前就存在的數(shù)據(jù),則需要記錄對(duì)應(yīng)的刪除日志,供數(shù)據(jù)庫(kù)連接后刪除使用;
在步驟3中,提交過(guò)程如下從事務(wù)日志中讀取提交數(shù)據(jù);向數(shù)據(jù)庫(kù)提交添加命令,即先將該數(shù)據(jù)主鍵值替換成從數(shù)據(jù)庫(kù)序列中獲取的主鍵值,然后再把該數(shù)據(jù)添加到數(shù)據(jù)庫(kù); 向數(shù)據(jù)庫(kù)提交刪除命令,即向數(shù)據(jù)庫(kù)提交在事務(wù)日志存儲(chǔ)模式下記錄的刪除日志,以刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);判斷向數(shù)據(jù)庫(kù)提交的刪除命令和添加命令是否執(zhí)行成功,若執(zhí)行成功,即可將事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式。本發(fā)明相對(duì)現(xiàn)有技術(shù)具有突出的實(shí)質(zhì)性特點(diǎn)和顯著進(jìn)步,具體地說(shuō),該事務(wù)日志的記錄方法有以下優(yōu)點(diǎn)1、該方法能夠明顯降低數(shù)據(jù)庫(kù)中斷后對(duì)生產(chǎn)活動(dòng)的影響和兩個(gè)數(shù)據(jù)庫(kù)雙機(jī)熱備方式相比,這種方法可以解決網(wǎng)絡(luò)中斷帶來(lái)的問(wèn)題,它能夠及時(shí)保存重要的生產(chǎn)數(shù)據(jù),也能夠?qū)⑸a(chǎn)數(shù)據(jù)通過(guò)日志文件形式供本地終端讀取,展現(xiàn)給用戶(hù);
2、該方法在很大程度上減少了用戶(hù)費(fèi)用支出通過(guò)兩個(gè)數(shù)據(jù)庫(kù)雙機(jī)熱備也能夠在一定程度上減少數(shù)據(jù)丟失風(fēng)險(xiǎn),但是它增加了硬件成本和維護(hù)成本高。
具體實(shí)施例方式下面通過(guò)具體實(shí)施方式
,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。一種事務(wù)日志的記錄方法,該方法包括以下步驟
步驟1、數(shù)據(jù)庫(kù)由連通狀態(tài)變?yōu)橹袛酄顟B(tài),執(zhí)行轉(zhuǎn)存操作,即,將內(nèi)存中的數(shù)據(jù)序列化后得到文本數(shù)據(jù)流,并將文本數(shù)據(jù)流記錄到事物日志上,此時(shí),存儲(chǔ)模式由數(shù)據(jù)庫(kù)存儲(chǔ)模式轉(zhuǎn)換為事務(wù)日志存儲(chǔ)模式;
步驟2、數(shù)據(jù)庫(kù)處于中斷狀態(tài),此時(shí),存儲(chǔ)模式采用事務(wù)日志存儲(chǔ)模式,存儲(chǔ)操作只和事物日志交互數(shù)據(jù);
步驟3、數(shù)據(jù)庫(kù)由中斷狀態(tài)變?yōu)檫B通狀態(tài),執(zhí)行提交操作,S卩,將內(nèi)存中的數(shù)據(jù)提交到數(shù)據(jù)庫(kù)中,此時(shí),存儲(chǔ)模式由事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式;
步驟4、數(shù)據(jù)庫(kù)處于連通狀態(tài),此時(shí),存儲(chǔ)模式采用數(shù)據(jù)庫(kù)存儲(chǔ)模式,存儲(chǔ)操作只和數(shù)據(jù)庫(kù)交互數(shù)據(jù),并刪除對(duì)應(yīng)的本地事務(wù)日志?;谏鲜觯诓襟E2中,事務(wù)日志存儲(chǔ)模式下,包括三種操作添加數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù);其中,添加數(shù)據(jù)和更新數(shù)據(jù)沒(méi)有區(qū)別,添加數(shù)據(jù)前,需要從本地序列范圍中獲取序列值作為臨時(shí)序列;刪除數(shù)據(jù)即刪除對(duì)應(yīng)的事務(wù)日志,刪除數(shù)據(jù)時(shí),如果刪除的是數(shù)據(jù)庫(kù)中斷后添加的數(shù)據(jù),則可以直接刪除,如果刪除的數(shù)據(jù)是數(shù)據(jù)庫(kù)中斷前就存在的數(shù)據(jù),則需要記錄對(duì)應(yīng)的刪除日志,供數(shù)據(jù)庫(kù)連接后刪除使用;
在步驟3中,提交過(guò)程如下從事務(wù)日志中讀取提交數(shù)據(jù),在多個(gè)終端的情況下,只允許一個(gè)終端執(zhí)行提交操作,為了保證提交終端數(shù)據(jù)是最新的,提交前必須從事物日志中讀取數(shù)據(jù);
向數(shù)據(jù)庫(kù)提交添加命令,即,添加數(shù)據(jù)前,需要先將該數(shù)據(jù)主鍵值替換成從數(shù)據(jù)庫(kù)序列中獲取的主鍵值,然后再把該數(shù)據(jù)添加到數(shù)據(jù)庫(kù);
向數(shù)據(jù)庫(kù)提交刪除命令,即向數(shù)據(jù)庫(kù)提交在事務(wù)日志存儲(chǔ)模式下記錄的刪除日志,以刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);
判斷向數(shù)據(jù)庫(kù)提交的刪除命令和添加命令是否執(zhí)行成功,若執(zhí)行成功,即可將事務(wù)曰志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式,如果沒(méi)有執(zhí)行成功,則不能刪除本地事務(wù)日志,以防止數(shù)據(jù)丟失;
將事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式,向數(shù)據(jù)庫(kù)提交的命令執(zhí)行成功后,即可將事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式,此后,軟件將處于數(shù)據(jù)庫(kù)存儲(chǔ)模式;
刪除事務(wù)日志文件,存儲(chǔ)模式由事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式后,即可刪除對(duì)應(yīng)的事務(wù)日志。本發(fā)明在所應(yīng)用軟件中包括兩種存儲(chǔ)模式
1、數(shù)據(jù)庫(kù)存儲(chǔ)模式在數(shù)據(jù)庫(kù)存儲(chǔ)模式下,軟件只和數(shù)據(jù)庫(kù)交互數(shù)據(jù)。
2、事務(wù)日志存儲(chǔ)模式在事務(wù)日志存儲(chǔ)模式下,軟件只和事物日志交互數(shù)據(jù)。本發(fā)明在所應(yīng)用軟件中包括兩個(gè)重要的操作
1、轉(zhuǎn)存操作在數(shù)據(jù)庫(kù)由連通狀態(tài)變?yōu)橹袛酄顟B(tài)時(shí),執(zhí)行轉(zhuǎn)存操作,將內(nèi)存中的數(shù)據(jù)序列化后得到文本數(shù)據(jù)流,并將文本數(shù)據(jù)流記錄到事物日志上。2、提交操作在數(shù)據(jù)庫(kù)由中斷狀態(tài)變?yōu)檫B通狀態(tài)時(shí),執(zhí)行提交操作,將內(nèi)存中的數(shù)據(jù)提交到數(shù)據(jù)庫(kù)中。本發(fā)明在所應(yīng)用軟件中定義下列配置信息
1、當(dāng)前存儲(chǔ)模式為了使本地終端重新啟動(dòng)后,存儲(chǔ)模式不丟失,需要在配置信息中記錄當(dāng)前存儲(chǔ)模式,包括數(shù)據(jù)庫(kù)存儲(chǔ)模式和事務(wù)日志存儲(chǔ)模式。2、序列范圍和當(dāng)前序列值該序列范圍和數(shù)據(jù)庫(kù)序列類(lèi)型一致,都為數(shù)值類(lèi)型; 為了區(qū)別本地序列值和數(shù)據(jù)庫(kù)序列值,該序列范圍不能和數(shù)據(jù)庫(kù)定義序列范圍存在交集; 為了保證多個(gè)本地終端序列在數(shù)據(jù)庫(kù)中斷后序列的使用不重復(fù),多個(gè)本地終端序列范圍不能存在交集;為了使應(yīng)用軟件重啟后,序列值不重置,需要在配置信息中記錄當(dāng)前序列值。3、事務(wù)日志存儲(chǔ)目錄位置數(shù)據(jù)庫(kù)中斷后,本地局域網(wǎng)不一定中斷,即使中斷也能很容易組建;通過(guò)共享目錄方式使多個(gè)本地終端共享事物日志。就需要在配置信息中記錄存放事務(wù)日志的共享目錄。4、本終端是否具有提交權(quán)限在多個(gè)終端的情況下,數(shù)據(jù)庫(kù)中斷后對(duì)事務(wù)日志的訪問(wèn),一個(gè)日志文件只能由一個(gè)終端執(zhí)行寫(xiě)入操作;日志文件之間可能存在數(shù)據(jù)的關(guān)聯(lián)關(guān)系,但日志文件記錄關(guān)聯(lián)關(guān)系的能力遠(yuǎn)不如數(shù)據(jù)庫(kù);我們約定提交操作只能由一個(gè)終端進(jìn)行,在配置信息中記錄這個(gè)終端具有提交權(quán)限,就能夠通過(guò)配置實(shí)現(xiàn)由一個(gè)終端執(zhí)行提交操作。本發(fā)明中事務(wù)日志存儲(chǔ)的文件結(jié)構(gòu)
1、存儲(chǔ)日志存儲(chǔ)日志用來(lái)保存內(nèi)存數(shù)據(jù)添加或更新后的日志記錄;內(nèi)存數(shù)據(jù)在數(shù)據(jù)庫(kù)表中的主鍵就作為存儲(chǔ)日志文件名稱(chēng),數(shù)據(jù)的相關(guān)信息存儲(chǔ)到該存儲(chǔ)日志文件中。2、刪除日志刪除日志用來(lái)保存內(nèi)存數(shù)據(jù)刪除后的日志記錄;內(nèi)存數(shù)據(jù)在數(shù)據(jù)庫(kù)表中的主鍵就作為刪除日志文件名稱(chēng),數(shù)據(jù)的相關(guān)信息都存儲(chǔ)到該刪除日志文件中。3、日志分類(lèi)整個(gè)系統(tǒng)需要存儲(chǔ)多種數(shù)據(jù),我們把同一類(lèi)型的數(shù)據(jù)放到一個(gè)日志文件夾中,以類(lèi)型名稱(chēng)命名為文件夾名稱(chēng);每個(gè)類(lèi)型的文件夾中包括兩個(gè)子文件夾,子文件夾名稱(chēng)分別是“存儲(chǔ)日志”和“刪除日志”;“存儲(chǔ)日志”用來(lái)保存存儲(chǔ)日志信息,“刪除日志” 用來(lái)保存刪除日志信息。4、班次分類(lèi)在人機(jī)交互的生產(chǎn)系統(tǒng)中都有班次的概念,每個(gè)班次的數(shù)據(jù)單獨(dú)存放在一個(gè)日志文件夾中,用“日期+班次”命名為日志文件夾名稱(chēng)。5、存儲(chǔ)位置班次日志文件夾的存儲(chǔ)位置由配置信息確定。最后應(yīng)當(dāng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其限制;盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明的具體實(shí)施方式
進(jìn)行修改或者對(duì)部分技術(shù)特征進(jìn)行等同替換;而不脫離本發(fā)明技術(shù)方案的精神,其均應(yīng)涵蓋在本發(fā)明請(qǐng)求保護(hù)的技術(shù)方案范圍當(dāng)中。
權(quán)利要求
1.一種事務(wù)日志的記錄方法,其特征在于,該方法包括以下步驟步驟1、數(shù)據(jù)庫(kù)由連通狀態(tài)變?yōu)橹袛酄顟B(tài),執(zhí)行轉(zhuǎn)存操作,即,將內(nèi)存中的數(shù)據(jù)序列化后得到文本數(shù)據(jù)流,并將文本數(shù)據(jù)流記錄到事物日志上,此時(shí),存儲(chǔ)模式由數(shù)據(jù)庫(kù)存儲(chǔ)模式轉(zhuǎn)換為事務(wù)日志存儲(chǔ)模式;步驟2、數(shù)據(jù)庫(kù)處于中斷狀態(tài),此時(shí),存儲(chǔ)模式采用事務(wù)日志存儲(chǔ)模式,存儲(chǔ)操作只和事物日志交互數(shù)據(jù);步驟3、數(shù)據(jù)庫(kù)由中斷狀態(tài)變?yōu)檫B通狀態(tài),執(zhí)行提交操作,S卩,將內(nèi)存中的數(shù)據(jù)提交到數(shù)據(jù)庫(kù)中,此時(shí),存儲(chǔ)模式由事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式;步驟4、數(shù)據(jù)庫(kù)處于連通狀態(tài),此時(shí),存儲(chǔ)模式采用數(shù)據(jù)庫(kù)存儲(chǔ)模式,存儲(chǔ)操作只和數(shù)據(jù)庫(kù)交互數(shù)據(jù),并刪除對(duì)應(yīng)的本地事務(wù)日志。
2.根據(jù)權(quán)利要求1所述的事務(wù)日志的記錄方法,其特征在于在步驟2中,事務(wù)日志存儲(chǔ)模式下,包括三種操作添加數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù);其中,添加數(shù)據(jù)和更新數(shù)據(jù)沒(méi)有區(qū)別,添加數(shù)據(jù)前,需要從本地序列范圍中獲取序列值作為臨時(shí)序列;刪除數(shù)據(jù)即刪除對(duì)應(yīng)的事務(wù)日志,刪除數(shù)據(jù)時(shí),如果刪除的是數(shù)據(jù)庫(kù)中斷后添加的數(shù)據(jù),則可以直接刪除,如果刪除的數(shù)據(jù)是數(shù)據(jù)庫(kù)中斷前就存在的數(shù)據(jù),則需要記錄對(duì)應(yīng)的刪除日志,供數(shù)據(jù)庫(kù)連接后刪除使用;在步驟3中,提交過(guò)程如下從事務(wù)日志中讀取提交數(shù)據(jù);向數(shù)據(jù)庫(kù)提交添加命令,即先將該數(shù)據(jù)主鍵值替換成從數(shù)據(jù)庫(kù)序列中獲取的主鍵值,然后再把該數(shù)據(jù)添加到數(shù)據(jù)庫(kù); 向數(shù)據(jù)庫(kù)提交刪除命令,即向數(shù)據(jù)庫(kù)提交在事務(wù)日志存儲(chǔ)模式下記錄的刪除日志,以刪除數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù);判斷向數(shù)據(jù)庫(kù)提交的刪除命令和添加命令是否執(zhí)行成功,若執(zhí)行成功,即可將事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式。
全文摘要
本發(fā)明提供一種事務(wù)日志的記錄方法,該方法包括以下步驟數(shù)據(jù)庫(kù)由連通狀態(tài)變?yōu)橹袛酄顟B(tài),執(zhí)行轉(zhuǎn)存操作,即,將內(nèi)存中的數(shù)據(jù)序列化后得到文本數(shù)據(jù)流,并將文本數(shù)據(jù)流記錄到事物日志上,此時(shí),存儲(chǔ)模式由數(shù)據(jù)庫(kù)存儲(chǔ)模式轉(zhuǎn)換為事務(wù)日志存儲(chǔ)模式;數(shù)據(jù)庫(kù)處于中斷狀態(tài),此時(shí),存儲(chǔ)模式采用事務(wù)日志存儲(chǔ)模式,存儲(chǔ)操作只和事物日志交互數(shù)據(jù);數(shù)據(jù)庫(kù)由中斷狀態(tài)變?yōu)檫B通狀態(tài),執(zhí)行提交操作,即,將內(nèi)存中的數(shù)據(jù)提交到數(shù)據(jù)庫(kù)中,此時(shí),存儲(chǔ)模式由事務(wù)日志存儲(chǔ)模式轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式;數(shù)據(jù)庫(kù)處于連通狀態(tài),此時(shí),存儲(chǔ)模式采用數(shù)據(jù)庫(kù)存儲(chǔ)模式,存儲(chǔ)操作只和數(shù)據(jù)庫(kù)交互數(shù)據(jù),并刪除對(duì)應(yīng)的本地事務(wù)日志。該方法具有簡(jiǎn)單、快捷、使用方便的優(yōu)點(diǎn)。
文檔編號(hào)G06F17/30GK102289476SQ20111021567
公開(kāi)日2011年12月21日 申請(qǐng)日期2011年7月29日 優(yōu)先權(quán)日2011年7月29日
發(fā)明者何培峰, 劉大慶, 劉燕, 宋新強(qiáng), 栗海松, 琚軍平, 黃鵬杰 申請(qǐng)人:河南輝煌科技股份有限公司