




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.基于SQLite數(shù)據(jù)庫的家庭網(wǎng)關(guān)數(shù)據(jù)庫系統(tǒng)設(shè)計-設(shè)計論文基于SQLite數(shù)據(jù)庫的家庭網(wǎng)關(guān)數(shù)據(jù)庫系統(tǒng)設(shè)計 李宏升 LI Hong-sheng(黃淮學(xué)院信息工程學(xué)院,駐馬店 463000)摘要: 本文從體系結(jié)構(gòu),內(nèi)部函數(shù),外部接口,索引算法等方面對SQLite進行了改進與優(yōu)化;針對信息家電特點重新設(shè)計了實時數(shù)據(jù)庫的存儲方式,利用主動規(guī)則庫來提高系統(tǒng)的實時性能,并基于SQLite對家庭網(wǎng)關(guān)進行了CGI程序設(shè)計。關(guān)鍵詞: SQLite;家庭網(wǎng)關(guān);嵌入式Linux;內(nèi)存數(shù)據(jù)庫中圖分類號:TP311.1 文獻標(biāo)識碼:A 文章編號:1006-4311(2015)26-0069-03作者簡介:李宏升(197
2、3-),男,河南新蔡人,講師,工學(xué)碩士,主要從事互聯(lián)網(wǎng)與嵌入式應(yīng)用研究方向。0 引言在信息家電系統(tǒng)中,要用遙控器對各類信息家電主動控制,并隨家庭環(huán)境的變化對信息家電進行自動控制,整個系統(tǒng)中存在著大量實時數(shù)據(jù)的采集和處理需求。目前對數(shù)據(jù)的處理通常采用基于數(shù)據(jù)庫的方式,所以構(gòu)建具有實時性能的嵌入式數(shù)據(jù)庫系統(tǒng)是家庭網(wǎng)關(guān)設(shè)計環(huán)節(jié)必須要解決的問題。結(jié)合國內(nèi)外家庭網(wǎng)關(guān)研究的現(xiàn)狀和進展,如何改進嵌入式實時數(shù)據(jù)庫對信息家電狀態(tài)信息的采集處理效率;如何優(yōu)化數(shù)據(jù)庫系統(tǒng)的資源占用,成為家庭網(wǎng)關(guān)系統(tǒng)設(shè)計的重要環(huán)節(jié)。1 家庭網(wǎng)關(guān)的發(fā)展與演進作為智能家居的大腦,家庭網(wǎng)關(guān)的作用至關(guān)重要。本文主要針對家庭網(wǎng)關(guān)數(shù)據(jù)庫平臺進行研
3、究,選擇合適的數(shù)據(jù)庫架構(gòu),改進、移植相關(guān)軟件,搭建網(wǎng)關(guān)的軟件系統(tǒng),設(shè)計網(wǎng)關(guān)系統(tǒng)中心主模塊和web服務(wù)程序,實現(xiàn)嵌入式web 服務(wù)器的基本功能。2 嵌入式開發(fā)環(huán)境的選擇要想保證系統(tǒng)能夠真正地發(fā)揮自身功能,選擇合適的操作系統(tǒng)至關(guān)重要?,F(xiàn)階段比較成熟的嵌入式系統(tǒng)主要有:Windows CE、Unix、Linux、QNX等。從家庭網(wǎng)關(guān)平臺日后的系統(tǒng)升級、維護和功能擴展這些角度出發(fā),本文中的家庭網(wǎng)關(guān)平臺采用Linux2.6版本作為軟件開發(fā)平臺。Linux2.6內(nèi)核擁有更多的新特性:性能方面,采用了新的內(nèi)核搶占式算法和新的I/O調(diào)度算法;穩(wěn)定性方面,改進了內(nèi)核加載和導(dǎo)出機制,提高了平臺的穩(wěn)定性和可靠性。設(shè)
4、備支持方面,系統(tǒng)內(nèi)核取消了對大型系統(tǒng)的限制,支持更多的控制器和設(shè)備;文件系統(tǒng)方面,擴展了文件的屬性,保證了系統(tǒng)的信息安全,增強了PCI總線支持,對USB、藍牙等外設(shè)總線進行功能擴展,滿足多種短距離無線傳輸,方便家庭網(wǎng)關(guān)的內(nèi)部組網(wǎng)。13 嵌入式網(wǎng)關(guān)系統(tǒng)的模塊化設(shè)計家庭網(wǎng)關(guān)軟件系統(tǒng)采用模塊化設(shè)計,包括系統(tǒng)定制、系統(tǒng)服務(wù)、設(shè)備模塊、控制模塊、顯示模塊、軟件開發(fā)控制等。其中系統(tǒng)定制模塊包括系統(tǒng)移植、內(nèi)核定制、驅(qū)動開發(fā)等部分;系統(tǒng)服務(wù)模塊由系統(tǒng)中心、可移植層、設(shè)備管理器、維護管理器、存儲系統(tǒng)組成,如圖1所示;設(shè)備模塊主要包括視頻模塊、Zigbee模塊、網(wǎng)絡(luò)模塊等;控制模塊主要由web 服務(wù)器和各種應(yīng)用服
5、務(wù)器組成2。4 SQLite數(shù)據(jù)庫的改進與移植4.1 數(shù)據(jù)庫的選型家庭網(wǎng)關(guān)中的嵌入式實時數(shù)據(jù)庫是為了完成家電狀態(tài)信息的管理而設(shè)計的小型數(shù)據(jù)庫。應(yīng)具備如下功能:支持多種數(shù)據(jù)類型;支持創(chuàng)建和刪除多個表;支持對記錄進行插入刪除修改和查詢操作;支持表的索引操作;支持觸發(fā)操作,以滿足信息家電之間的統(tǒng)一協(xié)作。 基于嵌入式linux系統(tǒng)的數(shù)據(jù)庫非常多,常用的有以下幾種:Oracle Database Lite;DB2 Everyplace;Berkeley DB;Firebird;MySQL;SQLite。本文選取的SQLite數(shù)據(jù)庫系統(tǒng)是一個簡單易用、開放源碼的輕量級嵌入式數(shù)據(jù)庫管理系統(tǒng)。它具有以下優(yōu)勢:
6、支持ACID事務(wù);不需要安裝配置、支持大部分SQL92;數(shù)據(jù)存儲在單一的磁盤文件中;最大支持?jǐn)?shù)據(jù)庫到2TB;內(nèi)核精??;數(shù)據(jù)操作速度快等。4.2 SQLite的應(yīng)用系統(tǒng)設(shè)計SQLite系統(tǒng)的體系結(jié)構(gòu)包括8個主要模塊,如圖2所示。應(yīng)用程序接口是SQLite的公共接口,通過main.c,table.c,legaey.c,vdbeapi.c程序來實現(xiàn)。詞法分析器負(fù)責(zé)將原始的SQL語句按順序傳送到語法分析器里。語法分析器是一個基于上下文環(huán)境的輸入語法解釋器,采用非終結(jié)符析構(gòu)器的概念,大大降低了出錯的幾率。通過調(diào)用代碼生成器,可生成SQL查詢所需的虛擬機代碼。虛擬機是使用堆棧存儲指令來實現(xiàn)處理代碼生成器產(chǎn)
7、生代碼的虛擬引擎。B-樹驅(qū)動器通過表和索引中的B-tree創(chuàng)建相應(yīng)的數(shù)據(jù)庫實例。B-tree模塊在磁盤建立1024字節(jié)大小的頁面緩存,進行讀寫緩沖,管理數(shù)據(jù)庫文件的讀/寫鎖定的權(quán)限。SQLite通過Linux系統(tǒng)的操作系統(tǒng)接口來打開和關(guān)閉、刪除和創(chuàng)建文件,釋放磁盤的緩沖。3SQLite系統(tǒng)與Linux的外部接口的具體應(yīng)用集成在一起,由程序調(diào)用相應(yīng)的核心API函數(shù)去實現(xiàn)對數(shù)據(jù)的存取操作。Sqlite3_open()可以打開數(shù)據(jù)庫文件,建立SQLite引擎;sqlite3_exec()對查詢結(jié)果進行處理;sqlite3_close()用來關(guān)閉數(shù)據(jù)庫文件,釋放SQLite引擎。4.3 對SQLite
8、存儲結(jié)構(gòu)及索引機制的改進由于SQLite所有數(shù)據(jù)都保存在設(shè)備的Flash中,為了減少FO操作,延長Flash的壽命,對數(shù)據(jù)的操作都設(shè)計為在內(nèi)存中完成,只在設(shè)備啟動和修改保存數(shù)據(jù)時才進行FO操作。將SQLite改進為基于內(nèi)存的嵌入式關(guān)系型數(shù)據(jù)庫,提高數(shù)據(jù)操作效率,增強實時性能。4.4 優(yōu)化SQL數(shù)據(jù)在內(nèi)存中的存儲結(jié)構(gòu)在內(nèi)存中采用區(qū)段式結(jié)構(gòu)進行內(nèi)存數(shù)據(jù)的組織管理,將存儲空間邏輯地劃分為多個分區(qū)。每個分區(qū)存儲一個關(guān)系。區(qū)段式數(shù)據(jù)組織管理機制如圖3所示。為保證數(shù)據(jù)結(jié)構(gòu)的緊湊性,內(nèi)存數(shù)據(jù)庫中的關(guān)系表按編號登記在分區(qū)表中。當(dāng)有新數(shù)據(jù)段插入時,在分區(qū)表或段表中找到插入點,插入點后的所有表項都往后移動一項;而
9、刪除一個表項時,則刪除點之后的所有表項都往前移動一項。為節(jié)省內(nèi)存占用,分區(qū)表和段表均采用動態(tài)數(shù)組結(jié)構(gòu),具體操作是:創(chuàng)建時都先申請適當(dāng)大小的表項空間,數(shù)據(jù)的增加使得區(qū)段表不斷增長,當(dāng)表項空間不夠時,再申請一定數(shù)量的空間。相反,數(shù)據(jù)的刪除操作使得區(qū)段表不斷縮短,當(dāng)其尾部出現(xiàn)大量的空表項時,回收空表項占用的內(nèi)存。44.5 優(yōu)化內(nèi)存數(shù)據(jù)庫的索引機制為適應(yīng)智能家居中對實時數(shù)據(jù)頻繁的查找和更新需求,進一步改進高效的索引機制加速操作的執(zhí)行速度,需優(yōu)化內(nèi)存數(shù)據(jù)庫的索引機制。SQLite系統(tǒng)采用是基于改進的Hybrid-HT的H-T索引機制,本文通過優(yōu)化H-T機制中的哈希函數(shù),通過對哈希表長的控制,分散了鍵值對
10、記錄指針和哈希地址的操作范圍,從而高效率利用內(nèi)存空間,提高查詢、修改的操作速度。55 家庭網(wǎng)關(guān)數(shù)據(jù)庫系統(tǒng)的設(shè)計本文構(gòu)造的嵌入式家庭網(wǎng)關(guān),是以S3C440系列嵌入式微處理器為中心,uCLinux嵌入式操作系統(tǒng)作為家庭網(wǎng)關(guān)的底層,移植部分功能模塊作為家庭網(wǎng)關(guān)硬件平臺。信息家電通過IAIDL接口向家庭網(wǎng)關(guān)注冊,每個家電的注冊信息、參數(shù)和狀態(tài)信息都存放在SQLite數(shù)據(jù)庫中,如圖4所示。信息家電接口定義語言(IAIDL)是一種用來定義智能家居網(wǎng)絡(luò)中信息家電的說明性語言,是對設(shè)備資源信息的描述。以某公司生產(chǎn)的某信息空調(diào)為例,其IAIDL描述如下:美的空調(diào) is 空調(diào)enum type=(slow,nor
11、mal,quick);enum switch=(on,off);attribute廠家=美的電器公司;attribute功率=1.5P;state溫度狀態(tài)Temp int(29:20:the_min_value,40:the_max_value);state風(fēng)速狀態(tài)fan type(normal,normal);function設(shè)置溫度void ST Temp(in int st(20,40):function設(shè)置風(fēng)速void ST Fan(in type ff);function開關(guān)void On Off(in switch 00);SQLite中家電信息表的生成IAIDL定義了家庭網(wǎng)絡(luò)中設(shè)
12、備之間的互操作,詳細(xì)描述信息家電的屬性和功能。家庭網(wǎng)關(guān)利用編譯器提取設(shè)備所發(fā)送的IAIDL描述內(nèi)容進行解析,利用API函數(shù)將相關(guān)信息存儲在SQLite數(shù)據(jù)表中。SQLite庫中的信息表包含設(shè)備類型表、設(shè)備列表、設(shè)備屬性表、設(shè)備接口表、事件通道表五種表格。由系統(tǒng)將設(shè)備類型號作為關(guān)鍵字,作為每類設(shè)備的唯一標(biāo)識,如圖5所示。6編譯器對設(shè)備IAIDL完成分析掃描后,通過API函數(shù)接口生成數(shù)據(jù)庫文件。信息家電啟動時,系統(tǒng)會在內(nèi)存區(qū)域生成設(shè)備狀態(tài)表的副本作為設(shè)備運行狀態(tài)表。這些文件不會隨著時間的變化而發(fā)生改變,真正實時變化是處于運行狀態(tài)的設(shè)備狀態(tài)信息。實時監(jiān)控系統(tǒng)按一定的掃描頻率對內(nèi)存中的設(shè)備運行狀態(tài)表進
13、行掃描,數(shù)據(jù)采集模塊按照設(shè)定的頻率對外部信號進行采集,經(jīng)數(shù)據(jù)處理模塊將數(shù)據(jù)存入內(nèi)存中的設(shè)備運行狀態(tài)表,獲取最新的狀態(tài)數(shù)據(jù),完成對設(shè)備狀態(tài)的實時更新和控制。信息家電中的黑色家電是供人們娛樂休閑用的,如電視機、VCD、音響等。黑色家電的狀態(tài)絕大多數(shù)情況下不會發(fā)生改變,所以設(shè)定所有的黑色家電都沒有實時狀態(tài)信息,在內(nèi)存中不生成設(shè)備運行狀態(tài)表,需要查詢時可以從flash中讀取。而白色家電的狀態(tài)會隨著時間的變化而不斷變化,數(shù)據(jù)的實時性要求很高,如空調(diào)、電冰箱等,是改善生活環(huán)境提高物質(zhì)生活水平的。白色家電啟動后在內(nèi)存中生成設(shè)備運行狀態(tài)表,可以隨時監(jiān)視到設(shè)備狀態(tài)。在系統(tǒng)中構(gòu)建主動規(guī)則庫對設(shè)備的實時狀態(tài)進行監(jiān)控
14、,當(dāng)設(shè)備狀態(tài)變化時對家電進行自動控制,或設(shè)備狀態(tài)異常進行報警,由ECA規(guī)則來實現(xiàn)。一旦信息家電出現(xiàn)異常情況,就要進行報警操作。信息家電在滿足這些設(shè)定的事件時,系統(tǒng)能自動執(zhí)行規(guī)定好的動作。7在設(shè)備運行過程中,數(shù)據(jù)隨著各種設(shè)備的運行不斷產(chǎn)生,系統(tǒng)將新的狀態(tài)數(shù)據(jù)寫入內(nèi)存,實時數(shù)據(jù)會轉(zhuǎn)儲為歷史數(shù)據(jù)。為保證系統(tǒng)的穩(wěn)定性,系統(tǒng)中的實時數(shù)據(jù)備份模塊負(fù)責(zé)周期性將內(nèi)存中設(shè)備狀態(tài)表數(shù)據(jù)保存到Flash中。當(dāng)設(shè)備運行故障時,可以從歷史數(shù)據(jù)庫中進行恢復(fù)。6 家庭網(wǎng)關(guān)WEB服務(wù)器的設(shè)計家庭網(wǎng)關(guān)中各種動態(tài)信息需要服務(wù)器實時創(chuàng)建,服務(wù)器程序與客戶端瀏覽器有較強的交互能力。本文采用BOA+CGI應(yīng)用程序構(gòu)建WEB服務(wù)器。CG
15、I是外部擴展應(yīng)用程序與Web服務(wù)器交互的一個標(biāo)準(zhǔn)接口。Web服務(wù)器通過調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互,處理來自客戶端瀏覽器輸入的數(shù)據(jù),從而完成客戶端與服務(wù)器的交互,實現(xiàn)動態(tài)Web技術(shù)。8WEB服務(wù)器從SQL查詢結(jié)果中讀取信息,同時把這些信息返回給客戶端。CGI應(yīng)用程序可以使用printf()函數(shù)將查詢結(jié)果以HTML的形式輸出到客戶端,向客戶端返回動態(tài)頁面,實現(xiàn)用戶WEB服務(wù)器與數(shù)據(jù)庫SQLite的交互??傊麄€家庭網(wǎng)關(guān)程序設(shè)計都以嵌入式數(shù)據(jù)庫實時SQLite為核心,可有效滿足家庭網(wǎng)關(guān)對信息家電實時數(shù)據(jù)管理要求。7 結(jié)論本文針對嵌入式設(shè)備的實時性特點,結(jié)合家庭網(wǎng)關(guān)的實際應(yīng)用需求,對SQ
16、Lite數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)、內(nèi)部函數(shù)、外部接口、索引算法等方面進行了改進與優(yōu)化。提高了系統(tǒng)整體實時性能;完善了數(shù)據(jù)庫的安全性;降低了系統(tǒng)資源占用,良好的匹配了現(xiàn)有ARM架構(gòu)的家庭網(wǎng)關(guān)硬件體系,完全能滿足家庭網(wǎng)關(guān)對信息家電實時數(shù)據(jù)管理的要求。由于自身水平、設(shè)備條件有限,本文還有很多需進一步改進的地方,如事務(wù)處理的調(diào)度和執(zhí)行策略方面;身份驗證、數(shù)據(jù)加密等安全性研究方面,對報警庫,CA庫,ECA庫的詳細(xì)設(shè)計方面還有待于進一步的充實和完善。參考文獻:1宋安,習(xí)勇,魏急波.基于CLinux的NAT設(shè)備的設(shè)計與開發(fā)J.電子工程師,2005-05-15.2徐葉,袁敏,李國軍.嵌入式Web服務(wù)器遠程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)J.計算機與現(xiàn)代化,2013-02-27.3王俊,郭書軍.嵌入式Web服務(wù)器的實現(xiàn)及其CGI應(yīng)用J.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 師幼互動培訓(xùn)解讀
- 《數(shù)學(xué)概念與運用》課件
- 鋼結(jié)構(gòu)加工安全培訓(xùn)
- 《色彩學(xué)基礎(chǔ)》課件
- 歌曲授權(quán)協(xié)議書
- 送兒子出國勞務(wù)合同協(xié)議
- 退休勞動合同補償協(xié)議
- 水果配送協(xié)議書
- 建房相鄰關(guān)系協(xié)議書
- 狗狗寄養(yǎng)協(xié)議書
- 2025屆貴州省遵義第四中學(xué)高考全國統(tǒng)考預(yù)測密卷英語試卷含解析
- 2025年北京市豐臺區(qū)九年級初三一模物理試卷(含答案)
- 中醫(yī)內(nèi)科學(xué)胸痹課件
- 2025廣西廣投臨港工業(yè)有限公司社會招聘45人筆試參考題庫附帶答案詳解
- 銅川易源電力實業(yè)有限責(zé)任公司招聘筆試真題2024
- 廚房清潔勞動課件
- 2024年北京高考化學(xué)試卷知識點分布
- 2025-2030中國橋塞行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 土地旋耕合同協(xié)議書范本
- 山西省太原市2025年高三年級模擬考試(二)歷史試題及答案
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試數(shù)學(xué)試卷及答案(武漢四調(diào))
評論
0/150
提交評論