新四季網

一種嵌入式實時內存資料庫的製作方法

2023-10-17 02:14:54

專利名稱:一種嵌入式實時內存資料庫的製作方法
技術領域:
本發明屬於應用系統數據管理領域,具體涉及一種數據讀寫速度高,將數據保存在內存中的嵌入式實時內存資料庫。
背景技術:
隨著嵌入式系統的廣泛應用及嵌入式實時作業系統的不斷普及,嵌入式系統已經成為很多行業發展的核心技術。進入2012年,智能終端、物聯網、雲計算產業已經悄然進入高速發展的階段,大量的數據分析處理從傳統的PC轉移到了嵌入式環境下,嵌入式環境下的數據管理問題成為系統中的重要環節。構建嵌入式實時資料庫系統成為嵌入式開發中必須解決的問題。由於嵌入式實時資料庫系統在運行環境和運行方式上與常見的企業級資料庫管 理系統有很大差別,主要表現在傳統的企業級資料庫如Oracle、DB2過於龐大,對cpu主頻和磁碟容量有很高的要求,無法在硬體資源有限的嵌入式系統上面安裝和使用;除此之外,傳統資料庫缺乏實時響應的機制,並且受限於硬碟讀寫速度,無法滿足高實時性的要求,在一些實時性要求很高的控制系統中,傳統資料庫更顯得無能為力。傳統的磁碟資料庫需要頻繁地訪問磁碟來進行數據的操作,由於對磁碟讀寫數據的操作一方面要進行磁頭的機械移動,另一方面受到系統調用(通常通過CPU中斷完成,受到CPU時鐘周期的制約)時間的影響,當數據量很大,操作頻繁且複雜時,就會暴露出很多問題。本發明設計的內存資料庫拋棄了磁碟數據管理的傳統方式,基於全部數據都在內存中重新設計了體系結構,並且在數據緩存、快速算法、並行操作方面也進行了相應的改進,大大提高數據的訪問速度,滿足高實時性場合數據存取性能的要求。與此同時目前現有的嵌入式資料庫主要是建立在Flash上面,由於Flash讀寫速度較慢,並且存在擦寫壽命的問題,所以目前大部分的嵌入式資料庫性能並不理想;另外目前的嵌入式資料庫不支持數據回滾機制,容易出現誤操作損壞數據,並且缺乏很好的數據保護機制,容易出現數據文件損壞。本發明設計的內存資料庫將Flash與內存資料庫相結合,將大量的數據操作(插入、刪除、修改、查詢)放在內存中,大大減少了對Flash的訪問次數,提高訪問速度的同時增加了 Flash的使用壽命。同時採用了數據緩存回滾機制,保證了數據的一致性,有效的防止誤操作損壞數據。進一步為了防止重要數據丟失,採用了二層存儲的方式,對於實時數據保存在內存中,根據數據重要性優先級並定時向Flash同步保存。

發明內容
本發明的目的在於提供一種解決了嵌入式領域無法使用傳統的基於磁碟的大型資料庫問題,提高了數據的訪問速度,降低對磁碟容量的依賴,滿足高實時性場合的數據存取性能要求的嵌入式實時內存資料庫。本發明的目的是這樣實現的
—種嵌入式實時內存資料庫,包括資料庫核心、資料庫控制管理模塊、資料庫接口三個模塊,資料庫核心對數據進行定義與組織,資料庫接口對資料庫進行存取訪問,數據控制管理模塊對資料庫的狀態進行控制。資料庫核心採用關係型數據模型,資料庫核心的數據表採用二維表結構,每張二維表用於創建可加快二維表記錄檢索速度的主鍵索引和輔助索引,資料庫控制管理模塊由上電加載模塊、定時存檔模塊組成。資料庫控制管理模塊分為上電加載、定時存檔兩個子模塊。內存資料庫採用雙層存儲的方式,即內存表中存有實時的數據,並定時將表中的數據保存在物理硬碟中,當資料庫掉電後,重新啟動可從硬碟中重新加載數據。每張表都可創建索引,包括一個主鍵索引和數量大 於一個的輔助索引。本發明的有益效果在於本發明區別於傳統資料庫,在內存中建立資料庫大大提高了數據的訪問速度,降低對磁碟容量的依賴,並且滿足高實時性場合的數據存取性能要求。引入了二層存儲的概念和回滾機制,保證了數據的完整性、一致性和安全性,在提升資料庫工作效率的同時,使用內存資料庫可以直接節省硬體投資和系統維護成本。


圖I為資料庫上電加載流程示意圖;圖2為資料庫訪問流程示意圖;圖3為資料庫實現實例示意圖。
具體實施例方式本發明的資料庫核心採用關係型數據模型,資料庫核心的數據表採用二維表結構,每張二維表用於創建可加快二維表記錄檢索速度的主鍵索引和輔助索引。每一個表、索引和隊列對象都可以實例化,每一個表實例可以與索引、隊列相關聯,並且表實例具有自己的方法函數來實現特定的功能。表採用關係型資料庫常用的二維表結構,每張表都可創建多個索引,其中一個主鍵索引,多個輔助索引。建立索引的目的是為了加快對二維表的元組的檢索速度。索引對象是用來描述不同類型和算法的索引的一種數據對象。一個特定二維表的索引表就是索引對象的一個具體實例。索引採用順序索引、一次hash、散列hash、B樹索引。資料庫核心同時提供了回滾機制,開闢一塊緩存記錄歷史操作數據,當出現數據錯誤時可以進行數據回滾。順序索引索引項已經按照關鍵字排序,所以在查找時可以使用二分查找,平均檢索效率為log2N。對該索引進行增加刪除操作時,由於要維護原來的有序性,必然會涉及到大量索引項在內存中的搬移,所以該類型不適合數據量大,頻繁操作索引的二維表。一次HASH索引該索引類型在檢索時只要通過一次hash函數的計算就可以定位到索引項,通過下標定位,一次查找,速度最快。其索引值的分布決定了該數組的規模,所以要求索弓I有規律,索引值分布緊湊。對於索引無規律,索引值分布分散的索引,將會產生內存空間的浪費。散列HASH索引通過模空間和Hash桶的組合有效解決了順序索引中索引項在內存中的搬移問題以及一次哈希索引中內存空間浪費的問題,其本質是在時間的消耗和空間的消耗上取得一個折中方案。B樹索引B樹是比較合適用於磁碟的數據結構,由於他是一個寬而淺的樹,查找一個數需要訪問很少的節點。大部分資料庫系統用一個B樹的變種B+樹,他保存所有的數據在樹的葉節點上。然而,對於內存資料庫,B樹比B+樹更合適,因為在內存中保存所有的數據在葉子上並非優點,他太浪費空間,存儲效率太低。B樹的內存利用率是比較好的,所以他用於內存資料庫比較合適;搜索速度比較快(用二分查找時,只訪問很少一部分節點),而且更新速度也比較快,操作性能好,動態維護方便。其包含的組件主要是I)葉子節點包含條目直接指向表裡的數據行。2)分支節點包含的條目指向索引裡其他的分支節點或者是葉子節點。 3)根節點一個B樹索引只有一個根節點,它實際就是位於樹的最頂端的分支節點。單向隊列和雙向隊列用於維護資料庫系統中需要的一些資源。資料庫控制管理模塊分為上電加載、定時存檔兩個子模塊。內存資料庫採用雙層存儲的方式,系統的存儲結構分為兩個層次,第一層為內存,即內存資料庫,整個實時資料庫系統的高性能要求就是以內存資料庫做為底層支持的,它是實時資料庫系統的關鍵,用於程序運行和實時數據的處理,它存取速度快,無需進行磁碟的I/O操作,因此最適合用於實時數據的管理和操作;第二層為外存,通常採用一些永久存儲設備,需要進行讀寫I/O操作,用於存儲系統中的歷史數據。這樣,對於那些固定不變的數據(如模擬量的工程單位)或存取頻率相對較低的數據(如只有在故障恢復時才使用的數據備份或日誌備份)放在外存空間內,而把所有的實時數據或當前工作部分的數據駐留在內存中,避免了資料庫文件的操作,大大提升了實時資料庫系統的性能。根據數據重要程度,為每個數據表設置優先級,當內存表中存有實時的數據時,根據優先級定時將表中的數據保存在物理硬碟中,當資料庫掉電後,重新啟動可從硬碟中重新加載數據。資料庫接口提供用戶訪問資料庫的途徑。在多個用戶並發地存取同一個資料庫的情況下,可以保證資料庫數據的一致性和完整性。用戶進程對資料庫的操作通過向資料庫訪問進程發送請求來實現,這樣可以將多用戶的並發訪問轉換成對於資料庫訪問進程的串行訪問。資料庫表格中對於欄位的定義由數據字典指定,數據字典包括了資料庫中所有數據類型的定義,包括整形、字符型、浮點型等常見的數據類型。數據表格的容量可通過配置文件進行配置,可配最大容量要根據系統內存大小決定。資料庫內存管理採用靜態分配方式,目的是提高內存分配效率,增強實時性。將內存劃分為若干內存池,將內存池內部再劃分為若干大小不同的內存塊,申請內存時採用大小匹配的方式,先找最小的能匹配到的內存。通過這種方式可以減小減少動態開闢內存的開銷,並且提高了系統的可靠性。資料庫啟動時首先根據數據字典對於欄位的定義以及表容量的大小創建數據表,例如一張表格中包含一個長度為100位元組的字符型欄位,該表的容量為1000,那麼這張表需要佔用的內存容量為100乘1000為100K字節。然後將數據從Flash加載到內存中,再對加載完成的數據創建索引。
對於Hash索引需要根據表記錄關鍵字的重複度來確定衝突桶的大小,例如存在兩條記錄數據關鍵字分別為2和12,如果取10為模,那麼他們的餘數都是2,這樣這兩個記錄會被存放到衝突桶中;對於B樹索引對於分支節點塊來說,其所包含的索引條目都是按照順序排列的。每個索引條目都具有兩個欄位。第一個欄位表示當前該分支節點塊下面所連結的索引塊中所包含的最小鍵值;第二個欄位為四個字節,表示所連結的索引塊的地址,該地址指向下面一個索引塊。在一個分支節點塊中所能容納的記錄行數由數據塊大小以及索引鍵值的長度決定。對於葉子節點塊來說,其所包含的索引條目與分支節點一樣,都是按照順序排列的(預設是升序排列,也可以在創建索引時指定為降序排列)。每個索引條目(也可以叫做每條記錄)也具有兩個字的。對於 每個索引塊來說,預設的PCTFREE為10%,也就是說最多只能段。第一個欄位表示索引的鍵值,對於單列索引來說是一個值;而對於多列索引來說則是多個值組合在一起使用其中的90%。同時9i以後,這90%中也不可能用盡,只能使用其中的87%左右。也就是說,8KB的數據塊中能夠實際用來存放索引數據的空間大約為 6488 (8192X90% X88%)個字節。通常情況表格的數據量較大,由於磁碟或電子盤的讀取速度較慢,一次加載大量數據到內存會使CPU佔用過高,因此上電加載採用分批加載和延遲加載技術,根據數據表格的優先級,首先加載優先級高的表。初始創建IOM大小的回滾緩衝區,之後根據系統內存的大小動態變化,當緩衝區不足時再從系統內存申請,當內存不足時會將一部分數據交換到Flash中ο通過定時存檔機制定時將內存資料庫中的數據同步到磁碟中,防止資料庫掉電丟失數據,該流程如圖I所示。在事務故障恢復時,元組屬性可存放在兩個內存地址空間中,其當前影像放在「有效的」內存地址所指的地址空間中,即有效位所標記的內存地址空間.為了提高事務運行的並發度,實時資料庫系統通常採用樂觀控制方法.因此,另一個內存地址空間存放的內容有兩種可能一是當事務已提交且未寫入永久庫時,存放的是屬性值的前象;二是當事務已將其修改但事務未曾提交時,存放的是未經提交的新屬性.當事務要讀取元組中的某一屬性時,先查看該屬性的有效位,根據有效位的值找到屬性值的地址,再根據這一地址讀取屬性值.當事務要寫元組中的某一屬性時,根據有效位的值找到相應的屬性值的地址,往這一地址空間中寫入新值。事務提交和夭折,在這種內存組織結構下顯得十分簡單.當事務結束時進行的檢測沒有發現衝突時,事務提交,只需將有效位取非,並將元組的修改位置I;當事務夭折時,有效位不變,將非有效內存地址置空,將屬性值結構中的相應元組項去掉。系統故障恢復時,常規資料庫管理系統作檢查點時,資料庫必須處於靜止狀態(即當前事務執行完,且沒有新事務開始執行).這種方式對於對時間要求十分高的實時系統是不合適的,工作量很大checkpoint操作造成的延時可能會使一些緊迫的事務由於超時而夭折.因此,在實時資料庫中,必須使用能將事務的活動和checkpoint操作同時進行的算法。我們將內存工作版本寫入外存的工作放在checkpoint操作時集中進行.在checkpoint階段,當一個事務試圖修改資料庫段時,其處理方式可以和非checkpoint段一樣,在checkpiont算法中,既要將內存資料庫寫入外存,又要將未寫入外存的日誌寫入外存。當系統故障發生時,整個恢復過程包括重裝Reloaded和恢復Recover兩步。其中重裝、恢復和事務處理可以同時進行,不必等內存資料庫完全恢復後再啟動事務.系統重裝,按照事務優先級的順序,裝入其所需要的資料庫段,使最緊迫的事務能最早運行.恢復處理在事務處理的同時進行,它也是根據事務的緊迫程度,在當前事務T要存取內存資料庫中的數據時觸發運行,使緊迫事務所需數據有優先恢復的權利.
由於在內存資料庫中,未提交事務的數據修改是不會寫入外存的.因此,系統在恢復時只需按照日誌,對事務做REDO而無須做UNDO。資料庫訪問進程負責處理對資料庫的訪問,可支持同時1000個對資料庫的並發訪問。資料庫訪問進程提供了兩種訪問機制,同步訪問和異步訪問。該訪問流程如圖2所
/Jn ο採用同步方式訪問數據時,數據訪問會被掛起直到資料庫返回調用者所需要的數據。這種方式適合調用者需要獲取關鍵數據,在為得到數據之前必須掛起等待。採用異步方式訪問數據時,數據訪問無需被掛起,調用者可以先返回,資料庫響應會通過通知消息發給調用者。實施例在基於ARM平臺的汽車監控軟體使用本資料庫,使用資料庫存儲1000臺汽車GPS傳送過來的位置信息。首先修改配置文件中表容量設置,例如設置表容量為I萬。資料庫核心根據設定好的表容量申請內存創建資料庫表。其次選擇表對應的索引類型,因為是存儲GPS位置信息用HASH索引速度較快。接著設置定時存檔時間為I秒,這樣可以保證只有秒級的數據丟失。本系統內存有512M較為充裕,因此設置回滾緩衝區為100M,這樣保證出現大量錯誤時可以保護數據進行回滾。以上配置完成後上電啟動資料庫,資料庫首先從Flash加載數據到內存數據表中,當有新的位置信息數據更新時,資料庫根據索引定位到對應的記錄進行插入、刪除和修改操作。如圖3所示,內存資料庫向應用提供插入、刪除、修改、查詢等接口,用戶通過這些接口操作資料庫。接口可以保證用戶多進程並發訪問資料庫的安全性和數據一致性。內存資料庫通過定時存檔機制,沒秒將內存中的資料庫數據定時備份到硬碟中,保證不會因掉電而丟失數據。同時在資料庫重新啟動時將數據從硬碟中重新加載到內存資料庫中。在提升資料庫工作效率的同時,使用內存資料庫可以直接節省硬體投資和系統維護成本。實際部署經驗表明,為達到特定重載系統的實時性要求,使用內存資料庫比不使用所需要的CPU數量減少2/3以上,而只需要把內存數量少量提高,從而大大節約了經費資金投入,系統穩定性反而得到提高。
權利要求
1.一種嵌入式實時內存資料庫,包括資料庫核心、資料庫控制管理模塊、資料庫接口三個模塊,其特徵在於資料庫核心對數據進行定義與組織,資料庫接口對資料庫進行存取訪問,數據控制管理模塊對資料庫的狀態進行控制。
2.根據權利要求I所述的一種嵌入式實時內存資料庫,其特徵在於資料庫核心採用關係型數據模型,資料庫核心的數據表採用二維表結構,每張二維表用於創建可加快二維表記錄檢索速度的主鍵索引和輔助索引,資料庫控制管理模塊由上電加載模塊、定時存檔模塊組成。
3.根據權利要求I或2所述的一種嵌入式實時內存資料庫,其特徵在於所述資料庫控制管理模塊分為上電加載、定時存檔兩個子模塊。
4.根據權利要求I或2所述的一種嵌入式實時內存資料庫,其特徵在於內存資料庫採用雙層存儲的方式,即內存表中存有實時的數據,並定時將表中的數據保存在物理硬碟中,當資料庫掉電後,重新啟動可從硬碟中重新加載數據。
5.根據權利要求2所述的一種嵌入式實時內存資料庫,其特徵在於每張表都可創建索引,包括一個主鍵索引和數量大於一個的輔助索引。
全文摘要
本發明屬於應用系統數據管理領域,具體涉及一種數據讀寫速度高,將數據保存在內存中的嵌入式實時內存資料庫。本發明包括資料庫核心、資料庫控制管理模塊、資料庫接口三個模塊,資料庫核心對數據進行定義與組織,資料庫接口對資料庫進行存取訪問,數據控制管理模塊對資料庫的狀態進行控制。本發明區別於傳統資料庫,在內存中建立資料庫大大提高了數據的訪問速度,降低對磁碟容量的依賴,並且滿足高實時性場合的數據存取性能要求。引入了二層存儲的概念和回滾機制,保證了數據的完整性、一致性和安全性,在提升資料庫工作效率的同時,使用內存資料庫可以直接節省硬體投資和系統維護成本。
文檔編號G06F17/30GK102880678SQ20121033427
公開日2013年1月16日 申請日期2012年9月11日 優先權日2012年9月11日
發明者閆保中, 黃超, 趙琳, 丁繼成, 李玉兵, 許兆新, 李健利, 黃衛權, 郝勇, 馬興成 申請人:哈爾濱工程大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀