本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)查詢方法及裝置。
背景技術(shù):
在信息技術(shù)領(lǐng)域,enum數(shù)據(jù)(e.164numberurimapping,電話號碼映射)可通過將e.164號碼轉(zhuǎn)換成域名數(shù)據(jù)得到。通常enum數(shù)據(jù)以條為單位存儲在dns(domainnamesystem,域名解析系統(tǒng))服務(wù)器的數(shù)據(jù)庫中。
基于enum數(shù)據(jù)的存儲方式,當(dāng)前如果要從dns服務(wù)器的數(shù)據(jù)庫中查詢某一條enum數(shù)據(jù)時,需要逐條進(jìn)行查詢、比對。例如,dns數(shù)據(jù)庫中存儲10萬條enum數(shù)據(jù),在進(jìn)行查詢時,可能需要查詢10萬次。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
在查詢某一條數(shù)據(jù)時,需要遍歷整個dns服務(wù)器的數(shù)據(jù)庫,不僅查詢效率較低,而且查詢成本較高。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種數(shù)據(jù)查詢方法及裝置。所述技術(shù)方案如下:
一方面,提供了一種數(shù)據(jù)查詢方法,所述方法包括:
接收數(shù)據(jù)查詢請求,所述數(shù)據(jù)查詢請求中至少攜帶待查詢的電話號碼映射enum數(shù)據(jù),所述待查詢的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與所述待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),所述數(shù)據(jù)庫存儲有多個enum數(shù)據(jù),每個enum數(shù)據(jù)分層存儲于所述數(shù)據(jù)庫中;
在逐層級查詢的過程中,如果所述數(shù)據(jù)庫中的任一enum數(shù)據(jù)與所述待查詢的enum數(shù)據(jù)在指定層級上的數(shù)據(jù)不匹配,返回失敗消息;
如果所述數(shù)據(jù)庫中的任一enum數(shù)據(jù)與所述待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配,返回成功消息。
在本發(fā)明的另一個實施例中,所述從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與所述待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)之前,還包括:
獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,下一層級數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲,得到所述數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,所述多個層級數(shù)據(jù)組成頂級域名、第一位置序列碼、第二位置序列碼及第三位置序列碼,所述頂級域名包括e164.arpa,所述第一位置序列碼包括國家碼,用于區(qū)分不同的國家,所述第二位置序列碼包括移動接入碼,用于區(qū)分不同的運(yùn)營商,所述第三位置序列碼包括用戶標(biāo)識碼,用于區(qū)分不同的用戶。
在本發(fā)明的另一個實施例中,所述從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與所述待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)之前,還包括:
獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
根據(jù)第一位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同國家數(shù)據(jù)庫中;
在同一個國家數(shù)據(jù)庫中,根據(jù)第二位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同的運(yùn)營商數(shù)據(jù)庫中;
在同一運(yùn)營商數(shù)據(jù)庫中,對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,以下一層級數(shù)據(jù)為葉子節(jié)點,逐層級存儲第三位置序列碼;
基于不同的國家數(shù)據(jù)庫和運(yùn)營商數(shù)據(jù)庫,建立所述數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,所述從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與所述待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),包括:
根據(jù)所述待查詢的enum數(shù)據(jù)的第一位置序列碼,確定所述待查詢的enum數(shù)據(jù)所屬的國家數(shù)據(jù)庫;
在所述國家數(shù)據(jù)庫中,根據(jù)所述待查詢的enum數(shù)據(jù)的第二位置序列碼,確定所述待查詢的enum數(shù)據(jù)所屬的運(yùn)營商數(shù)據(jù)庫;
在所述運(yùn)營商數(shù)據(jù)庫中,逐層級查詢與所述待查詢的enum數(shù)據(jù)的第三位置序列碼對應(yīng)的層級數(shù)據(jù)相匹配的數(shù)據(jù)。
另一方面,提供了一種數(shù)據(jù)查詢裝置,所述裝置包括:
接收模塊,用于接收數(shù)據(jù)查詢請求,所述數(shù)據(jù)查詢請求中至少攜帶待查詢的電話號碼映射enum數(shù)據(jù),所述待查詢的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
查詢模塊,用于從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與所述待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),所述數(shù)據(jù)庫存儲有多個enum數(shù)據(jù),每個enum數(shù)據(jù)分層存儲于所述數(shù)據(jù)庫中;
第一返回模塊,用于在逐層級查詢的過程中,當(dāng)所述數(shù)據(jù)庫中的任一enum數(shù)據(jù)與所述待查詢的enum數(shù)據(jù)在指定層級上的數(shù)據(jù)不匹配時,返回失敗消息;
第二返回模塊,用于當(dāng)所述數(shù)據(jù)庫中的任一enum數(shù)據(jù)與所述待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配時,返回成功消息。
在本發(fā)明的另一個實施例中,所述裝置還包括:
第一獲取模塊,用于獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
第一存儲模塊,用于對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,下一層級數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲,得到所述數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,所述多個層級數(shù)據(jù)組成頂級域名、第一位置序列碼、第二位置序列碼及第三位置序列碼,所述頂級域名包括e164.arpa,所述第一位置序列碼包括國家碼,用于區(qū)分不同的國家,所述第二位置序列碼包括移動接入碼,用于區(qū)分不同的運(yùn)營商,所述第三位置序列碼包括用戶標(biāo)識碼,用于區(qū)分不同的用戶。
在本發(fā)明的另一個實施例中,所述裝置還包括:
第二獲取模塊,用于獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
第一劃分模塊,用于根據(jù)第一位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同國家數(shù)據(jù)庫中;
第二劃分模塊,用于在同一個國家數(shù)據(jù)庫中,根據(jù)第二位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同的運(yùn)營商數(shù)據(jù)庫中;
第二存儲模塊,用于在同一運(yùn)營商數(shù)據(jù)庫中,對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,以下一層級數(shù)據(jù)為葉子節(jié)點,逐層級存儲第三位置序列碼;
建立模塊,用于基于不同的國家數(shù)據(jù)庫和運(yùn)營商數(shù)據(jù)庫,建立所述數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,所述查詢模塊,用于根據(jù)所述待查詢的enum數(shù)據(jù)的第一位置序列碼,確定所述待查詢的enum數(shù)據(jù)所屬的國家數(shù)據(jù)庫;在所述國家數(shù)據(jù)庫中,根據(jù)所述待查詢的enum數(shù)據(jù)的第二位置序列碼,確定所述待查詢的enum數(shù)據(jù)所屬的運(yùn)營商數(shù)據(jù)庫;在所述運(yùn)營商數(shù)據(jù)庫中,逐層級查詢與所述待查詢的enum數(shù)據(jù)的第三位置序列碼對應(yīng)的層級數(shù)據(jù)相匹配的數(shù)據(jù)。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
無需遍歷數(shù)據(jù)庫中的全部數(shù)據(jù),在接收到數(shù)據(jù)查詢請求后,通過在數(shù)據(jù)庫的多個層級中查詢,即可返回查詢結(jié)果,不僅提高了查詢效率,而且避免了查詢無用資源所造成的資源消耗,大大節(jié)省了查詢成本。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一個實施例提供的一種數(shù)據(jù)查詢方法流程圖;
圖2是本發(fā)明另一個實施例提供的一種數(shù)據(jù)查詢方法流程圖;
圖3是本發(fā)明另一個實施例提供的一種數(shù)據(jù)存儲結(jié)構(gòu)的示意圖;
圖4是本發(fā)明另一個實施例提供的一種數(shù)據(jù)存儲結(jié)構(gòu)的示意圖;
圖5是本發(fā)明另一個實施例提供的一種數(shù)據(jù)存儲結(jié)構(gòu)的示意圖;
圖6是本發(fā)明另一個實施例提供的一種數(shù)據(jù)查詢裝置的結(jié)構(gòu)示意圖;
圖7是根據(jù)一示例性實施例示出的一種用于數(shù)據(jù)查詢的服務(wù)器。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。
本發(fā)明實施例提供了一種數(shù)據(jù)查詢方法,參見圖1,本發(fā)明實施例提供的方法流程包括:
101、接收數(shù)據(jù)查詢請求,該數(shù)據(jù)查詢請求中至少攜帶待查詢的電話號碼映射enum數(shù)據(jù),該待查詢的enum數(shù)據(jù)包括多個層級數(shù)據(jù)。
102、從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),該數(shù)據(jù)庫存儲有多個enum數(shù)據(jù),每個enum數(shù)據(jù)分層存儲于數(shù)據(jù)庫中。
103、在逐層級查詢的過程中,如果數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)在指定層級上的數(shù)據(jù)不匹配,返回失敗消息。
104、如果數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配,返回成功消息。
本發(fā)明實施例提供的方法,無需遍歷數(shù)據(jù)庫中的全部數(shù)據(jù),在接收到數(shù)據(jù)查詢請求后,通過在數(shù)據(jù)庫的多個層級中查詢,即可返回查詢結(jié)果,不僅提高了查詢效率,而且避免了查詢無用資源所造成的資源消耗,大大節(jié)省了查詢成本。
在本發(fā)明的另一個實施例中,從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)之前,還包括:
獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,下一層級數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲,得到數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,多個層級數(shù)據(jù)組成頂級域名、第一位置序列碼、第二位置序列碼及第三位置序列碼,頂級域名包括e164.arpa,第一位置序列碼包括國家碼,用于區(qū)分不同的國家,第二位置序列碼包括移動接入碼,用于區(qū)分不同的運(yùn)營商,第三位置序列碼包括用戶標(biāo)識碼,用于區(qū)分不同的用戶。
在本發(fā)明的另一個實施例中,從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)之前,還包括:
獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
根據(jù)第一位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同國家數(shù)據(jù)庫中;
在同一個國家數(shù)據(jù)庫中,根據(jù)第二位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同的運(yùn)營商數(shù)據(jù)庫中;
在同一運(yùn)營商數(shù)據(jù)庫中,對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,以下一層級數(shù)據(jù)為葉子節(jié)點,逐層級存儲第三位置序列碼;
基于不同的國家數(shù)據(jù)庫和運(yùn)營商數(shù)據(jù)庫,建立數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),包括:
根據(jù)待查詢的enum數(shù)據(jù)的第一位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的國家數(shù)據(jù)庫;
在國家數(shù)據(jù)庫中,根據(jù)待查詢的enum數(shù)據(jù)的第二位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的運(yùn)營商數(shù)據(jù)庫;
在運(yùn)營商數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的第三位置序列碼對應(yīng)的層級數(shù)據(jù)相匹配的數(shù)據(jù)。
上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本發(fā)明的可選實施例,在此不再一一贅述。
本發(fā)明實施例提供了一種數(shù)據(jù)查詢方法,參見圖2,本發(fā)明實施例提供的方法流程包括:
201、服務(wù)器預(yù)先建立數(shù)據(jù)庫。
本實施例中所述的服務(wù)器為dns服務(wù)器,該dns服務(wù)器的數(shù)據(jù)庫中存儲有多個enum數(shù)據(jù)。enum是ieif(theinternetengineeringtaskforce,國際互聯(lián)網(wǎng)任務(wù)工作組)定義的一個協(xié)議(rfc2916),其指示了將e.164號碼轉(zhuǎn)換為域名形式,以得到enum數(shù)據(jù)的方法。采用enum協(xié)議將e.164號碼轉(zhuǎn)換為enum數(shù)據(jù)時,可先將e.164號碼中的非數(shù)字字符去掉,并在所有數(shù)字字符之間添加分隔符,然后將添加分隔符的數(shù)字字符前后順序顛倒,最后在顛倒后的數(shù)字字符的末尾添加頂級域名e.164.arpa,得到enum數(shù)據(jù)。例如,一個e.164號碼為86-15801649135,采用上述方法轉(zhuǎn)換得到的enum數(shù)據(jù)為:5.3.1.9.4.6.1.0.8.5.1.6.8.e.164.arpa。
在通信領(lǐng)域,e.164號碼是國際電信聯(lián)盟定義的在pstn(publicswitchedtelephonenetwork,公共交換電話網(wǎng)絡(luò))和一些數(shù)據(jù)網(wǎng)使用的國際公共電話號碼,同時也是主叫用戶在移動通信網(wǎng)絡(luò)中所使用的撥號號碼。e.164號碼實質(zhì)上為電話號碼,一般為13位,由國家碼、移動接入碼及用戶標(biāo)識碼構(gòu)成。通常e.164號碼的格式可以為:cc+n1n2n3+h0h1h2h3+abcd,其中,cc為(countrycode,國家碼)國家碼,用于區(qū)分不同的國家,中國大陸地區(qū)的國家碼為86;n1n2n3為移動接入碼,用于區(qū)分不同的運(yùn)營商,例如,中國移動的移動接入碼為135、136、137、138、139等等,中國聯(lián)通的移動接入碼為130、131、132等等;h0h1h2h3+abcd為用戶標(biāo)識碼,用于區(qū)分不同的用戶,其中,h0h1h2h3為hlr(homelocationregister,本地用戶位置寄存器)識別碼,由運(yùn)營商統(tǒng)一分配,abcd為移動用戶號,由各hlr自行分配。
enum數(shù)據(jù)的位數(shù)一般為15位,前13位為倒序的e.164號碼,每位為0~9的數(shù)字,后兩位為頂級域名,一般固定為e.164.arpa。除了頂級域名外,剩余的13位(即倒序的e.164號碼)可以唯一地確定一個enum數(shù)據(jù),基于倒序的e.164號碼中不同字符的作用,可按倒序順序,將剩余的13位劃分為第一位置序列碼、第二位置序列碼、第三位置序列碼,其中,第一位置序列碼與國家碼對應(yīng),用于區(qū)分不同的國家;第二位置序列碼與移動接入碼對應(yīng),用于區(qū)分不同的運(yùn)營商;第三位置序列碼與用戶標(biāo)識碼對應(yīng),用于區(qū)分不同的用戶。
在本實施例中,為了提高對enum數(shù)據(jù)的查詢效率,將enum數(shù)據(jù)中的每一位數(shù)稱為一個層級數(shù)據(jù)。為了便于后續(xù)的存儲與查詢,本實施例在確定enum數(shù)據(jù)中的多個層級數(shù)據(jù)的上下級關(guān)系時,按照從后到前的順序,將最后一位作為第一層級,將倒數(shù)第二位作為第二層級,此時第一層級為第二層級的上一層級,將倒數(shù)第三位作為第三層級,此時第二層級為第三層級的上一層級,以此類推,將第一位作為最后一層級。
為了解決現(xiàn)有技術(shù)中每秒千萬級查詢enum數(shù)據(jù)時查詢效率低的問題,同時降低查詢延遲和服務(wù)器端性能損耗,節(jié)省存儲空間,在本實施例中,服務(wù)器將采用樹形結(jié)構(gòu)存儲每個enum數(shù)據(jù),得到一個數(shù)據(jù)庫。具體過程參見下述步驟2011~2012:
2011、服務(wù)器獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù)。
本實施例中的服務(wù)器可具有信息輸入功能,基于該功能,用戶可在服務(wù)器上輸入多個e.164號碼,服務(wù)器檢測到用戶的輸入操作時,獲取用戶輸入的多個e.164號碼,將用戶輸入的多個e.164號碼轉(zhuǎn)換為多個enum數(shù)據(jù),并將所轉(zhuǎn)換的多個enum數(shù)據(jù)作為多個待存儲的enum數(shù)據(jù)。當(dāng)然,除了采用該種方式外,服務(wù)器還可通過互聯(lián)網(wǎng)從不同的運(yùn)營商服務(wù)器上獲取多個e.164號碼,將獲取到的多個e.164號碼轉(zhuǎn)換為多個enum數(shù)據(jù),并將所轉(zhuǎn)換的多個enuim數(shù)據(jù)作為多個待存儲的enum數(shù)據(jù)。其中,每個待存儲的enum數(shù)據(jù)也包括多個層級數(shù)據(jù)。
2012、對于每個待存儲的enum數(shù)據(jù),服務(wù)器以上一層級數(shù)據(jù)為父節(jié)點,下一層級數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲,得到數(shù)據(jù)庫。
對于每個待存儲的enum數(shù)據(jù),服務(wù)器采用末尾倒敘的方式進(jìn)行樹插入,首先存儲第一層級數(shù)據(jù),以該第一層級作為根節(jié)點,第二層級作為根節(jié)點的葉子節(jié)點存儲第二層級數(shù)據(jù),以此類推,以上一層級數(shù)據(jù)為父節(jié)點,下一層級的數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲。通過采用該種樹形結(jié)構(gòu)存儲enum數(shù)據(jù),可得到一個數(shù)據(jù)庫。
參見圖3,其示了一種數(shù)據(jù)存儲結(jié)構(gòu),其僅示出了對某一待存儲數(shù)據(jù)的最后五位的存儲結(jié)構(gòu),即第一層級數(shù)據(jù)、第二層級數(shù)據(jù)、第三層級數(shù)據(jù)、第四層級數(shù)據(jù)、第五層級數(shù)據(jù),但對于其他層級的存儲方式與上述五個層級的存儲方式相同。在圖3中,該第一層級數(shù)據(jù)為頂級域名的第二位,第二層級為頂級域名的第一位,第三層級為國家碼的第一位,第四層級為國家碼的第二位,第五層級為移動接入碼的第一位。
由于服務(wù)器的數(shù)據(jù)庫存儲的數(shù)據(jù)量較大,每秒可能進(jìn)行千萬級的查詢,為了提高查詢效率,減輕服務(wù)器的數(shù)據(jù)處理壓力,本實施例中的服務(wù)器可建立一個分布式數(shù)據(jù)庫系統(tǒng),每個數(shù)據(jù)庫負(fù)責(zé)存儲不同區(qū)域的enum數(shù)據(jù)。具體建立過程如下述步驟(1)~(5):
(1)、服務(wù)器獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù)。
該步驟具體實現(xiàn)時與上述步驟2011相同,具體參見上述步驟2011,此處不再贅述。
(2)、服務(wù)器根據(jù)第一位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同國家數(shù)據(jù)庫中。
由于第一位置序列碼可區(qū)分不同的國家,當(dāng)獲取到多個待存儲的enum數(shù)據(jù)后,服務(wù)器可根據(jù)第一位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同的國家數(shù)據(jù)庫中。
例如,獲取到1000個待存儲的enum數(shù)據(jù),其中,500個待存儲的enum數(shù)據(jù)的第一位置序列碼為中國大陸地區(qū)的國家碼86,300個待存儲的enum數(shù)據(jù)的第一位置序列碼為日本的國家碼81,200個待存儲的enum數(shù)據(jù)的第一位置序列碼為韓國的國家碼82,根據(jù)第一位置序列碼,可將獲取到的1000個待存儲的enum數(shù)據(jù)劃分到3個不同的國家數(shù)據(jù)庫中,其中,中國國家數(shù)據(jù)中包括500個待存儲的enum數(shù)據(jù),日本國家數(shù)據(jù)庫中包括300個待存儲的enum數(shù)據(jù),韓國國家數(shù)據(jù)庫中包括200個待存儲的enum數(shù)據(jù)。對于中國國家數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu),可參見圖4。
(3)、在同一個國家數(shù)據(jù)庫中,服務(wù)器根據(jù)第二位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同的運(yùn)營商數(shù)據(jù)庫中。
由于第二位置序列碼用于區(qū)分不同的運(yùn)營商,在同一個國家數(shù)據(jù)庫中,可能包含著指示不同運(yùn)營商的enum數(shù)據(jù),因此,根據(jù)第二位置序列碼,服務(wù)器可將屬于同一國家數(shù)據(jù)庫的多個待存儲的enum數(shù)據(jù)劃分到不同的運(yùn)營商數(shù)據(jù)中。以上述包含500個待存儲的enum數(shù)據(jù)的中國國家數(shù)據(jù)庫為例,該中國國家數(shù)據(jù)庫中可能包括屬于中國移動、中國聯(lián)通、中國電信不同運(yùn)營商的enum數(shù)據(jù),根據(jù)第二位置序列碼,可將第二位置序列碼為134、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188等的enum數(shù)據(jù)劃分為中國移動數(shù)據(jù)庫,將第二位置序列碼為130、131、132、155、156、185、186、145、176等的enum數(shù)據(jù)劃分為中國聯(lián)通數(shù)據(jù)庫,將第二位置序列碼為133、153、177、180、181、189等的enum數(shù)據(jù)劃分為中國電信數(shù)據(jù)庫。
(4)、在同一運(yùn)營商數(shù)據(jù)庫中,對于每個待存儲的enum數(shù)據(jù),服務(wù)器以上一層級數(shù)據(jù)為父節(jié)點,以下一層級數(shù)據(jù)為葉子節(jié)點,逐層級存儲第三位置序列碼。
在同一運(yùn)營商數(shù)據(jù)庫中,對于每個待存儲的enum數(shù)據(jù),服務(wù)器采用末尾倒敘的方式進(jìn)行插入,首先存儲第三位置序列碼的第一位所在層級的數(shù)據(jù),以該層級數(shù)據(jù)為父節(jié)點,以第二位置序列碼的第二位所在層級的數(shù)據(jù)為葉子節(jié)點進(jìn)行存儲,以此類推,將第三位置序列碼中的上一層級數(shù)據(jù)為父節(jié)點,下一層級數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲。
(5)、基于不同的國家數(shù)據(jù)庫和運(yùn)營商數(shù)據(jù)庫,服務(wù)器建立數(shù)據(jù)庫。
通過采用不同的位置序列碼,對多個待存儲的enum數(shù)據(jù)進(jìn)行劃分,服務(wù)器可建立一個數(shù)據(jù)庫系統(tǒng),該數(shù)據(jù)庫系統(tǒng)為分布式數(shù)據(jù)庫系統(tǒng),能夠分級存儲不同區(qū)域的enum數(shù)據(jù)。
當(dāng)然,為了進(jìn)一步減輕服務(wù)器的數(shù)據(jù)處理壓力,在同一運(yùn)營商數(shù)據(jù)庫中,服務(wù)器可根據(jù)運(yùn)營商的不同號碼段,將同一運(yùn)營商數(shù)據(jù)庫劃分為多個號碼段數(shù)據(jù)庫。例如,可將中國移動數(shù)據(jù)庫,劃分為134數(shù)據(jù)庫、135數(shù)據(jù)庫、136數(shù)據(jù)庫等等。在同一號碼段數(shù)據(jù)庫中,服務(wù)器還可將第三位置序列碼中特定層級所對應(yīng)的0~9的數(shù)字,將同一號碼段數(shù)據(jù)庫劃分為多個子數(shù)據(jù)庫,每個子數(shù)據(jù)庫中存儲一定數(shù)字段的enum數(shù)據(jù)。其中,特定層級可以為第三位置序列碼中的第一位所在的層級,也可以為第三位置序列碼的第二位所在的層級,本實施例不對特定層級作具體的限定。例如,設(shè)定第三位置序列碼的第一位所在的層級為特定層級,在136數(shù)據(jù)庫中,可將136數(shù)據(jù)庫劃分為3個子數(shù)據(jù)庫,其中,第一個子數(shù)據(jù)庫負(fù)責(zé)存儲第三位置序列碼的第一位上的數(shù)字為0或1或2的enum數(shù)據(jù),第二個子數(shù)據(jù)庫負(fù)責(zé)存儲第三位置序列碼的第一位上的數(shù)字為3或4或5的enum數(shù)據(jù),第三數(shù)據(jù)庫負(fù)責(zé)存儲第二位置序列碼的第一位上的數(shù)字為6或7或8或9的enum數(shù)據(jù)。
對于一個e.164號碼15810649135其對應(yīng)的enum數(shù)據(jù)為5.3.1.9.4.6.0.1.8.5.1.e.164.arpa,基于上述enum數(shù)據(jù)的存儲過程,該enum數(shù)據(jù)的存儲結(jié)構(gòu)可參見圖5。
202、服務(wù)器接收數(shù)據(jù)查詢請求,該數(shù)據(jù)查詢請求中至少攜帶待查詢的電話號碼映射enum數(shù)據(jù)。
在通信領(lǐng)域,每個由e.164號碼轉(zhuǎn)換而成的enum數(shù)據(jù)都對應(yīng)一系列的統(tǒng)一資源定位符(uniformresourceidentifier),基于該統(tǒng)一資源定位符,當(dāng)接收到數(shù)據(jù)查詢請求時,服務(wù)器可從預(yù)先建立的數(shù)據(jù)庫中,查詢待查詢的enum數(shù)據(jù)。
203、從預(yù)先建立的數(shù)據(jù)庫中,服務(wù)器逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)。
基于預(yù)先建立的數(shù)據(jù)庫,當(dāng)接收到數(shù)據(jù)查詢請求時,服務(wù)器可從數(shù)據(jù)庫中逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)。針對所建立的數(shù)據(jù)庫不同,具體查詢時也不同。
在本發(fā)明的一個實施例中,服務(wù)器可從待查詢的enum數(shù)據(jù)的第一層級開始,逐層級查詢與待存儲的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)。
在本發(fā)明的另一個實施例中,服務(wù)器可根據(jù)待查詢的enum數(shù)據(jù)的第一位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的國家數(shù)據(jù)庫,在國家數(shù)據(jù)庫中,根據(jù)待查詢的enum數(shù)據(jù)的第二位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的運(yùn)營商數(shù)據(jù)庫,進(jìn)而在運(yùn)營商數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的第三位置序列碼對應(yīng)的層級數(shù)據(jù)相匹配的數(shù)據(jù)。
204、在逐層級查詢的過程中,如果數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)在指定層級上的數(shù)據(jù)不匹配,服務(wù)器返回失敗消息。
在逐層級查詢的過程中,當(dāng)數(shù)據(jù)庫的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)在指定層級上的數(shù)據(jù)不匹配,說明數(shù)據(jù)庫中并不存儲該待查詢的enum數(shù)據(jù),此時服務(wù)器將無需遍歷數(shù)據(jù)庫中的全部數(shù)據(jù),而是直接返回?zé)o此數(shù)據(jù)的失敗消息,以避免帶來的無用資源消耗。
由于enum數(shù)據(jù)中除頂級域名外每一層級只有0~9十個數(shù)字,每一層級最多數(shù)據(jù)項為10項,每一層級查詢匹配的次數(shù)最多為10次,每一層級的查詢復(fù)雜度也為10,對于一個enum數(shù)據(jù),其查詢匹配層數(shù)為13層,因而采用本發(fā)明的存儲方式構(gòu)建數(shù)據(jù)庫后,從數(shù)據(jù)庫中查詢一個待查詢的enum數(shù)據(jù)的查詢次數(shù)最多為10*13=130次,遠(yuǎn)小于現(xiàn)有技術(shù)中n條數(shù)據(jù)的n次,大大提升了查詢性能。
基于本發(fā)明中數(shù)據(jù)庫的樹形結(jié)構(gòu),當(dāng)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫數(shù)量有限時,可大大降低被匹配的數(shù)據(jù)庫的數(shù)量。例如,某個數(shù)據(jù)庫為136數(shù)據(jù)庫,只負(fù)責(zé)存儲6.3.1.6.8.e164.arpa為父節(jié)點的數(shù)據(jù),當(dāng)查詢非此結(jié)尾開頭的enum數(shù)據(jù)時,直接返回失敗消息,無需遍歷整個136數(shù)據(jù)庫。
對于同一號碼段數(shù)據(jù)庫所劃分的多個子數(shù)據(jù)庫,這些多個子數(shù)據(jù)庫之間彼此通信,當(dāng)在一個子數(shù)據(jù)庫中未查詢到與待查詢的enum數(shù)據(jù)的第三位置序列碼的第一位匹配的數(shù)據(jù)時,該子數(shù)據(jù)庫可向?qū)?shù)據(jù)查詢請求發(fā)送至另一子數(shù)據(jù)庫,由另一數(shù)據(jù)庫進(jìn)行查詢,該另一子數(shù)據(jù)庫負(fù)責(zé)存儲以待查詢的enum數(shù)據(jù)的第三位置序列碼的第一位上數(shù)據(jù)為父節(jié)點的數(shù)據(jù)。
205、如果數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配,服務(wù)器返回成功消息。
在逐層級查詢過程中,如果數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配,說明數(shù)據(jù)庫中存儲該待查詢的enum數(shù)據(jù),此時服務(wù)器將返回成功消息。
本發(fā)明實施例提供的方法,無需遍歷數(shù)據(jù)庫中的全部數(shù)據(jù),在接收到數(shù)據(jù)查詢請求后,通過在數(shù)據(jù)庫的多個層級中查詢,即可返回查詢結(jié)果,不僅提高了查詢效率,而且避免了查詢無用資源所造成的資源消耗,大大節(jié)省了查詢成本。
參見圖6,本發(fā)明實施例提供了一種數(shù)據(jù)查詢裝置,該裝置包括:
接收模塊601,用于接收數(shù)據(jù)查詢請求,數(shù)據(jù)查詢請求中至少攜帶待查詢的電話號碼映射enum數(shù)據(jù),待查詢的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
查詢模塊602,用于從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),數(shù)據(jù)庫存儲有多個enum數(shù)據(jù),每個enum數(shù)據(jù)分層存儲于數(shù)據(jù)庫中;
第一返回模塊603,用于在逐層級查詢的過程中,當(dāng)數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)在指定層級上的數(shù)據(jù)不匹配時,返回失敗消息;
第二返回模塊604,用于當(dāng)數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配時,返回成功消息。
在本發(fā)明的另一個實施例中,該裝置還包括:
第一獲取模塊,用于獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
第一存儲模塊,用于對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,下一層級數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲,得到數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,多個層級數(shù)據(jù)組成頂級域名、第一位置序列碼、第二位置序列碼及第三位置序列碼,頂級域名包括e164.arpa,第一位置序列碼包括國家碼,用于區(qū)分不同的國家,第二位置序列碼包括移動接入碼,用于區(qū)分不同的運(yùn)營商,第三位置序列碼包括用戶標(biāo)識碼,用于區(qū)分不同的用戶。
在本發(fā)明的另一個實施例中,該裝置還包括:
第二獲取模塊,用于獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
第一劃分模塊,用于根據(jù)第一位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同國家數(shù)據(jù)庫中;
第二劃分模塊,用于在同一個國家數(shù)據(jù)庫中,根據(jù)第二位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同的運(yùn)營商數(shù)據(jù)庫中;
第二存儲模塊,用于在同一運(yùn)營商數(shù)據(jù)庫中,對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,以下一層級數(shù)據(jù)為葉子節(jié)點,逐層級存儲第三位置序列碼;
建立模塊,用于基于不同的國家數(shù)據(jù)庫和運(yùn)營商數(shù)據(jù)庫,建立數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,查詢模塊602,用于根據(jù)待查詢的enum數(shù)據(jù)的第一位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的國家數(shù)據(jù)庫;在國家數(shù)據(jù)庫中,根據(jù)待查詢的enum數(shù)據(jù)的第二位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的運(yùn)營商數(shù)據(jù)庫;在運(yùn)營商數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的第三位置序列碼對應(yīng)的層級數(shù)據(jù)相匹配的數(shù)據(jù)。
綜上所述,本發(fā)明實施例提供的裝置,無需遍歷數(shù)據(jù)庫中的全部數(shù)據(jù),在接收到數(shù)據(jù)查詢請求后,通過在數(shù)據(jù)庫的多個層級中查詢,即可返回查詢結(jié)果,不僅提高了查詢效率,而且避免了查詢無用資源所造成的資源消耗,大大節(jié)省了查詢成本。
圖7是根據(jù)一示例性實施例示出的一種用于數(shù)據(jù)查詢的服務(wù)器。參照圖7,服務(wù)器700包括處理組件722,其進(jìn)一步包括一個或多個處理器,以及由存儲器732所代表的存儲器資源,用于存儲可由處理組件722的執(zhí)行的指令,例如應(yīng)用程序。存儲器732中存儲的應(yīng)用程序可以包括一個或一個以上的每一個對應(yīng)于一組指令的模塊。此外,處理組件722被配置為執(zhí)行指令,以執(zhí)行上述數(shù)據(jù)查詢中服務(wù)器所執(zhí)行的功能,該方法包括:
接收數(shù)據(jù)查詢請求,數(shù)據(jù)查詢請求中至少攜帶待查詢的電話號碼映射enum數(shù)據(jù),待查詢的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),數(shù)據(jù)庫存儲有多個enum數(shù)據(jù),每個enum數(shù)據(jù)分層存儲于數(shù)據(jù)庫中;
在逐層級查詢的過程中,如果數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)在指定層級上的數(shù)據(jù)不匹配,返回失敗消息;
如果數(shù)據(jù)庫中的任一enum數(shù)據(jù)與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配,返回成功消息。
在本發(fā)明的另一個實施例中,從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)之前,還包括:
獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,下一層級數(shù)據(jù)為葉子節(jié)點,逐層級進(jìn)行存儲,得到數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,多個層級數(shù)據(jù)組成頂級域名、第一位置序列碼、第二位置序列碼及第三位置序列碼,頂級域名包括e164.arpa,第一位置序列碼包括國家碼,用于區(qū)分不同的國家,第二位置序列碼包括移動接入碼,用于區(qū)分不同的運(yùn)營商,第三位置序列碼包括用戶標(biāo)識碼,用于區(qū)分不同的用戶。
在本發(fā)明的另一個實施例中,從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù)之前,還包括:
獲取多個待存儲的enum數(shù)據(jù),每個待存儲的enum數(shù)據(jù)包括多個層級數(shù)據(jù);
根據(jù)第一位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同國家數(shù)據(jù)庫中;
在同一個國家數(shù)據(jù)庫中,根據(jù)第二位置序列碼,將多個待存儲的enum數(shù)據(jù)劃分到不同的運(yùn)營商數(shù)據(jù)庫中;
在同一運(yùn)營商數(shù)據(jù)庫中,對于每個待存儲的enum數(shù)據(jù),以上一層級數(shù)據(jù)為父節(jié)點,以下一層級數(shù)據(jù)為葉子節(jié)點,逐層級存儲第三位置序列碼;
基于不同的國家數(shù)據(jù)庫和運(yùn)營商數(shù)據(jù)庫,建立數(shù)據(jù)庫。
在本發(fā)明的另一個實施例中,從預(yù)先建立的數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的每個層級數(shù)據(jù)均匹配的enum數(shù)據(jù),包括:
根據(jù)待查詢的enum數(shù)據(jù)的第一位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的國家數(shù)據(jù)庫;
在國家數(shù)據(jù)庫中,根據(jù)待查詢的enum數(shù)據(jù)的第二位置序列碼,確定待查詢的enum數(shù)據(jù)所屬的運(yùn)營商數(shù)據(jù)庫;
在運(yùn)營商數(shù)據(jù)庫中,逐層級查詢與待查詢的enum數(shù)據(jù)的第三位置序列碼對應(yīng)的層級數(shù)據(jù)相匹配的數(shù)據(jù)。
服務(wù)器700還可以包括一個電源組件726被配置為執(zhí)行服務(wù)器700的電源管理,一個有線或無線網(wǎng)絡(luò)接口750被配置為將服務(wù)器700連接到網(wǎng)絡(luò),和一個輸入輸出(i/o)接口758。服務(wù)器700可以操作基于存儲在存儲器732的操作系統(tǒng),例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或類似。
本發(fā)明實施例提供的服務(wù)器,無需遍歷數(shù)據(jù)庫中的全部數(shù)據(jù),在接收到數(shù)據(jù)查詢請求后,通過在數(shù)據(jù)庫的多個層級中查詢,即可返回查詢結(jié)果,不僅提高了查詢效率,而且避免了查詢無用資源所造成的資源消耗,大大節(jié)省了查詢成本。
需要說明的是:上述實施例提供的數(shù)據(jù)查詢裝置在查詢數(shù)據(jù)時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將數(shù)據(jù)查詢裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的數(shù)據(jù)查詢裝置與數(shù)據(jù)查詢方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。