嵌入式數(shù)據(jù)庫的現(xiàn)狀和未來
1.嵌入式數(shù)據(jù)庫產(chǎn)生及運(yùn)用的必然性
嵌入式系統(tǒng)在現(xiàn)代人的生活中隨處可見,其中軟件的比例越來越大,軟件開發(fā)的投入也越來越大。
隨著微電子技術(shù)和存儲技術(shù)的不斷發(fā)展,嵌入式系統(tǒng)的內(nèi)存和各種永久存儲介質(zhì)容量都在不斷增加。這也就意味著嵌入式系統(tǒng)內(nèi)數(shù)據(jù)處理量會不斷增加,那么大量的數(shù)據(jù)如何處理問題變得非?,F(xiàn)實(shí)。人們不得不將原本在企業(yè)級運(yùn)用的復(fù)雜的數(shù)據(jù)庫處理技術(shù)引入到嵌入式系統(tǒng)當(dāng)中去,應(yīng)用于嵌入式系統(tǒng)的數(shù)據(jù)庫技術(shù)也就應(yīng)運(yùn)而生。
但是,事情總是比想象復(fù)雜。在嵌入式的世界,無論是通訊領(lǐng)域的嵌入式設(shè)備還是其它領(lǐng)域中,各種中間環(huán)節(jié)逐漸設(shè)備化,成為獨(dú)立的相對封閉的系統(tǒng),對外留有接口。設(shè)備中數(shù)據(jù)種類和處理方法有一定的共同規(guī)律也有自己的特殊規(guī)律。這使得嵌入式數(shù)據(jù)庫不能像企業(yè)級數(shù)據(jù)庫那樣幾乎是一個解決方案走遍天下,而是有著很大的差異性。同時,也為嵌入式數(shù)據(jù)庫的合理運(yùn)用帶來了挑戰(zhàn),這是嵌入式數(shù)據(jù)庫差異化的一個基本原因。
隨著嵌入式系統(tǒng)的擴(kuò)大,嵌入式產(chǎn)品的開發(fā)不再像過去那樣幾個人就可以完成整個系統(tǒng)的開發(fā),需要更多的人組成團(tuán)隊(duì)進(jìn)行合作。嵌入式軟件的需求分析和品質(zhì)管理也變得越來越復(fù)雜,開發(fā)周期也逐漸拉長。為了解決這些問題,引進(jìn)第三方成熟的中間件或解決方案也變得非?,F(xiàn)實(shí)。專業(yè)的嵌入式數(shù)據(jù)庫廠商也逐漸進(jìn)入了人們的視野。因?yàn)椋\(yùn)用成熟的嵌入式數(shù)據(jù)處理中間件可以降低開發(fā)成本、縮短開發(fā)周期,使開發(fā)者能夠?qū)⒏嗟木Ψ旁跇I(yè)務(wù)邏輯的處理上,而不用花大把的金錢和精力來處理數(shù)據(jù),對整個社會的資源也是一種節(jié)約。
2.嵌入式數(shù)據(jù)庫的基本特點(diǎn)
按照馬克思的哲學(xué)理論,事物發(fā)展的進(jìn)程可以用螺旋式上升來描述。嵌入式數(shù)據(jù)庫和我們現(xiàn)在常見的企業(yè)級數(shù)據(jù)庫的基本關(guān)系也是一個螺旋上升式的關(guān)系。雖然,從名字上看,二者有著太多的相似性,但卻有著本質(zhì)的根本性的區(qū)別。外在的形式的相似性,并不能代表二者的實(shí)現(xiàn)方式和運(yùn)用方式的相似。恰恰相反,嵌入式數(shù)據(jù)庫的實(shí)現(xiàn)和運(yùn)用方式和企業(yè)級的數(shù)據(jù)庫有著很大的區(qū)別。
在國外,嵌入式數(shù)據(jù)庫已經(jīng)發(fā)展了30多年,典型的代表是Empress嵌入式數(shù)據(jù)庫。它的特點(diǎn)也基本代表了現(xiàn)階段嵌入式實(shí)時數(shù)據(jù)庫的基本特點(diǎn)。下面就介紹一下Empress嵌入式數(shù)據(jù)庫所具有的區(qū)別于企業(yè)級數(shù)據(jù)庫的幾個主要特點(diǎn)。
嵌入性是嵌入式數(shù)據(jù)庫的基本特性。嵌入式數(shù)據(jù)庫不僅可以嵌入到其他的軟件當(dāng)中,也可以嵌入到硬件設(shè)備當(dāng)中。Empress的方法之一就是使數(shù)據(jù)庫以組件的形式存在,并發(fā)布給客戶,客戶只需要像調(diào)用自己定義的函數(shù)那樣調(diào)用相應(yīng)的函數(shù)就可以創(chuàng)建表、插入刪除數(shù)據(jù)等常規(guī)的數(shù)據(jù)庫操作。客戶在自己的產(chǎn)品發(fā)布時,可以將Empress數(shù)據(jù)庫編譯到自己的產(chǎn)品內(nèi),變成自己產(chǎn)品的一部分,最終用戶是感受不到數(shù)據(jù)庫的存在的,也不用特意去維護(hù)數(shù)據(jù)庫。
實(shí)時性和嵌入性是分不開的。只有具有了嵌入性的數(shù)據(jù)庫才能夠第一時間得到系統(tǒng)的資源,對系統(tǒng)的請求在第一時間內(nèi)做出響應(yīng)。但是,并不是具有嵌入性就一定具有實(shí)時性。要想嵌入式數(shù)據(jù)庫具有很好的實(shí)時性,必須做很多額外的工作。比如:Empress實(shí)時數(shù)據(jù)庫將嵌入性和高速的數(shù)據(jù)引擎、定時功能以及防斷片處理等措施整合在一起來保證最基本的實(shí)時性。當(dāng)然,不同的場合實(shí)時性要求比較高時,除了軟件的實(shí)時性外,硬件的實(shí)時性也是必須的,具體情況需要有具體和切實(shí)的解決方案,不能一概而論。
移動性是目前在國內(nèi)提的比較多的一個說法,這和目前國內(nèi)移動設(shè)備的大規(guī)模應(yīng)用有關(guān)??梢赃@么說,具有嵌入性的數(shù)據(jù)庫一定具有比較好的移動性,但是具有比較好的移動性的數(shù)據(jù)庫,不一定具有嵌入性。比如,一個小型的C/S結(jié)構(gòu)的數(shù)據(jù)庫也可以運(yùn)用在移動設(shè)備上,而具有移動性。但這個數(shù)據(jù)庫本身是一個獨(dú)立存在的實(shí)體,需要額外的運(yùn)行資源,本質(zhì)上講和企業(yè)級數(shù)據(jù)庫區(qū)別不大。所以不具有嵌入性,也基本上不具備實(shí)時性。Empress是優(yōu)秀的嵌入式實(shí)時數(shù)據(jù)庫,毫無疑問也是非常優(yōu)秀的移動數(shù)據(jù)庫。
伸縮性在嵌入式場合顯得尤為重要。首先嵌入式場合硬件和軟件的平臺都是千差萬別,基本都是客戶根據(jù)需要自己選擇的結(jié)果。
所以嵌入式場合的數(shù)據(jù)庫必須能夠支持非常多的平臺,如Empress目前支持6000多種平臺。同時,數(shù)據(jù)存儲要支持常見的存儲設(shè)備,如CF/Flash/HD等。多進(jìn)程和多線程是必備的,現(xiàn)在的嵌入式系統(tǒng)已經(jīng)遠(yuǎn)遠(yuǎn)不是當(dāng)初的簡單的編程,代碼量增大,功能日益復(fù)雜,所以必然要支持多線程和多進(jìn)程。C/C++和SQL接口的支持也是必備的,作為數(shù)據(jù)庫當(dāng)然要有大家熟悉的SQL,但同時不要忘記嵌入式場合用的最多的標(biāo)準(zhǔn)的C/C++接口。某種程度上說,嵌入式場合的數(shù)據(jù)比企業(yè)級應(yīng)用的數(shù)據(jù)還要復(fù)雜,所以要支持各種類型的數(shù)據(jù),如多媒體數(shù)據(jù)和空間數(shù)據(jù)等,要支持各種數(shù)據(jù)結(jié)構(gòu),除了傳統(tǒng)的關(guān)系型,還要能處理樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)。
當(dāng)然,肯定要具備企業(yè)級數(shù)據(jù)庫所具有的一些共性。比如,一致性是數(shù)據(jù)庫所必需的特性。通過事務(wù)、鎖功能和數(shù)據(jù)同步等多種技術(shù)保證數(shù)據(jù)庫內(nèi)的各個表內(nèi)的數(shù)據(jù)的一致性,同時也保證數(shù)據(jù)庫和其他同步或鏡像數(shù)據(jù)庫內(nèi)數(shù)據(jù)的一致性。安全性也是必不可少的。在保證物理信息本身的安全的同時,也要保證用戶私有信息的安全。
3. 80%和20%
嵌入式的應(yīng)用場合和通用PC或服務(wù)器架構(gòu)上的應(yīng)用有著很大的不同。嵌入式系統(tǒng)中雖然也有不少的標(biāo)準(zhǔn)和組件,但種類繁多,環(huán)境千差萬別,應(yīng)用特殊化的地方非常之多。所以在嵌入式場合無論成熟的產(chǎn)品和組件一般只能夠滿足客戶的80%的要求。余下20%的要求是需要產(chǎn)品提供方和客戶共同來努力解決的特化的部分。當(dāng)然,每個行業(yè)都有自己的特點(diǎn),如果能夠?yàn)槟硞€行業(yè)提供完整的特殊化解決方案,那么在同行業(yè)中特化的部分也就不會再有這么高的比例。
這些特殊化工作比較多,下面列舉一兩個:
針對不同平臺和環(huán)境的移植。雖然大部分操作系統(tǒng)都聲稱支持標(biāo)準(zhǔn)的POSIX接口,但實(shí)際上要在上面高效運(yùn)行實(shí)時的嵌入式數(shù)據(jù)庫還是比較困難的。有的實(shí)時性非常高的操作可能還需要直接調(diào)用CPU的處理指令。所以最好在客戶使用嵌入式數(shù)據(jù)庫之前,將數(shù)據(jù)庫移植到客戶的環(huán)境中去。對于那些部分支持,或者不支持POSIX標(biāo)準(zhǔn)的操作系統(tǒng)就只能做移植了。
在客戶平臺上做出性能測試報告和優(yōu)化。嵌入式場合很多應(yīng)用是非??量痰?,所以必須保障嵌入式數(shù)據(jù)庫在客戶的平臺上能夠達(dá)到客戶要求的性能指標(biāo)。最佳的評價方就是嵌入式數(shù)據(jù)庫的提供方在客戶平臺上做的性能測試報告,并在必要的地方對數(shù)據(jù)處理方式進(jìn)行優(yōu)化。
根據(jù)應(yīng)用的要求實(shí)現(xiàn)個性化的功能。既然數(shù)據(jù)統(tǒng)一由數(shù)據(jù)庫引擎進(jìn)行管理,那么許多特殊的功能在這一層實(shí)現(xiàn)是最佳的選擇。所以,嵌入式數(shù)據(jù)庫進(jìn)入一個新的行業(yè)以后,都會產(chǎn)生一些新的應(yīng)用構(gòu)件。這些構(gòu)件直接和引擎打交道,同時對用戶層留有接口。
這種差異化也導(dǎo)致了嵌入式數(shù)據(jù)庫的技術(shù)支持變得比較重要,廠家一般都會提供有償或無償?shù)募夹g(shù)支持。
4.嵌入式數(shù)據(jù)庫的分類
嵌入式數(shù)據(jù)庫的分類方法很多,可以按照嵌入的對象不同分為:軟件嵌入數(shù)據(jù)庫、設(shè)備嵌入數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫。也有人將它們粗略的分為:嵌入數(shù)據(jù)庫、移動數(shù)據(jù)庫、小型的C/S結(jié)構(gòu)數(shù)據(jù)庫等。筆者更偏向于按照下面的方式進(jìn)行劃分:
小型C/S數(shù)據(jù)庫。這種數(shù)據(jù)庫其實(shí)是企業(yè)級數(shù)據(jù)庫的一個縮小版,縮小以后可以在一些實(shí)時性要求不高的設(shè)備內(nèi)運(yùn)行。它只和操作系統(tǒng)有關(guān),一般只能支持一些常見的移動操作系統(tǒng),如,Linux和Windows CE系列。
面向軟件嵌入數(shù)據(jù)庫。它將數(shù)據(jù)庫作為組件嵌入到其他的軟件系統(tǒng)中。一般用在對數(shù)據(jù)庫的安全性、穩(wěn)定性和速度要求比較高的系統(tǒng)中。這種結(jié)構(gòu)資源消耗低,最終用戶不用維護(hù)數(shù)據(jù)庫,甚至感受不到數(shù)據(jù)的存在。
面向設(shè)備嵌入數(shù)據(jù)庫。它將關(guān)系型數(shù)據(jù)庫嵌入到設(shè)備當(dāng)中去,作為設(shè)備數(shù)據(jù)處理的核心組件。這種場合要求數(shù)據(jù)庫有很高的實(shí)時性和穩(wěn)定性,一般運(yùn)行在實(shí)時性非常高的操作系統(tǒng)當(dāng)中。為了達(dá)到這些要求有的廠商采用關(guān)系型的數(shù)據(jù)結(jié)構(gòu),有的采用非關(guān)系型的數(shù)據(jù)結(jié)構(gòu)。有時候甚至直接和硬件打交道。當(dāng)然,這種結(jié)構(gòu)在實(shí)時性要求不高的移動場合更能夠勝任。
內(nèi)存數(shù)據(jù)庫。數(shù)據(jù)庫直接在內(nèi)存內(nèi)運(yùn)行,數(shù)據(jù)處理更加高速,不過安全性等方面需要額外的手段來保障。
當(dāng)然,相同類型的嵌入式數(shù)據(jù)庫肯定會有很多不同的版本。如,Empress具有上述所有種類的嵌入式數(shù)據(jù)庫,且每種都有很多版本,就在一年前剛剛針對日本市場比較特殊的操作系統(tǒng)iTRON開發(fā)了一個專用的嵌入式數(shù)據(jù)庫版本。
5.嵌入式數(shù)據(jù)庫的構(gòu)件
嵌入式數(shù)據(jù)庫包含的構(gòu)件很多,不過大部分嵌入式數(shù)據(jù)庫包含的構(gòu)件差別是不大的,以Empress嵌入式數(shù)據(jù)庫為例包括以下一些構(gòu)件。
用戶接口級構(gòu)件。這些構(gòu)件主要是方便用戶對數(shù)據(jù)庫進(jìn)行操作和訪問。如,標(biāo)準(zhǔn)的C語言應(yīng)用程序接口(C KERNEL API);標(biāo)準(zhǔn)的SQL語句(EMBEDDED SQL);JDBC/ODBC接口;數(shù)據(jù)流處理(Data Streaming)、網(wǎng)絡(luò)處理(Embedded Network API)以及數(shù)據(jù)恢復(fù)處理(Data Recovery API)等。
應(yīng)用級構(gòu)件。該部分的構(gòu)件包括一些主要應(yīng)用所必需的構(gòu)件,當(dāng)然隨著應(yīng)用的不同,構(gòu)件也是可以裁剪和添加的。
引擎級構(gòu)件。主要包含事務(wù)處理(Transaction)、索引(Index)、多進(jìn)程/多任務(wù)(Multi Proc/Task Access)、可配置數(shù)據(jù)庫內(nèi)核(Configurable Database Kernel)、斷電恢復(fù)管理(Power Down Recover
提交
中國聯(lián)通首個量子通信產(chǎn)品“量子密信”亮相!
國家重大裝備企業(yè)齊聚高交會 中國科技第一展11月深圳舉行
東土精彩亮相華南工博會,展現(xiàn)未來工業(yè)前沿技術(shù)
ATMS邀請函 | 以智馭新,協(xié)作創(chuàng)造汽車行業(yè)新質(zhì)生產(chǎn)力
直播定檔!見證西門子與中科摩通聯(lián)手打造汽車電子智能制造新范式