APP下载

基于众包的钻井物料数据仓库ETL系统研究

2018-09-29周洁

智能计算机与应用 2018年4期
关键词:数据仓库

周洁

摘 要:随着商业智能的发展,现代化石油钻井企业开始越来越重视数据的作用,如何将企业多年信息化建设的成果更有效地利用起来成为当前企业信息化建设的一个重要内容。数据仓库建设的过程中最重要的过程就是ETL过程。ETL过程经常需要耗费大量的人力、物力、财力。但是效率依然十分低下,为了解决这个问题,本文提出采用网络众包的方法将传统数据仓库ETL过程与众包的方式结合,构建基于众包的钻井物料数据仓库ETL系统,有效提高石油企业数据仓库建设的效率。

关键词:众包; ETL; 数据仓库

Abstract: With the development of business intelligence, modern oil drilling companies have begun to pay more and more attention to the role of data. How to make effective use of the results of many years of enterprise information construction has become an important part of current enterprise information construction. More and more data warehouses have been established. The most important design in the data warehouse construction is the ETL process. The ETL process often requires a lot of manpower, material and financial resources. However, the efficiency is still very low. In order to solve this problem, this paper proposes a method of using network crowdsourcing, which is combined with the traditional data warehouse ETL process, and builds a crowdsourced drilling material data warehouse ETL system to effectively improve the data warehouse of oil companies.

Key words: crowdsourcing; ETL; data warehouse

引言

在当今信息化建设高速发展的影响下,现代化石油企业大多已建立起一定规模的、成熟的数据库系统,并且积累了大量的历史数据。数据库作为数据资源用于管理业务中的事务处理,已成为成熟的信息基础设施。现在,伴随着石油企业对有效信息的依赖性越来越强,越来越多的石油企业开始建立数据仓库。但数据仓库的建设是一项需要耗费大量时间、人力、财力的过程。其中的ETL(Extract,Transformation,Loading)过程,是建设数据仓库最重要的部分,是数据仓库系统的核心技术之一。在企业数据仓库建设的过程中,有60%以上的精力花费在ETL的设计和实施上。传统ETL过程需要花费很大的代价,但是灵活性和可扩展性较差。本文采用网络众包的理论和方法,将传统数据仓库ETL過程与众包方式相结合,提出一种基于众包的钻井物料数据仓库ETL设计方法,设计构建系统的总体结构和众包模式,以有效提高传统数据仓库ETL过程的效率。

ETL(Extract,Transformation,Loading)是数据抽取、转换和装载的英文简称。ETL过程是数据仓库数据的入口,完成数据从数据源到数据仓库的转化过程,其重要性不言而喻。当前能提供ETL功能的商业化工具很多,主流分为两类:一是ETL厂商提供的工具,一般具有较完整的体系结构和功能,如Informatica,Datastage;另一类是数据库厂商提供的整体数据仓库解决方案和产品,如ODI。虽然这些ETL工具相对比较成熟,但是对于具有不同特性的目标数据仓库系统,不同的ETL工具效果差异明显。ETL工具的选择及编写特定SQL脚本都直接影响到ETL的效率。另外,ETL 3个阶段的规则设计也是最难和工作量最大的部分。因数据仓库应用系统每天都会进行的工作就是ETL过程。所以,ETL设计的效率高低关系到数据仓库的建设成效。

在商业环境竞争力和活力日益增加的情景下,单一企业所具有的实力再雄厚,也无法独自具备充足的技术和资源来满足可持续创新的需求。因此,在进行ETL设计时,要引入更广泛的人力资源,出于成本和质量的考虑,将数据仓库的ETL过程众包是一个具有可操作性而且效率很高的过程。

众包是Howe于2006年首次正式提出的,是指一个公司或机构把过去由员工或者承包商执行的工作任务,以自由自愿的形式,外包给非特定的大众网络或者虚拟社区的做法,是一种在线分布式的问题解决模式[1]。

基于众包的钻井物料数据仓库ETL系统DMETLC(Drilling Materials Dataware ETL Based on Crowdsourcing),在传统ETL过程中引入了更为广泛的人力资源。系统采用众包模式,将相关事务通过众包平台发布,向更广泛的大众群体获取解决方案。设计基于众包的钻井物料数据仓库ETL系统流程如图1所示。

系统通过众包平台将ETL过程的3个步骤依次众包。数据源主要包括各个不同的业务数据库以及可能的Excel、XML、TXT等。数据仓库的主题由石油企业根据企业自身实际需求由主要业务部门负责人经多次商定决定的,由专业人士对其技术可行性做出评价后发布在众包平台上。

数据抽取过程(Extract)要紧密联系目标企业数据仓库的主题,根据主题的需要对系统的功能性需求进一步的细化,进行恰当的维度设计、权限设置、以及粒度层次设计、事实及度量设计,将事实与维度关联起来,形成围绕某一主题的多维数据模型,进而确定所要抽取的数据。由于数据抽取过程的数据源可能来源于多个源系统,而每个源系统有不同的业务处理周期和方法,选择采取存量抽取的方式还是增量抽取的方式,周期如何设置,是采用人工编写SQL的方式还是直接选取某ETL工具,都是需要考虑的关键问题。同时要对数据采集接口进行合理的设计,以保证进入数据库的数据完整性。

数据转换过程(Transfer)是ETL过程的核心,主要包括数据整理、数据提出、数据合并、数据清理以及数据验证等过程。数据格式与名称的统一、定义空字段的处理、数据质量问题的控制等都是这一阶段重点解决的问题。

数据装载过程(Loading)是将数据转换的结果加载到数据仓库中并形成相应的数据加载报告。在将数据加载到数据仓库之前,需要考虑是否还有需要做特殊处理的属性。选择最终加载的数据仓库类型和加载到数据仓库的方式,存量加载和增量加载的实现方式是重点设计的问题。

众包工作者在完成了一个阶段的设计工作后,需在实践后将结果提交至众包平台中的众包质量专家评审组,待评审组判定其是否合格,合格则继续进行下一步众包,否则,进行该阶段的二次众包。直至最终达到评审组的要求为止。

2 众包管理平台总体结构

DMETLC系统中的众包管理平台是支撑基于众包的数据仓库ETL系统的关键。在该平台中,为改变以往人员参与和数据使用被动的情况,拟采用多Agent技术,将平台中的各个模块构造成Agent,以多Agent协作组织和工作方式实现数据仓库ETL過程的众包[2]。所谓智能体(Agent)是驻留于环境中的实体,处于一个环境中并作为这个环境的一部分。该众包管理平台包括ETL任务管理器、网络众包引擎、ETL任务执行器3部分。平台体系结构如图2所示。

ETL任务管理器支持构建数据仓库企业(发包方)对ETL不同阶段发布任务要求,描述任务关键事项,选择接包方,对接包方提交结果进行质量检查和结论评价。通过发包方任务描述Agent对众包的ETL任务的实际商业需求进行形式化的描述,并可以添加例证。通过任务发布Agent将当前众包的ETL任务发布到众包引擎的黑板系统中。接包方管理Agent,主要对有接包意向的接包方进行相关知识及经验考查,根据实际情况对接包方群体进行管理。质量控制Agent是专家系统根据拟定指标对众包工作者完成的工作进行质量评估与审核。结论评价Agent是根据质量控制Agent的结果做出评价,确定是否采纳。

网络众包引擎是DMETLC系统众包管理平台的核心。通过Agent黑板系统获取发包方对ETL任务、质量参数、时间限定与奖励等的形式化描述。由任务分解Agent将ETL的任务进行阶段性划分,由资源访问Agent实现众包工作者对发包方提供的数据源进行访问权限控制,接包方选择Agent支持多接包方对同一任务的共同参与,成果共享的方式主动参与众包任务。方案接收Agent负责对众包工作者的工作结果进行接收,方案综合Agent实现基于网络众包的工作者的工作方案进行综合集成并将结果通过黑板系统反馈给发包方。

ETL任务执行器用于支持众包工作者自主参与到企业数据仓库ETL网络众包过程中,通过用户接口Agent获取完成ETL工作任务的相关数据资源。接包方通过任务感知Agent发现适合自己的工作任务,由任务投标Agent将其相应知识能力、经验提交到黑板系统中并反馈给发包方。在整个接包方的任务执行过程中,众包用户是通过图形化界面与系统进行人机对话。

文中采用了基于众包的钻井物料数据仓库ETL系统进行数据仓库建设。现以一实际众包结果对该系统的合理性与高效性进行说明。

石油钻井企业要求的2个基本主题是钻井公司和钻具,现以钻具为例进行说明。

3.1 数据抽取阶段

3.1.1 数据抽取范围

根据石油企业提供的需求分析报告,以钻具物料清单为例设计出其物料需求的星型模型,如图3所示,并根据模型进行抽取。

3.1.2 数据抽取方法。

由业务系统的资源数据库到数据准备区,主要考虑因素是尽可能减少对资源库性能的影响。石油钻井公司提供的数据源主要是数据库文件,存放在Informix数据库中,还含有部分Excel表格。在将业务数据库抽取到数据准备区时,众包结果是以开发人员手工编码的方式,通过执行SQL语句来实现ETL。相比于ETL工具,手工编码方式的SQL执行效率较高,能够最大限度地降低ETL对业务系统数据库的影响。实际操作时,众包提供的结果是本部分的数据采集接口,使用oracle高级复制技术完成。根据业务系统中的数据格式,生成镜像库。业务系统与镜像库之间通过oracle的存储过程来完成。每次抽取时都要记录抽取数据的时间,用以标记是那个批次的数据。众包工作者提供了手工编码,结果验证顺利执行,且与其它ETL工具抽取相比抽取速度较快,对原业务系统影响较小。故DMETLC系统最终采纳了此种数据抽取方式。

3.1.3 数据抽取设计方式

由于存量抽取数据量很大,抽取转换时不能随[CM(22]意删除和更改数据,有可能存在很多非标准化的数据。因此,为了加快处理速度,可采用非依赖数据并行处理方法进行存量抽取。数据仓库系统运行后,只将业务系统的增量数据抽取到数据仓库,包含业务系统的新数据和更新数据。

3.2 数据转换阶段

数据转换阶段编写的转换程序,采用模块化设计方法,相应减少了编程工作量,仅需要配置参数表就可以实现。当转换数据时,保证满足数据仓库数据的一致性和完整性。数据转换过程是按照数据仓库所需要的数据源格式,在分段区域中执行并行转换处理,把转换的结果数据存储在需加载的数据存储区域中。同时会生成数据转换报告,待系统转换报告生成完毕后,系统状态改为完成数据转换工作。

3.3 数据加载阶段

在设计数据以加载数据仓库时,本项目最终选择的方案是采用oracle的存储过程实现从中间数据库(经过转换后的ODS层)到数据仓库的数据装载。具体原则是根据ODS数据表中的装载日期和增量标识DML_TYPE来处理增量问题,加载数据在数据仓库离线时,使用非依赖数据并行加载策略,把待装载数据区数据装入数据仓库,若标准代码表改变,则将标准代码的变化采用增量方式加载到数据仓库代码表中。将数据加载情况记录来并将其写入数据仓库数据库参数表。

4 结束语

基于众包的钻井物料数据仓库ETL系统采用了众包的方式,充分利用了人力资源和智慧,实现了数据仓库建设过程中对ETL过程的处理,解决了由于不同ETL工具对不同系统支持程度不一而引起的ETL过程效率不稳定的问题,使传统ETL过程从封闭,低效到更多元、更开放、更高效、进一步扩展了以往ETL方法的数据处理能力,为建立更高效的数据仓库系统提供了有力的支持。

参考文献

[1] 冯剑红, 李国良, 冯建华. 众包技术研究综述[J]. 计算机学报, 2015,38(9):1713-1726.

[2] 王凡, 方明. 基于众包的钻井不确定数据信息管理系统的研究[J]. 计算机应用与软件, 2017, 34(8):54-57.

猜你喜欢

数据仓库
中小学智慧校园建设中信息孤岛的破解之路
基于数据仓库的数据倾斜解决方案研究
七大云计算数据仓库
数据湖正在成为新的数据仓库
移动互联网APP数据仓库的应用
数据仓库系统设计与实现
电子商务中的数据挖掘及其应用
数据仓库技术在高校信息系统中的应用
数据复用在存储数据仓库中的运用
虚拟数据仓库在电力行业的应用