论文部分内容阅读
在计算机领域,Extract、Transform、Load(ETL),主要涉及到数据库特别是数据仓库的使用过程。首先从外部数据源的抽取数据,其次根据需求转换抽取到的数据,包括清洗数据,最后加载到最终目标数据库(更具体地说,操作数据存储,数据集市,或数据仓库)。ETL负责将分散的、异构数据源中的数据(如关系数据、平面数据文件等)抽取到临时中间层,再进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础,ETL一般涉及到数据抽取、数据清洗、数据转换、数据装载、调度任务等内容。ETL需要对来自不同源的业务数据进行提取和转换处理,最终统一地装载到目标库中。随着互联网的快速发展,大量的企业内部信息和企业外部信息需要整合,内部信息主要内部各个部门信息的整合,外部信息主要包括对外企业间的合作,例如销售采购等子系统的信息。有效的利用这些信息为企业作出正确的决策无疑将增强企业的竞争力,而企业的源数据存在许多特性问题。例如,源数据可以来自普通的数据库,也可以是非数据库,数据库的类型有多种,数据库可以在不同的平台上运行,源数据一般存在数据量大、数据格式不统一、数据平台不统一等特性问题,但是市场上ETL并不能完全处理这些问题,因此本文通过对ETL工具设计的关键知识点的研究,对源数据存在的问题做出了解决方案。ODBC规范是微软针对客户端访问不同的数据库类型接口不统一所提出的一套统一管理方法和访问接口,管理方法统一了数据源的配置,访问接口的统一使得程序的设计得以简化,ODBC在Linux下同样得到支持,大多数数据库都针对ODBC提供了自己的驱动,开发中只需要加载相应的驱动路径即可,本文使用ODBC规范统一不同的数据库的访问接口,同时解决了源数据平台不统一问题。流水线的并行工作方式有助于提高工作效率,大到工业生产,小到CPU的指令流等都使用了这样的工作方式,本文后台服务设计采用流水线的工作模式,解决了数据量大、运行效率低等问题。在ETL应用中,源数据库中的数据是实时更新的,因此ETL工具需要定时对源数据进行抽取,数据抽取分为全量抽取和增量抽取两种方法。全量抽取是针对源数据的所有数据项进行抽取操作,增量抽取只针对变化的数据进行处理。在不同的需求中选择不同的处理方式,增量抽取可以减少对ETL的转换和装载操作,同时增加了抽取时的工作量,一般有时间戳、触发式、日志表、CDC等增量抽取方法。本文采用时间戳的增量抽取方法,提高了数据转换和装载的效率。在整个系统的设计中采用分层的设计思想,将整个系统分为界面层、配置层、服务层,界面层根据用户配置生成配置文件,服务层解析配置文件来处理用户的需求。界面是基于MFC开发的,因此只能在Windows下运行,而服务程序可以在不同的操作系统上运行。在界面设计中采用MVC框架进行设计,提高系统开发和设计的效率。ETL工具的核心处理是数据的转换操作,一般有属性计算、属性合并、属性拆分、行列转换等,属性计算包括对整型、小数型进行加减乘除等运算;属性拆分和合并是对字符类型做了处理。本文中ETL主要针对企业的内部信息及外部信息的整合而设计的,主要支持对SQLServer、Oracle、DB2数据库的访问,同时支持window和linux双系统下运行,实现了增量抽取、属性计算、属性合并、属性拆分、行列转换等功能。分别从研究背景,ETL工具关键知识,系统总体设计,系统详细设计,系统实现五个方面对ETL工具进行论述。