資源描述:
《面向移動(dòng)信息終端設(shè)備的嵌入式數(shù)據(jù)庫(kù)設(shè)計(jì)和實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、面向移動(dòng)信息終端設(shè)備的嵌入式數(shù)據(jù)庫(kù)設(shè)計(jì)和實(shí)現(xiàn)
2、第1lunouseg(this)"> 數(shù)據(jù)庫(kù)應(yīng)用模式是應(yīng)用程序所看到的數(shù)據(jù)模式,各類應(yīng)用程序有各自的應(yīng)用模式。它在邏輯層次上組織和管理記錄,控制應(yīng)用程序?qū)?shù)據(jù)庫(kù)的訪問(wèn)。它的主要功能是基于數(shù)據(jù)庫(kù)的物理模式向上層(應(yīng)用程序)提供記錄的所有操作(修改、添加、刪除、排序、查找和字段提取)以及對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)控制?! ?yīng)用模式開放給上層的接口稱為應(yīng)用層訪問(wèn)接口,它是應(yīng)用程序和數(shù)據(jù)庫(kù)應(yīng)用模式連接的紐帶。SeuicDB提供統(tǒng)一的應(yīng)用層API接口,用戶只需了解所要完成的操作類型、數(shù)據(jù)庫(kù)和數(shù)據(jù),即可方便的使
3、用各種數(shù)據(jù)庫(kù)操作,增強(qiáng)了應(yīng)用程序的可移植性?! ?shù)據(jù)庫(kù)物理模式不直接面向用戶,一般用戶也無(wú)需了解內(nèi)模式的設(shè)計(jì)思想。物理模式的設(shè)計(jì)不用考慮用戶理解的方便,其主要設(shè)計(jì)目標(biāo)是提高數(shù)據(jù)庫(kù)性能和有效地利用存儲(chǔ)空間。物理模式基于文件系統(tǒng)將記錄的操作轉(zhuǎn)化為文件的操作,在物理層次(相對(duì)于應(yīng)用層次而言)組織和管理記錄。物理模式提供給上層的接口稱為物理層訪問(wèn)接口,應(yīng)用模式就是通過(guò)這個(gè)接口與它相聯(lián)的?! ∫陨夏P徒Y(jié)構(gòu)簡(jiǎn)練,用戶可根據(jù)不同的要求選擇不同的查詢模式和查詢字段。1.1 SeuicDB物理模式的實(shí)現(xiàn) 基于文件系統(tǒng)的物理模式設(shè)計(jì)的一個(gè)重要任務(wù)是如何
4、選擇合適的存儲(chǔ)結(jié)構(gòu),以便有效地利用資源,節(jié)省空間,減少I/O開銷。常用的索引存儲(chǔ)結(jié)構(gòu)有B+樹、hash表等。對(duì)嵌入式系統(tǒng)而言,它們都具有一個(gè)共同的關(guān)鍵缺點(diǎn),就是存儲(chǔ)的有效使用和利用率較低,以及查找速度下降。因此,存儲(chǔ)時(shí)要減少索引結(jié)構(gòu)的使用,避免不必要的開銷。SeuicDB采用了單、雙向鏈表結(jié)構(gòu),實(shí)現(xiàn)了數(shù)據(jù)高效的存儲(chǔ)和搜索效率。1) 文件中記錄存儲(chǔ)的結(jié)構(gòu) 與傳統(tǒng)的數(shù)據(jù)模型一樣,我們以記錄為基礎(chǔ),記錄的集合(同類型的記錄)構(gòu)成文件并按一定的結(jié)構(gòu)組織和存儲(chǔ)記錄。如圖2所示,將文件中有連續(xù)地址空間的數(shù)據(jù)緩沖區(qū)劃分為若干記錄塊(recordb
5、lock),并串聯(lián)成鏈表。每一條記錄都是由若干個(gè)記錄塊組成,各記錄塊之間不必相鄰,因此記錄的修改、插入和刪除可以由記錄塊的修改、插入和刪除來(lái)實(shí)現(xiàn)。而所有這些記錄塊的操作都可以用文件的基本操作(即讀寫操作)來(lái)完成。500)this.style.ouseg(this)"> 所有的記錄使用雙向非循環(huán)鏈表鏈接,應(yīng)用層從任何一個(gè)記錄開始都可以讀取所有的記錄。每條記錄由若干記錄塊組成,以單向非循環(huán)鏈表的形式連接,充分使用每一記錄塊。在所有的單向鏈表中,大部分都是有效記錄(即未被用戶刪除的記錄)的鏈,只有一條是空閑記錄塊鏈表,它所鏈接的記錄塊是由
6、記錄刪除而獲得的,所有被刪除的記錄都連接在這條鏈表上。一旦有記錄被刪除,空閑記錄鏈就產(chǎn)生了,它連接在雙向鏈表的尾部,像一個(gè)回收站,提供空閑記錄塊的再次使用。2) 記錄鏈表的實(shí)現(xiàn)記錄塊分為兩部分:鏈指針和塊數(shù)據(jù)?! ⊥ㄟ^(guò)鏈指針把記錄塊串聯(lián)成記錄的單向鏈表,它記錄了下一個(gè)記錄塊的在文件內(nèi)的位置。根據(jù)數(shù)據(jù)庫(kù)文件可能的大小,鏈指針定為4個(gè)字節(jié)(文件長(zhǎng)度可達(dá)4G字節(jié),而實(shí)際嵌入式系統(tǒng)中文件的尺寸偏小,因而鏈指針的預(yù)留空間足夠)?! ‘?dāng)記錄塊為單向鏈表頭時(shí),塊數(shù)據(jù)可分兩部分,即記錄的基本信息和記錄的真實(shí)數(shù)據(jù)(record);否則塊數(shù)據(jù)只描述記錄的
7、真實(shí)數(shù)據(jù)。塊數(shù)據(jù)的大小直接影響I/O的操作和空間資源的使用效率,塊較大可減少I/O開銷,但會(huì)產(chǎn)生過(guò)多沒有充分使用的記錄塊,浪費(fèi)空間;塊較小可充分利用空間,但會(huì)使每個(gè)記錄分散在過(guò)多地記錄塊中,增加I/O開銷,降低運(yùn)行速度。在時(shí)間和空間不能同時(shí)滿足的情況下,根據(jù)記錄的平均長(zhǎng)度,選擇合適的塊數(shù)據(jù)大小,得到最優(yōu)尺寸。移動(dòng)終端產(chǎn)品中,記錄的長(zhǎng)度偏短,并通過(guò)實(shí)際數(shù)據(jù)測(cè)試,選取記錄塊長(zhǎng)度為36byte。記錄塊的這種組織形式,其有效利用率高,在55~85%之間。1.2 嵌入式數(shù)據(jù)庫(kù)中應(yīng)用模式的實(shí)現(xiàn) 應(yīng)用模式所關(guān)心的是數(shù)據(jù)的存取路徑[4](例如順序搜
8、索、索引、散列等),即在訪問(wèn)記錄時(shí)采用何種方式可以快速高效的獲取記錄。1) 記錄的存儲(chǔ)格式 多數(shù)關(guān)系數(shù)據(jù)庫(kù),其記錄一般以定長(zhǎng)形式存儲(chǔ),這對(duì)資源豐富的系統(tǒng)來(lái)說(shuō),是最方便快捷的存儲(chǔ)格式。但是,對(duì)移動(dòng)信息終端設(shè)備而言,這種存儲(chǔ)格式浪費(fèi)空間。為了合理安排記錄中各字段的存儲(chǔ)格式,既要充分利用空間,又要及時(shí)響應(yīng)用戶的操作,我們使用可變長(zhǎng)度記錄,并且針對(duì)不同的應(yīng)用,建立不同的記錄存儲(chǔ)格式。根據(jù)字段查找速度和存儲(chǔ)效率可判斷存儲(chǔ)格式的好壞。變長(zhǎng)記錄的存儲(chǔ)格式有字段連續(xù)存儲(chǔ)格式、字段索引存儲(chǔ)格式等?! ≡跁r(shí)空折中的情況下,我們采用索引存儲(chǔ)方式,既可比較
9、合理的使用外存資源,又可及時(shí)響應(yīng)用戶的查詢。實(shí)現(xiàn)時(shí),在記錄的開頭為每個(gè)字段添加了2字節(jié)的字段索引,即字段在記錄內(nèi)的絕對(duì)字節(jié)偏移,缺省的字段其索引用特殊的字符標(biāo)識(shí),例如0x00。單值字段只包含字段值;而多值字段,為了方便多