充分利用计算机技术在海量数据审计中的优势_海量数据论文

充分利用计算机技术在海量数据审计中的优势_海量数据论文

充分利用计算机技术在海量数据审计中的优势,本文主要内容关键词为:充分利用论文,海量论文,计算机技术论文,优势论文,数据论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

本文从计算机技术层面上讨论如何采集和分析被审计单位的海量数据。根据实际参与审计项目的经验,对采集海量数据到分析海量数据的过程,以及相关技术细节作了较为详实的论述。本文所关注的海量数据是指由被审计单位提供的大量业务数据,数据格式表现为各种大型关系型数据库的导出文件。本文介绍的案例基于ORACLE,同时兼顾DB2、SQLSERVER等系统。

一、审前技术准备阶段

面对被审计单位的信息系统,审计人员必须首先通过多种方式和途径了解被审计单位的业务流程。只有熟悉被审计单位的业务流程,才能更好地理解信息系统的设计架构、操作流程以及与业务流程相关的核心数据表。一般可以通过与被审计单位业务人员访谈了解业务流程,请信息系统人员介绍系统情况了解业务流程的技术实现,还可以通过查阅被审计单位提供的信息系统相关技术文档来深入理解技术实现细节。业务流程可通过系统需求说明书来了解,信息系统架构可通过系统设计方案说明书、总体设计说明书来了解,操作流程可通过系统的用户手册来了解,系统核心数据表可通过数据库设计文档来了解。最终的目的是在数据采集阶段知道业务流程产生哪些数据,审计过程中需要哪些数据,被审计单位能够提供哪些数据。

在人力资源方面,审计小组需要配备熟悉被审计单位行业的专家能手及掌握计算机技术的审计人员。这两类人员相互协同配合,才能较好地发挥审计小组各成员所长,体现综合优势。

在软硬件设备方面,必须要作相应的配备。硬件主要包括高性能的数据服务器、高速网络设备、存储海量数据的移动存储设备比如TB级别的移动硬盘。软件主要包括操作系统软件、数据库软件等。为了实现多人协同处理分析,可采用千兆交换技术组建一个现场审计局域网,使审计人员客户端PC机访问数据服务器。

在获取数据阶段,被审计单位出于保护安全生产的考虑,审计人员考虑出现影响被审计单位的正常生产的风险,同时为保证数据的不失真,一般由被审计单位提供关系数据库逻辑导出文件,不考虑直接连接生产系统数据服务器采集。ORACLE数据一般使用dump格式,SQLSERVER一般使用MDF或备份导出格式,DB2一般提供IXF文件格式。

在审计人员恢复数据时,必须注意使用与被审计单位相互兼容的数据库软件版本,确保数据能恢复,不失真。

二、数据导入阶段

海量数据存储设计的合理性可直接影响到审计小组的数据分析效率。

首先要合理规划存储空间。一般原则是将海量数据分散存储在不同的物理磁盘上可以缩短数据的读取时间,从而提高效率。例如,在数据分析中要用到的多个关键性的业务类的主表,可能达到上亿条记录数。在设计这些表的存储时,需要将表空间对应的数据文件放在不同物理磁盘上或者磁盘阵列上,需要将索引数据存储、临时表空间等都分开存放。不同的数据存放于不同的磁盘,可以避免产生I/O冲突,提高查询性能。

在实际操作数据导入时,要注意以下几个问题:

1.要求被审计单位提供导出的原始数据用户信息,避免数据导入时发生错误。

2.导入海量数据的逻辑导出文件时,要注意关闭目标表上的索引和约束。在数据导入成功后,可根据审计分析的实际需要创建相关的索引。

3.导入海量数据的逻辑导出文件时,要注意关闭目标表的事务日志记录功能。

4.导入数据时,注意导出命令与导入命令的匹配。如在ORACLE中,对于使用exp命令导出的dump文件,需要采用imp命令导入。同样对于数据泵导出命令expdp,应采用数据泵导入命令impdp。

对于多个dump文件,可启动多个进程并行导入。

对于被审计单位提供的SQLSERVER的mdf文件,导入到相应的SQLSERVER数据库中则相对简单。在SQLSERVER的企业管理器中,通过鼠标右键数据库,通过“附加”功能就可将MDF文件导入即可。对于BAK备份文件,只要通过“还原”功能即可导入数据。

在海量数据的实际导入过程中,可能遇到各种问题,均需要根据提示的错误信息,找出问题根源,一一排查,只有解决后才能顺利导入数据。

三、数据处理阶段

1.数据预处理。在开始数据分析之前,对于导入的审计数据必须先进行预处理。主要是做好相关表中的字段映射。比如某个表中字段中的值需要修改到审计人员约定的另一个约定值,便于直观查阅等。例如某社保系统的人员信息,有个字段为参保状态,原系统的数值为0,1,2。经审计人员与被审计单位核对后,0表示正常参保,1表示终止参保,2表示转移至外省市。那么通过修改这个字段数值,均可映射对应的汉字解释。数据映射阶段的工作只要编写对应的SQL语句就可解决,只不过要注意WHERE子句的条件约束。

对于含有多个年度的超大数据表,可将其拆分为不同的年度数据表。比如某市医保系统中的个人支付信息2009-2011年度的记录超过上亿条记录,在审计中可将该表的拆分为三个不同年度的个人支付表,如个人支付表2009、个人支付表_2010、个人支付表_2011。在数据分析阶段,根据年度可在对应的年度个人支付表中进行查询分析。

对于某些超大表如果在数据分析阶段仅仅只是起到一个中间关联的作用时,可将关联字段筛选出并创建生成另外一张只含相关关联字段的中间表,对于关联查询的效率提高非常有帮助。

2.创建索引。在处理分析之前,要对表科学设计索引。对于主表中经常被关联的字段信息要分别创建索引。合理的索引,在数据量较大时,可将查询分析速度提高几何级倍数。

在WHERE子句中正确的使用创建的索引可以达到显著提高大表的查询效率。索引使用不当,或者没有创建索引,只能导致执行效率低下的查询,影响审计工作进度。

审计机关导入生成的数据库,主要就是用来进行数据分析,这个数据库相当于充当了数据仓库或者决策型数据库的作用,主要用来进行查询分析。除了数据分析之前的数据预处理外,一般没有新增、修改、删除动作,设置的索引多一点,可以提高数据库的查询性能。所以在创建索引时,把握的原则就相对简单,只要有足够的物理空间,就可以创建所需的索引。

创建索引可以遵循以下原则:

1.对于多表连接查询的关联字段,在相关字段上创建索引。

2.对于需要根据范围进行搜索的字段上创建索引。创建索引后已实现排序,其指定的范围是连续的。

3.对于需要排序的字段,在该字段上建立索引。因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。

4.对于在WHERE子句中的常用的字段上创建索引,可加快条件的判断速度。

四、数据分析阶段,编写高效率SQL语句

在此阶段,审计分析人员根据审计小组确定的特定审计事项,编写高效率的SQL语句。对于基本的SQL语法在此不做赘述,仅对一些关键技术点加以描述。

1.避免索引失效。要善于利用所创建的索引,就必须在编写SQL语句时注意细节,避免对特大表的全表扫描的情况发生。在特大表中有效使用索引将大大提高查询分析的效率。

以下情况可导致索引失效,应尽量避免:

(1)在索引列上使用计算或者使用函数如sum、“‖”、或者“+”等。

(2)在索引列上使用ISNULL和ISNOTNULL。

(3)当索引是建立在多个列上,只有在它的第一个列被WHERE子句引用时,优化器才会选择使用该索引。当仅引用索引的第二个列时,优化器使用了全表扫描而忽略了索引。

(4)改变索引列的类型,可能导致索引先效。

(5)IN、OR子句。

(6)ORDERBY、GROUPBY子句。

2.编写高效率的SQL语句。除了充分利用索引,编写高效率的SQL语句需要关注以下几个方面:

(1)表之间连接注意WHERE子句中条件的顺序(先做选择再做连接操作)。由于自下而上的顺序解析WHERE子句,表之间的连接应写在其他WHERE条件之前,并将能够过滤最大数量记录的条件写在WHERE子句的末尾。

(2)SELECT子句中避免使用‘*’。

(3)用WHERE子句替换HAVING子句。

(4)使用表的别名。

(5)SQL语句统一大写。

(6)避免子查询,查询嵌套层次越多,效率越低。因此应当尽量避免子查询。

3.SQL语句实例比较。

(1)是否创建索引查询时间比较。

在ORACEL10g环境下

大表GET_MONY_INF记录为183888852条记录

在创建索引之前对于大表的查询

SELECT COUNT(JSBBH)FROMGET_MONY_INF

查询时间:217.156秒

创建索引

CREATE INDEX JSBBH_IDX ON GET_MONY_INF (JSBBH)

再次执行查询

SELECT COUNT(JSBBH)FROM GET_MONY_INF

查询时间:51.985秒

可见查询效率成倍提高了。

(2)WHERE子句替换HAVING子句查询时间比较

采用HAVING子句

S E L E CT.JSBBH,COUNT(*)from IPBS PAY T

GROUP BY T.JSBBH

H A V I N G T.J S BBH=‘200902090112118100000075’

运行时间:163.828秒

用WHERE子句替换HAVING子句

S E L E C TT.JSBBH,COUNT(*)from IPBS PAYT

W H E R E T.J S BBH=′200902090112118100000075’

GROUP BY T.JSBBH

运行时间:0.016秒

以上两者的运行效率相差上万倍。

(3)表之间连接WHERE子句中条件的顺序不同.查询时间比较。应将能从大表中进行大量筛选的条件放在WHERE之后。

大表筛选条件T2.JSBBH=′200902090112198100000075’紧靠WHERE。

S E L E C T T 1.P I D,T 1.JSBBH FROM GET_MONY_INFT2,IPBS_PAY T1

W H E R E T 2.J S BBH=′200902090112198100000075’

AND T1.JSBBH=T2.JSBBH

运行时间:0.031秒

T2.JSBBH条件放在WHERE子句最后

S E L E C T T 1.P I D,T 1.JSBBH FROM GET MO-NY_INFT2,IPBS_PAY T1

WHERE T1.JSBBH=T2.JSBBH

A N D T 2.J S BBH=′200902090112198100000075’

运行时间:0.015秒

在海量数据的审计项目中,审计人员要充分利用现有的计算机技术来解决审计过程遇到的问题。本文按照审计项目的阶段过程,对于相关的大型数据库的数据文件的处理进行了一定的论述,并力求关注在计算机技术层面实际应用中的技术细节。古人云,“工欲善其事,必先利其器”。在日新月异的信息时代,审计人员只有充分利用计算机技术,才能在海量数据的审计分析中做到游刃有余。

标签:;  ;  ;  ;  ;  ;  ;  ;  ;  

充分利用计算机技术在海量数据审计中的优势_海量数据论文
下载Doc文档

猜你喜欢