3.1 SSIS架构
3.1.1 任务流和数据流引擎
SSIS包含一个面向操作的工作流引擎,以及一个可扩展的和快速的数据流引擎。这个数据流存在于一个完整工作流的上下文中。工作流引擎提供了运行时资源和对数据流引擎的操作支持。工作流和数据流的结合使得SSIS在传统的ETL或数据仓库(DW)场景,还有许多其它延伸的场景例如数据中心场景中非常有效。在这篇文章里,我们将主要讨论数据流相关的场景。
3.1.2 管道架构
SSIS的核心是数据转换管道。这个管道具有一个面向缓冲器的架构,它在操纵数据的记录集时,一旦记录集加载进了内存中,那么它的处理速度就非常快。方法是在一个不分级数据的单独操作里执行ETL过程的所有数据转换步骤,不过特殊的转换、操作需求或者硬件确实可能是一个障碍。但是,对于大多数操作来说,这个架构避免了分级。SSIS甚至尽可能地避免了在内存中复制数据。这是与传统的ETL工具相对比,传统的ETL工具通常需求在几乎每一步的仓库存储和集成过程中都需要进行分级。不需要分级的操纵数据能力超出了传统的关系型和文本文件数据以及超出了传统的ETL转换能力。有了SSIS,所有类型的数据(结构化数据、非结构化数据、XML,等等)在加载进它的缓冲器中之前被转换成一个表格(列和行)结构。你可以应用于表格数据的任何数据操作都可以应用于数据流管道任何步骤中的数据。这意味着一个单独的数据流管道可以集成不同的数据源并不必将这个数据分级就可以对其执行任何的复杂操作。
不过你应该注意到,如果基于业务或操作原因分级是必需的,那么SSIS也可以很好的支持这些执行。
这个架构使你可以在许多数据集成场景中使用SSIS,从传统的面向DW的ETL到非传统的信息集成技术。
3.1.3 ADO.NET连通性
集成服务解决方案的一个重要方面是提取或加载数据。因此,你的集成解决方案可以无缝地连接到一个广泛的数据源以使得可以从一个广泛的数据访问平台获得最大的性能和可靠性收益是非常重要的。SQL Server 2008集成服务对于ADO.NET 连接(先前的版本对于OLE DB或ODBC是最佳的。)来说是最佳的。向ADO.NET 的转移改进了系统集成和第三方支持。SQL Server 2005集成服务将OLE DB 用于重要的任务,例如查找,但是现在你可以将ADO.NET 用于这些任务以及源和目的组件。
3.1.4 线程池
当一个集成解决方案升级后,它通常就很难再提高性能了。SQL Server 2008集成服务打破了这个限制,它在多个组件间共享线程,这增加了并行以及降低了堵塞;并因此增加了大型高并行、多处理器、多内核系统的性能。
而且在大多数系统上提高性能,线程池还会降低对手工配置SSIS包以增加并行的要求,并因此增加了开发人员的生产力。
3.1.5 永久查找
执行查找是集成解决方案中最普遍的一个操作。特别是在真实记录使用查找将商业值转换为它们相应替代的数据仓储中非常普遍。SQL Server 2008集成服务提高了查找的性能,达到可以满足最大规模的数据表的程度。
你可以配置查找转换,将它设置为在输入字段处理之前缓存参考数据的一些、或所有。SQL Server 2008集成服务可以加载一个任何数据源完整的缓存,并允许这个缓存大于4GB,即使是在一个32位的操作系统上。通过使用一个局部缓存,SQL Server 2008集成服务使用数据流预控制查找。局部缓存支持用于数据库查找的OLEDB、ADO.Net和ODBC,而且它们跟踪查找的成功和失败。如果你选择不进行预先缓存参考数据,那么SQL Server 2008集成服务支持批量数据库调用和大小写不敏感的匹配。
3.2 集成场景
3.2.1 SSIS用于数据转换操作
尽管SQL Server 2005集成服务比之前的版本功能更多,产品更强大,但是许多用户发现使用向导进行简单的数据转换却变得更加复杂和功能更少了。SQL Server 2008集成服务具有一个改良的向导、它使用ADO.NET、具有改良的用户界面、执行自动数据类型转换、并且可扩展性比之前任何版本都好。
图2
![]() |
| 图1 |
3.2.2 SSIS用于数据仓库加载
SSIS是一个广泛的、功能完全的ETL工具。它的功能、级别和性能可与市场中的高端竞争者相比较,但价格只相当于它们的一小部分。数据集成管道架构允许它使用同时从多个数据源而来的数据、执行多个复杂的转换,然后将数据一起存储到多个目的地去。这个架构允许SSIS不只用于大型数据集,还可用于复杂的数据流。因为数据流是从数据源到目的地,你可以分割、合并,以及将数据流与其它数据流结合,并进行操纵。图3显示了这样一个数据流的例子。
图3
![]() |
| 图1 |
SQL Server 2008包含对变化数据捕捉(CDC)的支持,你可以使用CDC来记录对SQL Server数据表的插入、更新和删除活动,并且使这个变化细节可以以一种简单使用的关系型格式来使用。当使用SQL Server 2008集成服务来执行一个ETL解决方案用以确保只有变化的数据被包括进提取过程时,你可以利用CDC,这使得不会执行在每个ETL操作里包含未改变数据的全部数据刷新。
SSIS通过使用一组专门的叫做适配器的组件使得可以使用从许多数据源获得的数据,包括管理的(ADO.NET)、OLE DB、ODBC 、文本文件、Microsoft Office Excel 以及XML。SSIS甚至可以使用从定制数据适配器获得的数据(由内部开发的或第三方开发的),所以你可以将遗留数据加载逻辑封装进一个数据源,然后你可以将它无缝地集成进SSIS数据流。SSIS包含一组强大的数据转换组件,它们允许进行对于建立数据仓库来说非常重要的数据操纵。这些转换组件包括:
· 聚合。在一个单独的传递里执行多个聚合。
· 分类。在流里分类数据。
· 查找。执行灵活的查找操作来参考数据集。
· Pivot和UnPivot。流里面两个单独的转换透视和逆透视数据。
· Merge、Merge Join和UnionAll。可以执行join和union操作。
· 派生列(Derived Column)。 执行列级别的操纵,例如string、numeric和date/time 操作,并编码进行页面转化。这个组件封装了其它供应商可能会分解成许多不同转化的东西。
· 数据转换。在多种类型之间转换数据(例如numeric和string)。
· 审查。Audit. 用元数据和其它操作的审查数据添加字段。
除了这些主要的数据仓库转换,SSIS还包括对高级数据仓库需求的支持,例如缓慢变化维(SCD)。在SSIS中的SCD向导指导用户指定他们对管理缓慢变化维的需求,并且基于他们的输入,生成一个具有多转换的数据流来执行缓慢变化维加载。提供了对标准类型1和2SCD以及两个新的SCD类型(Fixed Attributes和Inferred Members)的支持。图4显示了一个SCD向导的页面。
图4
![]() |
| 图1 |
图5显示了这个向导产生的数据流。
图5


