專利名稱:一種嵌入式程序的兼容性升級(jí)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種嵌入式程序的兼容性升級(jí)方法。
背景技術(shù):
嵌入式應(yīng)用程序已廣泛地應(yīng)用于通信領(lǐng)域,在同步數(shù)字傳輸網(wǎng)絡(luò)/同步光傳輸網(wǎng)絡(luò)/密集波分復(fù)用(SDH/SONET/DWDM)等光網(wǎng)絡(luò)傳輸系統(tǒng)應(yīng)用中,網(wǎng)元設(shè)備便是基于嵌入式應(yīng)用程序,通過該嵌入式應(yīng)用程序,各網(wǎng)絡(luò)節(jié)點(diǎn)都需要實(shí)現(xiàn)配置/狀態(tài)數(shù)據(jù)的存儲(chǔ)、備份、恢復(fù)和保護(hù)等功能,使得在網(wǎng)元軟件異常、復(fù)位、設(shè)備掉電、芯片損壞等異常情況下確保各網(wǎng)絡(luò)節(jié)點(diǎn)仍然能夠正確保存并恢復(fù)出正確的配置/狀態(tài)數(shù)據(jù),確保光網(wǎng)絡(luò)傳輸系統(tǒng)正常運(yùn)行。基于嵌入式程序的設(shè)備則通常是采用數(shù)據(jù)庫來存儲(chǔ)配置/狀態(tài)數(shù)據(jù)。
由于在實(shí)際應(yīng)用當(dāng)中,需要不斷對(duì)網(wǎng)元設(shè)備的應(yīng)用軟件進(jìn)行升級(jí),以增強(qiáng)其功能或解決當(dāng)前運(yùn)行程序的缺陷。為了支持網(wǎng)元設(shè)備的可擴(kuò)展性,需要支持應(yīng)用軟件的兼容性升級(jí),以保證擴(kuò)展功能的應(yīng)用和保持對(duì)前向功能的兼容,而保證兼容性升級(jí)功能的實(shí)現(xiàn),但最核心的部分是支持?jǐn)?shù)據(jù)庫的兼容性。
由于現(xiàn)有技術(shù)不支持?jǐn)?shù)據(jù)庫升級(jí),在升級(jí)軟件時(shí)只能刪除所有的備份數(shù)據(jù),并且在升級(jí)完成后重新下發(fā)配置,然后再備份數(shù)據(jù)。在此過程中,存在業(yè)務(wù)受到影響甚至中斷的危險(xiǎn)。同時(shí),為保證數(shù)據(jù)庫的一致性,必須在原有的數(shù)據(jù)庫結(jié)構(gòu)不變的情況下對(duì)字段進(jìn)行重新定義,或重新設(shè)計(jì)一個(gè)數(shù)據(jù)庫,放棄原有的數(shù)據(jù)庫設(shè)計(jì)。因此,利用現(xiàn)有技術(shù)升級(jí)嵌入式應(yīng)用程序存在兼容性差和升級(jí)復(fù)雜的缺點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明提供一種嵌入式程序的兼容性升級(jí)方法,以解決現(xiàn)有升級(jí)嵌入式應(yīng)用程序中存在兼容性差和升級(jí)復(fù)雜的問題。
為解決上述問題,本發(fā)明提供以下技術(shù)方案一種嵌入式程序的兼容性升級(jí)方法,包括下述步驟A、在設(shè)備上完成升級(jí)程序的加載并重新啟動(dòng)設(shè)備;B、判斷升級(jí)前和升級(jí)后的數(shù)據(jù)庫的版本號(hào)是否一致,如果不一致,則執(zhí)行升級(jí)程序創(chuàng)建新數(shù)據(jù)庫并進(jìn)行步驟C,否則,將升級(jí)前的備份數(shù)據(jù)庫恢復(fù)到內(nèi)存并進(jìn)行步驟D;C、將新數(shù)據(jù)庫中各字段與備份數(shù)據(jù)庫中的字段進(jìn)行比較,如果字段相同則將備份數(shù)據(jù)庫該字段對(duì)應(yīng)的數(shù)據(jù)恢復(fù)到新數(shù)據(jù)庫對(duì)應(yīng)的字段中;D、正常啟動(dòng)設(shè)備并完成升級(jí)。
根據(jù)上述方法步驟C包括下述步驟(1)取新數(shù)據(jù)庫的一個(gè)字段作為當(dāng)前字段;(2)將當(dāng)前字段與備份數(shù)據(jù)庫中的字段進(jìn)行比較,判斷當(dāng)前字段是否為備份數(shù)據(jù)庫中的一個(gè)字段,如果是則進(jìn)行步驟(3),否則進(jìn)行步驟(4);(3)將備份數(shù)據(jù)庫中對(duì)應(yīng)字段的所有數(shù)據(jù)恢復(fù)到新數(shù)據(jù)庫的當(dāng)前字段中;(4)判斷是否已比較完新數(shù)據(jù)庫中的字段,如果是則結(jié)束比較,否則,取新數(shù)據(jù)庫中的下一個(gè)字段作為當(dāng)前字段并進(jìn)行步驟(2)。
如果備份數(shù)據(jù)庫存在多級(jí)備份,則在使用備份數(shù)據(jù)庫前先對(duì)各級(jí)備份進(jìn)行統(tǒng)一,并在后續(xù)步驟中使用統(tǒng)一后的備份數(shù)據(jù)庫。
步驟C中,如果新數(shù)據(jù)庫中的字段與備份數(shù)據(jù)庫中的字段不相同,則給該字段賦默認(rèn)的數(shù)據(jù)。
當(dāng)數(shù)據(jù)庫恢復(fù)完成后,刪除升級(jí)前的備份數(shù)據(jù)庫并備份當(dāng)前使用的數(shù)據(jù)庫。
所述設(shè)備為傳輸網(wǎng)絡(luò)中的網(wǎng)元設(shè)備。
采用本發(fā)明,可以提高設(shè)備的可擴(kuò)展性,使設(shè)備具有前向兼容的擴(kuò)展能力;同時(shí)也能提高設(shè)備的可維護(hù)性,簡化升級(jí)步驟,以及提高設(shè)備維護(hù)升級(jí)的安全性。
圖1為網(wǎng)元設(shè)備中數(shù)據(jù)庫的存儲(chǔ)及備份示意圖;圖2為本發(fā)明的實(shí)現(xiàn)兼容性升級(jí)的主要流程圖;圖3為從備份數(shù)據(jù)庫恢復(fù)數(shù)據(jù)到新建數(shù)據(jù)庫的流程圖。
具體實(shí)施例方式
對(duì)于基于嵌入式應(yīng)用程序的設(shè)備而言,一般采用嵌入式關(guān)系型數(shù)據(jù)庫來存儲(chǔ)配置和狀態(tài)信息。在升級(jí)過程中,加載完升級(jí)程序后需要對(duì)數(shù)據(jù)庫進(jìn)行升級(jí)處理。由于升級(jí)后使用的數(shù)據(jù)庫可能與升級(jí)前使用的數(shù)據(jù)庫相同,也可能不相同,因此需要在加載完升級(jí)程序后的重啟動(dòng)過程對(duì)數(shù)據(jù)庫進(jìn)行處理。
對(duì)于升級(jí)前后的數(shù)據(jù)庫是不相同,可通過版本號(hào)進(jìn)行識(shí)別。在本發(fā)明中,對(duì)于升級(jí)前后使用相同的數(shù)據(jù)庫則直接從備份的數(shù)據(jù)庫中恢復(fù)數(shù)據(jù),如果升級(jí)前后使用的數(shù)據(jù)庫不相同,則將新建的數(shù)據(jù)庫與備份的數(shù)據(jù)庫中的字段比較,并將相同字段的數(shù)據(jù)從備份數(shù)據(jù)庫中恢復(fù)到新建的數(shù)據(jù)庫中。
在嵌入式關(guān)系型數(shù)據(jù)庫管理系統(tǒng)中,文件實(shí)際上是內(nèi)存中的一塊區(qū)域。關(guān)系型數(shù)據(jù)庫是基于表格的數(shù)據(jù)管理,基本單位是記錄(record)和字段(field),如表1所示表1
數(shù)據(jù)庫文件包括一個(gè)數(shù)據(jù)庫文件結(jié)構(gòu)塊和若干個(gè)記錄塊。數(shù)據(jù)庫文件結(jié)構(gòu)塊包括庫文件標(biāo)志信息和字段描述塊兩部分,如表2所示表2
本發(fā)明所述數(shù)據(jù)庫的兼容性是指支持?jǐn)?shù)據(jù)庫字段的任意增加、刪除、插入和順序的調(diào)整,數(shù)據(jù)庫記錄數(shù)的增加、減少;但不支持?jǐn)?shù)據(jù)庫字段屬性的改變。
本實(shí)施例主要以光傳輸網(wǎng)絡(luò)中的網(wǎng)絡(luò)設(shè)備為例對(duì)本發(fā)明進(jìn)行說明。
參閱圖1所示,SDRAM為網(wǎng)元設(shè)備的內(nèi)存,非易失性存儲(chǔ)器(NVRAM)和FLASH用于備份SDRAM中的數(shù)據(jù)庫文件。SDRAM中的數(shù)據(jù)庫文件實(shí)時(shí)地備份到NVRAM中,而NVRAM中的數(shù)據(jù)庫文件則定時(shí)或通過人工方式備份到FLASH中。
應(yīng)用程序模塊通過調(diào)用數(shù)據(jù)庫模塊的應(yīng)用編程接口(API)實(shí)現(xiàn)數(shù)據(jù)庫文件的創(chuàng)建,每個(gè)數(shù)據(jù)庫文件都有版本號(hào)標(biāo)識(shí),在API參數(shù)中有版本號(hào)信息。本發(fā)明通過版本號(hào)標(biāo)識(shí)確定是否進(jìn)行升級(jí),所以在創(chuàng)建每個(gè)數(shù)據(jù)庫文件時(shí)首先判斷版本號(hào),如果API參數(shù)中的版本號(hào)與備份數(shù)據(jù)庫文件的版本號(hào)一致,則表明不需要升級(jí)處理,直接恢復(fù)數(shù)據(jù)庫文件既可;如果API參數(shù)的版本號(hào)與備份數(shù)據(jù)庫文件的版本號(hào)不一致(通常在程序設(shè)計(jì)時(shí)版本號(hào)都會(huì)遞加),則啟動(dòng)數(shù)據(jù)庫文件升級(jí)操作。
參閱圖2所示,實(shí)現(xiàn)兼容性升級(jí)的主要過程如下步驟100在網(wǎng)元設(shè)備上完成升級(jí)程序的加載并重新啟動(dòng)網(wǎng)元設(shè)備。
步驟110調(diào)用創(chuàng)建數(shù)據(jù)庫的應(yīng)用編程接口(API),進(jìn)入數(shù)據(jù)庫創(chuàng)建過程。
步驟120判斷升級(jí)前和升級(jí)后的數(shù)據(jù)庫的版本號(hào)是否一致,如果不一致,則進(jìn)行步驟130,否則進(jìn)行步驟170。
步驟130將非易失性存儲(chǔ)器(NVRAM)和閃存(FLASH)中的多級(jí)備份數(shù)據(jù)庫統(tǒng)一備份到NVRAM中。
由于數(shù)據(jù)庫多級(jí)備份,可能各備份區(qū)的數(shù)據(jù)庫文件不同,將NVRAM/FLASH等存儲(chǔ)介質(zhì)的備份數(shù)據(jù)庫進(jìn)行比較,并將最新的數(shù)據(jù)庫統(tǒng)一備份到NVRAM中。
步驟140執(zhí)行升級(jí)程序在SDRAM中根據(jù)新的數(shù)據(jù)庫結(jié)構(gòu)創(chuàng)建新數(shù)據(jù)庫。
步驟150比較新數(shù)據(jù)庫的每個(gè)字段是否是原有數(shù)據(jù)庫有的字段;如果是則將原有數(shù)據(jù)庫對(duì)應(yīng)字段的數(shù)據(jù)恢復(fù)到新數(shù)據(jù)庫的對(duì)應(yīng)字段中。
步驟160刪除NVRAM/FLASH中的原有數(shù)據(jù)庫,將新的數(shù)據(jù)庫備份到NVRAM/FLASH中,進(jìn)行步驟180。
步驟170將非易失性存儲(chǔ)器(NVRAM)和閃存(FLASH)中的多級(jí)備份數(shù)據(jù)庫統(tǒng)一備份到NVRAM中,并將統(tǒng)一后的備份數(shù)據(jù)庫恢復(fù)到內(nèi)存。
步驟180數(shù)據(jù)庫數(shù)據(jù)的恢復(fù)工作完成后正常啟動(dòng)設(shè)備以完成升級(jí)。
參閱圖3所示,上述步驟150中,從備份數(shù)據(jù)庫恢復(fù)數(shù)據(jù)到新建數(shù)據(jù)庫的具體處理過程如下步驟200從新數(shù)據(jù)庫中取第一個(gè)字段作為當(dāng)前字段;步驟210將當(dāng)前字段與備份數(shù)據(jù)庫中的字段進(jìn)行比較,判斷當(dāng)前字段是否為備份數(shù)據(jù)庫中的一個(gè)字段,如果是則進(jìn)行步驟220,否則進(jìn)行步驟230。
步驟220將備份數(shù)據(jù)庫中對(duì)應(yīng)字段的所有數(shù)據(jù)恢復(fù)到新數(shù)據(jù)庫的當(dāng)前字段中。
步驟230判斷是否已比較完新數(shù)據(jù)庫中的字段,如果是則結(jié)束比較,進(jìn)行上述流程中的步驟160,否則進(jìn)行步驟240。
步驟240取新數(shù)據(jù)庫中的下一個(gè)字段作為當(dāng)前字段并進(jìn)行步驟210。
在將新數(shù)據(jù)庫與備份數(shù)據(jù)庫的字段比較過程中,如果新數(shù)據(jù)庫的字段不是備份數(shù)據(jù)庫中的字段即是新增加的字段,則給新數(shù)據(jù)庫中的該字段賦默認(rèn)的數(shù)據(jù),比如全賦0。
以上雖然網(wǎng)元設(shè)備為例對(duì)本發(fā)明的實(shí)現(xiàn)進(jìn)行說明,但并不限于此,本發(fā)明同樣適用于其他基于嵌入式應(yīng)用程序的設(shè)備,其實(shí)現(xiàn)原理相同。
權(quán)利要求
1.一種嵌入式程序的兼容性升級(jí)方法,其特征在于包括下述步驟A、在設(shè)備上完成升級(jí)程序的加載并重新啟動(dòng)設(shè)備;B、判斷升級(jí)前和升級(jí)后的數(shù)據(jù)庫的版本號(hào)是否一致,如果不一致,則執(zhí)行升級(jí)程序創(chuàng)建新數(shù)據(jù)庫并進(jìn)行步驟C,否則,將升級(jí)前的備份數(shù)據(jù)庫恢復(fù)到內(nèi)存并進(jìn)行步驟D;C、將新數(shù)據(jù)庫中各字段與備份數(shù)據(jù)庫中的字段進(jìn)行比較,如果字段相同則將備份數(shù)據(jù)庫該字段對(duì)應(yīng)的數(shù)據(jù)恢復(fù)到新數(shù)據(jù)庫對(duì)應(yīng)的字段中;D、正常啟動(dòng)設(shè)備并完成升級(jí)。
2.如權(quán)利要求1所述的方法,其特征在于,步驟C包括下述步驟(1)取新數(shù)據(jù)庫的一個(gè)字段作為當(dāng)前字段;(2)將當(dāng)前字段與備份數(shù)據(jù)庫中的字段進(jìn)行比較,判斷當(dāng)前字段是否為備份數(shù)據(jù)庫中的一個(gè)字段,如果是則進(jìn)行步驟(3),否則進(jìn)行步驟(4);(3)將備份數(shù)據(jù)庫中對(duì)應(yīng)字段的所有數(shù)據(jù)恢復(fù)到新數(shù)據(jù)庫的當(dāng)前字段中;(4)判斷是否已比較完新數(shù)據(jù)庫中的字段,如果是則結(jié)束比較,否則,取新數(shù)據(jù)庫中的下一個(gè)字段作為當(dāng)前字段并進(jìn)行步驟(2)。
3.如權(quán)利要求1或2所述的方法,其特征在于,如果備份數(shù)據(jù)庫存在多級(jí)備份,則在使用備份數(shù)據(jù)庫前先對(duì)各級(jí)備份進(jìn)行統(tǒng)一,并在后續(xù)步驟中使用統(tǒng)一后的備份數(shù)據(jù)庫。
4.如權(quán)利要求3所述的方法,其特征在于,步驟C中,如果新數(shù)據(jù)庫中的字段與備份數(shù)據(jù)庫中的字段不相同,則給該字段賦默認(rèn)的數(shù)據(jù)。
5.如權(quán)利要求3所述的方法,其特征在于,當(dāng)數(shù)據(jù)庫恢復(fù)完成后,刪除升級(jí)前的備份數(shù)據(jù)庫并備份當(dāng)前使用的數(shù)據(jù)庫。
6.如權(quán)利要求1所述的方法,其特征在于,所述設(shè)備為傳輸網(wǎng)絡(luò)中的網(wǎng)元設(shè)備。
全文摘要
本發(fā)明公開了一種嵌入式程序的兼容性升級(jí)方法,以解決現(xiàn)有升級(jí)嵌入式應(yīng)用程序中存在兼容性差和升級(jí)復(fù)雜的問題;該方法為在設(shè)備上完成升級(jí)程序的加載并重新啟動(dòng)設(shè)備,判斷升級(jí)前和升級(jí)后的數(shù)據(jù)庫是否相同,如果相同則將升級(jí)前的備份數(shù)據(jù)庫恢復(fù)到內(nèi)存;如果不相同,則執(zhí)行升級(jí)程序創(chuàng)建新數(shù)據(jù)庫,然后將新數(shù)據(jù)庫中各字段與備份數(shù)據(jù)庫中的字段進(jìn)行比較,如果字段相同則將備份數(shù)據(jù)庫該字段對(duì)應(yīng)的數(shù)據(jù)恢復(fù)到新數(shù)據(jù)庫對(duì)應(yīng)的字段中;最后正常啟動(dòng)設(shè)備并完成升級(jí)。
文檔編號(hào)G06F9/445GK1713143SQ200410049498
公開日2005年12月28日 申請(qǐng)日期2004年6月24日 優(yōu)先權(quán)日2004年6月24日
發(fā)明者唐曉軍, 謝勇 申請(qǐng)人:華為技術(shù)有限公司