本發(fā)明涉及數(shù)據(jù)查詢統(tǒng)計(jì)技術(shù)領(lǐng)域。
背景技術(shù):隨著數(shù)據(jù)獲取技術(shù)和數(shù)據(jù)處理要求的不斷提高,當(dāng)今社會(huì)已進(jìn)入信息爆炸的時(shí)代,業(yè)界稱之為“大數(shù)據(jù)”時(shí)代。大數(shù)據(jù)存在以下4V的特點(diǎn):數(shù)據(jù)量巨大(Volume)、數(shù)據(jù)類型多樣化(Variety)、高處理速度要求(Velocity)、蘊(yùn)含巨大的價(jià)值(Value)。按照數(shù)據(jù)的不同類型,目前存在的技術(shù)主要包括:針對(duì)海量結(jié)構(gòu)化數(shù)據(jù)的并行數(shù)據(jù)庫(kù)處理技術(shù),以及針對(duì)海量非結(jié)構(gòu)化數(shù)據(jù)處理的Hadoop/MapReduce處理技術(shù)。這些技術(shù)的共同點(diǎn)都是在多臺(tái)服務(wù)器上啟動(dòng)多個(gè)并行進(jìn)程/線程,同時(shí)進(jìn)行數(shù)據(jù)的讀寫和計(jì)算操作,以達(dá)到提升數(shù)據(jù)處理的目的。這些數(shù)據(jù)處理可以得到最終的數(shù)據(jù)處理結(jié)果,是在特定數(shù)據(jù)集下的一個(gè)精確結(jié)果,即輸入不變,計(jì)算可靠的情況下,均可以得到一個(gè)最終的大數(shù)據(jù)處理結(jié)果。由于問題規(guī)模限制,大數(shù)據(jù)處理通常需要較長(zhǎng)的執(zhí)行時(shí)間,現(xiàn)有的查詢處理技術(shù)只有在最終處理完成才能得到計(jì)算的結(jié)果?,F(xiàn)有技術(shù)存在如下幾個(gè)問題:1)由于處理過程較長(zhǎng),參與數(shù)據(jù)處理的進(jìn)程數(shù)和硬件部件較多,整個(gè)處理過程中的任何失敗可能導(dǎo)致無法得到最終的處理結(jié)果;只有在所有數(shù)據(jù)處理順利完成才能得到最終結(jié)果;數(shù)據(jù)處理過程中只能等待,無法獲得與最終結(jié)果接近的估計(jì)結(jié)果。2)有時(shí)數(shù)據(jù)處理只是為了得到統(tǒng)計(jì)值,在處理過程中,每完成一部分?jǐn)?shù)據(jù)的統(tǒng)計(jì)即可得到一個(gè)近似的統(tǒng)計(jì)結(jié)果,而不需要等到所有數(shù)據(jù)處理完成。比如統(tǒng)計(jì)某地區(qū)的人均收入,統(tǒng)計(jì)完成一部分人的平均收入即可得到一個(gè)估算值,雖然與統(tǒng)計(jì)完所有人員的結(jié)果有一定的偏差,但這個(gè)近似的統(tǒng)計(jì)結(jié)果仍有一定的參考價(jià)值。3)數(shù)據(jù)處理時(shí)間較長(zhǎng)時(shí),用戶如果中途退出計(jì)算,之前的所有的執(zhí)行操作都會(huì)變?yōu)闊o效計(jì)算,這種情況在大數(shù)據(jù)處理時(shí)尤其耗費(fèi)系統(tǒng)資源。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明旨在針對(duì)現(xiàn)有技術(shù)存在的以上問題,提供一種數(shù)據(jù)查詢處理方法,通過不斷擴(kuò)大數(shù)據(jù)處理樣本進(jìn)行計(jì)算,在得到最終結(jié)果的過程中始終可以得到一個(gè)不斷逼近最終結(jié)果的近似值。為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案為:一種數(shù)據(jù)查詢處理方法,包括如下步驟:將原始數(shù)據(jù)集拆分成多個(gè)數(shù)據(jù)子集;對(duì)第一個(gè)數(shù)據(jù)子集進(jìn)行查詢,將查詢結(jié)果作為近似結(jié)果;依次對(duì)各個(gè)數(shù)據(jù)子集進(jìn)行查詢,并利用其查詢結(jié)果對(duì)前次近似結(jié)果進(jìn)行修正;按此操作完成全部數(shù)據(jù)子集的查詢,獲得最終查詢結(jié)果。一種數(shù)據(jù)查詢處理方法,包括如下步驟:從原始數(shù)據(jù)集中拆分出第一個(gè)數(shù)據(jù)子集,并對(duì)第一個(gè)數(shù)據(jù)子集進(jìn)行查詢,并將其查詢結(jié)果作為近似結(jié)果;繼續(xù)從原始數(shù)據(jù)集中拆分出下一數(shù)據(jù)子集,對(duì)該數(shù)據(jù)子集進(jìn)行查詢,并利用其查詢結(jié)果對(duì)前一近似結(jié)果進(jìn)行修正;按此操作完成原始數(shù)據(jù)集全部數(shù)據(jù)的拆分和查詢,獲得最終查詢結(jié)果。所述拆分是按數(shù)據(jù)庫(kù)分區(qū)進(jìn)行拆分,或者按數(shù)據(jù)量進(jìn)行拆分。所述修正具體為:利用當(dāng)前數(shù)據(jù)子集的查詢結(jié)果以增量的方式對(duì)前一近似結(jié)果進(jìn)行修正。每次修正完成后,保存修正后的近似結(jié)果。在查詢處理過程中,當(dāng)用戶提出查詢中止請(qǐng)求后,將最后一次經(jīng)修正后的近似結(jié)果作為最終查詢結(jié)果返回給用戶。將當(dāng)前查詢處理的進(jìn)度返回給用戶。所述當(dāng)前查詢處理的進(jìn)度為當(dāng)前已處理的數(shù)據(jù)子集個(gè)數(shù)與拆分的數(shù)據(jù)子集總數(shù)的比例。當(dāng)用戶提出查詢中止請(qǐng)求時(shí),如果已獲得當(dāng)前數(shù)據(jù)子集的查詢結(jié)果,則等待對(duì)近似結(jié)果的修正完成后返回本次修正后的近似結(jié)果。本發(fā)明提供的一種數(shù)據(jù)查詢處理方法,采用數(shù)據(jù)分片和逐步處理的思想,使得用戶在系統(tǒng)處理過程中隨時(shí)可以中止查詢,不必等到所有數(shù)據(jù)都處理完成,就可以得到一個(gè)較為準(zhǔn)確的近似值,避免了長(zhǎng)時(shí)間的等待,同時(shí)也在一定程度上節(jié)省了大量的計(jì)算資源。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。附圖說明圖1為本發(fā)明實(shí)施例的數(shù)據(jù)查詢示意圖;圖2為本發(fā)明實(shí)施例的另一數(shù)據(jù)查詢示意圖;圖3為本發(fā)明實(shí)施例的查詢執(zhí)行與中止查詢流程示意圖。具體實(shí)施方式為了使本發(fā)明的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明的示例性實(shí)施例進(jìn)行進(jìn)一步詳細(xì)的說明,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是所有實(shí)施例的窮舉。本發(fā)明實(shí)施例提出了一種數(shù)據(jù)查詢處理方法,采用本發(fā)明實(shí)施例的數(shù)據(jù)查詢處理方法可以大幅提高查詢效率,特別是對(duì)大數(shù)據(jù)的查詢處理尤為明顯。所謂大數(shù)據(jù),指的是一些無法通過常規(guī)方法進(jìn)行處理的大量數(shù)據(jù)集,其特點(diǎn)是數(shù)據(jù)量巨大、分散分布在多臺(tái)存儲(chǔ)設(shè)備上、需要大量機(jī)器并行的協(xié)同進(jìn)行處理。本發(fā)明實(shí)施例提供的數(shù)據(jù)查詢處理方法采用的是一種漸進(jìn)的查詢方法,通過數(shù)據(jù)拆分、逐步處理進(jìn)而計(jì)算出查詢處理的結(jié)果。所謂漸進(jìn)查詢,也就是說,查詢過程中隨著已處理數(shù)據(jù)的不斷增加,查詢結(jié)果處于一個(gè)不斷精確和細(xì)化的過程。漸進(jìn)查詢具體過程為:查詢引擎對(duì)已讀取到的部分分片數(shù)據(jù)進(jìn)行計(jì)算,并顯示這部分?jǐn)?shù)據(jù)計(jì)算的結(jié)果;隨著新的分片數(shù)據(jù)的不斷讀入,會(huì)不斷的對(duì)之前的計(jì)算結(jié)果進(jìn)行修正。隨著處理的分片數(shù)的增加,計(jì)算的結(jié)果也就逐步逼近最終結(jié)果,并當(dāng)讀取完所有分片后最終得到一個(gè)固定的值,也即最終查詢結(jié)果。漸進(jìn)查詢處理時(shí),在整個(gè)過程中的任何時(shí)刻點(diǎn)都可以得到一個(gè)與最終結(jié)果相近似的處理結(jié)果,也可以稱之為中間結(jié)果或近似結(jié)果。直到最后所有數(shù)據(jù)處理完成,即得到了最終的精確查詢結(jié)果。本發(fā)明實(shí)施例提出的數(shù)據(jù)查詢處理方法,如圖1所示,包括如下步驟:首先將原始數(shù)據(jù)集拆分成多個(gè)數(shù)據(jù)子集;對(duì)第一個(gè)數(shù)據(jù)子集執(zhí)行查詢操作,并將其查詢結(jié)果作為近似結(jié)果;接下來,再對(duì)第二個(gè)數(shù)據(jù)子集執(zhí)行操作,利用第二個(gè)數(shù)據(jù)子集的查詢結(jié)果對(duì)上述近似結(jié)果進(jìn)行修正,...,以此類推,依次對(duì)各個(gè)數(shù)據(jù)子集進(jìn)行查詢,并利用其查詢結(jié)果不斷對(duì)近似結(jié)果進(jìn)行修正;按照這樣的操作方式完成全部數(shù)據(jù)子集的查詢,并同時(shí)也獲得了最終查詢結(jié)果。為了提高數(shù)據(jù)拆分和查詢的效率,本發(fā)明實(shí)施例還提出了一種數(shù)據(jù)查詢處理方法,將數(shù)據(jù)拆分操作與查詢處理操作合并,這樣只需進(jìn)行一次數(shù)據(jù)掃描即可,不必對(duì)數(shù)據(jù)進(jìn)行多次掃描。如圖2所示,包括如下步驟:從原始數(shù)據(jù)集中拆分出第一個(gè)數(shù)據(jù)子集,并且對(duì)這個(gè)數(shù)據(jù)子集執(zhí)行查詢操作,得到查詢結(jié)果,并將該查詢結(jié)果作為近似結(jié)果;系統(tǒng)繼續(xù)從原始數(shù)據(jù)數(shù)據(jù)集中拆分出第二個(gè)數(shù)據(jù)子集,同時(shí)對(duì)第二個(gè)數(shù)據(jù)子集進(jìn)行查詢,并利用其查詢結(jié)果對(duì)上面的近似結(jié)果進(jìn)行修正;...以此類推,不斷從原始數(shù)據(jù)集中拆分出下一數(shù)據(jù)子集,并對(duì)該數(shù)據(jù)子集執(zhí)行查詢操作,利用這個(gè)數(shù)據(jù)子集的查詢結(jié)果對(duì)前一近似結(jié)果進(jìn)行修正;按此操作完成原始數(shù)據(jù)集中全部數(shù)據(jù)的拆分和查詢,并獲得最終的查詢結(jié)果,即最后一次修正后的近似結(jié)果。可以看出,本發(fā)明實(shí)施例所提出的兩種數(shù)據(jù)查詢處理方法主要從三個(gè)方面考慮:首先要考慮如何對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行拆分操作,其次在數(shù)據(jù)查詢處理過程中如何實(shí)現(xiàn)對(duì)近似結(jié)果結(jié)果的修正,最后,如果在數(shù)據(jù)查詢處理過程中,用戶在不同時(shí)間點(diǎn)執(zhí)行了查詢中止或停止操作,系統(tǒng)又應(yīng)該如何處理。因此,下面分別從這三個(gè)方面一一介紹如下:一、數(shù)據(jù)拆分:數(shù)據(jù)拆分是按照一定的方法把需要處理的數(shù)據(jù)集分割成多個(gè)子集(即數(shù)據(jù)分片),而所有子集的數(shù)據(jù)合并在一起就是查詢需要處理的完整數(shù)據(jù)集。如圖1所示,假設(shè)查詢處理的原始數(shù)據(jù)集為Q,拆分后的數(shù)據(jù)子集為Q1、Q2、Q3...Qn。數(shù)據(jù)拆分時(shí)遵循如下原則:1)查詢?cè)紨?shù)據(jù)集是所有數(shù)據(jù)子集的并,即Q=Q1∪Q2∪Q3∪...∪Qn;2)任意兩個(gè)數(shù)據(jù)子集之間數(shù)據(jù)沒有重疊,也即Qi∩Qj=Φ(i≠j)。通常數(shù)據(jù)的拆分可以有多種方式,比如,按照已有的數(shù)據(jù)庫(kù)分區(qū)進(jìn)行拆分,每個(gè)分區(qū)內(nèi)的數(shù)據(jù)為一個(gè)數(shù)據(jù)子集。目前商業(yè)數(shù)據(jù)庫(kù)都有數(shù)據(jù)分區(qū)技術(shù),如Hash、Range等分區(qū);也可以按照數(shù)據(jù)量進(jìn)行拆分,如每10萬(wàn)條記錄或者每256MB數(shù)據(jù)一個(gè)數(shù)據(jù)子集等。為了提高數(shù)據(jù)拆分和查詢的效率,數(shù)據(jù)拆分通常不必關(guān)心數(shù)據(jù)的屬性,即拆分無需額外的數(shù)據(jù)掃描,可以和查詢處理的數(shù)據(jù)合并,如圖2所示。即拆分和查詢只需要一次掃描,而不必對(duì)數(shù)據(jù)進(jìn)行多次掃描。二、結(jié)果修正:由于查詢引擎是按照數(shù)據(jù)流的方式對(duì)數(shù)據(jù)進(jìn)行處理的,經(jīng)過計(jì)算得到相應(yīng)的分片結(jié)果,因此,完成數(shù)據(jù)拆分后,查詢引擎在對(duì)數(shù)據(jù)進(jìn)行處理時(shí)需要按照拆分后的數(shù)據(jù)子集逐步讀取每個(gè)子集進(jìn)行處理。當(dāng)?shù)谝粋€(gè)子集Q1處理完成以后,形成的結(jié)果為R1,將結(jié)果R1保存在近似結(jié)果中。后續(xù),每個(gè)數(shù)據(jù)子集Qi數(shù)據(jù)處理完成以后,可以用當(dāng)前數(shù)據(jù)子集Qi的查詢結(jié)果Ri對(duì)之前的近似結(jié)果進(jìn)行修正。在逐一對(duì)每個(gè)數(shù)據(jù)子集進(jìn)行數(shù)據(jù)處理的過程中,當(dāng)前數(shù)據(jù)子集的處理結(jié)果都會(huì)用于與之前經(jīng)修正的中間結(jié)果或者說是近似結(jié)果進(jìn)行計(jì)算,以達(dá)到對(duì)近似結(jié)果進(jìn)一步修正的目的。當(dāng)查詢條件為查詢總額/總數(shù)時(shí),計(jì)算方式可以將當(dāng)前數(shù)據(jù)子集的查詢結(jié)果與之前經(jīng)修正的近似結(jié)果進(jìn)行增量求和運(yùn)算,也即,每次查詢總額計(jì)算結(jié)果Si可以表示為:Si=Si-1+Δi,而增量Δi則可以表示為:Δi=(Ri-Si-1/n)/(i/n)。其中S0=0,i≥1,i/n表示查詢進(jìn)度,i/n*100%即為查詢進(jìn)度的百分比。在返回給用戶查詢總額結(jié)果的同時(shí),還會(huì)將查詢進(jìn)度的百分比也返回給用戶。例如,用戶查詢條件是查詢用戶一季度消費(fèi)總額,假設(shè)一月份的消費(fèi)總額為R1=100(萬(wàn)元),二月份的消費(fèi)總額為R2=200(萬(wàn)元),三月份的消費(fèi)總額為R3=300(萬(wàn)元)。查詢完一月份的數(shù)據(jù)子集以后,顯示給用戶的查詢總額近似結(jié)果為S1=S0+Δ1=0+(R1-0)/(1/3)=300(萬(wàn)元);查詢完二月份的數(shù)據(jù)子集以后,查詢總額結(jié)果為S2=S1+Δ2,Δ2=(R2-S1/3)/(2/3)=(200-300/3)/(2/3)=150(萬(wàn)元),顯示給用戶的查詢總額近似結(jié)果為S2=300+150=450(萬(wàn)元);查詢完三月份的數(shù)據(jù)子集以后,查詢總額結(jié)果為S3=S2+Δ3,Δ3=(R3-S2/3)/(3/3)=300-450/3=150(萬(wàn)元),顯示給用戶的查詢總額近似結(jié)果為S3=450+150=600(萬(wàn)元)。如果用戶的查詢條件是要計(jì)算數(shù)據(jù)的平均值,那么就需要利用求平均值的計(jì)算公式來求得平均值。也即,每次的平均值近似結(jié)果Ti可以表示為:Ti=Ti-1+Δi,其中,增量Δi=(Ri-Ti-1)/i,i≥1。例如,用戶查詢條件是查詢北京7月到9月的平均溫度,假設(shè)7月份的平均溫度為R1=26℃,8月份的平均溫度為R2=34℃,9月份的平均溫度為R3=24℃。當(dāng)查詢完7月份的數(shù)據(jù)子集后,顯示給用戶的平均溫度值T1=R1=26℃;當(dāng)查詢完8月份的數(shù)據(jù)子集后,顯示給用戶的平均溫度值T2=T1+Δ2,Δ2=(R2-T1)/2=(34-26)/2=-4,那么顯示給用戶的平均溫度值T2=26+4=30℃;當(dāng)查詢完9月份的數(shù)據(jù)子集后,顯示給用戶的平均溫度值T3=T2+Δ3,Δ3=(R3-T2)/3=(24-30)/3=(-2),那么顯示給用戶的平均溫度值T3=30+(-2)=28℃。本發(fā)明實(shí)施例僅以求和、求平均值為例進(jìn)行了說明,上述計(jì)算可以根據(jù)用戶查詢的實(shí)際需要進(jìn)行不同的計(jì)算公式,本發(fā)明對(duì)此不作限制。本領(lǐng)域技術(shù)人員在了解本發(fā)明的思想的基礎(chǔ)上可以對(duì)計(jì)算方式進(jìn)行各種變化,然而這些變化也應(yīng)在本發(fā)明的保護(hù)范圍之內(nèi)。處理過程中保存上一次修正后的結(jié)果(這個(gè)結(jié)果也是最終查詢結(jié)果的一個(gè)近似值)以及當(dāng)前處理的增量結(jié)果Δ即可。當(dāng)一個(gè)數(shù)據(jù)子集處理完以后再進(jìn)行一次合并,并不需要保存所有的增量結(jié)果Δ的數(shù)據(jù)。因此,采用本發(fā)明的漸進(jìn)查詢方式,不會(huì)引入過多的存儲(chǔ)開銷。三、查詢停止采用本發(fā)明實(shí)施例的漸進(jìn)查詢,只要有一個(gè)數(shù)據(jù)子集處理完成,在處理過程中任意時(shí)刻停止查詢都可以獲得查詢最終結(jié)果的近似值,也即近似結(jié)果。采用近似結(jié)果和逐步增量合并的方式,查詢引擎對(duì)近似結(jié)果和增量Δ分別進(jìn)行了保存。當(dāng)用戶提出查詢中止的請(qǐng)求以后,查詢引擎可將上一次修正后的近似結(jié)果返回,同時(shí)返回一個(gè)查詢處理的進(jìn)度百分比。如果經(jīng)數(shù)據(jù)拆分后總的數(shù)據(jù)子集數(shù)量為n個(gè),而已經(jīng)處理完的數(shù)據(jù)子集數(shù)量為k個(gè)(也即,表示正在處理第k+1個(gè)數(shù)據(jù)子集),則近似結(jié)果和百分比分別表示為:本次近似結(jié)果=上次近似結(jié)果+Δ2+...+Δk,(k<=n)處理進(jìn)度百分比=k/n*100%也就是說,只要處理完一定數(shù)量的數(shù)據(jù)子集,比如k個(gè)分片數(shù)據(jù),就可以計(jì)算出這k個(gè)分片數(shù)據(jù)的查詢結(jié)果,也即最終結(jié)果的一個(gè)近似值。當(dāng)k=n時(shí),表示所有分片的數(shù)據(jù)處理完成,就可以得到最終的查詢結(jié)果。對(duì)于本發(fā)明實(shí)施例提供的邊拆分邊查詢的數(shù)據(jù)查詢處理方法,由于不知道最終拆分的數(shù)據(jù)子集數(shù)量,因此,對(duì)于進(jìn)度百分比的計(jì)算可以采用已處理數(shù)據(jù)與原始數(shù)據(jù)集的比值來表示。假設(shè)原始數(shù)據(jù)集共有N條數(shù)據(jù),而已經(jīng)處理完的數(shù)據(jù)數(shù)量為M條,則處理進(jìn)度百分比=M/N*100%。對(duì)于進(jìn)度百分比的計(jì)算表示,本領(lǐng)域技術(shù)人員可以有其他的計(jì)算方式,但均應(yīng)屬于本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)然,在整個(gè)查詢過程中,用戶隨時(shí)可能中止或停止查詢。對(duì)于這種情況,本發(fā)明實(shí)施例也提供了相應(yīng)的解釋和說明,完整的漸進(jìn)查詢處理和中止查詢的過程如圖3所示。漸進(jìn)查詢引擎循環(huán)讀取數(shù)據(jù)子集進(jìn)行處理,并不斷的對(duì)近似結(jié)果進(jìn)行增量修正。用戶可以隨時(shí)中止查詢,得到查詢的近似結(jié)果。查詢中止時(shí)根據(jù)用戶不同的中止時(shí)間會(huì)有不同的中止點(diǎn),本發(fā)明實(shí)施例僅按不同的場(chǎng)景給出三個(gè)主要的中止點(diǎn)作為例子進(jìn)行說明,如圖3中所示。用戶提出的查詢中止請(qǐng)求將停止查詢執(zhí)行,并讀取上一次保存的近似結(jié)果進(jìn)行返回,對(duì)于三個(gè)主要的中止點(diǎn)的操作方式介紹如下:1)中止點(diǎn)1,也即讀取或掃描下一個(gè)數(shù)據(jù)子集時(shí)中止。當(dāng)用戶在這樣的時(shí)刻中止查詢時(shí),系統(tǒng)則直接返回上一次合并后的近似結(jié)果,并退出查詢。2)中止點(diǎn)2,也即系統(tǒng)計(jì)算增量結(jié)果Δi時(shí)用戶中止查詢,這時(shí)系統(tǒng)會(huì)停止增量計(jì)算,并返回上一次合并后的近似結(jié)果,然后退出查詢。3)中止點(diǎn)3,也即增量結(jié)果計(jì)算完畢,正在進(jìn)行合并時(shí)用戶中止查詢。對(duì)于這種情況本發(fā)明提供兩種處理方式:一種是強(qiáng)制退出方式,即直接返回上一次的近似結(jié)果然后退出查詢;另一種是默認(rèn)方式,即合并完成以后返回本次合并后的結(jié)果,然后退出查詢。本發(fā)明實(shí)施例的漸進(jìn)查詢方法,類似于一種抽樣計(jì)算,采用分片和逐步處理的思想,通過對(duì)部分?jǐn)?shù)據(jù)的計(jì)算得到一個(gè)近似值,并返回一個(gè)已處理部分的百分比。這樣使得用戶不必等到所有數(shù)據(jù)都處理完成,就可以對(duì)總體的查詢結(jié)果有一個(gè)較為準(zhǔn)確的近似的把握,避免了較長(zhǎng)時(shí)間的等待。除此之外,用戶也可以在處理過程中隨時(shí)停止查詢處理,節(jié)省大量的計(jì)算資源。本發(fā)明實(shí)施例的漸進(jìn)查詢方法適用于大部分的數(shù)據(jù)處理的應(yīng)用場(chǎng)景。實(shí)施例一、場(chǎng)景為統(tǒng)計(jì)某大型電子商務(wù)網(wǎng)站的所有客戶的消費(fèi)數(shù)據(jù)。該網(wǎng)站的客戶數(shù)據(jù)超過千萬(wàn),且消費(fèi)記錄數(shù)據(jù)量有十億條。當(dāng)需要統(tǒng)計(jì)某個(gè)時(shí)間段內(nèi)客戶的消費(fèi)總額等數(shù)據(jù)時(shí),則可以采用部分統(tǒng)計(jì)的方式,不斷修正統(tǒng)計(jì)結(jié)果。首先將消費(fèi)記錄按照數(shù)據(jù)量的大小進(jìn)行拆分,當(dāng)對(duì)第一個(gè)數(shù)據(jù)子集統(tǒng)計(jì)完成以后,即可得到已統(tǒng)計(jì)的部分客戶(即第一個(gè)數(shù)據(jù)子集中的數(shù)據(jù))的消費(fèi)總額的數(shù)據(jù);當(dāng)處理完第二個(gè)數(shù)據(jù)子集以后,可以得到前兩個(gè)數(shù)據(jù)子集的客戶的消費(fèi)總額的結(jié)果。這樣逐一對(duì)每個(gè)數(shù)據(jù)子集進(jìn)行處理,不斷的對(duì)統(tǒng)計(jì)結(jié)果進(jìn)行修正,直到所有的數(shù)據(jù)處理完成,就可以得到最終的統(tǒng)計(jì)結(jié)果。用戶如果在數(shù)據(jù)查詢的中途提出中止查詢請(qǐng)求,采用本發(fā)明的技術(shù)方案,還是一樣可以獲得已處理部分?jǐn)?shù)據(jù)的統(tǒng)計(jì)結(jié)果。比如,想要查詢5.1期間客戶的消費(fèi)總額,那么首先需要將消費(fèi)記錄進(jìn)行拆分,可以按天進(jìn)行拆分,還可以按消費(fèi)記錄的數(shù)量或者條數(shù)將消費(fèi)記錄拆分成多個(gè)數(shù)據(jù)子集。假設(shè)5.1期間客戶消費(fèi)記錄數(shù)共400萬(wàn)條,本發(fā)明以按每100萬(wàn)條消費(fèi)記錄分成一個(gè)數(shù)據(jù)子集為例進(jìn)行說明如下:當(dāng)系統(tǒng)查詢完第一個(gè)數(shù)據(jù)子集(也即前100萬(wàn)條消費(fèi)記錄)后,假設(shè)第一個(gè)數(shù)據(jù)子集的計(jì)算結(jié)果為R1=1億元,那么計(jì)算出近似的客戶消費(fèi)總額為S1=1億/(100萬(wàn)/400萬(wàn))=4億元,查詢進(jìn)度比為100萬(wàn)/400萬(wàn)*100%=25%;系統(tǒng)繼續(xù)查詢,當(dāng)查詢完第二個(gè)數(shù)據(jù)子集后,假設(shè)第二個(gè)數(shù)據(jù)子集的消費(fèi)總額為R2=3億元,那么增量Δ2=(3億元-4億元/4)/(2/4)=4億元,計(jì)算出近似的客戶消費(fèi)總額為S2=S1+Δ2=4億元+4億元=8億元,當(dāng)前查詢進(jìn)度比為200萬(wàn)/400萬(wàn)*100%=50%;系統(tǒng)繼續(xù)查詢,如果系統(tǒng)正在查詢第200萬(wàn)零500條記錄(也即正在查詢第三個(gè)數(shù)據(jù)子集),這時(shí)用戶點(diǎn)擊中止查詢按鈕的話,系統(tǒng)就會(huì)將按照此前的兩個(gè)數(shù)據(jù)子集計(jì)算的近似客戶消費(fèi)總額(也即8億元)反饋給用戶,并將當(dāng)前處理進(jìn)度百分比(50%)也反饋給用戶。雖然這個(gè)結(jié)果可能會(huì)與最終結(jié)果有一定的偏差,但在最短的時(shí)間內(nèi)得到一個(gè)近似結(jié)果,可以作為最終查詢結(jié)果的一個(gè)參考。實(shí)施例二、場(chǎng)景為統(tǒng)計(jì)某移動(dòng)通信運(yùn)營(yíng)商某一年度的用戶月均通話時(shí)長(zhǎng)。首先將該運(yùn)營(yíng)商該年度的全部通話記錄以月為單位拆分成12個(gè)數(shù)據(jù)子集,查詢過程具體如下:當(dāng)系統(tǒng)查詢完1月(第一個(gè)數(shù)據(jù)子集)的通話記錄以后,假設(shè)1月的用戶平均通話時(shí)長(zhǎng)R1為300分鐘,那么近似的用戶月均通話時(shí)長(zhǎng)T1為300分鐘,查詢進(jìn)度百分比為1/12*100%=8.3%;系統(tǒng)繼續(xù)查詢,當(dāng)查詢完2月(第二個(gè)數(shù)據(jù)子集)的通話記錄以后,假設(shè)2月用戶平均通話時(shí)長(zhǎng)R2為460分鐘,那么近似的用戶月均通話時(shí)長(zhǎng)T2=T1+Δ2=T1+(R2-T1)/2=300分鐘+(460分鐘-300分鐘)/2=380分鐘,查詢進(jìn)度百分比為2/12*100%=16.7%;系統(tǒng)繼續(xù)查詢,當(dāng)查詢完3月(第三個(gè)數(shù)據(jù)子集)的通話記錄后,假設(shè)3月用戶平均通話時(shí)長(zhǎng)R3為410分鐘。如果用戶這時(shí)發(fā)出中止查詢請(qǐng)求,那么系統(tǒng)可以中止計(jì)算、直接返回上一次的查詢近似結(jié)果,也即380分鐘;當(dāng)然系統(tǒng)也可以繼續(xù)計(jì)算操作,然后返回本次計(jì)算的近似結(jié)果,也即T3=T2+Δ3=T2+(R3-T2)/3=380+(410-380)/3=390分鐘,查詢進(jìn)度比為3/12*100%=25%。以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,本領(lǐng)域技術(shù)人員可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍內(nèi)。