嵌入式數據庫的應用
嵌入式數據庫一般不出現在表現層,所以很難被一般的用戶所察覺。實際上,被稱作“嵌入式數據庫”的軟件早在20年前就已經被組合在各種應用程序、軟件組件和硬件環境中。它有兩個很重要的特征——“嵌入性”和“實時性”。這里用實際應用的實例來說明,在嵌入式系統里如何有效地使用嵌入式數據庫。
關鍵詞? 嵌入式數據庫? 工業控制? 汽車導航? 信息家電? 宇宙航空? 機器人? 醫療信息系統? 路由器
引言
嵌入式系統中一直很少使用數據庫,因此對大部分人來說,很難想象嵌入式數據庫在哪些場合才能發揮出優勢。事實上,嵌入式數據庫大致可在以下兩大領域使用:
① 會計、證券交易等業務的應用軟件。在這類軟件中應用,不是把數據庫作為服務器端組成C/S結構,而是將數據庫嵌入到應用程序(使之成為程序的一部分)進行使用。通常也稱為“軟件嵌入”。
② 車載導航、路由器、信息家電、DVD記錄裝置、iPOD、機器人等嵌入式系統。在這類嵌入式系統當中,除了硬件部分外,還需用軟件對其進行控制。這時將嵌入式數據庫嵌入到這些硬件當中,可使系統的性能和效率大大提高。通常也稱作“硬件嵌入”。
1? 嵌入式數據庫和企業級數據庫的比較
現在常用嵌入式數據庫的領域是汽車電子和信息家電等領域。嵌入式數據庫軟件同企業級數據庫軟件(如IBM公司的DB2、Microsoft公司的SQL Server、Oracle公司的Oracle Database)等相比,有以下不同點:
① 內核足夠小,可嵌入于應用程序和處理能力受限的硬件環境;
② 性能高,比企業級數據庫速度要快,實時性要求高;
③ 成本低,可嵌入手機、車載導航等批量生產的系統里;
④ 可裁減,能夠根據實際需要增加或者減少必要功能模塊;
⑤ 嵌入性,能夠嵌入到軟件系統或者硬件系統。對終端用戶來說是透明的,他們在使用時意識不到嵌入式數據庫的存在,能夠免維護。
2? 嵌入式數據庫應用實例
2.1? FA領域的實例
下面舉例介紹嵌入式數據庫產品在控制儀器、數據收集裝置中的使用。
FA(Factory Automation)是采用計算機控制技術使工廠自動化,既可提高生產效益又可實現必要的功能。嵌入式數據庫在FA領域已經廣泛使用。
2.1.1? 汽車碰撞測試裝置
嵌入式數據庫經常在汽車碰撞測試裝置中使用,如圖1所示。所謂汽車碰撞測試,是檢驗汽車安全性能的一種有效手段。在測試中,讓汽車高速碰撞某個物體,然后收集嵌入在車體中各個部位的各種感應器所發出的數據,再對這些數據進行分析,這需要在碰撞的瞬間大量地收集和保存數據。這時,如何能盡快地保存數據是一個問題。為了解決這個問題,在汽車碰撞測試裝置中使用嵌入式數據庫,取得非常好的實際效果。
2.1.2? 發電機監視裝置
在美國大型發電廠的發電機監視裝置里,使用了嵌入式數據庫。發電廠的發電機是非常重要的生產設備,所以要嚴格管理以防發電機停機。發電機的監控裝置通過收集發電機的各種數據進行監視,如圖2所示。
這種需要實時監控的場合,在數據庫里預先錄入了監視數據用的程序模塊。當某數據進入“異常值”、“異常范圍”、“警戒范圍”的時候,這些程序模塊會檢測出這些數據,然后自動報警,同時通知監視中心有異常情況。這種數據收集也可用于發電機系統的模擬試驗。
2.1.3? 監視引擎
在美國的大型飛機制造廠,為了收集引擎的測試數據和飛機內部機械的數據,在飛機上也裝載了嵌入式數據庫。在美國的大型汽車制造廠的引擎廢氣排放測試裝置里,也嵌入了數據庫,廢氣排放測試的結果全部保存于數據庫,以后的其他測試、分析以及模擬試驗等環節就能有效利用這些數據。2008年奧運會所使用的環保巴士內也使用了嵌入式數據庫。
2.1.4? 在FA領域中使用數據庫的注意事項
在這個領域利用嵌入式數據庫時,會有一些常見的典型問題,如往數據庫寫入數據的速度和性能等問題。一方面要求內存消耗量足夠少,一方面又需要對大量數據的進行運算,所以必須同時滿足兩個相反的要求。再者,像發電機裝置監視的例子那樣,數據監視模塊必須要嵌入到數據庫中(在實際的嵌入式數據庫中,這些監視模塊主要是通過用戶自定義的函數來實現數據的收集、監視和報警等)。
另外,在出現故障時能否通過事務處理和恢復注冊等功能進行數據的恢復也很重要。
2.2? 車載導航的實例
2.2.1? 車載導航的GPS與自動導航裝置組合
車載導航系統在日本等發達國家已經普及,在中國實際使用者應該也有很多。不過對日常使用的車載導航,了解它的內部構造的人并不多。這里就有關車載導航的系統構造進行簡單說明。
車載導航GPS(Global Position System,全球定位系統)是利用裝有車速脈沖、羅盤傳感器等的“自動導航法”裝置,為正在駕車的駕駛員進行現在的位置及駛向目的地行駛路線導航的一種電子儀器。
車載導航剛開始開發時,只使用“自動導航法”裝置。由于靠裝置自身來推算出車輛的位置,因此行駛開始后有必要對行駛到一定地點的行駛方向和行駛角度進行小調整。現在GPS方法非常盛行。該方法通過GPS推算出車輛的位置。不過只靠GPS,不管怎樣設計總會有某種程度的誤差。因此,現在的車載導航通過對GPS和“自動導航法”裝置組合的方法來彌補雙方的缺點,以推算出車輛的位置。
2.2.2? 車載導航與地圖信息的融合
車載導航正在朝以下各方向進化,即它不局限于檢測出車輛自身的位置,還可以根據需要調出道路信息和地圖信息等,并把這些信息和車輛的行駛狀況相對照進行計算后提示給用戶,如圖3所示。為了得到這些信息,應在車載導航上裝載DVDROM之類的存儲設備。由于地圖信息不是需要頻繁更新的相對靜止信息,DVDROM之類的ROM存儲設備完全可以滿足這些信息的處理要求。
2.2.3? 用車載導航處理交通信息
隨著技術的發展,現在的車載導航系統把交通信息、堵車信息等也都反映在車載導航中了。因為這些信息要不斷地被更新,所以ROM存儲設備已很難滿足需求了。
為此,許多最新的設計方案中用硬盤存儲介質(HDD,Hard Disk Drive)代替ROM存儲介質。這樣,能夠對多種信息進行更新的新一代車載導航產品問世了。另外,由于裝載了HDD使得車載導航的運行速度變得更快。
2.2.4? 車載導航上追加媒體終端功能
現在可以播放音樂、能與因特網聯網的具備個人電腦功能的車載導航系統已經出現了。另外,還可將電視功能作為標準配置裝在車載導航系統上。電視機除了具有原先的模擬播放形式外,還具有點播方式的數字電視功能。
2.2.5? 現在的車載導航存在的問題
現在的車載導航還有許多功能不能滿足客戶的要求。例如:不能進行復合檢索和模糊檢索。所謂“復合檢索”就是類似這樣的檢索要求:“要在距離人民廣場10 km范圍內并距離火車站3 km的范圍內的地方尋找三星級以上賓館”。所謂“模糊檢索”是,只知道要檢索的公司名或地點名的一部分,通過“中間一致”和“后方一致”的方式檢索出所有匹配的類似目標。
大部分車載導航是通過使用ROM存儲方式提供地圖信息、店鋪信息以及設施的數據來進行計算的,不能夠隨時對有變化的一部分數據進行更新,只能重新再制作一張DVDROM,對所有的信息進行一次性的完全更新。
除此以外,不同的使用者應該可以設定自己的個性化數據,即在使用車載導航時,根據個人的身份數據的不同,應能產生不同的檢索結果(這被稱為“個性化功能”)。在目前的車載導航上還不能夠實現這種功能。要實現這些功能,必須使用嵌入式數據庫。
2.2.6? 數據庫用在車載導航場合能實現的功能
下面再詳細說明一下嵌入式數據庫在裝入車載導航裝置后能實現的新功能。
在檢索功能方面,不但能實現上面的復合檢索和模糊檢索等,還能實現空間檢索。所謂的“空間檢索”,就是能在二維地圖上進行檢索。具體地說,就是手機帶有的道路向導和車載導航的路由檢索功能中預先把坐標數據和屬性數據保存于數據庫中,在檢索條件里設定一個空間范圍(比如:離某地幾km內,同時在另外一個范圍內。類似二個圓的交集)。
個人住所地址或店鋪名稱等發生更改時,使用嵌入式數據庫的優勢就體現出來了。例如“A百貨店”改為“B百貨店”時,要是不更換新的DVDROM就一直是“A百貨店”,如果換上新的DVDROM就會變成“B百貨店”,“A百貨店”就不能被檢索了,二者都是不能被接受的。這時如果使用嵌入式數據庫,則在一定的時期內對輸入的“A百貨店”或“B百貨店”都能進行檢索;過了一定時期后,還可以刪掉“A百貨店”,只讓“B百貨店”成為檢索對象。
以個人履歷信息為基礎的詳細個性化功能的形式如:在“張三”的車載導航的履歷中,他經常去壘球場。以后,只要“張三”檢索體育場,首先就會顯示壘球場的信息。
現在的車載導航有個很麻煩的問題,那就是由于不能隨時隨地按要求部分地更新導航設備中需要更新的相關信息,而使整個導航儀器的信息不準確。下一代的車載導航通過使用數據庫來解決這個問題,使數據能夠得到及時更新;并且在數據更新的同時,還可以進行數據檢索。還有一個重要的優點就是,車載導航的數據庫不會因為引擎停止、電源切斷等原因而被損壞。當然,用在車載導航中的嵌入式數據庫資源消耗量(CPU和儲存容量)必須很低,而且對有關歷史信息、路徑信息也須有某種程度的安全保護功能。
加載數據庫后的車載導航系統功能如圖4所示。
2.3? 信息家電的實例
2.3.1? 與網絡連接的家電是將來的主流
信息家電正在改變人們的生活。以電視機、大容量刻錄機、DVD、HD、AV機等為代表的家電數字化進程正在穩步推進。另外,電視節目也將以數字化的形式傳輸和播放。這些節目可以預先存儲在服務器上再播放,即所謂的“服務器蓄積型”播放形式。
所謂信息家電就是具有信息處理能力的家電產品。例如:數碼相機、手機等產品,以及今后以和計算機網絡連接為前提的產品(例如DVD、刻錄機、機頂盒等)。這些產品一定會越來越多。
2.3.2? 信息家電中使用嵌入式數據庫的例子
信息家電領域使用數據庫的實例如圖5所示。比如一個用于衛星播放或有線播放的機頂盒。機頂盒里保存有大量的數據,如節目表、節目內容、某時間段播放的電影內容介紹、主演演員的介紹等信息。這些信息的管理和下載、錄入和檢索等都要通過數據庫來實現。用了數據庫技術以后,對節目信息可以同時進行下載和檢索。這是利用多進程的數據庫來實現的,一個數據庫可以支持多個用戶同時訪問。另外,使用節目名字、種類等進行更復雜的復合檢索都變得簡單易行。
和互聯網電視從遠程下載節目信息的接收裝置一樣,許多信息家電需要進行遠距離的電視節目信息的管理、下載、檢索,并根據演員的名字或節目種類進行復合檢索。今后的DVD刻錄機、帶HDD的DVD刻錄機等產品也需要這些功能。
另外,通過在卡拉OK遙控裝置中裝載嵌入式數據庫,就可以提供根據曲名、種類進行復雜的復合檢索。通過設定廣告播放控制盒等設備的各種參數,可以實現廣告內容的定時管理等功能。
2.3.3? 信息家電中使用數據庫的注意事項
要在信息家電領域使用數據庫,數據庫的內核必須足夠的小。電源斷電后的恢復功能(即電源斷電后自動恢復到原先狀態的功能)也是必要的。在實際應用中,電源發生瞬間或者長時間斷電的時候,對數據進行保護是毋庸置疑的。數據庫通常是通過事務處理來對數據進行保護的。具體地說,這種事務處理就是把日志寫入文件系統。因此,一旦文件系統被破壞,就不能進行事務處理了。也就是說,僅靠文件系統層面來實現電源斷電恢復功能或數據保護功能是很難的。嵌入式數據庫里可以帶有其他的硬件所提供的獨立的高性能、高穩定性的文件系統來完善電源斷電恢復功能和數據保護功能。這時,可以根據需要選擇文件系統層面的斷電保護和數據庫層面的斷電保護。
在信息家電的制造中,常常受生產成本或價格的制約,僅靠硬件達不到預期的高性能。因此需要嵌入式數據庫,以支持內存存取和磁盤存取。把最重要的數據表放到內存,可以大大提高性能,降低成本。
2.4? 宇宙航空和機器人的實例
現在,嵌入式數據庫在宇宙航空和機器人等方面有很多實際應用。例如木星探查伽利略計劃,衛星觀測系統,地上測定、命令處理系統,衛星控制系統,天氣預報的發布系統,戰爭模擬游戲等。除此以外,還有許多其他的宇宙航空項目和機器人項目中使用了嵌入式數據庫,如圖6所示。
嵌入式數據庫在宇宙航空以及機器人的應用程序中起著核心的作用。在數據庫中保存著全部的程序、指令、可執行的模塊,并將這些制作成基于知識(knowledge based)或者基于規則 (rule based)的系統。可執行模塊將根據傳感器的信息執行各種動作或命令。
評論
查看更多