摘 要: 研究了嵌入式數(shù)據(jù)庫" title="嵌入式數(shù)據(jù)庫">嵌入式數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)及存儲機(jī)制,并提出了嵌入式數(shù)據(jù)庫實(shí)現(xiàn)的關(guān)鍵技術(shù)。
關(guān)鍵詞: 嵌入式數(shù)據(jù)庫 數(shù)據(jù)模型 存儲機(jī)制 關(guān)鍵技術(shù)
隨著嵌入式應(yīng)用向分散化、小型化的方向延伸,智能的網(wǎng)絡(luò)設(shè)備(如交換機(jī)、路由器)、PDA、SmartPhone、信息家電等越來越多地走進(jìn)了人們的生活。類似這些對信息量要求不大,可以方便存取數(shù)據(jù)的環(huán)境都需要一個小的數(shù)據(jù)庫管理系統(tǒng)管理信息,這就有了嵌入式數(shù)據(jù)庫的需求。在大規(guī)模匯聚路由器系統(tǒng)性能與關(guān)鍵技術(shù)研究(ACR)中對分布式用戶參數(shù)表的管理采用嵌入式數(shù)據(jù)庫系統(tǒng)" title="數(shù)據(jù)庫系統(tǒng)">數(shù)據(jù)庫系統(tǒng)對用戶信息進(jìn)行管理。
嵌入式數(shù)據(jù)庫以高可靠性、高實(shí)時性和高信息吞吐量為目標(biāo),其數(shù)據(jù)的正確性不僅依賴于邏輯結(jié)果,而且依賴于邏輯結(jié)果產(chǎn)生的時間。圖1是一個嵌入式數(shù)據(jù)庫應(yīng)用的基本框架,整個嵌入式數(shù)據(jù)庫構(gòu)建于嵌入式操作系統(tǒng)之上。由于嵌入式數(shù)據(jù)庫在運(yùn)行環(huán)境和方式上與常見的企業(yè)級數(shù)據(jù)庫管理系統(tǒng)有很大差別,因此,傳統(tǒng)的企業(yè)數(shù)據(jù)庫如Oracle、Sybase等在實(shí)時嵌入式環(huán)境下很難發(fā)揮作用,尤其在一些實(shí)時性要求很高的控制系統(tǒng)中,傳統(tǒng)數(shù)據(jù)庫更顯得無能為力。
1嵌入式數(shù)據(jù)庫系統(tǒng)的內(nèi)涵及其體系結(jié)構(gòu)
目前嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)開發(fā)中,對嵌入式數(shù)據(jù)庫問題的多數(shù)看法是,嵌入式數(shù)據(jù)庫從本質(zhì)上說是一個“內(nèi)存數(shù)據(jù)庫”,是一個由應(yīng)用程序管理的內(nèi)存緩沖池,它在系統(tǒng)中的作用就是一個供多個實(shí)時任務(wù)共同使用的共享數(shù)據(jù)區(qū)。這種數(shù)據(jù)庫實(shí)際上是一個嵌入在用戶應(yīng)用軟件" title="應(yīng)用軟件">應(yīng)用軟件中的與應(yīng)用程序不可分割的部分,其功能主要是數(shù)據(jù)的存和取,不具有獨(dú)立性,不是一個真正意義上的數(shù)據(jù)庫系統(tǒng)。一個完整的嵌入式" title="的嵌入式">的嵌入式數(shù)據(jù)庫系統(tǒng)除了包括內(nèi)存數(shù)據(jù)庫外,還應(yīng)當(dāng)含有歷史數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)DBMS及提供給用戶的接口函數(shù),整個數(shù)據(jù)庫可由DBMS完成對數(shù)據(jù)庫的具體配置及各種操作,例如系統(tǒng)運(yùn)行前根據(jù)實(shí)際需要對內(nèi)存數(shù)據(jù)庫中的記錄節(jié)點(diǎn)進(jìn)行增減等配置操作。目前的嵌入式數(shù)據(jù)庫系統(tǒng)可分為兩大類,一類是商用級的嵌入式數(shù)據(jù)庫系統(tǒng),它獨(dú)立于具體的應(yīng)用軟件,如美國McObject公司提供的eXtremeDB內(nèi)存式實(shí)時數(shù)據(jù)庫,這是一種專門為嵌入式系統(tǒng)數(shù)據(jù)庫管理而編寫的實(shí)時數(shù)據(jù)庫,它將數(shù)據(jù)庫直接建立在內(nèi)存之中,并根據(jù)應(yīng)用特征產(chǎn)生數(shù)據(jù)庫API,用戶可方便地調(diào)用這些接口函數(shù)管理整個數(shù)據(jù)庫系統(tǒng);另一類是用戶針對具體的應(yīng)用對象而自行設(shè)計開發(fā)的嵌入式實(shí)時數(shù)據(jù)庫系統(tǒng),這種數(shù)據(jù)庫一般嵌入到應(yīng)用軟件中作為應(yīng)用程序的一部分,不具有獨(dú)立性。
一個嵌入式數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)如圖2所示。與傳統(tǒng)的數(shù)據(jù)庫一樣,它仍然是一種三級模式的結(jié)構(gòu)體系,即用戶模式、邏輯模式和存儲模式。在嵌入式環(huán)境下構(gòu)建數(shù)據(jù)庫系統(tǒng)應(yīng)該完成以下功能:高效的數(shù)據(jù)存取機(jī)制、數(shù)據(jù)安全性控制、實(shí)時事務(wù)管理機(jī)制、數(shù)據(jù)庫的恢復(fù)機(jī)制等。本設(shè)計中更關(guān)心系統(tǒng)的實(shí)時性、開銷大小、系統(tǒng)性能、可靠性、可預(yù)知性和底層控制能力,即如何針對選用的實(shí)時OS和嵌入式硬件平臺設(shè)計合理的數(shù)據(jù)模型和物理結(jié)構(gòu),重點(diǎn)放在如何高效地利用嵌入式系統(tǒng)的有限資源、提高數(shù)據(jù)的存取速度、進(jìn)行數(shù)據(jù)保護(hù)、數(shù)據(jù)交換、查詢/事務(wù)處理算法的優(yōu)化、事務(wù)的優(yōu)先級分派、事務(wù)調(diào)度和并發(fā)控制等。
2 嵌入式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)模型
嵌入式數(shù)據(jù)庫系統(tǒng)的關(guān)鍵是數(shù)據(jù)模型的確定,它決定了數(shù)據(jù)的被訪問和操作的方式,應(yīng)用程序的性能和可靠性也主要取決于此。目前嵌入式數(shù)據(jù)庫系統(tǒng)多數(shù)采用關(guān)系模型結(jié)構(gòu)。該模型用二維關(guān)系表實(shí)現(xiàn)數(shù)據(jù)存儲,利用索引訪問和查詢數(shù)據(jù)。這種模型結(jié)構(gòu)建立在嚴(yán)格的數(shù)學(xué)基礎(chǔ)上,結(jié)構(gòu)簡單靈活,獨(dú)立性好,但在嵌入式環(huán)境下的內(nèi)存開銷和數(shù)據(jù)冗余較大,因此必須對其進(jìn)行優(yōu)化,增加了開發(fā)數(shù)據(jù)庫系統(tǒng)的難度。有些嵌入式數(shù)據(jù)庫采用了網(wǎng)狀模型結(jié)構(gòu),該模型通過指針確定數(shù)據(jù)間的顯式連接關(guān)系,比關(guān)系模型中利用冗余數(shù)據(jù)和索引文件要節(jié)約大量的存儲空間,具有一定的數(shù)據(jù)獨(dú)立性和共享特性,運(yùn)行效率較高。而且由于它避免了索引操作,比關(guān)系型數(shù)據(jù)庫模式要節(jié)省存儲空間,數(shù)據(jù)操作速度也更快。但是這種模型結(jié)構(gòu)比較復(fù)雜,尤其當(dāng)嵌入式系統(tǒng)規(guī)模增大時,其數(shù)據(jù)庫的結(jié)構(gòu)變得非常龐大,可能會影響到系統(tǒng)的實(shí)時性能。圖3所示是在相同數(shù)目的記錄下,關(guān)系模型與網(wǎng)狀模型的系統(tǒng)開銷比較。從圖3可以看出,網(wǎng)狀模型因?yàn)楸苊饬怂饕僮魇沟闷溟_銷要小于關(guān)系模型。但是在實(shí)際應(yīng)用中,應(yīng)當(dāng)根據(jù)實(shí)時系統(tǒng)的綜合性能選取數(shù)據(jù)庫模型。通??刹捎镁W(wǎng)狀加關(guān)系或?qū)哟渭雨P(guān)系的混合模型結(jié)構(gòu)以彌補(bǔ)兩種結(jié)構(gòu)之間的缺陷,如將網(wǎng)狀和關(guān)系模型的優(yōu)點(diǎn)結(jié)合,可以避免不必要的索引開銷,顯著地減少系統(tǒng)存儲空間、I/O操作和CPU周期,數(shù)據(jù)操作快速而且可靠性高。
3 嵌入式數(shù)據(jù)庫系統(tǒng)的存取機(jī)制
嵌入式數(shù)據(jù)庫系統(tǒng)所處理的事務(wù)通常是實(shí)時事務(wù),事務(wù)調(diào)度的正確性依賴于高效的處理和預(yù)測能力。由于I/O速度比較慢,磁盤延遲時間難以預(yù)測,因此嵌入式數(shù)據(jù)庫系統(tǒng)通常采用主存數(shù)據(jù)庫技術(shù),存取機(jī)制的主要目的是提高CPU的利用率和節(jié)約主存空間。
經(jīng)典的存取機(jī)制主要分三大類[1]:一類是基于HASH函數(shù)的存取機(jī)制,如可擴(kuò)展HASH(EH)、線性HASH、受控查詢多方向HASH(CSMH)等;另一類是基于查詢樹的機(jī)制,如B樹、B*樹、AVL樹、T樹、T*樹等;此外,ChanhoRyu等提出了一種綜合了HASH表和查詢樹特點(diǎn)的查詢機(jī)制Hybrid—TH,已經(jīng)證明它顯著提高了查詢效率。
Hybrid—TH將樹索引和HASH索引有機(jī)地結(jié)合,大大降低了查詢的時間復(fù)雜度。HASH表的每個元素有三個域:①數(shù)據(jù)對象的關(guān)鍵字;②指向?qū)?yīng)樹結(jié)點(diǎn)的指針(該數(shù)據(jù)對象保留在該結(jié)點(diǎn)中);③指向溢出鏈的指針。T樹是在一個結(jié)點(diǎn)中有多個數(shù)據(jù)對象的二叉樹,它遵循AVL的特性,在每個結(jié)點(diǎn)中,數(shù)據(jù)對象按升序排序,指針par、lsub和rsub分別指向該結(jié)點(diǎn)的父結(jié)點(diǎn)、左子樹和右子樹。
數(shù)據(jù)的存取機(jī)制關(guān)系到系統(tǒng)的效率。在嵌入式數(shù)據(jù)庫系統(tǒng)中,由于內(nèi)存非常寶貴,同時沒有費(fèi)時的I/O操作,存取機(jī)制的設(shè)計目標(biāo)是節(jié)約存儲空間,同時盡可能提高處理速度,這一點(diǎn)在嵌入式數(shù)據(jù)庫設(shè)計中要特別注意。
4 嵌入式數(shù)據(jù)庫系統(tǒng)的關(guān)鍵技術(shù)
4.1大量更短、更快的處理過程
嵌入式系統(tǒng)應(yīng)該具備非常高的數(shù)據(jù)處理速率,而單一處理過程的持續(xù)時間應(yīng)該十分短暫(單一處理過程是指對數(shù)據(jù)進(jìn)行的一次基本操作,包括只讀、寫入或讀寫)。例如,機(jī)頂盒以10MB/s的速率從衛(wèi)星上接收電子信息;IP路由器每秒可進(jìn)行10萬次路由處理等。
因此,嵌入式數(shù)據(jù)庫系統(tǒng)必須滿足應(yīng)用軟件的“實(shí)時”需要。這要求有極其輕便、靈敏的數(shù)據(jù)傳送管理。由于系統(tǒng)架構(gòu)間的各種通信延遲都將對速度產(chǎn)生巨大的影響,因此應(yīng)用進(jìn)程必須能與數(shù)據(jù)管理軟件直接交互作用。
此外,由于嵌入式系統(tǒng)的不同任務(wù)有著不同的優(yōu)先權(quán),而且它們可以動態(tài)改變,因此嵌入式數(shù)據(jù)庫系統(tǒng)可以根據(jù)操作環(huán)境的變化,對數(shù)據(jù)管理過程的優(yōu)先權(quán)進(jìn)行排列。例如,為了適應(yīng)輸入速率的提高,數(shù)據(jù)輸入系統(tǒng)必須對它的數(shù)據(jù)處理進(jìn)程進(jìn)行調(diào)節(jié),以便釋放輸入緩存,避免數(shù)據(jù)丟失。在理想情況下,應(yīng)用軟件可以提高寫入數(shù)據(jù)相關(guān)處理過程的優(yōu)先權(quán),從而迅速清空輸入緩存,但同時要犧牲其它處理過程的優(yōu)先權(quán),例如數(shù)據(jù)查詢、數(shù)據(jù)讀取等。當(dāng)高峰過后,所有優(yōu)先權(quán)排列情況便又恢復(fù)到正常的狀態(tài)。
4.2 可分享數(shù)據(jù)和事件處理
嵌入式實(shí)時運(yùn)算是一種典型的由事件推動的操作過程,它會對外界資源的中斷做出相應(yīng)的反應(yīng)。新數(shù)據(jù)或發(fā)生變化的數(shù)據(jù)都會引發(fā)系統(tǒng)對它進(jìn)行處理,例如,一個IP路由器向其它路由器發(fā)送一個路徑選擇表等。為了避免定期對數(shù)據(jù)庫數(shù)據(jù)查詢過程中出現(xiàn)不必要的處理過程,嵌入式數(shù)據(jù)庫系統(tǒng)采用將事件傳播到其它關(guān)聯(lián)軟件模塊的方法共享事件處理。例如,一個由傳感器產(chǎn)生的中斷會導(dǎo)致數(shù)據(jù)庫中的某個數(shù)值發(fā)生變化。這一變化最終將導(dǎo)致一個數(shù)據(jù)庫事件,而這一事件將通知其它的相關(guān)軟件模塊所發(fā)生的變化。
4.3 對復(fù)雜數(shù)據(jù)的管理及設(shè)計靈活性
嵌入式系統(tǒng)經(jīng)常需要對高度復(fù)雜的數(shù)據(jù)進(jìn)行管理。一個理想的嵌入式數(shù)據(jù)庫系統(tǒng)應(yīng)能夠在一特殊的結(jié)構(gòu)中對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行讀寫。對于C語言程序員來說,這意味著嵌入式結(jié)構(gòu)、嵌套結(jié)構(gòu)、原子類型中固定或不固定長度的各類陣列、白底或隱式數(shù)據(jù),以及可選擇數(shù)據(jù)單元。數(shù)據(jù)庫的真正價值在于可以根據(jù)不同的標(biāo)準(zhǔn)進(jìn)行檢索。嵌入式數(shù)據(jù)庫則需要支持單一或復(fù)合索引。理想情況下,數(shù)據(jù)庫可以提供可由程序激活或關(guān)閉的索引。
4.4 數(shù)據(jù)定義與源代碼分離
嵌入式數(shù)據(jù)庫系統(tǒng)還應(yīng)具備將數(shù)據(jù)定義從應(yīng)用軟件源代碼中分離出來的能力,從而可以使用戶更靈活、更簡單地對數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改。這一點(diǎn)需要通過數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫主義語言(DDL)實(shí)現(xiàn)。DDL主要用來表達(dá)數(shù)據(jù)組、數(shù)據(jù)屬性(大小和類型)、獲取方法及數(shù)據(jù)的其它特征。編譯程序可以對DDL進(jìn)行編譯,驗(yàn)證其正確性,以供數(shù)據(jù)庫管理系統(tǒng)軟件使用。
4.5 數(shù)據(jù)的高有效性
諸如通信和網(wǎng)絡(luò)基礎(chǔ)架構(gòu)之類的嵌入式系統(tǒng)必須十分健壯,即使在硬件或軟件發(fā)生故障時也必須能正常工作。對于嵌入式數(shù)據(jù)庫系統(tǒng)來說,這就意味著即使在所依附的硬件發(fā)生故障的條件下,仍然確保數(shù)據(jù)安全。當(dāng)然,數(shù)據(jù)庫必須備份到其它的硬盤上,簡單地映射或復(fù)制是不夠的。嵌入式數(shù)據(jù)庫必須保證主數(shù)據(jù)庫的所有備份數(shù)據(jù)庫無論何時都是同步的。
4.6 與其它系統(tǒng)共享數(shù)據(jù)
判斷一個企業(yè)運(yùn)營情況,通常要對企業(yè)的數(shù)據(jù)進(jìn)行收集、整理和分析。事實(shí)上,企業(yè)或組織的所有嵌入式系統(tǒng)和設(shè)備都要隨著用戶數(shù)據(jù)收集能力、傳輸和獲取需求的增加而不斷升級。因此,嵌入式數(shù)據(jù)庫系統(tǒng)必須要能與企業(yè)中的其它系統(tǒng)進(jìn)行數(shù)據(jù)共享。XML正在成為受歡迎的解決方案。嵌入式數(shù)據(jù)庫應(yīng)該能兼容XML技術(shù)。XML是一種開放式標(biāo)準(zhǔn),它擁有大量的技術(shù)信息及開放系統(tǒng)軟件的支持。軟件開發(fā)人員都希望可以將XML的兼容性集成到自行開發(fā)的數(shù)據(jù)庫管理解決方案中。
目前,嵌入式數(shù)據(jù)庫系統(tǒng)開發(fā)還存在許多問題需要解決,在實(shí)際應(yīng)用中的性能也有待進(jìn)一步提高。其關(guān)鍵在于系統(tǒng)的存儲結(jié)構(gòu)、數(shù)據(jù)的存取速度、實(shí)時事務(wù)的優(yōu)先級調(diào)度、故障恢復(fù)問題,這是提高嵌入式數(shù)據(jù)庫系統(tǒng)性能的關(guān)鍵,也是數(shù)據(jù)庫系統(tǒng)理論的研究重點(diǎn)。
參考文獻(xiàn)
1 夏家莉. H-T:一種適用于嵌入式數(shù)據(jù)庫系統(tǒng)的存取機(jī)制[J].計算機(jī)應(yīng)用與軟件,2002;(12)