專利名稱:E.164號碼域名存儲和查詢方法
技術領域:
本發明涉及電話號碼到統一資源標識映射的域名系統(ENUM DNS),尤指E.164號碼轉換成對應域名后的存儲和查詢方法。
背景技術:
ENUM(Electronic Numbers to URI Mapping,電話號碼到統一資源標識映射)是IETF的電話號碼映射工作組定義的一個協議-RFC2916,RFC2916的題目為“E.164號碼和域名系統(E.164 Number and DNS)”。它定義了將E.164號碼轉換為域名形式放在DNS服務器的數據庫中的方法,每個由E.164號碼轉化而成的域名可以對應一系列的統一資源標識(Uniform Resource Identifier,URI),從而使國際統一的E.164電話號碼成為可以在互聯網中使用的網絡地址資源。ENUM DNS可以利用電話號碼來查找注冊人(Registrant)電子郵件、IP電話號碼、統一消息、IP傳真或個人網頁等多種信息。E.164號碼是傳統電信網絡中使用的重要資源,DNS系統是互聯網的重要基礎,ENUM將兩者結合起來,有益于傳統電信服務向基于IP包交換的方向發展,ENUM是對促進兩網最終融合具有重要意義的技術。
ENUM定義了如下過程,將電話號碼映射為DNS系統中的記錄一個E.164號碼由以下幾個部分組成,不同部分之間可以用“-”、“.”或空格等連接+國家碼(1~3位數字)-地區碼(n位數字)-電話號碼(15-n位數字)。例如北京的一個電話號碼寫成標準的E.164格式應是+86-10-62618501。將電話號碼轉換成DNS系統中的域名步驟為第一步,將一個電話號碼處理成一個標準的E.164號碼的格式,如+86-10-62618501;第二步,去掉除了最左端的“+”外的所有連接符,變成+861062618501;第三步,去掉“+”號,并將號碼翻轉變成105816260168;第四步,在每個數字之間加上域名分割符“.”,變成1.0.8.1.6.2.6.0.1.6.8;第五步,在上面的數字串末尾加上公共域名“.e164.tld”,變成1.0.5.8.1.6.2.6.0.1.6.8.e164.tld。
這樣一個電話號碼變成了DNS中的域名形式。
目前互聯網的DNS系統實現了域名向IP地址的轉換,如將域名www.dongfang.com轉換為192.172.250.27。現有技術中的域名解析系統存放域名信息時,是以“.”作為分隔符,拆分成多個節點按搜索二叉樹的規則進行存放的,例如www.dongfang.com和www.163.com的存放方式如圖1所示。對于“dongfang”和“163”這樣的平行節點,以“dongfang”和“163”作為輸入字符串,按系統設定的規則生成HASH值,對HASH值對應節點的位置信息存儲在系統中的一個哈希表中,用于域名對應節點的查詢。
現有技術中,ENUM DNS系統沿用了互聯網中DNS系統相同的存儲和查詢方法,例如電話號碼為8613512511125,其對應的域名形式為5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs,其存放方式如圖2所示,也是以“.”作為分隔符,拆分成多個節點進行存放。由圖可見,采用這種存放方式,搜索樹的高度很高(每一位電話號碼對應一級平行節點,電話號碼越長,搜索樹的高度越高)。當系統查詢E.164號碼域名時,需要查詢多級平行節點,查詢時間較長;且各節點的長度為1,只可能是數字0-9,這樣最多只能生成10種哈希(HASH)值,在系統存儲數據量大的情況下,沖突非常嚴重,查詢效率極低。
發明內容
本發明提供E.164號碼域名的存儲和查詢方法,用以解決現有技術中查詢E.164號碼域名效率低的問題。
本發明提供的E.164號碼域名的存儲和查詢方法,在電話號碼到統一資源標識映射的域名系統(ENUM DNS)中,將E.164號碼域名分成公共域名部分和數字域名部分;將公共域名部分中用分隔符隔開的公共域名信息以及數字域名部分中各數字依設定順序排列后的數據按搜索樹的存放規則順序存放到搜索樹的節點中;ENUM DNS系統接收到E.164號碼域名查詢后,獲取域名中的公共域名信息,并按照所述搜索樹的查找規則查找出搜索樹的相應節點;獲取域名中用分隔符隔開的各數字,并按系統設定順序排列成數據后查找出所述搜索樹的下一級節點。
根據本發明的上述方法,還包括系統采用設定的哈希算法分別計算出所述公共域名信息和數據的哈希值,存儲哈希值對應節點的位置信息;在域名查詢過程中,若按照搜索樹的查找規則對應節點查找失敗,則采用系統設定的哈希算法計算出被查詢的公共域名信息或數據的哈希值,根據計算出的哈希值確定出搜索樹的對應節點。
所述哈希值對應節點的位置信息存儲在一個哈希表中;所述根據計算出的哈希值確定出搜索樹的對應節點,具體方法為用計算出的哈希值作為索引,查找存儲的哈希表,獲取對應節點位置信息。
所述數字域名部分中各數字依設定順序排列包括將域名中用分隔符隔開的數字按從左到右或從右到左的順序排列成數據。
根據本發明的上述方法,公共域名部分中用分隔符隔開的公共域名信息按從右到左的順序分別存儲到所述搜索樹的根節點和下一級子節點中。
根據本發明的上述方法,公共域名部分中用分隔符隔開的公共域名信息按設定順序合并在一起,存放到所述搜索樹的根節點中。
根據本發明的上述方法,將公共域名部分中用分隔符隔開的公共域名信息按從左到右或從右到左的順序合并在一起。
根據本發明的上述方法,所述搜索樹為二叉搜索樹。
本發明有益效果如下(1)采用本發明方法能減少域名存放時的節點數,降低存儲域名的搜索樹的高度,從而提高域名查詢效率;(2)采用本發明方法提高了平行節點生成HASH值的散列度,在系統存儲數據量大的情況下,有效降低了沖突的可能性,使得緩存數據量的變化對系統查詢效率的影響非常小。
圖1為互聯網DNS系統中用二叉搜索樹存放域名的節點示意圖;圖2為現有技術在ENUM DNS系統中用搜索樹存放E.164號碼域名的節點示意圖;圖3為本發明在ENUM DNS系統中用搜索樹存放E.164號碼域名的節點示意圖之一;圖4為本發明在ENUM DNS系統中用搜索樹存放E.164號碼域名的節點示意圖之二;圖5為本發明在ENUM DNS系統中用搜索樹存放E.164號碼域名的節點示意圖之三;圖6為本發明在ENUM DNS系統中用搜索樹存放E.164號碼域名的節點示意圖之四;圖7為本發明在ENUM DNS系統中用搜索樹存放E.164號碼域名的節點示意圖之五;圖8為本發明在ENUM DNS系統中用搜索樹存放E.164號碼域名的節點示意圖之六。
具體實施例方式
本發明提供E.164號碼域名的存儲和查詢方法,包括
在電話號碼到統一資源標識映射的域名系統(ENUM DNS)中,將E.164號碼域名分成公共域名部分和數字域名部分;將公共域名部分中用分隔符隔開的公共域名信息以及數字域名部分中各數字依設定順序排列后的數據按搜索樹的存放規則順序存放到搜索樹的節點中;ENUM DNS系統接收到E.164號碼域名查詢后,獲取域名中的公共域名信息,并按照所述搜索樹的查找規則查找出搜索樹的相應節點;獲取域名中用分隔符隔開的各數字,并按系統設定順序排列成數據后查找出所述搜索樹的下一級節點。
為了進一步提高系統查詢效率,本發明方法還采用設定的哈希算法分別計算出所述公共域名信息和數據的哈希值,存儲哈希值對應節點的位置信息;在域名查詢過程中,若按照搜索樹的查找規則對應節點查找失敗,則采用系統設定的哈希算法計算出被查詢的公共域名信息或數據的哈希值,根據計算出的哈希值確定出搜索樹的對應節點。
所述哈希值對應節點的位置信息存儲在一個哈希表中;所述根據計算出的哈希值確定出搜索樹的對應節點具體方法為用計算出的哈希值作為索引,查找存儲的哈希表,獲取對應節點位置信息。
下面例舉兩種具體實施方式
對本發明方法分別加以描述。
實施方式一公共域名部分中用分隔符隔開的公共域名信息按從右到左的順序分別存儲到所述搜索樹的根節點和下一級子節點中。
以電話號碼為8613512511125為例,根據E.164號碼域名轉換規則轉換成的域名形式為5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs;基中e164.gprs為系統添加的公共域名(公共域名可以在系統中由用戶設定,系統會根據設定好的公共域名在電話號碼轉換后的域名中自動加上公共域名部分)。在ENUM DNS系統中,將E.164號碼轉換后的域名采用搜索樹的存放規則進行存放,但搜索樹中各節點對應的存放信息不是采用現有技術中以“.”作為分隔符,將每一個數字存入一個節點中,而是將轉換后的域名分為兩大部分即公共域名部分和數字域名部分分別加以存放。具體為將公共域名信息以“.”作為分隔符,依照搜索樹的存放規則存放到搜索樹的根節點中和子節點中,如圖3、圖4所示。此處的搜索樹可以采用二叉搜索樹或別的搜索樹。
系統按照預先設定的哈希算法計算出公共域名信息中以“.”作為分隔符的各域名信息(e164和gprs)對應的哈希值,并將對應節點的位置信息存儲到一個哈希表中;系統將其余用分隔符“.”隔開的各個數字,接照設定的順序排列成數據后按照搜索樹的存放規則存放到上述搜索樹的相應子節點中,如圖3、圖4所示;具體如何排列各個數字,是可以通過系統進行設定的,為簡單方便,可以選擇從左到右按序排列,或從右到左按序排列;如上例,按照從左到右的順序排列成的數據為5211152153168(參見圖3);按照從右到左的順序排列成的數據為8613512511125(參見圖4);獲得排列好的數據后,系統按照預先設定的哈希算法計算出該數據的哈希值,并將對應節點的位置信息存儲到上述哈希表中。
ENUM DNS系統接收到E.164號碼域名查詢后,例如,用戶輸入5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs的域名,系統獲取域名中的公共域名信息e164.gprs,將公共域名信息中用分隔符隔開的各部分域名(e164和gprs)按照搜索樹的查找規則分別查找出搜索樹的根節點gprs和子節點e164;再獲取域名中用分隔符隔開的各數字,并按系統設定順序排列成數據5211152153168或8613512511125,查找出搜索樹的下一級節點。若按照搜索樹的查找規則對應節點查找失敗,例如,查找數據5211152153168對應節點失敗,則系統依照設定的哈希算法計算出數據5211152153168的哈希值,以計算出的哈希值作為索引,查找存儲的哈希表,得到對應的節點位置信息。
實施方式二將公共域名部分中用分隔符隔開的公共域名信息按設定順序合并在一起,存放到所述搜索樹的根節點中。
以5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs域名為例,存儲到搜索樹時,將公共域名e164.gprs進行合并,存儲到搜索樹的根節點中;例如,按從左到右的順序合并為e164gprs進行存儲(參見圖5和圖6),或按從右到左的順序合并為gprse164進行存儲(參見圖7和圖8)。數據部分的存儲方式與上述方法一相同,即可以按照從左到右的順序排列為5211152153168,或按從右到左的順序排列為8613512511125。這樣,根據公共域名的合并和數字的排列順序可以有如下四種組合存儲方式組合存儲方式一公共域名按從左到右的順序合并,各數字按從左到右的順序排列,如圖5所示;組合存儲方式二公共域名按從左到右的順序合并,各數字按從右到左的順序排列,如圖6所示;組合存儲方式三公共域名按從右到左的順序合并,各數字按從左到右的順序排列,如圖7所示;組合存儲方式四公共域名按從右到左的順序合并,各數字按從右到左的順序排列,如圖8所示。
ENUM DNS系統接收到E.164號碼域名查詢后,例如,用戶輸入5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs的域名,系統獲取域名中的公共域名信息e164.gprs,將公共域名信息中用分隔符隔開的各部分域名(e164和gprs)按照系統設定的合并方式進行合并,例如按從左到右的順序合并為e164gprs,或按從右到左的順序合并為gprse164,按搜索樹的查找規則查找出搜索樹的根節點;再獲取域名中用分隔符隔開的各數字,并按系統設定順序排列成數據5211152153168或8613512511125,查找出搜索樹的下一級節點。若按照搜索樹的查找規則對應節點查找失敗,例如,查找數據5211152153168對應節點失敗,則系統依照設定的哈希算法計算出數據5211152153168的哈希值,以計算出的哈希值作為索引,查找存儲的哈希表,得到對應的節點位置信息。
采用本發明的上述方法,大大降低了搜索樹的高度,能明顯減少域名查詢時節點匹配的次數,提高查詢效率;另外,節點中的多位數據與電話號碼有關,這樣,不同的電話號碼會組成不同的數據,使得由該數據生成相同哈希值的可能性大大降低,即提高了生成的哈希值的散列度,即使在系統緩存有大數據量的情況下,查詢節點時的沖突幾率小,解決了現有技術中系統查詢效率隨著緩存數據量的增加迅速下降的問題。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種E.164號碼域名的存儲和查詢方法,包括在電話號碼到統一資源標識映射的域名系統(ENUM DNS)中,將E.164號碼域名分成公共域名部分和數字域名部分;將公共域名部分中用分隔符隔開的公共域名信息以及數字域名部分中各數字依設定順序排列后的數據按搜索樹的存放規則順序存放到搜索樹的節點中;ENUM DNS系統接收到E.164號碼域名查詢后,獲取域名中的公共域名信息,并按照所述搜索樹的查找規則查找出搜索樹的相應節點;獲取域名中用分隔符隔開的各數字,并按系統設定順序排列成數據后查找出所述搜索樹的下一級節點。
2.如權利要求1所述的方法,其特征在于,還包括系統采用設定的哈希算法分別計算出所述公共域名信息和數據的哈希值,存儲哈希值對應節點的位置信息;在域名查詢過程中,若按照搜索樹的查找規則對應節點查找失敗,則采用系統設定的哈希算法計算出被查詢的公共域名信息或數據的哈希值,根據計算出的哈希值確定出搜索樹的對應節點。
3.如權利要求2所述的方法,其特征在于,所述哈希值對應節點的位置信息存儲在一個哈希表中;所述根據計算出的哈希值確定出搜索樹的對應節點,具體方法為用計算出的哈希值作為索引,查找存儲的哈希表,獲取對應節點位置信息。
4.如權利要求1所述的方法,其特征在于,所述數字域名部分中各數字依設定順序排列包括將域名中用分隔符隔開的數字按從左到右或從右到左的順序排列成數據。
5.如權利要求1所述的方法,其特征在于,公共域名部分中用分隔符隔開的公共域名信息按從右到左的順序分別存儲到所述搜索樹的根節點和下一級子節點中。
6.如權利要求1所述的方法,其特征在于,公共域名部分中用分隔符隔開的公共域名信息按設定順序合并在一起,存放到所述搜索樹的根節點中。
7.如權利要求6所述的方法,其特征在于,將公共域名部分中用分隔符隔開的公共域名信息按從左到右或從右到左的順序合并在一起。
8.如權利要求1所述的方法,其特征在于,所述搜索樹為二叉搜索樹。
全文摘要
本發明公開了E.164號碼域名的存儲和查詢方法,包括在電話號碼到統一資源標識映射的域名系統(ENUM DNS)中,將E.164號碼域名分成公共域名部分和數字域名部分;將公共域名部分中用分隔符隔開的公共域名信息以及數字域名部分中各數字依設定順序排列后的數據按搜索樹的存放規則順序存放到搜索樹的節點中;ENUM DNS系統接收到E.164號碼域名查詢后,獲取域名中的公共域名信息,并按照所述搜索樹的查找規則查找出搜索樹的相應節點;獲取域名中用分隔符隔開的各數字,并按系統設定順序排列成數據后查找出所述搜索樹的下一級節點。采用本發明方法能有效降低搜索樹的高度,提高節點生成哈希值的散列度,減少沖突,提高系統查詢效率。
文檔編號G06F17/30GK1878164SQ200510075078
公開日2006年12月13日 申請日期2005年6月8日 優先權日2005年6月8日
發明者石磊, 望遠聞, 羅志堅, 楊素娟 申請人:華為技術有限公司