DataStage软件的优缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataStage软件的优缺点相关的知识,希望对你有一定的参考价值。

以下是我这几年做datastage的一些看法,如有说的不准确,欢迎大家指正。

datastage的优点主要有:
1.支持异构的数据库:使用内建的组件即可完成不同数据源/目标(数据库或文件等)之间的数据抽取及加载;
2.支持并行处理架构:开发好的作业不需任何修改,只要通过增加处理节点(逻辑节点——一机多节点,或者物理节点——计算机集群,或两者结合),即可实现近线性的ETL效率提升(在硬件性能支持的基础上);
3.图形化的开发界面:开发者不需要了解后台底层是如何与各个数据源/目标进行交互的,只需要专心于ETL过程的逻辑实现即可,软件开发使用模块化的功能组件,通过相互之间的组合来实现ETL需求,内建各种数据处理函数,可处理绝大多数复杂逻辑,开发者只要掌握DS图形化开发和基础的ETL知识即可,无需深厚的代码编程功底,降低了开发人员更替的成本;
4.图形化的监控、调度界面:实现作业调度、运行、日志查看、排错及维护。
5.便捷的迁移过程:所有ETL作业可导出进行备份,并可在新的DS服务器上导入,不需要重新开发即可直接使用,降低系统故障导致开发成果丢失的风险。
6.强大的自定义组件:可通过C等语言开发自定义组件,实现更丰富、更有针对性的功能组件。

缺点:
1.对硬件要求较高,尤其是8.x之后的版本,对CPU和内存、硬盘空间的要求更大(8.5版通常要求4CPU/6G内存为最低配置,如果单安装DS约需8~10G磁盘空间,安装全套产品则需要15~20GB)。
2.ds自身调度、监控客户端功能略薄弱,在庞大的作业数量和复杂的调度需求下,通常需要基于DS自身API来额外开发调度及监控程序便于运维。
3.另外,datastage还支持数据质量清洗(quality stage),不过它的这个功能在中国的语言环境下水土不服,不怎么好用。

其他:
1.datastage的并行引擎是此产品的一大亮点,现在datastage是IBM information server套件下的一个组成部分,新的版本在不断更新完善这套庞大的系统,将支持更多的数据源,提供更多的开发功能组件,并且在整合websphere、DB2后,支持快速生成作业、性能调优、更丰富的元数据管理、血缘分析等功能,基本上都是建立于datastage并行引擎基础上的。

2.虽然IBM收购了datastage,版本从7.X升到现在的9.X,但是核心的datastage并行引擎在历次版本更新中没有做本质的改变。

3.DS通常用于日常跑批,数据的实时传输不是它的长项,虽然可以借助一些辅助程序循环调用ETL作业实现准实时数据刷新,但如果需要实时数据功能的话,可通过CDC类软件实现(change data capture变化数据捕获)。
4.目前还没有完美的ETL工具,但合适的才是最好的,DS本身的功能能够支持绝大多数ETL场景,当然也有些特殊的客户需求是无法实现的,需要与其它产品配合,或者进行自定义组件的开发。
参考技术A 我们现在就用ds,优点很明显就是日志非常详细,
日常维护比较方便,很多运算脱离数据库,对数据库压力影响比较小
缺点就是占空间比较多
总得来说就是用空间换时间
参考技术B 并行处理机制,抽取转换的功能强大,图形界面友好易上手;
在windows系统下只能安装客户端,server得装在linux系统上
参考技术C DATASTAGE属于ETL工具,主要进行数据抽取,清洗和转换的DATASTAGE主要是进行大量的数据DB转换或者BACTH处理,

转载DataStage(ETL)技术总结

数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load)。
    IBM WebSphere DataStage(下面简称为DataStage)为整个 ETL 过程提供了一个图形化的开发环境,它是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集或数据仓库的集成工具。
    通常数据抽取工作分抽取、清洗、转换、装载几个步骤:
    抽取主要是针对各个业务系统及不同网点的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取的定义。
    清洗主要是针对系统的各个环节可能出现的数据二义性、重复、不完整、违反业务规则等问题,允许通过试抽取,将有问题的纪录先剔除出来,根据实际情况调整相应的清洗操作。
    转换主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过内建的库函数、自定义脚本或其他的扩展方式,实现了各种复杂的转换,并且支持调试环境,清楚的监控数据转换的状态。
    装载主要是将经过转换的数据装载到数据仓库里面,可以通过数据文件直接装载或直连数据库的方式来进行数据装载,可以充分体现高效性。在应用的时候可以随时调整数据抽取工作的运行方式,可以灵活的集成到其他管理系统中。

一.数据源连接能力:
数据整合工具的数据源连接能力是非常重要的,这将直接决定它能够应用的范围。DataStage 能够直接连接非常多的数据源,包括:
1、 文本文件
2、 XML 文件
3、 企业应用程序,比如 SAP、PeopleSoft、Siebel、Oracle Application
4、 几乎所有的数据库系统,比如 DB2、Oracle、SQL Server、Sybase ASE/IQ、Teradata、Informix等以及可通过ODBC连接的数据库
5、 Web Services
6、 SAS、WebSphere MQ

二.多国语言支持(NLS):
    DataStage能够支持几乎所有编码,以及多种扩展编码(IBM、NEC、富士通、日立等),可以添加编码的支持,DataStage内部为UTF8编码。

三.并行运行能力: 
ETL Job的控件大多数都支持并行运行,此外DataStage企业版还可以在多台装有DataStage Server的机器上并行执行,这也是传统的手工编码方式难以做到的。这样,DataStage就可以充分利用硬件资源。而且,当你的硬件资源升级的时候 也不用修改已经开发好的ETL Job,只需要修改一个描述硬件资源的文件即可。并行执行能力是DataStage所能处理数据的速度可以得到趋近于线性的扩展,轻松处理大量数据。

四.便捷的开发环境:
DataStage 的开发环境是基于 C/S 模式的,通过 DataStage Client 连接到DataStage Server 上进行开发。这里有一点需要注意,DataStage Client 只能安装在 Windows 平台上面(在Win2000/XP上运行过)。而 DataStage Server 则支持多种平台,比如 Windows、Solaris、Redhat Linux、AIX、HP-UNIX。(在WinXP/Solaris8上运行过)
DataStage Client 有四种客户端工具。分别是 DataStage Administrator、DataStage Designer、DataStage Manager、DataStage Director。下面介绍这几种客户端工具在 DataStage 架构中所处的位置以及它们如何协同工作来开发 ETL Job 的。
(1) DataStage Administrator
DataStage Administrator 的主要功能有以下几个:
1. 设置客户端和服务器连接的最大时间。
以 管理员的身份登陆 DataStage Administrator(默认安装下管理员为dsadm)。你可以设置客户端和服务器的最大连接时间,默认的最大连接时间是永不过期。最大连接时间的 意思就是如果客户端和服务器的连接时间超过了最大连接时间,那么客户端和服务器之间的连接将被强行断开。

2. 添加和删除项目
在 Projects标签中,可以新建或者删除项目,以及设置已有项目的属性。要用 DataStage 进行 ETL 的开发,首先就要用 DataStage Administrator 新建一个项目,然后在这个项目里面进行 ETL Job 的开发。
在Property里,能够设置该Project全局设置、用户权限以及License的管理

(2) DataStage Designer
DataStage Designer是ETL Job开发的核心环境。值得注意的是,登陆DataStage Designer 的时候,不仅要指定DataStage Server 的IP或Server名,而且要指定连接到这个DataStage Server上的哪个项目上面,上面已经提到DataStage的项目是由DataStage Administrator 来创建的。

DataStage Designer的主要功能可以概括为以下三个方面:
1. ETL Job的开发
DataStage Designer里面包含了DataStage为ETL开发已经构建好的组件, 主要分为两种,一种是用来连接数据源的组件,另一种是用来做数据转换的组件。此外DataStage还提供自定义函数(Basic),利用这些组件,开发 人员可以通过图形化的方式进行ETL Job的开发,此外ETL Job支持参数的传递。

2. ETL Job的编译
开发好ETL Job后,可以直接在DataStage Designer里面进行编译。如果编译不通过,编译器会帮助开发人员定位到出错的地方。

3. ETL Job的执行
编译成功后,ETL Job就可以执行了,在DataStage Designer里面可以运行ETL Job。ETL Job的运行情况可以在DataStage Director中看到,这方面的内容将在介绍DataStage Director的时候提到。

4. ETL Job的DEBUG
ETL Job可以在Designer中设置断点,跟踪监视Job执行时的中间变量。

5. ETL Job Report的生成
可以为ETL Job生成文档报告,该报告非常详细,只通过该报告,就可以完全了解该Job的结构与处理过程,非常便于分析。

DataStage提供很多实用的控件,常用的控件有:
1. DB操作控件
主要用于各种DB的连接,连接方式有多种,有面向厂家的Native方式,如Sybase的OpenClient方式,也有通用的ODBC等方式,此外也有些比较特别的DB操作控件,如Sybase的IQ Load、BCP控件,主要用于数据的快速导入和导出。

2. 文件操作控件
常用的有Sequential File、Hashed File, Sequential File是可指定编码形式和格式的CSV文件,Hashed File主要是为了加快检索效率,而替代DB控件的一种比较好的选择,这两种控件可用于输入或输出。

3.处理控件
主要的处理空间有Transformer、Aggregator, Transformer是负责数据转换的关键控件,在该控件中可以调用一些自定义函数,Aggregator是用于统计的控件,非常类似于SQL中的 GROUP BY,也提供Count、Max、Min、Sum的统计操作,还支持如First、Last、Average等操作。

DataStage的ETL Job分类:
1. Server Job
最为常用的Job类型,Job可以组合使用,Server Job是Job的最小单位。

2. Job Sequence
Job Sequence主要用于Job间的协作工作控制,如各Job的实行流程,出错处理,文件监控等。
3. Job Control
Job Control是一种特殊的Server Job,这种Server Job不是通过Designer来设计的,而是直接通过DataStage内嵌支持的Basic语言来开发,因此方式更为灵活,完全可以利用Job Control替代Job Sequence,至少在出错处理和Log输出等方面要灵活很多。(我参与开发的一个项目中完全用Job Control替代了Job Sequence,做出了更为详细的Log输出)

(3) DataStage Manager
DataStage Manager主要用来管理项目资源。一个项目可能包含多个ETL Job,可以用DataStage Manager把一个项目里面的ETL Job导出来。然后再用DataStage Manager导入到另外一个项目中去,利用这个功能一方面可以实现ETL Job的备份,另一方面就是可以在多个项目之间来重复使用开发好的ETL Job。在DataStage Manager里面可以把数据库中的表结构直接导入到项目中来,供这个项目中的所有ETL Job使用。DataStage Designer也提供了从数据库中直接导入表结构的功能。

(4) DataStage Director
DataStage Director 主要有以下两个功能:
1. 监测ETL Job的运行状态
ETL Job在DataStage Designer中编译好后,可以通过DataStage Director来运行它。前面在介绍DataStage Designer的时候提到在DataStage Designer中也可以运行ETL Job,但是如果要监测ETL Job的运行情况还是要登陆到DataStage Director中。在这里,你可以看到ETL Job运行的详细的日志文件,还可以查看一些统计数据,比如ETL Job每秒所处理的数据量。

2. 设置何时运行ETL Job
ETL Job开发完成后,我们可能希望ETL Job在每天的某个时间都运行一次。DataStage Director为这种需求提供了解决方案。在DataStage Director中可以设置在每天、每周或者每月的某个时间运行ETL Job。(Windows平台下需要打开的Task Scheduler服务,此外,在Unix等平台下,更常用的是用Cron结合dsjob命令来定时运行ETL Job)

五.命令行形式的运行:
ETL Job支持在DataStage Server侧用命令行形式的调用,可以用dsadmin命令来管理DataStage的Project,包括Project的新建,删除以及一些环境变 量的增删(DataStage 7.5.1下未能通过dsadmin来设置全局NLS和一些项目属性)。使用dsjob命令,能够同步或非同步的运行DataStage的Job,并传递 需要的Job参数,能够检查Job运行的状态,并能恢复Job的运行状态。

六. DataStage的不足:
以上都是说DataStage优点,但实际上DataStage也有不少缺点和不足,这些不足点,会直接影响到能否采用DataStage来达到我们的客户或设计要求。下面就谈一下,最近利用DataStage7.5.1来开发一个项目中遇到的问题。
1.缺点:
存 在一个Bug,在利用DB控件的参照功能时,如果指定的SQL文有错误的话,那可能会直接造成DataStage出错,然后客户端会和服务端直接断开,需 要关闭客户端,重新连接服务端,并且更为严重的是,DB连接将不会被释放(可能是服务器端的执行进程并没有停掉的缘故)
DataStage的表定义的使用,可以通过PlugIn的方式导入,但是导入后基本就只起一个模版的作用,当表结构发生改变而需要修改表定义时,使用该表定义的地方并不能同步,需要手动修改,容易出现遗漏。
2.不足:
一 些高级控件的功能不够全面,在实际应用时,会出现不能完全利用DataStage提供的控件来满足要求,如:Sybase的BCP, DataStage的Sybase BCP控件只支持导出,无法支持导入。当然这些不足,后来我都使用Java API来实现了Sybase BCP和Sybase IQ Load。
错误处理功能不够,DataStage对业务错误,如:检索0件等错误,很难捕获和处理。
某些应用要求无法满足,如需要对DB某表的某数据进行状态监视,这时,由于DataStage只有监视文件的功能,DB访问也只有DB控件才可以,因此该应用最后也是用JAVA来实现。






















































以上是关于DataStage软件的优缺点的主要内容,如果未能解决你的问题,请参考以下文章

datastage具体啥意思?能帮忙说明清楚吗?

如何调优,datastage的瓶颈都包含哪些

datastage lookup报错,求解

DataStage

datastage中怎样进行行列转换和列行转换,工具是datastage7.5,

datastage图形化工具向服务器发送请求失败