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