摘要:商務(wù)數(shù)據(jù)庫(kù)中,決策支持相關(guān)的查詢變得越來(lái)越頻繁。使用什么樣的技術(shù)來(lái)滿足不斷變化的信息源和快速響應(yīng)的系統(tǒng)需求是查詢優(yōu)化要解決的一個(gè)重大技術(shù)問(wèn)題。本文提出原子視角的概念,并對(duì)區(qū)分視角的粒度選擇進(jìn)行了詳細(xì)分析,使用EQGM模型尋找候選自動(dòng)累加表,然后通過(guò)匹配函數(shù)和規(guī)則進(jìn)行自動(dòng)累加表的規(guī)劃。通過(guò)訪問(wèn)自動(dòng)累加表來(lái)實(shí)現(xiàn)查詢性能的優(yōu)化和提升。實(shí)際項(xiàng)目運(yùn)行結(jié)果表明,查詢性能很大程度上獲得了優(yōu)化。
關(guān)鍵詞:原子視角;自動(dòng)累加表;自動(dòng)累加表規(guī)劃;數(shù)據(jù)粒度;匹配函數(shù)
1 引言/背景
決策支持系統(tǒng)(Decision Supporting System, DSS)最大的特點(diǎn)和優(yōu)點(diǎn)就是數(shù)據(jù)積累[1],它最基本的兩個(gè)組成部分就是數(shù)據(jù)的輸入和輸出,而報(bào)表是數(shù)據(jù)輸出的主要手段。報(bào)表不僅是對(duì)業(yè)務(wù)活動(dòng)過(guò)程的記錄,及時(shí)反映企事業(yè)各部門的經(jīng)營(yíng)狀況,還能從歷史數(shù)據(jù)中進(jìn)行數(shù)據(jù)挖掘歸納總結(jié)出有規(guī)律的信息,為管理決策層提供準(zhǔn)確、直接的數(shù)據(jù)。
近年來(lái),決策支持相關(guān)的查詢有了很大的發(fā)展[4]。這些查詢基本上要對(duì)海量數(shù)據(jù)進(jìn)行多重連接和復(fù)雜的聚集操作。這些查詢交互性需求變得越來(lái)越普遍,而且要求系統(tǒng)以秒為單位進(jìn)行快速響應(yīng)。傳統(tǒng)的優(yōu)化技術(shù)往往不能滿足這些要求。
一般有兩種方法對(duì)多重,分布或異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行信息整合:虛擬視圖技術(shù)和數(shù)據(jù)倉(cāng)庫(kù)的物化視圖技術(shù)。物化視圖是一個(gè)定時(shí)刷新的預(yù)存計(jì)算結(jié)果的表。當(dāng)信息源經(jīng)常變化時(shí),虛擬試圖的方法比較好。當(dāng)信息源變化不是太頻繁并且需要很快的查詢響應(yīng)時(shí)間時(shí),物化視圖的方法更有效。選擇合適的基本數(shù)據(jù)的“共享”部分進(jìn)行物化而不是物化所有的視圖是一種更有效的方法。用戶查詢可以通過(guò)獲取物化視圖而不是原數(shù)據(jù)來(lái)優(yōu)化查詢。
本文提出的自動(dòng)累加表功能上和物化視圖類似,但是它是實(shí)際存在的物理表,將查詢頻率比較高和與業(yè)務(wù)查詢密切相關(guān)的屬性制作成自動(dòng)累加表,可以同時(shí)滿足信息源變化頻繁和快速響應(yīng)時(shí)間的要求。本文首先提出原子視角的概念,它消除了視角之間的函數(shù)依賴關(guān)系;然后使用EQGM模型工具來(lái)對(duì)統(tǒng)計(jì)查詢進(jìn)行了分析,從而得到查詢和更新頻率比較高的表以及它們的屬性,并將它們作為候選自動(dòng)累加表;然后遵循一定的規(guī)則和匹配函數(shù),將這些表和屬性制作成自動(dòng)累加表(Automatic Summary Table,AST),并對(duì)自動(dòng)累加表的累加程度進(jìn)行了分析。在統(tǒng)計(jì)查詢時(shí)就可以查詢這些自動(dòng)累加表,而不是事實(shí)表和維表,來(lái)實(shí)現(xiàn)查詢性能的提升和優(yōu)化。
2 相關(guān)文獻(xiàn)
報(bào)表統(tǒng)計(jì)和數(shù)據(jù)庫(kù)系統(tǒng)一般都是息息相關(guān)的,數(shù)據(jù)庫(kù)的設(shè)計(jì)直接影響到報(bào)表統(tǒng)計(jì)的效率。根據(jù)應(yīng)用系統(tǒng)的需要,有時(shí)一張報(bào)表與數(shù)據(jù)庫(kù)中數(shù)張表相關(guān)聯(lián),使得報(bào)表統(tǒng)計(jì)的查詢語(yǔ)句變的相當(dāng)復(fù)雜,從而影響了報(bào)表的查詢效率。報(bào)表的查詢優(yōu)化一般可以歸為三大類:
(1)創(chuàng)建臨時(shí)表。當(dāng)系統(tǒng)應(yīng)用有多張表關(guān)聯(lián)的時(shí)候,且這些表數(shù)據(jù)比較龐大,而發(fā)現(xiàn)其中的某一張或者某幾張表關(guān)聯(lián)后得到的結(jié)果集非常小并且希望查詢得到這個(gè)結(jié)果集的速度非??欤梢钥紤]創(chuàng)建“臨時(shí)表”[2]。
(2)分裂大表。分裂大表可以分為臨時(shí)分裂和永久分裂兩種[3]。在永久分裂的基礎(chǔ)上加設(shè)一個(gè)索引表,索引表中存放所有子表的名稱和子表分裂的條件,索引表是該類信息的唯一操作入口。
(3)基于物化視圖的查詢優(yōu)化。
①自動(dòng)累加表(Automatic Summary Table, AST)。AST實(shí)際上是一種帶有聚集函數(shù)的物化視圖,考慮到其優(yōu)化過(guò)程的自動(dòng)性,所以稱為自動(dòng)累加表。文獻(xiàn)通過(guò)QGM(Query Graph Model)工具,提出了查詢和AST匹配模型,還歸納總結(jié)出了4種統(tǒng)一的匹配模式[5];然后通過(guò)AST對(duì)查詢進(jìn)行重寫,查詢時(shí)直接訪問(wèn)AST來(lái)實(shí)現(xiàn)查詢的優(yōu)化。
②重構(gòu)視圖(Restructured View)[6]。提出了一個(gè)可以將普通視圖和重構(gòu)視圖統(tǒng)一處理的查詢優(yōu)化框架,適用于SQL的選擇-投影-聯(lián)接查詢和有無(wú)聚集函數(shù)的視圖。作者還對(duì)重構(gòu)視圖進(jìn)行了可用性分析和查詢重寫的介紹。
③物化視圖的選擇。綜合考慮存儲(chǔ)空間、查詢性能和維護(hù)成本等方面要求,提出了物化視圖的兩階段選擇算法MPL和MPL-CV[7]。
④MVPP。提出一個(gè)基于Multiple View Processing Plan(MVPP)[8]的啟發(fā)式算法,從查詢性能和維護(hù)成本因素考慮選擇什么樣的視圖進(jìn)行物化;還將物化視圖的設(shè)計(jì)問(wèn)題映射成0-1整形規(guī)劃問(wèn)題,保證了最優(yōu)解的存在。
⑤兩階段算法。第一階段負(fù)責(zé)優(yōu)化總的查詢響應(yīng)時(shí)間,第二階段在給定的維護(hù)時(shí)間成本約束下選擇合適的視圖進(jìn)行物化[4]。
本文從數(shù)據(jù)粒度角度對(duì)原子視角進(jìn)行了進(jìn)一步的優(yōu)化選擇,同時(shí)針對(duì)自動(dòng)累加表的規(guī)劃過(guò)程提出了三條原則和AST的更新原則。
3 相關(guān)概念和定義
3.1事實(shí)表和維表
度量是數(shù)據(jù)的實(shí)際意義,也稱為事實(shí),即描述數(shù)據(jù)“是什么”。維是人們觀察數(shù)據(jù)的特定角度。人們觀察數(shù)據(jù)的某一維時(shí)可能存在細(xì)節(jié)程度不同,維的這種數(shù)據(jù)層次結(jié)構(gòu)就是維的層級(jí)。一個(gè)維通常具有多個(gè)層級(jí),例如時(shí)間維可以從日期、月份、季度、年等不同層級(jí)來(lái)進(jìn)行描述。
事實(shí)表[9]是用來(lái)描述和存儲(chǔ)多維立方體的度量值及各個(gè)維的碼值,用于存放企業(yè)大量的事實(shí)數(shù)據(jù),通常數(shù)據(jù)量都很大,且非規(guī)范化程度很高;維表[9]是用來(lái)描述維信息,它是圍繞事實(shí)表建立的較小的表。一般用關(guān)系數(shù)據(jù)庫(kù)的二維表來(lái)表示事實(shí)表和維表,也就是用“星形模式”和“雪花模式”來(lái)表示多維數(shù)據(jù)模型。星形模式通常有一個(gè)中心表(事實(shí)表)和多個(gè)維表組成。雪花模式是對(duì)星型模式的擴(kuò)展。雪花模式[9]對(duì)星型模式的維表進(jìn)一步層次化,將原來(lái)的各維表進(jìn)一步的細(xì)化,拆分為更詳細(xì)的維表,形成一些局部的“層次”區(qū)域。如圖1所示的售票表和相關(guān)聯(lián)的維表的雪花模式圖,白色的表示事實(shí)表,灰色的表示維表。
3.2原子視角的規(guī)范化
在報(bào)表查詢過(guò)程中,用戶通過(guò)輸入不同的查詢條件進(jìn)行相應(yīng)的查詢。系統(tǒng)需要知道從什么角度對(duì)用戶需求數(shù)據(jù)進(jìn)行篩選統(tǒng)計(jì),然后按一定的排列方式呈現(xiàn)出來(lái),這里引入查詢視角的概念。所謂查詢視角(Query Viewpoint)指的是系統(tǒng)從什么視角什么角度對(duì)數(shù)據(jù)進(jìn)行篩選查詢。系統(tǒng)會(huì)從不同的角度對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢統(tǒng)計(jì),用集合來(lái)表示一個(gè)應(yīng)用系統(tǒng)的所有查詢視角的集合:。
實(shí)際情況下, 的 個(gè)查詢視角中,有的視角可能通過(guò)其他的視角來(lái)進(jìn)行表示,如售票金額、售票數(shù)量和單價(jià),只需要知道其中的兩個(gè),然后根據(jù)它們之間的函數(shù)關(guān)系得到另一個(gè)的值。在查詢過(guò)程中,只需要知道這些相關(guān)聯(lián)視角的部分,通過(guò)它們的函數(shù)關(guān)系得到全部的視角數(shù)值。為此引入原子視角的概念。所謂原子視角(Atomic Viewpoint),它實(shí)際上是一種特殊的查詢視角集合,它消除了查詢視角中的函數(shù)依賴關(guān)系,記為,其他的非原子視角記為原子視角滿足以下規(guī)則:
因此,。公式1表示,在原子視角集合中,任意的原子視角之間都是獨(dú)立正交的,不存在函數(shù)依賴,體現(xiàn)了它的原子性。公式2表示,在所有的統(tǒng)計(jì)視角中,任意一個(gè)視角都可以通過(guò)原子視角集合中的元素來(lái)進(jìn)行表示。公式3,4表示,在原子視角集合中,原子視角可以通過(guò)一個(gè)非原子視角和其他的原子視角來(lái)表示,而這個(gè)非原子視角也是不可再分的。
在原子視角中,根據(jù)它們功能的不同分為兩類:區(qū)分視角(Differentiation Perspective)和聚集視角(Aggregation Perspective)。所謂區(qū)分視角,指系統(tǒng)通過(guò)這些視角來(lái)篩選數(shù)據(jù)庫(kù)中所需要的屬性,對(duì)應(yīng)于維表中的主碼。一般用在查詢中的選擇-投影-連接運(yùn)算中,但是不包含聚集函數(shù),記為。聚集視角是查詢中用于聚集函數(shù)中的屬性,負(fù)責(zé)分組和聚集函數(shù)的計(jì)算,記為。因此,原子視角還可以表示為:。對(duì)于一個(gè)具體的區(qū)分視角來(lái)講,還存在一個(gè)數(shù)據(jù)粒度[10]問(wèn)題。即當(dāng)某個(gè)維度存在不同層級(jí)時(shí),應(yīng)選擇某維的哪個(gè)層級(jí)作為區(qū)分視角才會(huì)使查詢更有效率。如果選擇的維的層級(jí)太高,查詢效率很高,但可以響應(yīng)的查詢就會(huì)受到限制;如果選擇的維的層級(jí)太低,雖然可以響應(yīng)大部分的查詢,但是查詢效率低下,而且操作復(fù)雜。因此,選擇維的哪個(gè)層級(jí)作為區(qū)分視角要綜合考慮數(shù)據(jù)粒度的利弊。圖2是一個(gè)事實(shí)表和它的維的層級(jí)結(jié)構(gòu)。
以財(cái)務(wù)款項(xiàng)流動(dòng)這個(gè)維度即“售票員-售票窗口-港口-船務(wù)公司”來(lái)說(shuō)明如何在某維度上選擇合適的粒度。用維度上層級(jí)為的查詢成本來(lái)表示,,其中表示第個(gè)查詢的查詢頻率,表示第個(gè)查詢消耗的系統(tǒng)資源,系統(tǒng)消耗的系統(tǒng)資源和需要處理的數(shù)據(jù)量成正比,所以可以用要處理的數(shù)據(jù)量作為表示。目標(biāo)就是選擇某一維度上最小的層級(jí)作為該維度上的區(qū)分視角。如果相同維度下存在兩個(gè)相同的查詢成本或者存在兩個(gè)查詢成本,值很接近,但明顯大于其余層級(jí)的查詢成本時(shí),可以將這個(gè)維度的兩個(gè)層級(jí)拆分為兩個(gè)維度,分別都作為區(qū)分視角。
3.3EQGM(Extendable Query Graph Model)
EQGM是QGM(Query Graph Model)[5]的擴(kuò)展形式,惟一的不同是QGM的葉節(jié)點(diǎn)是表,而EQGM在葉節(jié)點(diǎn)上添加了查詢用到的屬性。在EQGM中,查詢通過(guò)一個(gè)非環(huán)形有向圖來(lái)表示,其中葉節(jié)點(diǎn)表示帶有屬性的基本表,中間節(jié)點(diǎn)表示對(duì)表的操作,而邊表示從子節(jié)點(diǎn)到父節(jié)點(diǎn)的記錄流。每個(gè)非葉節(jié)點(diǎn)通過(guò)對(duì)輸入數(shù)據(jù)的操作之后會(huì)產(chǎn)生一個(gè)關(guān)系表,輸入數(shù)據(jù)也是一系列的關(guān)系表。EQGM的根結(jié)點(diǎn)返回最終的查詢結(jié)果。
EQGM中的中間節(jié)點(diǎn)通過(guò)它們的操作類型來(lái)劃分。最常見的兩種類型為SELECT節(jié)點(diǎn)和GROUP-BY節(jié)點(diǎn)。SELECT節(jié)點(diǎn)代表查詢的選擇-投影-連接部分,通過(guò)使用WHERE或HAVING謂詞來(lái)計(jì)算所有的出現(xiàn)在SELECT和GROUP-BY語(yǔ)句中的標(biāo)量表達(dá)式。GROUP-BY節(jié)點(diǎn)執(zhí)行分組并計(jì)算聚集函數(shù)。如圖3中底部的SELECT節(jié)點(diǎn)通過(guò)SaleWindow-key(售票窗口編碼)=Window-key(窗口編碼)實(shí)現(xiàn)了window和Ticketselling表的連接,通過(guò)選擇謂詞WindowName(售票窗口名稱)=Yantai01篩選售票窗口為yantan01的記錄。GROUP-BY節(jié)點(diǎn)通過(guò)SaleID(售票人編碼),SaleWindow-key進(jìn)行分組,并計(jì)算SUM(price)的值。最后,頂部的SELECT節(jié)點(diǎn)通過(guò)HAVING謂詞sm>10,000輸出最終查詢結(jié)果。
4. 統(tǒng)計(jì)匹配模型
4.1 匹配函數(shù)和自動(dòng)累加表的規(guī)劃
所有的統(tǒng)計(jì)(Statistics)集合記為,根據(jù)查詢視角和原子視角的定義得知,一個(gè)具體的統(tǒng)計(jì) 可以表示為:
考慮到一般的統(tǒng)計(jì)視角都可以通過(guò)原子視角來(lái)進(jìn)行表示,所以在實(shí)際分析統(tǒng)計(jì)查詢的時(shí)候,可以將統(tǒng)計(jì)簡(jiǎn)化為。對(duì)于一些不包含聚集函數(shù)的查詢統(tǒng)計(jì),查詢結(jié)果只需要調(diào)用數(shù)據(jù)庫(kù)中維表的明細(xì)信息即可,相對(duì)來(lái)說(shuō)操作不是很復(fù)雜,在這里不作考慮。因此,如果中為空,。每一個(gè)統(tǒng)計(jì)都是對(duì)表的一系列操作,本節(jié)使用EQGM模型工具來(lái)對(duì)統(tǒng)計(jì)查詢進(jìn)行分析,得到查詢和更新頻率比較高的表以及它們的屬性,并將它們作為候選自動(dòng)累加表;然后遵循一定的規(guī)則和匹配函數(shù),將這些表和屬性制作成自動(dòng)累加表(Automatic Summary Table,AST),并從查詢性能和維護(hù)成本等方面對(duì)自動(dòng)累加表的累加程度進(jìn)行了分析。在統(tǒng)計(jì)查詢時(shí)就可以查詢這些自動(dòng)累加表,而不是事實(shí)表和維表,來(lái)實(shí)現(xiàn)查詢性能的提升和優(yōu)化。
對(duì)于一個(gè)統(tǒng)計(jì)查詢,它的EQGM圖4可以統(tǒng)一的表達(dá)為如圖所示的形式。
首先要定義幾個(gè)概念。如圖4,在EQGM中最底層的GROUP-BY節(jié)點(diǎn)稱為,最底層的葉節(jié)點(diǎn)稱為,非最底層的葉節(jié)點(diǎn)稱為,通常是維表。由于本文討論的是非空的統(tǒng)計(jì)查詢,所以圖中至少有一個(gè)GROUP-BY節(jié)點(diǎn),即一定存在。將及其以下的sub-EQGM所使用的表和表中的屬性記錄下來(lái)作為候選的自動(dòng)累加表(Candidate Automatic Summary Table,)。在中只包含SELCT和GROUP-BY節(jié)點(diǎn)操作使用到的屬性,不記錄表中其他不相關(guān)的屬性。在篩選的時(shí)候,應(yīng)遵循以下幾個(gè)規(guī)則:
● 多層原則。 將操作盡可能的分為多個(gè)層次,這樣每個(gè)層次要處理的數(shù)據(jù)量就很少了。類似了數(shù)據(jù)的“分流”操作。 事實(shí)表盡量作為 輸入,維表盡量作為 輸入。
● 下拉原則。帶有聚集函數(shù)的操作盡可能底層化。合適粒度的區(qū)分視角的謂詞盡可能的下拉。
● 上拉原則。聚集視角的謂詞盡可能的上拉。
下拉原則是為了將具有相同原子視角的數(shù)據(jù)進(jìn)行壓縮匯總,減少要處理的數(shù)據(jù)量。將聚集視角的謂詞上拉是為了保證候選自動(dòng)累加表可以具備一個(gè)“共享”的數(shù)據(jù)操作集合。換句話說(shuō),就是為了盡可能的使候選自動(dòng)累加表可以滿足所有的查詢請(qǐng)求。
帶有聚集函數(shù)的查詢統(tǒng)計(jì)都會(huì)有這樣的一個(gè),接下來(lái)討論如何對(duì)這些進(jìn)行進(jìn)一步的優(yōu)化。對(duì)帶有聚集函數(shù)的統(tǒng)計(jì)的候選自動(dòng)累加表進(jìn)行比較時(shí)會(huì)出現(xiàn)一下4種情況:
當(dāng)和兩者相同時(shí),直接將或作為自動(dòng)累加表;
當(dāng)和兩者為包含關(guān)系時(shí),將包含原子視角多的作為自動(dòng)累加表;
當(dāng)和兩者相離即沒有公共交集時(shí),將和分別作為自動(dòng)累加表;
當(dāng)和兩者相交時(shí),將作為自動(dòng)累加表。
匹配過(guò)程如下:
步驟1:根據(jù)業(yè)務(wù)功能或邏輯將候選自動(dòng)累加表進(jìn)行職能分類;步驟2:然后對(duì)其各個(gè)邏輯模塊中任意的兩個(gè)之間進(jìn)行按照以上的匹配規(guī)則進(jìn)行判定;步驟3:將各個(gè)邏輯模塊生成的自動(dòng)累加表繼續(xù)進(jìn)行匹配,轉(zhuǎn)到步驟2,直到該邏輯模塊不再產(chǎn)生新的自動(dòng)累加表為止;步驟4:將各個(gè)邏輯模塊生成的自動(dòng)累加表再逐一匹配,然后生成最終的自動(dòng)累加表。
經(jīng)過(guò)上述處理得到的自動(dòng)累加表實(shí)際上是一種輕度綜合數(shù)據(jù),但相對(duì)于細(xì)節(jié)數(shù)據(jù)庫(kù)(事實(shí)表和維表)中的數(shù)據(jù)量少得多。系統(tǒng)還可以根據(jù)業(yè)務(wù)的需求,在輕度綜合數(shù)據(jù)(自動(dòng)累加表)的基礎(chǔ)上生成高度綜合數(shù)據(jù)表,來(lái)進(jìn)一步方便決策分析。對(duì)于所有統(tǒng)計(jì)來(lái)說(shuō),凡是涉及決策分析和統(tǒng)計(jì)聚集操作的查詢都可以通過(guò)訪問(wèn)自動(dòng)累加表得到快速響應(yīng);至于涉及一些細(xì)節(jié)數(shù)據(jù)的信息查詢,還是要依賴細(xì)節(jié)數(shù)據(jù)庫(kù)。
4.2 自動(dòng)累加表的更新維護(hù)
每一項(xiàng)業(yè)務(wù)操作會(huì)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)產(chǎn)生影響。每執(zhí)行一次業(yè)務(wù)操作,會(huì)同時(shí)在事實(shí)表和自動(dòng)累加表中進(jìn)行數(shù)據(jù)更新操作。不同的是,事實(shí)表只負(fù)責(zé)記錄這個(gè)業(yè)務(wù)操作的詳細(xì)信息,不對(duì)數(shù)據(jù)進(jìn)行聚集操作;自動(dòng)累加表會(huì)在業(yè)務(wù)操作所涉及的原子視角上進(jìn)行數(shù)據(jù)的聚集操作。
當(dāng)數(shù)據(jù)操作執(zhí)行時(shí),假設(shè)業(yè)務(wù)操作涉及個(gè)原子視角,業(yè)務(wù)操作所產(chǎn)生的數(shù)據(jù)在個(gè)原子視角下有各自的投影映射值,記為表示數(shù)據(jù)操作對(duì)應(yīng)的原子視角下的數(shù)值;如果數(shù)據(jù)操作在對(duì)應(yīng)原子視角下沒有投影,則記為1。該業(yè)務(wù)操作同時(shí)會(huì)影響相關(guān)的自動(dòng)累加表中數(shù)據(jù)的變化。假設(shè)受影響的自動(dòng)累加表集合(Automatic Summary Table Operated,
由于業(yè)務(wù)操作對(duì)自動(dòng)累加表的原理是類似的,只需對(duì)其中某一自動(dòng)累加表進(jìn)行分析即可。以自動(dòng)累加表為例,假設(shè)此自動(dòng)累加表中包含的原子視角為,集合表示對(duì)應(yīng)的數(shù)值集合,表示自動(dòng)累加表中原子視角下對(duì)應(yīng)的值。執(zhí)行業(yè)務(wù)操作后,變?yōu)?
,“+”表示值的更新,更新過(guò)程通過(guò)觸發(fā)器來(lái)實(shí)現(xiàn),更新時(shí)需要遵循以下規(guī)則:
(1)對(duì)應(yīng)的原子視角為聚集視角,“+”表示按照業(yè)務(wù)操作的邏輯規(guī)則進(jìn)行數(shù)據(jù)的累加或算術(shù)減操作。例如售票系統(tǒng)中,如果業(yè)務(wù)操作為售票,則在售票金額則在原來(lái)基礎(chǔ)上進(jìn)行累加;如果為退票,則在原來(lái)的基礎(chǔ)上進(jìn)行算術(shù)減操作。
(2)如果對(duì)應(yīng)的原子視角為區(qū)分視角,需要遵循以下規(guī)則:
若區(qū)分視角下的值,它所對(duì)應(yīng)的某一聚集視角為。用一個(gè)整形變量來(lái)統(tǒng)計(jì)該區(qū)分視角對(duì)應(yīng)的某一具體聚集視角下記錄的數(shù)量,
即 。
若,表示自動(dòng)累加表中,已存在的值為的歷史記錄。此時(shí),只需更新該區(qū)分視角對(duì)應(yīng)的聚集視角即可,此時(shí)的仍為。
若,表示自動(dòng)累加表中,在區(qū)分視角的值為時(shí),沒有歷史記錄。此時(shí),需要在自動(dòng)累加表中下寫入一條新的記錄,來(lái)實(shí)現(xiàn)區(qū)分視角值的更新。即就更新為。
5結(jié)束語(yǔ)
A港售票系統(tǒng)是一個(gè)具有售票、退票和改簽功能的集成售票系統(tǒng)。
系統(tǒng)數(shù)據(jù)庫(kù)中記錄售票相關(guān)業(yè)務(wù)的事實(shí)表和維表為50多個(gè),經(jīng)過(guò)業(yè)務(wù)需求分析和匹配函數(shù)后,系統(tǒng)只需要八個(gè)自動(dòng)累加表(表1為其中的一個(gè)自動(dòng)累加表)就可以滿足幾乎全部的財(cái)務(wù)報(bào)表查詢(業(yè)務(wù)數(shù)據(jù)的明細(xì)記錄報(bào)表查詢除外),且每月需要處理的數(shù)據(jù)量只有幾千條數(shù)據(jù)左右。每月月底生成月度報(bào)表時(shí),使用原子視角技術(shù)前,需要對(duì)基本數(shù)據(jù)進(jìn)行分組匯總,消耗大量系統(tǒng)資源,一個(gè)月結(jié)報(bào)表的查詢往往需要20分鐘,有時(shí)還可能造成系統(tǒng)崩潰?,F(xiàn)在只需要十幾秒,報(bào)表查詢的效率得到了質(zhì)的提高。
6 結(jié)論
和傳統(tǒng)優(yōu)化技術(shù)相比,本文論述了自動(dòng)累加表是如何進(jìn)行規(guī)劃的,是一種在數(shù)據(jù)庫(kù)設(shè)計(jì)階段對(duì)查詢性能做得優(yōu)化;而且所設(shè)計(jì)的自動(dòng)累加表把查詢所需要的時(shí)間分?jǐn)偟綌?shù)據(jù)操作時(shí),在原子視角上進(jìn)行數(shù)據(jù)的累加。而操作時(shí)這種視角上的數(shù)據(jù)累加所消耗的時(shí)間成本是可以忽略的。自動(dòng)累加表技術(shù)是一種以少量空間換取大量時(shí)間的查詢優(yōu)化技術(shù),并在實(shí)際的大型滾裝船售票系統(tǒng)的報(bào)表查詢中得到了充分運(yùn)用,有效解決了對(duì)超大容量數(shù)據(jù)庫(kù)報(bào)表查詢快速響應(yīng)的問(wèn)題。
參考文獻(xiàn):
[1]郭榮,楊穎. PC服務(wù)器實(shí)現(xiàn)海量數(shù)據(jù)存取的方法[J].廣西科學(xué)院學(xué)報(bào),2009,25(1):33-35.
[2]黃艷,譚同德 等. 管理信息系統(tǒng)的報(bào)表統(tǒng)計(jì)策略[J].南陽(yáng)師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2003(12):52-54。
[3]尚展壘,陳慧,宋宇偉. 一種改進(jìn)的查詢優(yōu)化技術(shù)——分裂大表[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào),2002(9):61-63.
[4]W. Liang, H. Wang, M.E. Orlowska. Materialized view selection under the maintenance time constraint, Data Knowledge Engineering 2001(37):203-216.
[5]M. Zaharioudakis, R. Cochrane, G. Lapis, H. Pirahesh, M. Ursta. Answering Complex SQL Queries Using Automatic Summary Tables, in: Proceedings of ACM SIGMOD International Conference on Management of Data,2000:40-49.
[6]Dongfeng Chen, R. Chirkova, F. Sadri. Query optimization using restructured views: Theory and experiments. Information Systems[J], 2009:353-370.
[7]Ming-Chuan Hung, Man-Lin Huang, Don-Lin Yang,etc. Efficient approaches for materialized views selection in a data warehouse. Information Sciences[J], 2007:1333-1348.
[8]Jian Yang, K. Karlapalem, Qing Li. Algorithms for Materialized View Design in Data Warehousing Environment. Proceedings of the 23rd VLDB Conference Athens, Greece, 1997:136-145.
[9]李澤海. 數(shù)據(jù)倉(cāng)庫(kù)中多維數(shù)據(jù)處理與查詢相關(guān)技術(shù)的研究[J],吉林大學(xué),2005(10):11-26.
[10]W.H.Inmon,王志海. 數(shù)據(jù)倉(cāng)庫(kù)[M].北京:機(jī)械工業(yè)出版社,2000.