物化視圖在煤炭稅收系統(tǒng)的應(yīng)用
引 言
隨著信息化系統(tǒng)的廣泛普及,數(shù)據(jù)倉庫技術(shù)成為許多專家學(xué)者關(guān)注的熱點,近年來發(fā)展十分迅速。數(shù)據(jù)倉庫是為企業(yè)決策制定過程提供多種類型的數(shù)據(jù)支持的數(shù)據(jù)集合,對于管理部門的決策制定起著至關(guān)重要的作用。由于海量數(shù)據(jù)的存儲,數(shù)據(jù)倉庫在查詢性能方面并沒有得到很好的體現(xiàn)。因此, 解決數(shù)據(jù)倉庫系統(tǒng)查詢速度慢的問題受到了許多專家學(xué)者的廣泛關(guān)注。物化視圖作為數(shù)據(jù)倉庫的實現(xiàn)方式之一,能在一定程度上提高查詢性能,減少用戶的查詢響應(yīng)時間。物化視圖通過對基礎(chǔ)表進(jìn)行復(fù)雜關(guān)聯(lián)、計算等預(yù)處理操作,減少了相應(yīng)的查詢時間。對于物化視圖,關(guān)鍵在于如何保持與基表數(shù)據(jù)同步,從而實現(xiàn)快速刷新,這就要求在創(chuàng)建物化視圖之前必須為物化視圖創(chuàng)建物化視圖日志,并正確清理物化視圖日志。
1 數(shù)據(jù)倉庫概述
數(shù)據(jù)倉庫是單個數(shù)據(jù)存儲的形式,其創(chuàng)建的目的在于為分析性報告和決策制定提供數(shù)據(jù)支撐。數(shù)據(jù)倉庫中的數(shù)據(jù)都按照某一主題組織加工而來,大多來自于多個分散的操作型數(shù)據(jù)庫,出于服務(wù)于決策者的目的,數(shù)據(jù)倉庫將多個數(shù)據(jù)庫中有價值的業(yè)務(wù)數(shù)據(jù)進(jìn)行加工匯總,為決策者提供更有利于分析的數(shù)據(jù)。
數(shù)據(jù)倉庫一般包括四個部分,即數(shù)據(jù)源、數(shù)據(jù)存儲管理、聯(lián)機(jī)分析處理(OLAP)與前端工具(各種管理工具和應(yīng)用工具)。數(shù)據(jù)倉庫體系結(jié)構(gòu)圖如圖 1 所示。
2 物化視圖概述
2.1 物化視圖概念
物化視圖相對于普通視圖而言是一種物理表,而普通視圖可以看作虛擬表,即數(shù)據(jù)庫中只存儲該視圖的定義,不存儲實際數(shù)據(jù),當(dāng)多次對視圖進(jìn)行查詢時,實際是反復(fù)執(zhí)行視圖的定義,進(jìn)而得到查詢結(jié)果,這樣就會出現(xiàn)耗時過長的問題。但物化視圖是一個實際存在的物理表,是基礎(chǔ)表的數(shù)據(jù)副本。其主要具有以下三種特點:
(1) 數(shù)據(jù)庫中實際存在與物化視圖對應(yīng)的物理表;
(2) 物化視圖有自己的物理存儲屬性的段;
(3) 相比于普通視圖,物化視圖占用數(shù)據(jù)庫的磁盤空間。物化視圖的數(shù)據(jù)組成如圖 2所示。
由于物化視圖技術(shù)提前對數(shù)據(jù)庫系統(tǒng)中復(fù)雜的查詢進(jìn)行計算、連接,把得到的查詢結(jié)果存儲在數(shù)據(jù)庫中。因此,當(dāng)對數(shù)據(jù)庫的查詢與查詢物化視圖相同時,數(shù)據(jù)庫會直接查詢已經(jīng)計算好的結(jié)果,相比于直接查詢多個基礎(chǔ)表,并進(jìn)行多個關(guān)聯(lián)以及復(fù)雜的計算操作,直接查詢物化視圖在查詢響應(yīng)時間方面得到了明顯提高。由此可見,物化視圖實現(xiàn)的是一種典型的以空間換取時間的策略。
2.2 物化視圖的應(yīng)用
由于物化視圖在查詢響應(yīng)方面體現(xiàn)出來的優(yōu)良性能,已被廣泛應(yīng)用于各行各業(yè)。其中兩個典型的應(yīng)用場景包括用于查詢優(yōu)化與高級復(fù)制。
2.2.1 物化視圖的刷新
為了使物化視圖與基礎(chǔ)表的數(shù)據(jù)保持同步,必須實現(xiàn)物化視圖的刷新。刷新分為 ONDEMAND和 ONCOMMIT兩種刷新模式。當(dāng)用戶需要按照自己的要求設(shè)定時間間隔以及起始時間時可選擇 ONDEMAND模式;而在對基礎(chǔ)表數(shù)據(jù)進(jìn)行更改后,提交時立即進(jìn)行數(shù)據(jù)刷新則需選擇 ONCOMMIT刷新模式。一般情況下,我們選擇 ONDEMAND刷新模式。此外, 根據(jù)不同的應(yīng)用場景, 刷新方法分為 FAST、COMPLETE、FORCE和 NEVER四種。其中,可以實現(xiàn)增量刷新的是 FAST 和 FORCE,COMPLETE實現(xiàn)的是全量刷新,每次刷新時都會重新生成全部數(shù)據(jù)。
2.2.2 創(chuàng)建物化視圖日志
實現(xiàn)快速刷新的前提是創(chuàng)建物化視圖日志,通常物化視圖日志分為ROWID 和PRIMARY KEY兩種創(chuàng)建方式。其中, 基于ROWID的創(chuàng)建方式應(yīng)根據(jù) ROWID定位基表對象的變化來創(chuàng)建,而 PRIMARYKEY則根據(jù)主鍵對基表對象的變化進(jìn)行定位。創(chuàng)建基于ROWID的物化視圖日志基本語法如下:
CREATE MATERIALIZED VIEW LOG ON 基礎(chǔ)表表名WITH ROWID,SEQUENCE( 字段名)INCLUDING NEW VALUES ;
2.2.3 物化視圖在煤炭稅收系統(tǒng)中的應(yīng)用
在讀研期間,我有幸參加了畢節(jié)市煤炭稅源專業(yè)化管理平臺項目的開發(fā)工作。該系統(tǒng)主要為了在方便煤炭企業(yè)生產(chǎn)銷售的同時加強(qiáng)稅收監(jiān)管工作,對進(jìn)一步制定合理的稅收政策提供數(shù)據(jù)支撐。
該系統(tǒng)的查詢統(tǒng)計模塊采用物化視圖,對數(shù)據(jù)進(jìn)行預(yù)處理后將計算好的結(jié)果存儲于數(shù)據(jù)庫中,作為系統(tǒng)實現(xiàn)查詢分析功能的數(shù)據(jù)源。但由于物化視圖日志記錄了基礎(chǔ)表所有的更改操作,因此,若對物化視圖日志清理不徹底會導(dǎo)致物化視圖數(shù)據(jù)與基礎(chǔ)表數(shù)據(jù)不一致。具體情況可解釋為若一個基表對應(yīng)兩個或兩個以上的物化視圖,且一個物化視圖定義的是快速刷新(FAST),另一個物化視圖定義的刷新方式是 FORCE,那么對于基表數(shù)據(jù)的操作,快速刷新的物化視圖會自動刷新數(shù)據(jù),而 FORCE刷新方式的物化視圖還未刷新時(可能因為還未到刷新時間),基表對應(yīng)的物化視圖日志數(shù)據(jù)還未清理 ;當(dāng)一個基表只有一個對應(yīng)的快速刷新的物化視圖時,在基表數(shù)據(jù)更新的同時,該物化視圖的數(shù)據(jù)隨之更新,且對應(yīng)的物化視圖日志數(shù)據(jù)自動清理。
實踐表明,在清理物化視圖日志后,物化視圖可與基表數(shù)據(jù)保持一致,且定期清理物化視圖日志后并未發(fā)現(xiàn)物化視圖與基表數(shù)據(jù)不一致的情況。
3 結(jié) 語
物化視圖技術(shù)研究表明,在實現(xiàn)多方位查詢分析數(shù)據(jù)的同時,為保證數(shù)據(jù)安全且實現(xiàn)對不同用戶選擇性展示數(shù)據(jù), 需要對數(shù)據(jù)進(jìn)行一定的清洗及過濾,而進(jìn)行這些復(fù)雜工作的同時會對查詢效率產(chǎn)生一定影響,如何找到其中的平衡點,關(guān)鍵在于解決物化視圖的數(shù)據(jù)同步問題。因此,只有建立合適的物化視圖實現(xiàn)數(shù)據(jù)倉庫,才能真正為決策制定提供依據(jù)。