亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于嵌入式數(shù)據(jù)庫的存儲方法和裝置的制作方法

文檔序號:6468215閱讀:117來源:國知局
專利名稱:基于嵌入式數(shù)據(jù)庫的存儲方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于嵌入式數(shù)據(jù)庫的存儲 方法和裝置。
背景技術(shù)
嵌入式數(shù)據(jù)庫以表為單位保存在存儲器上,如果要修改嵌入式 數(shù)據(jù)庫在內(nèi)存中的數(shù)據(jù),需要將新數(shù)據(jù)重新保存到存儲器上,但在
將新數(shù)據(jù)保存到存^f諸器的過程中,如果出現(xiàn)系統(tǒng)掉電或復(fù)位,會導(dǎo) 致保存到存儲器中的部分是新數(shù)據(jù),部分是舊數(shù)據(jù)的情況,這樣會 石皮壞數(shù)據(jù)的一致性。
目前,主要采用XML的方式存儲數(shù)據(jù),過去的方法是修改了 一張表后將新數(shù)據(jù)以一種中間格式保存到存儲器,然后將中間格式 的文件更名為XML的文件。如果同時修改了 3張表,當(dāng)?shù)?、 2張 表都保存完成,而保存第3張表的時候系統(tǒng)復(fù)位,那么第1、 2張表 的數(shù)據(jù)就是修改之后,第3張表數(shù)據(jù)是修改之前的。這樣不能保證 嵌入式凄t據(jù)庫ft據(jù)的 一致性和正確性。

發(fā)明內(nèi)容
考慮到相關(guān)技術(shù)中存在的在嵌入式數(shù)據(jù)庫的數(shù)據(jù)存儲過程中, 不能保證嵌入式數(shù)據(jù)庫數(shù)據(jù)的 一致性和正確性的問題而提出本發(fā)明,為此,本發(fā)明的主要目的在于提供一種基于嵌入式數(shù)據(jù)庫的存 儲方法及裝置,以解決上述問題。
根據(jù)本發(fā)明的一個方面,提供一種基于嵌入式數(shù)據(jù)庫的存儲方法。
根據(jù)本發(fā)明的基于嵌入式數(shù)據(jù)庫的存儲方法包括在存儲器上 預(yù)先設(shè)置第一存儲區(qū)域和第二存儲區(qū)域,其中,存儲器用于存儲嵌
入式數(shù)據(jù)庫的數(shù)據(jù);對嵌入式凄《據(jù)庫的多組數(shù)據(jù)進(jìn)4亍更新#:作,并
且,對于完成更新的每組數(shù)據(jù),分別存儲到第一存儲區(qū)域;如果將 完成更新的多組數(shù)據(jù)都成功存儲到第一存儲區(qū)域,則將第一存儲區(qū) 域中存儲的多組數(shù)據(jù)拷貝到第二存儲區(qū)域中。
進(jìn)一步地,方法還包括如果將多組數(shù)據(jù)存儲到第一存儲區(qū)域 中失敗,則重新對嵌入式數(shù)據(jù)庫的多組數(shù)據(jù)進(jìn)4亍更新才喿作。
另外,在進(jìn)行更新操作之前,該方法還包括預(yù)先設(shè)置指示將 修改的多組數(shù)據(jù)存儲到第 一存儲區(qū)域下的第 一標(biāo)識,及指示將第一 存儲區(qū)域中的修改后的多組數(shù)據(jù)存儲到第二存儲區(qū)域下的第二標(biāo) 識;將嵌入式數(shù)據(jù)庫中修改的多組數(shù)據(jù)存儲到第一存儲區(qū)域中包括 在內(nèi)存中寫入第 一標(biāo)識,并將嵌入式數(shù)據(jù)庫中修改的多組數(shù)據(jù)存儲 到第 一存儲區(qū)域中;將第 一存儲區(qū)域中存儲的多組數(shù)據(jù)拷貝到第二 存儲區(qū)域中包括在內(nèi)存中寫入第二標(biāo)識,并將第一存儲區(qū)域中存 儲的多組數(shù)據(jù)拷貝到第二存儲區(qū)域中。
優(yōu)選地,在寫入第一標(biāo)識之后,該方法還包括計(jì)算并保存第 一標(biāo)識對應(yīng)的校驗(yàn)碼,并將第一標(biāo)識和第 一標(biāo)識對應(yīng)的校驗(yàn)碼復(fù)制 到存^f諸器中;在寫入第二才示識之后,該方法還包4舌在內(nèi)存中寫入 第二標(biāo)識覆蓋第一標(biāo)識,計(jì)算并保存第二標(biāo)識對應(yīng)的校驗(yàn)碼,并將第二標(biāo)識和第二標(biāo)識對應(yīng)的才交—驗(yàn)碼復(fù)制到存^f渚器中覆蓋第 一標(biāo)識和 第 一標(biāo)識對應(yīng)的校驗(yàn)碼。
進(jìn)一步地,該方法還包括讀取內(nèi)存中當(dāng)前的標(biāo)識,并計(jì)算讀 取的標(biāo)識的參考4交-驗(yàn)碼,如果計(jì)算的參考才交-驗(yàn)碼與內(nèi)存中存儲的標(biāo) 識對應(yīng)的校驗(yàn)碼一致,則讀取標(biāo)識所指示的存儲區(qū)域,其中,標(biāo)識 為第 一纟示識或第二才示識。
其中,如果在內(nèi)存中讀取的參考校驗(yàn)碼與標(biāo)識對應(yīng)的校驗(yàn)碼不 一致,該方法還包括讀耳又存々者器中當(dāng)前的標(biāo)識,并計(jì)算讀取的標(biāo) 識的參考校驗(yàn)碼,如果計(jì)算的參考校驗(yàn)碼與存儲器中存儲的標(biāo)識對 應(yīng)的校驗(yàn)碼一致,則讀取標(biāo)識所指示的存儲區(qū)域,其中,標(biāo)識為第 一標(biāo)識或第二標(biāo)識。
進(jìn)一步地,上述方法還包括為多組數(shù)據(jù)分別設(shè)置相應(yīng)的數(shù)據(jù) 標(biāo)識,數(shù)據(jù)標(biāo)識在其對應(yīng)的數(shù)據(jù)被存儲到第 一存儲區(qū)域時被寫入到
內(nèi)存并覆蓋在前寫入的數(shù)據(jù)標(biāo)識;在將完成更新的多組數(shù)據(jù)存儲到
第一存4諸區(qū)i或失敗時,乂人內(nèi)存中讀取凄t才居標(biāo)識,并^1夸讀取的^:才居標(biāo) 識的數(shù)據(jù)確定為存儲失敗的數(shù)據(jù)。
根據(jù)本發(fā)明的另 一個方面,提供一種基于嵌入式數(shù)據(jù)庫的存儲裝置。
根據(jù)本發(fā)明的基于嵌入式數(shù)據(jù)庫的存儲裝置包括第一設(shè)置模 塊,用于在存儲器上預(yù)先設(shè)置第一存儲區(qū)域和第二存儲區(qū)域,其中,
存儲器用于存儲嵌入式數(shù)據(jù)庫的數(shù)據(jù);更新模塊,用于對嵌入式數(shù)
據(jù)庫的多組凄t據(jù)進(jìn)4于更新操作,并且,對于完成更新的每組數(shù)據(jù),
分別存儲到第一存儲區(qū)域;處理模塊,用于完成更新的多組數(shù)據(jù)都 成功存儲到第 一存儲區(qū)域時,將第 一存儲區(qū)域中存儲的多組數(shù)據(jù)拷 貝到第二存儲區(qū)域中。進(jìn)一步地,該裝置還包括第二設(shè)置模塊,用于設(shè)置指示將修 改的多組數(shù)據(jù)存儲到第 一存儲區(qū)域下的第 一標(biāo)識,及指示將第 一存 儲區(qū)域中的修改后的多組數(shù)據(jù)存儲到第二存儲區(qū)域下的第二標(biāo)識; 寫入才莫塊,用于在內(nèi)存中寫入第一標(biāo)識和/或第二標(biāo)識;相應(yīng)地,處 理模塊用于將嵌入式數(shù)據(jù)庫中修改的多組數(shù)據(jù)存儲到第 一存儲區(qū)域 中,和/或?qū)⒌?一存儲區(qū)域中存儲的多組數(shù)據(jù)拷貝到第二存儲區(qū)域 中。
通過本發(fā)明的上述至少一個技術(shù)方案,通過在存儲器上設(shè)置兩 個存〗渚區(qū)域,并將凝:據(jù)分別保存在這兩個區(qū)域上,保i正了系統(tǒng)在存 盤過程中發(fā)生嚴(yán)重錯誤時能夠重新恢復(fù),并且可以監(jiān)控錯誤數(shù)據(jù)發(fā) 生的位置。


附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成i兌明書的一部 分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的 限制。在附圖中
圖1是4艮據(jù)本發(fā)明方法實(shí)施例的基于嵌入式凝:據(jù)庫的存卞者方法 的流程圖2是根據(jù)本發(fā)明方法實(shí)施例的數(shù)據(jù)存儲過程的處理流程圖3是根據(jù)本發(fā)明方法實(shí)施例的數(shù)據(jù)加載過程的處理流程圖4是根據(jù)本發(fā)明裝置實(shí)施例的基于嵌入式數(shù)據(jù)庫的存儲裝置 的結(jié)構(gòu)框圖5是根據(jù)本發(fā)明裝置實(shí)施例的基于嵌入式數(shù)據(jù)庫的存儲裝置 的優(yōu)選結(jié)構(gòu)框架圖。
具體實(shí)施例方式
功能相X述
如上述描述,數(shù)據(jù)的正確性對嵌入式數(shù)據(jù)庫來說至關(guān)重要,當(dāng) 在內(nèi)存中對凄t據(jù)進(jìn)行改寫之后,如果不能正確地將改寫后的凄t據(jù)存 儲在存儲器上,系統(tǒng)再次加載時會加載錯-誤的凄史據(jù),乂人而導(dǎo)致系統(tǒng) 運(yùn)行錯誤?;诖?,本發(fā)明提供了一種運(yùn)用雙目錄的結(jié)構(gòu),保證在 凄t據(jù)存^(諸過考呈中發(fā)生錯4吳也可以進(jìn)^f亍系統(tǒng)回滾,并且增加三個標(biāo)識 文件用于標(biāo)示系統(tǒng)存儲過程中發(fā)生錯誤的位置,方便對系統(tǒng)錯誤進(jìn) 行定位。
術(shù)語"存儲介質(zhì)"可以表示用于存儲數(shù)據(jù)的一種或多種裝置,
包括只讀存儲器(ROM)、隨機(jī)存:^儲器(RAM)、磁RAM、磁 心存儲器、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存裝置和/或用于存儲信 息的其他機(jī)器可讀介質(zhì)。術(shù)語"機(jī)器可讀介質(zhì)"包括但不限于便攜 式或固定存儲裝置、光存儲裝置、無線通道或能夠存儲、容納、或 承載指令和/或數(shù)據(jù)的各種其他介質(zhì)。
另外,可以通過硬件、軟件、固件、中間件、微碼、硬件描述 語言或其組合來實(shí)現(xiàn)實(shí)施例。當(dāng)用軟件、固件、中間件或孩t碼來實(shí) 現(xiàn)時,可以在諸如存儲介質(zhì)的機(jī)器可讀介質(zhì)中存儲用于執(zhí)行必要任 務(wù)的程序代碼或碼^殳。(多個)處理器可以執(zhí)行必要任務(wù)。碼段可以 表示進(jìn)程、函數(shù)、子程序、程序、例行程序、子例行程序、模塊、 對象、軟件包、類、或指令、數(shù)據(jù)結(jié)構(gòu)、或程序語言的任意組合。 通過傳輸和/或接收信息、數(shù)據(jù)、自變量、或存儲內(nèi)容來將碼段耦合 到另一碼段或硬件電路。信息、自變量、參數(shù)、數(shù)據(jù)等可以經(jīng)由包 括存儲器共享、消息傳遞、令牌傳遞、網(wǎng)絡(luò)傳輸?shù)鹊娜我夂线m方式 來傳遞、傳輸、或傳送。在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以 相互纟且合。
下面將結(jié)合附圖詳細(xì)描述本發(fā)明。
方法實(shí)施例
根據(jù)本發(fā)明實(shí)施例,提供了 一種基于嵌入式數(shù)據(jù)庫的存儲方法。
需要說明的是,為了便于描述,在下文中以步驟的形式示出并 描述了本發(fā)明的方法實(shí)施例的技術(shù)方案,在下文中所示出的步驟可
以在i者如一組計(jì)算才幾可執(zhí)4亍指令的計(jì)算才幾系統(tǒng)中扭J亍。雖然在相關(guān) 的附圖中示出了邏輯順序,^旦是在某些情況下,可以以不同于此處 的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本發(fā)明實(shí)施例的基于嵌入式數(shù)據(jù)庫的存儲方法的流 程圖,如圖1所示,該方法包括以下步驟(步驟S102至步驟S106):
步驟S102,在存儲器上預(yù)先設(shè)置第一存儲區(qū)域和第二存儲區(qū) 域,其中,存儲器用于存儲嵌入式數(shù)據(jù)庫的數(shù)據(jù);
步驟S104,對嵌入式數(shù)據(jù)庫的多組數(shù)據(jù)進(jìn)行更新才喿作,并且, 對于完成更新的每組數(shù)據(jù),分別存儲到第 一存儲區(qū)域;
步驟S106,如果將完成更新的多組數(shù)據(jù)都成功存儲到第一存儲
區(qū)域,則將第 一存儲區(qū)域中存儲的多組數(shù)據(jù)拷貝到第二存儲區(qū)域中;
如果將多組數(shù)據(jù)存儲到第一存儲區(qū)域中失敗,則重新對嵌入式數(shù)據(jù) 庫的多組數(shù)據(jù)進(jìn)行更新操作。
在具體實(shí)施過程中,可以預(yù)先:^殳置指示將^^改的多組數(shù)據(jù)存儲 到第 一存儲區(qū)域下的第 一標(biāo)識,及指示將第 一存儲區(qū)域中的修改后的多組數(shù)據(jù)存儲到第二存儲區(qū)域下的第二標(biāo)識;這樣,將嵌入式數(shù) 據(jù)庫中修改的多組數(shù)據(jù)存儲到第 一存儲區(qū)域中包括在內(nèi)存中寫入 第 一標(biāo)識,并將嵌入式數(shù)據(jù)庫中修改的多組數(shù)據(jù)存儲到第 一存儲區(qū) 域中,計(jì)算并保存第一標(biāo)識對應(yīng)的才交一驗(yàn)碼,并將第一標(biāo)識和第一標(biāo) 識對應(yīng)的校驗(yàn)碼復(fù)制到存儲器中;將第一存儲區(qū)域中存儲的多組數(shù) 據(jù)拷貝到第二存儲區(qū)域中包括在內(nèi)存中寫入第二標(biāo)識,在內(nèi)存中 寫入第二標(biāo)識覆蓋第 一標(biāo)識,計(jì)算并〗呆存第二標(biāo)識對應(yīng)的才交-驗(yàn)碼, 并將第二標(biāo)識和第二標(biāo)識對應(yīng)的校驗(yàn)碼復(fù)制到存儲器中覆蓋第 一標(biāo)
識和第一標(biāo)識對應(yīng)的才交-驗(yàn)碼,并將第一存儲區(qū)域中存4諸的多組凝:據(jù) 拷貝到第二存儲區(qū)域中。
在系統(tǒng)上電時,讀取內(nèi)存中當(dāng)前的標(biāo)識,并計(jì)算讀取的標(biāo)識的 參考校驗(yàn)碼,如果計(jì)算的參考校驗(yàn)碼與內(nèi)存中存儲的標(biāo)識對應(yīng)的校 —驗(yàn)碼一致,則讀取標(biāo)識所指示的存々者區(qū)域,其中,標(biāo)識為第一標(biāo)識 或第二標(biāo)識,如果在內(nèi)存中讀取的參考校驗(yàn)碼與標(biāo)識對應(yīng)的校驗(yàn)碼 不一致,讀取存儲器中當(dāng)前的標(biāo)識,并計(jì)算讀取的標(biāo)識的參考校驗(yàn) 碼,如果計(jì)算的參考校驗(yàn)碼與存儲器中存儲的標(biāo)識對應(yīng)的校驗(yàn)碼一 致,則讀取標(biāo)識所指示的存儲區(qū)域,其中,標(biāo)識為第一標(biāo)識或第二 標(biāo)識。
通過本發(fā)明實(shí)施例提供的技術(shù)方案,通過在存儲器上設(shè)置兩個 存儲區(qū)域,并將凄t據(jù)分別保存在這兩個區(qū)域上,保證了系統(tǒng)在存盤 過程中發(fā)生嚴(yán)重錯誤時能夠重新恢復(fù),并且可以監(jiān)控錯誤數(shù)據(jù)發(fā)生 的位置。
下面對本發(fā)明實(shí)施例進(jìn)行詳細(xì)說明,在具體實(shí)施過程中,主要 分為文件組織形式過程(對應(yīng)于上述的步驟S102)、數(shù)據(jù)存儲(對 應(yīng)于上述的步艱《S104)和tt才居加載(對應(yīng)于上述的步驟S106)三 個過程,下面對各過程進(jìn)4于描述。第一、文件組織形式過禾呈
關(guān)于存儲器在系統(tǒng)的運(yùn)行目錄下增加兩個平級的目錄, 一個 目錄用于保存當(dāng)前數(shù)據(jù),稱為備份目錄(即,上文所述的第一存儲 器),另一個目錄用于保存?zhèn)浞輸?shù)據(jù),成為當(dāng)前目錄(即,上文所述 的第二存儲器)。
關(guān)于保留內(nèi)存(即,上文所述的內(nèi)存)"^殳置標(biāo)識位,才艮據(jù)標(biāo)志 文件的系統(tǒng)標(biāo)志位來判斷系統(tǒng)是從當(dāng)前目錄加載數(shù)據(jù),還是從備份 目錄加載數(shù)據(jù)。在系統(tǒng)的保留內(nèi)存上開辟一塊區(qū)域用于保存存盤過 程的標(biāo)志文件,在運(yùn)行目錄下以二進(jìn)制形式保存嵌入式數(shù)據(jù)庫的數(shù) 據(jù)的副本,正常情況下,備份目錄和當(dāng)前目錄下保存的數(shù)據(jù)的副本 與保留內(nèi)存中的數(shù)據(jù)內(nèi)容完全一致。其中,保留內(nèi)存中保存了循環(huán) 冗余才交-瞼(Cyclic Redundancy Check,簡稱為CRC )才交-驗(yàn)值,嵌入 式數(shù)據(jù)庫中的表的總個數(shù),上述設(shè)置的標(biāo)志位,每張表數(shù)據(jù)存儲的 標(biāo)志^f立(即,上文所述的ft據(jù)標(biāo)識)。
第二、數(shù)據(jù)存儲過程
預(yù)先將整個數(shù)據(jù)的存儲過程分為三個階段第一階段為初始階 段,對數(shù)據(jù)進(jìn)行存儲,其中,上一次存儲數(shù)據(jù)的過程沒有發(fā)生錯誤, 在保留內(nèi)存中存儲的數(shù)據(jù)為正確的數(shù)據(jù);第二階段為保存階段,將 需要更新的數(shù)據(jù)保存到備份目錄下;第三階段為拷貝階段,將備份 目錄中更新成功的數(shù)據(jù)拷貝到當(dāng)前目錄下。
系統(tǒng)提供了一個存儲數(shù)據(jù)的接口,該接口以集合為單位,可以 對單個表和批量的表進(jìn)行存儲。由于系統(tǒng)目前支持的最大表個數(shù)為 256,因此集合有256位,每一位代表一張表,如果某一張表需要保 存,就將相應(yīng)的bit置為有效。函數(shù)體內(nèi)會解析這個集合來判斷哪些 表需要保存。在具體實(shí)施過程中,將系統(tǒng)標(biāo)志位和需要保存的表的標(biāo)志位置
為第一階段,開始將內(nèi)存中的數(shù)據(jù)以XML的數(shù)據(jù)格式保存到備份 目錄中,保存完一張表就將該表的標(biāo)志位置成第二階^a,即已經(jīng)成 功將數(shù)據(jù)保存到備份目錄中的表,如果在將表存儲到備份目錄的過 程中發(fā)生錯誤,該表的標(biāo)志位為第一階段,即沒有將數(shù)據(jù)保存到備 份目錄中的表,當(dāng)所有需要保存的表都已經(jīng)保存完成之后,將系統(tǒng) 標(biāo)識位置為第三階段。將所有需要保存的表上的數(shù)據(jù)從備份目錄拷 貝到當(dāng)前目錄,拷貝成功一 張表就將相應(yīng)的表標(biāo)志位置為第 一 階段, 如果在將表從備份目錄拷貝到當(dāng)前目錄的過程中發(fā)生錯誤,該表的 標(biāo)志位為第三階段,即沒有將數(shù)據(jù)從備份目錄拷貝到當(dāng)前目錄中的 表,當(dāng)所有的表都已經(jīng)拷貝成功之后,將系統(tǒng)標(biāo)志位置為第一階段, 存儲過程結(jié)束。
下面結(jié)合圖2對凌t據(jù)存儲過程進(jìn)行描述。
步驟S201,先讀取系統(tǒng)標(biāo)志位,根據(jù)系統(tǒng)標(biāo)志位判斷數(shù)據(jù)存儲 過程所處的階段,如果標(biāo)志位不正常就i兌明系統(tǒng)上次存盤發(fā)生鋪"i吳。 如果系統(tǒng)標(biāo)志位為用于指示初始階段的系統(tǒng)標(biāo)志位,則進(jìn)入到步驟 S202,如果系統(tǒng)標(biāo)志位為用于指示第二階段的系統(tǒng)標(biāo)志位,則進(jìn)入 到步-驟S209,如果系統(tǒng)標(biāo)志位為用于指示第三階l殳的系統(tǒng)標(biāo)志位, 則進(jìn)入到步驟S210;
步驟S202,寫入用于指示第二階段的系統(tǒng)標(biāo)志位;
步驟S203,判斷是否還有表需要保存,如果判斷結(jié)果為是,進(jìn) 入到步驟S204 ,否則進(jìn)入到步驟S205;
步驟S204,將修改后的所有數(shù)據(jù)保存到備份目錄下,并寫入用 于指示第三階段的系統(tǒng)標(biāo)志位;
步驟S205,寫入用于指示第三階段的系統(tǒng)標(biāo)志位;步驟S206,判斷是否還有表需要拷貝,如果判斷結(jié)果為是,進(jìn) 入到步驟S207,否則進(jìn)入到步驟S208;
步驟S207,將數(shù)據(jù)拷貝到當(dāng)前目錄,并寫入用于指示第一階段 的系統(tǒng)標(biāo)志位;
步驟S208,寫入用于指示第一階段的系統(tǒng)標(biāo)志位;
步驟S209,如果讀取的系統(tǒng)標(biāo)志位為第二階段,說明錯誤發(fā)生 在將數(shù)據(jù)保存到備份目錄下時,需要先將錯誤的數(shù)據(jù)恢復(fù),將發(fā)生 錯誤的表保存到備份目錄,然后將表拷貝到當(dāng)前目錄,即將標(biāo)識文 件中標(biāo)示為第二階段的表從備份目錄拷貝到當(dāng)前目錄,并相應(yīng)地修 改才示志文4牛;
步驟S210,如果讀取的系統(tǒng)標(biāo)志位為第三階段,說明錯誤發(fā)生 在將數(shù)據(jù)拷貝到當(dāng)前目錄時,將發(fā)生錯誤的表重新拷貝到當(dāng)前目錄 下。然后開始存盤過程,先將標(biāo)志文件的標(biāo)志位置為第二階段,把 數(shù)據(jù)保存到備份目錄,將標(biāo)志文件置第三階段,把數(shù)據(jù)從備份目錄 拷貝到當(dāng)前目錄,最后將標(biāo)志文件置為第一階段。
第三過程、數(shù)據(jù)加載過程
凄t據(jù)加載是+艮據(jù)標(biāo)志文件中的系統(tǒng)標(biāo)志位來判斷,如果標(biāo)志文 件的系統(tǒng)標(biāo)志位為第 一階段和第二階段,就表明可用的完整數(shù)據(jù)在 當(dāng)前目錄下,此時加載當(dāng)前目錄下的數(shù)據(jù),如果標(biāo)志文件的系統(tǒng)標(biāo) 志位為第三階段,就表明可用的完整數(shù)據(jù)在備份目錄下,此時加載 備份目錄下的數(shù)據(jù);如果標(biāo)志文件不存在就初始化標(biāo)志文件為第一 階段,加載相應(yīng)目錄下的數(shù)據(jù)。三個標(biāo)志文件的同步,由于三個標(biāo) 志文件在正常情況下都是相等的,因此不管對哪個標(biāo)志文件進(jìn)行了 操作,都必須同步到其他兩個標(biāo)志文件中。在數(shù)據(jù)庫上電的時候, 會提供一個標(biāo)志文件選擇的函數(shù),該函數(shù)不帶參數(shù),功能是用于將三個標(biāo)志文件中的有效文件選擇出來。選擇的原則是以保留內(nèi)存中 保存的系統(tǒng)標(biāo)志位為先,然后再判斷其他兩個標(biāo)志文件的副本,具
體過程為首先通過CRC校驗(yàn)判斷保留內(nèi)存中的系統(tǒng)標(biāo)志位是否有 效,因?yàn)槿绻霈F(xiàn)系統(tǒng)掉電的情況,保留內(nèi)存中的內(nèi)容會被隨機(jī)改 寫,如果保留內(nèi)保存的標(biāo)志位有效,則根據(jù)保留中保存的標(biāo)志文件 的標(biāo)志位來判斷系統(tǒng)從當(dāng)前目錄還是從備份目錄加載數(shù)據(jù)。如果保 留內(nèi)存內(nèi)容無效,則判斷保留內(nèi)存的副本,如果副本有效,則根據(jù) 標(biāo)志文件副本的系統(tǒng)標(biāo)志位來加載數(shù)據(jù),如果4呆留內(nèi)存和其副本都 無效,則重新初始化保留內(nèi)存和保留內(nèi)存的副本,都初始化為第一 階段。
下面結(jié)合圖3對該數(shù)據(jù)加載過程進(jìn)行說明。
步驟S301,判斷標(biāo)志文件是否存在,如杲判斷結(jié)果為是,進(jìn)入 到步驟S302,否則進(jìn)入步驟S30S;
步驟S302,讀取標(biāo)志文件的存々者標(biāo)志位;
步驟S303,標(biāo)志位為第一階段和第二階段;
步驟S304, ^Mv系統(tǒng)的當(dāng)前目錄中加載^t據(jù);
步驟S305,創(chuàng)建標(biāo)志文件并且初始化為存儲過程的第一階段;
步驟S306,從系統(tǒng)的備份目錄中加載數(shù)據(jù)。
裝置實(shí)施例
根據(jù)本發(fā)明實(shí)施例,提供一種基于嵌入式數(shù)據(jù)庫的存儲裝置。圖4示出了根據(jù)本發(fā)明實(shí)施例的基于嵌入式數(shù)據(jù)庫的存儲裝置 示意圖,如圖4所示,該裝置包括設(shè)置模塊IO、更新模塊20和處 理模塊30。
第一設(shè)置模塊10,用于在存儲器上預(yù)先設(shè)置第一存儲區(qū)域和第 二存儲區(qū)域,其中,存儲器用于存儲嵌入式數(shù)據(jù)庫的數(shù)據(jù);更新模 塊20,連4妾至第一設(shè)置才莫塊10,用于對嵌入式H才居庫的多組數(shù)據(jù)進(jìn) 行更新操作,并且,對于完成更新的每組數(shù)據(jù),分別存儲到第一存 儲區(qū)域;處理才莫塊30,連接至第一i殳置才莫塊10和更新才莫塊20,用 于完成更新的多組數(shù)據(jù)都成功存儲到第 一存儲區(qū)域時,將第 一存儲 區(qū)域中存儲的多組數(shù)據(jù)拷貝到第二存儲區(qū)域中。
圖5示出了根據(jù)本發(fā)明實(shí)施例的基于嵌入式數(shù)據(jù)庫的存儲裝置 的優(yōu)選結(jié)構(gòu)框架圖,如圖5所示,在圖4所示裝置的基礎(chǔ)上,該裝 置還包括第二設(shè)置模塊40和寫入模塊50。
第二設(shè)置模塊40,用于設(shè)置指示將修改的多組數(shù)據(jù)存儲到第一 存儲區(qū)域下的第 一標(biāo)識,及指示將第 一存儲區(qū)域中的修改后的多組 數(shù)據(jù)存儲到第二存儲區(qū)域下的第二標(biāo)識;寫入模塊50,連接至第二 設(shè)置模塊40,用于在內(nèi)存中寫入第二設(shè)置模塊40設(shè)置的第一標(biāo)識 和/或第二標(biāo)識;處理模塊30,連接至寫入模塊50,用于在寫入模 塊50寫入第一標(biāo)識之后,將嵌入式數(shù)據(jù)庫中修改的多組數(shù)據(jù)存儲到 第一存儲區(qū)域中,和/或在寫入模塊50寫入第二標(biāo)識之后,將第一 存儲區(qū)域中存儲的多組數(shù)據(jù)拷貝到第二存儲區(qū)域中。
通過本發(fā)明實(shí)施例提供的基于嵌入式數(shù)據(jù)庫的存儲裝置,通過 在存儲器上設(shè)置兩個存儲區(qū)域,并將數(shù)據(jù)分別保存在這兩個區(qū)域上, 保證了系統(tǒng)在存盤過程中發(fā)生嚴(yán)重錯誤時能夠重新恢復(fù),并且可以 監(jiān)控錯誤數(shù)據(jù)發(fā)生的位置。如上所述,借助于本發(fā)明提供的基于嵌入式數(shù)據(jù)庫的存儲方法 和/或裝置,通過在存儲器上設(shè)置兩個存儲區(qū)域,并將數(shù)據(jù)分別保存 在這兩個區(qū)域上,保證了系統(tǒng)在存盤過程中發(fā)生嚴(yán)重錯誤時能夠重 新恢復(fù),并且可以監(jiān)控錯誤數(shù)據(jù)發(fā)生的位置。例如在電子盤中保存 兩套數(shù)據(jù),在保存數(shù)據(jù)的過程中,如果發(fā)生錯誤,那么數(shù)據(jù)可以進(jìn)
行回滾;新增存盤的標(biāo)志文件,可以標(biāo)示存書者過程在哪一步發(fā)生錯 誤,和發(fā)生錯誤的表。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明, 對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在 本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1. 一種基于嵌入式數(shù)據(jù)庫的存儲方法,其特征在于,包括在存儲器上預(yù)先設(shè)置第一存儲區(qū)域和第二存儲區(qū)域,其中,所述存儲器用于存儲嵌入式數(shù)據(jù)庫的數(shù)據(jù);對所述嵌入式數(shù)據(jù)庫的多組數(shù)據(jù)進(jìn)行更新操作,并且,對于完成更新的每組數(shù)據(jù),分別存儲到所述第一存儲區(qū)域;如果將完成更新的多組數(shù)據(jù)都成功存儲到所述第一存儲區(qū)域,則將所述第一存儲區(qū)域中存儲的所述多組數(shù)據(jù)拷貝到所述第二存儲區(qū)域中。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括如果將所述多組數(shù)據(jù)存儲到所述第一存4諸區(qū)i或中失敗,則 重新對所述嵌入式凄t據(jù)庫的多組H據(jù)進(jìn)4亍更新才喿作。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,進(jìn)行更新操作 之前,所述方法還包4舌預(yù)先設(shè)置指示將修改的所述多組數(shù)據(jù)存儲到所述第一存 儲區(qū)域下的第 一標(biāo)識,及指示將所述第 一存儲區(qū)域中的修改后 的所述多組數(shù)據(jù)存儲到所述第二存儲區(qū)域下的第二標(biāo)識;將所述嵌入式數(shù)據(jù)庫中4務(wù)改的所述多組凄t據(jù)存儲到所述 第一存儲區(qū)域中包括在內(nèi)存中寫入所述第一標(biāo)識,并將所述嵌入式凄史據(jù)庫中修^ 改的所述多組數(shù)據(jù)存儲到所述第 一存儲區(qū)域中;將所述第 一存儲區(qū)域中存儲的所述多組數(shù)據(jù)拷貝到所述 第二存儲區(qū)域中包括在所述內(nèi)存中寫入所述第二標(biāo)識,并將所迷第一存儲區(qū)域 中存儲的所述多組數(shù)據(jù)拷貝到所述第二存儲區(qū)域中。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述寫入所述第一 標(biāo)識之后,還包4舌計(jì)算并保存所述第一標(biāo)識對應(yīng)的4交驗(yàn)碼,并將所述第一標(biāo) 識和所述第 一標(biāo)識對應(yīng)的校驗(yàn)碼復(fù)制到所述存儲器中。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述寫入所述第二 標(biāo)識之后,還包括在所述內(nèi)存中寫入所述第二標(biāo)識覆蓋所述第一標(biāo)識,計(jì)算 并保存所述第二標(biāo)識對應(yīng)的校驗(yàn)碼,并將所述第二標(biāo)識和所述 第二標(biāo)識對應(yīng)的校驗(yàn)碼復(fù)制到所述存儲器中覆蓋所述第 一標(biāo) 識和所述第 一標(biāo)識對應(yīng)的才交-瞼石馬。
6. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括讀耳又所述內(nèi)存中當(dāng)前的標(biāo)識,并計(jì)算讀取的所述標(biāo)識的參 考校驗(yàn)碼,如果計(jì)算的所述參考校驗(yàn)碼與所述內(nèi)存中存儲的所 述標(biāo)識對應(yīng)的4文-驗(yàn)碼一致,則讀取所述標(biāo)識所指示的存^諸區(qū) j成,其中,所述標(biāo)識為所述第一標(biāo)識或所述第二標(biāo)識。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,如果在所述內(nèi)存中 讀取的所述參考4交-瞼碼與所述標(biāo)識對應(yīng)的才交-驗(yàn)碼不一致,所述 方法還包括讀取所述存^f諸器中當(dāng)前的標(biāo)識,并計(jì)算讀取的所述標(biāo)識的 參考校驗(yàn)碼,如果計(jì)算的所述參考校驗(yàn)碼與所述存儲器中存儲 的所述標(biāo)識對應(yīng)的校驗(yàn)碼一致,則讀取所述標(biāo)識所指示的存儲 區(qū)域,其中,所述標(biāo)識為所述第一標(biāo)識或所述第二標(biāo)識。
8. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括為所述多組數(shù)據(jù)分別設(shè)置相應(yīng)的數(shù)據(jù)標(biāo)識,所述凄t據(jù)標(biāo)識 在其對應(yīng)的數(shù)據(jù)被存儲到第 一存儲區(qū)域時被寫入到所述內(nèi)存并覆蓋在前寫入的fW居標(biāo)識;在將完成更新的多組數(shù)據(jù)存儲到所迷第 一存儲區(qū)域失敗 時,從所述內(nèi)存中讀取數(shù)據(jù)標(biāo)識,并將讀取的所述數(shù)據(jù)標(biāo)識的 凄史據(jù)確定為存Y渚失敗的數(shù)據(jù)。
9 一種基于嵌入式數(shù)據(jù)庫的存儲裝置,其特征在于,包括第一設(shè)置模塊,用于在存儲器上預(yù)先設(shè)置第一存儲區(qū)域和 第二存儲區(qū)域,其中,所述存儲器用于存儲嵌入式數(shù)據(jù)庫的數(shù) 據(jù);更新才莫塊,用于對所述嵌入式數(shù)據(jù)庫的多組凄t據(jù)進(jìn)^亍更新 操作,并且,對于完成更新的每組數(shù)纟居,分別存々者到所述第一 存儲區(qū)域;處理才莫塊,用于完成更新的多組凄t據(jù)都成功存々者到所述第 一存儲區(qū)域時,將所述第 一存儲區(qū)域中存儲的所述多組數(shù)據(jù)拷 貝到所述第二存儲區(qū)域中。
10 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括第二設(shè)置沖莫塊,用于設(shè)置指示將修改的所述多組數(shù)據(jù)存儲 到所述第 一存儲區(qū)域下的第 一標(biāo)識,及指示將所述第 一存儲區(qū) 域中的修改后的所述多組數(shù)據(jù)存儲到所述第二存儲區(qū)域下的 第二標(biāo)識;寫入沖莫塊,用于在內(nèi)存中寫入所述第一標(biāo)識和/或所述第所述處理模塊,用于將所述嵌入式數(shù)據(jù)庫中修改的所述多 組數(shù)據(jù)存儲到所述第一存儲區(qū)域中,和/或?qū)⑺龅谝淮鎯^(qū) 域中存儲的所述多組數(shù)據(jù)拷貝到所述第二存儲區(qū)域中。
全文摘要
本發(fā)明公開了一種基于嵌入式數(shù)據(jù)庫的存儲方法和裝置,其中,該方法包括在存儲器上預(yù)先設(shè)置第一存儲區(qū)域和第二存儲區(qū)域,其中,存儲器用于存儲嵌入式數(shù)據(jù)庫的數(shù)據(jù);對嵌入式數(shù)據(jù)庫的多組數(shù)據(jù)進(jìn)行更新操作,并且,對于完成更新的每組數(shù)據(jù),分別存儲到第一存儲區(qū)域;如果將完成更新的多組數(shù)據(jù)都成功存儲到第一存儲區(qū)域,則將第一存儲區(qū)域中存儲的多組數(shù)據(jù)拷貝到第二存儲區(qū)域中。借助于本發(fā)明的技術(shù)方案,通過在存儲器上設(shè)置兩個存儲區(qū)域,并將數(shù)據(jù)分別保存在這兩個區(qū)域上,保證了系統(tǒng)在存盤過程中發(fā)生嚴(yán)重錯誤時能夠重新恢復(fù),并且可以監(jiān)控錯誤數(shù)據(jù)發(fā)生的位置。
文檔編號G06F17/30GK101430705SQ200810179539
公開日2009年5月13日 申請日期2008年11月29日 優(yōu)先權(quán)日2008年11月29日
發(fā)明者胡海生, 穎 黃 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1