使用SQL Server 2008 集成服务 |
本文标签:集成 Integration SSIS ETL 在传统的以ETL为中心的数据集成中,标准的数据源仍然是大多数数据仓库的核心 。然而,包括更加多样化的数据源、法规要求以及全球和在线业务在内的各种需求,正迅速地改变着对数据集成的传统要求 。在这个快速发展及不断变化的背景下,从数据提取价值的需要和对这种需要的依赖能力变得比以往更加重要 。有效的数据集成已成为制定有效决策的基础 。SQL Server Integration Services 提供了一个灵活、快速及可扩展的体系结构,能够对当前业务环境的数据进行有效集成 。 在本文中,我们将探讨 SQL Server Integration Services (SSIS)如何成为一个有效的工具包,如何能在满足传统的 ETL 操作需求的同时满足多方面数据集成不断变化的需求 。我们还将讨论 SSIS 与主要的 ETL 提供商所提供的工具和解决方案的根本区别 。SSIS 能够极好地满足全球企业(从最大的企业到最小的企业)不断变化的需求 。 SSIS体系结构 任务流和数据流引擎 SSIS 既包含一个面向操作的任务流引擎,也包含一个可扩展的快速数据流引擎 。数据流存在于一个总体任务流的环境中 。任务流引擎为数据流引擎提供运行时资源和操作支持 。任务流和数据流的这种组合,使 SSIS 能够有效地作用于传统的 ETL 或数据仓库(DW)应用场景以及许多其他扩展的应用场景(如数据中心操作) 。在本文中,我们将主要关注与数据流相关的应用场景 。SSIS 用于面向数据中心的工作流时,是另外一个单独的主题 。 管道体系结构 SSIS 的核心是数据转换管道 。这个管道有一个面向缓冲区的体系结构,一旦数据被加载到内存中,该体系结构能够异常快速地操纵数据行集 。方法是,在一次单一操作中执行 ETL 进程中的所有数据转换,而不是分段处理数据,尽管存在特定的转换或操作需求,或者硬件也可能会成为障碍 。为了获得最佳性能,该体系结构需要避免分段处理数据 。SSIS 甚至尽量避免从内存中复制数据 。相比之下,传统的 ETL 工具往往需要在入库和集成进程的几乎每个步骤都分段处理 。不分段操纵数据的能力超越了对关系数据和平面文件数据的传统处理能力,也超越了传统的 ETL 转换功能 。SSIS 能将所有类型的数据(结构化、非结构化和 XML 等)在被加载到其缓冲区之前转换为一种表格结构(列和行) 。能够应用于表格数据的任何数据操作,也能够应用于数据流管道中任何步骤的数据 。这意味着,一个单一的数据流管道能够集成各种不同来源的数据,并且能够执行任何复杂的操作,而不必分段处理数据 。 请注意,如果出于业务或操作方面的原因需要进行分段处理,SSIS 也能对这些任务的执行提供良好支持 。 这种体系结构支持在各种数据集成应用场景(从传统的面向 DW 的 ETL 到非传统的信息集成技术)中使用 SSIS 。 ADO.NET 连接 集成服务解决方案的一个重要方面是提取或加载数据 。因此,集成解决方案能够无缝连接到多种数据源是非常重要的,这样可以通过全面的数据接入平台获得最佳的性能和可靠性收益 。SQL Server 2008 Integration Services 已针对 ADO.NET 连接(以前的版本是针对 OLE DB 或 ODBC 进行优化)进行优化 。与 ADO.NET 的连接改善了对系统集成和对第三方的支持 。SQL Server 2005 Integration Services 是使用 OLE DB 完成重要任务(如查找),但现在用户可以针对任务、源组件和目标组件使用 ADO.NET 。 线程池 集成解决方案需要扩大规模,但当它达到一定规模之后,要改善性能就变得非常困难 。SQL Server 2008 Integration Services 通过在多个组件之间共享线程打破了这种限制,从而提高了并行度,减少了堵塞 。因此,高度并行、多处理器和多核心系统在很大程度使性能获得提高 。 持续查找 执行查找是集成解决方案中最常见的操作之一 。在数据入库时查找操作尤为普遍,因为事实记录是通过查找将业务键转换为它们相应的代理 。SQL Server 2008 Integration Services 提高了查找操作的性能以相应满足最大表格的需要 。 在处理输入列之前,可以将查找转换设定为缓存部分或全部引用数据 。SQL Server 2008 Integration Services 能够从任何源加载全部缓存,并允许缓存大小超过 4GB,即使在 32 位操作系统上也是如此 。通过利用部分缓存,SQL Server 2008 Integration Services 能够通过使用数据流预加载查找操作 。部分缓存支持 OLEDB、ADO.Net 和 ODBC 的数据库查找,而且能够跟踪查找结果和查找失误 。如果不选择对引用数据预先加载缓存,SQL Server 2008 Integration Services 也支持对成批数据库的调用和区分大小的匹配 。 集成应用场景 SSIS的数据传输操作 尽管 SQL Server 2005 Integration Services 相对以前的版本来说已经是一个能够提供更多功能的强大产品,但许多用户发现,其通过使用向导的简单数据传输操作非常复杂,缺乏实用性 。SQL Server 2008 Integration Services 提供了使用 ADO.NET 的、改进的向导和改进的用户界面,能够执行自动数据类型转换,与以前的版本相比更具可扩展性 。
SSIS的数据仓库加载 从本质上讲,SSIS 是一个综合的、功能全面的 ETL 工具 。与高端市场上的竞争对手相比,其功能、规模和性能非常好,而且购置费用也相对较少 。数据集成管道体系结构允许同时使用来自多个源的数据,执行多种复杂的转换,然后同时将数据放置到多个目标位置 。这种体系结构支持 SSIS 不仅可以用于大型数据库,也可以用于复杂的数据流 。在数据从一个(或多个)源位置向一个(或多个)目标位置流动时,该结构支持拆分、合并和组合不同的数据流,以及以其他方式对数据加以控制 。图 3 显示了此类数据流的一个示例 。 SQL Server 2008 提供对 Change Data Capture (更改数据捕获,CDC)的支持,可以使用 CDC 记录在 SQL Server 表格中的插入、更新和删除操作,并且能够以一种便于使用的相关方式对细节进行更改 。当使用 SQL Server 2008 Integration Services 执行某种 ETL 解决方案时,可以利用 CDC 确保在提取进程中仅包含更改的数据,从而消除了执行全部数据(包含每个 ETL 操作中的未更改数据)刷新所需的开销 。 SSIS 可以通过一套称为适配器的专用组件来使用来自多种源的数据以及将数据加载到多种源,这些源包括托管的(ADO.NET)、OLE DB、ODBC、平面文件、 Microsoft Office Excel® 和 XML 。SSIS 甚至可以使用来自自定义数据适配器(内部开发或由第三方提供)的数据,能够封装早期数据并将其合理地加载到数据源中,这样数据就能无缝地集成到 SSIS 数据流中 。SSIS 包含一组强大的数据转换组件,用于完成构建数据仓库必需的数据操作 。这些转换组件包括: 除了这些核心数据仓库转换以外,SSIS 还对高级数据仓库的需要提供支持,如提供Slowly Changing Dimensions (缓慢变化维,SCD) 。SSIS 的 SCD 向导引导用户通过指定对缓慢变化维的托管要求,并根据输入的信息,生成具有多种变换的完整数据流,以执行缓慢变化维的加载 。支持标准的 Type 1、2 SCD,还提供两种新的 SCD 类型(固定的属性和推断成员) 。图 4 显示了 SCD 向导的一个页面 。 也可以使用 SSIS 直接从数据流管道加载 Analysis Services 的多维 OLAP(MOLAP)缓存 。这意味着不仅可以使用 SSIS 创建关系数据仓库,也可以使用它为分析型应用程序加载多维数据集 。 SSIS和数据质量 SSIS 的关键功能之一(也是其集成数据的能力)是,通过集成不同的技术来操纵数据的能力 。这种能力使 SSIS 创新性地引入了“模糊逻辑”——基于数据清理的组件 。Microsoft研究实验室开发的这些组件代表了此领域的最新研究动向 。该组件采取的方法是,使用一个独立的域,该域不依赖于任何特定的域数据,如地址/邮编等引用数据 。这使用户可以使用这类转换清理大多数类型的数据,而不只是清理地址数据 。 SSIS在 Analysis Services 中深度集成了数据挖掘功能 。数据挖掘在数据集中提取模式并将它们封装到挖掘模型中 。您可以使用此挖掘模型进行预测——哪些数据属于一个数据集,以及哪些数据存在异常 。这样,就可以将数据挖掘用作管理数据质量的工具了 。 SSIS对复杂数据路由的支持,不但有助于识别异常数据,面且能够自动用更好的值纠正和替换异常数据 。这就使“关闭循环”清理应用场景得以实现 。 除了内置的数据质量功能以外,用户还可以扩展 SSIS 以使其与第三方数据清理解决方案共同发挥作用 。 超越传统ETL的SSIS应用 数据流管道能够操纵几乎任何类型数据的能力、与 Analysis Services 的深度集成、对多种数据操纵技术的扩展支持以及对富工作流引擎的引入,使 SSIS 可以应用于传统的 ETL 无法企及的许多应用场景 。 面向服务的体系结构 SSIS 支持在数据流管道中使用 XML 数据,这类数据可以是来自磁盘文件的数据,也可以是通过HTTP 获取的 URL 数据 。XML 数据能够被“细分”成为表格数据,然后SSIS就可以在数据流中轻松地操纵它们 。这种对 XML 的支持能够与对 Web 服务的支持相互配合 。SSIS 能够与控制流中的 Web 服务相互作用以捕获 XML 数据 。 可以从文件中、从 Microsoft Message Queuing (Microsoft 消息队列任务,MSMQ)中以及通过 HTTP 从整个 Web 上捕获 XML 数据 。SSIS 支持使用 XSLT、 XPATH 和 diff/merge 等操纵 XML 数据,而且可以将 XML 数据集成到数据流中 。 这种支持使 SSIS 成为灵活的、面向服务的体系结构(SOA)的一部分 。 数据挖掘和文本挖掘 SSIS 不仅在Analysis Services中深度集成了数据挖掘功能,它还提供文本挖掘组件 。文本挖掘(也称为文本分类)涉及到识别业务类别与文本数据(单词和短语)之间的关系 。它允许在文本数据中搜索关键字词,并且基于此自动识别“感兴趣的”文本 。这能够进一步推动“关闭循环”操作的实施,从而实现业务目标,如提高客户满意度及提高产品和服务的质量 。 按需数据源 SSIS 的独特功能之一是 DataReader 目标,用于将数据存入 ADO.NET DataReader 中 。当数据流管道中包含此组件时,可以使用包含 DataReader 目标的包作为数据源,并将该数据源暴露为一个 ADO.NET DataReader 。因此,不仅可以将 SSIS 用作传统的 ETL 加载数据仓库,还可以将它用作数据源,用以按照需要从多个源交付集成的、一致的数据,以及清理数据 。例如,您可能会使用 SSIS 包作为其数据源,通过此方法帮助 Reporting Services 从多个不同的数据源上获取数据 。 集成了所有这些功能的一个可能的应用场景是,从 RSS 源识别和提交有趣的文章作为常规报告的一部分 。图7显示了一个通过 Internet 从 RSS 源获取数据的 SSIS 包,该 SSIS 包从一个 Web 服务上集成数据,执行文本挖掘以从 RSS 源上找到有趣的文章,然后将有趣的文章放入一个 DataReader 目标,最后在Reporting Services 报告中使用该文章 。 从 ETL 工具的角度来看,该应用场景非常与众不同,因为它没有进行数据的提取、转换和加载 。 |