基于嵌入式內(nèi)存數(shù)據(jù)庫引擎的研究與設(shè)計(jì)
發(fā)布時(shí)間:2009/2/18 0:00:00 訪問次數(shù):1307
摘要: 磁盤數(shù)據(jù)的存取和傳輸?shù)絻?nèi)存的速度一直是計(jì)算機(jī)系統(tǒng)的性能瓶頸。雖然現(xiàn)在磁盤轉(zhuǎn)速和總線速度已經(jīng)有了很大提高,但磁盤容量的大幅度增大又減緩了對(duì)其上數(shù)據(jù)的存取速度。本文介紹了嵌入式內(nèi)存數(shù)據(jù)庫技術(shù)發(fā)展的現(xiàn)狀、定義、特點(diǎn)及面向3g平臺(tái)嵌入式內(nèi)存數(shù)據(jù)庫引擎的具體設(shè)計(jì)方法實(shí)現(xiàn)。
1 嵌入式內(nèi)存數(shù)據(jù)庫技術(shù)發(fā)展的現(xiàn)狀
數(shù)據(jù)庫理論與技術(shù)的發(fā)展極其迅速,其應(yīng)用日益廣泛,在當(dāng)今的信息社會(huì)中,它幾乎無所不在。以關(guān)系型為代表的三大經(jīng)典(層次、網(wǎng)狀、關(guān)系)型數(shù)據(jù)庫在傳統(tǒng)的(商務(wù)和管理的事務(wù)型)應(yīng)用領(lǐng)域獲得了極大成功,然而它們?cè)诂F(xiàn)代的(非傳統(tǒng))工程和時(shí)間關(guān)鍵型應(yīng)用面前卻顯得軟弱無力,面臨著新的嚴(yán)峻的挑戰(zhàn),由此而導(dǎo)致了嵌入式實(shí)時(shí)數(shù)據(jù)庫的產(chǎn)生和發(fā)展。在實(shí)時(shí)應(yīng)用中,事務(wù)在運(yùn)行前的操作邏輯(操作類型、順序等)、數(shù)據(jù)集及其結(jié)構(gòu)、行為以及時(shí)間的相關(guān)性等都是可預(yù)分析的。然而,對(duì)磁盤數(shù)據(jù)庫而言,數(shù)據(jù)的i/o 是造成事務(wù)執(zhí)行時(shí)間不確定、預(yù)報(bào)不準(zhǔn)確的關(guān)鍵因素。為此,要求以大內(nèi)存作為實(shí)時(shí)數(shù)據(jù)庫的主要存儲(chǔ)介質(zhì),使一個(gè)事務(wù)在活動(dòng)期間沒有i/o, 以達(dá)到較準(zhǔn)確的預(yù)報(bào),從而滿足實(shí)時(shí)事務(wù)的定時(shí)限制。但這要解決兩個(gè)問題,就是適當(dāng)?shù)臄?shù)據(jù)安置和適時(shí)的內(nèi)外存交換。隨著內(nèi)存技術(shù)的高速發(fā)展,內(nèi)存數(shù)據(jù)庫技術(shù)日益成熟,在非實(shí)時(shí)系統(tǒng)中也得到了廣泛的應(yīng)用。
內(nèi)存數(shù)據(jù)庫(mmdb)把數(shù)據(jù)庫的主拷貝(即“工作版本”)常駐在內(nèi)存,使系統(tǒng)性能得到了極大的提高。但是,由于所有操作直接作用于內(nèi)存中的數(shù)據(jù)庫主拷貝上,數(shù)據(jù)庫極易受到操作系統(tǒng)和應(yīng)用軟件錯(cuò)誤造成的破壞,而且,數(shù)據(jù)庫恢復(fù)所包含的i/o 操作(如做日志、備份等)在事務(wù)運(yùn)行不需要i/o 操作的內(nèi)存數(shù)據(jù)庫系統(tǒng)中也顯得極為突出。因此,內(nèi)存數(shù)據(jù)庫的恢復(fù)機(jī)制對(duì)系統(tǒng)性能有重要的影響作用,內(nèi)存數(shù)據(jù)庫的恢復(fù)較之傳統(tǒng)的磁盤數(shù)據(jù)庫的恢復(fù)要復(fù)雜得多,也關(guān)鍵得多。數(shù)據(jù)恢復(fù)是內(nèi)存數(shù)據(jù)庫可靠、實(shí)用的關(guān)鍵,恢復(fù)技術(shù)的研究已成為mmdb 研究領(lǐng)域最熱門的課題。
2 內(nèi)存數(shù)據(jù)庫的定義
內(nèi)存數(shù)據(jù)庫的定義不應(yīng)涉及內(nèi)存的大小、存取數(shù)據(jù)所需i/o 的多少、數(shù)據(jù)何時(shí)進(jìn)入及怎樣才能留駐內(nèi)存等這些具體的實(shí)現(xiàn)技術(shù),而只包含數(shù)據(jù)庫常駐內(nèi)存(而不是磁盤)、事務(wù)(不是系統(tǒng))的數(shù)據(jù)存取只涉及內(nèi)存的意思。其本質(zhì)特征是其“主拷貝”或“工作版本”常駐內(nèi)存,即活動(dòng)事務(wù)只與實(shí)時(shí)內(nèi)存數(shù)據(jù)庫的內(nèi)存拷貝打交道。顯然,它要求較大的內(nèi)存量,但并不要求任何時(shí)刻整個(gè)數(shù)據(jù)庫都能存放在內(nèi)存,即內(nèi)存數(shù)據(jù)庫系統(tǒng)還是要處理i/o。傳統(tǒng)的磁盤數(shù)據(jù)庫即使緩沖區(qū)足夠大,以致可以容納所有數(shù)據(jù)也不能算是一個(gè)mmdb。因?yàn)樗轻槍?duì)磁盤特性、在數(shù)據(jù)庫常駐磁盤的假定下設(shè)計(jì)的。例如,索引結(jié)構(gòu)還是針對(duì)磁盤存取的,數(shù)據(jù)的存取仍必須經(jīng)過緩沖區(qū)管理等。內(nèi)存數(shù)據(jù)庫的組織與管理要求新的適于內(nèi)存特點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和算法,對(duì)于數(shù)據(jù)的組織與安置、數(shù)據(jù)庫存取、內(nèi)外存數(shù)據(jù)交換、查詢處理及優(yōu)化、并發(fā)控制及數(shù)據(jù)庫恢復(fù)都需要研究新的策略與機(jī)制。
內(nèi)存數(shù)據(jù)庫是一個(gè)較新的研究領(lǐng)域,結(jié)合各方面參考,現(xiàn)給出如下定義:
定義:設(shè)有數(shù)據(jù)庫db,dbm(t)是t 時(shí)刻db 在內(nèi)存中的數(shù)據(jù)集,dbm(t)真包含于db; t s 為所有事務(wù)的集合,a t(t)是t 時(shí)刻的活動(dòng)事務(wù)集,a t(t)真包含于t s;d t(t)為t 在t 時(shí)刻的操作數(shù)據(jù)集,d t(t)真包含于db;若在任一時(shí)刻t,均有:
對(duì)任一事務(wù)有t∈a t(t),d t(t)真包含于dbm(t)成立,則稱db 為一個(gè)內(nèi)存數(shù)據(jù)庫,簡(jiǎn)記為mmdb 。
按此定義,mmdb 的“工作版本”(當(dāng)然也可以是整個(gè)數(shù)據(jù)庫)常駐內(nèi)存,任何一個(gè)事務(wù)在執(zhí)行過程中沒有內(nèi)外存間的數(shù)據(jù)i/o。顯然,它需要一定的內(nèi)存容量,但并不要求整個(gè)數(shù)據(jù)庫都必須常駐在內(nèi)存。
3 內(nèi)存數(shù)據(jù)庫的特點(diǎn)
3.1 內(nèi)存數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)的組織和管理一個(gè)mmdb的邏輯整體主要由兩個(gè)部分構(gòu)成,即內(nèi)存版本與外存版本。 主存儲(chǔ)器是易失內(nèi)存,它存放mmdb的“工作版本”。它在邏輯上被劃分為若干分區(qū),一
個(gè)分區(qū)用來存放一個(gè)關(guān)系的數(shù)據(jù)。每個(gè)分區(qū)又物理地由若干相互鏈接的塊組成。一塊是一個(gè)固定長(zhǎng)度的連續(xù)區(qū)域,它是內(nèi)外存i/o的單位,也是內(nèi)存分配、回收以及對(duì)mmdb進(jìn)行恢復(fù)的單位。索引與數(shù)據(jù)記錄分離存放。
nv-ram(no vola tile ram)兼有內(nèi)存讀寫速度快和在后備電池維護(hù)的情況下非易失的特點(diǎn),但價(jià)格昂貴,不便插拔,廣泛用于嵌入式系統(tǒng),并可與flash-ram配合使用,充當(dāng)flash-ram 寫緩沖區(qū)。nv-ram是主存儲(chǔ)器的拓延,目前可用ups、固態(tài)磁盤或磁盤cache等實(shí)現(xiàn)。主存數(shù)據(jù)與nv-ram數(shù)據(jù)一起統(tǒng)稱為mmdb的“內(nèi)存版本”。
磁盤存儲(chǔ)器用來存放未在內(nèi)存的那一部分?jǐn)?shù)據(jù)庫數(shù)據(jù),同時(shí)也用作數(shù)據(jù)庫恢復(fù)的備份,我們稱之為“外存版本”。為便于實(shí)現(xiàn)內(nèi)外存間的數(shù)據(jù)交換,可將磁盤數(shù)據(jù)在邏輯上劃分為與內(nèi)存塊同樣長(zhǎng)度的定長(zhǎng)塊,建立相同類型的索引。
3.2 事務(wù)處理
當(dāng)內(nèi)存數(shù)
摘要: 磁盤數(shù)據(jù)的存取和傳輸?shù)絻?nèi)存的速度一直是計(jì)算機(jī)系統(tǒng)的性能瓶頸。雖然現(xiàn)在磁盤轉(zhuǎn)速和總線速度已經(jīng)有了很大提高,但磁盤容量的大幅度增大又減緩了對(duì)其上數(shù)據(jù)的存取速度。本文介紹了嵌入式內(nèi)存數(shù)據(jù)庫技術(shù)發(fā)展的現(xiàn)狀、定義、特點(diǎn)及面向3g平臺(tái)嵌入式內(nèi)存數(shù)據(jù)庫引擎的具體設(shè)計(jì)方法實(shí)現(xiàn)。
1 嵌入式內(nèi)存數(shù)據(jù)庫技術(shù)發(fā)展的現(xiàn)狀
數(shù)據(jù)庫理論與技術(shù)的發(fā)展極其迅速,其應(yīng)用日益廣泛,在當(dāng)今的信息社會(huì)中,它幾乎無所不在。以關(guān)系型為代表的三大經(jīng)典(層次、網(wǎng)狀、關(guān)系)型數(shù)據(jù)庫在傳統(tǒng)的(商務(wù)和管理的事務(wù)型)應(yīng)用領(lǐng)域獲得了極大成功,然而它們?cè)诂F(xiàn)代的(非傳統(tǒng))工程和時(shí)間關(guān)鍵型應(yīng)用面前卻顯得軟弱無力,面臨著新的嚴(yán)峻的挑戰(zhàn),由此而導(dǎo)致了嵌入式實(shí)時(shí)數(shù)據(jù)庫的產(chǎn)生和發(fā)展。在實(shí)時(shí)應(yīng)用中,事務(wù)在運(yùn)行前的操作邏輯(操作類型、順序等)、數(shù)據(jù)集及其結(jié)構(gòu)、行為以及時(shí)間的相關(guān)性等都是可預(yù)分析的。然而,對(duì)磁盤數(shù)據(jù)庫而言,數(shù)據(jù)的i/o 是造成事務(wù)執(zhí)行時(shí)間不確定、預(yù)報(bào)不準(zhǔn)確的關(guān)鍵因素。為此,要求以大內(nèi)存作為實(shí)時(shí)數(shù)據(jù)庫的主要存儲(chǔ)介質(zhì),使一個(gè)事務(wù)在活動(dòng)期間沒有i/o, 以達(dá)到較準(zhǔn)確的預(yù)報(bào),從而滿足實(shí)時(shí)事務(wù)的定時(shí)限制。但這要解決兩個(gè)問題,就是適當(dāng)?shù)臄?shù)據(jù)安置和適時(shí)的內(nèi)外存交換。隨著內(nèi)存技術(shù)的高速發(fā)展,內(nèi)存數(shù)據(jù)庫技術(shù)日益成熟,在非實(shí)時(shí)系統(tǒng)中也得到了廣泛的應(yīng)用。
內(nèi)存數(shù)據(jù)庫(mmdb)把數(shù)據(jù)庫的主拷貝(即“工作版本”)常駐在內(nèi)存,使系統(tǒng)性能得到了極大的提高。但是,由于所有操作直接作用于內(nèi)存中的數(shù)據(jù)庫主拷貝上,數(shù)據(jù)庫極易受到操作系統(tǒng)和應(yīng)用軟件錯(cuò)誤造成的破壞,而且,數(shù)據(jù)庫恢復(fù)所包含的i/o 操作(如做日志、備份等)在事務(wù)運(yùn)行不需要i/o 操作的內(nèi)存數(shù)據(jù)庫系統(tǒng)中也顯得極為突出。因此,內(nèi)存數(shù)據(jù)庫的恢復(fù)機(jī)制對(duì)系統(tǒng)性能有重要的影響作用,內(nèi)存數(shù)據(jù)庫的恢復(fù)較之傳統(tǒng)的磁盤數(shù)據(jù)庫的恢復(fù)要復(fù)雜得多,也關(guān)鍵得多。數(shù)據(jù)恢復(fù)是內(nèi)存數(shù)據(jù)庫可靠、實(shí)用的關(guān)鍵,恢復(fù)技術(shù)的研究已成為mmdb 研究領(lǐng)域最熱門的課題。
2 內(nèi)存數(shù)據(jù)庫的定義
內(nèi)存數(shù)據(jù)庫的定義不應(yīng)涉及內(nèi)存的大小、存取數(shù)據(jù)所需i/o 的多少、數(shù)據(jù)何時(shí)進(jìn)入及怎樣才能留駐內(nèi)存等這些具體的實(shí)現(xiàn)技術(shù),而只包含數(shù)據(jù)庫常駐內(nèi)存(而不是磁盤)、事務(wù)(不是系統(tǒng))的數(shù)據(jù)存取只涉及內(nèi)存的意思。其本質(zhì)特征是其“主拷貝”或“工作版本”常駐內(nèi)存,即活動(dòng)事務(wù)只與實(shí)時(shí)內(nèi)存數(shù)據(jù)庫的內(nèi)存拷貝打交道。顯然,它要求較大的內(nèi)存量,但并不要求任何時(shí)刻整個(gè)數(shù)據(jù)庫都能存放在內(nèi)存,即內(nèi)存數(shù)據(jù)庫系統(tǒng)還是要處理i/o。傳統(tǒng)的磁盤數(shù)據(jù)庫即使緩沖區(qū)足夠大,以致可以容納所有數(shù)據(jù)也不能算是一個(gè)mmdb。因?yàn)樗轻槍?duì)磁盤特性、在數(shù)據(jù)庫常駐磁盤的假定下設(shè)計(jì)的。例如,索引結(jié)構(gòu)還是針對(duì)磁盤存取的,數(shù)據(jù)的存取仍必須經(jīng)過緩沖區(qū)管理等。內(nèi)存數(shù)據(jù)庫的組織與管理要求新的適于內(nèi)存特點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和算法,對(duì)于數(shù)據(jù)的組織與安置、數(shù)據(jù)庫存取、內(nèi)外存數(shù)據(jù)交換、查詢處理及優(yōu)化、并發(fā)控制及數(shù)據(jù)庫恢復(fù)都需要研究新的策略與機(jī)制。
內(nèi)存數(shù)據(jù)庫是一個(gè)較新的研究領(lǐng)域,結(jié)合各方面參考,現(xiàn)給出如下定義:
定義:設(shè)有數(shù)據(jù)庫db,dbm(t)是t 時(shí)刻db 在內(nèi)存中的數(shù)據(jù)集,dbm(t)真包含于db; t s 為所有事務(wù)的集合,a t(t)是t 時(shí)刻的活動(dòng)事務(wù)集,a t(t)真包含于t s;d t(t)為t 在t 時(shí)刻的操作數(shù)據(jù)集,d t(t)真包含于db;若在任一時(shí)刻t,均有:
對(duì)任一事務(wù)有t∈a t(t),d t(t)真包含于dbm(t)成立,則稱db 為一個(gè)內(nèi)存數(shù)據(jù)庫,簡(jiǎn)記為mmdb 。
按此定義,mmdb 的“工作版本”(當(dāng)然也可以是整個(gè)數(shù)據(jù)庫)常駐內(nèi)存,任何一個(gè)事務(wù)在執(zhí)行過程中沒有內(nèi)外存間的數(shù)據(jù)i/o。顯然,它需要一定的內(nèi)存容量,但并不要求整個(gè)數(shù)據(jù)庫都必須常駐在內(nèi)存。
3 內(nèi)存數(shù)據(jù)庫的特點(diǎn)
3.1 內(nèi)存數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)的組織和管理一個(gè)mmdb的邏輯整體主要由兩個(gè)部分構(gòu)成,即內(nèi)存版本與外存版本。 主存儲(chǔ)器是易失內(nèi)存,它存放mmdb的“工作版本”。它在邏輯上被劃分為若干分區(qū),一
個(gè)分區(qū)用來存放一個(gè)關(guān)系的數(shù)據(jù)。每個(gè)分區(qū)又物理地由若干相互鏈接的塊組成。一塊是一個(gè)固定長(zhǎng)度的連續(xù)區(qū)域,它是內(nèi)外存i/o的單位,也是內(nèi)存分配、回收以及對(duì)mmdb進(jìn)行恢復(fù)的單位。索引與數(shù)據(jù)記錄分離存放。
nv-ram(no vola tile ram)兼有內(nèi)存讀寫速度快和在后備電池維護(hù)的情況下非易失的特點(diǎn),但價(jià)格昂貴,不便插拔,廣泛用于嵌入式系統(tǒng),并可與flash-ram配合使用,充當(dāng)flash-ram 寫緩沖區(qū)。nv-ram是主存儲(chǔ)器的拓延,目前可用ups、固態(tài)磁盤或磁盤cache等實(shí)現(xiàn)。主存數(shù)據(jù)與nv-ram數(shù)據(jù)一起統(tǒng)稱為mmdb的“內(nèi)存版本”。
磁盤存儲(chǔ)器用來存放未在內(nèi)存的那一部分?jǐn)?shù)據(jù)庫數(shù)據(jù),同時(shí)也用作數(shù)據(jù)庫恢復(fù)的備份,我們稱之為“外存版本”。為便于實(shí)現(xiàn)內(nèi)外存間的數(shù)據(jù)交換,可將磁盤數(shù)據(jù)在邏輯上劃分為與內(nèi)存塊同樣長(zhǎng)度的定長(zhǎng)塊,建立相同類型的索引。
3.2 事務(wù)處理
當(dāng)內(nèi)存數(shù)
熱門點(diǎn)擊
- Linux設(shè)備驅(qū)動(dòng)程序的函數(shù)跳轉(zhuǎn)表
- PIE中斷向量的映射方式
- Linux系統(tǒng)調(diào)用例程system_call
- PIE模塊級(jí)中斷
- 什么是Linux內(nèi)核模塊
- Linux系統(tǒng)調(diào)用接口、系統(tǒng)調(diào)用例程和內(nèi)核服
- ARM復(fù)位原理
- Linux系統(tǒng)調(diào)用接口、系統(tǒng)調(diào)用例程和內(nèi)核服
- Linux字符設(shè)備驅(qū)動(dòng)程序的注冊(cè)
- Linux外部設(shè)備的基本概念
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說新車間的特點(diǎn)是“靈動(dòng)”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- AMOLED顯示驅(qū)動(dòng)芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計(jì)
- GB300 超級(jí)芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個(gè)最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究