摘 要: 研究了嵌入式數(shù)據(jù)庫" title="嵌入式數(shù)據(jù)庫">嵌入式數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu),、數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)機(jī)制,并提出了嵌入式數(shù)據(jù)庫實(shí)現(xiàn)的關(guān)鍵技術(shù),。
關(guān)鍵詞: 嵌入式數(shù)據(jù)庫 數(shù)據(jù)模型 存儲(chǔ)機(jī)制 關(guān)鍵技術(shù)
隨著嵌入式應(yīng)用向分散化,、小型化的方向延伸,智能的網(wǎng)絡(luò)設(shè)備(如交換機(jī),、路由器),、PDA、SmartPhone,、信息家電等越來越多地走進(jìn)了人們的生活,。類似這些對信息量要求不大,可以方便存取數(shù)據(jù)的環(huán)境都需要一個(gè)小的數(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í)時(shí)性和高信息吞吐量為目標(biāo),,其數(shù)據(jù)的正確性不僅依賴于邏輯結(jié)果,而且依賴于邏輯結(jié)果產(chǎn)生的時(shí)間,。圖1是一個(gè)嵌入式數(shù)據(jù)庫應(yīng)用的基本框架,,整個(gè)嵌入式數(shù)據(jù)庫構(gòu)建于嵌入式操作系統(tǒng)之上。由于嵌入式數(shù)據(jù)庫在運(yùn)行環(huán)境和方式上與常見的企業(yè)級(jí)數(shù)據(jù)庫管理系統(tǒng)有很大差別,,因此,,傳統(tǒng)的企業(yè)數(shù)據(jù)庫如Oracle、Sybase等在實(shí)時(shí)嵌入式環(huán)境下很難發(fā)揮作用,,尤其在一些實(shí)時(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ì)上說是一個(gè)“內(nèi)存數(shù)據(jù)庫”,,是一個(gè)由應(yīng)用程序管理的內(nèi)存緩沖池,它在系統(tǒng)中的作用就是一個(gè)供多個(gè)實(shí)時(shí)任務(wù)共同使用的共享數(shù)據(jù)區(qū),。這種數(shù)據(jù)庫實(shí)際上是一個(gè)嵌入在用戶應(yīng)用軟件" title="應(yīng)用軟件">應(yīng)用軟件中的與應(yīng)用程序不可分割的部分,,其功能主要是數(shù)據(jù)的存和取,不具有獨(dú)立性,,不是一個(gè)真正意義上的數(shù)據(jù)庫系統(tǒng),。一個(gè)完整的嵌入式" title="的嵌入式">的嵌入式數(shù)據(jù)庫系統(tǒng)除了包括內(nèi)存數(shù)據(jù)庫外,還應(yīng)當(dāng)含有歷史數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)DBMS及提供給用戶的接口函數(shù),,整個(gè)數(shù)據(jù)庫可由DBMS完成對數(shù)據(jù)庫的具體配置及各種操作,,例如系統(tǒng)運(yùn)行前根據(jù)實(shí)際需要對內(nèi)存數(shù)據(jù)庫中的記錄節(jié)點(diǎn)進(jìn)行增減等配置操作。目前的嵌入式數(shù)據(jù)庫系統(tǒng)可分為兩大類,,一類是商用級(jí)的嵌入式數(shù)據(jù)庫系統(tǒng),,它獨(dú)立于具體的應(yīng)用軟件,如美國McObject公司提供的eXtremeDB內(nèi)存式實(shí)時(shí)數(shù)據(jù)庫,,這是一種專門為嵌入式系統(tǒng)數(shù)據(jù)庫管理而編寫的實(shí)時(shí)數(shù)據(jù)庫,,它將數(shù)據(jù)庫直接建立在內(nèi)存之中,并根據(jù)應(yīng)用特征產(chǎn)生數(shù)據(jù)庫API,,用戶可方便地調(diào)用這些接口函數(shù)管理整個(gè)數(shù)據(jù)庫系統(tǒng),;另一類是用戶針對具體的應(yīng)用對象而自行設(shè)計(jì)開發(fā)的嵌入式實(shí)時(shí)數(shù)據(jù)庫系統(tǒng),這種數(shù)據(jù)庫一般嵌入到應(yīng)用軟件中作為應(yīng)用程序的一部分,,不具有獨(dú)立性,。
一個(gè)嵌入式數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)如圖2所示。與傳統(tǒng)的數(shù)據(jù)庫一樣,,它仍然是一種三級(jí)模式的結(jié)構(gòu)體系,,即用戶模式、邏輯模式和存儲(chǔ)模式,。在嵌入式環(huán)境下構(gòu)建數(shù)據(jù)庫系統(tǒng)應(yīng)該完成以下功能:高效的數(shù)據(jù)存取機(jī)制,、數(shù)據(jù)安全性控制,、實(shí)時(shí)事務(wù)管理機(jī)制,、數(shù)據(jù)庫的恢復(fù)機(jī)制等。本設(shè)計(jì)中更關(guān)心系統(tǒng)的實(shí)時(shí)性,、開銷大小,、系統(tǒng)性能、可靠性,、可預(yù)知性和底層控制能力,,即如何針對選用的實(shí)時(shí)OS和嵌入式硬件平臺(tái)設(shè)計(jì)合理的數(shù)據(jù)模型和物理結(jié)構(gòu),重點(diǎn)放在如何高效地利用嵌入式系統(tǒng)的有限資源,、提高數(shù)據(jù)的存取速度,、進(jìn)行數(shù)據(jù)保護(hù)、數(shù)據(jù)交換、查詢/事務(wù)處理算法的優(yōu)化,、事務(wù)的優(yōu)先級(jí)分派,、事務(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ù)存儲(chǔ),,利用索引訪問和查詢數(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é)約大量的存儲(chǔ)空間,具有一定的數(shù)據(jù)獨(dú)立性和共享特性,,運(yùn)行效率較高,。而且由于它避免了索引操作,比關(guān)系型數(shù)據(jù)庫模式要節(jié)省存儲(chǔ)空間,,數(shù)據(jù)操作速度也更快,。但是這種模型結(jié)構(gòu)比較復(fù)雜,尤其當(dāng)嵌入式系統(tǒng)規(guī)模增大時(shí),,其數(shù)據(jù)庫的結(jié)構(gòu)變得非常龐大,,可能會(huì)影響到系統(tǒng)的實(shí)時(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í)時(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)存儲(chǔ)空間,、I/O操作和CPU周期,,數(shù)據(jù)操作快速而且可靠性高。
3 嵌入式數(shù)據(jù)庫系統(tǒng)的存取機(jī)制
嵌入式數(shù)據(jù)庫系統(tǒng)所處理的事務(wù)通常是實(shí)時(shí)事務(wù),,事務(wù)調(diào)度的正確性依賴于高效的處理和預(yù)測能力,。由于I/O速度比較慢,磁盤延遲時(shí)間難以預(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é)合,,大大降低了查詢的時(shí)間復(fù)雜度。HASH表的每個(gè)元素有三個(gè)域:①數(shù)據(jù)對象的關(guān)鍵字,;②指向?qū)?yīng)樹結(jié)點(diǎn)的指針(該數(shù)據(jù)對象保留在該結(jié)點(diǎn)中),;③指向溢出鏈的指針。T樹是在一個(gè)結(jié)點(diǎn)中有多個(gè)數(shù)據(jù)對象的二叉樹,,它遵循AVL的特性,,在每個(gè)結(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)存非常寶貴,,同時(shí)沒有費(fèi)時(shí)的I/O操作,存取機(jī)制的設(shè)計(jì)目標(biāo)是節(jié)約存儲(chǔ)空間,,同時(shí)盡可能提高處理速度,,這一點(diǎn)在嵌入式數(shù)據(jù)庫設(shè)計(jì)中要特別注意,。
4 嵌入式數(shù)據(jù)庫系統(tǒng)的關(guān)鍵技術(shù)
4.1大量更短、更快的處理過程
嵌入式系統(tǒng)應(yīng)該具備非常高的數(shù)據(jù)處理速率,,而單一處理過程的持續(xù)時(shí)間應(yīng)該十分短暫(單一處理過程是指對數(shù)據(jù)進(jìn)行的一次基本操作,,包括只讀、寫入或讀寫),。例如,,機(jī)頂盒以10MB/s的速率從衛(wèi)星上接收電子信息;IP路由器每秒可進(jìn)行10萬次路由處理等,。
因此,,嵌入式數(shù)據(jù)庫系統(tǒng)必須滿足應(yīng)用軟件的“實(shí)時(shí)”需要。這要求有極其輕便,、靈敏的數(shù)據(jù)傳送管理,。由于系統(tǒng)架構(gòu)間的各種通信延遲都將對速度產(chǎn)生巨大的影響,因此應(yīng)用進(jìn)程必須能與數(shù)據(jù)管理軟件直接交互作用,。
此外,,由于嵌入式系統(tǒng)的不同任務(wù)有著不同的優(yōu)先權(quán),而且它們可以動(dòng)態(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),,從而迅速清空輸入緩存,,但同時(shí)要犧牲其它處理過程的優(yōu)先權(quán),例如數(shù)據(jù)查詢,、數(shù)據(jù)讀取等,。當(dāng)高峰過后,所有優(yōu)先權(quán)排列情況便又恢復(fù)到正常的狀態(tài),。
4.2 可分享數(shù)據(jù)和事件處理
嵌入式實(shí)時(shí)運(yùn)算是一種典型的由事件推動(dòng)的操作過程,,它會(huì)對外界資源的中斷做出相應(yīng)的反應(yīng)。新數(shù)據(jù)或發(fā)生變化的數(shù)據(jù)都會(huì)引發(fā)系統(tǒng)對它進(jìn)行處理,,例如,,一個(gè)IP路由器向其它路由器發(fā)送一個(gè)路徑選擇表等。為了避免定期對數(shù)據(jù)庫數(shù)據(jù)查詢過程中出現(xiàn)不必要的處理過程,,嵌入式數(shù)據(jù)庫系統(tǒng)采用將事件傳播到其它關(guān)聯(lián)軟件模塊的方法共享事件處理,。例如,,一個(gè)由傳感器產(chǎn)生的中斷會(huì)導(dǎo)致數(shù)據(jù)庫中的某個(gè)數(shù)值發(fā)生變化。這一變化最終將導(dǎo)致一個(gè)數(shù)據(jù)庫事件,,而這一事件將通知其它的相關(guān)軟件模塊所發(fā)生的變化,。
4.3 對復(fù)雜數(shù)據(jù)的管理及設(shè)計(jì)靈活性
嵌入式系統(tǒng)經(jīng)常需要對高度復(fù)雜的數(shù)據(jù)進(jìn)行管理。一個(gè)理想的嵌入式數(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ù)庫的真正價(jià)值在于可以根據(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í)也必須能正常工作,。對于嵌入式數(shù)據(jù)庫系統(tǒng)來說,這就意味著即使在所依附的硬件發(fā)生故障的條件下,,仍然確保數(shù)據(jù)安全,。當(dāng)然,數(shù)據(jù)庫必須備份到其它的硬盤上,,簡單地映射或復(fù)制是不夠的,。嵌入式數(shù)據(jù)庫必須保證主數(shù)據(jù)庫的所有備份數(shù)據(jù)庫無論何時(shí)都是同步的。
4.6 與其它系統(tǒng)共享數(shù)據(jù)
判斷一個(gè)企業(yè)運(yùn)營情況,,通常要對企業(yè)的數(shù)據(jù)進(jìn)行收集,、整理和分析。事實(shí)上,企業(yè)或組織的所有嵌入式系統(tǒng)和設(shè)備都要隨著用戶數(shù)據(jù)收集能力,、傳輸和獲取需求的增加而不斷升級(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)的存儲(chǔ)結(jié)構(gòu),、數(shù)據(jù)的存取速度、實(shí)時(shí)事務(wù)的優(yōu)先級(jí)調(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ì)算機(jī)應(yīng)用與軟件,,2002;(12)