目录
1. 目标读者
2. 介绍
2.1 数据整合的市场趋势
2.2 企业ETL
3. 产品架构
3.1 INFORMATICA POWERCENTER
3.2 THE WINDOWS SERVER SYSTEM
3.2.1 SQL Server Integration Services (SSIS)
4. 功能对比
4.1 介绍
4.1.1 范围
4.1.2 应用场景
4.2 程序包配置
数据登台
数据登台
4.3 值提取
4.4 排序
4.5 模糊匹配
4.6 查询
4.7 模块化
4.8 渐变维度
4.9 维度表装载
4.10 真实表装载
4.11 同包应用程序整合
4.12 WEB服务和面向服务的架构(SOA)
4.13 与消息中间件整合
4.14 安全性
4.15 协作开发
4.16 设计期调试
5. 结论
6. 术语
1.目标读者
这篇文章通过对比SQL Server Integration Services和当前市场主流ETL工具Informatica PowerCenter来介绍SQL Server Integration Services,Microsoft新的数据集成(data integration)、数据提取(data extract)、数据转换(data transformation)以及数据装载(data loading)平台。在SQL Server 2005中,SSIS(SQL Server Integration Service)是DTS(Data Transformation Service)的替代。
本文主要关注:
• 对ETL和数据整合技术进行评估的专家和个人;
• 对微软ETL和数据整合技术感兴趣的Informatica技术人员;
• 对市场主流ETL和数据集成工具进行调查的商业智能和数据管理专业人员;
• 关注Microsoft SQL Server 2005发布版微软数据转换服务(Data Transformation Service)技术人员。
本文的介绍部分在本质上是非技术性的,文章的主体假设读者熟悉ETL和数据整合技术。文中指定了对Informatica产品族的引用,这些引用也是Informatica PowerCenter与Microsoft’s SSIS产品对比的基础,因此,本文也假设读者具备一些Informatica产品方面的基础知识。
本文本身的并不定义一个解决方案,而是对使用Informatica PowerCenter和MS SQL 2005这两种工具在开发ETL方案过程中涉及到的一些结构和概念进行对比。本文提供了如何在SQL Integration Service设计环境中关联Informatica PowerCenter概念的指南。
2.介绍
2.1数据整合的市场趋势
市场对ETL工具在企业中应该具备功能的期望已经发生了改变,这样,厂商就致力于增加产品的功能和灵活性以及通过调整市场焦点来在市场上寻找一席之地。这促使企业之间的合并,包括数据集成厂商之间的横向合并,也包括数据供应链厂商之间的纵向合并。
合并一直在市场上的厂商之间快速进行 。 合并后的厂商使用获得的技术来增强传统ETL工具的企业应用程序集成(Enterprise Application Integration)能力。同时,其他市场的主导厂商则希望提供端到端地数据整合和商业智能平台(Business Intelligence platform)来增强其现存产品的ETL功能。Informatica最近同Composite Software公司的合作将使得Informatica PowerCenter平台在Zeus版本中(Zeus是Informatica产品族的下一个产品,它预期在2005年秋季发布)能提供企业信息集成(Enterprise Information Integration)功能,尽管这两个产品之间的集成最开始会有一定的限制。
在合并之余,数据库的厂商也没闲着。Oracle和Microsoft等公司在其数据库产品中增加、增强ETL功能,Journee和Siperian等公司则在EII中提供与ETL相类似的功能,SAS和SyncSort公司则将他们数据管理方面的专有技术应用于ETL方案中。
当企业面临着集成数量持续不断增加的各种系统的难度日益增加,购买来的软件应该能满足这种日益变化的需求。
企业的困难包括:
• 持续和实时信息的需求。传统的ETL从商业智能部门发展而来,需要向公共的数据存储或数据仓库添加数据。这在过去常常发生在工作时间之外,通常是夜间。而如今,企业没有这样的时间。现在的数据集成跨越时区和地域边界。联机的企业系统一周7天24小时都在处理,而需要实时作出的企业决策还在不断增加。
• 更多的准则。最初的ETL诸如Sarbanes-Oxley和Basel II对组织机构有极其严格的需求依赖。满足这些需求通常需要从遗留的和企业中的连线系统来集成数据。数据需要以高效、安全地方式收集、清除,并且在满足兼容性需求时有标准化来保证数据的完整性和有用性。更进一步,对所有修改的审计也要考虑到向后的兼容性。
• 更专业的用户。按需企业从操作层到策略层的任何一级均能授权职员做出决策。满足日益增长的对准确及时信息需求的能力对于辅助职员做出决策至关重要。
• 操作信息与策略信息相融合的需求。由于操作系统不能在技术上提供有效的真正的分析(聚集,趋势,排除等),所以企业需要一个可操作数据需求的分离策略。企业不再接收这种人工的分离方式。他们一直在寻找能够用于指导可操作决策的分析能力。例如,为了判断一个特殊的信用卡交易是否明显在规范的行为之外,因此能实时地将一个交易与一组相似的交易比较就显得有必要。这样导致了嵌入式分析学的产生,比如在飞行过程中分析飞机的上升行为。
技术挑战包括:
• 数据集成更丰富数据源和目标。随着数据源和目标的种类及数量的增加,所需方案潜在的复杂性也相应增加。例如,web services,RSS,非结构化和半结构化数据都是数据集成的数据源。类似地,诸如移动设备、个人报表和web发布都是与ETL相联系地非传统而有效地目标。
• 前所未有数量的数据。
o ETL可扩展性是一个移动的目标,今后可能随时间进一步强化。
o 点击流(Click-streams),电子商务(e-commerce),射频识别(RFID),呼叫中心(call-centres)都潜在地增加了公共数据池的容量。
• 花费容量。机构持续细查与数据整合有关的每一项工程的经济情况,影响所选择的每一项产品。
2.2企业ETL
ETL仅仅是数据仓库的一个组成部分的观点已经过时了。ETL仅仅是一种要求能增长的包含整个企业的数据集成的技术的一种应用,并能支持以下领域:
• 可扩展性Scalability
• 与包应用程序集成
• 数据库合并(Database consolidation)
• 连接性;支持于遗留系统整合,关系和非关系数据源
• 支持web services和service orientation
• 与消息中间件的集成
• .协作开发
Informatica’s PowerCenter通常被当成是ETL工具市场的领头产品,因为它能满足企业ETL 的需求。同样,PowerCenter和IBM的Websphere系列(最近重名为Ascential) 也是最常用的标准的ETL工具,因为一种标准工具通常要满足企业级的需求 。
3.产品架构
当讨论在公司中如何应用ETL和EAI诸如Informatica时,将所有的应用程序套件都考虑在内很重要,而不是注重单一一种工具,比如Informatica PowerCenter。所有Informatica提供的产品被认为包含了ETL这一领域的所有功能。
类似地,Microsoft过去并没有将所有的集成技术都包装在同一个应用程序套件之中。Microsoft的EAI架构,企业信息集成(Enterprise Information Integration),提取,转换,装载(ETL)和事件驱动架构(Event Driven Architecture)都包含在Windows Server System(WSS)当中。
这篇文章主要叙述Informatica和Microsoft在ETL领域当中的共同之处;因此Informatica PowerCenter和Microsoft SSIS是本文重点关注的两个产品。
3.1Informatica PowerCenter
在Informatica PowerCenter中,ETL逻辑是通过从源变换得到的序列图中组合一系列图形变换得到的,通过数据变换而到目标变换。
一旦定义了数据源,数据目标,数据转换,之间的映射也就创建了。映射是端到端的逻辑流,从一个或多个源变换到一个或多个目标。
一个工作流控制多个映射的执行,同时也定义了他们之间的依赖关系。
下列工具用来创建和部署工作流:
• PowerCenter设计器是一个集成开发环境,在这里可以创建数据源,数据目标,数据转换以及组装映射。
• PowerCenter工作流管理器用来建立围绕一些列任务创建工作流。最常用的任务是实例化一个映射的会话。
• PowerCenter工作流监视器为工作流提供产品支持功能。
• PowerCenter仓库管理器和仓库服务管理控制台提供PowerCenter仓库的管理功能。
• PowerCenter连接的产品族提供即时、准确和可理解的企业数据的宽带连接。PowerCenter连接免除了机构手工为程序编写数据提取代码,并保证任务至关重要的操作数据能在企业 之间平衡。
考虑到本文的目的所在,我们不打算区分各种的Informatica PowerCenter套件。我们用”Informatica”这一通用符号来表示所有的Informatica PowerCenter套件。
3.2The Windows Server System
WSS(Windows Server System)系统关注于集成、互操作性,也致力于提供最高级的依赖性、性能、生产力,也能和现存的企业应用程序更方便地交互。
WSS数据库管理和电子商务服务器为企业应用集成和企业过程自动化提供集成的、可交互的应用程序基础设施。
在本文关注范围的WSS技术有:
• Host Integration Server帮助用户集成在Microsoft.Net面向服务架构中他们的至关重要的任务主机应用,数据源,消息和安全系统,使得IBM主机和跨越分布环境当中的中间数据和应用程序能够重用。
• BizTalk Server通过可管理的企业处理,使得他们能在高度灵活和高度自动化的方式当中自动交互,来帮助顾客集成系统,职员和交易伙伴。
• SQL Server 集成服务(SSIS)是Microsoft在SQL Server2005中推出的新一代高性能数据集成技术。SSIS是一种新的Microsoft SQL Server商业智能应用程序,它是数据转换服务(Data Transformation Services,DTS)的后续。
3.2.1SQL Server Integration Services (SSIS)
SSIS包括四部分:SSIS服务;SSIS运行时引擎和运行时执行体;SSIS数据流引擎和数据流组件;以及SSIS客户端。
• SSIS服务跟踪运行、管理SSIS包。
• SSIS运行时引擎运行SSIS包,还提供日志、调试、配置、连接、事件处理、事务支持。SSIS运行时执行体是SSIS 提供的容器和任务。
• SSIS数据流引擎提供数据从源移动到目标的缓存。数据移动通过SSIS提供的数据源适配器,数据变换和目标适配器来配置。
• SSIS客户端。包括相关的工具,向导和SSIS同时作为客户应用程序提供的命令行工具,使用SSIS运行时和SSIS数据流引擎。
开发和管理功能在SSIS中是分开的;Business Intelligence Design Studio是创建SSIS包的开发环境,SQL Server Management Studio主要是数据库管理员来管理SQL Server,提供分析服务和报表服务,支持SSIS包的执行和安排。
当讨论Informatica产品套件的其他功能的时候本文的一些章节可能会涉及其他的一些WSS技术。然而,本文的主要是阐述Informatica PowerCenter所提供的功能,在SSIS中可以实施的Informatica 企业ETL工具,以及Microsoft的企业ETL工具。
4.功能对比
4.1介绍
4.1.1范围
前面的章节强调了Informatica是ETL市场主导者之一并介绍了Microsoft最新的在这个领域的技术,即SSIS。这一节,我们将区别企业级ETL工具期望具备的一系列关键功能,剩下的部分则介绍每项功能在PowerCenter和SSIS产品中是怎样实现地。
这些功能可以分为:那些构成ETL解决方案的基础的功能;那些进一步增强企业级ETL和EAI支持的功能。
本文包括的功能对比有:
• ETL 基础
o 程序包配置
o 从文件传输数据
o 从原始数据提取信息
o 排序
o 数据清洁技术
o 查询
o 渐变维度的支持
o 代理键的生成
o 聚合性
o 安全性
o 设计期调试特性
• 企业级ETL/EAI功能
o 支持模块化开发
o 与常用的包应用程序集成
o 支持Web服务
o 支持消息队列中间件
o 协作开发
这些功能领域是ETL工具最常用的性质,这也为对比这两款产品提供了普遍而深入的基础。
4.1.2应用场景
为了在研究调查中为两款产品提供一个对比环境,本文剩下的部分则介绍一个常见的应用场景。这个例子着眼于分析由W3C扩展日志文件提供的点击流信息(click-stream information)。对于ETL的某些功能,web日志并不适合做为例子来解释。这种情况下,我们将使用一些假设的场景,这样做会更合适。
Microsoft IIS(Internet Information Server)使用日志文件来跟踪用户访问IIS站点时所发生的事件的信息。这些信息包括:站点的访问量,已接收的和发送的字节数,引用的网页。Web管理员可以分析使用这些数据,这些信息对web管理员来说是一笔不可估价的财富。 IIS记录站点的活动有几种不同的形式:
• W3C扩展日志文件格式(在本文使用)
• IS日志文件格式
• NCSA公共日志文件格式
对NCSA和IIS日志文件格式,每个请求的数据格式都是固定的。然而,W3C扩展日志文件格式允许对请求数据格式的属性进行设置。
W3C扩展日志是用户定制的ASCII码文件,有许多不同属性,属性之间用空格分离。日志的时间记录则使用UTC标准。
下面的摘录了日志文件中的几行,包括一些属性:时间,客户IP地址,方法,URI根,协议状态和版本。
#Software: Internet Information Services 6.0 #Version: 1.0 #Date: 2001-05-02 17:42:15 #Fields: time c-ip cs-method cs-uri-stem sc-status cs-version 17:42:15 172.16.255.255 GET /default.htm 200 HTTP/1.0
www.conchango.com网站的W3C web日志是本文用做解释工作流和变换的数据源。
本文的主要目的并不阐述将web日志导入和转换成更适合分析的结构的端到端的处理过程,而是提供一个一致性,读者熟悉地包含一些可能使用到功能的用例。
4.2程序包配置
在大多数项目开发中,推荐分离的开发环境,分离的用户验收测试(User Acceptance Testing,UAT)和分离的产品发布。同样,在一项企业数据集成项目当中,解决方案在一个环境中开发,但在另外一个环境中测试和部署时不需手工更改已经开发好的工作流。
为了方便、简化方案在不同环境之间的移植,方案必须支持基于配置文件的动态更新。例如,当工作流从用户验收测试环境移植到生产环境,方案中的数据库连接字符串应能在运行期动态更新以适应相应的数据库,而不是仅仅用于测试。
Informatica和SSIS都支持这项功能,但实现方法稍有不同。
在Informatica中,每个会话有一个或多个数据源以及一个或多个目标连接。连接有不同的分类,主要的一类是关系型连接,主要是为Oracle,Informix,DB2,SQL Server,Teradata & ODBC提供连接。
每一个会话都可以基于保存在配置文件中的配置参数来动态配置。Informatica的参数由如下形式的连接变量指定:
$DBConnection
(e.g. $DBConnectionMySQLServer)
每执行一个会话,”MySQLServer”参数定义之处可以附上一个配置文件。这有效地包含了连接需要的名字,并且允许Informatica的sessions的源或目的连接在运行期更新。配置文件其实是Informatica开发者在开发解决方案时手工建立的纯文本文件。
在SSIS中,也可以配置类似的功能。
使用SSIS配置向导生成的配置信息保存在XML文件中(图1)。通过配置,应用程序包容器的行为在运行期可以控制。例如,一个变量可以记录一个工作流当中一个For循环容器的执行次数。通过改变变量的值,工作流可以执行不同的次数。
如果一个运行在多台服务器上的程序包可以包含不同的配置方案、处理器的数量以及磁盘容量,那么这个程序包可以配置成在不同的服务器上有不同的行为。例如,为每个部署程序包的配置中的一个变量设置一个磁盘空间的阈值,如果低于这个值那么应用程序包将不能运行。
图1展示了如何通过SSIS配置向导创建配置文件来支持一个服务器名称和数据库。它描述了一个OLE DB连接管理器如何配置以指向合适的数据源。
在Informatica里,有一个用于连接池用于从工作流中选择源和目的连接。这个连接池包括每种环境的连接(比如,开发,测试和产品发布)。参数文件允许连接在运行期动态地选择环境。
在SSIS中,则定义了用于程序包中所有任务的单一连接。相应的配置文件允许运行期动态修改连接源和目的。
因此,SSIS的配置是程序包一级的,而Informatica的配置则属于会话一级的。
图 1 - SSIS 配置向导
数据登台
EAI和ETL中的基础单元都是从源到目标之间的数据流。这一节将介绍在数据装载过程中Informatica映射如何同SSIS数据流相联系。这一节用到的例子是将多个IIS web日志文件存储到一个单独的关系表中。
图 2 - Conchango Web 日志
IIS web日志文件默认保存在:\winnt\system32\logFiles\W3SVC1目录下。这些文件的命名规则是ex*.log,如图2,包含客户向web服务器请求的信息。
一个为Informatica和SSIS建立的处理过程说明了:
• 文件装载的区别:
在Informatica中,工作流管理器可以为每个文件指定一个位置。每个随后访问某一文件的任务则要配置该文件的名称及具体位置。
在SSIS中,连接管理器用于创建定义文件物理位置的连接。多个文件的位置需要连接管理器创建多个连接。
注意,连接管理器定义的所有信息都可以包含在配置文件中,因此在运行期可以动态更新这些信息。
• 装载同一格式的多个文件:
通过使用包含所需文件清单的元数据文件(见图2的filelist.txt)Informatica可以装载多个文件。一个Informatica映射将应用于所有的这些文件之上,看起来就象作用于一个文件上一样(在内容中使用UNION函数)。
元数据文件清单是开发者在开发期手工创建的。这需要事先知道所需要的文件,因为Informatica并不能在运行期动态创建包含清单的元数据文件。当遇到文件数量未知时,Informatica就必须将处理交付给外部的处理过程来生成文件列表。
SSIS则使用允许使用”*”通配符来指定多个文件的”Multiple Flat Files Connection Manager”。图3(右边)解释了这一过程。
• 文件格式定义:
.在Informatica中,开发者需要区分装载文件的类型(文件类型的长度固定),系统将对文件自动分析来提取文件中列的数量。然后开发者可以在源文件中定义每一列的名称和类型。
这一过程在SSIS中几乎一样。图4阐述了定义定界符和合成数据集。列名称在Multiple Flat Files Connection Manager Editor的”Advanced”tab处定义。
图 4 - Multiple Flat Files Connection Manager Format
4.3 值提取
数据转换引擎的基本宗旨之一就是允许从转换流水线的数据流中提取需要的信息,以及能对转换流水线中的数据补充附加信息。
在提取和变换web日志的用例当中,平衡这一个功能的一个例子是将完整的URL转变为一个web站点地址和被请求的网页。另一个例子就是从web日志记录的字符串中提取日期/时间戳。
Informatica和SSIS都支持”derived columns”,这一个功能允许作为数据转换的一部分从现存的数据中来提取新数据。
在Informatica中,表达式转换组件(Expression transformation component)就有这一功能。下面的例子阐述了Informatica表达式如何从web日志中提取时间戳:
TO_DATE(SUBSTR(WebLogRecord, 1, 19), 'YYYY-MM-DD HH24:MI:SS')
另一个例子介绍如何从web日志字符串中提取服务器IP地址:
SUBSTR(WebLogRecord, INSTR(WebLogRecord, ' ', 1, 2) + 1, INSTR(WebLogRecord, ' ', 1, 3) - INSTR(WebLogRecord, ' ', 1, 2) )
在SSIS中,通过使用Derived Column transformation提供同样的功能。Derived Column transformation中的提取时间戳的语法如下:
(DT_DBTIMESTAMP) SUBSTRING(WebLogRecord,1,19)
这是提取服务器IP地址的SSIS语法:
(DT_STR,15,1252)SUBSTRING(WebLogRecord,FINDSTRING(WebLogRecord," ",2) + 1,FINDSTRING(WebLogRecord," ",3) - FINDSTRING(WebLogRecord," ",2))
图5展示了SSIS Derived Column Transformation Editor和一些提供给开发者的功能。图中还展示了转换过程中的多派生表(包括上面的例子)的定义。
图 5 - Derived Column Transformation Editor
完成两种操作所使用的逻辑是一样的,语法也极其类似。两个产品之间的最大的不同是派生新数据使用的表达式语言和符号的风格。
两款应用程序都提供了许多数据转换功能,就如两个表格所列举,这些功能的分类也极为类似。
通过在工作流和程序包中访问和定义变量,两款产品数据转换引擎的功能都得到了极大地增强。访问变量的功能允许开发人员将数据合并到表达式中,这些数据本身并不能使用表达式语言。变量允许表达式/派生列组件访问他们范围之外的数据。
4.4 排序
因为web日志可以流入多个输入文件,因此将数据排序成一个有序数据集就显得很有用。当数据的顺序看起来可能和关系数据库表格实体不相关,对顺着流水线的数据转换操作来说(比如聚合)流水线中的数据顺序显得很重要(接下来的小节会介绍这些内容)。
Informatica中的排序变换和SSIS中的排序变换操作非常类似。
两者都允许数据在流水线中排序和:
• 在SSIS中,通过设置EliminatesDuplicates属性为TRUE,多余的数据会被删除
• 在Informatica中,通过选择Distict属性(即设置成TRUE)可以达到同样的效果。
Informatica和SSIS都允许选择输出列,这些列不一定全是输入列。两者都有升序和降序操作功能。
两种工具都允许排序对大小写敏感或是对大小写不敏感,两种工具都允许存在不需要排序的列。在SSIS中叫做”passthrough”列,在Informatica当中叫做”non sort key”端口。
4.5 模糊匹配
同所有的数据集成技术一样,ETL也暴露出数据质量的问题。SSIS允许数据流中直接检测和修复数据质量数据转换的设计。有一种这样的技术叫做模糊查询转换(Fuzzy Lookup transform)和模糊分组(Fuzzy Grouping)。模糊查询转换能在参考表 中匹配与干净记录一起进入的”脏”数据(拼写错误,截断,遗失或插入了符号,空字段,非法缩写等等),模糊分组可以在输入行和融合的重复的行之间进行相似性检测。
更有意思的web日志分析可以针对着引用者来做。例如,在人们访问www.conchango.com站点之前访问了什么站点。引用者自身,确定连接到www.conchango.com源的数量是可能的,因此允许我们由此确定Conchango站点最成功的引用者。
模糊分组的基础是用一个数学算法来确定两片文本数据之间,输入之间和引用之间的相似性。这个算法根据与参考数据的类似程度为每片输入数据赋一个从0-1之间的相似分值。分值为1表示完全的匹配。
图6是SSIS中设置阈值的地方。
Informatica没有包含类似功能的对话框。
在Informatica中如果要实现这种功能需要用映射表来保存输入流中遇到的引用值和相应的映射值。
这就要人的干预来保证映射表在附加的数据上执行Informatica查询转换以提取需要的值之前是最新的。然而,这种方法没有重建隐藏在SSIS模糊逻辑之下的复杂算法,它仅能提取完全匹配的信息(和SSIS查询转换等同)。数据转换模糊的方面可能需要用户自己实现代码来执行复杂而耗时的处理过程,或者购买诸如FirstLogic Information Quality Suite(Informatica把它做为一部分附加在PowerCenter 平台上)之类的技术完成相应的功能。
注意到在使用模糊分组时转换处理过程中仍然需要手工参与,即使是最精练耐用的算法也不能替代人工的核对、反馈输入到引用表中;然而,SSIS模糊分组可以饶开某些Informatica必须执行的功能的任务。
在我们的web日志用例当中,派生列转换用于将域名从整个web日志实体中分离出来(参见4.3节值提取)。表1是收集到数据的一个子集。
针对我们的需求,引用URL的最高层的域名或者国家后缀不是必须的,我们仅仅对引用域名自身感兴趣(比如,URL的”Google”或”Conchango”部分)。
前一节中描述的排序转换允许在会话中排序进来的数据。SSIS模糊分组转换捕获进来的引用者的详细信息,并在排序会话中分组这些信息,这样来保证从每个会话的第一个记录得到的引用的唯一性。一旦使用这种方式聚合数据,SSIS模糊分组可以用来分组相似的引用。例如,将Google.com和Google.co.uk作为同一引用来统计。
注意到确定或控制应该选择什么样的参考值是不可能的,因此这一过程中就有可能需要人为的干涉。
在这个用例当中(参见图7),在模糊分组组件之前有235个唯一的引用,之后就被缩简到更适合管理的160个。
大多数ETL工具为解决数据质量问题提供了标准的技术。模糊分组可以用于改进数据质量,尤其是在分组和收拢相似数据的时候。
查询
作为一个数据集成概念,查询是从一个含有被处理数据值的关键字的参考表中获取数据的功能。
Informatica和SSIS都支持查询功能,并且都允许处理过程使用缓存查询数据来优化速度。缓存的大小可以设置,同样也可以使用SQL语句创建缓存(如图8)。
下面是在数据仓库环境中这一功能尤其有用的一些例子:
• 支持代理键(surrogate key)——当从操作源装载fact rows的时候,替代键必须从数据仓库中的新行、维度数据关联的business key确定。
• 支持建立维度表格——通过从那些不在合适的数据仓库维度表格中的数据中检索business key。
一般地,SSIS数据流组件允许开发人员从所有的行执行特殊的操作定向到目标(也就是错误输出)。如图9所示,查询转换没有不同,在这种情况下正显示了这种功能的威力。
任何在查询表/缓存中没有找到查询值的输入行可以有选择地重定向到错误输入设备。因此,错误输入包含了所有的记录。
Informatica查询转换包含叫做“动态查询缓存”的true/false属性,也有类似的功能。这个属性允许查询转换中使用的表同样也是查询转换的输出。在这种情况下,在查询表和缓存中同时增加新值就显得很有必要。
当使用动态查询缓存时,一个新的端口(NewLookupRow)增加到输入中,当输入行在不在缓存当中时,输出将包含一个大小1的值,反之则输入一个0。
4.6 模块化
这一节讲述组成一个端到端ETL和数据集成方案的各个部件是如何构建和复用的。
SSIS和Informatica都使用了一种模块化的技术去建造ETL和数据集成方案,尽管他们的实现有细微的差别。SSIS通过使用容器层级技术把模块性嵌入到它的程序包中。而Informatica倾向于构建可重用的映射库(相当于SSIS的数据流)。
Informatica通过允许构建一系列可在不同的小单元中使用的部件(包括源,目标,转换,mapplets和映射),实现了一种自底向上的解决方案的执行方法。这里的工作单元指一组映射实例的序列,它也可以被认为是一个任务中的一个相对独立的组成部分。这些工作单元可以一起安置在任务流中。
SSIS包(类似于Informatica中的工作单元)的构建方法更多的是自顶向下的。在一般的筹划解决方案的方法中,通常是先定义组成SSIS包的任务序列,然后再定义各个任务的实现细节。这些SSIS包可以当作主要的包的一部分被SSIS的Execute Package Task直接使用,而组件的复用性则在构建包含这种SSIS包的库时得以体现。
与SSIS 相比,Informatica提供的复用是低层级的。的确,如果一个SSIS包仅仅含有一个数据流,那么它将如同一个Informatica映射一样被调用许多次。正确评估一个由多个处理轻量工作的包组成的SSIS解决方案是可能的。
为了避免因管理的日益增多的包而引起的负荷,SSIS提供了使解决方案模块化的另一种方法,称为序列容器。这种序列容器是一种将必须在一个序列中执行的的组件归组的方法,从这个方面看,它类似于一个Informatica的工作单元。
图10显示了3个数据登台例程共同构成的一个数据集系统。整个系统被装在一个序列容器中,并以此成为任务的一个单独的部分。每个文件的数据装载包括两个步骤:首先去掉目标文件的表,然后从源文件重新装载新表。这两个步骤通过序列容器被归为一组,因此提高了容器的层次性。
使用序列容器的好处有:
• 内容被看作是任务的一个独立单元,所以仅需要在序列容器和随后的步骤之间定义执行优先级。
• 因为序列容器被当作任务的一个独立单元,所以它在一个事物中可以当作检测点用。
• 在设计阶段序列容器可以被分解为如图11所示的样子,因此在design surface上提供更多的空间。
4.7 渐变维度
渐变维度(SCD)的概念,是Ralph Kimball在他的数据仓库 的工作中提出的。
它描述了捕获并记录数据库的实体的改动的问题,这些实体并没有在“记录系统”中记录这些数据。一个典型的例子是在一个仓库中把一种产品移动到归为另一类产品中。这引起这个产品的类别属性的改变却没有改变他的标识符(SKU)。Kimball阐述了处理这种问题的三种方法:
• 覆写(第1类)- 不保存历史数据。这一类改动的典型处理方法是用最新的属性值更新适当的记录。
• 创建一项新的记录(第2类)-历史数据很重要并必须被保存。这类改动的典型处理方法是为实体创建一个新的记录,这个记录有一个属性域用来指示这个实体当前的状态。
• 保存特定的历史数据(第3类)-历史数据很重要并必须被保存。对每一个记录,有一个可被重写的“当前”属性,还有那些为预测的改动而设的属性,像“2004 value”和“2003 value”。这些域为此目的而设置并因此将被初始化为空。这项技术不适合捕获不可预知的改动的完整的历史记录。
Informatica和SSIS都具有这种跟踪以上三种改动的能力。
Informatica提供一个渐变维度向导来帮助开发者构建数据源,转换,端口,目的等支持渐变所必须的东西。表2列出了该向导提供的支持:
表 2 - Informatica Handling of Slowly Changing Dimensions
SSIS也有一个与Informatica类似的渐变维度向导。除了处理属性的改动之外,该向导还能够监测不想改变的属性域的改动并可选择进行错误记录。
表3列出了SSIS的渐变维度提供的支持:
在本文中被广泛应用的处理Web服务日志文件的应用场景并不适合演示渐变维度;但是我们将提供一个将渐变维度应用于产品表单的纵览以展示它的功能。
为了演示,我们如下定义属性域:
Price – 它的改动将被视为第2种改动
ProductDescription – 他的改动将被视为第1种改动
ProductStartDate – 一个固定的属性,不因该发生改动
有时候在实际的数据中会有会有一些必要的Business key并没有记录在属性表中,因此应当创建一些派生的属性。一个典型的例子是一个顾客从一个零售商那里买货,随后就有了一格分配给他的会员卡号码。在这个场景中,我们就想把这次交易与顾客关联起来,尽管他在交易的时候并没有卡号。
一个派生的属性成员是一个有效的占位符,通过它我们得以用与Business key相关的适当的数据去更新数据。SCD向导可以选择支持派生属性成员,方法是监测是否有派生属性存在并相应的更新它。
图14 展示了渐变维度向导产生的数据流。数据流中的每一个步骤如下表所示:
4.8 维度表装载
代理键是一种用于替代自然键附加的键,是Kimball的数据仓库理论的基本原则。在Kimball看来,维度表和真实表的结合应该是基于代理键而不是自然键 。
Informatica和SSIS都提供生成代理键的方法:
• Informatica包含一个叫做序列转换(Sequence transformation)的内置组件,它有产生代理键的功能。它为管道中的每一行内容产生一个增量的数值,这个数值就可以作为代理键被插入到目标表中。
• SSIS虽然没有与序列转换组件相应的组件,但它可以通过脚本转换(Script transform)组件产生代理键。脚本转换组件接收输入行,通过应用.Net框架的功能来处理/转换这些输入行并给出想要得出。
4.9 真实表装载
在高层,产生fact tables通常有两步操作
1. 按要求的粒度聚合fact data
2. 获取代理键
Informatica和SSIS都支持这两步操作:
• Informatica包含一项叫做“Aggregator”的转换工具,它执行把指定的列的输入值分组的函数。这种聚合函数包括类似于SQL的聚合功能——像大家熟悉的Sum,Count,Minimum,Maximum和Average;还有一些比较陌生的如First,Last,Median,Percentile,Standard Deviation和Variance。
• SSIS包含一个非常类似的“Aggregate”工具提供本质上一样的功能。虽然SSIS提供的聚合函数不像Informatica那样多,但也提供了最常用的函数:Sum,Count,CountDistinct,Average,Minimum和Maximum。
4.6节解释了怎样用Informatica和SSIS的查找转换工具来确定哪一个输入行没有出现在查找表中。更普遍的应用是从查找表中取出输入行指定的键值。这项功能典型的用于从待插入fact tables 的dimension tables中获取代理键——Informatica和SSIS的查找转换展示了这种功能。
4.10 同包应用程序整合
包应用程序在企业资源管理,客户关系管理和供应链领域被合作企业广泛应用。在企业逻辑层上对SAP R/3, SAP BW, PeopleSoft, Seibel and SAP这样的应用程序的支持是企业应用程序集成(EAI)的关键。
Informatica的主要ETL产品和PowerCenter就用到了PowerCenter Connect组件,这些组件提供了一种访问存储在其他应用程序中的数据的手段。
PowerCenter Connect提供一些预置的能够减少手工代码量的软件组件,以期能够降低开发时间和成本。典型的,这些组件是application-aware的代码,因此能轻松的从这些应用程序提取信息。
在Microsoft的Windows服务器系统中,在企业逻辑层的这种整合是Microsoft WSS技术栈中的BizTalk的工作。BizTalk适配器提供了增加大范围的应用和技术的互操作性的关键技术。现在BizTalk中含有非常多的微软及其合作伙伴开发的适配器,用于减少企业程序整合的工作量 。
SQL Server 2005将会配备一个可以通过SSIS访问的SAP provider。照此发展,它还将被集成到Indigo中(Microsoft建造SOA 的统一编程模型)。在SQL Server 2000中,一些重视数据质量的合作商已经与DTS2000整合(如Trillium,First Logic)并且还将与SSIS整合,无论是应用层还是元数据层。另外,一些像iWay,ERP-Link和MIS AG的厂商已经提供了与供DTS使用的SAP连接器,并且他们预期为SSIS提供类似的SAP连接器。
4.11 Web服务和面向服务的架构(SOA)
这些可用Informatica的PowerCenter Connect来整合的相互独立的系统可以提供Web服务。通过对Web服务的标准驱动的体系结构的理解,PowerCenter Connect从Informatica映射管道提供对Web服务的无缝整合。
SSIS提供这样一个Web服务任务:当给定一个web服务的HTTP地址,SSIS能从web服务中解析SOAP并把它保存在文件中或SSIS变量中。其它一些SSIS工具就可以处理这些数据了。典型的,XML源适配器把SOAP包解析成供数据流管道使用的数据流。一个SSIS数据流可被ADO.NET的数据读取器获取,这种数据读取器可以被许多ADO.NET的程序使用并当作一个Web服务。另外,从脚本任务和脚本组件可以获得完整的.Net框架的Web服务库。
Web服务任务使用HTTP连接管理器来连接web服务。HTTP连接管理器可以指向一个web站点或是一个web服务描述文件(WSDL)。
XML源适配器,WMI任务和Web服务任务将少了与在SOA框架内的应用程序整合的工作量。Window 服务器系统的其它应用程序可以增强对SOA的支持(SOA中的消息更加细致,通常在纯ETL环境中使用)。
4.12 与消息中间件整合
Informatica 的PowerCenter Connect包含有专门为整合IBM MQSeries和TIBCO Rendezvous的组件。这些组件是双向的,这意味着Informatica可以既可以往这两种消息队列中加入消息,也可以从中弹出消息。
SSIS中包含一个微软消息队列(MSMQ)连接管理器,他能够连接MSMQ消息队列。还有一个双向的消息队列任务,它使得SSIS包即可以在消息队列中加入消息,也可以从中弹出消息。这些消息可以用文本,文件或SSIS变量等多种形式。
SQL Server Service Broker可以为数据库应用提供异步消息功能,它内置在SQL Server 2005中(因此也在SSIS中)。SQL Server Service Broker可被任何能产生T-SQL代码的应用程序(包括SSIS)访问。
4.13 安全性
Informatica的知识库结构在Informatica的安装中提供许多层级的安全性。可以在以下部分设置访问许可:
• 在拥有该知识库的RDBMS中设置。这一层的安全性独立于Informatica之外。
• 在知识库服务器安装中设置可以确保只有特定的用户可以在Informatica中访问知识库。访问许可还可以用开影响用户配置知识库服务器的能力。
• 在用户组设置。Informatica提供文件夹,逻辑上独立的节点(子文件夹),Sessions,分支,源,目标,转换,Mapplets和映射。
• 文件夹的安全性和配置选项可以被赋给一个用户组,然后用户加入这个组就可以继承与这个用户组相关的文件夹的安全许可。
• 在Informatica服务器上有负责执行映射的组件,它是Informatica的执行期组件。用户可与被授权配置Informatica服务器。
SSIS提供一些内置的安全特性:
• 加密技术——SSIS包(或包的一部分)可以用密码加密以取保只有特定的设计者可以访问这些包。
• 敏感数据保护——组件所有人可与为任务或组件的每个部分设置Sensitive=True的属性。每一个设置了这种属性的部分将会按照如下所示的包保护设置而特殊对待。
• 包保护选项——包保护部分的设置决定了加密机制和敏感数据保护机制如何工作,以及对这些设置应用什么样的安全等级。注意,包也可以选择使用授权证书以提供更好的加密。
• SSIS 职责——新的SQL Server职责决定一个人如何访问和执行SQL Server中的SSIS包。这种职责从对包的只读许可到对个人所属包的读写再到对所有包的读写许可。
• 代理集成——SQL Server Agent典型的被用于根据进度表执行SSIS包。用户的SQL Server 职责必须是SQLAgentUserRole,才能够执行代理任务,对SSIS来讲这意义重大。
4.14 协作开发
Informatica通过提供小粒度版本控制和自动控制以及灵活的开发工具来帮助进行跨组跨站点跨工程的合作开发。合作工程的像check-in/check-out这类问题通过一个三层架构来解决。
微软的SSIS通过新型开发工具Business Intelligence Design Studio来支持团队ETL,它自动的利用了Visual Studio在源代码管理,版本控制,多用户工程管理方面的协作能力。
4.15 设计期调试
数据量的问题和ETL本身的性质决定了ETL的调试过程是十分费力的。而使用企业级的ETL工具有望使调试过程变得简单。
Informatica提供在PowerCenter调试器中调试映射的能力。用户可以在一个事务中设置断点来挂起映射的执行并检查结合点处的数据。
SSIS通过使用Visual Studio作为开发环境来获得调试能力。与Informatica类似,开发者可以通过数据监视器在数据流的任何一点上检查数据。数据监视器可以自动产生一个断点,开发人员也可以自己设置断点,然后用Visual Studio Watch去查看包中的任何对象的任何属性。
SSIS还提供了一些监视器,它们集成到Windows平台的监视工具中,可以帮助解决问题和调整性能。
5.结论
本文介绍了市场上主导的数据集成工具提供怎样的功能,使用Microsoft新的数据集成技术SSIS可以完成同Informatica类似的功能。SSIS将在SQL Server2005中发布,将是Microsoft数据转换服务(Data Transformation Services)技术的替代。
究竟哪个产品更合适呢?这高度依赖于单个项目需求的特殊细微的差别,这也超出了本文所讨论的范围。我们尽力确定产品架构和功能上的相同和不同之处,这帮助数据集成专业人士选择最适合他们项目的软件。
Forrester已经对SSIS的早期版本进行了评估并做出如下评论:
“同DTS和SQL Server2000一样, SQL Server 2005的企业许可证免费包含了SSIS。DTS有非常吸引人的性价比,但SSIS新的性能使得这一优势更加明显。这将为Microsoft技术阵营带来许多新的数据仓库专业人士和其他方面的集成专家。”
多数的分析家认为Informatica(最近已经兼并Ascential)是市场的主导,并将这一主导地位延伸至ETL领域。Microsoft的DTS技术被认为是一个竞争者,有着正确的发展方向,但目前还不是Informatica主要的对手。市场对SSIS的反应如何将是一件有趣的事情。
我们的观点是:SSIS功能、性能都完善,在ETL领域对市场的主导者发起了严峻的挑战。挑战的后果并不完全能预测,因为申请了 SQL Server许可的用户将免费获取SSIS技术。这将使得它成为许多不需要ETL方案的项目实施时的默认选择。这和Analysis Services影响类似,因为它包含在SQL Server平台当中所以到目前为止很难评估它的市场渗透力。
6.术语
这个表格将Informatica开发者所熟悉的术语/对象同SSIS关联起来。Informatica和SSIS架构并不完全一致,因此不完全是一对一的映射。但表中列出的是SSIS最接近的概念。
版权说明
在这篇文章中所包含的信息代表了从发布日起微软对所讨论的问题的当前观点。因为微软必须对市场的变换做出响应,它不应该被理解为微软所必须承担的任务的一部分,微软也不能保证在发布日之后所提出的信息的精确性。
这个白皮书仅仅是为了信息的目的,微软对本文中的信息不做任何授权、表示、暗含或规定。
依从所有可适用的版权法是用户的责任。没有限制权利在版权之下,这个文档的部分不允许被再生产,存放或介绍入检索系统, 或被以任何形式传送或通过任何手段(电子, 机械, 影印, 记录, 或其他) 或为任何目的,没有微软的明确书面允许
微软对于在这篇文章中所包含的主题拥有专利、专利申请、商标、版权或其他的一些知识产权。除了微软明确提供的一些书面的特许契约,这个文档的并不提供给您任何专利、商标、版权或其他知识产权的执照。
版权所有2005 Microsoft Corporation。
Microsoft 和Visual Studio在美国或其他国家都有注册商标或微软的商标。
在这里实际的公司和产品的名字可能是他们各自的商标