物化视图在煤炭税收系统的应用
扫描二维码
随时随地手机看文章
引 言
随着信息化系统的广泛普及,数据仓库技术成为许多专家学者关注的热点,近年来发展十分迅速。数据仓库是为企业决策制定过程提供多种类型的数据支持的数据集合,对于管理部门的决策制定起着至关重要的作用。由于海量数据的存储,数据仓库在查询性能方面并没有得到很好的体现。因此, 解决数据仓库系统查询速度慢的问题受到了许多专家学者的广泛关注。物化视图作为数据仓库的实现方式之一,能在一定程度上提高查询性能,减少用户的查询响应时间。物化视图通过对基础表进行复杂关联、计算等预处理操作,减少了相应的查询时间。对于物化视图,关键在于如何保持与基表数据同步,从而实现快速刷新,这就要求在创建物化视图之前必须为物化视图创建物化视图日志,并正确清理物化视图日志。
1 数据仓库概述
数据仓库是单个数据存储的形式,其创建的目的在于为分析性报告和决策制定提供数据支撑。数据仓库中的数据都按照某一主题组织加工而来,大多来自于多个分散的操作型数据库,出于服务于决策者的目的,数据仓库将多个数据库中有价值的业务数据进行加工汇总,为决策者提供更有利于分析的数据。
数据仓库一般包括四个部分,即数据源、数据存储管理、联机分析处理(OLAP)与前端工具(各种管理工具和应用工具)。数据仓库体系结构图如图 1 所示。
2 物化视图概述
2.1 物化视图概念
物化视图相对于普通视图而言是一种物理表,而普通视图可以看作虚拟表,即数据库中只存储该视图的定义,不存储实际数据,当多次对视图进行查询时,实际是反复执行视图的定义,进而得到查询结果,这样就会出现耗时过长的问题。但物化视图是一个实际存在的物理表,是基础表的数据副本。其主要具有以下三种特点:
(1) 数据库中实际存在与物化视图对应的物理表;
(2) 物化视图有自己的物理存储属性的段;
(3) 相比于普通视图,物化视图占用数据库的磁盘空间。物化视图的数据组成如图 2所示。
由于物化视图技术提前对数据库系统中复杂的查询进行计算、连接,把得到的查询结果存储在数据库中。因此,当对数据库的查询与查询物化视图相同时,数据库会直接查询已经计算好的结果,相比于直接查询多个基础表,并进行多个关联以及复杂的计算操作,直接查询物化视图在查询响应时间方面得到了明显提高。由此可见,物化视图实现的是一种典型的以空间换取时间的策略。
2.2 物化视图的应用
由于物化视图在查询响应方面体现出来的优良性能,已被广泛应用于各行各业。其中两个典型的应用场景包括用于查询优化与高级复制。
2.2.1 物化视图的刷新
为了使物化视图与基础表的数据保持同步,必须实现物化视图的刷新。刷新分为 ONDEMAND和 ONCOMMIT两种刷新模式。当用户需要按照自己的要求设定时间间隔以及起始时间时可选择 ONDEMAND模式;而在对基础表数据进行更改后,提交时立即进行数据刷新则需选择 ONCOMMIT刷新模式。一般情况下,我们选择 ONDEMAND刷新模式。此外, 根据不同的应用场景, 刷新方法分为 FAST、COMPLETE、FORCE和 NEVER四种。其中,可以实现增量刷新的是 FAST 和 FORCE,COMPLETE实现的是全量刷新,每次刷新时都会重新生成全部数据。
2.2.2 创建物化视图日志
实现快速刷新的前提是创建物化视图日志,通常物化视图日志分为ROWID 和PRIMARY KEY两种创建方式。其中, 基于ROWID的创建方式应根据 ROWID定位基表对象的变化来创建,而 PRIMARYKEY则根据主键对基表对象的变化进行定位。创建基于ROWID的物化视图日志基本语法如下:
CREATE MATERIALIZED VIEW LOG ON 基础表表名WITH ROWID,SEQUENCE( 字段名)INCLUDING NEW VALUES ;
2.2.3 物化视图在煤炭税收系统中的应用
在读研期间,我有幸参加了毕节市煤炭税源专业化管理平台项目的开发工作。该系统主要为了在方便煤炭企业生产销售的同时加强税收监管工作,对进一步制定合理的税收政策提供数据支撑。
该系统的查询统计模块采用物化视图,对数据进行预处理后将计算好的结果存储于数据库中,作为系统实现查询分析功能的数据源。但由于物化视图日志记录了基础表所有的更改操作,因此,若对物化视图日志清理不彻底会导致物化视图数据与基础表数据不一致。具体情况可解释为若一个基表对应两个或两个以上的物化视图,且一个物化视图定义的是快速刷新(FAST),另一个物化视图定义的刷新方式是 FORCE,那么对于基表数据的操作,快速刷新的物化视图会自动刷新数据,而 FORCE刷新方式的物化视图还未刷新时(可能因为还未到刷新时间),基表对应的物化视图日志数据还未清理 ;当一个基表只有一个对应的快速刷新的物化视图时,在基表数据更新的同时,该物化视图的数据随之更新,且对应的物化视图日志数据自动清理。
实践表明,在清理物化视图日志后,物化视图可与基表数据保持一致,且定期清理物化视图日志后并未发现物化视图与基表数据不一致的情况。
3 结 语
物化视图技术研究表明,在实现多方位查询分析数据的同时,为保证数据安全且实现对不同用户选择性展示数据, 需要对数据进行一定的清洗及过滤,而进行这些复杂工作的同时会对查询效率产生一定影响,如何找到其中的平衡点,关键在于解决物化视图的数据同步问题。因此,只有建立合适的物化视图实现数据仓库,才能真正为决策制定提供依据。