一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及家庭網(wǎng)關(guān)技術(shù)領(lǐng)域,特別是涉及嵌入式無線網(wǎng)關(guān)系統(tǒng)中的數(shù)據(jù)庫技術(shù)領(lǐng)域,具體為一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著嵌入式系統(tǒng)的廣泛應(yīng)用及嵌入式實時操作系統(tǒng)的不斷普及,嵌入式環(huán)境下的數(shù)據(jù)管理問題成為系統(tǒng)中的重要環(huán)節(jié),構(gòu)建嵌入式實時數(shù)據(jù)庫系統(tǒng)(RTDBS)成為嵌入式開發(fā)中必須解決的問題。這里所說的嵌入式RTDBS[I] [2]是指可在嵌入式設(shè)備中獨立運行的一種數(shù)據(jù)庫系統(tǒng),用以處理大量的、時效性強(qiáng)且有嚴(yán)格時序的數(shù)據(jù),它以高可靠性、高實時性和高信息吞吐量為目標(biāo),其數(shù)據(jù)的正確性不僅依賴于邏輯結(jié)果,而且依賴于邏輯結(jié)果產(chǎn)生的時間。圖1是一個嵌入式應(yīng)用的基本構(gòu)架,整個嵌入式RTDBS構(gòu)建于實時操作系統(tǒng)之上。由于嵌入式實時數(shù)據(jù)庫系統(tǒng)在運行環(huán)境和運行方式上與常見的企業(yè)級數(shù)據(jù)庫管理系統(tǒng)有很大差別,因此,傳統(tǒng)的企業(yè)數(shù)據(jù)庫如Oracle、Sybase等在實時嵌入式環(huán)境下很難發(fā)揮作用,尤其在一些實時性要求很高的控制系統(tǒng)中,傳統(tǒng)數(shù)據(jù)庫更顯得無能為力。因此,伴隨著各種商用嵌入式實時操作系統(tǒng)的出現(xiàn),研宄嵌入式環(huán)境下的實時數(shù)據(jù)庫系統(tǒng)成為嵌入式軟件中的一項重要內(nèi)容。
[0003]基于以上嵌入式數(shù)據(jù)庫的概念和特性,已有的嵌入式設(shè)備中的數(shù)據(jù)庫多數(shù)采用動態(tài)Iib庫的形式存放和訪問形式,并且采用多張表的存儲架構(gòu)來存放和記錄系統(tǒng)數(shù)據(jù),應(yīng)用程序需要調(diào)用動態(tài)庫來訪問不同表中的不同數(shù)據(jù)?,F(xiàn)有的嵌入式系統(tǒng)網(wǎng)關(guān)設(shè)備中的數(shù)據(jù)庫存儲架構(gòu)和訪問機(jī)制采用多張表的形式,造成的主要缺點如下:采用多張表的形式存儲,管理較復(fù)雜;動態(tài)庫調(diào)用的方式增加了系統(tǒng)運行的負(fù)擔(dān);沒有對數(shù)據(jù)庫增加保護(hù)鎖,數(shù)據(jù)容易造成損壞;復(fù)雜的數(shù)據(jù)結(jié)構(gòu)無法有效存儲。
[0004]如何解決嵌入式系統(tǒng)中數(shù)據(jù)庫管理中面臨的以上問題成為本領(lǐng)域技術(shù)人員亟待解決的問題。
【發(fā)明內(nèi)容】
[0005]鑒于以上所述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中嵌入式系統(tǒng)中數(shù)據(jù)庫管理中存在的數(shù)據(jù)庫存儲復(fù)雜、數(shù)據(jù)容易丟失、使用數(shù)據(jù)庫導(dǎo)致系統(tǒng)負(fù)擔(dān)大的問題。
[0006]為實現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法,所述嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法包括:在數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲時,將數(shù)據(jù)按每條記錄的形式存儲在一張表中并定義所述每條記錄的格式和屬性;在訪問所述數(shù)據(jù)庫時,以內(nèi)存共享的方式訪問所述數(shù)據(jù)庫并在申請到訪問所述數(shù)據(jù)庫的權(quán)限時采用加鎖操作。
[0007]作為本發(fā)明的一種優(yōu)選方案,所述嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法還包括定義數(shù)據(jù)的對象ID并將所述對象ID保存在頭文件中。
[0008]作為本發(fā)明的一種優(yōu)選方案,定義所述每條記錄的屬性包括定義用于查找或定位數(shù)據(jù)庫中任何對象或者對象的任意一個子對象的記錄ID,所述記錄ID通過預(yù)定義的API進(jìn)行填充。
[0009]作為本發(fā)明的一種優(yōu)選方案,采用數(shù)組的格式定義所述記錄ID。
[0010]作為本發(fā)明的一種優(yōu)選方案,所述數(shù)組為一維數(shù)組、二維數(shù)組、三維數(shù)組或四維數(shù)組。
[0011]為實現(xiàn)上述目的,本發(fā)明還提供一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理系統(tǒng),所述嵌入式系統(tǒng)中數(shù)據(jù)庫管理系統(tǒng)包括:數(shù)據(jù)庫存儲模塊,包括數(shù)據(jù)存儲表單元,所述數(shù)據(jù)存儲表單元用于將數(shù)據(jù)按每條記錄的形式存儲在一張表中并定義所述每條記錄的格式和屬性;數(shù)據(jù)庫訪問模塊,用于設(shè)置以內(nèi)存共享的方式訪問數(shù)據(jù)庫并在有申請到訪問所述數(shù)據(jù)庫的權(quán)限時對所述數(shù)據(jù)庫進(jìn)行加鎖操作。
[0012]作為本發(fā)明的一種優(yōu)選方案,所述數(shù)據(jù)庫存儲模塊還包括對象ID存儲單元,用于定義數(shù)據(jù)的對象ID并將所述對象ID保存在頭文件中。
[0013]作為本發(fā)明的一種優(yōu)選方案,在所述數(shù)據(jù)存儲表單元中,定義所述每條記錄的屬性包括定義用于查找或定位數(shù)據(jù)庫中任何對象或者對象的任意一個子對象的記錄ID,所述記錄ID通過預(yù)定義的API進(jìn)行填充。
[0014]作為本發(fā)明的一種優(yōu)選方案,采用數(shù)組的格式定義所述記錄ID。
[0015]作為本發(fā)明的一種優(yōu)選方案,所述數(shù)組為一維數(shù)組、二維數(shù)組、三維數(shù)組或四維數(shù)組。
[0016]如上所述,本發(fā)明的一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng),具有以下有益效果:
[0017]1、本發(fā)明為了方便存儲更為復(fù)雜的數(shù)據(jù),同時為了方便管理,采用一整張表的方式進(jìn)行數(shù)據(jù)存儲,所有的數(shù)據(jù)以一條條記錄的形式存在,每條記錄的格式和長度不是固定的,這樣的使得數(shù)據(jù)存儲的形式更加簡單,同時節(jié)省了大量的系統(tǒng)存儲空間,同時采用記錄ID形式可以便于存儲復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
[0018]2、本發(fā)明通過調(diào)用系統(tǒng)共享內(nèi)存的方式來調(diào)用數(shù)據(jù)庫,提高了系統(tǒng)數(shù)據(jù)存儲的有效性和管理的高效性,降低了系統(tǒng)的運行負(fù)擔(dān);同時加入了數(shù)據(jù)庫保護(hù)機(jī)制,提高了數(shù)據(jù)操作安全和可靠性。
【附圖說明】
[0019]圖1顯示為本發(fā)明的嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法的流程示意圖。
[0020]圖2顯示為本發(fā)明的嵌入式系統(tǒng)中數(shù)據(jù)庫管理系統(tǒng)的結(jié)構(gòu)示意圖。
[0021]元件標(biāo)號說明
[0022]I嵌入式系統(tǒng)中數(shù)據(jù)庫管理系統(tǒng)
[0023]11數(shù)據(jù)庫存儲模塊
[0024]111 數(shù)據(jù)存儲表單元
[0025]112 對象ID存儲單元
[0026]12數(shù)據(jù)庫訪問模塊
[0027]511?512步驟
【具體實施方式】
[0028]以下通過特定的具體實例說明本發(fā)明的實施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可以通過另外不同的【具體實施方式】加以實施或應(yīng)用,本說明書中的各項細(xì)節(jié)也可以基于不同觀點與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
[0029]本發(fā)明的目的在于提供一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中嵌入式系統(tǒng)中數(shù)據(jù)庫管理中存在的數(shù)據(jù)庫存儲復(fù)雜、數(shù)據(jù)容易丟失、使用數(shù)據(jù)庫導(dǎo)致系統(tǒng)負(fù)擔(dān)大的問題。以下將詳細(xì)闡述本發(fā)明的一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng)的原理及實施方式,使本領(lǐng)域技術(shù)人員不需要創(chuàng)造性勞動即可理解本發(fā)明的一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng)。
[0030]本實施例提供一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法及系統(tǒng),本實施例涉目前家用無線路由器的網(wǎng)關(guān)設(shè)備,主要實現(xiàn)在嵌入式無線網(wǎng)關(guān)系統(tǒng)中的數(shù)據(jù)庫存儲架構(gòu)和訪問機(jī)制。
[0031]本實施例的主要功能是實現(xiàn)嵌入式無線網(wǎng)關(guān)設(shè)備中數(shù)據(jù)庫的存儲和管理,基于當(dāng)前Iinux系統(tǒng)的特點以及軟件的系統(tǒng)結(jié)構(gòu)和應(yīng)用程序?qū)?shù)據(jù)庫的需求,本實施例設(shè)計并提出了一套與傳統(tǒng)嵌入式系統(tǒng)中完全不同的數(shù)據(jù)架構(gòu)和訪問機(jī)制。本實施例主要應(yīng)用于小型的嵌入式家庭網(wǎng)關(guān)產(chǎn)品,在嵌入式系統(tǒng)特性和軟件應(yīng)用程序的特性基礎(chǔ)上,實現(xiàn)了在家庭網(wǎng)關(guān)中一種新的、優(yōu)化的、更加符合網(wǎng)關(guān)設(shè)備的數(shù)據(jù)庫存儲和訪問機(jī)制。
[0032]本實施例設(shè)計并提出的一套嵌入式系統(tǒng)的數(shù)據(jù)庫存儲架構(gòu)和訪問機(jī)制主要實現(xiàn)了復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的存儲和訪問,通過設(shè)計一套有效的存儲形式和共享內(nèi)存的調(diào)用方式,來實現(xiàn)系統(tǒng)各個應(yīng)用程序?qū)?shù)據(jù)庫中數(shù)據(jù)有效、可靠的訪問和管理。本實施例提供一種嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法,具體地,如圖1所示,所述嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法包括以下步驟。
[0033]步驟S11,在數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲時,將數(shù)據(jù)按每條記錄的形式存儲在一張表中并定義所述每條記錄的格式和屬性。采用整張表的形式,便于存儲和管理,同時節(jié)省系統(tǒng)資源。
[0034]具體地,在本實施例中,定義所述每條記錄的屬性包括定義用于查找或定位數(shù)據(jù)庫中任何對象或者對象的任意一個子對象的記錄ID,所述記錄ID通過預(yù)定義的API進(jìn)行填充。本實施例通過記錄ID可以便于存儲復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
[0035]更進(jìn)一步地,采用數(shù)組的格式定義所述記錄ID,其中,所述數(shù)組為一維數(shù)組、二維數(shù)組、三維數(shù)組或四維數(shù)組。
[0036]傳統(tǒng)的數(shù)據(jù)庫存儲形式采用的是多張表的形式,但是對于相對復(fù)雜的數(shù)據(jù)結(jié)構(gòu),此方式具有明顯的缺陷,不便于管理。
[0037]也就是說,本實施例中嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法中所設(shè)計的存儲架構(gòu)為了方便存儲更為復(fù)雜的數(shù)據(jù),同時為了方便管理,采用一整張表的方式,所有的數(shù)據(jù)以一條條記錄的形式存在,每條記錄的格式和長度不是固定的,這樣的使得存儲的形式更加簡單,同時節(jié)省了大量的系統(tǒng)存儲空間,也可以存儲較為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
[0038]此外,在本實施例中,所述嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法還包括定義數(shù)據(jù)的對象ID并將所述對象ID保存在頭文件中。本實施例中嵌入式系統(tǒng)中數(shù)據(jù)庫管理方法中,確定好存儲形式后,需要定義每條記錄的格式和關(guān)鍵屬性,來便于訪問和管理數(shù)據(jù)庫,嵌入式系統(tǒng)中需要保存的基本對象一般為structure,一個structure就是一個數(shù)據(jù)庫的對象。每個對象都有一個相對應(yīng)的ID,即對象ID,所有的對象ID都定義和保存在固定的頭文件中。引入對象ID的目的主要是方便于在數(shù)據(jù)庫中對對象的查找和定位,從而對其進(jìn)行操作。在系統(tǒng)運行過程中,應(yīng)用程序可以根據(jù)對象ID使用特定的API對對象進(jìn)行需要get、set等操作,操作的最小單位是一個對象,即一個structure。只有獲取了整個structure之后才能對其中的某一個參量或者變量進(jìn)行操作。
[0039]對于一些特殊的對象,比如對象下邊還有子對象的數(shù)據(jù)結(jié)構(gòu),在保存到表的過程中,定義和賦予的記錄ID采用數(shù)組的形式,最多可支持4維數(shù)組,以此來判斷具體需要操作哪個對象。
[0040]步驟S12,在訪問所述數(shù)據(jù)庫時,以內(nèi)存共享的方式訪問所述數(shù)據(jù)庫并在申請到訪問所述數(shù)據(jù)庫的權(quán)限時采用加鎖操作。本實施例中,應(yīng)用程序通過共享內(nèi)存的方式調(diào)用數(shù)據(jù)庫,降低了系統(tǒng)的運行負(fù)擔(dān);對數(shù)據(jù)庫的共享內(nèi)存加入了加鎖的保護(hù)機(jī)制,提高了數(shù)據(jù)操作安全和可靠性。
[0041]數(shù)據(jù)庫在內(nèi)存中是一塊共享內(nèi)存空間