使用SQL Server 2008 集成服務
在傳統(tǒng)的以ETL為中心的數據集成中,標準的數據源仍然是大多數數據倉庫的核心。然而,包括更加多樣化的數據源、法規(guī)要求以及全球和在線業(yè)務在內的各種需求,正迅速地改變著對數據集成的傳統(tǒng)要求。在這個快速發(fā)展及不斷變化的背景下,從數據提取價值的需要和對這種需要的依賴能力變得比以往更加重要。有效的數據集成已成為制定有效決策的基礎。SQL Server Integration Services 提供了一個靈活、快速及可擴展的體系結構,能夠對當前業(yè)務環(huán)境的數據進行有效集成。
在本文中,我們將探討 SQL Server Integration Services (SSIS)如何成為一個有效的工具包,如何能在滿足傳統(tǒng)的 ETL 操作需求的同時滿足多方面數據集成不斷變化的需求。我們還將討論 SSIS 與主要的 ETL 提供商所提供的工具和解決方案的根本區(qū)別。SSIS 能夠極好地滿足全球企業(yè)(從最大的企業(yè)到最小的企業(yè))不斷變化的需求。
SSIS體系結構
任務流和數據流引擎
SSIS 既包含一個面向操作的任務流引擎,也包含一個可擴展的快速數據流引擎。數據流存在于一個總體任務流的環(huán)境中。任務流引擎為數據流引擎提供運行時資源和操作支持。任務流和數據流的這種組合,使 SSIS 能夠有效地作用于傳統(tǒng)的 ETL 或數據倉庫(DW)應用場景以及許多其他擴展的應用場景(如數據中心操作)。在本文中,我們將主要關注與數據流相關的應用場景。SSIS 用于面向數據中心的工作流時,是另外一個單獨的主題。
管道體系結構
SSIS 的核心是數據轉換管道。這個管道有一個面向緩沖區(qū)的體系結構,一旦數據被加載到內存中,該體系結構能夠異??焖俚夭倏v數據行集。方法是,在一次單一操作中執(zhí)行 ETL 進程中的所有數據轉換,而不是分段處理數據,盡管存在特定的轉換或操作需求,或者硬件也可能會成為障礙。為了獲得最佳性能,該體系結構需要避免分段處理數據。SSIS 甚至盡量避免從內存中復制數據。相比之下,傳統(tǒng)的 ETL 工具往往需要在入庫和集成進程的幾乎每個步驟都分段處理。不分段操縱數據的能力超越了對關系數據和平面文件數據的傳統(tǒng)處理能力,也超越了傳統(tǒng)的 ETL 轉換功能。SSIS 能將所有類型的數據(結構化、非結構化和 XML 等)在被加載到其緩沖區(qū)之前轉換為一種表格結構(列和行)。能夠應用于表格數據的任何數據操作,也能夠應用于數據流管道中任何步驟的數據。這意味著,一個單一的數據流管道能夠集成各種不同來源的數據,并且能夠執(zhí)行任何復雜的操作,而不必分段處理數據。
請注意,如果出于業(yè)務或操作方面的原因需要進行分段處理,SSIS 也能對這些任務的執(zhí)行提供良好支持。
這種體系結構支持在各種數據集成應用場景(從傳統(tǒng)的面向 DW 的 ETL 到非傳統(tǒng)的信息集成技術)中使用 SSIS。
ADO.NET 連接
集成服務解決方案的一個重要方面是提取或加載數據。因此,集成解決方案能夠無縫連接到多種數據源是非常重要的,這樣可以通過全面的數據接入平臺獲得最佳的性能和可靠性收益。SQL Server 2008 Integration Services 已針對 ADO.NET 連接(以前的版本是針對 OLE DB 或 ODBC 進行優(yōu)化)進行優(yōu)化。與 ADO.NET 的連接改善了對系統(tǒng)集成和對第三方的支持。SQL Server 2005 Integration Services 是使用 OLE DB 完成重要任務(如查找),但現在用戶可以針對任務、源組件和目標組件使用 ADO.NET。
線程池
集成解決方案需要擴大規(guī)模,但當它達到一定規(guī)模之后,要改善性能就變得非常困難。SQL Server 2008 Integration Services 通過在多個組件之間共享線程打破了這種限制,從而提高了并行度,減少了堵塞。因此,高度并行、多處理器和多核心系統(tǒng)在很大程度使性能獲得提高。
在大部分系統(tǒng)的性能獲得提高的同時,線程池也減少了手動配置 SSIS 包來增加并行性的需要,從而提高了開發(fā)人員的工作效率。
持續(xù)查找
執(zhí)行查找是集成解決方案中最常見的操作之一。在數據入庫時查找操作尤為普遍,因為事實記錄是通過查找將業(yè)務鍵轉換為它們相應的代理。SQL Server 2008 Integration Services 提高了查找操作的性能以相應滿足最大表格的需要。
在處理輸入列之前,可以將查找轉換設定為緩存部分或全部引用數據。SQL Server 2008 Integration Services 能夠從任何源加載全部緩存,并允許緩存大小超過 4GB,即使在 32 位操作系統(tǒng)上也是如此。通過利用部分緩存,SQL Server 2008 Integration Services 能夠通過使用數據流預加載查找操作。部分緩存支持 OLEDB、ADO.Net 和 ODBC 的數據庫查找,而且能夠跟蹤查找結果和查找失誤。如果不選擇對引用數據預先加載緩存,SQL Server 2008 Integration Services 也支持對成批數據庫的調用和區(qū)分大小的匹配。
集成應用場景
SSIS的數據傳輸操作
盡管 SQL Server 2005 Integration Services 相對以前的版本來說已經是一個能夠提供更多功能的強大產品,但許多用戶發(fā)現,其通過使用向導的簡單數據傳輸操作非常復雜,缺乏實用性。SQL Server 2008 Integration Services 提供了使用 ADO.NET 的、改進的向導和改進的用戶界面,能夠執(zhí)行自動數據類型轉換,與以前的版本相比更具可擴展性。
SSIS的數據倉庫加載
從本質上講,SSIS 是一個綜合的、功能全面的 ETL 工具。與高端市場上的競爭對手相比,其功能、規(guī)模和性能非常好,而且購置費用也相對較少。數據集成管道體系結構允許同時使用來自多個源的數據,執(zhí)行多種復雜的轉換,然后同時將數據放置到多個目標位置。這種體系結構支持 SSIS 不僅可以用于大型數據庫,也可以用于復雜的數據流。在數據從一個(或多個)源位置向一個(或多個)目標位置流動時,該結構支持拆分、合并和組合不同的數據流,以及以其他方式對數據加以控制。圖 3 顯示了此類數據流的一個示例。
SQL Server 2008 提供對 Change Data Capture (更改數據捕獲,CDC)的支持,可以使用 CDC 記錄在 SQL Server 表格中的插入、更新和刪除操作,并且能夠以一種便于使用的相關方式對細節(jié)進行更改。當使用 SQL Server 2008 Integration Services 執(zhí)行某種 ETL 解決方案時,可以利用 CDC 確保在提取進程中僅包含更改的數據,從而消除了執(zhí)行全部數據(包含每個 ETL 操作中的未更改數據)刷新所需的開銷。
SSIS 可以通過一套稱為適配器的專用組件來使用來自多種源的數據以及將數據加載到多種源,這些源包括托管的(ADO.NET)、OLE DB、ODBC、平面文件、 Microsoft Office Excel® 和 XML。SSIS 甚至可以使用來自自定義數據適配器(內部開發(fā)或由第三方提供)的數據,能夠封裝早期數據并將其合理地加載到數據源中,這樣數據就能無縫地集成到 SSIS 數據流中。SSIS 包含一組強大的數據轉換組件,用于完成構建數據倉庫必需的數據操作。這些轉換組件包括:
◆聚合:在單一傳遞中執(zhí)行多次聚合。
◆排序:對數據流中的數據進行排序。
◆查找:執(zhí)行靈活的、緩存的查找操作以引用數據集。
◆透視和逆透視:對數據流中透視數據和逆透視數據的兩種獨立轉換。
◆合并、合并聯接和全部合并:可以執(zhí)行聯接和合并操作。
◆派生列:執(zhí)行列級別的操作,如字符串、數字、日期/時間操作以及代碼頁翻譯。這一組件中包含了其他供應商的組件,因此可以使用該組件執(zhí)行許多不同的轉換。
◆數據轉換:在各種類型(如數字和字符串)之間轉換數據。
◆審核:用于添加沿襲的元數據列和其他可操作的審核數據列。
除了這些核心數據倉庫轉換以外,SSIS 還對高級數據倉庫的需要提供支持,如提供Slowly Changing Dimensions (緩慢變化維,SCD)。SSIS 的 SCD 向導引導用戶通過指定對緩慢變化維的托管要求,并根據輸入的信息,生成具有多種變換的完整數據流,以執(zhí)行緩慢變化維的加載。支持標準的 Type 1、2 SCD,還提供兩種新的 SCD 類型(固定的屬性和推斷成員)。圖 4 顯示了 SCD 向導的一個頁面。
也可以使用 SSIS 直接從數據流管道加載 Analysis Services 的多維 OLAP(MOLAP)緩存。這意味著不僅可以使用 SSIS 創(chuàng)建關系數據倉庫,也可以使用它為分析型應用程序加載多維數據集。
SSIS和數據質量
SSIS 的關鍵功能之一(也是其集成數據的能力)是,通過集成不同的技術來操縱數據的能力。這種能力使 SSIS 創(chuàng)新性地引入了“模糊邏輯”——基于數據清理的組件。Microsoft研究實驗室開發(fā)的這些組件代表了此領域的最新研究動向。該組件采取的方法是,使用一個獨立的域,該域不依賴于任何特定的域數據,如地址/郵編等引用數據。這使用戶可以使用這類轉換清理大多數類型的數據,而不只是清理地址數據。
SSIS在 Analysis Services 中深度集成了數據挖掘功能。數據挖掘在數據集中提取模式并將它們封裝到挖掘模型中。您可以使用此挖掘模型進行預測——哪些數據屬于一個數據集,以及哪些數據存在異常。這樣,就可以將數據挖掘用作管理數據質量的工具了。
SSIS對復雜數據路由的支持,不但有助于識別異常數據,面且能夠自動用更好的值糾正和替換異常數據。這就使“關閉循環(huán)”清理應用場景得以實現。
除了內置的數據質量功能以外,用戶還可以擴展 SSIS 以使其與第三方數據清理解決方案共同發(fā)揮作用。
超越傳統(tǒng)ETL的SSIS應用
數據流管道能夠操縱幾乎任何類型數據的能力、與 Analysis Services 的深度集成、對多種數據操縱技術的擴展支持以及對富工作流引擎的引入,使 SSIS 可以應用于傳統(tǒng)的 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中深度集成了數據挖掘功能,它還提供文本挖掘組件。文本挖掘(也稱為文本分類)涉及到識別業(yè)務類別與文本數據(單詞和短語)之間的關系。它允許在文本數據中搜索關鍵字詞,并且基于此自動識別“感興趣的”文本。這能夠進一步推動“關閉循環(huán)”操作的實施,從而實現業(yè)務目標,如提高客戶滿意度及提高產品和服務的質量。
按需數據源
SSIS 的獨特功能之一是 DataReader 目標,用于將數據存入 ADO.NET DataReader 中。當數據流管道中包含此組件時,可以使用包含 DataReader 目標的包作為數據源,并將該數據源暴露為一個 ADO.NET DataReader。因此,不僅可以將 SSIS 用作傳統(tǒng)的 ETL 加載數據倉庫,還可以將它用作數據源,用以按照需要從多個源交付集成的、一致的數據,以及清理數據。例如,您可能會使用 SSIS 包作為其數據源,通過此方法幫助 Reporting Services 從多個不同的數據源上獲取數據。
集成了所有這些功能的一個可能的應用場景是,從 RSS 源識別和提交有趣的文章作為常規(guī)報告的一部分。圖7顯示了一個通過 Internet 從 RSS 源獲取數據的 SSIS 包,該 SSIS 包從一個 Web 服務上集成數據,執(zhí)行文本挖掘以從 RSS 源上找到有趣的文章,然后將有趣的文章放入一個 DataReader 目標,最后在Reporting Services 報告中使用該文章。
從 ETL 工具的角度來看,該應用場景非常與眾不同,因為它沒有進行數據的提取、轉換和加載。
【編輯推薦】