新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式內(nèi)存數(shù)據(jù)庫引擎的研究與設計

嵌入式內(nèi)存數(shù)據(jù)庫引擎的研究與設計

——
作者: 時間:2010-01-13 來源:電子產(chǎn)品世界 收藏

  1 內(nèi)存技術發(fā)展的現(xiàn)狀

本文引用地址:http://m.butianyuan.cn/article/104904.htm

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

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

  2 內(nèi)存數(shù)據(jù)庫的定義

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

  內(nèi)存數(shù)據(jù)庫是一個較新的研究領域,結合各方面參考,現(xiàn)給出如下定義:

  定義:設有數(shù)據(jù)庫DB,DBM(t)是t 時刻DB 在內(nèi)存中的數(shù)據(jù)集,DBM(t)真包含于DB; T S 為所有事務的集合,A T(t)是t 時刻的活動事務集,A T(t)真包含于T S;D t(T)為T 在t 時刻的操作數(shù)據(jù)集,D t(T)真包含于DB;若在任一時刻t,均有:

  對任一事務有T∈A T(t),D t(T)真包含于DBM(t)成立,則稱DB 為一個內(nèi)存數(shù)據(jù)庫,簡記為MMDB 。

  按此定義,MMDB 的“工作版本”(當然也可以是整個數(shù)據(jù)庫)常駐內(nèi)存,任何一個事務在執(zhí)行過程中沒有內(nèi)外存間的數(shù)據(jù)I/O。顯然,它需要一定的內(nèi)存容量,但并不要求整個數(shù)據(jù)庫都必須常駐在內(nèi)存。

  3 內(nèi)存數(shù)據(jù)庫的特點

  3.1 內(nèi)存數(shù)據(jù)庫數(shù)據(jù)存儲的組織和管理一個MMDB的邏輯整體主要由兩個部分構成,即內(nèi)存版本與外存版本。 主存儲器是易失內(nèi)存,它存放MMDB的“工作版本”。它在邏輯上被劃分為若干分區(qū),一

  個分區(qū)用來存放一個關系的數(shù)據(jù)。每個分區(qū)又物理地由若干相互鏈接的塊組成。一塊是一個固定長度的連續(xù)區(qū)域,它是內(nèi)外存I/O的單位,也是內(nèi)存分配、回收以及對MMDB進行恢復的單位。索引與數(shù)據(jù)記錄分離存放。

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

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

  3.2 事務處理

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

  3. 3 系統(tǒng)恢復

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

  4 面向3G平臺嵌入式內(nèi)存數(shù)據(jù)庫引擎的設計

  4.1 3G平臺中數(shù)據(jù)庫子系統(tǒng)整體架構

  4.1.1 數(shù)據(jù)庫系統(tǒng)各功能模塊在3G平臺系統(tǒng)中的位置 3G軟件平臺包括圖1所示的除OS和BSP外的6大軟件子系統(tǒng)。

  

 

  圖1 3G 軟件平臺系統(tǒng)分布圖

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

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

  業(yè)務處理子系統(tǒng)實現(xiàn)系統(tǒng)提供的各種業(yè)務。它工作于操作系統(tǒng)、承載子系統(tǒng)、信令子系統(tǒng)、DataBase子系統(tǒng)之上。

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

  4.1.2 數(shù)據(jù)庫子系統(tǒng)內(nèi)部模塊劃分

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

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

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

  業(yè)務處理模塊是針對數(shù)據(jù)庫平臺的用戶提供的使用接口層,完成對內(nèi)存數(shù)據(jù)庫的訪問服務??梢灾С諥PI 方式及類SQL 訪問方式。支持分布式數(shù)據(jù)訪問方式。 維護管理模塊完成對整個平臺系統(tǒng)的監(jiān)控及管理,包括探針、告警、日志、實時業(yè)務跟

  蹤、遠程網(wǎng)絡訪問等等系列功能的實施。 平臺系統(tǒng)工具包針對各模塊均有完善的工具支持,具體如下: 介質層工具:各類特定介質的數(shù)據(jù)存儲文件檢索、修改、生成。 對象管理模塊工具:根據(jù)對象屬性區(qū)別性選擇生成主體程序框架,若無特殊要求,生成

  的代碼可直接用于對象管理。 I/O 模塊工具:根據(jù)內(nèi)存數(shù)據(jù)庫分布模型,生成數(shù)據(jù)裝載、轉儲及內(nèi)存數(shù)據(jù)存儲空間

  管理等框架代碼;業(yè)務處理子系統(tǒng)工具,常規(guī)API 代碼生成。 維護管理模塊工具:接口跟蹤、日志等輸出文件的檢索、管理工具。 其他:各類對象(表、索引……)設計及相關說明文檔生成。

  4. 2 系統(tǒng)對象設計原理和處理流程 本子系統(tǒng)是按照面對對象的方法進行設計的,因此在敘述系統(tǒng)處理流程時以子系統(tǒng)的各個對象為主線,而同步流程和監(jiān)控流程設計上有其自身特點,對它們的敘述以過程為主線。

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

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

  單向資源隊列作為在表對象和同步對象內(nèi)部使用的對象。沒有統(tǒng)一分配句柄,相關的表通過保存單向資源隊列對象的指針實現(xiàn)操作。

  5 小結:

  本文作者創(chuàng)新點是本文首先介紹了嵌入式內(nèi)存數(shù)據(jù)庫技術現(xiàn)狀,然后簡單介紹了內(nèi)存數(shù)據(jù)庫技術的特點等并提出了一個適用于3G平臺的嵌入式內(nèi)存數(shù)據(jù)庫引擎,隨著計算機技術的高速發(fā)展和人們對信息處理速度不斷增長的需求,大容量的內(nèi)存數(shù)據(jù)庫和經(jīng)過精簡的嵌入式內(nèi)存數(shù)據(jù)庫將會有越來越大的應用空間。目前,還沒有比較好的通用的嵌入式內(nèi)存數(shù)據(jù)庫產(chǎn)品,進行這方面的開發(fā)和實現(xiàn)將會有很大的市場潛力和空間。

 

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關推薦

技術專區(qū)

關閉