專(zhuān)利名稱(chēng):嵌入式系統(tǒng)的數(shù)據(jù)管理模塊的制作方法
嵌入式系統(tǒng)的數(shù)據(jù)管理模塊
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式系統(tǒng),尤其涉及一種嵌入式系統(tǒng)的數(shù)據(jù)管理模塊。
背景技術(shù):
隨著信息化,智能化,網(wǎng)絡(luò)化的發(fā)展,嵌入式系統(tǒng)已經(jīng)深入到我們生活的各個(gè)方 面,其具備的功能越來(lái)越多,需要處理的數(shù)據(jù)也變得越發(fā)復(fù)雜。在大多數(shù)領(lǐng)域,由于受成本 制約和硬件平臺(tái)限制,不能運(yùn)行高級(jí)的數(shù)據(jù)庫(kù)管理系統(tǒng),而又沒(méi)有適合的替代方案,因而使 很多的嵌入式系統(tǒng)在數(shù)據(jù)管理上還是采用低級(jí)的文件管理方式。
這種低級(jí)的文件管理方式存在如下缺點(diǎn) 1)功能接口不具備復(fù)用性,編程復(fù)雜,開(kāi)發(fā)周期長(zhǎng)且不便維護(hù);
2)軟件模塊功能不易擴(kuò)展;
3)數(shù)據(jù)統(tǒng)計(jì)分析困難; 4)數(shù)據(jù)管理的空間利用率,執(zhí)行效率難以保證。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題,在于提供一種嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,該模塊能 在存儲(chǔ)容量小、內(nèi)存資源緊缺、總體運(yùn)算速度不高、缺乏部署高級(jí)數(shù)據(jù)庫(kù)系統(tǒng)條件的平臺(tái)上 有效的進(jìn)行數(shù)據(jù)管理。 本發(fā)明是這樣實(shí)現(xiàn)的一種嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,包括一表結(jié)構(gòu)模塊用 于提供對(duì)數(shù)據(jù)表結(jié)構(gòu)信息的操作接口,該表結(jié)構(gòu)模塊由至少一個(gè)數(shù)據(jù)表組成;一數(shù)據(jù)模塊 用于提供對(duì)數(shù)據(jù)表記錄數(shù)據(jù)的操作接口 ;一索引模塊用于提供對(duì)數(shù)據(jù)表索引的操作接 口,該索引模塊由至少一個(gè)索引表組成;一數(shù)據(jù)比較模塊用于為索引字段排序比較提供 各種數(shù)據(jù)類(lèi)型的比較接口 ;以及一用戶(hù)接口模塊用于提供對(duì)數(shù)據(jù)數(shù)據(jù)表基本操作接口 ; 其中,僅所述數(shù)據(jù)比較模塊和用戶(hù)接口模塊供外部應(yīng)用訪(fǎng)問(wèn)。 所述表結(jié)構(gòu)模塊中的數(shù)據(jù)表包括一表結(jié)構(gòu)信息文件用于存儲(chǔ)版本,索引,記錄 大小,數(shù)據(jù)文件空間分配信息;一表記錄文件用于存儲(chǔ)實(shí)際的記錄數(shù)據(jù);以及至少一個(gè)表 索引文件用于按記錄中索引字段值的升降順序存儲(chǔ)數(shù)據(jù)記錄的位置;其中,一條字段索 引對(duì)應(yīng)一個(gè)索引文件。 所述數(shù)據(jù)模塊將記錄分配表分成多塊,如果某塊數(shù)據(jù)有被修改過(guò),則設(shè)置一個(gè)寫(xiě) 入標(biāo)識(shí),否則不設(shè)置,保存記錄時(shí),只保存有被修改過(guò)的塊,以有效的減少寫(xiě)入的數(shù)據(jù)塊。
所述記錄分配表由已用鏈表頭指針,已用鏈表尾指針、空閑鏈表頭指針、空閑鏈表 尾指針和一張記錄分配表組成;所述已用鏈表頭指針指向記錄分配表中第一個(gè)已經(jīng)被分 配使用的記錄的下標(biāo)。所述已用鏈表尾指針則指向記錄分配表中最后一個(gè)已經(jīng)被分配使 用的記錄的下標(biāo)。所述空閑鏈表頭指針指向記錄分配表中第一個(gè)未被分配使用的記錄的 下標(biāo);所述空閑鏈表尾指針則指向記錄分配表中最后一個(gè)未被分配使用的記錄的下標(biāo); 所述記錄分配表中每個(gè)元素都存儲(chǔ)本鏈表下一個(gè)元素的下標(biāo),以形成兩張空間鏈表,數(shù)據(jù)表初始化時(shí),將所有的空間都添加到該空間鏈表中的空閑鏈表中;添加記錄時(shí),從空閑鏈表 中取出第一個(gè)空間,并將該空間添加到該空間鏈表中的已用鏈表末尾,刪除記錄時(shí),則將刪 除的已用鏈表中要?jiǎng)h除的記錄,并將該記錄添加到刪除鏈表的末尾。 所述索引模塊的索引表包括索引順序和記錄位置,所述索引順序指明字段在數(shù)據(jù) 表中的排序順序;所述記錄位置對(duì)應(yīng)每條數(shù)據(jù)記錄的物理順序。 所述數(shù)據(jù)比較模塊允許用戶(hù)指定其排序方式,所述數(shù)據(jù)比較模塊以排序函數(shù)表的
方式實(shí)現(xiàn)了排序函數(shù)的動(dòng)態(tài)選擇,在特殊情況下允許用戶(hù)增加自己的排序函數(shù)。 本發(fā)明具有如下優(yōu)點(diǎn)克服了舊有的文件型數(shù)據(jù)管理方式上的大部分缺點(diǎn),本發(fā)
明的數(shù)據(jù)管理模塊能在存儲(chǔ)容量小、內(nèi)存資源緊缺、總體運(yùn)算速度不高、缺乏部署高級(jí)數(shù)據(jù)
庫(kù)系統(tǒng)條件的平臺(tái)上有效的進(jìn)行數(shù)據(jù)管理;且數(shù)據(jù)管理方式接近于數(shù)據(jù)庫(kù)方式,使其在復(fù)
用性,擴(kuò)展性,易用性,高效性等方面達(dá)到了要求;其還具備良好的移植性,僅做少量代碼更
改便能適應(yīng)不同的操作系統(tǒng)和文件系統(tǒng)。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
圖1為本發(fā)明嵌入式系統(tǒng)的數(shù)據(jù)管理模塊的架構(gòu)框圖。
圖2A和圖2B為本發(fā)明中的記錄分配表的結(jié)構(gòu)原理圖。
圖3為本發(fā)明中的索引表和數(shù)據(jù)文件表的的映射關(guān)系圖。
具體實(shí)施方式
請(qǐng)參閱圖1所示,本發(fā)明是這樣實(shí)現(xiàn)的一種嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,包括
—表結(jié)構(gòu)模塊用于提供對(duì)數(shù)據(jù)表結(jié)構(gòu)信息的操作接口,該表結(jié)構(gòu)模塊由至少一 個(gè)數(shù)據(jù)表組成; —數(shù)據(jù)模塊用于提供對(duì)數(shù)據(jù)表記錄數(shù)據(jù)的操作接口 ; —索引模塊用于提供對(duì)數(shù)據(jù)表索引的操作接口,該索引模塊由至少一個(gè)索引表 組成; —數(shù)據(jù)比較模塊用于為索引字段排序比較提供各種數(shù)據(jù)類(lèi)型的比較接口 ;以及
—用戶(hù)接口模塊用于提供對(duì)數(shù)據(jù)數(shù)據(jù)表基本操作接口 ;
其中,僅所述數(shù)據(jù)比較模塊和用戶(hù)接口模塊供外部應(yīng)用訪(fǎng)問(wèn)。
所述表結(jié)構(gòu)模塊中的數(shù)據(jù)表包括 —表結(jié)構(gòu)信息文件用于存儲(chǔ)版本,索引,記錄大小,數(shù)據(jù)文件空間分配信息;
—表記錄文件用于存儲(chǔ)實(shí)際的記錄數(shù)據(jù);以及 至少一個(gè)表索引文件用于按記錄中索引字段值的升降順序存儲(chǔ)數(shù)據(jù)記錄的位 置; 其中,一條字段索引對(duì)應(yīng)一個(gè)索引文件。 所述數(shù)據(jù)模塊將記錄分配表分成多塊,如分成N塊,每塊大小為M,如果某塊數(shù)據(jù) 有被修改過(guò),則設(shè)置一個(gè)寫(xiě)入標(biāo)識(shí),否則不設(shè)置,保存記錄時(shí),只保存有被修改過(guò)的塊,以有 效的減少寫(xiě)入的數(shù)據(jù)塊。特別是在連續(xù)做大量增刪改的動(dòng)作時(shí),效率會(huì)更加明顯。數(shù)據(jù)管 理模塊目前主要應(yīng)用對(duì)象是YAFFS文件系統(tǒng),由于YAFFS文件系統(tǒng)的每個(gè)塊大小為512字節(jié),因此這里也將記錄分配表每個(gè)塊大小分為512字節(jié),共分配了 512個(gè)塊。按每個(gè)記錄分 配表元素大小為4字節(jié)來(lái)算,它可以表示65536 (512*512/4)個(gè)元素。這種對(duì)數(shù)據(jù)寫(xiě)操作的 優(yōu)化策略也同樣應(yīng)用在了索引表上。 如圖2A和圖2B所示,所述記錄分配表由已用鏈表頭指針,已用鏈表尾指針、空閑 鏈表頭指針、空閑鏈表尾指針和一張記錄分配表組成; 所述已用鏈表頭指針指向記錄分配表中第一個(gè)已經(jīng)被分配使用的記錄的下標(biāo)。
所述已用鏈表尾指針則指向記錄分配表中最后一個(gè)已經(jīng)被分配使用的記錄的下 標(biāo)。
所述空閑鏈表頭指針指向記錄分配表中第一個(gè)未被分配使用的記錄的下標(biāo);
所述空閑鏈表尾指針則指向記錄分配表中最后一個(gè)未被分配使用的記錄的下 標(biāo); 所述記錄分配表中每個(gè)元素都存儲(chǔ)本鏈表下一個(gè)元素的下標(biāo),以形成兩張空間鏈 表,數(shù)據(jù)表初始化時(shí),將所有的空間都添加到該空間鏈表中的空閑鏈表中;添加記錄時(shí),從 空閑鏈表中取出第一個(gè)空間,并將該空間添加到該空間鏈表中的已用鏈表末尾,刪除記錄 時(shí),則將刪除的已用鏈表中要?jiǎng)h除的記錄,并將該記錄添加到刪除鏈表的末尾。如此一來(lái), 對(duì)于已用鏈表來(lái)說(shuō),第一條記錄就是最早添加的記錄,而最后一條記錄也就是最后添加的 記錄。也就是已用表空間的鏈表順序也就是記錄添加的先后順序。 如圖3所示,所述索引模塊的索引表包括索引順序和記錄位置,所述索引順序指 明字段在數(shù)據(jù)表中的排序順序;所述記錄位置對(duì)應(yīng)每條數(shù)據(jù)記錄的物理順序。圖3的左 邊為索引表,右邊為數(shù)據(jù)文件表,索引的管理主要包括以下幾部份索引文件的創(chuàng)建和初 始化;索引文件的打開(kāi),關(guān)閉,保存;索引表的添,刪,改,查;記錄索引與記錄物理位置的轉(zhuǎn)換。 所述數(shù)據(jù)比較模塊允許用戶(hù)指定其排序方式,所述數(shù)據(jù)比較模塊以排序函數(shù)表的
方式實(shí)現(xiàn)了排序函數(shù)的動(dòng)態(tài)選擇,在特殊情況下允許用戶(hù)增加自己的排序函數(shù)。 綜上所述,本發(fā)明的數(shù)據(jù)管理模塊的數(shù)據(jù)管理方式接近于數(shù)據(jù)庫(kù)方式,使其在復(fù)
用性,擴(kuò)展性,易用性,高效性等方面達(dá)到了要求;其還具備良好的移植性,僅做少量代碼更
改便能適應(yīng)不同的操作系統(tǒng)和文件系統(tǒng);本發(fā)明能在存儲(chǔ)容量小、內(nèi)存資源緊缺、總體運(yùn)算
速度不高、缺乏部署高級(jí)數(shù)據(jù)庫(kù)系統(tǒng)條件的平臺(tái)上有效的進(jìn)行數(shù)據(jù)管理。
權(quán)利要求
一種嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,其特征在于包括一表結(jié)構(gòu)模塊用于提供對(duì)數(shù)據(jù)表結(jié)構(gòu)信息的操作接口,該表結(jié)構(gòu)模塊由至少一個(gè)數(shù)據(jù)表組成;一數(shù)據(jù)模塊用于提供對(duì)數(shù)據(jù)表記錄數(shù)據(jù)的操作接口;一索引模塊用于提供對(duì)數(shù)據(jù)表索引的操作接口,該索引模塊由至少一個(gè)索引表組成;一數(shù)據(jù)比較模塊用于為索引字段排序比較提供各種數(shù)據(jù)類(lèi)型的比較接口;以及一用戶(hù)接口模塊用于提供對(duì)數(shù)據(jù)數(shù)據(jù)表基本操作接口;其中,僅所述數(shù)據(jù)比較模塊和用戶(hù)接口模塊供外部應(yīng)用訪(fǎng)問(wèn)。
2. 根據(jù)權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,其特征在于所述表結(jié)構(gòu)模塊 中的數(shù)據(jù)表包括一表結(jié)構(gòu)信息文件用于存儲(chǔ)版本,索引,記錄大小,數(shù)據(jù)文件空間分配信息; 一表記錄文件用于存儲(chǔ)實(shí)際的記錄數(shù)據(jù);以及至少一個(gè)表索引文件用于按記錄中索引字段值的升降順序存儲(chǔ)數(shù)據(jù)記錄的位置; 其中,一條字段索引對(duì)應(yīng)一個(gè)索引文件。
3. 根據(jù)權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,其特征在于所述數(shù)據(jù)模塊將 記錄分配表分成多塊,如果某塊數(shù)據(jù)有被修改過(guò),則設(shè)置一個(gè)寫(xiě)入標(biāo)識(shí),否則不設(shè)置,保存 記錄時(shí),只保存有被修改過(guò)的塊,以有效的減少寫(xiě)入的數(shù)據(jù)塊。
4. 根據(jù)權(quán)利要求3所述的嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,其特征在于所述記錄分配表 由己用鏈表頭指針,己用鏈表尾指針、空閑鏈表頭指針、空閑鏈表尾指針和一張記錄分配表 組成;所述己用鏈表頭指針指向記錄分配表中第一個(gè)已經(jīng)被分配使用的記錄的下標(biāo); 所述己用鏈表尾指針則指向記錄分配表中最后一個(gè)已經(jīng)被分配使用的記錄的下標(biāo); 所述空閑鏈表頭指針指向記錄分配表中第一個(gè)未被分配使用的記錄的下標(biāo); 所述空閑鏈表尾指針則指向記錄分配表中最后一個(gè)未被分配使用的記錄的下標(biāo); 所述記錄分配表中每個(gè)元素都存儲(chǔ)本鏈表下一個(gè)元素的下標(biāo),以形成兩張空間鏈表, 數(shù)據(jù)表初始化時(shí),將所有的空間都添加到該空間鏈表中的空閑鏈表中;添加記錄時(shí),從空閑 鏈表中取出第一個(gè)空間,并將該空間添加到該空間鏈表中的己用鏈表末尾,刪除記錄時(shí),則 將刪除的己用鏈表中要?jiǎng)h除的記錄,并將該記錄添加到刪除鏈表的末尾。
5. 根據(jù)權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,其特征在于所述索引模塊的 索引表包括索引順序和記錄位置,所述索引順序指明字段在數(shù)據(jù)表中的排序順序;所述記 錄位置對(duì)應(yīng)每條數(shù)據(jù)記錄的物理順序。
6. 根據(jù)權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,其特征在于所述數(shù)據(jù)比較模 塊允許用戶(hù)指定其排序方式,所述數(shù)據(jù)比較模塊以排序函數(shù)表的方式實(shí)現(xiàn)了排序函數(shù)的動(dòng) 態(tài)選擇,在特殊情況下允許用戶(hù)增加自己的排序函數(shù)。
全文摘要
本發(fā)明提供一種嵌入式系統(tǒng)的數(shù)據(jù)管理模塊,包括一表結(jié)構(gòu)模塊用于提供對(duì)數(shù)據(jù)表結(jié)構(gòu)信息的操作接口,該表結(jié)構(gòu)模塊由至少一個(gè)數(shù)據(jù)表組成;一數(shù)據(jù)模塊用于提供對(duì)數(shù)據(jù)表記錄數(shù)據(jù)的操作接口;一索引模塊用于提供對(duì)數(shù)據(jù)表索引的操作接口,該索引模塊由至少一個(gè)索引表組成;一數(shù)據(jù)比較模塊用于為索引字段排序比較提供各種數(shù)據(jù)類(lèi)型的比較接口;以及一用戶(hù)接口模塊用于提供對(duì)數(shù)據(jù)數(shù)據(jù)表基本操作接口;其中,僅所述數(shù)據(jù)比較模塊和用戶(hù)接口模塊供外部應(yīng)用訪(fǎng)問(wèn)。該模塊能在存儲(chǔ)容量小、內(nèi)存資源緊缺、總體運(yùn)算速度不高、缺乏部署高級(jí)數(shù)據(jù)庫(kù)系統(tǒng)條件的平臺(tái)上有效的進(jìn)行數(shù)據(jù)管理。
文檔編號(hào)G06F17/30GK101702162SQ20091011280
公開(kāi)日2010年5月5日 申請(qǐng)日期2009年11月19日 優(yōu)先權(quán)日2009年11月19日
發(fā)明者鮑協(xié)林 申請(qǐng)人:福建鑫諾通訊技術(shù)有限公司