專利名稱:一種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式系統(tǒng)的數(shù)據(jù)處理技術(shù),特別涉及一種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法。
背景技術(shù):
目前,很多嵌入式系統(tǒng)引入了嵌入式數(shù)據(jù)庫(kù)。嵌入式數(shù)據(jù)庫(kù)對(duì)嵌入式產(chǎn)品有著十分重要的意義,其能夠滿足嵌入式系統(tǒng)對(duì)數(shù)據(jù)處理和數(shù)據(jù)交換等要求,它和嵌入式操作系統(tǒng)有機(jī)地結(jié)合在一起,為應(yīng)用開(kāi)發(fā)人員提供有效的數(shù)據(jù)管理手段,同時(shí)提供各種定制條件和方法。
數(shù)據(jù)的存儲(chǔ)與索引是嵌入式數(shù)據(jù)庫(kù)的核心技術(shù),也是決定數(shù)據(jù)庫(kù)存儲(chǔ)效率的關(guān)鍵技術(shù),一個(gè)快速、靈活、高效的數(shù)據(jù)存儲(chǔ)和索引方法是數(shù)據(jù)庫(kù)研發(fā)中最為基本又最為重要的環(huán)節(jié)之一,其質(zhì)量的優(yōu)劣直接決定了數(shù)據(jù)的存取速度和查詢速度等主要技術(shù)指標(biāo);同時(shí),存儲(chǔ)與索引兩者之間又是互相依賴的,通過(guò)一對(duì)匹配的索引和存儲(chǔ)技術(shù)間共同協(xié)調(diào)工作,才能有效地完成數(shù)據(jù)的存儲(chǔ)與查詢。嵌入式數(shù)據(jù)庫(kù)中的數(shù)據(jù)一般都采用二進(jìn)制進(jìn)行存儲(chǔ),這樣保證了嵌入式數(shù)據(jù)庫(kù)的平臺(tái)無(wú)關(guān)性,同時(shí)有利于提高查找速度。
現(xiàn)有大型數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)庫(kù)存儲(chǔ)和索引技術(shù),如IBM的DB2,Microsoft的SQL Server等,采用復(fù)雜的多級(jí)索引和動(dòng)態(tài)散列結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行處理,并采用并行分布式系統(tǒng)對(duì)數(shù)據(jù)資料進(jìn)行管理,可在很大程度上提高數(shù)據(jù)的存取速度和效率,但必須建立在高速系統(tǒng)、大容量硬盤、內(nèi)存及高速的并行機(jī)制基礎(chǔ)上,受這些條件的限制,顯然不能將這些成熟的數(shù)據(jù)存放與索引技術(shù)平滑地移植到象嵌入式這樣的低性能、單一節(jié)點(diǎn)的設(shè)備所使用的數(shù)據(jù)庫(kù)中。
現(xiàn)有的嵌入式設(shè)備由于自身特點(diǎn)的不同對(duì)嵌入式數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)處理的要求也有所不同有的嵌入式設(shè)備如PDA、手機(jī)等存儲(chǔ)空間小,對(duì)數(shù)據(jù)的并發(fā)操作要求低;而有的嵌入式設(shè)備,如Handle PC、終端機(jī)、機(jī)頂盒等具有相對(duì)較大的磁盤空間,要求對(duì)數(shù)據(jù)具有相當(dāng)大的并發(fā)操作能力,又同時(shí)希望有足夠的索引以提高數(shù)據(jù)查找速度。
對(duì)于存儲(chǔ)空間小,對(duì)數(shù)據(jù)的并發(fā)操作要求低的嵌入式系統(tǒng),可以采用全散列技術(shù)將記錄和索引存放在同一個(gè)數(shù)據(jù)文件中,它將記錄中的數(shù)據(jù)以域(即字段)為單位進(jìn)行拆分,將這個(gè)記錄的每一個(gè)域都散列存放在這個(gè)數(shù)據(jù)文件的相應(yīng)索引中,實(shí)際上這個(gè)數(shù)據(jù)文件不存在記錄的實(shí)體,而是每個(gè)域的索引數(shù)據(jù)的組合,由于每個(gè)域上都存在索引,通過(guò)查找每個(gè)索引中該記錄的相應(yīng)域的數(shù)值,然后進(jìn)行數(shù)據(jù)組裝從而得到完整的記錄數(shù)據(jù)。這種技術(shù)由于表單各域都有相應(yīng)的索引,各個(gè)域的數(shù)據(jù)都存放在相應(yīng)的索引中,而不存在數(shù)據(jù)的實(shí)體,在很大程度上節(jié)省了磁盤占用空間,同時(shí),由于數(shù)據(jù)完全散列的存放,使得用戶可以方便的在表單的任何域上做查詢操作而不影響查詢效率。但由于所有的表單操作都是在一個(gè)數(shù)據(jù)文件中進(jìn)行,使得對(duì)這種表單的數(shù)據(jù)并發(fā)性操作受到了一定程度的影響。
可見(jiàn),全散列技術(shù)由于并發(fā)性受到了影響而并不適用于具有相對(duì)較大的磁盤空間,要求對(duì)數(shù)據(jù)具有相當(dāng)大的并發(fā)操作能力,又同時(shí)希望有足夠的索引以提高數(shù)據(jù)查找速度的嵌入式系統(tǒng)。目前對(duì)于這類嵌入式系統(tǒng)還沒(méi)有較好的數(shù)據(jù)存儲(chǔ)和查找的方法來(lái)解決并發(fā)性和提高數(shù)據(jù)查找速度的問(wèn)題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,具有相當(dāng)大的并發(fā)操作能力,同時(shí)又能夠提高嵌入式系統(tǒng)數(shù)據(jù)查找的速度和效率。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法包括
數(shù)據(jù)存放過(guò)程,其包括建立表單,將記錄存放在數(shù)據(jù)文件中;和為表單中用戶所指定的一個(gè)或多個(gè)域建立一個(gè)或多個(gè)域索引文件,將索引信息寫入域索引文件,并將表單的數(shù)據(jù)文件和域索引文件進(jìn)行綁定;如果用戶沒(méi)有指定域則建立簡(jiǎn)單索引文件,將索引信息寫入簡(jiǎn)單索引文件;數(shù)據(jù)查找過(guò)程,其通過(guò)在域索引文件中查找數(shù)據(jù)的索引信息,或沒(méi)有域索引文件時(shí)在簡(jiǎn)單索引文件中查找數(shù)據(jù)的索引信息來(lái)進(jìn)行數(shù)據(jù)查找。
該方法中,寫入域索引文件的索引信息可以包含每條記錄在該域的內(nèi)容、記錄在數(shù)據(jù)文件中的具體位置和該記錄的大??;寫入簡(jiǎn)單索引文件的索引信息可以包含每條記錄在數(shù)據(jù)文件中的具體位置和該記錄的大小。
該方法步驟2)所述的建立域索引文件的過(guò)程可以為對(duì)用戶所指定的各個(gè)域的數(shù)據(jù)分別通過(guò)哈希運(yùn)算得到哈希結(jié)果值,將哈希結(jié)果值填入索引文件中的哈希表,根據(jù)哈希表將索引信息填入索引文件中的B+樹(shù)。步驟3)所述的在域索引文件中查找數(shù)據(jù)的索引信息的過(guò)程可以為根據(jù)欲查找數(shù)據(jù)的一個(gè)或多個(gè)域比較條件,先進(jìn)行哈希運(yùn)算得到各個(gè)條件的哈希值,再根據(jù)各個(gè)域索引文件中的哈希表,到各個(gè)域索引文件中的B+樹(shù)中查找各個(gè)域的索引信息。
步驟2)所述的將表單的數(shù)據(jù)文件和域索引文件進(jìn)行綁定的方法可以為將該表單的數(shù)據(jù)文件和域索引文件存放在同一目錄中。
步驟3)所述的在簡(jiǎn)單索引文件中查找數(shù)據(jù)的索引信息的可以過(guò)程為遍歷簡(jiǎn)單索引文件查找該條記錄的索引信息。
該方法可以進(jìn)一步包括如果表單建立了域索引文件,則將簡(jiǎn)單索引文件刪除。
該方法還可以進(jìn)一步包括,刪除記錄的過(guò)程為從域索引文件或簡(jiǎn)單索引文件中查找到該記錄的索引信息并標(biāo)記刪除。域索引文件中標(biāo)記刪除的索引信息,可以在添加新記錄時(shí),用新記錄的索引信息代替。簡(jiǎn)單索引文件中標(biāo)記刪除的索引信息,用不能重用標(biāo)記代替。
該方法還可以進(jìn)一步包括在刪除域的索引時(shí),先判斷該域所在的表單是否還有其他的域索引文件,如果有則直接刪除該域的域索引文件;如果沒(méi)有則建立簡(jiǎn)單索引文件,根據(jù)該域的域索引文件遍歷整個(gè)表單,將索引信息寫入簡(jiǎn)單索引文件,再刪除該域的域索引文件。
該方法還可以進(jìn)一步包括在對(duì)表單的結(jié)構(gòu)進(jìn)行修改時(shí),建立一個(gè)與修改后的表單結(jié)構(gòu)相同的臨時(shí)表單,遍歷整個(gè)原表單,將原表單的所有記錄插入臨時(shí)表單,再將原表單用臨時(shí)表單替換。
因此,本發(fā)明的這種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,具有相當(dāng)大的并發(fā)操作能力,同時(shí)又能夠提高嵌入式系統(tǒng)數(shù)據(jù)查找的速度和效率。本發(fā)明是一種以索引文件為基本單位的數(shù)據(jù)多索引技術(shù),它使得嵌入式數(shù)據(jù)庫(kù)實(shí)現(xiàn)了數(shù)據(jù)多索引交叉查找數(shù)據(jù)技術(shù),優(yōu)化提高了嵌入式數(shù)據(jù)庫(kù)數(shù)據(jù)查找速度及效率,減少了因數(shù)據(jù)查找而帶來(lái)的CPU計(jì)算負(fù)擔(dān)和內(nèi)存負(fù)擔(dān),提高了嵌入式數(shù)據(jù)庫(kù)在嵌入式設(shè)備的適用性。
圖1為本發(fā)明方案一個(gè)較佳實(shí)施例的建立第一個(gè)域索引文件的過(guò)程示意圖;圖2為圖1所示實(shí)施例中建立另一個(gè)域索引文件的過(guò)程示意圖;圖3為圖1所示實(shí)施例的表單索引結(jié)構(gòu)示意圖;圖4為圖1所示實(shí)施例進(jìn)行數(shù)據(jù)查找并刪除的過(guò)程示意圖;圖5為圖1所示實(shí)施例進(jìn)行添加記錄的過(guò)程示意圖;圖6為圖1所示實(shí)施例進(jìn)行添加域的過(guò)程示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
本發(fā)明是為了適應(yīng)具有相對(duì)較大的磁盤空間,要求對(duì)數(shù)據(jù)具有相當(dāng)大的并發(fā)操作能力,又同時(shí)希望有足夠的索引以提高數(shù)據(jù)查找速度的嵌入式系統(tǒng),發(fā)明的一種多索引技術(shù)。多索引技術(shù)的基本方法是將記錄的數(shù)據(jù)和索引分開(kāi)在不同的文件中進(jìn)行存儲(chǔ),用戶可以靈活的指定想要建立索引的域,即一個(gè)表單由一個(gè)數(shù)據(jù)文件和若干個(gè)索引文件組成,由于數(shù)據(jù)實(shí)體和索引文件分開(kāi),使得一條記錄的某些數(shù)據(jù)在數(shù)據(jù)文件和索引文件中重復(fù)出現(xiàn),雖然加大了數(shù)據(jù)的存儲(chǔ)冗余量,但提高了數(shù)據(jù)的查詢效率。又由于數(shù)據(jù)和索引存放在不同的文件中,從而減少了并發(fā)操作時(shí)的沖突,提高了并發(fā)操作數(shù)據(jù)庫(kù)的效率。
本發(fā)明的實(shí)施方法包括以下步驟第一步建立表單,將記錄以二進(jìn)制形式存放在數(shù)據(jù)文件中。嵌入式數(shù)據(jù)庫(kù)中的數(shù)據(jù)一般都采用二進(jìn)制進(jìn)行存儲(chǔ),這樣保證了嵌入式數(shù)據(jù)庫(kù)的平臺(tái)無(wú)關(guān)性,同時(shí)有利于提高查找速度。
第二步為表單中用戶所指定的一個(gè)或多個(gè)域建立一個(gè)或多個(gè)域索引文件,將索引信息寫入域索引文件,并將表單的數(shù)據(jù)文件和域索引文件進(jìn)行綁定;如果用戶沒(méi)有指定域則建立簡(jiǎn)單索引文件,將索引信息寫入簡(jiǎn)單索引文件。
在用戶剛建立表單并在這個(gè)表單中建立了幾個(gè)域時(shí),因?yàn)椴](méi)有建立任何索引,所以系統(tǒng)自動(dòng)在這個(gè)表單中建立一個(gè)缺省的不依賴于任何域的簡(jiǎn)單索引文件。因?yàn)閿?shù)據(jù)文件中的記錄是以二進(jìn)制存放,所以用一個(gè)索引對(duì)數(shù)據(jù)文件中的記錄加以區(qū)分。
此時(shí),用戶可以指定域建立域索引文件,參見(jiàn)圖1,本發(fā)明方案一個(gè)較佳實(shí)施例的建立第一個(gè)域索引文件的過(guò)程示意圖。
表單在沒(méi)有建立域索引文件時(shí),系統(tǒng)自動(dòng)建立簡(jiǎn)單索引文件。如圖1所示,簡(jiǎn)單索引文件101中包含了每條記錄的索引信息及被刪除的索引信息等所有索引信息102;如果用戶想在一個(gè)沒(méi)有索引的表單的域1上建立索引,則執(zhí)行步驟103,嵌入式數(shù)據(jù)庫(kù)根據(jù)簡(jiǎn)單索引文件中的索引信息遍歷整個(gè)表單,取出所有的記錄,再通過(guò)哈希運(yùn)算得到哈希結(jié)果值,將哈希結(jié)果值填入域索引文件中的哈希表,根據(jù)哈希表將索引信息填入索引文件中的B+樹(shù),即將每條記錄在域1的索引數(shù)據(jù)連同索引信息一起寫入索引文件,這樣完成步驟104,建立了域1的域索引文件。然后,將域1的域索引文件存放在該表單數(shù)據(jù)文件所在的目錄中。最后,刪除已經(jīng)不再有用的簡(jiǎn)單索引文件,因?yàn)榍度胧綌?shù)據(jù)庫(kù)不再維護(hù)這個(gè)簡(jiǎn)單索引文件。簡(jiǎn)單索引是當(dāng)一個(gè)表單用戶沒(méi)有顯式的建立索引時(shí)建立起來(lái)的索引,他不與任何域進(jìn)行捆綁,同時(shí),它的存在與一般索引文件的存在是互斥的,如果用戶在表單某一個(gè)域上建立了索引,則這個(gè)簡(jiǎn)單索引將被刪除,如果這個(gè)表單不存在任何索引,則系統(tǒng)會(huì)自動(dòng)建立簡(jiǎn)單索引文件。
表一為簡(jiǎn)單索引文件內(nèi)容表。如表一所示,簡(jiǎn)單索引文件僅僅包含這個(gè)表單中所有記錄在數(shù)據(jù)文件的具體位置以及大小的信息,新的記錄插入表單時(shí),它在數(shù)據(jù)文件中的具體位置信息和數(shù)據(jù)大小被寫入簡(jiǎn)單索引文件的末尾,一條記錄被刪除后,為保證記錄插入表單的時(shí)序性,這條記錄在簡(jiǎn)單索引文件中所占用的空間將被不能重用標(biāo)記-1代替而不能重用。
表一域索引文件中的索引數(shù)據(jù)是指哈希值、索引信息在B+樹(shù)中的位置等,域索引文件中的索引信息則包含每條記錄在該域的內(nèi)容、記錄在數(shù)據(jù)文件中的具體位置和該記錄的大小。
用戶還可以指定其他多個(gè)域建立域索引文件,參見(jiàn)圖2,圖2為圖1所示實(shí)施例中建立另一個(gè)域索引文件的過(guò)程示意圖。如圖2所示,表單已經(jīng)在域1上存在索引,若用戶要在域3上創(chuàng)建新的索引,則執(zhí)行步驟201,數(shù)據(jù)庫(kù)遍歷已存在的域1的域索引文件,然后執(zhí)行步驟202,通過(guò)哈希運(yùn)算得到新的索引數(shù)據(jù)連同索引信息一起填充到域3的索引文件中,這樣完成步驟203,建立了域3的域索引文件。然后,將域3的域索引文件存放在該表單數(shù)據(jù)文件所在的目錄中。如果用戶還需要為其他域建立索引文件,方法同上。
本實(shí)施例為表單建立了3個(gè)域索引文件,其索引結(jié)構(gòu)參見(jiàn)圖3,圖3為圖1所示實(shí)施例的表單索引結(jié)構(gòu)示意圖。如圖3所示,該表單包含5個(gè)域域1-域5,其中域1建立了域索引文件301、域3建立了域索引文件302、域5建立了域索引文件303,域2、域4沒(méi)有索引。域索引文件301、302和303是根據(jù)各個(gè)域的數(shù)據(jù)信息建立的,其包含各個(gè)域通過(guò)哈希算法計(jì)算得到的索引數(shù)據(jù)和與該域的數(shù)據(jù)一一對(duì)應(yīng)的索引信息。
第三步表單建立了索引結(jié)構(gòu)后就可以通過(guò)在域索引文件中查找數(shù)據(jù)的索引信息,或沒(méi)有域索引文件時(shí)在簡(jiǎn)單索引文件中查找數(shù)據(jù)的索引信息來(lái)進(jìn)行數(shù)據(jù)查找。在有域索引文件,對(duì)記錄進(jìn)行查找時(shí),本發(fā)明的多索引記錄存儲(chǔ)方式使得用戶可以進(jìn)行選擇查找,即用戶只需指定某些域的比較條件對(duì)滿足這些比較條件的記錄進(jìn)行查找。參見(jiàn)圖4,圖4為圖1所示實(shí)施例進(jìn)行數(shù)據(jù)查找并刪除的過(guò)程示意圖。如圖4所示,如用戶希望刪除域1符合條件1,域2符合條件2,域3符合條件3的某些記錄。如圖中1、2所示用戶在域1和域3上都建立了索引,因此首先執(zhí)行步驟401和402數(shù)據(jù)庫(kù)根據(jù)域1和域3的索引,通過(guò)計(jì)算條件1和條件3的哈希值,根據(jù)哈希表找出同時(shí)滿足這兩個(gè)條件的記錄鏈3;再執(zhí)行步驟403在這個(gè)記錄鏈中進(jìn)行查找,找出滿足域2符合條件2的這些記錄;對(duì)于滿足3個(gè)條件的記錄4,執(zhí)行步驟404將這些記錄在所有索引文件中進(jìn)行標(biāo)識(shí),標(biāo)識(shí)它們已被刪除,這樣就完成了用戶提交的記錄條件刪除命令;如圖中5、6、7所示被標(biāo)記刪除的各域的索引信息包含該記錄在該域的數(shù)據(jù)內(nèi)容、記錄所在數(shù)據(jù)文件的具體位置數(shù)據(jù)長(zhǎng)度等。
本發(fā)明并不將索引信息和數(shù)據(jù)文件的實(shí)際內(nèi)容刪除,這是因?yàn)閷?duì)記錄的查詢等所有操作都是首先查找索引進(jìn)行的,而在索引中不存在該記錄的索引信息,就無(wú)法找到該記錄,就好像這條記錄根本不存在一樣,達(dá)到了和刪除記錄同樣的效果。由于不需要?jiǎng)h除整條記錄,提高了刪除記錄的效率,而且這種方法不必釋放這條記錄所占用的磁盤空間,這些磁盤空間還可以在增加新記錄時(shí)被重新利用而不會(huì)廢置,不會(huì)浪費(fèi)磁盤空間。同時(shí),這樣還保證了在需要撤消刪除操作時(shí),數(shù)據(jù)仍然保留,不會(huì)造成數(shù)據(jù)丟失。
在簡(jiǎn)單索引文件中查找數(shù)據(jù)的索引信息來(lái)進(jìn)行數(shù)據(jù)查找的方法很簡(jiǎn)單,只需遍歷整個(gè)表單查找該條記錄的索引信息,根據(jù)索引信息提供的記錄在數(shù)據(jù)文件中的位置和記錄的大小,就可以在數(shù)據(jù)文件中查找到該記錄。
當(dāng)有新的記錄寫入表單時(shí),如果沒(méi)有建立域索引文件只需將新記錄寫入數(shù)據(jù)文件的末尾,并將數(shù)據(jù)文件中的具體位置信息的數(shù)據(jù)大小寫入簡(jiǎn)單索引文件的末尾即可。如果表單已建立域索引文件,其寫入過(guò)程參見(jiàn)圖5,圖5為圖1所示實(shí)施例進(jìn)行添加記錄的過(guò)程示意圖。如圖5所示,首先執(zhí)行步驟501,數(shù)據(jù)庫(kù)遍歷已建立的域索引文件,接著執(zhí)行步驟502,判斷是否有標(biāo)記刪除的信息,如果沒(méi)有標(biāo)記刪除的索引信息,則進(jìn)入步驟505,將新記錄寫入數(shù)據(jù)文件末尾并通過(guò)哈希運(yùn)算得到哈希結(jié)果值,到索引文件中的哈希表中查找哈希結(jié)果值,根據(jù)哈希表將索引信息添加到B+樹(shù)中;如果有標(biāo)記刪除的索引信息,則執(zhí)行步驟503,將新記錄的索引信息與被標(biāo)記刪除的索引信息進(jìn)行比較;如果新記錄的索引信息與被標(biāo)記刪除的索引信息中數(shù)據(jù)的大小相同,則執(zhí)行步驟504,通過(guò)哈希運(yùn)算得到新記錄的哈希結(jié)果值,將哈希結(jié)果值到索引文件中的哈希表中查找,根據(jù)哈希表將索引信息添加到B+樹(shù)中,并將新記錄的索引信息代替標(biāo)記刪除的索引信息,取消刪除標(biāo)記,同時(shí)按索引信息中該記錄在數(shù)據(jù)文件中的地址,將新記錄的數(shù)據(jù)寫入到數(shù)據(jù)文件中。如果新記錄的索引信息與被標(biāo)記刪除的索引信息中數(shù)據(jù)的大小不同,則執(zhí)行步驟505。
在表單的結(jié)構(gòu)進(jìn)行修改時(shí),如建立/刪除/修改域時(shí),將會(huì)影響到整個(gè)表單的所有記錄在數(shù)據(jù)文件中的位置等信息,為保證每個(gè)索引文件都能正確的反映出表單記錄的索引信息,數(shù)據(jù)庫(kù)建立一個(gè)臨時(shí)的表單,這個(gè)臨時(shí)表單的結(jié)構(gòu)形式與建立/刪除/修改域后這個(gè)表的結(jié)構(gòu)相同。例如,用戶在本實(shí)施例的這個(gè)表單中建立一個(gè)新域——域6,參見(jiàn)圖6,圖6為圖1所示實(shí)施例進(jìn)行添加域的過(guò)程示意圖。如圖6所示,首先步驟601,建立一個(gè)包含域6的臨時(shí)表單;然后執(zhí)行步驟602,遍歷整個(gè)表單,將原表單中所有記錄插入臨時(shí)表單,由于插入記錄時(shí)這些記錄在臨時(shí)表單中的索引信息會(huì)與記錄保持一致,因此達(dá)到了修改表單結(jié)構(gòu)的目的,同時(shí)又不會(huì)因?yàn)椴僮鬟^(guò)程中的錯(cuò)誤而影響到原表單的數(shù)據(jù),最后,執(zhí)行步驟603,將原表單用臨時(shí)表單替換,完成表單結(jié)構(gòu)修改操作。
圖6中還示出了臨時(shí)表單的結(jié)構(gòu),其不僅包含了原表單的5個(gè)域及其域1、3、5的索引信息,還包含了新建的域6。
由此可見(jiàn),本發(fā)明的這種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,具有相當(dāng)大的并發(fā)操作能力,同時(shí)又能夠提高嵌入式系統(tǒng)數(shù)據(jù)查找的速度和效率。是一種以索引文件為基本單位的數(shù)據(jù)多索引技術(shù),它使得嵌入式數(shù)據(jù)庫(kù)實(shí)現(xiàn)了數(shù)據(jù)多索引交叉查找數(shù)據(jù)技術(shù),優(yōu)化提高了嵌入式數(shù)據(jù)庫(kù)數(shù)據(jù)查找速度及效率,減少了因數(shù)據(jù)查找而帶來(lái)的CPU計(jì)算負(fù)擔(dān)和內(nèi)存負(fù)擔(dān),提高了嵌入式數(shù)據(jù)庫(kù)在嵌入式設(shè)備的適用性。同時(shí),由于這種方法的平臺(tái)無(wú)關(guān)性和語(yǔ)言無(wú)關(guān)性,可以方便地移植到各種嵌入式平臺(tái)和應(yīng)用程序中,有著廣泛的應(yīng)用前景。
權(quán)利要求
1.一種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法包括數(shù)據(jù)存放過(guò)程,其包括建立表單,將記錄存放在數(shù)據(jù)文件中;和為表單中用戶所指定的一個(gè)或多個(gè)域建立一個(gè)或多個(gè)域索引文件,將索引信息寫入域索引文件,并將表單的數(shù)據(jù)文件和域索引文件進(jìn)行綁定;如果用戶沒(méi)有指定域則建立簡(jiǎn)單索引文件,將索引信息寫入簡(jiǎn)單索引文件;數(shù)據(jù)查找過(guò)程,其通過(guò)在域索引文件中查找數(shù)據(jù)的索引信息,或沒(méi)有域索引文件時(shí)在簡(jiǎn)單索引文件中查找數(shù)據(jù)的索引信息來(lái)進(jìn)行數(shù)據(jù)查找。
2.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于寫入域索引文件的索引信息包含每條記錄在該域的內(nèi)容、記錄在數(shù)據(jù)文件中的具體位置和該記錄的大小。
3.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于寫入簡(jiǎn)單索引文件的索引信息包含每條記錄在數(shù)據(jù)文件中的具體位置和該記錄的大小。
4.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,步驟2)所述的建立域索引文件的過(guò)程為對(duì)用戶所指定的各個(gè)域的數(shù)據(jù)分別通過(guò)哈希運(yùn)算得到哈希結(jié)果值,將哈希結(jié)果值填入索引文件中的哈希表,根據(jù)哈希表將索引信息填入索引文件中的B+樹(shù);步驟3)所述的在域索引文件中查找數(shù)據(jù)的索引信息的過(guò)程為根據(jù)欲查找數(shù)據(jù)的一個(gè)或多個(gè)域比較條件,先進(jìn)行哈希運(yùn)算得到各個(gè)比較條件的哈希值,再根據(jù)各個(gè)域索引文件中的哈希表,到各個(gè)域索引文件中的B+樹(shù)中查找各個(gè)域的索引信息。
5.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,步驟2)所述的將表單的數(shù)據(jù)文件和域索引文件進(jìn)行綁定的方法為將該表單的數(shù)據(jù)文件和域索引文件存放在同一目錄中。
6.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,步驟3)所述的在簡(jiǎn)單索引文件中查找數(shù)據(jù)的索引信息的過(guò)程為遍歷簡(jiǎn)單索引文件查找該條記錄的索引信息。
7.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法進(jìn)一步包括如果表單建立了域索引文件,則將簡(jiǎn)單索引文件刪除。
8.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法進(jìn)一步包括,刪除記錄的過(guò)程為從域索引文件或簡(jiǎn)單索引文件中查找到該記錄的索引信息并標(biāo)記刪除。
9.如權(quán)利要求8所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法進(jìn)一步包括域索引文件中標(biāo)記刪除的索引信息,在添加新記錄時(shí),用新記錄的索引信息代替標(biāo)記刪除的索引信息。
10.如權(quán)利要求8所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法進(jìn)一步包括簡(jiǎn)單索引文件中標(biāo)記刪除的索引信息,用不能重用標(biāo)記代替。
11.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法進(jìn)一步包括在刪除域的索引時(shí),先判斷該域所在的表單是否還有其他的域索引文件,如果有則直接刪除該域的域索引文件;如果沒(méi)有則建立簡(jiǎn)單索引文件,根據(jù)該域的域索引文件遍歷整個(gè)表單,將索引信息寫入簡(jiǎn)單索引文件,再刪除該域的域索引文件。
12.如權(quán)利要求1所述的嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,其特征在于,該方法進(jìn)一步包括在對(duì)表單的結(jié)構(gòu)進(jìn)行修改時(shí),建立一個(gè)與修改后的表單結(jié)構(gòu)相同的臨時(shí)表單,遍歷整個(gè)原表單,將原表單的所有記錄插入臨時(shí)表單,再將原表單用臨時(shí)表單替換。
全文摘要
本發(fā)明公開(kāi)了一種嵌入式系統(tǒng)的數(shù)據(jù)存放及其查找方法,數(shù)據(jù)存放過(guò)程包括建立表單,將記錄存放在數(shù)據(jù)文件中;和為表單中用戶所指定的一個(gè)或多個(gè)域建立一個(gè)或多個(gè)域索引文件,將索引信息寫入域索引文件,并將表單的數(shù)據(jù)文件和域索引文件進(jìn)行綁定;如果用戶沒(méi)有指定域則建立簡(jiǎn)單索引文件,將索引信息寫入簡(jiǎn)單索引文件;查找過(guò)程為通過(guò)在域索引文件中查找數(shù)據(jù)的索引信息,或沒(méi)有域索引文件時(shí)在簡(jiǎn)單索引文件中查找數(shù)據(jù)的索引信息來(lái)進(jìn)行數(shù)據(jù)查找。本發(fā)明方法具有相當(dāng)大的并發(fā)操作能力,能夠提高嵌入式系統(tǒng)數(shù)據(jù)查找的速度和效率,且具有平臺(tái)無(wú)關(guān)性和語(yǔ)言無(wú)關(guān)性,可以方便地移植到各種嵌入式平臺(tái)和應(yīng)用程序中,有著廣泛的應(yīng)用前景。
文檔編號(hào)G06F17/30GK1492363SQ02145960
公開(kāi)日2004年4月28日 申請(qǐng)日期2002年10月25日 優(yōu)先權(quán)日2002年10月25日
發(fā)明者丁剛, 楊柏梁, 孫雅莎, 丁 剛 申請(qǐng)人:聯(lián)想(北京)有限公司