一種數(shù)據(jù)查詢方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)查詢方法及裝置。
【背景技術(shù)】
[0002]在當(dāng)今社會(huì),隨著信息通信技術(shù)的發(fā)展,我們已離不開由網(wǎng)絡(luò)來發(fā)送/接收各種數(shù)據(jù)。這就需要服務(wù)器來處理巨大的數(shù)據(jù)量,也就是現(xiàn)階段人們最關(guān)注的大數(shù)據(jù)處理。那么,如何在大數(shù)據(jù)集合的數(shù)據(jù)庫中進(jìn)行相關(guān)數(shù)據(jù)查詢已成為人們研究的熱點(diǎn)問題。
[0003]通常在例如電子郵箱賬號(hào)的查詢請求中,其賬號(hào)服務(wù)的每秒查詢速率(QPS,QueryPer Second)—般都比較高,并且還會(huì)接到大量針對不存在的賬號(hào)的查詢請求。比如,已經(jīng)刪除的賬號(hào)或者一些猜測賬號(hào)的系統(tǒng)的攻擊性訪問。其中,已經(jīng)存在的賬號(hào)可以通過網(wǎng)絡(luò)業(yè)務(wù)層的高速緩沖存儲(chǔ)器提高網(wǎng)絡(luò)服務(wù)的每秒查詢速率。但是,對于不存在的賬號(hào)查詢請求,其在網(wǎng)絡(luò)業(yè)務(wù)層是找不到的,必須要通過服務(wù)器的數(shù)據(jù)庫查詢后才能確認(rèn)。因此,這類無效查詢訪問會(huì)增加網(wǎng)絡(luò)服務(wù)器的查詢、傳輸?shù)葔毫Γ瑥亩绊懹脩粽?yīng)用。
[0004]而現(xiàn)有技術(shù)中為解決網(wǎng)絡(luò)服務(wù)器查詢、傳輸?shù)葔毫吞岣呔W(wǎng)絡(luò)服務(wù)器的性能,提出了一種解決方案,通過在集群服務(wù)器中設(shè)置布隆過濾器(bloomfilter)來減小網(wǎng)絡(luò)服務(wù)器查詢、傳輸數(shù)據(jù)等帶來的壓力。具體而言,現(xiàn)有技術(shù)中通過集群技術(shù)把多臺(tái)服務(wù)器集中成類似一臺(tái)服務(wù)器控制工作,從而提高其穩(wěn)定性和數(shù)據(jù)快速處理能力。由于集群的存儲(chǔ)空間也是有限的,所以,當(dāng)集群中的數(shù)據(jù)記錄比較多時(shí),布隆過濾器占用的內(nèi)存就會(huì)很大,甚至?xí)^服務(wù)器本身的內(nèi)存。
[0005]因此,現(xiàn)有技術(shù)中提出了另一種解決方案,將一個(gè)大集群拆分成多個(gè)小集群,在小集群內(nèi)部構(gòu)建自己的布隆過濾器,并通過分發(fā)器把不同的查詢數(shù)據(jù)分發(fā)到對應(yīng)的集群上。即,固定的用戶被固定的小集群服務(wù)。然而,采用這種方法當(dāng)集群擴(kuò)大時(shí),用戶的數(shù)據(jù)要被重新分配,需要重構(gòu)布隆過濾器,這樣一來就會(huì)增加整個(gè)服務(wù)器系統(tǒng)的應(yīng)用成本。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的主要目的在于提供一種數(shù)據(jù)查詢方法及裝置,以解決現(xiàn)有技術(shù)存在的上述問題,其中:
[0007]根據(jù)本申請的一個(gè)方面的實(shí)施例,提出一種數(shù)據(jù)查詢方法,包括:接收針對查詢數(shù)據(jù)的查詢請求;基于預(yù)定規(guī)則確定所述查詢數(shù)據(jù)對應(yīng)的標(biāo)識(shí);根據(jù)標(biāo)識(shí)從預(yù)先建立的過濾表中獲取所述查詢數(shù)據(jù)對應(yīng)的過濾子表,其中過濾表包含多個(gè)過濾子表,過濾子表中包含數(shù)據(jù)庫中的一個(gè)或多個(gè)數(shù)據(jù)的摘要信息;提取查詢數(shù)據(jù)的摘要信息;將查詢數(shù)據(jù)的摘要信息與過濾子表中的摘要信息進(jìn)行匹配;以及當(dāng)查詢數(shù)據(jù)的摘要信息與過濾子表中的摘要信息相匹配時(shí),從數(shù)據(jù)庫獲取查詢數(shù)據(jù)。
[0008]根據(jù)本申請的另一方面的實(shí)施例,提出一種數(shù)據(jù)查詢裝置,包括:接收模塊,用于接收針對查詢數(shù)據(jù)的查詢請求;過濾模塊,用于基于預(yù)定規(guī)則確定查詢數(shù)據(jù)對應(yīng)的標(biāo)識(shí);獲取模塊,用于根據(jù)標(biāo)識(shí)從預(yù)先建立的過濾表中獲取查詢數(shù)據(jù)對應(yīng)的過濾子表,其中過濾表包含多個(gè)過濾子表,過濾子表中包含數(shù)據(jù)庫中的一個(gè)或多個(gè)數(shù)據(jù)的摘要信息;提取模塊,用于提取查詢數(shù)據(jù)的摘要信息;匹配模塊,用于將查詢數(shù)據(jù)的摘要信息與過濾子表中的摘要信息進(jìn)行匹配;以及查詢模塊,用于當(dāng)查詢數(shù)據(jù)的摘要信息與過濾子表中的摘要信息相匹配時(shí),從數(shù)據(jù)庫獲取查詢數(shù)據(jù)。
[0009]與現(xiàn)有技術(shù)相比,根據(jù)本申請的技術(shù)方案,通過根據(jù)服務(wù)器的單機(jī)內(nèi)存和數(shù)據(jù)庫的容量,對數(shù)據(jù)庫中的數(shù)據(jù)預(yù)先建立包含多個(gè)過濾子表(布隆過濾器)的過濾表,將數(shù)據(jù)庫中的數(shù)據(jù)按照預(yù)定規(guī)則分配給相應(yīng)的過濾子表;針對查詢數(shù)據(jù),只需要按照預(yù)定規(guī)則確定出該查詢數(shù)據(jù)對應(yīng)的過濾子表,然后調(diào)用該占用內(nèi)存較小的過濾子表,就可以確定查詢數(shù)據(jù)是否存在于數(shù)據(jù)庫中。當(dāng)有新數(shù)據(jù)存入數(shù)據(jù)庫時(shí),無需再對數(shù)據(jù)庫中的所有數(shù)據(jù)進(jìn)行重新分配和重構(gòu)過濾表,只需要按照預(yù)定規(guī)則將新數(shù)據(jù)存儲(chǔ)到預(yù)先建立的相應(yīng)過濾子表中即可。因此,使得通過單機(jī)內(nèi)存就能夠處理數(shù)據(jù)庫內(nèi)所有數(shù)據(jù)的布隆過濾器查詢,提高了服務(wù)器性能。
[0010]更進(jìn)一步而言,根據(jù)本申請的技術(shù)方案,為避免因過濾表的誤判所造成的不必要的數(shù)據(jù)查詢過程,當(dāng)通過過濾表確定查詢數(shù)據(jù)存在于數(shù)據(jù)庫時(shí),進(jìn)一步通過篩查緩存來確認(rèn)查詢數(shù)據(jù)是否在數(shù)據(jù)庫中,該篩查緩存中存儲(chǔ)有通過過濾表確定其存在于數(shù)據(jù)庫中但從數(shù)據(jù)庫中卻無法獲取到的數(shù)據(jù)。由此可以避免不必要的查詢資源和時(shí)間的耗費(fèi),更有效地提高服務(wù)器性能以及抵擋惡意的查詢訪問。
【附圖說明】
[0011]此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0012]圖1示出了根據(jù)本申請一個(gè)實(shí)施例的數(shù)據(jù)查詢方法的流程圖;
[0013]圖2示出了根據(jù)本申請一個(gè)實(shí)施例的建立過濾表的方法的流程圖;
[0014]圖3示出了根據(jù)本申請一個(gè)實(shí)施例的確定待處理數(shù)據(jù)對應(yīng)的過濾子表的方法的流程圖;
[0015]圖4示出了根據(jù)本申請另一實(shí)施例的數(shù)據(jù)查詢方法的流程圖;
[0016]圖5示出了根據(jù)本申請又一實(shí)施例的數(shù)據(jù)查詢方法的流程圖;
[0017]圖6示出了根據(jù)本申請?jiān)僖粚?shí)施例的數(shù)據(jù)查詢方法的流程圖;
[0018]圖7示出了用于說明數(shù)據(jù)分組與過濾子表的對應(yīng)關(guān)系的示意圖;以及
[0019]圖8示出了根據(jù)本申請一個(gè)實(shí)施例的數(shù)據(jù)查詢裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0020]本申請的主要思想就在于,根據(jù)服務(wù)器的單機(jī)內(nèi)存和數(shù)據(jù)庫的容量,針對一個(gè)數(shù)據(jù)集群(服務(wù)器數(shù)據(jù)庫)中的數(shù)據(jù),預(yù)先構(gòu)建包含多個(gè)過濾子表(布隆過濾器)的過濾表,使得數(shù)據(jù)庫中具有按照預(yù)定規(guī)則確定的相同標(biāo)識(shí)的數(shù)據(jù)分配給同一過濾子表,該過濾子表由相應(yīng)標(biāo)識(shí)來索引;并且針對查詢數(shù)據(jù),按照預(yù)定規(guī)則確定該查詢數(shù)據(jù)的標(biāo)識(shí)并根據(jù)該標(biāo)識(shí)獲取對應(yīng)索引的過濾子表,以在對數(shù)據(jù)庫進(jìn)行訪問之前確定查詢數(shù)據(jù)是否存在于數(shù)據(jù)庫中,由此減少服務(wù)器對數(shù)據(jù)庫的不必要訪問,提高服務(wù)器性能,并防止對服務(wù)器的攻擊性查詢訪問。
[0021]為使本申請的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請具體實(shí)施例及相應(yīng)的附圖對本申請技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
[0022]參考圖1,圖1示出了根據(jù)本申請一個(gè)實(shí)施例的數(shù)據(jù)查詢方法的流程圖。
[0023]如圖1所示,在步驟SlOl處,接收針對查詢數(shù)據(jù)的查詢請求。
[0024]具體而言,對于查詢數(shù)據(jù)可以是用戶所輸入的郵件地址、博客帳號(hào)等,或者進(jìn)入應(yīng)用系統(tǒng)中系統(tǒng)確認(rèn)信息、查詢應(yīng)用系統(tǒng)中相關(guān)數(shù)據(jù)資源等。
[0025]接下來,在步驟S102處,基于預(yù)定規(guī)則確定查詢數(shù)據(jù)對應(yīng)的標(biāo)識(shí)。
[0026]根據(jù)本申請的實(shí)施例,查詢數(shù)據(jù)對應(yīng)的標(biāo)識(shí),可以是一個(gè)或多個(gè)數(shù)值或是一串字符、圖片等。也可以將該標(biāo)識(shí)理解為查詢數(shù)據(jù)所對應(yīng)的類別。
[0027]根據(jù)本申請的實(shí)施例,在確定查詢數(shù)據(jù)對應(yīng)的標(biāo)識(shí)時(shí),所基于的預(yù)定規(guī)則可以和預(yù)先建立過濾表過程中應(yīng)用的預(yù)定規(guī)則相同。對于該預(yù)定規(guī)則,詳細(xì)說明參見稍后圖3的詳細(xì)描述。
[0028]在步驟S103處,根據(jù)查詢數(shù)據(jù)對應(yīng)的標(biāo)識(shí)從預(yù)先建立的過濾表中獲取該查詢數(shù)據(jù)對應(yīng)的過濾子表。
[0029]在本申請實(shí)施例中,過濾表可以包含多個(gè)過濾子表,過濾子表中可以包含數(shù)據(jù)庫中的一個(gè)或多個(gè)數(shù)據(jù)的摘要信息。
[0030]這里需要指出的是,過濾表(即其中的過濾子表)的作用就在于確定查詢數(shù)據(jù)是否存在于數(shù)據(jù)庫中。該步驟的機(jī)制就在于,在從數(shù)據(jù)庫獲取查詢數(shù)據(jù)之前,先通過過濾表判斷一下該查詢數(shù)據(jù)是否存在于數(shù)據(jù)庫中,如果存在,再去數(shù)據(jù)庫中查找并獲??;如果不存在,就可以不用再去數(shù)據(jù)庫中進(jìn)行查找。由此可以提高數(shù)據(jù)查詢效率,避免不必要的資源浪費(fèi),提聞系統(tǒng)性能。
[0031]根據(jù)本申請的實(shí)施例,過濾表中的過濾子表可以是布隆過濾器。但本申請對過濾子表的具體形式并不做任何限制,而是可以通過本領(lǐng)域已知或未來開發(fā)的其它任意合適方式來實(shí)現(xiàn),只要其能夠用于確定查詢數(shù)據(jù)是否存在于數(shù)據(jù)庫中即可。
[0032]關(guān)于過濾表的建立過程可以參見稍后圖2的詳細(xì)描述。
[0033]接下來,在步驟S104處,提取查詢數(shù)據(jù)的摘要信息。
[0034]具體而言,摘要信息可以是指紋信息,也可以是數(shù)字簽名等可辨別數(shù)據(jù)身份的信息。根據(jù)本申請的實(shí)施例,可以通過哈希算法、數(shù)據(jù)相關(guān)的語義提取算法以及其他相關(guān)算法來提取數(shù)據(jù)的摘要信息。應(yīng)理解到,對于摘要信息的提取,本申請并不限于上述所提出的算法。
[0035]接下來,在步驟S105處,將查詢數(shù)據(jù)的摘要信息與過濾子表中的摘要信息進(jìn)行匹配。
[0036]具體而言,將在步驟S104提取的查詢數(shù)據(jù)的摘要信息與在步驟S103獲取到的過濾子表中的摘要信息進(jìn)行匹配,以根據(jù)匹配結(jié)果確定查詢數(shù)據(jù)是否存在于數(shù)據(jù)庫中。如果匹配失敗,則可以確定查詢數(shù)據(jù)不在數(shù)據(jù)庫中。如果匹配成功,則可以確定查詢數(shù)據(jù)在數(shù)據(jù)庫中,進(jìn)入步驟S106。
[0037]在步驟S106處,從數(shù)據(jù)庫獲取查詢數(shù)據(jù)。
[0038]具體而言,當(dāng)查詢數(shù)據(jù)的摘要信息與過濾子表中的摘要信息相匹配時(shí),則服務(wù)器搜索數(shù)據(jù)庫以獲取查詢數(shù)據(jù)。這里可以通過任意方式從數(shù)據(jù)庫中獲取查詢數(shù)據(jù),本申請對此不作任何限制。
[0039]至此描述了根據(jù)本申請一個(gè)實(shí)施例的數(shù)據(jù)查詢方法。關(guān)于其中過濾表的建立過程,下面結(jié)合圖2進(jìn)行詳細(xì)描述。
[0040]參照圖2,其中示出了根據(jù)本申請一個(gè)實(shí)施例的預(yù)先建立過濾表的方法的流程圖。
[0041]如圖2所示,在步