本發(fā)明涉及計(jì)算機(jī)通訊技術(shù)領(lǐng)域,特別涉及數(shù)據(jù)查詢方法和裝置。
背景技術(shù):
在屬于大數(shù)據(jù)時(shí)代的當(dāng)今,對于數(shù)據(jù)查詢而言,通常利用基于Solr和Zookeeper的分布式搜索方案SolrCloud,所謂的Solr是高性能且基于Lucene的全文搜索服務(wù)器,所謂的Zookeeper是為分布式應(yīng)用提供一致性服務(wù)的功能軟件。
現(xiàn)有技術(shù)中,利用SolrCloud的數(shù)據(jù)查詢系統(tǒng)中包括:節(jié)點(diǎn)服務(wù)器集群,其中,節(jié)點(diǎn)服務(wù)器集群中的各個(gè)節(jié)點(diǎn)服務(wù)器為Solr且存儲有至少一個(gè)用于數(shù)據(jù)查詢的數(shù)據(jù)索引,其中,數(shù)據(jù)索引為查詢的基本單位;并且,在數(shù)據(jù)查詢過程中,每一節(jié)點(diǎn)服務(wù)器均可以為作為接收數(shù)據(jù)查詢請求的目標(biāo)服務(wù)器。具體的,對于該利用SolrCloud的數(shù)據(jù)查詢系統(tǒng)而言,具體的數(shù)據(jù)查詢方法包括:當(dāng)?shù)谝还?jié)點(diǎn)服務(wù)器接收到數(shù)據(jù)查詢請求后,獲得該數(shù)據(jù)查詢請求所攜帶的查詢條件信息以及n個(gè)索引標(biāo)識,確定出n個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器,分別構(gòu)建每個(gè)索引標(biāo)識所對應(yīng)的查詢子請求并發(fā)送至相應(yīng)的第二節(jié)點(diǎn)服務(wù)器,其中,查詢子請求攜帶有相應(yīng)索引標(biāo)識以及查詢條件信息;而第二節(jié)點(diǎn)服務(wù)器在接收到查詢子請求后,會對該查詢子請求所攜帶的索引標(biāo)識所對應(yīng)的數(shù)據(jù)索引,按照查詢條件信息進(jìn)行查詢,得到該查詢子請求所對應(yīng)的m條備用查詢結(jié)果,并反饋給第一節(jié)點(diǎn)服務(wù)器;進(jìn)而,第一節(jié)點(diǎn)服務(wù)器最終會得到n*m條備用查詢結(jié)果,并對n*m條備用查詢結(jié)果篩選處理,篩選得到數(shù)據(jù)查詢請求所對應(yīng)的m條查詢結(jié)果。
盡管上述數(shù)據(jù)查詢方法能夠?qū)崿F(xiàn)數(shù)據(jù)的精準(zhǔn)查詢,但是,由于每個(gè)索引標(biāo)識均會對應(yīng)一定數(shù)量的查詢結(jié)果,第一節(jié)點(diǎn)服務(wù)器需要對所有索引標(biāo)識所對應(yīng)的查詢結(jié)果進(jìn)行篩選處理,因此,當(dāng)查詢的數(shù)據(jù)量達(dá)到一定規(guī)模后,第一節(jié)點(diǎn)服務(wù)器所需處理的數(shù)據(jù)量會相當(dāng)大,這時(shí)查詢性能就會明顯下降,往往會導(dǎo)致 第一節(jié)點(diǎn)服務(wù)器的崩潰,進(jìn)而導(dǎo)致節(jié)點(diǎn)服務(wù)器集群崩潰。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例公開了數(shù)據(jù)查詢方法和裝置,可以有效分擔(dān)接收到的數(shù)據(jù)查詢請求的節(jié)點(diǎn)服務(wù)器的計(jì)算壓力,提高節(jié)點(diǎn)服務(wù)器集群的性能和穩(wěn)定性。具體技術(shù)方案如下:
第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查詢方法,應(yīng)用于第一節(jié)點(diǎn)服務(wù)器,所述第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,所述方法包括:
在獲得數(shù)據(jù)查詢請求后,解析得到所述數(shù)據(jù)查詢請求所攜帶的至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息;
確定所述至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器,所述第二節(jié)點(diǎn)服務(wù)器為所述數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器;
分別為每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,所述聚合請求攜帶有所述查詢條件信息以及該第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識;
將所構(gòu)建的聚合請求發(fā)送至相應(yīng)的第二節(jié)點(diǎn)服務(wù)器,以使得第二節(jié)點(diǎn)服務(wù)器確定所述聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,基于所述聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果,從所得到的初級查詢結(jié)果中,篩選得到所述聚合請求所對應(yīng)的備用查詢結(jié)果,并將所述備用查詢結(jié)果反饋給所述第一節(jié)點(diǎn)服務(wù)器;
接收所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果;
從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
較佳的,所述確定所述至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器,包括:
從預(yù)先存儲的數(shù)據(jù)索引的索引標(biāo)識與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系中,確定所述至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器。
較佳的,所述從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果,包括:
按照與所述查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果進(jìn)行排序處理;
從排序處理所得的排序隊(duì)列中,選擇符合所述查詢條件信息的部分備用查詢結(jié)果;
將所選擇得到的部分備用查詢結(jié)果作為所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
較佳的,在所述從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果之后,所述方法還包括:
向所述數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回所述目標(biāo)查詢結(jié)果。
較佳的,所述向所述數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回所述目標(biāo)查詢結(jié)果,包括:
以與所述查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,向所述數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回所述目標(biāo)查詢結(jié)果。
第二方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查詢方法,應(yīng)用于第二節(jié)點(diǎn)服務(wù)器,所述第二節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,所述方法包括:
在接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送的聚合請求后,確定所述聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,所述聚合請求為第一節(jié)點(diǎn)服務(wù)器在獲得攜帶有至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息的數(shù)據(jù)查詢請求后所構(gòu)建并發(fā)送的,其中,所述聚合請求攜帶有查詢條件信息以及所述第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識,所述第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器;
基于所述聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果;
從所得到的初級查詢結(jié)果中,篩選得到所述聚合請求所對應(yīng)的備用查詢結(jié)果;
將所述備用查詢結(jié)果反饋給所述第一節(jié)點(diǎn)服務(wù)器,以使得所述第一節(jié)點(diǎn)服務(wù)器從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
較佳的,所述從所得到的初級查詢結(jié)果中,篩選得到所述聚合請求所對應(yīng)的備用查詢結(jié)果,包括:
按照與所述查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所得到的初級查詢結(jié)果進(jìn)行排序處理;
從排序處理所得的排序隊(duì)列中,選擇符合所述查詢條件信息的部分初級查詢結(jié)果;
將所選擇得到的部分初級查詢結(jié)果作為向第一節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果。
第三方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查詢裝置,應(yīng)用于第一節(jié)點(diǎn)服務(wù)器,所述第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,所述裝置包括:
解析模塊:用于在獲得數(shù)據(jù)查詢請求后,解析得到所述數(shù)據(jù)查詢請求所攜帶的至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息;
確定模塊:用于確定所述至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器,所述第二節(jié)點(diǎn)服務(wù)器為所述數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器;
聚合請求構(gòu)建模塊:用于分別為每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,所述聚合請求攜帶有所述查詢條件信息以及該第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識;
聚合請求發(fā)送模塊:將所構(gòu)建的聚合請求發(fā)送至相應(yīng)的第二節(jié)點(diǎn)服務(wù)器,以使得第二節(jié)點(diǎn)服務(wù)器確定所述聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的 數(shù)據(jù)索引,基于所述聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果,從所得到的初級查詢結(jié)果中,篩選得到所述聚合請求所對應(yīng)的備用查詢結(jié)果,并將所述備用查詢結(jié)果反饋給所述第一節(jié)點(diǎn)服務(wù)器;
目標(biāo)查詢結(jié)果接收模塊:用于接收所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果;
目標(biāo)查詢結(jié)果篩選確定模塊:用于從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
較佳的,所述確定模塊具體用于:
從預(yù)先存儲的數(shù)據(jù)索引的索引標(biāo)識與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系中,確定所述至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器。
較佳的,所述目標(biāo)查詢結(jié)果篩選模塊包括:排序單元、篩選單元和目標(biāo)查詢結(jié)果確定單元;
所述排序單元:用于按照與所述查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果進(jìn)行排序處理;
所述篩選單元:用于從排序處理所得的排序隊(duì)列中,選擇符合所述查詢條件信息的部分備用查詢結(jié)果;
所述目標(biāo)查詢結(jié)果確定單元:用于將所選擇得到的部分備用查詢結(jié)果作為所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
較佳的,本發(fā)明實(shí)施例所提供的數(shù)據(jù)查詢裝置還包括目標(biāo)查詢結(jié)果返回模塊;
所述目標(biāo)查詢結(jié)果返回模塊:用于在所述從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果之后,向所述數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回所述目標(biāo)查詢結(jié)果。
較佳的,所述目標(biāo)查詢結(jié)果返回模塊具體用于:
以與所述查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,向所述數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回所述目標(biāo)查詢結(jié)果。
第四方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查詢裝置,應(yīng)用于第二節(jié)點(diǎn)服務(wù)器,所述第二節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,所述裝置包括:
數(shù)據(jù)索引確定模塊:用于在接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送聚合請求后,確定所述聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,所述聚合請求為第一節(jié)點(diǎn)服務(wù)器在獲得攜帶有至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息的數(shù)據(jù)查詢請求后所構(gòu)建并發(fā)送的,其中,所述聚合請求攜帶有查詢條件信息以及所述第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識,所述第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器;
初級查詢結(jié)果確定模塊:用于基于所述聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果;
備用查詢結(jié)果篩選確定模塊:用于從所得到的初級查詢結(jié)果中,篩選得到所述聚合請求所對應(yīng)的備用查詢結(jié)果;
備用查詢結(jié)果反饋模塊:用于將所述備用查詢結(jié)果反饋給所述第一節(jié)點(diǎn)服務(wù)器,以使得所述第一節(jié)點(diǎn)服務(wù)器從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
較佳的,所述備用查詢結(jié)果篩選確定模塊包括:排序處理單元、初級查詢結(jié)果選擇單元和備用查詢結(jié)果確定單元;
所述排序處理單元:用于按照與所述查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所得到的初級查詢結(jié)果進(jìn)行排序處理;
所述初級查詢結(jié)果選擇單元:用于從排序處理所得的排序隊(duì)列中,選擇符合所述查詢條件信息的部分初級查詢結(jié)果;
所述備用查詢結(jié)果確定單元:用于將所選擇得到的部分初級查詢結(jié)果作為向第一節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果。
與現(xiàn)有技術(shù)相比,本方案中,對于每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,該聚合請求包括相應(yīng)第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識,而并非以獨(dú)立的數(shù)據(jù)索引為單位構(gòu)建數(shù)據(jù)查詢子請求,這樣使得第二節(jié)點(diǎn)服務(wù)器可以對所 查詢到的至少一個(gè)數(shù)據(jù)索引所對應(yīng)的查詢結(jié)果進(jìn)行匯總篩選,進(jìn)而將數(shù)據(jù)量較少的匯總篩選結(jié)果發(fā)送給第一節(jié)點(diǎn)服務(wù)器,而第一節(jié)點(diǎn)服務(wù)器僅僅對數(shù)據(jù)量較少的匯總篩選結(jié)果進(jìn)行再次匯總篩選即可,因此,實(shí)現(xiàn)了有效分擔(dān)接收到的數(shù)據(jù)查詢請求的節(jié)點(diǎn)服務(wù)器的計(jì)算壓力,提高節(jié)點(diǎn)服務(wù)器集群的性能和穩(wěn)定性的目的。
當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品或方法必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)查詢方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的獲得目標(biāo)查詢結(jié)果的方法的流程示意圖;
圖3為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)查詢方法的流程示意圖;
圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)查詢裝置的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)查詢裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
為了有效分擔(dān)接收到的數(shù)據(jù)查詢請求的節(jié)點(diǎn)服務(wù)器的計(jì)算壓力,提高節(jié)點(diǎn)服務(wù)器集群的性能和穩(wěn)定性,本發(fā)明實(shí)施例提供了數(shù)據(jù)查詢方法和裝置。
第一方面,本發(fā)明實(shí)施例從接收到數(shù)據(jù)查詢請求的第一節(jié)點(diǎn)服務(wù)器的角度,提供了一種數(shù)據(jù)查詢方法。需要說明的是,本實(shí)施例所提供的一種 數(shù)據(jù)查詢方法應(yīng)用于第一節(jié)點(diǎn)服務(wù)器,該第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,即每一節(jié)點(diǎn)服務(wù)器均可以執(zhí)行本實(shí)施例所提供的數(shù)據(jù)查詢方法;并且,在實(shí)際應(yīng)用中,該數(shù)據(jù)查詢系統(tǒng)為利用分布式搜索方案SolrCloud的系統(tǒng)。
如圖1所示,本實(shí)施例所提供的一種數(shù)據(jù)查詢方法,可以包括如下步驟:
S101:在獲得數(shù)據(jù)查詢請求后,解析得到該數(shù)據(jù)查詢請求所攜帶的至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息;
第一節(jié)點(diǎn)服務(wù)器在獲得數(shù)據(jù)查詢請求后,為了后續(xù)的數(shù)據(jù)查詢,可以解析得到該數(shù)據(jù)查詢請求所攜帶的至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息。其中,解析得到該數(shù)據(jù)查詢請求所攜帶的至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息的具體實(shí)現(xiàn)方式可以采用現(xiàn)有技術(shù),在此不做限定。
可以理解的是,實(shí)際應(yīng)用中,該數(shù)據(jù)查詢請求可以為用戶基于查詢界面所發(fā)出,也可以為在滿足預(yù)定條件時(shí)第一節(jié)點(diǎn)服務(wù)器自動(dòng)生成,等等,這都是合理的。
并且,該索引標(biāo)識為唯一指代數(shù)據(jù)索引的信息,例如:該索引標(biāo)識可以為數(shù)據(jù)索引的名稱,或者,基于數(shù)據(jù)索引名稱和內(nèi)容所確定出的信息,等等;而該查詢條件信息為現(xiàn)有的查詢條件信息,其可以包括:待查詢數(shù)據(jù)內(nèi)容和作為查詢參數(shù)的所需結(jié)果條數(shù)的結(jié)合,或者,待查詢數(shù)據(jù)內(nèi)容和作為查詢參數(shù)的待查詢數(shù)據(jù)內(nèi)容所對應(yīng)的查詢范圍的結(jié)合,等等。
S102:確定至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器;
由于數(shù)據(jù)索引分布存儲于節(jié)點(diǎn)服務(wù)器中且每個(gè)節(jié)點(diǎn)服務(wù)器存儲至少一個(gè)數(shù)據(jù)索引,因此,在解析得到該數(shù)據(jù)查詢請求所攜帶的至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息后,可以確定至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器,其中,該第二節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器。
具體的,實(shí)際應(yīng)用中,預(yù)先構(gòu)建有數(shù)據(jù)索引的索引標(biāo)識與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系,因此,所述確定至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器,可 以包括:
從預(yù)先存儲的數(shù)據(jù)索引的索引標(biāo)識與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系中,確定至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器。
需要說明的是,所述第一節(jié)點(diǎn)服務(wù)器中可能包含該至少一個(gè)數(shù)據(jù)索引中的索引標(biāo)識所指代的數(shù)據(jù)索引,也可能不包含該至少一個(gè)數(shù)據(jù)索引中的索引標(biāo)識所指代的數(shù)據(jù)索引;進(jìn)一步的,當(dāng)所述第一節(jié)點(diǎn)服務(wù)器中包含該至少一個(gè)數(shù)據(jù)索引中的索引標(biāo)識所指代的數(shù)據(jù)索引時(shí),第一節(jié)點(diǎn)服務(wù)器可以充當(dāng)?shù)诙?jié)點(diǎn)服務(wù)器的角色,完成第二節(jié)點(diǎn)服務(wù)器的工作。
舉例而言,第一節(jié)點(diǎn)服務(wù)器獲得數(shù)據(jù)查詢請求A,解析得到該查詢請求A所攜帶的數(shù)據(jù)索引的索引標(biāo)識分別為a、b、c、d、e;并且,解析得到查詢條件信息包括查詢內(nèi)容甲和查詢參數(shù)start、row,其中,start為查詢范圍的起始點(diǎn),row為以start為起始點(diǎn)之后的查詢結(jié)果數(shù)量;從預(yù)先存儲的數(shù)據(jù)索引的索引標(biāo)識與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系中,得到索引標(biāo)識與第二節(jié)點(diǎn)服務(wù)器的對應(yīng)情況分別為:a對應(yīng)第二節(jié)點(diǎn)服務(wù)器1,b、c、d對應(yīng)第二節(jié)點(diǎn)服務(wù)器2,e對應(yīng)第二節(jié)點(diǎn)服務(wù)器3,此時(shí),其中,第二節(jié)點(diǎn)服務(wù)器1為接收到數(shù)據(jù)查詢請求的第一節(jié)點(diǎn)服務(wù)器。
S103:分別為每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,所述聚合請求攜帶有所述查詢條件信息以及該第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識;
在確定至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器后,并非采用現(xiàn)有技術(shù)中的基于每個(gè)索引標(biāo)識來構(gòu)建查詢子請求,而是,分別為每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,該聚合請求攜帶有該查詢條件信息以及該第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識。
舉例而言:根據(jù)步驟S101和步驟S102,得到a對應(yīng)第二節(jié)點(diǎn)服務(wù)器1,b、c、d對應(yīng)第二節(jié)點(diǎn)服務(wù)器2,e對應(yīng)第二節(jié)點(diǎn)服務(wù)器3,則為第一節(jié)點(diǎn)服務(wù)器1構(gòu)建聚合請求1,為第二節(jié)點(diǎn)服務(wù)器2構(gòu)建聚合請求2,為第二節(jié)點(diǎn)服務(wù)器3構(gòu)建聚合請求3,其中,該聚合請求1攜帶有索引標(biāo)識a和包括查詢內(nèi)容甲和查詢參數(shù)的查詢條件信息,該聚合請求2攜帶有索引標(biāo)識b、c、d以及包括查詢內(nèi)容甲和查詢參數(shù)的查詢條件信息,該聚合請求3攜帶有索引標(biāo)識e以及包括查詢內(nèi)容甲和查詢參數(shù)的查詢條件信息;其中,由于每個(gè)聚合請求攜帶有包括查 詢內(nèi)容甲和查詢參數(shù)的查詢條件信息,其中查詢參數(shù)start和row,可以決定每個(gè)數(shù)據(jù)索引得到的查詢結(jié)果個(gè)數(shù),也可以決定第二節(jié)點(diǎn)服務(wù)器返回給第一節(jié)點(diǎn)服務(wù)器的查詢結(jié)果個(gè)數(shù),還可以決定第一節(jié)點(diǎn)服務(wù)器最終返回的查詢結(jié)果個(gè)數(shù)。
S104:將所構(gòu)建的聚合請求發(fā)送至相應(yīng)的第二節(jié)點(diǎn)服務(wù)器,以使得第二節(jié)點(diǎn)服務(wù)器確定該聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,基于該聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果,從所得到的初級查詢結(jié)果中,篩選得到該聚合請求所對應(yīng)的備用查詢結(jié)果,并將該備用查詢結(jié)果反饋給該第一節(jié)點(diǎn)服務(wù)器;
在分別為每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求后,可以將所構(gòu)建的聚合請求發(fā)送至相應(yīng)的第二節(jié)點(diǎn)服務(wù)器,以使得第二節(jié)點(diǎn)服務(wù)器確定該聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,基于該聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果,從所得到的初級查詢結(jié)果中,篩選得到該聚合請求所對應(yīng)的備用查詢結(jié)果,并將該備用查詢結(jié)果反饋給該第一節(jié)點(diǎn)服務(wù)器。舉例而言:將步驟S103構(gòu)建的聚合請求1、2和3分別發(fā)送至第二節(jié)點(diǎn)服務(wù)器1、第二節(jié)點(diǎn)服務(wù)器2、第二節(jié)點(diǎn)服務(wù)器3,以使第二節(jié)點(diǎn)服務(wù)器1基于聚合請求1中的索引標(biāo)識a、查詢條件信息所包括的查詢內(nèi)容甲和查詢參數(shù)start、row,篩選得到該聚合請求1所對應(yīng)的備用查詢結(jié)果,并將該備用查詢結(jié)果反饋給該第一節(jié)點(diǎn)服務(wù)器,第二節(jié)點(diǎn)服務(wù)器2和第二節(jié)點(diǎn)服務(wù)器3類似,不再進(jìn)行贅述。
具體的,從所得到的初級查詢結(jié)果中,篩選得到該聚合請求所對應(yīng)的備用查詢結(jié)果,并將該備用查詢結(jié)果反饋給該第一節(jié)點(diǎn)服務(wù)器,可以包括:按照與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所得到的初級查詢結(jié)果進(jìn)行排序處理;從排序處理所得的排序隊(duì)列中,選擇符合該查詢條件信息的部分初級查詢結(jié)果;將所選擇得到的部分初級查詢結(jié)果作為向第一節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果。其中,預(yù)設(shè)排序方式基于查詢條件信息所確定,例如:按照相似度大小的排序,或,其他預(yù)定規(guī)則,等等;并且,基于查詢條件信息來確定預(yù)設(shè)排序方式可以通過現(xiàn)有技術(shù)實(shí)現(xiàn),在此不做贅述。
舉例而言,對于查詢參數(shù)start和row,每個(gè)數(shù)據(jù)索引都會得到[start+row]條初級查詢結(jié)果,且每個(gè)聚合請求都要返回[start+row]條查詢結(jié)果。
以第二節(jié)點(diǎn)服務(wù)器2為例,對應(yīng)于第二節(jié)點(diǎn)服務(wù)器2的聚類請求2中攜帶有b、c、d三個(gè)索引標(biāo)識,則可以知曉第二節(jié)點(diǎn)服務(wù)器2中存在對應(yīng)b、c、d的三個(gè)數(shù)據(jù)索引,因?yàn)槊總€(gè)數(shù)據(jù)索引都要得到[start+row]條查詢結(jié)果,則第二節(jié)點(diǎn)服務(wù)器2要得到3*[start+row]條初級查詢結(jié)果,由于聚合請求表明需要向第一節(jié)點(diǎn)服務(wù)器反饋[start+row]條初級查詢結(jié)果,因此,第二節(jié)點(diǎn)服務(wù)器2按照與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對初級查詢結(jié)果進(jìn)行排序處理,假設(shè)查詢條件信息表明隊(duì)列中前[start+row]條初級查詢結(jié)果相對于其他初級查詢結(jié)果更為符合要求,因此,選擇該排序隊(duì)列中前[start+row]條查詢結(jié)果作為備用查詢結(jié)果;當(dāng)然,如果查詢條件信息表明各條初級查詢結(jié)果的地位均等,那么,可以該排序隊(duì)列中隨機(jī)選擇[start+row]條初級查詢結(jié)果作為備用查詢結(jié)果。可見,本方案中,第二節(jié)點(diǎn)服務(wù)器2最終向第一節(jié)點(diǎn)服務(wù)器反饋[start+row]條初級查詢結(jié)果,而并非現(xiàn)有技術(shù)中的反饋3*[start+row]條初級查詢結(jié)果,大大減少了第一節(jié)點(diǎn)服務(wù)器所需處理的數(shù)據(jù)量。
S105:接收所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果;
S106:從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
其中,由于每個(gè)第二節(jié)點(diǎn)服務(wù)器均反饋了特定數(shù)量的備用查詢結(jié)果,而數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果僅僅為該特定數(shù)量,因此,在接收所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果后,可以通過一定方式,從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
具體的,所述從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果,如圖2所示,可以包括如下步驟:
S201:按照與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果進(jìn)行排序處理;
S202:從排序處理所得的排序隊(duì)列中,選擇符合該查詢條件信息的部分備用查詢結(jié)果;
S203:將所選擇得到的部分備用查詢結(jié)果作為該數(shù)據(jù)查詢請求所對應(yīng)的目 標(biāo)查詢結(jié)果。
其中,基于查詢條件信息來確定預(yù)設(shè)排序方式的方式可以采用現(xiàn)有技術(shù),并且,對于查詢條件信息以確定的情況,符合該查詢條件信息的部分備用查詢結(jié)果也可以被確定。
舉例而言:經(jīng)過步驟S101到步驟S105,第一節(jié)點(diǎn)服務(wù)器(即第二節(jié)點(diǎn)服務(wù)器1),可以接收到第二節(jié)點(diǎn)服務(wù)器2反饋的[start+row]條備用查詢結(jié)果、第二節(jié)點(diǎn)服務(wù)器3反饋的[start+row]條備用查詢結(jié)果以及自身的[start+row]條備用查詢結(jié)果,根據(jù)步驟S106,該第一節(jié)點(diǎn)服務(wù)器僅僅需要對3*[start+row]條備用查詢結(jié)果進(jìn)行二次匯總篩選即可,而并非現(xiàn)有技術(shù)中的對5*[start+row]條備用查詢結(jié)果進(jìn)行一次匯總篩選,大大減少了數(shù)據(jù)量。
更進(jìn)一步的,在所述從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到所述數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果之后,還可以向該數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回該目標(biāo)查詢結(jié)果。并且,為了較好的用戶體驗(yàn),可以以與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,向該數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回該目標(biāo)查詢結(jié)果。
需要強(qiáng)調(diào)的,本方案對于查詢數(shù)據(jù)請求所請求的索引標(biāo)識較多、查詢條件信息所對應(yīng)的查詢范圍較廣或查詢條件信息所對應(yīng)的查詢結(jié)果條數(shù)較多的情況下,能夠體現(xiàn)出的分擔(dān)優(yōu)勢體現(xiàn)得更為明顯。
與現(xiàn)有技術(shù)相比,本方案中,對于每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,該聚合請求包括相應(yīng)第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識,而并非以獨(dú)立的數(shù)據(jù)索引為單位構(gòu)建數(shù)據(jù)查詢子請求,這樣使得第二節(jié)點(diǎn)服務(wù)器可以對所查詢到的至少一個(gè)數(shù)據(jù)索引所對應(yīng)的查詢結(jié)果進(jìn)行匯總篩選,進(jìn)而將數(shù)據(jù)量較少的匯總篩選結(jié)果發(fā)送給第一節(jié)點(diǎn)服務(wù)器,而第一節(jié)點(diǎn)服務(wù)器僅僅對數(shù)據(jù)量較少的匯總篩選結(jié)果進(jìn)行再次匯總篩選即可,因此,實(shí)現(xiàn)了有效分擔(dān)接收到的數(shù)據(jù)查詢請求的節(jié)點(diǎn)服務(wù)器的計(jì)算壓力,提高節(jié)點(diǎn)服務(wù)器集群的性能和穩(wěn)定性的目的。
第二方面,本發(fā)明實(shí)施例從第二節(jié)點(diǎn)服務(wù)器的角度,提供了一種數(shù)據(jù)查詢方法。
需要說明的是,本所提供的一種數(shù)據(jù)查詢方法應(yīng)用于第二節(jié)點(diǎn)服務(wù)器,該第二節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,即每一節(jié)點(diǎn)服務(wù)器均可以執(zhí)行本實(shí)施例所提供的數(shù)據(jù)查詢方法;并且,在實(shí)際應(yīng)用中,該數(shù)據(jù)查詢系統(tǒng)為利用分布式搜索方案SolrCloud的系統(tǒng)。
如圖3所示,本實(shí)施例所提供的一種數(shù)據(jù)查詢方法,可以包括如下步驟:
S301:在接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送的聚合請求后,確定該聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,該聚合請求為第一節(jié)點(diǎn)服務(wù)器在獲得攜帶有至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息的數(shù)據(jù)查詢請求后所構(gòu)建并發(fā)送的,其中,該聚合請求攜帶有查詢條件信息以及該第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識,該第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器;
需要說明的是,第二節(jié)點(diǎn)服務(wù)器在接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送的聚合請求后,會先處理該聚合請求,解析出該聚合請求中攜帶的所有索引標(biāo)識以及查詢條件信息,根據(jù)該所有索引標(biāo)識,確定該聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,再利用該所對應(yīng)的數(shù)據(jù)索引根據(jù)該查詢條件信息進(jìn)行查詢。其中,解析該聚合請求是可以采用現(xiàn)有技術(shù),在此不再贅述。
舉例而言,第二節(jié)點(diǎn)服務(wù)器1接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送的聚合請求1后,解析該聚合請求1,得到3個(gè)索引標(biāo)識,分別為A、B、C,得到的查詢條件信息包括甲和和查詢參數(shù)start、row。
其中,關(guān)于第一節(jié)點(diǎn)服務(wù)器構(gòu)建聚合請求的具體過程可以參照上述從第一節(jié)點(diǎn)服務(wù)器角度所提供的數(shù)據(jù)查詢方式中的相應(yīng)描述內(nèi)容,在此不做贅述。
S302:基于該聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果;
其中,可以通過現(xiàn)有技術(shù)來實(shí)現(xiàn):基于該聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果。
S303:從所得到的初級查詢結(jié)果中,篩選得到該聚合請求所對應(yīng)的備用查詢結(jié)果;
具體的,從所得到的初級查詢結(jié)果中,篩選得到該聚合請求所對應(yīng)的備用查詢結(jié)果,可以包括:
按照與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所得到的初級查詢結(jié)果進(jìn)行排序處理;
從排序處理所得的排序隊(duì)列中,選擇符合該查詢條件信息的部分初級查詢結(jié)果;
將所選擇得到的部分初級查詢結(jié)果作為向第一節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果。
其中,預(yù)設(shè)排序方式基于查詢條件信息所確定,例如:按照相似度大小的排序,或,其他預(yù)定規(guī)則,等等;并且,基于查詢條件信息來確定預(yù)設(shè)排序方式可以通過現(xiàn)有技術(shù)實(shí)現(xiàn),在此不做贅述。
S304,將該備用查詢結(jié)果反饋給該第一節(jié)點(diǎn)服務(wù)器,以使得該第一節(jié)點(diǎn)服務(wù)器從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
其中,第一節(jié)點(diǎn)服務(wù)器從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果的具體實(shí)現(xiàn)過程可以參照從第一節(jié)點(diǎn)服務(wù)器的角度所提供的數(shù)據(jù)查詢方法的相應(yīng)描述內(nèi)容,在此不做贅述。
應(yīng)用本發(fā)明實(shí)施例,第二節(jié)點(diǎn)服務(wù)器接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送的聚合請求后,根據(jù)該聚合請求所攜帶的信息進(jìn)行初級結(jié)果查詢,不同于現(xiàn)有技術(shù)直接將該初級查詢結(jié)果發(fā)送給該第一節(jié)點(diǎn)服務(wù)器,而是先在本地進(jìn)行一次匯總篩選,將部分初級查詢結(jié)果確定為備用查詢結(jié)果,將該備用查詢結(jié)果再反饋給該第一節(jié)點(diǎn)服務(wù)器,有效分擔(dān)了第一節(jié)點(diǎn)服務(wù)器的結(jié)果查詢壓力。
第三方面,相應(yīng)于上述從第一節(jié)點(diǎn)服務(wù)器的角度所提供的方法實(shí)施例,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查詢裝置,應(yīng)用于第一節(jié)點(diǎn)服務(wù)器,該第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,如圖4所示,該裝置可以包括:
解析模塊410:用于在獲得數(shù)據(jù)查詢請求后,解析得到該數(shù)據(jù)查詢請求所攜帶的至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息;
確定模塊420:用于確定該至少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器,該第二節(jié)點(diǎn)服務(wù)器為該數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器;
聚合請求構(gòu)建模塊430:用于分別為每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,該聚合請求攜帶有所述查詢條件信息以及該第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識;
聚合請求發(fā)送模塊440:用于將所構(gòu)建的聚合請求發(fā)送至相應(yīng)的第二節(jié)點(diǎn)服務(wù)器,以使得第二節(jié)點(diǎn)服務(wù)器確定該聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,基于該聚合請求所攜帶的所述查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果,從所得到的初級查詢結(jié)果中,篩選得到該聚合請求所對應(yīng)的備用查詢結(jié)果,并將該備用查詢結(jié)果反饋給該第一節(jié)點(diǎn)服務(wù)器;
目標(biāo)查詢結(jié)果接收模塊450:用于接收所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果;
目標(biāo)查詢結(jié)果篩選確定模塊460:用于從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
與現(xiàn)有技術(shù)相比,本方案中,對于每個(gè)第二節(jié)點(diǎn)服務(wù)器構(gòu)建對應(yīng)的聚合請求,該聚合請求包括相應(yīng)第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識,而并非以獨(dú)立的數(shù)據(jù)索引為單位構(gòu)建數(shù)據(jù)查詢子請求,這樣使得第二節(jié)點(diǎn)服務(wù)器可以對所查詢到的至少一個(gè)數(shù)據(jù)索引所對應(yīng)的查詢結(jié)果進(jìn)行匯總篩選,進(jìn)而將數(shù)據(jù)量較少的匯總篩選結(jié)果發(fā)送給第一節(jié)點(diǎn)服務(wù)器,而第一節(jié)點(diǎn)服務(wù)器僅僅對數(shù)據(jù)量較少的匯總篩選結(jié)果進(jìn)行再次匯總篩選即可,因此,實(shí)現(xiàn)了有效分擔(dān)接收到的數(shù)據(jù)查詢請求的節(jié)點(diǎn)服務(wù)器的計(jì)算壓力,提高節(jié)點(diǎn)服務(wù)器集群的性能和穩(wěn)定性的目的。
具體的,所述確定模塊420具體用于:
從預(yù)先存儲的數(shù)據(jù)索引的索引標(biāo)識與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系中,確定該至 少一個(gè)索引標(biāo)識各自所對應(yīng)的第二節(jié)點(diǎn)服務(wù)器。
具體的,所述目標(biāo)查詢結(jié)果篩選模塊460可以包括:排序單元、篩選單元和目標(biāo)查詢結(jié)果確定單元;
該排序單元:用于按照與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果進(jìn)行排序處理;
該篩選單元:用于從排序處理所得的排序隊(duì)列中,選擇符合該查詢條件信息的部分備用查詢結(jié)果;
該目標(biāo)查詢結(jié)果確定單元:用于將所選擇得到的部分備用查詢結(jié)果作為該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
更進(jìn)一步,本發(fā)明實(shí)施例所提供的數(shù)據(jù)查詢系統(tǒng)還可以包括目標(biāo)查詢結(jié)果返回模塊;
該目標(biāo)查詢結(jié)果返回模塊:用于在所述從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果之后,向該數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回所述目標(biāo)查詢結(jié)果。
具體的,該目標(biāo)查詢結(jié)果返回模塊具體用于:
以與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,向該數(shù)據(jù)查詢請求所對應(yīng)的發(fā)出方返回該目標(biāo)查詢結(jié)果。
對于系統(tǒng)/裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
第四方面,相應(yīng)于上述從第二節(jié)點(diǎn)服務(wù)器的角度所提供的方法實(shí)施例,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查詢裝置,應(yīng)用于第二節(jié)點(diǎn)服務(wù)器,該第二節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器,如圖5所示,該裝置可以包括:
數(shù)據(jù)索引確定模塊510:用于在接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送聚合請求后,確定該聚合請求所攜帶的所有索引標(biāo)識各自所對應(yīng)的數(shù)據(jù)索引,該聚合請求為第一節(jié)點(diǎn)服務(wù)器在獲得攜帶有至少一個(gè)數(shù)據(jù)索引的索引標(biāo)識和查詢條件信息的數(shù) 據(jù)查詢請求后所構(gòu)建并發(fā)送的,其中,該聚合請求攜帶有查詢條件信息以及所述第二節(jié)點(diǎn)服務(wù)器所對應(yīng)的所有索引標(biāo)識,該第一節(jié)點(diǎn)服務(wù)器為數(shù)據(jù)查詢系統(tǒng)所包括節(jié)點(diǎn)服務(wù)器集群中的任一節(jié)點(diǎn)服務(wù)器;
初級查詢結(jié)果確定模塊520:用于基于該聚合請求所攜帶的該查詢條件信息,對所確定出的各個(gè)數(shù)據(jù)索引執(zhí)行查詢操作,得到初級查詢結(jié)果;
備用查詢結(jié)果篩選確定模塊530:用于從所得到的初級查詢結(jié)果中,篩選得到該聚合請求所對應(yīng)的備用查詢結(jié)果;
備用查詢結(jié)果反饋模塊540:用于將該備用查詢結(jié)果反饋給該第一節(jié)點(diǎn)服務(wù)器,以使得該第一節(jié)點(diǎn)服務(wù)器從所接收到的所有第二節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果中,篩選得到該數(shù)據(jù)查詢請求所對應(yīng)的目標(biāo)查詢結(jié)果。
應(yīng)用本發(fā)明實(shí)施例,第二節(jié)點(diǎn)服務(wù)器接收到第一節(jié)點(diǎn)服務(wù)器發(fā)送的聚合請求后,根據(jù)該聚合請求所攜帶的信息進(jìn)行初級結(jié)果查詢,不同于現(xiàn)有技術(shù)直接將該初級查詢結(jié)果發(fā)送給該第一節(jié)點(diǎn)服務(wù)器,而是先在本地進(jìn)行一次匯總篩選,將部分初級查詢結(jié)果確定為備用查詢結(jié)果,將該備用查詢結(jié)果再反饋給該第一節(jié)點(diǎn)服務(wù)器,有效分擔(dān)了第一節(jié)點(diǎn)服務(wù)器的結(jié)果查詢壓力。
更進(jìn)一步的,所述備用查詢結(jié)果篩選確定模塊530可以包括:排序處理單元、初級查詢結(jié)果選擇單元和備用查詢結(jié)果確定單元;
該排序處理單元:用于按照與該查詢條件信息對應(yīng)的預(yù)設(shè)排序方式,對所得到的初級查詢結(jié)果進(jìn)行排序處理;
該初級查詢結(jié)果選擇單元:用于從排序處理所得的排序隊(duì)列中,選擇符合該查詢條件信息的部分初級查詢結(jié)果;
該備用查詢結(jié)果確定單元:用于將所選擇得到的部分初級查詢結(jié)果作為向第一節(jié)點(diǎn)服務(wù)器反饋的備用查詢結(jié)果。
對于系統(tǒng)/裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(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)的硬件來完成,所述的程序可以存儲于計(jì)算機(jī)可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如:ROM/RAM、磁碟、光盤等。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。