中文字幕无码日韩视频无码三区

一種嵌入式內存數據庫的實現方法

文檔序號:8299044閱讀:2730來源:國知局
一種嵌入式內存數據庫的實現方法
【技術領域】
[0001] 本發明涉及信息系統控制與數據庫領域,具體而言涉及一種嵌入式內存數據庫的 實現方法。
【背景技術】
[0002] 在現有的信息系統中,使用傳統數據庫常常因為硬盤I/O讀寫速率的影響而導致 信息系統的性能遇到瓶頸。
[0003] 內存數據庫因為讀寫都在內存中進行,因此可以突破硬盤I/O讀寫的限制而提升 信息系統的性能,一般讀寫速度是普通硬盤數據庫的10倍以上。
[0004] 對于實時性要求較高的嵌入式信息系統,一般需要內存數據庫提高信息系統的實 時性。
[0005] 該技術領域目前的現狀和缺陷在于:
[0006] 2)不支持SQL語句
[0007]SQL語句在數據庫操作中是一種簡捷的操作語句。若內存數據庫不支持SQL語句, 不僅增加了數據庫應用開發的難度,也不利于實現與普通數據庫的統一訪問。
[0008] 3)掉電而造成數據丟失
[0009] 內存數據庫的數據因為保存在內存,掉電將導致內存數據庫數據丟失,這樣對數 據的安全性和完整性會造成嚴重影響。而大部分嵌入式平臺所處的使用環境是極其容易掉 電的,若不解決這一問題,內存數據庫將無法在嵌入式信息系統中使用。
[0010] 現有技術中支持SQL語句操作的內存數據庫,如微軟的SQLSERVER內存數據庫不 支持LINUX系統,甲骨文公司的ORACLETimesTen雖然支持LINUX系統卻必須與ORACLE數 據庫聯合使用,前Facebook工程師創辦的分布式內存數據庫MemSQL雖然是C++編寫,完美 支持Linux,但只能運行至云端,用戶只能下載客戶端,無法運行在嵌入式數據庫環境。而開 源的內存數據庫往往都是K/V結構,并不支持SQL。因此,如何實現針對ARM的嵌入式環境 下且支持SQL語句操作的內存數據庫是一大急需解決的難題。
[0011] 而且,隨著信息化的發展,嵌入式設備因為便攜性以及功能的日益豐富,被各個領 域使用。

【發明內容】

[0012] 本發明目的在于提供一種嵌入式內存數據庫的實現方法,利用本方法實現的內存 數據庫不僅支持SQL語句,還具有掉電數據不丟失功能。
[0013] 為達成上述目的,本發明所采用的技術方案如下:
[0014] 一種嵌入式內存數據庫的實現方法,在一嵌入式計算機系統中實現,該嵌入式計 算機系統包括中央處理器(CPU)、閃存(FLASH)、內存芯片組(SDRAM,其實是一個內存空間) 和系統總線,該方法包括以下步驟:
[0015] 步驟1、(都是根據配置文件所預先設定的一系列參數)在閃存(FLASH)內建立備 份區,用于對內存數據庫數據進行備份;
[0016] 步驟2、在內存芯片組(SDRAM)配置內存數據庫執行程序,包括配置管理、存儲管 理與調度、數據庫管理,其中配置管理用于設置內存數據庫占用內存資源最大空間以及備 份頻率(時間間隔),存儲管理與調度用于執行內存數據庫中內存空間分配(分配暫存區和 工作區)、數據轉移(數據轉移歸檔等)、數據備份(從工作區經過暫存區(快速進行的,時 間可以忽略不計),將數據存入備份區)和數據載入(數據庫啟動時,從備份區到工作區的 數據載入過程);數據庫管理用于實現新建/刪除數據表和視圖(view,將幾個表合成展現 成一個大視圖)、數據庫的數據增加、刪除、查詢、修改操作;
[0017] 步驟3、在內存芯片組(SDRAM)建立作為工作區的第一內存區和作為暫存區的第 -內存區;
[0018] 步驟4、中央處理器(CPU)控制執行內存數據庫的功能實現,即通過一主線程實現 內存數據庫的數據操作以及通過一子線程實現內存數據庫的數據備份,其中主線程與子線 程具有同等優先級。
[0019] 進一步的實施例中,所述主線程的運行過程中,中央處理器(CPU)通過所述數據 庫管理單元提供的數據接口實現對內存數據庫的數據操作,其包括以下過程:
[0020] 1)中央處理器(CPU)判斷是否(從其I/O接口)收到用戶輸入的數據操作請求 (例如增加、刪除、查詢、修改),如果是,則進入下述步驟2),否則保持主線程掛起;
[0021] 2)中央處理器(CPU)調用所述執行程序,通過所述數據庫管理單元提供的數據接 口執行用戶輸入的數據操作請求;
[0022] 3)掛起主進程。
[0023] 進一步的實施例中,所述數據庫管理單元提供的數據接口包括下述4類C-API接 n:
[0024] 1)boolExecStatement(char*sz_SQL)
[0025] 功能:執行SQL語句;
[0026] 參數:sz_SQL,標準SQL執行語句字符串;
[0027] 2)boolGet_DATA(char*sz_SQL,char*Data)
[0028] 功能:執行查詢語句并返回查詢成功;
[0029] 參數:sz_SQL,標準SQL查詢語句字符串;Data,返回的查詢結果;
[0030] 4)voidStarMemDB()
[0031] 功能:啟動內存數據庫工作流程并分配內存數據庫資源;
[0032] 參數:無;
[0033] 4)voidStopMemDB()
[0034] 功能:停止內存數據庫并釋放內存數據庫資源;
[0035] 參數:無。
[0036] 進一步的實施例中,所述子線程的運行過程中,以下述之一方式進行數據備份:
[0037] 1)中央處理器(CPU)根據所設置的備份頻率(例如每隔5min、20min、60min等), 調用所述執行程序,將內存數據庫中的數據從工作區經過暫存區后存入備份區;以及
[0038]2)中央處理器(CPU)調用執行程序執行內存數據庫的數據操作時,同時將工作區 數據同步到暫存區,再將暫存區數據保存至備份區。
[0039] 進一步的實施例中,所述子線程的運行過程中,中央處理器(CPU)根據所設置的 備份頻率(例如每隔5min、20min、60min等),調用所述執行程序,將工作區數據同步到暫存 區,然后再將暫存區數據轉化為一數據鏡像文件保存至備份區。
[0040] 進一步的實施例中,所述步驟2在內存芯片組(SDRAM)配置內存數據庫執行程序 時,所述數據庫管理還配置用于實現內存數據庫的數據頁面和索引管理,并且采用鏈式頁 面存儲結構存儲內存頁面數據,以及采用T樹建立內存數據庫索引鏈表。
[0041] 由以上本發明的技術方案可知,本發明提出的嵌入式內存數據庫的實現方法,支 持通過C-API執行SQL語句,包括增、刪、改、查等功能;支持設備掉電時的數據保護,防止因 設備掉電而丟失數據;支持通過配置文件對內存數據庫的一些運行參數進行設置,支持通 過USB設備進行數據的導入導出,以通過設備USB接口接入USB存儲設備,導入數據至內存 數據庫,以及將內存數據庫數據導出;并且具備日志查詢功能。與現有技術相比,其顯著的 有益效果在于:
[0042] 1、利用本發明提出的嵌入式內存數據庫的實現方法,可以顯著提高嵌入式信息系 統數據訪問請求的響應時間,降低了嵌入式信息系統對CPU的性能要求;
[0043] 2、利用本方法實現的內存數據庫,可以防止掉電造成數據丟失,從而提高嵌入式 信息系統數據的穩定性和完整性;
[0044] 3、利用本方法實現的內存數據庫,其操作接口支持SQL語句,使用該內存數據庫 操作,可以降低開發難度,提高開發效率。
【附圖說明】
[0045] 圖1為嵌入式計算機系統的一個示例性架構示意圖。
[0046] 圖2為本發明一實施方式嵌入式內存數據庫的實現方法的流程示意圖。
[0047] 圖3為內存數據庫的數據調度示意圖。
[0048] 圖4為利用圖2實施例的方法所實現內存數據庫的流程圖。
【具體實施方式】
[0049] 為了更了解本發明的技術內容,特舉具體實施例并配合所附圖式說明如下。
[0050] 如圖1所示為一個嵌入式計算機系統的示例性架構示意圖,其中,該嵌入式計算 機系統包括中央處理器(CPU)、閃存(FLASH閃存)、內存芯片組(SDRAM,其實為一個內存空 間)和系統總線。
[0051] 中央處理器(CPU)采用ARM系列的嵌入式處理器,例如三星電子的ARM9系列嵌入 式處理器S3C2410,該ARM9芯片S3C2410是32B微控制器,資源豐富,帶獨立的16KB的指令 Cache和16kB數據Cache,LCD控制器、RAM控制器,NAND閃存控制器、3路UART、4路DMA、 4 路帶PWM的Timer、并行I/O口、8 路 10 位ADC、TouchScreen接口、I2C接口、I2S接口、 2個USB接口控制器、2路SPI,且主頻最高可達203MHz。因此在該處理器豐富資源的基礎 上,可以配置和擴展FLASH閃存和SDRAM內存,以便于在該平臺上實現內存數據庫。
[0052] 系統總線包括地址總線和數據總線。
[0053] 本實施例中,嵌入式計算機系統中運行的操作系統為一LINUX內核,由于Linux內 核本身體積較大,而且嵌入式系統的資源有限,因此Linux用于嵌入式系統必須對Linux進 行實時化和嵌入式化,因此在本實施例中優選地,通過配置內核,裁減shell和嵌入式C庫 對系統定制,使整個操作系統能夠存放到容量較小的FLASH芯片中。
[0054] 本實施例中,ARM9芯片S3C2410平臺所使用的Linux內核是在Linux-2. 4. 18內 核打上patch-2. 4. 18-S3C2410補丁后編譯而成。S3C2410平臺使用的文件系統是YAFFS, 文件系統包括應用程序、Linux模塊、配置文件等。
[0055] 圖2所示為本發明一實施方式嵌入式內存數據庫的實現方法的流程示意圖,其 中,嵌入式內存數據庫的實現方法包括以下步驟:
[0056] 步驟1、在閃存內建立備份區,用于對內存數據庫數據進行備份;
[0057] 步驟2、在內存芯片組內配置內存數據庫執行程序,包括配置管理、存儲管理與調 度、數據庫管理,其中配置管理用于設置內存數據庫占用內存資源最大空間以及備份頻率, 該備份頻率即備份的時間間隔,存儲管理與調度用于執行內存數據庫中內存空間分配(即 分配暫存區和工作區)、數據轉移(即數據轉移歸檔,例如通過USB接口將內存數據庫數 據導出等)、數據備份(即從工作區經過暫存區(快速進行的,時間可以忽略不計),將數據 存入備份區)和數據載入(即數據庫啟動時,從備份區到工作區的數據載入過程);數據庫 管理用于實現新建/刪除數據表和視圖(視圖即view,將幾個數據表合成展現成一個大視 圖)、及數據庫的數據增加、刪除、查詢、修改操作;
[0058] 步驟3、在內存芯片組(SDRAM)建立作為工作區的第一內存區和
當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1