本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)檢索方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的普及以及大數(shù)據(jù)技術(shù)的發(fā)展,數(shù)據(jù)規(guī)模越來越大,數(shù)據(jù)量成幾何級(jí)數(shù)增長(zhǎng),在這些海量、多樣化的數(shù)據(jù)資源中檢索到指定條件的數(shù)據(jù)就非常的不便,查詢效率無法讓人滿意。
目前,在大數(shù)據(jù)中檢索數(shù)據(jù),傳統(tǒng)的數(shù)據(jù)檢索方法一般是基于Hive的數(shù)據(jù)查詢方法,hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡(jiǎn)單的sql(Structured Query Language,結(jié)構(gòu)化查詢語言)查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行,但是,由于數(shù)據(jù)量越來越大,現(xiàn)有的檢索方式數(shù)據(jù)檢索速度較慢。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提供了一種數(shù)據(jù)檢索方法及裝置,以便于提高數(shù)據(jù)檢索的速度。
第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)檢索方法,該方法包括:
預(yù)先設(shè)定閾值范圍;
確定大數(shù)據(jù)數(shù)據(jù)庫對(duì)應(yīng)的至少兩個(gè)檢索字段;
根據(jù)所述至少兩個(gè)檢索字段,將所述大數(shù)據(jù)數(shù)據(jù)庫按照檢索字段生成與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表;
根據(jù)所形成的統(tǒng)計(jì)數(shù)據(jù)表,按照排列組合的方法將與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合;
根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū);
對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索。
優(yōu)選的,所述根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū),包括:
根據(jù)硬件條件確定組合粒度;
在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;
確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);
根據(jù)所述形成的分區(qū),對(duì)大數(shù)據(jù)數(shù)據(jù)庫進(jìn)行更新,形成帶有與所述檢索字段相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
優(yōu)選的,所述根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū),包括:
根據(jù)硬件條件確定組合粒度;
在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;
確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);
確定當(dāng)前組合對(duì)應(yīng)的分區(qū)個(gè)數(shù);
在所述當(dāng)前組合對(duì)應(yīng)的分區(qū)個(gè)數(shù)位于所述閾值范圍內(nèi)時(shí),將所述大數(shù)據(jù)數(shù)據(jù)庫按照所述當(dāng)前組合進(jìn)行分區(qū)。
優(yōu)選的,
進(jìn)一步包括:確定每一個(gè)分區(qū)對(duì)應(yīng)檢索字段;
所述對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索,包括:根據(jù)所述待檢索內(nèi)容和所述每一個(gè)分區(qū)對(duì)應(yīng)的檢索字段,確定所述待檢索內(nèi)容所在的至少一個(gè)目標(biāo)分區(qū);在所述至少一個(gè)目標(biāo)分區(qū)中檢索所述待檢索內(nèi)容。
優(yōu)選的,
所述在所述至少一個(gè)目標(biāo)分區(qū)中檢索所述待檢索內(nèi)容,包括:根據(jù)所述待檢索內(nèi)容對(duì)所述至少一個(gè)目標(biāo)分區(qū)進(jìn)行優(yōu)先級(jí)設(shè)定;按照優(yōu)先級(jí)從高到低的順序依次檢索各個(gè)目標(biāo)分區(qū)。
第二方面,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)檢索裝置,包括:
存儲(chǔ)單元,用于預(yù)先設(shè)置的閾值范圍;
第一確定單元,用于確定所述大數(shù)據(jù)數(shù)據(jù)庫對(duì)應(yīng)的至少兩個(gè)檢索字段;
生成單元,用于根據(jù)所述至少兩個(gè)檢索字段,將所述大數(shù)據(jù)數(shù)據(jù)庫按照檢索字段生成與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表;
組合單元,用于根據(jù)所形成的統(tǒng)計(jì)數(shù)據(jù)表,按照排列組合的方法將與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合;
劃分單元,用于根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū);
檢索單元,用于對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索。
優(yōu)選地,所述劃分單元,具體用于根據(jù)硬件條件確定組合粒度;在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);根據(jù)所述形成的分區(qū),對(duì)大數(shù)據(jù)數(shù)據(jù)庫進(jìn)行更新,形成帶有與所述檢索字段相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
優(yōu)選地,所述劃分單元,具體用于,根據(jù)硬件條件確定組合粒度;在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);根據(jù)所述形成的分區(qū),對(duì)大數(shù)據(jù)數(shù)據(jù)庫進(jìn)行更新,形成帶有與所述檢索字段相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
優(yōu)選地,
進(jìn)一步包括:第二確定單元,用于確定每一個(gè)分區(qū)對(duì)應(yīng)檢索字段;
所述檢索單元,具體用于根據(jù)所述待檢索內(nèi)容和所述每一個(gè)分區(qū)對(duì)應(yīng)的檢索字段,確定所述待檢索內(nèi)容所在的至少一個(gè)目標(biāo)分區(qū);在所述至少一個(gè)目標(biāo)分區(qū)中檢索所述待檢索內(nèi)容。
優(yōu)選地,所述檢索單元,具體用于根據(jù)所述待檢索內(nèi)容對(duì)所述至少一個(gè)目標(biāo)分區(qū)進(jìn)行優(yōu)先級(jí)設(shè)定;按照優(yōu)先級(jí)從高到低的順序依次檢索各個(gè)目標(biāo)分區(qū)。
可見,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)檢索方法及裝置,預(yù)先設(shè)定每個(gè)分區(qū)的閾值范圍,當(dāng)在大數(shù)據(jù)數(shù)據(jù)庫中檢索至少兩個(gè)或多個(gè)字段,生成的與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行排列組合時(shí),保證各個(gè)當(dāng)前組合的數(shù)據(jù)量分布均勻,當(dāng)前組合分區(qū)后各個(gè)分區(qū)的數(shù)據(jù)量的范圍都在預(yù)先設(shè)定的閾值范圍內(nèi)。因此在對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索時(shí)就提高了數(shù)據(jù)檢索的速度。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一個(gè)實(shí)施例提供的一種數(shù)據(jù)檢索方法流程圖;
圖2是本發(fā)明一個(gè)實(shí)施例提供的另一種數(shù)據(jù)檢索方法流程圖;
圖3是本發(fā)明一個(gè)實(shí)施例提供的一種某兩個(gè)檢索字段生成的統(tǒng)計(jì)數(shù)據(jù)表;
圖4是本發(fā)明一個(gè)實(shí)施例提供的一種裝置所在設(shè)備的硬件架構(gòu)圖;
圖5是本發(fā)明一個(gè)實(shí)施例提供的一種數(shù)據(jù)檢索裝置結(jié)構(gòu)圖;
圖6是本發(fā)明一個(gè)實(shí)施例提供的另一種數(shù)據(jù)檢索裝置結(jié)構(gòu)圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)檢索方法,該方法可以包括以下步驟:
步驟101:預(yù)先設(shè)置閾值范圍;
步驟102:確定所述大數(shù)據(jù)數(shù)據(jù)庫對(duì)應(yīng)的至少兩個(gè)檢索字段;
步驟103:根據(jù)所述至少兩個(gè)檢索字段,將所述大數(shù)據(jù)數(shù)據(jù)庫按照檢索字段生成與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表;
步驟104:根據(jù)所形成的統(tǒng)計(jì)數(shù)據(jù)表,按照排列組合的方法將與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合;
步驟105:根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū);
步驟106:對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索。
根據(jù)上述實(shí)施例,可預(yù)先設(shè)定每個(gè)分區(qū)的閾值范圍,當(dāng)在大數(shù)據(jù)數(shù)據(jù)庫中檢索至少兩個(gè)或多個(gè)字段,生成的與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行排列組合時(shí),保證各個(gè)當(dāng)前組合的數(shù)據(jù)量分布均勻,當(dāng)前組合分區(qū)后各個(gè)分區(qū)的數(shù)據(jù)量的范圍都在預(yù)先設(shè)定的閾值范圍內(nèi)。因此,在對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索時(shí)就提高了數(shù)據(jù)檢索的速度。
在本發(fā)明一個(gè)實(shí)施例中,因?yàn)橛布h(huán)境、硬件型號(hào)等硬件條件是不一樣的,為了更好保證統(tǒng)計(jì)數(shù)據(jù)表可以根據(jù)組合粒度進(jìn)行組合,因此就需要先根據(jù)硬件條件確定組合粒度。所述根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū),包括:
根據(jù)硬件條件確定組合粒度;
在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;
確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);
根據(jù)所述形成的分區(qū),對(duì)大數(shù)據(jù)數(shù)據(jù)庫進(jìn)行更新,形成帶有與所述檢索字段相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
其中,該閾值范圍是對(duì)每一個(gè)分區(qū)中的數(shù)據(jù)量進(jìn)行限定的,例如,該閾值范圍可以是100MB-1GB,在進(jìn)行分區(qū)時(shí),對(duì)至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合,得到了當(dāng)前組合之后,該組合對(duì)應(yīng)的每一個(gè)分區(qū)的數(shù)據(jù)量均位于上述閾值范圍時(shí),則按照當(dāng)前的組合進(jìn)行分區(qū)。如果得到了當(dāng)前組合之后,該組合對(duì)應(yīng)的分區(qū)中有的分區(qū)的數(shù)據(jù)量沒有在閾值的范圍之內(nèi),那么就需要在對(duì)所述的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行重新組合,直到得到的組合對(duì)應(yīng)的每一個(gè)分區(qū)的數(shù)據(jù)量均在上述的閾值范圍內(nèi)為止。
根據(jù)上述實(shí)施例,根據(jù)硬件條件的具體情況確定組合粒度,所述得到的統(tǒng)計(jì)數(shù)據(jù)表根據(jù)所述得到的組合粒度進(jìn)行組合,得到的當(dāng)前組合在進(jìn)行分區(qū),使得到每個(gè)分區(qū)的數(shù)據(jù)量都可達(dá)到均勻分布,每個(gè)分區(qū)的數(shù)據(jù)量均在預(yù)先設(shè)定的閾值范圍內(nèi),在各個(gè)分區(qū)中檢索待檢索內(nèi)容時(shí)就可以提高數(shù)據(jù)檢索的速度。
在本發(fā)明一個(gè)實(shí)施例中,如果當(dāng)前組合對(duì)應(yīng)的分區(qū)數(shù)量很多或數(shù)據(jù)量很少,都會(huì)導(dǎo)致在當(dāng)前組合對(duì)應(yīng)的分區(qū)中檢索待檢索內(nèi)容時(shí),檢索速度會(huì)變慢,因此,在進(jìn)行所述當(dāng)前組合進(jìn)行分區(qū)后,要確定當(dāng)前組合對(duì)應(yīng)的分區(qū)個(gè)數(shù),所述根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū),包括:
根據(jù)硬件條件確定組合粒度;
在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;
確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);
確定當(dāng)前組合對(duì)應(yīng)的分區(qū)個(gè)數(shù);
在所述當(dāng)前組合對(duì)應(yīng)的分區(qū)個(gè)數(shù)位于所述閾值范圍內(nèi)時(shí),將所述大數(shù)據(jù)數(shù)據(jù)庫按照所述當(dāng)前組合進(jìn)行分區(qū)。
其中,按照所述當(dāng)前組合進(jìn)行分區(qū)。統(tǒng)計(jì)確定所述當(dāng)前組合對(duì)應(yīng)的分區(qū)分?jǐn)?shù)總和,如果得到的分區(qū)個(gè)數(shù)綜合沒有達(dá)到預(yù)先設(shè)定的分區(qū)個(gè)數(shù),比這個(gè)預(yù)先設(shè)定的分區(qū)個(gè)數(shù)多或這少,那么就需要在對(duì)這些當(dāng)前組合進(jìn)行重新分區(qū),直到得到的分區(qū)數(shù)量為預(yù)先設(shè)定的分區(qū)個(gè)數(shù)為止。這個(gè)預(yù)先設(shè)定的分區(qū)個(gè)數(shù),就需要根據(jù)業(yè)務(wù)具體確定。
根據(jù)上述實(shí)施例,根據(jù)硬件條件的具體情況確定組合粒度,所述得到的統(tǒng)計(jì)數(shù)據(jù)表根據(jù)所述得到的組合粒度進(jìn)行組合,得到的當(dāng)前組合在進(jìn)行分區(qū),使得到每個(gè)分區(qū)的數(shù)據(jù)量都可達(dá)到均勻分布,然后統(tǒng)計(jì)所得到的分區(qū)個(gè)數(shù)是否滿足根據(jù)所述設(shè)置的閾值范圍且根據(jù)具體的業(yè)務(wù)來確定分區(qū)的個(gè)數(shù)范圍,如果分區(qū)個(gè)數(shù)比這個(gè)分區(qū)個(gè)數(shù)多或少,都會(huì)影響到在檢索到待檢索內(nèi)容的檢索速度,因此就需要確認(rèn)分區(qū)的個(gè)數(shù)是否滿足根據(jù)設(shè)置閾值范圍且根據(jù)具體的業(yè)務(wù)來確定分區(qū)的個(gè)數(shù)要求,這樣在各個(gè)分區(qū)中檢索待檢索內(nèi)容時(shí)就可以提高數(shù)據(jù)檢索的速度。
在本發(fā)明的一個(gè)實(shí)施例中,如果在檢索的待檢索內(nèi)容時(shí),沒有確定目標(biāo)分區(qū),而是在所有的分區(qū)中檢索待檢索內(nèi)容,會(huì)導(dǎo)致數(shù)據(jù)檢索的速度較慢。因此就需要確定待檢索內(nèi)容所在的目標(biāo)分區(qū)。包括:
確定每一個(gè)分區(qū)對(duì)應(yīng)檢索字段;
根據(jù)所述待檢索內(nèi)容和所述每一個(gè)分區(qū)對(duì)應(yīng)的檢索字段,確定所述待檢索內(nèi)容所在的至少一個(gè)目標(biāo)分區(qū);在所述至少一個(gè)目標(biāo)分區(qū)中檢索所述待檢索內(nèi)容。
其中,可根據(jù)具體的業(yè)務(wù)需求來確定待檢索內(nèi)容,所在的目標(biāo)分區(qū)。主要看待檢索內(nèi)容與各個(gè)分區(qū)對(duì)應(yīng)的檢索字段的匹配程度,匹配度高的分區(qū)即為目標(biāo)分區(qū),目標(biāo)分區(qū)可以有至少一個(gè)或多個(gè)。
在本發(fā)明的一個(gè)實(shí)施例中,因?yàn)樵谒龃_定的目標(biāo)分區(qū)可能存在一個(gè)或多個(gè)目標(biāo)分區(qū),為了保證在多個(gè)目標(biāo)分區(qū)中快速的找到所述的待檢索內(nèi)容,因此就需要在多個(gè)目標(biāo)分區(qū)中確定優(yōu)先級(jí)最高的目標(biāo)分區(qū),所述在所述至少一個(gè)目標(biāo)分區(qū)中檢索所述待檢索內(nèi)容,包括:根據(jù)所述待檢索內(nèi)容對(duì)所述至少一個(gè)目標(biāo)分區(qū)進(jìn)行優(yōu)先級(jí)設(shè)定;按照優(yōu)先級(jí)從高到低的順序依次檢索各個(gè)目標(biāo)分區(qū)。
其中,所述目標(biāo)分區(qū)可以根據(jù)分區(qū)中數(shù)據(jù)量的大小進(jìn)行排序,數(shù)據(jù)量大的即為優(yōu)先級(jí)高的目標(biāo)分區(qū),在檢索待檢索內(nèi)容時(shí)按照優(yōu)先級(jí)從高到低的順序依次檢索,直到檢索出待檢索內(nèi)容時(shí)為止。
下面通過一個(gè)具體的例子以及結(jié)合附圖,對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)說明。
如圖2所示,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)檢索方法,該方法可以包括以下步驟:
步驟201:設(shè)置分區(qū)的閾值范圍。
其中,該閾值范圍至少可以對(duì)應(yīng)以下兩種形式:
形式1:分區(qū)數(shù)據(jù)量大小
該閾值范圍可以根據(jù)硬件環(huán)境、硬件型號(hào)、空間大小和數(shù)據(jù)總量中的至少一種來決定,例如,一般根據(jù)硬件條件,可以將閾值范圍設(shè)置為100MB至1GB。
形式2:分區(qū)個(gè)數(shù)
根究具體的業(yè)務(wù)來確定分區(qū)的個(gè)數(shù),例如,大數(shù)據(jù)數(shù)據(jù)庫為10GB,設(shè)置分區(qū)的個(gè)數(shù)為20個(gè)。
步驟202:確定大數(shù)據(jù)數(shù)據(jù)庫對(duì)應(yīng)的至少兩個(gè)檢索字段。
其中,在大數(shù)據(jù)數(shù)據(jù)庫可以包括多個(gè)檢索字段,例如,INDUSTRY、PROVINCE、COUNTRY、SCHOOL、CINEMA等檢索字段,本實(shí)施例以INDUSTRY和PROVINCE進(jìn)行說明。
確定檢索字段為INDUSTRY和PROVINCE;在大數(shù)據(jù)數(shù)據(jù)庫中輸入檢索字段INDUSTRY和PROVINCE。
步驟203:根據(jù)所述至少兩個(gè)檢索字段,將所述大數(shù)據(jù)數(shù)據(jù)庫按照檢索字段生成與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表;
例如將所述步驟202中所述的兩個(gè)檢索字段INDUSTRY和PROVINCE輸入大數(shù)據(jù)數(shù)據(jù)庫后,大數(shù)據(jù)數(shù)據(jù)庫按照檢索字段INDUSTRY和PROVINCE生成與這兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表,如圖3所示,并統(tǒng)計(jì)出與這兩個(gè)檢索字段相對(duì)應(yīng)的數(shù)據(jù)的數(shù)量,例如,如圖3所示,與家居建材相對(duì)應(yīng)的河北省的數(shù)量為165472個(gè)。
步驟204:根據(jù)硬件條件確定組合粒度。
根據(jù)具體的硬件環(huán)境、硬件型號(hào)等確定組合粒度,組合粒度會(huì)根據(jù)硬件條件不同發(fā)生變化。例如,比如使用某公司生產(chǎn)的硬件組合粒度為5,可能使用其他公司生產(chǎn)的硬件組合粒度就為8。
步驟205:根據(jù)所形成的統(tǒng)計(jì)數(shù)據(jù)表,按照排列組合的方法將與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合;
例如,如圖3所示,在大數(shù)據(jù)數(shù)據(jù)庫按照檢索字段INDUSTRY和PROVINCE生成與這兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中,比如可以將都是PROVINCE都是河北省的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,也可以將INDUSTRY都是家具建材的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,另外,比如檢索字段INDUSTRY有A種,檢索字段PROVINCE有B種,那么組合的數(shù)量就為A與B的乘積。組合時(shí)要在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述步驟204中確定的組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合。
步驟206:判斷所述當(dāng)前組合的數(shù)據(jù)量是否在所述閾值范圍內(nèi),然后進(jìn)行分區(qū)。
當(dāng)前組合進(jìn)行分區(qū)后,判斷各個(gè)分區(qū)上的數(shù)據(jù)量及個(gè)數(shù)是否在所述步驟201預(yù)設(shè)的閾值范圍內(nèi)。例如,判斷形式如下:
所述步驟201中,該閾值范圍至少可以對(duì)應(yīng)以下兩種形式:
形式1:分區(qū)數(shù)據(jù)量大小
所述分區(qū)后,判斷每個(gè)分區(qū)的數(shù)據(jù)量的大小是否在事先預(yù)定的閾值范圍內(nèi)。例如,根據(jù)硬件條件,將閾值范圍設(shè)置為100MB至1GB。若分區(qū)大小在100MB至1GB間,那么這個(gè)分區(qū)就為合格分區(qū),則執(zhí)行步驟207。若分區(qū)大小在100MB至1GB之外,也就是小于100MB或者大于1GB,那么這個(gè)就不是合格的分區(qū),則需要執(zhí)行所述步驟205。例如,查看分區(qū)數(shù)據(jù)量的大小可執(zhí)行g(shù)roup by這個(gè)sql語句獲取各個(gè)分區(qū)的數(shù)據(jù)量。
形式2:分區(qū)個(gè)數(shù)
所述分區(qū)后,判斷分區(qū)的總個(gè)數(shù)是否在事先預(yù)設(shè)的分區(qū)的個(gè)數(shù),例如,大數(shù)據(jù)數(shù)據(jù)庫為10GB,那么可以根據(jù)所述的閾值范圍100MB至1GB,設(shè)置分區(qū)的個(gè)數(shù)為20個(gè)。所述分區(qū)后,若分區(qū)的總個(gè)數(shù)在預(yù)設(shè)的分區(qū)個(gè)數(shù)范圍內(nèi),則為合格的分區(qū)個(gè)數(shù),則執(zhí)行步驟207。若分區(qū)的總個(gè)數(shù)在預(yù)設(shè)的分區(qū)個(gè)數(shù)范圍外,則為不合格分區(qū)個(gè)數(shù),則執(zhí)行步驟205。
步驟207:根據(jù)所述形成的分區(qū),對(duì)大數(shù)據(jù)數(shù)據(jù)庫進(jìn)行更新,形成帶有與所述檢索字段相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
例如,根據(jù)206,進(jìn)行分區(qū)之后,大數(shù)據(jù)數(shù)據(jù)庫更新后,就形成帶有檢索字段INDUSTRY和PROVINCE相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
步驟208:確定每一個(gè)分區(qū)對(duì)應(yīng)檢索字段。
例如,確定的檢索字段INDUSTRY和PROVINCE相應(yīng)分區(qū)后,就需要根據(jù)具體業(yè)務(wù)要求,確定各個(gè)分區(qū)上所對(duì)應(yīng)的檢索字段的具體內(nèi)容,比如本例中,確認(rèn)每個(gè)分區(qū)中,檢索字段INDUSTRY和PROVINCE所對(duì)應(yīng)的具體檢索字段的名稱。
步驟209:根據(jù)所述待檢索內(nèi)容和所述每一個(gè)分區(qū)對(duì)應(yīng)的檢索字段,確定所述待檢索內(nèi)容所在的至少一個(gè)目標(biāo)分區(qū)。
例如,待檢索內(nèi)容為省份名稱河北省,那就需要和每一個(gè)分區(qū)對(duì)應(yīng)的檢索字段的內(nèi)容進(jìn)行匹對(duì),找出至少含有一個(gè)檢索字段PROVINCE為河北省的分區(qū)。
步驟210:根據(jù)所述待檢索內(nèi)容對(duì)所述至少一個(gè)目標(biāo)分區(qū)進(jìn)行優(yōu)先級(jí)設(shè)定;按照優(yōu)先級(jí)從高到低的順序依次檢索各個(gè)目標(biāo)分區(qū)。
例如,這個(gè)與待檢索內(nèi)容相應(yīng)的目標(biāo)分區(qū)有3個(gè),這3個(gè)目標(biāo)分區(qū)的數(shù)據(jù)量各不相同,就需要對(duì)各個(gè)目標(biāo)分區(qū)進(jìn)行優(yōu)先級(jí)排序。對(duì)各個(gè)目標(biāo)分區(qū)進(jìn)行待檢索內(nèi)容檢索操作的時(shí)候,可優(yōu)先根據(jù)所述目標(biāo)分區(qū)字段進(jìn)行查詢,例如:可用語句select*from where column1=?And column2=?And column3=?1和2是分區(qū)字段,3不是分區(qū)字段,檢索時(shí)按照分區(qū)字段的先后羅列where后面的待檢索內(nèi)容。
步驟211:在所述的目標(biāo)分區(qū)當(dāng)中檢索所述的待檢索內(nèi)容。
例如,待檢索內(nèi)容為河北省,就按照優(yōu)先級(jí)從高到低的順序依次檢索各個(gè)目標(biāo)分區(qū)。直到得到想要的待檢索內(nèi)容為止。這個(gè)檢索待檢索內(nèi)容時(shí),可用group by、Distinct等sql語句獲取所需要的檢索內(nèi)容。
如圖4、圖5所示,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)檢索裝置。裝置實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。從硬件層面而言,如圖4所示,為本發(fā)明實(shí)施例提供的數(shù)據(jù)檢索裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖4所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的設(shè)備通常還可以包括其他硬件,如負(fù)責(zé)處理報(bào)文的轉(zhuǎn)發(fā)芯片等等。以軟件實(shí)現(xiàn)為例,如圖5所示,作為一個(gè)邏輯意義上的裝置,是通過其所在設(shè)備的CPU將非易失性存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。本實(shí)施例提供的數(shù)據(jù)檢索裝置,包括:
存儲(chǔ)單元501,用于預(yù)先設(shè)置的閾值范圍;
第一確定單元502,用于確定所述大數(shù)據(jù)數(shù)據(jù)庫對(duì)應(yīng)的至少兩個(gè)檢索字段;
生成單元503,用于根據(jù)所述至少兩個(gè)檢索字段,將所述大數(shù)據(jù)數(shù)據(jù)庫按照檢索字段生成與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表;
組合單元504,用于根據(jù)所形成的統(tǒng)計(jì)數(shù)據(jù)表,按照排列組合的方法將與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合;
劃分單元505,用于根據(jù)所述閾值范圍,將所述統(tǒng)計(jì)數(shù)據(jù)表按照所述當(dāng)前組合進(jìn)行分區(qū);
檢索單元506,用于對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索。
在本發(fā)明一個(gè)實(shí)施例中,所述劃分單元505,具體用于根據(jù)硬件條件確定組合粒度;在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);根據(jù)所述形成的分區(qū),對(duì)大數(shù)據(jù)數(shù)據(jù)庫進(jìn)行更新,形成帶有與所述檢索字段相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
在本發(fā)明一個(gè)實(shí)施例中,所述劃分單元505,具體用于,根據(jù)硬件條件確定組合粒度;在所述與至少兩個(gè)檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表中任意選擇與所述組合粒度相同的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行組合,得到當(dāng)前組合;確定當(dāng)前組合的數(shù)據(jù)量分布情況,確定當(dāng)前組合數(shù)據(jù)量大小是否在所述閾值范圍內(nèi),按照所述組合進(jìn)行分區(qū);根據(jù)所述形成的分區(qū),對(duì)大數(shù)據(jù)數(shù)據(jù)庫進(jìn)行更新,形成帶有與所述檢索字段相應(yīng)分區(qū)的大數(shù)據(jù)數(shù)據(jù)庫。
在本發(fā)明一個(gè)實(shí)施例中,請(qǐng)參考圖6,該數(shù)據(jù)檢索裝置可以進(jìn)一步包括:
第二確定單元601,用于確定每一個(gè)分區(qū)對(duì)應(yīng)檢索字段;
所述檢索單元506,具體用于根據(jù)所述待檢索內(nèi)容和所述每一個(gè)分區(qū)對(duì)應(yīng)的檢索字段,確定所述待檢索內(nèi)容所在的至少一個(gè)目標(biāo)分區(qū);在所述至少一個(gè)目標(biāo)分區(qū)中檢索所述待檢索內(nèi)容。
在本發(fā)明一個(gè)實(shí)施例中,所述檢索單元506,具體用于根據(jù)所述待檢索內(nèi)容對(duì)所述至少一個(gè)目標(biāo)分區(qū)進(jìn)行優(yōu)先級(jí)設(shè)定;按照優(yōu)先級(jí)從高到低的順序依次檢索各個(gè)目標(biāo)分區(qū)。
綜上,本發(fā)明各個(gè)實(shí)施例至少可以實(shí)現(xiàn)如下有益效果:
1、在本發(fā)明實(shí)施例中,可預(yù)先設(shè)定每個(gè)分區(qū)的閾值范圍,當(dāng)在大數(shù)據(jù)數(shù)據(jù)庫中檢索至少兩個(gè)或多個(gè)字段,生成的與檢索字段相對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)表進(jìn)行排列組合時(shí),保證各個(gè)當(dāng)前組合的數(shù)據(jù)量分布均勻,當(dāng)前組合分區(qū)后各個(gè)分區(qū)的數(shù)據(jù)量的范圍都在預(yù)先設(shè)定的閾值范圍內(nèi)。因此,在對(duì)待檢索內(nèi)容在各個(gè)分區(qū)中進(jìn)行檢索時(shí)就提高了數(shù)據(jù)檢索的速度。
2、在本發(fā)明實(shí)施例中,根據(jù)硬件條件的具體情況確定組合粒度,所述得到的統(tǒng)計(jì)數(shù)據(jù)表根據(jù)所述得到的組合粒度進(jìn)行組合,得到的當(dāng)前組合在進(jìn)行分區(qū),使得到每個(gè)分區(qū)的數(shù)據(jù)量都可達(dá)到均勻分布,每個(gè)分區(qū)的數(shù)據(jù)量均在預(yù)先設(shè)定的閾值范圍內(nèi),在各個(gè)分區(qū)中檢索待檢索內(nèi)容時(shí)就可以提高數(shù)據(jù)檢索的速度。
3、在本發(fā)明實(shí)施例中,在確定的所述目標(biāo)分區(qū)時(shí)可能存在一個(gè)或多個(gè)目標(biāo)分區(qū),為了保證在多個(gè)目標(biāo)分區(qū)中快速的找到所述的待檢索內(nèi)容,可以對(duì)多個(gè)目標(biāo)分區(qū)進(jìn)行優(yōu)先級(jí)排序,所述待檢索內(nèi)容按照,目標(biāo)分區(qū)的優(yōu)先級(jí)從高到低的順序依次檢索各個(gè)目標(biāo)分區(qū)。這樣就提高了在目標(biāo)分區(qū)中檢索到待檢索內(nèi)容的速度,可能在優(yōu)先級(jí)最高的目標(biāo)分區(qū)中就找到了所要檢索的待檢索內(nèi)容,其他的優(yōu)先級(jí)低的目標(biāo)分區(qū)就不需要在執(zhí)行檢索,提高了數(shù)據(jù)檢索的速度。
上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。
需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要方法、物品或者設(shè)備中還存在另外的相同因素。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)在計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)中。
最后需要說明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。