基于SQLite數(shù)據(jù)庫(kù)的家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì).doc_第1頁(yè)
基于SQLite數(shù)據(jù)庫(kù)的家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì).doc_第2頁(yè)
基于SQLite數(shù)據(jù)庫(kù)的家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì).doc_第3頁(yè)
基于SQLite數(shù)據(jù)庫(kù)的家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì).doc_第4頁(yè)
基于SQLite數(shù)據(jù)庫(kù)的家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于SQLite數(shù)據(jù)庫(kù)的家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì) 李宏升LIHong-sheng (黃淮學(xué)院信息工程學(xué)院,駐馬店463000) 摘要:本文從體系結(jié)構(gòu),內(nèi)部函數(shù),外部接口,索引算法等方面對(duì)SQLite進(jìn)行了改進(jìn)與優(yōu)化;針對(duì)信息家電特點(diǎn)重新設(shè)計(jì)了實(shí)時(shí)數(shù)據(jù)庫(kù)的存儲(chǔ)方式,利用主動(dòng)規(guī)則庫(kù)來(lái)提高系統(tǒng)的實(shí)時(shí)性能,并基于SQLite對(duì)家庭網(wǎng)關(guān)進(jìn)行了CGI程序設(shè)計(jì)。 關(guān)鍵詞:sqlite;家庭網(wǎng)關(guān);嵌入式linux;內(nèi)存數(shù)據(jù)庫(kù) :TP311.1:A:1006-4311(xx)26-0069-03 作者簡(jiǎn)介:李宏升(1973-),男,河南新蔡人,講師,工學(xué)碩士,主要從事互聯(lián)網(wǎng)與嵌入式應(yīng)用研究方向。 0引言 在信息家電系統(tǒng)中,要用遙控器對(duì)各類(lèi)信息家電主動(dòng)控制,并隨家庭環(huán)境的變化對(duì)信息家電進(jìn)行自動(dòng)控制,整個(gè)系統(tǒng)中存在著大量實(shí)時(shí)數(shù)據(jù)的采集和處理需求。目前對(duì)數(shù)據(jù)的處理通常采用基于數(shù)據(jù)庫(kù)的方式,所以構(gòu)建具有實(shí)時(shí)性能的嵌入式數(shù)據(jù)庫(kù)系統(tǒng)是家庭網(wǎng)關(guān)設(shè)計(jì)環(huán)節(jié)必須要解決的問(wèn)題。 結(jié)合國(guó)內(nèi)外家庭網(wǎng)關(guān)研究的現(xiàn)狀和進(jìn)展,如何改進(jìn)嵌入式實(shí)時(shí)數(shù)據(jù)庫(kù)對(duì)信息家電狀態(tài)信息的采集處理效率;如何優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)的資源占用,成為家庭網(wǎng)關(guān)系統(tǒng)設(shè)計(jì)的重要環(huán)節(jié)。 1家庭網(wǎng)關(guān)的發(fā)展與演進(jìn) 作為智能家居的大腦,家庭網(wǎng)關(guān)的作用至關(guān)重要。本文主要針對(duì)家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)平臺(tái)進(jìn)行研究,選擇合適的數(shù)據(jù)庫(kù)架構(gòu),改進(jìn)、移植相關(guān)軟件,搭建網(wǎng)關(guān)的軟件系統(tǒng),設(shè)計(jì)網(wǎng)關(guān)系統(tǒng)中心主模塊和web服務(wù)程序,實(shí)現(xiàn)嵌入式web服務(wù)器的基本功能。 2嵌入式開(kāi)發(fā)環(huán)境的選擇 要想保證系統(tǒng)能夠真正地發(fā)揮自身功能,選擇合適的操作系統(tǒng)至關(guān)重要?,F(xiàn)階段比較成熟的嵌入式系統(tǒng)主要有:WindowsCE、Unix、Linux、QNX等。從家庭網(wǎng)關(guān)平臺(tái)日后的系統(tǒng)升級(jí)、維護(hù)和功能擴(kuò)展這些角度出發(fā),本文中的家庭網(wǎng)關(guān)平臺(tái)采用Linux2.6版本作為軟件開(kāi)發(fā)平臺(tái)。 Linux2.6內(nèi)核擁有更多的新特性:性能方面,采用了新的內(nèi)核搶占式算法和新的I/O調(diào)度算法;穩(wěn)定性方面,改進(jìn)了內(nèi)核加載和導(dǎo)出機(jī)制,提高了平臺(tái)的穩(wěn)定性和可靠性。設(shè)備支持方面,系統(tǒng)內(nèi)核取消了對(duì)大型系統(tǒng)的限制,支持更多的控制器和設(shè)備;文件系統(tǒng)方面,擴(kuò)展了文件的屬性,保證了系統(tǒng)的信息安全,增強(qiáng)了PCI總線支持,對(duì)USB、藍(lán)牙等外設(shè)總線進(jìn)行功能擴(kuò)展,滿足多種短距離無(wú)線傳輸,方便家庭網(wǎng)關(guān)的內(nèi)部組網(wǎng)。1 3嵌入式網(wǎng)關(guān)系統(tǒng)的模塊化設(shè)計(jì) 家庭網(wǎng)關(guān)軟件系統(tǒng)采用模塊化設(shè)計(jì),包括系統(tǒng)定制、系統(tǒng)服務(wù)、設(shè)備模塊、控制模塊、顯示模塊、軟件開(kāi)發(fā)控制等。其中系統(tǒng)定制模塊包括系統(tǒng)移植、內(nèi)核定制、驅(qū)動(dòng)開(kāi)發(fā)等部分;系統(tǒng)服務(wù)模塊由系統(tǒng)中心、可移植層、設(shè)備管理器、維護(hù)管理器、存儲(chǔ)系統(tǒng)組成,如圖1所示;設(shè)備模塊主要包括視頻模塊、Zigbee模塊、網(wǎng)絡(luò)模塊等;控制模塊主要由web服務(wù)器和各種應(yīng)用服務(wù)器組成2。 4SQLite數(shù)據(jù)庫(kù)的改進(jìn)與移植 4.1數(shù)據(jù)庫(kù)的選型 家庭網(wǎng)關(guān)中的嵌入式實(shí)時(shí)數(shù)據(jù)庫(kù)是為了完成家電狀態(tài)信息的管理而設(shè)計(jì)的小型數(shù)據(jù)庫(kù)。應(yīng)具備如下功能:支持多種數(shù)據(jù)類(lèi)型;支持創(chuàng)建和刪除多個(gè)表;支持對(duì)記錄進(jìn)行插入刪除修改和查詢(xún)操作;支持表的索引操作;支持觸發(fā)操作,以滿足信息家電之間的統(tǒng)一協(xié)作。 基于嵌入式linux系統(tǒng)的數(shù)據(jù)庫(kù)非常多,常用的有以下幾種: OracleDatabaseLite;DB2Everyplace;BerkeleyDB;Firebird;MySQL;SQLite。本文選取的SQLite數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)簡(jiǎn)單易用、開(kāi)放源碼的輕量級(jí)嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)。它具有以下優(yōu)勢(shì):支持ACID事務(wù);不需要安裝配置、支持大部分SQL92;數(shù)據(jù)存儲(chǔ)在單一的磁盤(pán)文件中;最大支持?jǐn)?shù)據(jù)庫(kù)到2TB;內(nèi)核精?。粩?shù)據(jù)操作速度快等。 4.2SQLite的應(yīng)用系統(tǒng)設(shè)計(jì) SQLite系統(tǒng)的體系結(jié)構(gòu)包括8個(gè)主要模塊,如圖2所示。 應(yīng)用程序接口是SQLite的公共接口,通過(guò)main.c,table.c,legaey.c,vdbeapi.c程序來(lái)實(shí)現(xiàn)。詞法分析器負(fù)責(zé)將原始的SQL語(yǔ)句按順序傳送到語(yǔ)法分析器里。語(yǔ)法分析器是一個(gè)基于上下文環(huán)境的輸入語(yǔ)法解釋器,采用非終結(jié)符析構(gòu)器的概念,大大降低了出錯(cuò)的幾率。通過(guò)調(diào)用代碼生成器,可生成SQL查詢(xún)所需的虛擬機(jī)代碼。虛擬機(jī)是使用堆棧存儲(chǔ)指令來(lái)實(shí)現(xiàn)處理代碼生成器產(chǎn)生代碼的虛擬引擎。B-樹(shù)驅(qū)動(dòng)器通過(guò)表和索引中的B-tree創(chuàng)建相應(yīng)的數(shù)據(jù)庫(kù)實(shí)例。B-tree模塊在磁盤(pán)建立1024字節(jié)大小的頁(yè)面緩存,進(jìn)行讀寫(xiě)緩沖,管理數(shù)據(jù)庫(kù)文件的讀/寫(xiě)鎖定的權(quán)限。SQLite通過(guò)Linux系統(tǒng)的操作系統(tǒng)接口來(lái)打開(kāi)和關(guān)閉、刪除和創(chuàng)建文件,釋放磁盤(pán)的緩沖。3 SQLite系統(tǒng)與Linux的外部接口的具體應(yīng)用集成在一起,由程序調(diào)用相應(yīng)的核心API函數(shù)去實(shí)現(xiàn)對(duì)數(shù)據(jù)的存取操作。Sqlite3_open()可以打開(kāi)數(shù)據(jù)庫(kù)文件,建立SQLite引擎;sqlite3_exec()對(duì)查詢(xún)結(jié)果進(jìn)行處理;sqlite3_close()用來(lái)關(guān)閉數(shù)據(jù)庫(kù)文件,釋放SQLite引擎。 4.3對(duì)SQLite存儲(chǔ)結(jié)構(gòu)及索引機(jī)制的改進(jìn) 由于SQLite所有數(shù)據(jù)都保存在設(shè)備的Flash中,為了減少FO操作,延長(zhǎng)Flash的壽命,對(duì)數(shù)據(jù)的操作都設(shè)計(jì)為在內(nèi)存中完成,只在設(shè)備啟動(dòng)和修改保存數(shù)據(jù)時(shí)才進(jìn)行FO操作。將SQLite改進(jìn)為基于內(nèi)存的嵌入式關(guān)系型數(shù)據(jù)庫(kù),提高數(shù)據(jù)操作效率,增強(qiáng)實(shí)時(shí)性能。 4.4優(yōu)化SQL數(shù)據(jù)在內(nèi)存中的存儲(chǔ)結(jié)構(gòu) 在內(nèi)存中采用區(qū)段式結(jié)構(gòu)進(jìn)行內(nèi)存數(shù)據(jù)的組織管理,將存儲(chǔ)空間邏輯地劃分為多個(gè)分區(qū)。每個(gè)分區(qū)存儲(chǔ)一個(gè)關(guān)系。區(qū)段式數(shù)據(jù)組織管理機(jī)制如圖3所示。 為保證數(shù)據(jù)結(jié)構(gòu)的緊湊性,內(nèi)存數(shù)據(jù)庫(kù)中的關(guān)系表按編號(hào)登記在分區(qū)表中。當(dāng)有新數(shù)據(jù)段插入時(shí),在分區(qū)表或段表中找到插入點(diǎn),插入點(diǎn)后的所有表項(xiàng)都往后移動(dòng)一項(xiàng);而刪除一個(gè)表項(xiàng)時(shí),則刪除點(diǎn)之后的所有表項(xiàng)都往前移動(dòng)一項(xiàng)。 為節(jié)省內(nèi)存占用,分區(qū)表和段表均采用動(dòng)態(tài)數(shù)組結(jié)構(gòu),具體操作是:創(chuàng)建時(shí)都先申請(qǐng)適當(dāng)大小的表項(xiàng)空間,數(shù)據(jù)的增加使得區(qū)段表不斷增長(zhǎng),當(dāng)表項(xiàng)空間不夠時(shí),再申請(qǐng)一定數(shù)量的空間。相反,數(shù)據(jù)的刪除操作使得區(qū)段表不斷縮短,當(dāng)其尾部出現(xiàn)大量的空表項(xiàng)時(shí),回收空表項(xiàng)占用的內(nèi)存。4 4.5優(yōu)化內(nèi)存數(shù)據(jù)庫(kù)的索引機(jī)制 為適應(yīng)智能家居中對(duì)實(shí)時(shí)數(shù)據(jù)頻繁的查找和更新需求,進(jìn)一步改進(jìn)高效的索引機(jī)制加速操作的執(zhí)行速度,需優(yōu)化內(nèi)存數(shù)據(jù)庫(kù)的索引機(jī)制。SQLite系統(tǒng)采用是基于改進(jìn)的Hybrid-HT的H-T索引機(jī)制,本文通過(guò)優(yōu)化H-T機(jī)制中的哈希函數(shù),通過(guò)對(duì)哈希表長(zhǎng)的控制,分散了鍵值對(duì)記錄指針和哈希地址的操作范圍,從而高效率利用內(nèi)存空間,提高查詢(xún)、修改的操作速度。5 5家庭網(wǎng)關(guān)數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì) 本文構(gòu)造的嵌入式家庭網(wǎng)關(guān),是以S3C440系列嵌入式微處理器為中心,uCLinux嵌入式操作系統(tǒng)作為家庭網(wǎng)關(guān)的底層,移植部分功能模塊作為家庭網(wǎng)關(guān)硬件平臺(tái)。信息家電通過(guò)IAIDL接口向家庭網(wǎng)關(guān)注冊(cè),每個(gè)家電的注冊(cè)信息、參數(shù)和狀態(tài)信息都存放在SQLite數(shù)據(jù)庫(kù)中,如圖4所示。 信息家電接口定義語(yǔ)言(IAIDL)是一種用來(lái)定義智能家居網(wǎng)絡(luò)中信息家電的說(shuō)明性語(yǔ)言,是對(duì)設(shè)備資源信息的描述。 以某公司生產(chǎn)的某信息空調(diào)為例,其IAIDL描述如下: 美的空調(diào)is enumtype=(slow,normal,quick); enumswitch=(on,off); attribute廠家=美的電器公司; attribute功率=1.5P; state溫度狀態(tài)Tempint(29:,); state風(fēng)速狀態(tài)fantype(normal,normal); function設(shè)置溫度voidSTTemp(inintst(20,40): function設(shè)置風(fēng)速voidSTFan(intypeff); function開(kāi)關(guān)voidOnOff(inswitch00); SQLite中家電信息表的生成 編譯器對(duì)設(shè)備IAIDL完成分析掃描后,通過(guò)API函數(shù)接口生成數(shù)據(jù)庫(kù)文件。信息家電啟動(dòng)時(shí),系統(tǒng)會(huì)在內(nèi)存區(qū)域生成設(shè)備狀態(tài)表的副本作為設(shè)備運(yùn)行狀態(tài)表。這些文件不會(huì)隨著時(shí)間的變化而發(fā)生改變,真正實(shí)時(shí)變化是處于運(yùn)行狀態(tài)的設(shè)備狀態(tài)信息。 實(shí)時(shí)監(jiān)控系統(tǒng)按一定的掃描頻率對(duì)內(nèi)存中的設(shè)備運(yùn)行狀態(tài)表進(jìn)行掃描,數(shù)據(jù)采集模塊按照設(shè)定的頻率對(duì)外部信號(hào)進(jìn)行采集,經(jīng)數(shù)據(jù)處理模塊將數(shù)據(jù)存入內(nèi)存中的設(shè)備運(yùn)行狀態(tài)表,獲取最新的狀態(tài)數(shù)據(jù),完成對(duì)設(shè)備狀態(tài)的實(shí)時(shí)更新和控制。 信息家電中的黑色家電是供人們娛樂(lè)休閑用的,如電視機(jī)、VCD、音響等。黑色家電的狀態(tài)絕大多數(shù)情況下不會(huì)發(fā)生改變,所以設(shè)定所有的黑色家電都沒(méi)有實(shí)時(shí)狀態(tài)信息,在內(nèi)存中不生成設(shè)備運(yùn)行狀態(tài)表,需要查詢(xún)時(shí)可以從flash中讀取。 而白色家電的狀態(tài)會(huì)隨著時(shí)間的變化而不斷變化,數(shù)據(jù)的實(shí)時(shí)性要求很高,如空調(diào)、電冰箱等,是改善生活環(huán)境提高物質(zhì)生活水平的。白色家電啟動(dòng)后在內(nèi)存中生成設(shè)備運(yùn)行狀態(tài)表,可以隨時(shí)監(jiān)視到設(shè)備狀態(tài)。 在系統(tǒng)中構(gòu)建主動(dòng)規(guī)則庫(kù)對(duì)設(shè)備的實(shí)時(shí)狀態(tài)進(jìn)行監(jiān)控,當(dāng)設(shè)備狀態(tài)變化時(shí)對(duì)家電進(jìn)行自動(dòng)控制,或設(shè)備狀態(tài)異常進(jìn)行報(bào)警,由ECA規(guī)則來(lái)實(shí)現(xiàn)。一旦信息家電出現(xiàn)異常情況,就要進(jìn)行報(bào)警操作。信息家電在滿足這些設(shè)定的事件時(shí),系統(tǒng)能自動(dòng)執(zhí)行規(guī)定好的動(dòng)作。7 在設(shè)備運(yùn)行過(guò)程中,數(shù)據(jù)隨著各種設(shè)備的運(yùn)行不斷產(chǎn)生,系統(tǒng)將新的狀態(tài)數(shù)據(jù)寫(xiě)入內(nèi)存,實(shí)時(shí)數(shù)據(jù)會(huì)轉(zhuǎn)儲(chǔ)為歷史數(shù)據(jù)。為保證系統(tǒng)的穩(wěn)定性,系統(tǒng)中的實(shí)時(shí)數(shù)據(jù)備份模塊負(fù)責(zé)周期性將內(nèi)存中設(shè)備狀態(tài)表數(shù)據(jù)保存到Flash中。當(dāng)設(shè)備運(yùn)行故障時(shí),可以從歷史數(shù)據(jù)庫(kù)中進(jìn)行恢復(fù)。 6家庭網(wǎng)關(guān)WEB服務(wù)器的設(shè)計(jì) 家庭網(wǎng)關(guān)中各種動(dòng)態(tài)信息需要服務(wù)器實(shí)時(shí)創(chuàng)建,服務(wù)器程序與客戶端瀏覽器有較強(qiáng)的交互能力。本文采用BOA+CGI應(yīng)用程序構(gòu)建WEB服務(wù)器。CGI是外部擴(kuò)展應(yīng)用程序與Web服務(wù)器交互的一個(gè)標(biāo)準(zhǔn)接口。Web服務(wù)器通過(guò)調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互,處理客戶端瀏覽器輸入的數(shù)據(jù),從而完成客戶端與服務(wù)器的交互,實(shí)現(xiàn)動(dòng)態(tài)Web技術(shù)。8 WEB服務(wù)器從SQL查詢(xún)結(jié)果中讀取信息,同時(shí)把這些信息返回給客戶端。CGI應(yīng)用程序可以使用printf()函數(shù)將查詢(xún)結(jié)果以HTML的形式輸出到客戶端,向客戶端返回動(dòng)態(tài)頁(yè)面,實(shí)現(xiàn)用戶WEB服務(wù)器與數(shù)據(jù)庫(kù)SQLite的交互。 總之,整個(gè)家庭網(wǎng)關(guān)程序設(shè)計(jì)都以嵌入式數(shù)據(jù)庫(kù)實(shí)時(shí)SQLite為核心,可有效滿足家庭網(wǎng)關(guān)對(duì)信息家電實(shí)時(shí)數(shù)據(jù)管理要求。 7結(jié)論 本文針對(duì)嵌入式設(shè)備的實(shí)時(shí)性特點(diǎn),結(jié)合家庭網(wǎng)關(guān)的實(shí)際應(yīng)用需求,對(duì)SQLite數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)、內(nèi)部函數(shù)、外部接口、索引算法等方面進(jìn)行了改進(jìn)與優(yōu)化。提高了系統(tǒng)整體實(shí)時(shí)性能;完善了數(shù)據(jù)庫(kù)的安全性;降低了系統(tǒng)資源占用,良好的匹配了現(xiàn)有ARM架構(gòu)的家庭網(wǎng)關(guān)硬件體系,完全能滿足家庭網(wǎng)關(guān)對(duì)信息家電實(shí)時(shí)數(shù)據(jù)管理的要求。 由于自身水平、設(shè)備條件有限,本文還有很多需進(jìn)一步改進(jìn)的地方,如事務(wù)處理的調(diào)度和執(zhí)行策略方面;身份驗(yàn)證、數(shù)據(jù)加密等安全性研究方面,對(duì)報(bào)警庫(kù),CA庫(kù),ECA庫(kù)的詳細(xì)設(shè)計(jì)方面還有待于進(jìn)一步的充實(shí)和完善。 參考文獻(xiàn): 1宋安,習(xí)勇,魏急波.基于CLinux的NAT設(shè)備的設(shè)計(jì)與開(kāi)發(fā)J.電子工程師,xx-05-15. 2徐葉,袁敏,李國(guó)軍.嵌入式Web服務(wù)器遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)J.計(jì)算機(jī)與現(xiàn)代化,xx-02-27. 3王俊,郭書(shū)軍.嵌入式Web服務(wù)器的實(shí)現(xiàn)及其CGI應(yīng)用J.電子設(shè)計(jì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論