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