專利名稱:保證嵌入式系統(tǒng)中數據一致性的方法
技術領域:
本發(fā)明涉及在嵌入式系統(tǒng)中保證數據一致性的數據保存方法。
背景技術:
目前嵌入式系統(tǒng)應用具有非常高的可配置性,能夠依據用戶的需要靈活地設置系統(tǒng)的運 行狀態(tài)。通常,這些對系統(tǒng)進行配置的數據存儲在非易失性的存儲芯片中,即要求數據在掉 電的情況下仍然能夠保存。
一般來說,嵌入式系統(tǒng)中配置數據都是以多個數據表的形式保存,即對于用戶的一個配 置操作,系統(tǒng)實現過程中會保存多個數據庫表。當系統(tǒng)接收到用戶配置操作后,會逐項對這 些數據表進行保存,在前一數據表保存完畢后才接著處理后一個數據表,直到所有數據表都 保存完畢。這些數據表中的數據之間經常不是孤立的,而是存在較強的關聯性,這些數據表 間可能存在的依賴或者索引等關系。如果在操作數據表的過程中出現系統(tǒng)掉電或者系統(tǒng)異常, 則可能導致保存的數據表之間的關聯數據不一致,可能導致業(yè)務異?;蛘哂行┫到y(tǒng)配置無法 啟動,嚴重的可能導致系統(tǒng)崩潰,因此,保證這些數據庫表之間關聯數據的一致性成為必要, 但目前的嵌入式系統(tǒng)缺少這種保證機制。
發(fā)明內容
為克服上述缺陷,本發(fā)明的目的在于提供一種在系統(tǒng)掉電或者系統(tǒng)異常的情況下,能夠 保證嵌入式系統(tǒng)中數據一致性的方法。
為達到上述發(fā)明目的,本發(fā)明采用如下技術方案該保證嵌入式系統(tǒng)中數據一致性的方 法包括-
(1) 定義并初始化數據操作標志表;
(2) 利用數據操作標志表的狀態(tài)進行數據表的操作。
其中,所述的步驟(1)具體為:
〔11)定義數據操作標志表中的關鍵標識和操作標志;
(12)選取待保存的數據表集合;
(13)在操作標志表中為每-項數據表設置一個唯一的關鍵標識,并將操作標志設為無 效狀態(tài)。
其中,所述的步驟(2)具體為
(21) 保存待保存的數據表;
(22) 判斷對數據表的保存是否成功,若保存成功,執(zhí)行步驟(23);若保存失敗,執(zhí)行 步驟(24);
(23) 進入保存成功后的數據處理;
(24) 恢復處理后的數據。 其中,所述的步驟(21)具體為:
(211) 獲取一項待保存的數據表;
(212) 對該數據表對應的上次數據表進行備份,并保存該數據表的當前數據;
(213) 修改該數據表的操作標志表中的操作標志為有效。
其中,所述的步驟(23)具體為判斷待保存的數據表是否保存完畢,若沒有保存完畢, 返回執(zhí)行步驟(211);若保存完畢,則流程結束。 其中,所述的步驟(24)具體為
(241 )獲取保存后的操作標志表中操作標志為有效的一項數據表;
(242) 將該操作標志為有效的數據表對應的備份數據恢復為當前數據;
(243) 將該操作標志為有效的數據表對應的操作標志表中的操作標志設為無效;
(244) 判斷保存后的數據表是否恢復完畢,若恢復完畢,則流稃結束;若沒有恢復完畢, 返回執(zhí)行歩驟(241)。
若在步驟(21)中,系統(tǒng)尚未徹底完成數據的處理和保存,系統(tǒng)斷電或重啟,則進入系統(tǒng)復位流程,具體為
系統(tǒng)復位后,判斷數據表的操作標志表中是否存在操作標志為無效狀態(tài)的數據表,若不 存在操作標志為無效狀態(tài)的數據表,則流程結束;若存在操作標志為無效狀態(tài)的數據表,執(zhí) 行如下步驟
(701) 獲取保存后的操作標志表中操作標志為有效的一項數據表;
(702) 將該操作標志為有效的數據表對應的備份數據恢復為當前數據;
(703) 將該操作標志為有效的數據表對應的操作標志表中的操作標志設為無效;
(704) 判斷保存后的數據表是否恢復完畢,若恢復完畢,則流程結束;若沒有恢復完畢,返回執(zhí)行步驟(701)。
由上述技術方案所描述的保證嵌入式系統(tǒng)中數據一致性的方法,在系統(tǒng)進行配置的時候, 只要數據配置發(fā)生錯誤就能夠將所有的配置數據還原到上次配置的數據,若沒有發(fā)生錯誤, 則可以完整地將本次配置的數據保存下來,這樣保證了系統(tǒng)的配置數據的一致性,不會同時 存在兩種不同的配置數據而導致系統(tǒng)無法正常運行。
圖1為本發(fā)明保證嵌入式系統(tǒng)中數據一致性的方法中使用的數據操作標志表; 圖2為本發(fā)明保證嵌入式系統(tǒng)中數據一致性的方法的多數據表的處理流程; 圖3為本發(fā)明保證嵌入式系統(tǒng)中數據一致性的方法在系統(tǒng)重啟動后的流程。
具體實施例方式
下面結合附圖對本發(fā)明保證嵌入式系統(tǒng)中數據一致性的方法進行詳細描述。
在嵌入式系統(tǒng)接收到用戶配置操作后,會逐項對這些數據表進行保存,在前一數據表保 存完畢后才接著處理后一個數據表,直到所有數據表都保存完畢。但有的時候可能會出現保 存了一部分數據后就死機或斷電,系統(tǒng)重啟動后所獲得的數據就是一部分是配置以前的數據, 一部分是配置以后的數據,無法保證數據表的一致性,這種錯誤導致的后果可大可小,可能 導致業(yè)務異常或者有些系統(tǒng)配置無法啟動,嚴重的可能導致系統(tǒng)崩潰。
本發(fā)明保證嵌入式系統(tǒng)中數據一致性的方法在對多個數據表的處理過程中,能夠保證操 作前后的數據滿足一致性需求,該方法對數據的處理要么全部處理成功,要么全部都不處理, 這樣雖然不能保證數據一定處理成功,但至少保證了數據的一致性,并且在任意數據表異常 或者系統(tǒng)掉電的情況下,能夠恢復到操作前的狀態(tài),很好的保證多數據表之間的數據一致性。 這樣就能夠確保系統(tǒng)的正常運行,沒有保存下來的配置可以重啟動以后再進行設置。
本發(fā)明實現上述數據處理的技術方案包括以下歩驟
第一步定義數據操作標志表,數據操作標志表包括所有數據表的操作標志,每張數據 表的操作標志表含有兩個部分關鍵標識和操作標志(如圖l所示),關鍵標識是識別不同的 數據表,操作標志的用途是記錄數據表的處理狀態(tài)。
第二步初始化數據操作標志表,在數據操作標志表中必須為操作中涉及的每一項數據
表分配一個唯一的關鍵標識,保證每一數據表的關鍵標識在此數據操作標志表中的唯一性,
并且將每個數據表在數據操作表中的操作標志初始化為無效狀態(tài)。將上述初始化的結果保存到數據操作標志表文件。
第三步當需要保存多個數據表的數據時,按照如下方式對每個數據表進行處理。
1) 首先將當前需要處理的數據表的上次數據進行備份,然后保存本次的數據。
2) 如果當前數據表保存成功,則依據當前數據表的關鍵標識在數據操作標志表中査找其 對應的操作標志,找到操作標志后將該數據表的操作標志狀態(tài)字段修改為有效,并保存數據 操作標志表。
3) 如果由于某種原因導致當前數據表的操作失敗,包括數據配置過程中出錯或數據配置 無效等,則在數據操作標志表中查找操作標志狀態(tài)字段為有效的所有數據表,從備份數據中 將該部分數據表的恢復,直到全部數據都從備份數據中恢復,恢復成功的同時,修改數據操 作標志表的對應操作標志狀態(tài)字段為無效,并保存數據操作標志表。
第四步系統(tǒng)重新運行時,檢査數據表的操作標志表中的每一項數據的操作標志狀態(tài)字 段是否都為有效,如果存在數據表的操作標志字段有無效的情況,則需要將數據操作標志狀 態(tài)字段中的所有操作標志狀態(tài)為有效的數據表恢復為備份數據。
本發(fā)明保證嵌入式系統(tǒng)中數據一致性的方法較好地解決了資源相對緊張的嵌入式應用在 系統(tǒng)掉電或者系統(tǒng)異常的情況下,若數據表全部處理成功則不用恢復到處理前的數據,而在 數據表沒有全部處理成功地情況下,將已經處理并成功保存的數據恢復到數據操作前的狀態(tài), 保證了多數據表之間數據的一致性。在系統(tǒng)重新啟動以后還能夠快速地恢復系統(tǒng)到能夠運行 的配置狀態(tài),防止系統(tǒng)無法啟動。
本發(fā)明在現行的光通訊系統(tǒng)中會有較好的應用,傳輸設備時隙配置成功后保存時隙數據 時可以采用本發(fā)明所述的方法。需要保存的時隙數據涉及多個文件,多個文件的保存要么全 部成功,要么都不成功,才能保證時隙數據的一致,如圖2所示,實現的具體歩驟如下
201、 準備需要配置的時隙數據表的集合,以A表示,定義包含數據關鍵標識字段和數據 操作標志字段的數據操作標志表,依照時隙數據表的個數申請數據操作標志表的數組;
202、 將歩驟201中申請的數據操作標志表的數組初始化,每一項時隙數據分配一個唯一 的關鍵標識填入數據中的關鍵標識字段,并將該項數據的操作標志字段初始化為無效字段, 將初始化完成的數據操作標志表保存到文件中。該無效字段可以使用二進制的0/1表示,若 用0表示無效,則用1表示有效;若用0表示有效,則用1表示無效。
203、 判斷集合A中是否還有數據表需要處理,若集合A中還有數據表需要處理,執(zhí)行歩 驟204;若集合A中沒有數據表需要處理,執(zhí)行步驟212;
204、 取得當前需要保存的時隙數據表;
205、 將該時隙數據表對應的上次時隙數據拷貝到備份文件中;
206、 將當前需要處理的時隙數據表處理完成后寫入對應的時隙文件中;
207、 判斷時隙數據表是否保存成功,如果數據表保存成功,執(zhí)行步驟208;若數據表沒 有保存成功,執(zhí)行步驟209;
208、 修改數據操作標志表中對應時隙數據的操作標志為有效,并將數據操作標志表保存 到文件,返回執(zhí)行步驟203;
209、 取得當前數據操作標志表中操作標志為有效數據表集合,以B表示;
210、 判斷集合B中是否還有數據表需要處理,若集合B中還有數據表需要處理,執(zhí)行歩 驟211;若集合B中沒有數據表需要處理,執(zhí)行步驟212;
211、 取下一項需要處理的數據表,從備份文件將該項數據表的恢復,將數據操作標志表對應數據的操作標志修改為無效,并將該數據操作標志表保存,返回執(zhí)行歩驟210;
212、 本次系統(tǒng)配置的流程結束。
上述歩驟為,本方法能夠正常運行完全的步驟,若是系統(tǒng)尚未徹底完成數據的處理和保 存,系統(tǒng)就斷電或重啟,也就是時隙配置過程中,系統(tǒng)斷電或重啟,則需要將系統(tǒng)進行復位 操作。該復位操作的流程如圖3所示,具體歩驟如下-
301、 系統(tǒng)重新啟動,裝載系統(tǒng)配置;
302、 在操作標志表中査找操作標志狀態(tài)字段為無效的數據表,并將與該數據表有關聯的 數據表列成一個集合,以C表示;
303、 判斷集合C中是否有數據,若集合C中有數據,執(zhí)行歩驟304;若集合C中沒有數 據,執(zhí)行歩驟307;
304、 在操作標志表中査找操作標志為有效的數據表集合,以D表示;
305、 判斷集合D中是否還有數據需要處理,若集合D中還有數據需要處理,執(zhí)行歩驟 306;若集合D中沒有數據需要處理,執(zhí)行步驟307;
306、 取下一項需要處理的數據表,從備份文件將該項數據表的恢復,將數據操作標志表 對應數據的操作標志修改為無效,并將該數據操作標志表保存,返回執(zhí)行歩驟305;
307、 流程結束,系統(tǒng)進入正常運行狀態(tài)。當然,上述操作也可以變?yōu)榱硪环N方式系統(tǒng)復位后,根據數據表的操作標志表判斷是 否存在操作標志為無效狀態(tài)的數據表若不存在,則流程結束;若存在,執(zhí)行如下步驟
(701) 獲取保存后的操作標志表中操作標志為有效的一項數據表;
(702) 將該操作標志為有效的數據表對應的備份數據恢復為當前數據;
(703) 將該操作標志為有效的數據表對應的操作標志表中的操作標志設為無效;
(704) 判斷保存后的數據表是否恢復完畢,若恢復完畢,則流程結束;若沒有恢復完畢,
返回執(zhí)行歩驟(701)。
系統(tǒng)復位后的流程無論采用哪種實施方式,都可以達到在系統(tǒng)無法正常保存好數據時, 將部分修改后的數據表中的數據恢復到修改前的狀態(tài),保證所用數據的一致性,使得系統(tǒng)不 會由于系統(tǒng)配置數據的不一致而無法正常運行。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,該具體實施方式
能夠對時隙配置過程 中發(fā)生的一系列系統(tǒng)錯誤進行糾正,甚至對系統(tǒng)以為斷電而引起的配置故障也能還原,保證 系統(tǒng)的時隙配置數據表的一致性。對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原 理的前提下,還可以做出若干改進,這些改進應視為本發(fā)明的保護范圍。
權利要求
1、一種保證嵌入式系統(tǒng)中數據一致性的方法,其特征在于包括(1)定義并初始化數據操作標志表;(2)利用數據操作標志表的狀態(tài)進行數據表的操作。
2、 按照權利要求l所述的保證嵌入式系統(tǒng)中數據一致性的方法,其特征在于所述的歩 驟(1)具體為-(11 )定義數據操作標志表中的關鍵標識和操作標志;(12) 選取待保存的數據表集合;(13) 在操作標志表中為每一項數據表設置一個唯一的關鍵標識,并將操作標志設為無 效狀態(tài)。
3、 按照權利要求2所述的保證嵌入式系統(tǒng)中數據一致性的方法,其特征在于所述的步 驟(2)具體為-(21) 保存待保存的數據表;(22) 判斷對數據表的保存是否成功,若保存成功,執(zhí)行步驟(23);若保存失敗,執(zhí)行歩驟(24);(23) 進入保存成功后的數據處理;(24) 恢復處理后的數據。
4、 按照權利要求3所述的保證嵌入式系統(tǒng)中數據一致性的方法,其特征在于所述的歩 驟(21)具體為(211) 獲取一項待保存的數據表;(212) 對該數據表對應的上次數據表進行備份,并保存該數據表的當前數據;(213) 修改該數據表的操作標志表中的操作標志為有效。
5、 按照權利要求4所述的保證嵌入式系統(tǒng)中數據一致性的方法,其特征在于所述的歩 驟(23)具體為判斷待保存的數據表是否保存完畢,若沒有保存完畢,返回執(zhí)行歩驟(211);若保存完畢,則流程結束。
6、 按照權利要求5所述的保證嵌入式系統(tǒng)中數據一致性的方法,其特征在于所述的歩 驟(24)具體為(241) 獲取保存后的操作標志表中操作標志為有效的一項數據表;(242) 將該操作標志為有效的數據表對應的備份數據恢復為當前數據;(243) 將該操作標志為有效的數據表對應的操作標志表中的操作標志設為無效;(244) 判斷保存后的數據表是否恢復完畢,若恢復完畢,則流程結束;若沒有恢復完畢, 返回執(zhí)行歩驟(241)。
7、按照權利要求3所述的保證嵌入式系統(tǒng)中數據一致性的方法,其特征在于若系統(tǒng)尚 未徹底完成數據的處理和保存,系統(tǒng)斷電或重啟,則進入系統(tǒng)復位流程,具體為系統(tǒng)復位后,判斷數據表的操作標志表中是否存在操作標志為無效狀態(tài)的數據表,若不 存在操作標志為無效狀態(tài)的數據表,則流程結束;若存在操作標志為無效狀態(tài)的數據表,執(zhí) 行如下步驟(701) 獲取保存后的操作標志表中操作標志為有效的一項數據表;(702) 將該操作標志為有效的數據表對應的備份數據恢復為當前數據;(703) 將該操作標志為有效的數據表對應的操作標志表中的操作標志設為無效;(704) 判斷保存后的數據表是否恢復完畢,若恢復完畢,則流程結束;若沒有恢復完畢, 返回執(zhí)行歩驟(701)。
全文摘要
本發(fā)明公開了一種保證嵌入式系統(tǒng)中數據一致性的方法,為解決現有嵌入式系統(tǒng)中沒有保證數據一致性的機制而發(fā)明。該保證嵌入式系統(tǒng)中數據一致性的方法定義一個操作標志表,通過操作標志表中的關鍵標識來識別各個數據表的不同,通過操作標志表中的操作標志的有效和無效狀態(tài)來判斷數據表是否完全處理完成,在沒有完全處理完成的情況下恢復數據表到操作以前的數據,若完全處理完成則使用新的配置設置。本發(fā)明保證嵌入式系統(tǒng)中數據一致性的方法主要用在系統(tǒng)資源緊缺的嵌入式系統(tǒng),特別是通信領域的嵌入式系統(tǒng)。
文檔編號G06F11/14GK101201771SQ200610165809
公開日2008年6月18日 申請日期2006年12月12日 優(yōu)先權日2006年12月12日
發(fā)明者劉建軍, 李小偉, 潘傳友 申請人:中興通訊股份有限公司