基于软件开发的海量数据处理

作者:刘焱 刊名:化工管理 上传者:牟爱志

【摘要】随着石油软件系统应用的越来越多,网络信息化越来越发达,油田生产过程中产生的数据量也越来越大,形成了海量数据。在实际的工作环境下,面对庞大的海量数据,我们可能会遇到各种各样的情况,在软件处理上,也会产生很大的缓存。本文主要针对ORACLE数据库,在软件开发中的海量数据方面,阐述了几种对于海量数据的处理办法。

全文阅读

引言在实际的工作环境下,许多人会遇到海量数据这个复杂而艰巨的问题。尤其在石油系统中,每天都有数以万记的数据涌入数据库中,我们要对这些数据进行增删改查、分析、汇总。我们在对这些海量数据进行数据信息处理的时候,其响应时间也是异常的缓慢。在软件应用海量数据时,对重要数据的完整性、安全性是有着一定的重视。目前,大多数的应用软件开发都是基于ORACLE数据库运行的,在软件开发过程中不可避免的要遇到一些关于数据库中有关海量数据的完整性和批量处理所需数据缓慢、删除冗余数据的问题。本篇论文针对海量数据的批量处理、数据的完整性进行了一定的探讨研究。一、SQL语句的优化油田日常软件开发通常采用B/S结构,采用ORACLE作为后台数据库。作为一个四层应用系统,面对海量数据,通常情况下用户终端操作频繁,数据量大,且查询多为跨表查询,很多情况下查询过程非常复杂。为了在开发阶段能成功的进行SQL优化,必须使每个语句执行时间最短。如果确保每个SQL语句被开发成具有最小执行时间,用这些语句组合成的系统就将运行良好。因此,我们首先要考虑的就是如何优化SQL语句。1.调整SQL语句。通常一个SQL的SELECT语句指定的是所要求的结果,而具体如何执行则由ORACLE在生成执行计划时决定。因此,几个等价的SQL语句通常可以得到一个特定的结果集,而每条语句执行时都会有不同的成本和消耗时间。在进行SQL语句查询的时候,尽量采用函数来优化我们SQL语句。比如我们要将几十万行的数据表进行行列转换。利用函数字段我们可以这么写:selectrq,sum(decode(trim(zd),'1',sq,null))as"1",sum(decode(trim(zd),'2',sq,null))as"2",…sum(decode(trim(zd),'n',sq,null))as"n"fromagroupbyrq,orderbyrqdesc;如果利用常规做法,在含有5万条数据的数据表中,根据条件将两列按类转换成行数据,所耗费的时间是1.736秒,可利用函数字段我们只需要0.811秒。无论从SQL语句的数量上、还是速度上,利用函数的查询语句都更胜一层。2.使用内嵌视图代替表。在查询语句中的FROM子句使用内嵌视图来代替表会使查询的目的性更易理解。这可以使我们显式控制语句的执行次序,使被传送的行数在执行早期就被减少,在后期阶段就会仅有较少的行处理,降低资源使用时间和语句执行时间。3.正确合理的使用索引。在关系数据库系统中,通常对达标进行扫描时,应避免必要的全表扫描。如果在表上建立合适的索引,改变对数据的访问路径,我们就可以通过访问索引的方式获得记录的物理位置,从而达到访问表的目的,就避免因全表扫描而造成的I/O开销,提高数据库查询速度。但创建索引会增加系统开销,因此必须与实际查询需求紧密结合,才能达到查询优化的目的。二、ORACLE数据并行处理在海量数据处理中,系统资源充足的情况下,使用并行处理,可以很好的提高系统查询性能。并行处理可以通过下面两种方式来实现:1.对象的属性:在对象(表、索引等)上创建并行度。2.显示的执行:使用Hint方式。三、适当的使用触发器和存储过程触发器是许多关系数据库系统提供的一项技术。在ORA-CLE系统里,触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。触发器主要是通过事件进行触发而被执行的,依赖于特定的数据表。在触发器建立后,它作为一个数据库对象被存储,当触发事件出现时,触发器就会自动执行。触发器一般包括:1)DML触发器;2)替代触发器;3)系统触发器;PR

参考文献

引证文献

问答

我要提问