專利名稱:在數(shù)據(jù)模型中查找參數(shù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫管理方法,尤其是關(guān)于一種在數(shù)據(jù)模型中查找參數(shù)的方法。
背景技術(shù):
TR-069全稱為“CPE廣域網(wǎng)管理協(xié)議”,其規(guī)定了家庭網(wǎng)關(guān)進(jìn)行遠(yuǎn)程管理配置時(shí)的通用框架和協(xié)議。TR-098定義了通過TR-069管理的所有網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)模型(data model)0TR-098定義的一個(gè)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)模型包括各種類型的數(shù)據(jù)對(duì)象(data object) 及配置參數(shù)(configuration parameters)。在TR-098中,所有的數(shù)據(jù)對(duì)象及配置參數(shù)都是以目錄樹(directory tree)的形式分等級(jí)命名的(例如A. D. F. L),每一等級(jí)由字符串 (string)組成。每個(gè)數(shù)據(jù)模型的根節(jié)點(diǎn)(root node)只有一個(gè),而數(shù)據(jù)對(duì)象可以看做是數(shù)據(jù)模型中的一個(gè)群組,每個(gè)數(shù)據(jù)對(duì)象又可以包含其它數(shù)據(jù)對(duì)象或配置參數(shù)。配置參數(shù)必定是目錄樹中最末端的葉子節(jié)點(diǎn),用戶根據(jù)每個(gè)配置參數(shù)的數(shù)據(jù)路徑可以找到其相對(duì)應(yīng)的訪問函數(shù) (access function)0目前,在網(wǎng)絡(luò)服務(wù)器中查找配置參數(shù)的方法是接收用戶輸入的字符串,以字符串中的字符為關(guān)鍵字并依據(jù)出現(xiàn)的先后順序在網(wǎng)絡(luò)服務(wù)器中查找匹配的配置參數(shù)。由于數(shù)據(jù)模型中的許多配置參數(shù)的名稱中包括相同的字符,當(dāng)查找的配置參數(shù)的名稱較長(zhǎng)時(shí),這種查找方法較為費(fèi)時(shí)。
發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提出一種在數(shù)據(jù)模型中查找參數(shù)的方法,可以節(jié)省查找時(shí)間,提高查找效率。—種在數(shù)據(jù)模型中查找參數(shù)的方法,該方法包括以下步驟提供第一哈希表,用于儲(chǔ)存數(shù)據(jù)模型中所有葉子節(jié)點(diǎn)處的配置參數(shù)名稱的索引值;提供第二哈希表,用于儲(chǔ)存數(shù)據(jù)模型中重復(fù)配置參數(shù)的完整數(shù)據(jù)路徑的索引值;接收用戶輸入的字符串并讀取字符串中最后一個(gè)字符;在第一哈希表中查找與該最后一個(gè)字符對(duì)應(yīng)的索引值;及若在第一哈希表中查找到該字符有不重復(fù)的索引值,則將所述字符串中的余下字符依出現(xiàn)順序自后向前與數(shù)據(jù)模型中對(duì)應(yīng)的葉子節(jié)點(diǎn)的父節(jié)點(diǎn)自下向上逐級(jí)進(jìn)行比較,以查找與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑,或者,若在第一哈希表中查找到該字符有重復(fù)的索引值,則在第二哈希表中查找所述字符串對(duì)應(yīng)的索引值,根據(jù)該第二哈希表中該字符串對(duì)應(yīng)的索引值查找與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑。
相較于現(xiàn)有技術(shù),本發(fā)明提供的在數(shù)據(jù)模型中查找參數(shù)的方法,根據(jù)葉子節(jié)點(diǎn)查找父節(jié)點(diǎn)的方式在數(shù)據(jù)模型中查找與用戶輸入的字符串匹配的配置參數(shù)的完整數(shù)據(jù)路徑。 對(duì)于重復(fù)的配置參數(shù),則根據(jù)其不同的數(shù)據(jù)路徑進(jìn)行查找。由于每個(gè)葉子節(jié)點(diǎn)的每一級(jí)父節(jié)點(diǎn)都是唯一的,故該方法可以有效減少查找時(shí)間,提高查找效率。
圖1是本發(fā)明在數(shù)據(jù)模型中查找參數(shù)的方法較佳實(shí)施例的流程圖。圖2是一個(gè)數(shù)據(jù)模型的樹狀結(jié)構(gòu)圖。圖3是第一哈希表的示意圖。圖4是第二哈希表的示意圖。圖5是在第一哈希表中查找配置參數(shù)的結(jié)果示意圖。圖6是在第二哈希表中查找重復(fù)配置參數(shù)的完整數(shù)據(jù)路徑的結(jié)果示意圖。
具體實(shí)施例方式參閱圖1所示,是本發(fā)明在數(shù)據(jù)模型中查找參數(shù)的方法較佳實(shí)施例的流程圖。該方法可以應(yīng)用在類似于TR-98的數(shù)據(jù)模型中。步驟S101,提供第一哈希表,用于儲(chǔ)存數(shù)據(jù)模型中所有葉子節(jié)點(diǎn)處的配置參數(shù)名稱的索引值。該第一哈希表儲(chǔ)存在存儲(chǔ)裝置,例如內(nèi)存或外部存儲(chǔ)器。在該第一哈希表中, 代表配置參數(shù)名稱的字符為關(guān)鍵字,每個(gè)關(guān)鍵字映射到一個(gè)索引值,每個(gè)索引值映射到一個(gè)數(shù)據(jù)路徑記錄。在TR-098數(shù)據(jù)模型中,數(shù)據(jù)路徑由字符和數(shù)字構(gòu)成。參閱圖2所示,是一個(gè)參數(shù)模型(data model)的樹狀結(jié)構(gòu)圖。其中,圓形代表該參數(shù)模型中的數(shù)據(jù)對(duì)象(data object),方形代表該參數(shù)模型中的配置參數(shù)(configuration parameter),三角形代表名稱相同的數(shù)據(jù)對(duì)象的編號(hào)(instance)。在數(shù)據(jù)模型中,具有唯一性的數(shù)據(jù)對(duì)象稱作靜態(tài)對(duì)象(static object),同一數(shù)據(jù)路徑下具有不同編號(hào)相同名稱的數(shù)據(jù)對(duì)象是根據(jù)用戶需要?jiǎng)討B(tài)產(chǎn)生的,故稱做動(dòng)態(tài)對(duì)象(dynamicobject)。相應(yīng)地,靜態(tài)對(duì)象的配置參數(shù)稱作靜態(tài)參數(shù)(staticparameter),動(dòng)態(tài)對(duì)象的配置參數(shù)稱作動(dòng)態(tài)參數(shù) (dynamic object) 0例如,在圖2所示的數(shù)據(jù)模型中,配置參數(shù)包括B,G,I,J,K,M,N,0,其中靜態(tài)參數(shù)包括B,G,I,J,K,動(dòng)態(tài)參數(shù)包括M,N, 0,重復(fù)的參數(shù)包括G,K,M ;數(shù)據(jù)對(duì)象包括 A,C,D,E,H,F(xiàn),L,靜態(tài)對(duì)象包括A,C,D,E,F(xiàn),動(dòng)態(tài)對(duì)象包括H,L,重復(fù)的對(duì)象包括F,H。參閱圖3所示,是對(duì)圖2中所示參數(shù)模型的所有葉子節(jié)點(diǎn)處的配置參數(shù)構(gòu)建的第一哈希表的示意圖。步驟S103,提供第二哈希表,用于儲(chǔ)存數(shù)據(jù)模型中重復(fù)配置參數(shù)的完整數(shù)據(jù)路徑的索引值。該第二哈希表儲(chǔ)存在存儲(chǔ)裝置。在該第二哈希表中,代表配置參數(shù)完整數(shù)據(jù)路徑的字符串為關(guān)鍵字,每個(gè)關(guān)鍵字映射到一個(gè)索引值,每個(gè)索引值映射到一個(gè)數(shù)據(jù)路徑記錄。由于參數(shù)模型中存在重復(fù)的配置參數(shù),所以在第一哈希表中存在相同的索引值。 例如圖2中所示的數(shù)據(jù)模型包括重復(fù)的參數(shù)G,K,M,則在圖3所示的第一哈希表中存在重復(fù)的索引值2,5,6。故當(dāng)用戶輸入這些重復(fù)的參數(shù)時(shí),無法從第一哈希表查找到唯一的索引值,進(jìn)而無法從存儲(chǔ)裝置中找到唯一的數(shù)據(jù)路徑記錄。然而,這些重復(fù)參數(shù)在數(shù)據(jù)模型中的數(shù)據(jù)路徑是不相同的,例如,重復(fù)參數(shù)G在圖2所示的數(shù)據(jù)模型中有兩個(gè)不同的數(shù)據(jù)路徑A. C. G及A. D. G,重復(fù)參數(shù)K有兩個(gè)不同的數(shù)據(jù)路徑A. C. F. K及A. D. F. K。參閱圖3所示,是對(duì)圖2中所示數(shù)據(jù)模型的重復(fù)配置參數(shù)的完整數(shù)據(jù)路徑構(gòu)建的第二哈希表的示意圖。步驟S105,接收用戶輸入的字符串并讀取字符串中最后一個(gè)字符。例如,用戶輸入字符串“A. D. F. J”,則讀取最后一個(gè)字符J ;若用戶輸入字符串“A. C. G”,則讀取最后一個(gè)字符G。步驟S107,在第一哈希表中查找與該最后一個(gè)字符對(duì)應(yīng)的索引值。步驟S109,判斷是否在第一哈希表中查找到與該最后一個(gè)字符對(duì)應(yīng)的索引值。如果未在第一哈希表中查找到與該最后一個(gè)字符對(duì)應(yīng)的索引值,則提示用戶輸入錯(cuò)誤,流程結(jié)束。若在第一哈希表中查找到與該最后一個(gè)字符對(duì)應(yīng)的索引值,則進(jìn)入步驟sill。步驟S111,判斷是否在第一哈希表中查找到重復(fù)的索引值。如果未在第一哈希表中查找到重復(fù)的索引值,例如字符J在第一哈希表中有唯一的索引值4,則流程進(jìn)入步驟 S113。步驟S113,將字符串中的余下字符依出現(xiàn)順序自后向前與第一哈希表中該索引值對(duì)應(yīng)的數(shù)據(jù)模型中的葉子節(jié)點(diǎn)的父節(jié)點(diǎn)逐級(jí)進(jìn)行比較。例如,將字符串中“A. D. F. J”的余下字符A,D,F(xiàn)按照自后向前的順序F,D,A與圖2所示的數(shù)據(jù)模型中葉子節(jié)點(diǎn)J自下向上的父節(jié)點(diǎn)F,D,A分別進(jìn)行比較。步驟S115,判斷該字符串中的余下字符自后向前是否分別與該葉子節(jié)點(diǎn)自下向上的父節(jié)點(diǎn)一一匹配。若不一一匹配,則提示用戶輸入錯(cuò)誤,流程結(jié)束。若一一匹配,則進(jìn)入步驟S117,判斷查找到與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑。如圖5 所示,所有非重復(fù)的配置參數(shù),例如B,I,J,N, 0,可以根據(jù)其在第一哈希表中的唯一索引值找到唯一的數(shù)據(jù)路徑記錄。例如,配置參數(shù)J在第一哈希表中的索引值4指向數(shù)據(jù)路徑記錄 “Mo_A_D_F_J_Ptr,,。如果在步驟Slll中,判斷在第一哈希表中查找到重復(fù)的索引值,則流程進(jìn)入步驟 S119。如圖5所示,重復(fù)的配置參數(shù),例如G,K,M,由于其在第一哈希表中有重復(fù)的索引值, 故根據(jù)該重復(fù)的索引值無法找到唯一的數(shù)據(jù)路徑記錄。例如,重復(fù)配置參數(shù)G在第一哈希表中的索引值2指向的數(shù)據(jù)路徑記錄為“NULL”。步驟S119,在第二哈希表中查找該字符串對(duì)應(yīng)的索引值。步驟S121,判斷是否從第二哈希表中查找該字符串對(duì)應(yīng)的索引值。如果未從第二哈希表中查找該字符串對(duì)應(yīng)的索引值,則提示用戶輸入錯(cuò)誤,流程結(jié)束。如果從第二哈希表中查找該字符串對(duì)應(yīng)的索引值,則進(jìn)入步驟S117,根據(jù)第二哈希表中該字符串對(duì)應(yīng)的索引值查找到與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑。如圖6所示,表示重復(fù)配置參數(shù)的完整數(shù)據(jù)路徑的字符串可以根據(jù)其在第二哈希表中的索引值找到唯一的數(shù)據(jù)路徑記錄。例如字符串“A. C. G”在第二哈希表中的索引值1指向數(shù)據(jù)路徑記錄Mo_A_C_ G_Ptr。由于在TR-98的數(shù)據(jù)模型中,所有的元素,例如數(shù)據(jù)對(duì)象、配置參數(shù)都是已知的、 固定的,所以本實(shí)施例給出的在數(shù)據(jù)模型中查找參數(shù)的方法可以應(yīng)用在數(shù)據(jù)模型的編譯階段,從而優(yōu)化后續(xù)的查找功能。
權(quán)利要求
1.一種在數(shù)據(jù)模型中查找參數(shù)的方法,其特征在于,該方法包括提供第一哈希表,用于儲(chǔ)存數(shù)據(jù)模型中所有葉子節(jié)點(diǎn)處的配置參數(shù)名稱的索引值;提供第二哈希表,用于儲(chǔ)存數(shù)據(jù)模型中重復(fù)配置參數(shù)的完整數(shù)據(jù)路徑的索引值;接收用戶輸入的字符串并讀取字符串中最后一個(gè)字符;在第一哈希表中查找與該最后一個(gè)字符對(duì)應(yīng)的索引值;及若在第一哈希表中查找到該字符有不重復(fù)的索引值,則將所述字符串中的余下字符依出現(xiàn)順序自后向前與數(shù)據(jù)模型中對(duì)應(yīng)的葉子節(jié)點(diǎn)的父節(jié)點(diǎn)自下向上逐級(jí)進(jìn)行比較,以查找與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑,或者,若在第一哈希表中查找到該字符有重復(fù)的索引值,則在第二哈希表中查找所述字符串對(duì)應(yīng)的索引值,根據(jù)該第二哈希表中該字符串對(duì)應(yīng)的索引值查找與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑。
2.如權(quán)利要求1所述的在數(shù)據(jù)模型中查找參數(shù)的方法,其特征在于,所述第一哈希表儲(chǔ)存在存儲(chǔ)裝置,該第一哈希表中每個(gè)配置參數(shù)名稱的索引值映射到一個(gè)數(shù)據(jù)路徑記錄。
3.如權(quán)利要求1所述的在數(shù)據(jù)模型中查找參數(shù)的方法,其特征在于,所述第二哈希表儲(chǔ)存在存儲(chǔ)裝置,該第二哈希表中每個(gè)字符串的索引值映射到一個(gè)數(shù)據(jù)路徑記錄。
4.如權(quán)利要求1所述的在數(shù)據(jù)模型中查找參數(shù)的方法,其特征在于,該方法還包括若在第一哈希表中未查找到該字符對(duì)應(yīng)的索引值,則提示用戶輸入錯(cuò)誤。
5.如權(quán)利要求1所述的在數(shù)據(jù)模型中查找參數(shù)的方法,其特征在于,該方法還包括當(dāng)該字符在第一哈希表中有不重復(fù)的索引值時(shí),若所述字符串中的余下字符依出現(xiàn)順序自后向前與數(shù)據(jù)模型中對(duì)應(yīng)的葉子節(jié)點(diǎn)的父節(jié)點(diǎn)自下向上逐級(jí)進(jìn)行比較的結(jié)果不一一匹配,則提示用戶輸入錯(cuò)誤。
6.如權(quán)利要求1所述的在數(shù)據(jù)模型中查找參數(shù)的方法,其特征在于,該方法還包括若在第二哈希表中未查找到該字符串對(duì)應(yīng)的索引值,則提示用戶輸入錯(cuò)誤。
7.如權(quán)利要求2或3所述的在數(shù)據(jù)模型中查找參數(shù)的方法,其特征在于,所述存儲(chǔ)裝置為計(jì)算機(jī)內(nèi)存或外部存儲(chǔ)器。
全文摘要
本發(fā)明提供一種在數(shù)據(jù)模型中查找參數(shù)的方法。該方法接收用戶輸入的字符串并讀取字符串中最后一個(gè)字符,在第一哈希表中查找與該最后一個(gè)字符對(duì)應(yīng)的索引值。若在第一哈希表中查找到該字符有不重復(fù)的索引值,則將所述字符串中的余下字符依出現(xiàn)順序自后向前與數(shù)據(jù)模型中對(duì)應(yīng)的葉子節(jié)點(diǎn)的父節(jié)點(diǎn)自下向上逐級(jí)進(jìn)行比較,以查找與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑?;蛘?,若在第一哈希表中查找到該字符有重復(fù)的索引值,則在第二哈希表中查找所述字符串對(duì)應(yīng)的索引值,根據(jù)該第二哈希表中該字符串對(duì)應(yīng)的索引值查找與該字符串匹配的配置參數(shù)在數(shù)據(jù)模型中的完整數(shù)據(jù)路徑。
文檔編號(hào)G06F17/30GK102346747SQ20101024505
公開日2012年2月8日 申請(qǐng)日期2010年8月4日 優(yōu)先權(quán)日2010年8月4日
發(fā)明者陳炳榮, 黃智源 申請(qǐng)人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司