嵌入式系統內存數據庫引擎的研究與設計

發(fā)布時(shí)間:2010-8-9 15:36    發(fā)布者:lavida
關(guān)鍵詞: 內存 , 嵌入式系統 , 數據庫 , 引擎
1 嵌入式內存數據庫技術(shù)發(fā)展的現狀  

數據庫理論與技術(shù)的發(fā)展極其迅速,其應用日益廣泛,在當今的信息社會(huì )中,它幾乎無(wú)所不在。以關(guān)系型為代表的三大經(jīng)典(層次、網(wǎng)狀、關(guān)系)型數據庫在傳統的(商務(wù)和管理的事務(wù)型)應用領(lǐng)域獲得了極大成功,然而它們在現代的(非傳統)工程和時(shí)間關(guān)鍵型應用面前卻顯得軟弱無(wú)力,面臨著(zhù)新的嚴峻的挑戰,由此而導致了嵌入式實(shí)時(shí)數據庫的產(chǎn)生和發(fā)展。在實(shí)時(shí)應用中,事務(wù)在運行前的操作邏輯(操作類(lèi)型、順序等)、數據集及其結構、行為以及時(shí)間的相關(guān)性等都是可預分析的。然而,對磁盤(pán)數據庫而言,數據的I/O 是造成事務(wù)執行時(shí)間不確定、預報不準確的關(guān)鍵因素。為此,要求以大內存作為實(shí)時(shí)數據庫的主要存儲介質(zhì),使一個(gè)事務(wù)在活動(dòng)期間沒(méi)有I/O, 以達到較準確的預報,從而滿(mǎn)足實(shí)時(shí)事務(wù)的定時(shí)限制。但這要解決兩個(gè)問(wèn)題,就是適當的數據安置和適時(shí)的內外存交換。隨著(zhù)內存技術(shù)的高速發(fā)展,內存數據庫技術(shù)日益成熟,在非實(shí)時(shí)系統中也得到了廣泛的應用。  

內存數據庫(MMDB)把數據庫的主拷貝(即“工作版本”)常駐在內存,使系統性能得到了極大的提高。但是,由于所有操作直接作用于內存中的數據庫主拷貝上,數據庫極易受到操作系統和應用軟件錯誤造成的破壞,而且,數據庫恢復所包含的I/O 操作(如做日志、備份等)在事務(wù)運行不需要I/O 操作的內存數據庫系統中也顯得極為突出。因此,內存數據庫的恢復機制對系統性能有重要的影響作用,內存數據庫的恢復較之傳統的磁盤(pán)數據庫的恢復要復雜得多,也關(guān)鍵得多。數據恢復是內存數據庫可靠、實(shí)用的關(guān)鍵,恢復技術(shù)的研究已成為MMDB 研究領(lǐng)域最熱門(mén)的課題。  

2 內存數據庫的定義  

內存數據庫的定義不應涉及內存的大小、存取數據所需I/O 的多少、數據何時(shí)進(jìn)入及怎樣才能留駐內存等這些具體的實(shí)現技術(shù),而只包含數據庫常駐內存(而不是磁盤(pán))、事務(wù)(不是系統)的數據存取只涉及內存的意思。其本質(zhì)特征是其“主拷貝”或“工作版本”常駐內存,即活動(dòng)事務(wù)只與實(shí)時(shí)內存數據庫的內存拷貝打交道。顯然,它要求較大的內存量,但并不要求任何時(shí)刻整個(gè)數據庫都能存放在內存,即內存數據庫系統還是要處理I/O。傳統的磁盤(pán)數據庫即使緩沖區足夠大,以致可以容納所有數據也不能算是一個(gè)MMDB。因為它是針對磁盤(pán)特性、在數據庫常駐磁盤(pán)的假定下設計的。例如,索引結構還是針對磁盤(pán)存取的,數據的存取仍必須經(jīng)過(guò)緩沖區管理等。內存數據庫的組織與管理要求新的適于內存特點(diǎn)的數據結構和算法,對于數據的組織與安置、數據庫存取、內外存數據交換、查詢(xún)處理及優(yōu)化、并發(fā)控制及數據庫恢復都需要研究新的策略與機制。  

內存數據庫是一個(gè)較新的研究領(lǐng)域,結合各方面參考,現給出如下定義:  

定義:設有數據庫DB,DBM(t)是t 時(shí)刻DB 在內存中的數據集,DBM(t)真包含于DB; T S 為所有事務(wù)的集合,A T(t)是t 時(shí)刻的活動(dòng)事務(wù)集,A T(t)真包含于T S;D t(T)為T(mén) 在t 時(shí)刻的操作數據集,D t(T)真包含于DB;若在任一時(shí)刻t,均有:  
對任一事務(wù)有T∈A T(t),D t(T)真包含于DBM(t)成立,則稱(chēng)DB 為一個(gè)內存數據庫,簡(jiǎn)記為MMDB 。  
按此定義,MMDB 的“工作版本”(當然也可以是整個(gè)數據庫)常駐內存,任何一個(gè)事務(wù)在執行過(guò)程中沒(méi)有內外存間的數據I/O。顯然,它需要一定的內存容量,但并不要求整個(gè)數據庫都必須常駐在內存。  

3 內存數據庫的特點(diǎn)  

3.1 內存數據庫  

數據存儲的組織和管理一個(gè)MMDB的邏輯整體主要由兩個(gè)部分構成,即內存版本與外存版本。 主存儲器是易失內存,它存放MMDB的“工作版本”。它在邏輯上被劃分為若干分區,一個(gè)分區用來(lái)存放一個(gè)關(guān)系的數據。每個(gè)分區又物理地由若干相互鏈接的塊組成。一塊是一個(gè)固定長(cháng)度的連續區域,它是內外存I/O的單位,也是內存分配、回收以及對MMDB進(jìn)行恢復的單位。索引與數據記錄分離存放。  

NV-RAM(NO Vola tile RAM)兼有內存讀寫(xiě)速度快和在后備電池維護的情況下非易失的特點(diǎn),但價(jià)格昂貴,不便插拔,廣泛用于嵌入式系統,并可與FLASH-RAM配合使用,充當Flash-RAM 寫(xiě)緩沖區。NV-RAM是主存儲器的拓延,目前可用UPS、固態(tài)磁盤(pán)或磁盤(pán)Cache等實(shí)現。主存數據與NV-RAM數據一起統稱(chēng)為MMDB的“內存版本”。  

磁盤(pán)存儲器用來(lái)存放未在內存的那一部分數據庫數據,同時(shí)也用作數據庫恢復的備份,我們稱(chēng)之為“外存版本”。為便于實(shí)現內外存間的數據交換,可將磁盤(pán)數據在邏輯上劃分為與內存塊同樣長(cháng)度的定長(cháng)塊,建立相同類(lèi)型的索引。  

3.2 事務(wù)處理  

當內存數據庫用于非實(shí)時(shí)系統時(shí),除了日志和系統恢復的具體方式跟傳統數據庫差異比較大以外,事務(wù)處理過(guò)程與傳統數據庫的事務(wù)處理相似;然而,當內存數據庫用于實(shí)時(shí)系統時(shí),既實(shí)時(shí)內存數據庫中,事務(wù)處理由于受到了時(shí)間上的限制,傳統數據庫的事務(wù)處理已經(jīng)不再適用。傳統的“ACID” 的事務(wù)概念及模型對實(shí)時(shí)事務(wù)不適合。實(shí)時(shí)事務(wù)表現出了許多不同的特征,如實(shí)時(shí)性和相關(guān)性。雖然實(shí)時(shí)事務(wù)的正確性與傳統事務(wù)一樣,也包括數據庫狀態(tài)正確性和事務(wù)執行正確性?xún)蓚(gè)方面,但其含義與內容有很大的不同。在實(shí)時(shí)事務(wù)中,數據庫狀態(tài)正確性包含內部一致性和時(shí)間一致性,事務(wù)執行正確性則包含其結果正確性、行為正確性、結構正確性和時(shí)間正確性等。事務(wù)調度也要采取相關(guān)的實(shí)時(shí)調度算法。本文中討論的內存數據庫引擎針對非實(shí)時(shí)系統。  

3. 3 系統恢復  

數據庫的備份是數據庫的副本以及一些控制信息,在出現故障的情況下,可以隨時(shí)用它進(jìn)行恢復。數據庫備份最小化了數據丟失,能夠讓您使用恢復過(guò)程,從備份副本中重新構造失敗的數據庫。有多種類(lèi)型的失敗導致需要恢復數據庫。其中包括語(yǔ)句失敗、用戶(hù)錯誤、進(jìn)程失敗、數據庫實(shí)例失敗、媒介失敗等。但不是所有類(lèi)型的失敗都需要進(jìn)行人工交互。但是,在內存數據庫系統中,由于所有操作都直接作用于內存中的數據庫主拷貝上,數據庫極易受到操作系統和應用軟件錯誤造成的破壞,因此MMDB的恢復技術(shù)如備份、檢驗點(diǎn)(Checkpoint)和重啟動(dòng)(restart)等都較常規的磁盤(pán)數據庫(DRDB)復雜。人們從體系結構、事務(wù)提交、日志系統到備份、檢驗點(diǎn)算法等各個(gè)方面進(jìn)行了大量的研究和探索。日志管理是內存數據庫恢復機制中至關(guān)重要的一環(huán)。由于內存有易失性,日志最好保存于另一穩妥的介質(zhì)上(如磁盤(pán)、非易失內存等),而對日志的I/O操作又將在某種程度上影響MMDB的性能,可能成為瓶頸影響系統的事務(wù)吞吐量。為此,人們研究了各種各樣的解決辦法,比如構造非易失內存用于保存部分日志;采用“成組提交”的技術(shù),使用影子內存技術(shù)等來(lái)解決日志瓶頸問(wèn)題。在檢驗點(diǎn)方面,為了提高系統效率,通常力圖使檢驗點(diǎn)操作和事務(wù)處理同時(shí)進(jìn)行。為了提高速度指標和綜合性能,MMDB系統往往利用附加的硬件設備如非易失內存、專(zhuān)用的日志處理器、檢驗點(diǎn)處理器等來(lái)支持高效、快速的數據恢復。  

4 面向3G平臺嵌入式內存數據庫引擎的設計  

4.1 3G平臺中數據庫子系統整體架構  

4.1.1 數據庫系統各功能模塊在3G平臺系統中的位置  

3G軟件平臺包括圖1所示的除OS和BSP外的6大軟件子系統。  


圖1 3G 軟件平臺系統分布圖  

DataBase 子系統負責管理平臺的物理資源和平臺實(shí)現的信令、協(xié)議的配置信息,同時(shí)向其它子系統提供數據庫訪(fǎng)問(wèn)接口。它工作于操作系統之上。 承載子系統向業(yè)務(wù)子系統、信令子系統、OAM和網(wǎng)管子系統提供ATM、IP、等方面的承載服務(wù)。它工作于操作系統和DataBase 子系統之上。 信令子系統實(shí)現窄帶No.7 信令、寬帶No.7 信令、IP信令、網(wǎng)關(guān)控制信令,向業(yè)務(wù)處理子系統提供服務(wù)。它工作于操作系統、DataBase子系統和承載子系統之上。 系統控制子系統負責對整個(gè)系統的監控、啟動(dòng)、版本下載等。它工作于操作系統和DataBase 子系統之上。  

OAM 和網(wǎng)管子系統提供平臺與網(wǎng)管后臺的統一接口,負責對平臺的協(xié)議、信令進(jìn)行配置和管理,以及提供必要的統計數據。它工作于操作系統、承載子系統、DataBase子系統之上。  

業(yè)務(wù)處理子系統實(shí)現系統提供的各種業(yè)務(wù)。它工作于操作系統、承載子系統、信令子系統、DataBase子系統之上。  

數據庫子系統分布在3G 平臺各處理器上。從結構上看數據庫子系統屬于分布式數據庫系統;主要為平臺各個(gè)子系統提供數據支持,并為將來(lái)其上的擴展業(yè)務(wù)提供支持易擴充機制的數據庫模型。  

4.1.2 數據庫子系統內部模塊劃分  

數據庫子系統內部劃分五大功能模塊,支持數據來(lái)源為RAM、FLASH、硬盤(pán)特定格式以及商用數據庫等多種介質(zhì)。五大功能模塊分別是:輸入輸出模塊、對象管理模塊、業(yè)務(wù)處理模塊、維護管理模塊及平臺系統工具包。  

輸入輸出模塊(I/O模塊)負責完成整個(gè)平臺所有與硬件介質(zhì)相關(guān)的數據、裝載、轉儲、存儲空間管理等等相關(guān)功能。  

對象管理模塊是整個(gè)平臺的核心模塊(DBCORE),完成主體功能,即對內存數據、表、索引、鎖等等系列對象的核心組織功能,對整個(gè)系統的性能高低有決定性的影響。提供簡(jiǎn)易的內部并發(fā)控制手段。  

業(yè)務(wù)處理模塊是針對數據庫平臺的用戶(hù)提供的使用接口層,完成對內存數據庫的訪(fǎng)問(wèn)服務(wù)?梢灾С諥PI 方式及類(lèi)SQL 訪(fǎng)問(wèn)方式。支持分布式數據訪(fǎng)問(wèn)方式。 維護管理模塊完成對整個(gè)平臺系統的監控及管理,包括探針、告警、日志、實(shí)時(shí)業(yè)務(wù)跟蹤、遠程網(wǎng)絡(luò )訪(fǎng)問(wèn)等等系列功能的實(shí)施。 平臺系統工具包針對各模塊均有完善的工具支持,具體如下: 介質(zhì)層工具:各類(lèi)特定介質(zhì)的數據存儲文件檢索、修改、生成。 對象管理模塊工具:根據對象屬性區別性選擇生成主體程序框架,若無(wú)特殊要求,生成的代碼可直接用于對象管理。 I/O 模塊工具:根據內存數據庫分布模型,生成數據裝載、轉儲及內存數據存儲空間管理等框架代碼;業(yè)務(wù)處理子系統工具,常規API 代碼生成。 維護管理模塊工具:接口跟蹤、日志等輸出文件的檢索、管理工具。 其他:各類(lèi)對象(表、索引……)設計及相關(guān)說(shuō)明文檔生成。  

4. 2 系統對象設計原理和處理流程  

本子系統是按照面對對象的方法進(jìn)行設計的,因此在敘述系統處理流程時(shí)以子系統的各個(gè)對象為主線(xiàn),而同步流程和監控流程設計上有其自身特點(diǎn),對它們的敘述以過(guò)程為主線(xiàn)。  

本子系統的數據分為數據表、索引、隊列、同步實(shí)例、監控實(shí)例、單向資源隊列六大類(lèi)。其中數據表為數據庫組織的核心,然后為數據定位的方便建立索引,為資源管理的方便建立了隊列,出于數據同步的需要建立了同步實(shí)例,出于資源監控的需要,建立了監控實(shí)例,而單向資源隊列作為輔助數據表和同步實(shí)例的內存管理之用。  

以上除單向資源隊列外每一類(lèi)數據都定義為系統的數據對象類(lèi),系統對于同一對象類(lèi)的數據統一定義,統一管理。一個(gè)具體的數據對象稱(chēng)為某一數據對象類(lèi)的數據實(shí)例。系統為表、索引、隊列、同步、監控的所有數據實(shí)例統一分配唯一一個(gè)32 位整數加以標識,稱(chēng)為數據實(shí)例句柄。對數據實(shí)例的存取都是通過(guò)數據實(shí)例句柄進(jìn)行的。采用這種方式的一個(gè)優(yōu)點(diǎn)是數據管理的穩定性不隨著(zhù)數據實(shí)例的增加而變化,有利于系統的穩定。另一個(gè)優(yōu)點(diǎn)是便于數據對象類(lèi)的擴充,由于不同數據對象類(lèi)別分別管理,數據對象類(lèi)之間的獨立性確保在擴充數據對象類(lèi)后,不破壞原有數據的安全性。  

單向資源隊列作為在表對象和同步對象內部使用的對象。沒(méi)有統一分配句柄,相關(guān)的表通過(guò)保存單向資源隊列對象的指針實(shí)現操作。  

5 小結:  

本文作者創(chuàng )新點(diǎn)是本文首先介紹了嵌入式內存數據庫技術(shù)現狀,然后簡(jiǎn)單介紹了內存數據庫技術(shù)的特點(diǎn)等并提出了一個(gè)適用于3G平臺的嵌入式內存數據庫引擎,隨著(zhù)計算機技術(shù)的高速發(fā)展和人們對信息處理速度不斷增長(cháng)的需求,大容量的內存數據庫和經(jīng)過(guò)精簡(jiǎn)的嵌入式內存數據庫將會(huì )有越來(lái)越大的應用空間。目前,還沒(méi)有比較好的通用的嵌入式內存數據庫產(chǎn)品,進(jìn)行這方面的開(kāi)發(fā)和實(shí)現將會(huì )有很大的市場(chǎng)潛力和空間。
本文地址:http://selenalain.com/thread-20388-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页