專利名稱:查詢處理裝置和查詢處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)查詢技術(shù)領(lǐng)域,具體而言,涉及一種查詢處理裝置和一種查詢處
理方法。
背景技術(shù):
在大數(shù)據(jù)量OLTP (聯(lián)機(jī)事務(wù)處理)系統(tǒng)中,根據(jù)給定的某些維度查詢某一極值數(shù)據(jù),如最新值、最小值,是非常占用系統(tǒng)資源,容易造成效率問題的操作。尤其在給定的維度不能夠很好地對數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行過濾時(shí),效率問題會(huì)非常明顯。例如,在某ERP系統(tǒng)中,一張存放采購訂單數(shù)據(jù)的表中有1000萬條記錄,某項(xiàng)業(yè)務(wù)操作中,要根據(jù)物料、供應(yīng)商、采購組織三個(gè)維度查詢最新(按訂單日期)的一條采購價(jià)格記錄,僅查詢SQL語句在數(shù)據(jù)庫系統(tǒng)中執(zhí)行的時(shí)間就會(huì)達(dá)到10多秒鐘。而這個(gè)查詢只是本項(xiàng)業(yè)務(wù)操作的一個(gè)環(huán)節(jié),整個(gè)過程下來,會(huì)發(fā)生較長時(shí)間等待,用戶體驗(yàn)很差。造成效率低的原因主要有I、表中的數(shù)據(jù)量大,一般都在千萬級以上;2、查詢的維度不能夠有效過濾數(shù)據(jù),造成數(shù)據(jù)庫系統(tǒng)要在整個(gè)表中進(jìn)行掃描搜索相關(guān)數(shù)據(jù);3、數(shù)據(jù)庫系統(tǒng)要對掃描出的數(shù)據(jù)再進(jìn)行排序。為提高這種查詢操作的效率,當(dāng)今主要的解決方案有以下幾種I、在數(shù)據(jù)庫表中添加索引;
2、根據(jù)時(shí)間維度分批遞推查詢;3、將業(yè)務(wù)表數(shù)據(jù)進(jìn)行壓縮冗余存儲(chǔ)。第I種方案,是最簡單的一種處理方法,在表中建上相關(guān)索引,索引字段主要包括那些常用的極值查詢維度,例如上面所舉例子,在物料、供應(yīng)商、采購組織上建上聯(lián)合索引。此種方案在給定的維度數(shù)據(jù)均勻分布的情況下會(huì)比較有效,數(shù)據(jù)庫系統(tǒng)會(huì)使用索引極大提高掃描效率。但主要問題是,在查詢維度數(shù)據(jù)分布較偏斜的情況下,索引會(huì)失效,并不能提高查詢效率,數(shù)據(jù)分布偏斜在實(shí)際情況中是很常見的;另外的主要問題是在OLTP系統(tǒng)中,客戶的并行量較大,時(shí)實(shí)性較高,較多的索引會(huì)降低對表的插入和修改操作,影響日常業(yè)務(wù)操作。第2種方案,是根據(jù)給定維度再加上額外的時(shí)間維度來進(jìn)行分批查詢,先查詢某一時(shí)間段的數(shù)據(jù),如果找到了極值,就結(jié)束;如果未找到,就繼續(xù)前推一時(shí)間段查詢,直至查詢到結(jié)果或查詢完所有數(shù)據(jù)。因時(shí)間維度上一般會(huì)有索引且對數(shù)據(jù)有較好選擇性,所以這種方案對于按時(shí)間維度找最新值一般會(huì)比較有效。但對于某些維度下不存在最新值或最新值較舊的情況下,因?yàn)橐啻尾樵?,效率?huì)大大降低;這種方案還有一個(gè)致命缺陷是,它不能處理最大、最小值等情況,因?yàn)樗鼈儾皇前磿r(shí)間維度排序的。第3種方案,使用了以空間換時(shí)間的策略。即將業(yè)務(wù)表數(shù)據(jù),壓縮存儲(chǔ)到另外的查詢表中,查詢操作從查詢表中搜索,不在業(yè)務(wù)表上做極值查詢。因查詢表是按照常用查詢維度進(jìn)行壓縮存儲(chǔ)的,即相同維度的記錄只存儲(chǔ)一條,因此數(shù)據(jù)量較業(yè)務(wù)表會(huì)小很多,這種查詢效率會(huì)提高很多。但這種方案最大的問題是如何維護(hù)查詢表?當(dāng)前的主要方法還是在做聯(lián)機(jī)事務(wù)處理的同時(shí),去更新或重新壓縮查詢表。這樣就帶來了最大的問題,盡管查詢極值的效率提高了,但由于每種業(yè)務(wù)表的操作(增、刪、改)都要維護(hù)查詢表,使用聯(lián)機(jī)事務(wù)處理的效率反而降低了,這是得不償失的。因此,需要一種數(shù)據(jù)查詢技術(shù),可以準(zhǔn)確、高效地進(jìn)行數(shù)據(jù)查詢。
發(fā)明內(nèi)容
針對上述問題,本發(fā)明的目的之一是提供一種查詢處理裝置,可以準(zhǔn)確、高效地進(jìn)行數(shù)據(jù)查詢。有鑒于此,本發(fā)明提出了一種查詢處理裝置,包括按查詢維度和時(shí)間維度從業(yè)務(wù) 表中提取數(shù)據(jù),生成查詢表,記錄所述數(shù)據(jù)的裝置;至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的裝置;在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的裝置。在該技術(shù)方案中,通過查詢表查詢數(shù)據(jù),數(shù)據(jù)的掃描量減小,從而可以高效地進(jìn)行數(shù)據(jù)查詢。并且當(dāng)業(yè)務(wù)表中的數(shù)據(jù)發(fā)生變更時(shí),不是立即對查詢表進(jìn)行更新,不影響系統(tǒng)的效率。變更的這部分?jǐn)?shù)據(jù)通過其它方式獲得,以確保數(shù)據(jù)查詢的準(zhǔn)確性。優(yōu)選地,還包括根據(jù)所述業(yè)務(wù)表中相對于所述查詢表刪除或修改的數(shù)據(jù),在查詢表中標(biāo)記與所述刪除或修改的數(shù)據(jù)相應(yīng)的數(shù)據(jù)的裝置;則所述至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的的裝置將所述查詢表中未被標(biāo)記的數(shù)據(jù)以及所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中修改或刪除的數(shù)據(jù)不是立即更新到查詢表,為了確保查詢結(jié)果的準(zhǔn)確性將業(yè)務(wù)表中修改或刪除的數(shù)據(jù)在查詢表中標(biāo)記為無效。這樣,在查詢數(shù)據(jù)時(shí)可以不將查詢表中此部分?jǐn)?shù)據(jù)作為數(shù)據(jù)源,而是直接獲得業(yè)務(wù)表中修改后的數(shù)據(jù),將業(yè)務(wù)表中修改后的數(shù)據(jù)作為數(shù)據(jù)源進(jìn)行查詢,確保準(zhǔn)確。優(yōu)選地,所述至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的裝置同時(shí)將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中新增的數(shù)據(jù)不是立即更新到查詢表,因此同時(shí)將業(yè)務(wù)表中新增的數(shù)據(jù)作為數(shù)據(jù)源,確保查詢結(jié)果準(zhǔn)確。優(yōu)選地,所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的裝置包括在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)提取,并添加到所述查詢表的裝置;在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)提取,并更新到所述查詢表的裝置;在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表刪除的數(shù)據(jù)對應(yīng)地從所述查詢表中刪除的裝置。在該技術(shù)方案中,為了保持查詢表與業(yè)務(wù)表的同步,在特定時(shí)間將業(yè)務(wù)表中新增、修改、刪除的數(shù)據(jù)更新到查詢表。這樣,通過選擇特定時(shí)間,可以既不影響系統(tǒng)的工作效率,還可以保持查詢表與業(yè)務(wù)表不會(huì)有太多不同,減少數(shù)據(jù)查詢時(shí)系統(tǒng)的工作量。優(yōu)選地,所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的裝置包括預(yù)設(shè)時(shí)間值,將預(yù)設(shè)的所述時(shí)間值作為所述特定時(shí)間的裝置;或者,預(yù)設(shè)時(shí)間間隔值,將每經(jīng)過所述時(shí)間間隔后的時(shí)間值作為所述特定時(shí)間的裝置;或者,將系統(tǒng)的空閑時(shí)間作為特定時(shí)間的裝置。在該技術(shù)方案中,特定時(shí)間可以是設(shè)置一個(gè)固定的時(shí)間值,例如23點(diǎn),則在每天的23點(diǎn)根據(jù)業(yè)務(wù)表更新查詢表;特定時(shí)間也可以是設(shè)置固定的時(shí)間間隔,例如10小時(shí),則每過10小時(shí)根據(jù)業(yè)務(wù)表更新一次查詢表;特定時(shí)間還可以是系統(tǒng)的空閑時(shí)間,則在系統(tǒng)空閑時(shí)根據(jù)業(yè)務(wù)表更新查詢表。根據(jù)本發(fā)明的另一方面,提出一種查詢處理方法,包括按查詢維度和時(shí)間維度從業(yè)務(wù)表中提取數(shù)據(jù),生成查詢表,記錄所述數(shù)據(jù);至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作;在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表。在該技術(shù)方案中,通過查詢表查詢數(shù)據(jù),數(shù)據(jù)的掃描量減小,從而可以高效地進(jìn)行數(shù)據(jù)查詢。并且當(dāng)業(yè)務(wù)表中的數(shù)據(jù)發(fā)生變更時(shí),不是立即對查詢表進(jìn)行更新,不影響系統(tǒng)的效率。變更的這部分?jǐn)?shù)據(jù)通過其它方式獲得,以確保數(shù)據(jù)查詢的準(zhǔn)確性。優(yōu)選地,還包括根據(jù)所述業(yè)務(wù)表中相對于所述查詢表刪除或修改的數(shù)據(jù),在查詢表中標(biāo)記與所述刪除或修改的數(shù)據(jù)相應(yīng)的數(shù)據(jù);則所述至少部分地將所述查詢表作為查詢 數(shù)據(jù)源,執(zhí)行極值查詢操作的步驟中,將所述查詢表中未被標(biāo)記的數(shù)據(jù)以及所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中修改或刪除的數(shù)據(jù)不是立即更新到查詢表,為了確保查詢結(jié)果的準(zhǔn)確性將業(yè)務(wù)表中修改或刪除的數(shù)據(jù)在查詢表中標(biāo)記為無效。這樣,在查詢數(shù)據(jù)時(shí)可以不將查詢表中此部分?jǐn)?shù)據(jù)作為數(shù)據(jù)源,而是直接獲得業(yè)務(wù)表中修改后的數(shù)據(jù),將業(yè)務(wù)表中修改后的數(shù)據(jù)作為數(shù)據(jù)源進(jìn)行查詢,確保準(zhǔn)確。優(yōu)選地,所述至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的步驟中還包括同時(shí)將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中新增的數(shù)據(jù)不是立即更新到查詢表,因此同時(shí)將業(yè)務(wù)表中新增的數(shù)據(jù)作為數(shù)據(jù)源,確保查詢結(jié)果準(zhǔn)確。優(yōu)選地,其中所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的步驟包括在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)提取,并添加到所述查詢表;在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)提取,并更新到所述查詢表;在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表刪除的數(shù)據(jù)對應(yīng)地從所述查詢表中刪除。在該技術(shù)方案中,為了保持查詢表與業(yè)務(wù)表的同步,在特定時(shí)間將業(yè)務(wù)表中新增、修改、刪除的數(shù)據(jù)更新到查詢表。這樣,通過選擇特定時(shí)間,可以既不影響系統(tǒng)的工作效率,還可以保持查詢表與業(yè)務(wù)表不會(huì)有太多不同,減少數(shù)據(jù)查詢時(shí)系統(tǒng)的工作量。優(yōu)選地,所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的步驟包括預(yù)設(shè)時(shí)間值,將預(yù)設(shè)的所述時(shí)間值作為所述特定時(shí)間;或者,預(yù)設(shè)時(shí)間間隔值,將每經(jīng)過所述時(shí)間間隔后的時(shí)間值作為所述特定時(shí)間;或者,將系統(tǒng)的空閑時(shí)間作為特定時(shí)間。在該技術(shù)方案中,特定時(shí)間可以是設(shè)置一個(gè)固定的時(shí)間值,例如23點(diǎn),則在每天的23點(diǎn)根據(jù)業(yè)務(wù)表更新查詢表;特定時(shí)間也可以是設(shè)置固定的時(shí)間間隔,例如10小時(shí),則每過10小時(shí)根據(jù)業(yè)務(wù)表更新一次查詢表;特定時(shí)間還可以是系統(tǒng)的空閑時(shí)間,則在系統(tǒng)空閑時(shí)根據(jù)業(yè)務(wù)表更新查詢表。通過上述技術(shù)方案,可以準(zhǔn)確、高效地進(jìn)行數(shù)據(jù)查詢。
圖I示出了根據(jù)本發(fā)明的實(shí)施例的查詢處理裝置的框圖;圖2示出了根據(jù)本發(fā)明的實(shí)施例的查詢處理方法的流程圖;圖3A和圖3B示出了根據(jù)本發(fā)明的實(shí)施例的查詢處理方法中查詢表生成和更新示意圖;圖4示出了根據(jù)本發(fā)明的實(shí)施例的查詢處理方法中對查詢表的處理流程圖;圖5示出了根據(jù)本發(fā)明的實(shí)施例的查詢處理方法中查詢數(shù)據(jù)來源的示意圖;圖6示出了根據(jù)本發(fā)明的另一實(shí)施例的查詢處理裝置的示意圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明的保護(hù)范圍不受下面公開的具體實(shí)施例的限制。下面結(jié)合附圖和實(shí)施例對本發(fā)明做進(jìn)一步說明。需要說明的是,在不沖突的情況下,本申請的實(shí)施例及實(shí)施例中的特征可以相互組合。圖I示出了根據(jù)本發(fā)明的實(shí)施例的查詢處理裝置的框圖。如圖I所示,根據(jù)本發(fā)明的實(shí)施例的查詢處理裝置100包括查詢表生成單元102,按查詢維度和時(shí)間維度從業(yè)務(wù)表中提取數(shù)據(jù),生成查詢表,記錄數(shù)據(jù);數(shù)據(jù)查詢單元104,至少部分地將查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作;查詢表更新單元106,在特定的時(shí)間根據(jù)業(yè)務(wù)表更新查詢表。在該技術(shù)方案中,通過查詢表查詢數(shù)據(jù),數(shù)據(jù)的掃描量減小,從而可以高效地進(jìn)行數(shù)據(jù)查詢。并且當(dāng)業(yè)務(wù)表中的數(shù)據(jù)發(fā)生變更時(shí),不是立即對查詢表進(jìn)行更新,不影響系統(tǒng)的效率。變更的這部分?jǐn)?shù)據(jù)通過其它方式獲得,以確保數(shù)據(jù)查詢的準(zhǔn)確性。優(yōu)選地,還包括標(biāo)記單元108,根據(jù)業(yè)務(wù)表中相對于查詢表刪除或修改的數(shù)據(jù),在查詢表中標(biāo)記與刪除或修改的數(shù)據(jù)相應(yīng)的數(shù)據(jù);則數(shù)據(jù)查詢單元104將查詢表中未被標(biāo)記的數(shù)據(jù)以及業(yè)務(wù)表中相對于查詢表修改的數(shù)據(jù)作為查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中修改或刪除的數(shù)據(jù)不是立即更新到查詢表,為了確保查詢結(jié)果的準(zhǔn)確性將業(yè)務(wù)表中修改或刪除的數(shù)據(jù)在查詢表中標(biāo)記為無效。這樣,在查詢數(shù)據(jù)時(shí)可以不將查詢表中此部分?jǐn)?shù)據(jù)作為數(shù)據(jù)源,而是直接獲得業(yè)務(wù)表中修改后的數(shù)據(jù),將業(yè)務(wù)表中修改后的數(shù)據(jù)作為數(shù)據(jù)源進(jìn)行查詢,確保準(zhǔn)確。優(yōu)選地,數(shù)據(jù)查詢單元104同時(shí)將業(yè)務(wù)表中相對于查詢表新增的數(shù)據(jù)作為查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中新增的數(shù)據(jù)不是立即更新到查詢表,因此同時(shí)將業(yè)務(wù)表中新增的數(shù)據(jù)作為數(shù)據(jù)源,確保查詢結(jié)果準(zhǔn)確。優(yōu)選地,查詢表更新單元106包括新增數(shù)據(jù)子單元1062,在特定的時(shí)間將業(yè)務(wù)表中相對于查詢表新增的數(shù)據(jù)提取,并添加到查詢表;修改數(shù)據(jù)子單元1064,在特定的時(shí)間將業(yè)務(wù)表中相對于查詢表修改的數(shù)據(jù)提取,并更新到查詢表;刪除數(shù)據(jù)子單元1066,在特定的時(shí)間將業(yè)務(wù)表中相對于查詢表刪除的數(shù)據(jù)對應(yīng)地從查詢表中刪除。在該技術(shù)方案中,為了保持查詢表與業(yè)務(wù)表的同步,在特定時(shí)間將業(yè)務(wù)表中新增、修改、刪除的數(shù)據(jù)更新到查詢表。這樣,通過選擇特定時(shí)間,可以既不影響系統(tǒng)的工作效率,還可以保持查詢表與業(yè)務(wù)表不會(huì)有太多不同,減少數(shù)據(jù)查詢時(shí)系統(tǒng)的工作量。優(yōu)選地,查詢表更新單元106還包括時(shí)間設(shè)置子單元1068,預(yù)設(shè)時(shí)間值,將預(yù)設(shè)的時(shí)間值作為特定時(shí)間;或者,預(yù)設(shè)時(shí)間間隔值,將每經(jīng)過時(shí)間間隔后的時(shí)間值作為特定時(shí)間;或者,將系統(tǒng)的空閑時(shí)間作為特定時(shí)間。在該技術(shù)方案中,特定時(shí)間可以是設(shè)置一個(gè)固定的時(shí)間值,例如23點(diǎn),則在每天的23點(diǎn)根據(jù)業(yè)務(wù)表更新查詢表;特定時(shí)間也可以是設(shè)置固定的時(shí)間間隔,例如10小時(shí),則每過10小時(shí)根據(jù)業(yè)務(wù)表更新一次查詢表;特定時(shí)間還可以是系統(tǒng)的空閑時(shí)間,則在系統(tǒng)空閑時(shí)根據(jù)業(yè)務(wù)表更新查詢表。
圖2示出了根據(jù)本發(fā)明的實(shí)施例的查詢處理方法的流程圖。如圖2所示,根據(jù)本發(fā)明的實(shí)施例的查詢處理方法包括步驟202,按查詢維度和時(shí)間維度從業(yè)務(wù)表中提取數(shù)據(jù),生成查詢表,記錄數(shù)據(jù);步驟204,至少部分地將查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作;步驟206,在特定的時(shí)間根據(jù)業(yè)務(wù)表更新查詢表。在該技術(shù)方案中,通過查詢表查詢數(shù)據(jù),數(shù)據(jù)的掃描量減小,從而可以高效地進(jìn)行數(shù)據(jù)查詢。并且當(dāng)業(yè)務(wù)表中的數(shù)據(jù)發(fā)生變更時(shí),不是立即對查詢表進(jìn)行更新,不影響系統(tǒng)的效率。變更的這部分?jǐn)?shù)據(jù)通過其它方式獲得,以確保數(shù)據(jù)查詢的準(zhǔn)確性。優(yōu)選地,還包括根據(jù)業(yè)務(wù)表中相對于查詢表刪除或修改的數(shù)據(jù),在查詢表中標(biāo)記與刪除或修改的數(shù)據(jù)相應(yīng)的數(shù)據(jù);則步驟204中,將查詢表中未被標(biāo)記的數(shù)據(jù)以及業(yè)務(wù)表中相對于查詢表修改的數(shù)據(jù)作為查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中修改或刪除的數(shù)據(jù)不是立即更新到查詢表,為了確保查詢結(jié)果的準(zhǔn)確性將業(yè)務(wù)表中修改或刪除的數(shù)據(jù)在查詢表中標(biāo)記為無效。這樣,在查詢數(shù)據(jù)時(shí)可以不將查詢表中此部分?jǐn)?shù)據(jù)作為數(shù)據(jù)源,而是直接獲得業(yè)務(wù)表中修改后的數(shù)據(jù),將業(yè)務(wù)表中修改后的數(shù)據(jù)作為數(shù)據(jù)源進(jìn)行查詢,確保準(zhǔn)確。優(yōu)選地,步驟204中還包括同時(shí)將業(yè)務(wù)表中相對于查詢表新增的數(shù)據(jù)作為查詢數(shù)據(jù)源。在該技術(shù)方案中,由于業(yè)務(wù)表中新增的數(shù)據(jù)不是立即更新到查詢表,因此同時(shí)將業(yè)務(wù)表中新增的數(shù)據(jù)作為數(shù)據(jù)源,確保查詢結(jié)果準(zhǔn)確。優(yōu)選地,其中步驟206還包括在特定的時(shí)間將業(yè)務(wù)表中相對于查詢表新增的數(shù)據(jù)提取,并添加到查詢表;在特定的時(shí)間將業(yè)務(wù)表中相對于查詢表修改的數(shù)據(jù)提取,并更新到查詢表;在特定的時(shí)間將業(yè)務(wù)表中相對于查詢表刪除的數(shù)據(jù)對應(yīng)地從查詢表中刪除。在該技術(shù)方案中,為了保持查詢表與業(yè)務(wù)表的同步,在特定時(shí)間將業(yè)務(wù)表中新增、修改、刪除的數(shù)據(jù)更新到查詢表。這樣,通過選擇特定時(shí)間,可以既不影響系統(tǒng)的工作效率,還可以保持查詢表與業(yè)務(wù)表不會(huì)有太多不同,減少數(shù)據(jù)查詢時(shí)系統(tǒng)的工作量。優(yōu)選地,步驟206還包括預(yù)設(shè)時(shí)間值,將預(yù)設(shè)的時(shí)間值作為特定時(shí)間;或者,預(yù)設(shè)時(shí)間間隔值,將每經(jīng)過時(shí)間間隔后的時(shí)間值作為特定時(shí)間;或者,將系統(tǒng)的空閑時(shí)間作為特定時(shí)間。在該技術(shù)方案中,特定時(shí)間可以是設(shè)置一個(gè)固定的時(shí)間值,例如23點(diǎn),則在每天的23點(diǎn)根據(jù)業(yè)務(wù)表更新查詢表;特定時(shí)間也可以是設(shè)置固定的時(shí)間間隔,例如10小時(shí),則每過10小時(shí)根據(jù)業(yè)務(wù)表更新一次查詢表;特定時(shí)間還可以是系統(tǒng)的空閑時(shí)間,則在系統(tǒng)空閑時(shí)根據(jù)業(yè)務(wù)表更新查詢表。下面結(jié)合圖3A至圖5說明根據(jù)本發(fā)明的一個(gè)實(shí)施例的查詢處理方法,該實(shí)施例是在聯(lián)機(jī)事務(wù)處理中的具體應(yīng)用。首先,將業(yè)務(wù)表中的數(shù)據(jù)按查詢維度和時(shí)間維度壓縮到查詢表業(yè)務(wù)表壓縮生成查詢表的主要步驟包括(I)定義出極限查詢的維度集合;(2)按此集合中的維度+時(shí)間維度(一般為操作時(shí)間戳)將業(yè)務(wù)表的記錄進(jìn)行分組;(3)選出同一組內(nèi)的極值數(shù)據(jù);
(4)每一組數(shù)據(jù)生成一條查詢表記錄。在通常情況下,大數(shù)據(jù)量的業(yè)務(wù)表會(huì)壓縮成一個(gè)較小的查詢表。而且查詢表的字段只有查詢維度信息和極值信息,占用的空間也相對較少。參見圖3A。假設(shè)有一張大數(shù)據(jù)數(shù)量的業(yè)務(wù)表,經(jīng)常從中按維度m、s查詢最新價(jià)和最低價(jià)。根據(jù)此種場景,可將業(yè)務(wù)表記錄按m、s維度進(jìn)行分組,每組內(nèi)選出最新價(jià)、最低價(jià),生成一條記錄存到查詢表中。當(dāng)業(yè)務(wù)表在新增記錄時(shí),不需要立即生成或更新查詢表。在本技術(shù)方案下,對于新增這個(gè)操作不會(huì)立即生成或更新查詢表數(shù)據(jù)。因?yàn)樵诼?lián)機(jī)事務(wù)處理中占比例較大的操作還在新增數(shù)據(jù),所以本方案對新增操作不產(chǎn)生任何影響。當(dāng)業(yè)務(wù)表在修改、刪除數(shù)據(jù)時(shí),只需更新查詢表中較少記錄。查詢表中存儲(chǔ)了查詢維度和時(shí)間維度,這樣在修改和刪除業(yè)務(wù)表記錄時(shí),只需要更新這個(gè)時(shí)間范圍及相關(guān)維度下的記錄即可。而且本方案也不是在聯(lián)機(jī)事務(wù)處理過程中去重算這部分查詢表記錄,而且只將這部分記錄打上個(gè)無效標(biāo)識,代表它們已經(jīng)是不可用的查詢數(shù)據(jù)。使其對修改、修改操作的影響降到最低。參見圖3B,如果客戶在修改或刪除了 pki記錄信息,則查詢表中的相關(guān)記錄會(huì)將有效標(biāo)記(valid)置為無效狀態(tài)(N),這樣當(dāng)從此表中查詢極值信息時(shí),就會(huì)過濾到這條無效記錄。對前文所述業(yè)務(wù)表中發(fā)生的新增、修改、刪除數(shù)據(jù)的操作,使用應(yīng)用系統(tǒng)的定時(shí)任務(wù)功能,在非繁忙時(shí)間段將業(yè)務(wù)表新增記錄壓縮到查詢表并重算無效記錄,以保持查詢表中的數(shù)據(jù)有效。本技術(shù)方案會(huì)使用應(yīng)用系統(tǒng)中的定時(shí)任務(wù)功能(一般的ERP系統(tǒng)均提供此功能)。在系統(tǒng)空閑時(shí)間,使用定時(shí)任務(wù)功能完成兩項(xiàng)任務(wù),一是將業(yè)務(wù)表中上次壓縮之后產(chǎn)生的新記錄壓縮到查詢表中,此項(xiàng)任務(wù)可設(shè)置每月執(zhí)行一次,例如每月I日23點(diǎn)開始執(zhí)行;二是將查詢表中的無效記錄從業(yè)務(wù)表進(jìn)行重新計(jì)算,此項(xiàng)任務(wù)可設(shè)置每天執(zhí)行一次,例如每天22點(diǎn)開始執(zhí)行。設(shè)置在空閑時(shí)間,可避免對日常業(yè)務(wù)操作造成影響,也可根據(jù)客戶現(xiàn)場實(shí)際情況動(dòng)態(tài)調(diào)整。參見圖4,圖4示出了本實(shí)施例中對查詢表的處理流程圖。在步驟402中,獲取業(yè)務(wù)表的數(shù)據(jù);
在步驟404中,判斷業(yè)務(wù)表中的數(shù)據(jù)是否發(fā)生變更;當(dāng)步驟406中的判定結(jié)果為是時(shí),在步驟406中執(zhí)行定時(shí)任務(wù),將新記錄壓縮到查詢表中,將查詢表中的無效記錄從業(yè)務(wù)表進(jìn)行重新計(jì)算。在步驟408中,得到新的查詢表的數(shù)據(jù)。通過上述流程將大數(shù)據(jù)量業(yè)務(wù)表的數(shù)據(jù)壓縮到小數(shù)據(jù)量的查詢表中,使用定時(shí)任務(wù)在業(yè)務(wù)系統(tǒng)空閑時(shí)間完成壓縮和重算,對聯(lián)機(jī)事務(wù)處理操作不會(huì)產(chǎn)品影響。參見圖5,圖5示出了本實(shí)施例中查詢數(shù)據(jù)來源的示意圖。為保證查詢結(jié)果的完整性正確性,必須從業(yè)務(wù)表和查詢表中聯(lián)合取數(shù)。需要掃描的查詢數(shù)據(jù)源包括三部分。 501是業(yè)務(wù)表中經(jīng)過定時(shí)任務(wù)最后一次壓縮之后又新增的數(shù)據(jù),如果定時(shí)任務(wù)是每月一次的話,這部分?jǐn)?shù)據(jù)量就是業(yè)務(wù)表中一個(gè)月的數(shù)據(jù)量;502是已經(jīng)壓縮到查詢表中有效的數(shù)據(jù),這部分?jǐn)?shù)據(jù)是經(jīng)過壓縮的,通常情況下數(shù)據(jù)量較小;503是由于業(yè)務(wù)表中修改或刪除已經(jīng)壓縮過的數(shù)據(jù),導(dǎo)致的查詢表標(biāo)識為無效的數(shù)據(jù),這部分的數(shù)據(jù)量應(yīng)該是非常小,因?yàn)槊刻斓亩〞r(shí)任務(wù)會(huì)重算這部分?jǐn)?shù)據(jù)。這部分無效的數(shù)據(jù)可以關(guān)聯(lián)業(yè)務(wù)表取得。本發(fā)明的技術(shù)方案可以保證高效地從三部分?jǐn)?shù)據(jù)源中取得正確的極值數(shù)據(jù)。第一,三部分查詢在數(shù)據(jù)庫系統(tǒng)中只使用一條SQL語句即可實(shí)現(xiàn)。第二,三部分待查數(shù)據(jù)量均較少,查詢效率會(huì)較高。501是一個(gè)月的數(shù)據(jù)量,如果還多,可調(diào)整定時(shí)任務(wù)周期,從每月降到每周,甚至更頻繁。502部分是壓縮數(shù)據(jù),數(shù)據(jù)在查詢維度分布偏斜的情況下,壓縮比例較高數(shù)量較少,如果有極端情況數(shù)據(jù)分布非常均勻,則在查詢表的這些維度上建立索引,會(huì)有效再提高查詢效率。503部分是通過每天的定時(shí)任務(wù)重算之后的數(shù)據(jù),量很小。這樣在保證總的掃描數(shù)據(jù)量小的前提下,會(huì)有效地提高查詢速度。圖6示出了根據(jù)本發(fā)明的另一實(shí)施例的查詢處理裝置的示意圖。根據(jù)本發(fā)明的另一實(shí)施例的查詢處理裝置600包括業(yè)務(wù)表新增記錄定時(shí)壓縮組件602,業(yè)務(wù)表修改(刪除)記錄更新查詢表組件604,查詢表無效記錄定時(shí)重壓縮組件606,查詢表公共操作支持組件608,極值查詢組件610五個(gè)主要組件。業(yè)務(wù)表新增記錄定時(shí)壓縮組件602,完成對業(yè)務(wù)表中上次壓縮之后產(chǎn)品的新記錄再次壓縮到查詢表功能。業(yè)務(wù)表修改(刪除)記錄更新查詢表組件604,完成業(yè)務(wù)表修改(刪除)記錄后對查詢表標(biāo)識相關(guān)壓縮記錄無效功能。查詢表無效記錄定時(shí)重壓縮組件606,承擔(dān)對查詢表無效記錄根據(jù)查詢維度從業(yè)務(wù)表重新壓縮生成的功能。極值查詢組件608,完成從查詢表和業(yè)務(wù)表中組織數(shù)據(jù)生成最終查詢結(jié)果功能。查詢表操作公共組件610,承擔(dān)所有對查詢表進(jìn)行新增、修改、刪除、查詢等公共操作的功能。根據(jù)本發(fā)明,該實(shí)施例解決了在大數(shù)據(jù)量的OLTP系統(tǒng)中,高效正確地查詢極值的問題。既可以保證在不影響OLTP系統(tǒng)中日常的業(yè)務(wù)操作效率的前提下,顯著減少對業(yè)務(wù)系統(tǒng)表的數(shù)據(jù)掃描,極大提高極值數(shù)據(jù)查詢的效率。
綜上,根據(jù)本發(fā)明的數(shù)據(jù)查詢技術(shù),可以準(zhǔn)確、高效地進(jìn)行數(shù)據(jù)查詢。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于 本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種查詢處理裝置,其特征在于,包括 按查詢維度和時(shí)間維度從業(yè)務(wù)表中提取數(shù)據(jù),生成查詢表,記錄所述數(shù)據(jù)的裝置; 至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的裝置; 在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的裝置。
2.根據(jù)權(quán)利要求I所述的查詢處理裝置,其特征在于,還包括 根據(jù)所述業(yè)務(wù)表中相對于所述查詢表刪除或修改的數(shù)據(jù),在查詢表中標(biāo)記與所述刪除或修改的數(shù)據(jù)相應(yīng)的數(shù)據(jù)的裝置; 則所述至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的裝置將所述查詢表中未被標(biāo)記的數(shù)據(jù)以及所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。
3.根據(jù)權(quán)利要求I所述的查詢處理裝置,其特征在于,所述至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的裝置同時(shí)將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。
4.根據(jù)權(quán)利要求I所述的查詢處理裝置,其特征在于,所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的裝置包括 在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)提取,并添加到所述查詢表的裝置; 在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)提取,并更新到所述查詢表的裝置; 在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表刪除的數(shù)據(jù)對應(yīng)地從所述查詢表中刪除的裝置。
5.根據(jù)權(quán)利要求I至4中任一項(xiàng)所述的查詢處理裝置,其特征在于,所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的裝置包括 預(yù)設(shè)時(shí)間值,將預(yù)設(shè)的所述時(shí)間值作為所述特定時(shí)間的裝置; 或者,預(yù)設(shè)時(shí)間間隔值,將每經(jīng)過所述時(shí)間間隔后的時(shí)間值作為所述特定時(shí)間的裝置; 或者,將系統(tǒng)的空閑時(shí)間作為特定時(shí)間的裝置。
6.一種查詢處理方法,其特征在于,包括 按查詢維度和時(shí)間維度從業(yè)務(wù)表中提取數(shù)據(jù),生成查詢表,記錄所述數(shù)據(jù); 至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作; 在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表。
7.根據(jù)權(quán)利要求6所述的查詢處理方法,其特征在于,還包括 根據(jù)所述業(yè)務(wù)表中相對于所述查詢表刪除或修改的數(shù)據(jù),在查詢表中標(biāo)記與所述刪除或修改的數(shù)據(jù)相應(yīng)的數(shù)據(jù); 則所述至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的步驟中,將所述查詢表中未被標(biāo)記的數(shù)據(jù)以及所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。
8.根據(jù)權(quán)利要求6所述的查詢處理方法,其特征在于,所述至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的步驟中還包括同時(shí)將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)作為所述查詢數(shù)據(jù)源。
9.根據(jù)權(quán)利要求6所述的查詢處理方法,其特征在于,其中所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的步驟包括 在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表新增的數(shù)據(jù)提取,并添加到所述查詢表; 在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表修改的數(shù)據(jù)提取,并更新到所述查詢表; 在特定的時(shí)間將所述業(yè)務(wù)表中相對于所述查詢表刪除的數(shù)據(jù)對應(yīng)地從所述查詢表中刪除。
10.根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的查詢處理方法,其特征在于,所述在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的步驟包括 預(yù)設(shè)時(shí)間值,將預(yù)設(shè)的所述時(shí)間值作為所述特定時(shí)間;或者,預(yù)設(shè)時(shí)間間隔值,將每經(jīng)過所述時(shí)間間隔后的時(shí)間值作為所述特定時(shí)間; 或者,將系統(tǒng)的空閑時(shí)間作為特定時(shí)間。
全文摘要
本發(fā)明提供了一種查詢處理裝置,包括按查詢維度和時(shí)間維度從業(yè)務(wù)表中提取數(shù)據(jù),生成查詢表,記錄所述數(shù)據(jù)的裝置;至少部分地將所述查詢表作為查詢數(shù)據(jù)源,執(zhí)行極值查詢操作的裝置;在特定的時(shí)間根據(jù)所述業(yè)務(wù)表更新所述查詢表的裝置。本發(fā)明還提出一種查詢處理方法。通過本發(fā)明的技術(shù)方案,可以準(zhǔn)確、高效地進(jìn)行數(shù)據(jù)查詢。
文檔編號G06F17/30GK102799651SQ201210224460
公開日2012年11月28日 申請日期2012年6月28日 優(yōu)先權(quán)日2012年6月28日
發(fā)明者趙玉行 申請人:用友軟件股份有限公司